The recipes.blue monorepo recipes.blue
recipes appview atproto

Compare changes

Choose any two refs to compare.

Changed files
+5566 -10953
apps
config
lexicons
app
bsky
actor
blue
com
atproto
libs
+8
.env.example
··· 1 + # Database 2 + DATABASE_URL=postgres://postgres:postgres@localhost:5432/postgres 3 + 4 + # API 5 + PORT=3000 6 + 7 + # Ingester 8 + JETSTREAM_ENDPOINT=wss://jetstream2.us-east.bsky.network/subscribe
+2
.gitignore
··· 147 147 .sentryclirc 148 148 149 149 .turbo 150 + apps/api/.wrangler 151 + .idea
-76
Caddyfile
··· 1 - { 2 - storage file_system /data/ 3 - debug 4 - pki { 5 - ca hayden { 6 - name "Hayden" 7 - } 8 - } 9 - } 10 - 11 - api.dev.hayden.moe { 12 - tls { 13 - issuer internal { 14 - ca hayden 15 - } 16 - } 17 - 18 - reverse_proxy http://host.docker.internal:8080 19 - } 20 - 21 - cookware.dev.hayden.moe { 22 - tls { 23 - issuer internal { 24 - ca hayden 25 - } 26 - } 27 - 28 - reverse_proxy http://host.docker.internal:5173 29 - 30 - handle_path /xrpc/* { 31 - rewrite * /xrpc{uri} 32 - reverse_proxy http://host.docker.internal:8080 33 - } 34 - handle_path /api/* { 35 - rewrite * /api{uri} 36 - reverse_proxy http://host.docker.internal:8080 37 - } 38 - } 39 - 40 - http://*.trycloudflare.com { 41 - reverse_proxy http://host.docker.internal:5173 42 - 43 - handle_path /xrpc/* { 44 - rewrite * /xrpc{uri} 45 - reverse_proxy http://host.docker.internal:8080 46 - } 47 - handle_path /oauth/* { 48 - rewrite * /oauth{uri} 49 - reverse_proxy http://host.docker.internal:8080 50 - } 51 - handle_path /api/* { 52 - rewrite * /api{uri} 53 - reverse_proxy http://host.docker.internal:8080 54 - } 55 - } 56 - 57 - acme.dev.hayden.moe { 58 - tls { 59 - issuer internal { 60 - ca hayden 61 - } 62 - } 63 - acme_server { 64 - ca hayden 65 - } 66 - } 67 - 68 - turso.dev.hayden.moe { 69 - tls { 70 - issuer internal { 71 - ca hayden 72 - } 73 - } 74 - 75 - reverse_proxy http://libsql:8080 76 - }
-14
Dockerfile
··· 1 - FROM node:22-slim AS base 2 - ENV PNPM_HOME="/pnpm" 3 - ENV PATH="$PNPM_HOME:$PATH" 4 - RUN corepack enable 5 - 6 - FROM base AS build 7 - WORKDIR /usr/src/app 8 - COPY pnpm-lock.yaml . 9 - RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm fetch 10 - COPY . . 11 - RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile 12 - 13 - ARG VITE_API_SERVICE 14 - RUN pnpm run -r build
+32
Justfile
··· 1 + config_dir := justfile_directory() / "config" 2 + apps_dir := justfile_directory() / "apps" 3 + libs_dir := justfile_directory() / "apps" 4 + 5 + ghcr_registry := "ghcr.io/recipes-blue/recipes.blue" 6 + ghcr_tag := "dev-" + `git rev-parse --short HEAD` 7 + 8 + [private] 9 + cbuild file repo target *args: 10 + docker build . \ 11 + --tag "{{ ghcr_registry }}/{{ repo }}:{{ ghcr_tag }}" \ 12 + --file "{{ file }}" \ 13 + --target "{{ target }}" \ 14 + {{ args }} 15 + 16 + [group("docker")] 17 + cbuild-api: 18 + just cbuild \ 19 + "{{ apps_dir / "api" / "Dockerfile" }}" \ 20 + api \ 21 + run \ 22 + --build-arg BASE_TAG={{ ghcr_tag }} \ 23 + --build-arg DEPS_TAG={{ ghcr_tag }} 24 + 25 + [group("docker")] 26 + cbuild-ingester: 27 + just cbuild \ 28 + "{{ apps_dir / "ingester" / "Dockerfile" }}" \ 29 + ingester \ 30 + run \ 31 + --build-arg BASE_TAG={{ ghcr_tag }} \ 32 + --build-arg DEPS_TAG={{ ghcr_tag }}
+36 -7
README.md
··· 10 10 11 11 ## Requirements 12 12 13 - - Node.js 22.x LTS 14 - - [pnpm](https://pnpm.io) 15 - - A [Turso](https://turso.tech) database 16 - - Maybe Docker? 13 + - [Bun](https://bun.sh) 1.3.3+ 14 + - Docker & Docker Compose (for local dev) 17 15 18 16 ## Services 19 17 20 - - [`api`](./apps/api): Runs the API server and hosts the SPA in production 21 - - [`ingester`](./apps/ingester): Ingests ATProto records from a Jetstream source independently of the API process. 22 - - [`web`](./apps/web): React SPA, hosted by the API in production. 18 + - [`api`](./apps/api): Bun server running the XRPC API 19 + - [`ingester`](./apps/ingester): Ingests ATProto records from Jetstream 20 + - [`web`](./apps/web): React SPA frontend 21 + - `libsql`: LibSQL database server 22 + 23 + ## Development 24 + 25 + 1. Copy `.env.example` to `.env`: 26 + ```bash 27 + cp .env.example .env 28 + ``` 29 + 30 + 2. Start LibSQL: 31 + ```bash 32 + docker compose up -d libsql 33 + ``` 34 + 35 + 3. Run migrations: 36 + ```bash 37 + bun run db:generate # generate migration files 38 + bun run db:migrate # apply to database 39 + ``` 40 + 41 + 4. Start services: 42 + ```bash 43 + bun run dev # starts all services in dev mode 44 + ``` 45 + 46 + ## Production 47 + 48 + Build and run with Docker: 49 + ```bash 50 + docker compose up -d 51 + ```
+42
apps/api/Dockerfile
··· 1 + FROM oven/bun:1.3.3 AS base 2 + WORKDIR /app 3 + 4 + FROM base AS deps 5 + COPY package.json bun.lock ./ 6 + COPY apps/api/package.json apps/api/package.json 7 + COPY apps/ingester/package.json apps/ingester/package.json 8 + COPY apps/web/package.json apps/web/package.json 9 + COPY libs/database/package.json libs/database/package.json 10 + COPY libs/lexicons/package.json libs/lexicons/package.json 11 + COPY libs/tsconfig/package.json libs/tsconfig/package.json 12 + 13 + RUN \ 14 + --mount=type=cache,target=/root/.bun/install/cache \ 15 + bun install \ 16 + --frozen-lockfile \ 17 + --filter '@cookware/api' 18 + 19 + FROM base AS build 20 + COPY --from=deps /app/node_modules ./node_modules/ 21 + COPY . . 22 + 23 + RUN bun build /app/apps/api/src/index.ts \ 24 + --compile \ 25 + --minify \ 26 + --sourcemap \ 27 + --bytecode \ 28 + --outfile=/app/dist/api \ 29 + --target=bun \ 30 + --external '@libsql/*' 31 + 32 + FROM base AS libsql 33 + WORKDIR /app 34 + COPY bun.lock ./ 35 + RUN LIBSQL_VERSION=$(grep -oP '"@libsql/client@\K[0-9.]+' bun.lock | head -1) && \ 36 + bun install @libsql/client@${LIBSQL_VERSION} --production 37 + 38 + FROM rockylinux/rockylinux:9.4-ubi AS run 39 + ENV NODE_PATH=/app/node_modules 40 + COPY --from=build /app/dist/api /app/api 41 + COPY --from=libsql /app/node_modules /app/node_modules 42 + ENTRYPOINT ["/app/api"]
+20 -49
apps/api/package.json
··· 1 1 { 2 - "name": "@cookware/api", 3 2 "type": "module", 3 + "name": "@cookware/api", 4 4 "private": true, 5 - "main": "dist/index.js", 6 - "publishConfig": { 7 - "access": "public" 8 - }, 9 5 "scripts": { 10 - "dev": "NODE_OPTIONS=--use-openssl-ca tsx watch --clear-screen=false src/index.ts | pino-pretty", 11 - "build": "tsup", 12 - "start": "NODE_OPTIONS=--use-openssl-ca node dist/index.cjs", 6 + "build": "bun --bun run check-types && bun --bun run compile", 7 + "dev": "bun run --hot src/index.ts | pino-pretty", 8 + "check-types": "tsc --noEmit", 9 + "compile": "bun build src/index.ts --compile --minify --sourcemap --outfile=dist/api --target=bun", 13 10 "clean": "rimraf dist" 14 11 }, 15 12 "dependencies": { 16 - "@atcute/client": "^2.0.6", 17 - "@atproto/api": "^0.13.19", 18 - "@atproto/common": "^0.4.5", 19 - "@atproto/crypto": "^0.4.2", 20 - "@atproto/jwk-jose": "^0.1.2", 21 - "@atproto/oauth-client-node": "^0.2.3", 22 - "@cookware/database": "workspace:^", 23 - "@hono/node-server": "^1.13.7", 13 + "@atcute/atproto": "^3.1.9", 14 + "@atcute/client": "catalog:", 15 + "@atcute/identity": "^1.1.3", 16 + "@atcute/identity-resolver": "^1.1.4", 17 + "@atcute/lexicons": "catalog:", 18 + "@atcute/xrpc-server": "^0.1.3", 19 + "@cookware/database": "workspace:*", 20 + "@cookware/lexicons": "workspace:*", 24 21 "@libsql/client": "^0.14.0", 25 - "@sentry/node": "^8.42.0", 26 - "@skyware/jetstream": "^0.2.1", 27 - "bufferutil": "^4.0.8", 28 - "drizzle-orm": "^0.37.0", 29 - "hono": "^4.6.12", 30 - "hono-sessions": "^0.7.0", 31 - "jose": "^5.9.6", 32 - "pino": "^9.5.0", 33 - "uint8arrays": "^5.1.0", 34 - "ws": "^8.18.0", 35 - "zod": "^3.23.8" 22 + "drizzle-orm": "catalog:", 23 + "hono": "^4.10.7", 24 + "pino": "^9.5.0" 36 25 }, 37 26 "devDependencies": { 38 - "@atcute/bluesky": "^1.0.9", 39 - "@cookware/lexicons": "workspace:*", 27 + "@atcute/bluesky": "^3.2.10", 40 28 "@cookware/tsconfig": "workspace:*", 41 - "@swc/core": "^1.9.3", 42 - "@types/node": "^22.10.1", 43 - "@types/ws": "^8.5.13", 29 + "@types/bun": "catalog:", 44 30 "drizzle-kit": "^0.29.0", 45 - "pino-pretty": "^13.0.0", 46 - "rimraf": "^6.0.1", 47 - "ts-node": "^10.9.2", 48 - "tsup": "^8.3.5", 49 - "tsx": "^4.19.2", 50 - "typescript": "^5.7.2" 51 - }, 52 - "tsup": { 53 - "entry": [ 54 - "src", 55 - "!src/**/__tests__/**", 56 - "!src/**/*.test.*" 57 - ], 58 - "splitting": false, 59 - "sourcemap": true, 60 - "clean": true, 61 - "format": "esm" 31 + "pino-pretty": "^13.1.2", 32 + "rimraf": "^6.0.1" 62 33 } 63 34 }
-34
apps/api/src/config/env.ts
··· 1 - import { z } from "zod"; 2 - 3 - const envSchema = z.object({ 4 - PORT: z.coerce.number().lte(65535).default(8080), 5 - HOST: z.string().ip().default('0.0.0.0'), 6 - 7 - PUBLIC_DIR: z.string().default('../web/dist'), 8 - 9 - CORS_ORIGINS: z 10 - .string() 11 - .transform((arg) => arg.split(',')) 12 - .default('http://127.0.0.1:5173,https://cookware.dev.hayden.moe'), 13 - 14 - PLC_DIRECTORY_URL: z.string().url().default('https://plc.directory'), 15 - 16 - JWKS_PRIVATE_KEY: z.string().default('{"kty":"EC","x":"pew2xWIyBQ4XSY4gcCuTJBI-oC5rQqQlcDxIN8nN834","y":"aiJFNEFWyKKWGiFKPRvLAU4wdhsfgysfTfTuzTC4LNQ","crv":"P-256","d":"QS-q9RzH1u2Oj8gDiUzLk1qpGxZjKSf-3Z1oKCRL_jQ"}'), 17 - 18 - SESSION_KEY: z.string().default('bJVS+Dx03A3QWWfW3A5Om5DGx1GKptx+1IGAXzOTpw8='), 19 - SESSION_TTL: z.number().default(((60 * 60) * 24) * 5), // expire in 5 days 20 - 21 - SENTRY_DSN: z.string().or(z.undefined()), 22 - 23 - ENV: z 24 - .union([ 25 - z.literal('development'), 26 - z.literal('production'), 27 - ]) 28 - .default('development'), 29 - }); 30 - 31 - const env = envSchema.parse(process.env); 32 - 33 - export default env; 34 - export type Env = z.infer<typeof envSchema>;
+7 -2
apps/api/src/env.d.ts
··· 1 - /// <reference types="@atcute/bluesky/lexicons" /> 2 - /// <reference types="@cookware/lexicons" /> 1 + import type { LibSQLDatabase } from "drizzle-orm/libsql"; 2 + 3 + declare global { 4 + interface RouterContext { 5 + db: LibSQLDatabase; 6 + } 7 + }
+45 -84
apps/api/src/index.ts
··· 1 - import { serve } from "@hono/node-server"; 2 - import { Hono } from "hono"; 3 - import { rootLogger } from "./logger.js"; 4 - import env from "./config/env.js"; 5 - import { xrpcApp } from "./xrpc/index.js"; 6 - import { cors } from "hono/cors"; 7 - import { ZodError } from "zod"; 8 - import * as Sentry from "@sentry/node" 9 - import { recipeApp } from "./recipes/index.js"; 10 - import { XRPCError } from "./util/xrpc.js"; 11 - import { getFilePathWithoutDefaultDocument } from "hono/utils/filepath"; 12 - import { readFileSync } from "fs"; 1 + import { XRPCError, XRPCRouter } from '@atcute/xrpc-server'; 2 + import { cors } from '@atcute/xrpc-server/middlewares/cors'; 3 + import { registerGetRecipes } from './xrpc/blue.recipes.feed.getRecipes.js'; 4 + import { registerGetRecipe } from './xrpc/blue.recipes.feed.getRecipe.js'; 5 + import { logMiddleware } from './logger.js'; 6 + import pino from 'pino'; 7 + import { RedisClient } from 'bun'; 8 + import { registerGetProfile } from './xrpc/blue.recipes.actor.getProfile.js'; 9 + import { Hono } from 'hono'; 10 + import { mountXrpcRouter } from './util/hono.js'; 13 11 14 - if (env.SENTRY_DSN) { 15 - Sentry.init({ 16 - dsn: env.SENTRY_DSN, 17 - }); 18 - } 12 + const logger = pino(); 13 + const redis = new RedisClient(Bun.env.REDIS_URL ?? "redis://127.0.0.1:6379/0"); 19 14 20 - const app = new Hono(); 21 - 22 - app.use(cors({ 23 - origin: (origin, _ctx) => { 24 - if (env.ENV == 'development') { 25 - return origin; 15 + const xrpcRouter = new XRPCRouter({ 16 + handleException: (err, _req) => { 17 + if (err instanceof XRPCError) { 18 + return err.toResponse(); 19 + } else if (err instanceof Response) { 20 + return err; 21 + } else { 22 + logger.error({ err }, 'Exception thrown during request'); 23 + return Response.json( 24 + { error: 'InternalServerError', message: 'an exception happened whilst processing this request' }, 25 + { status: 500 }, 26 + ) 26 27 } 27 - return env.CORS_ORIGINS.includes(origin) 28 - ? origin 29 - : 'https://recipes.blue'; 30 28 }, 31 - allowHeaders: ['Content-Type', 'Accept'], 32 - allowMethods: ['POST', 'GET', 'OPTIONS'], 33 - exposeHeaders: ['Content-Length'], 34 - maxAge: 600, 35 - credentials: true, 36 - })); 37 - 38 - app.route('/xrpc', xrpcApp); 39 - app.route('/api/recipes', recipeApp); 40 - 41 - app.use(async (ctx, next) => { 42 - try { 43 - await next(); 44 - } catch (e) { 45 - if (e instanceof ZodError) { 46 - ctx.status(400); 47 - return ctx.json({ 48 - error: 'invalid_data', 49 - message: e.message, 50 - }); 51 - } else if (e instanceof XRPCError) { 52 - return e.hono(ctx); 53 - } 54 - 55 - ctx.status(500); 56 - return ctx.json({ 57 - error: 'internal_server_error', 58 - message: 'The server could not process the request.', 59 - }); 60 - } 29 + middlewares: [ 30 + logMiddleware(logger), 31 + cors({ 32 + allowedHeaders: ['Content-Type', 'Accept'], 33 + exposedHeaders: ['Content-Length'], 34 + }), 35 + ], 61 36 }); 62 37 63 - app.use('/*', async (ctx, next) => { 64 - if (ctx.req.path == '/client-metadata.json') { 65 - let path = getFilePathWithoutDefaultDocument({ 66 - filename: 'client-metadata.json', 67 - root: env.PUBLIC_DIR, 68 - }); 69 - 70 - const metadata = JSON.parse(readFileSync(`./${path}`).toString()); 71 - return ctx.json(metadata); 72 - } 38 + // actor 39 + registerGetProfile(xrpcRouter, logger, redis); 73 40 74 - if (ctx.finalized) return next(); 75 - let path = getFilePathWithoutDefaultDocument({ 76 - filename: 'index.html', 77 - root: env.PUBLIC_DIR, 78 - }) 41 + // feed 42 + registerGetRecipes(xrpcRouter, logger, redis); 43 + registerGetRecipe(xrpcRouter, logger, redis); 79 44 80 - if (path) { 81 - path = `./${path}`; 82 - } else { 83 - return next(); 84 - } 45 + const app = new Hono(); 85 46 86 - const index = readFileSync(path).toString(); 87 - return ctx.html(index); 88 - }); 47 + // mount xrpc router at /xrpc 48 + const xrpcApp = new Hono(); 49 + mountXrpcRouter(xrpcApp, xrpcRouter); 50 + app.route('/xrpc', xrpcApp); 89 51 90 - serve({ 52 + const server = Bun.serve({ 53 + port: process.env.PORT || 3000, 91 54 fetch: app.fetch, 92 - hostname: env.HOST, 93 - port: env.PORT, 94 - }).on('listening', () => { 95 - rootLogger.info({ port: 8080, host: '0.0.0.0' }, 'Server booted.'); 96 55 }); 56 + 57 + logger.info({ url: server.url.toString() }, `Recipes.blue API started up`);
+28 -4
apps/api/src/logger.ts
··· 1 - import { pino } from "pino"; 1 + import type { FetchMiddleware } from "@atcute/xrpc-server"; 2 + import type { Logger } from "pino"; 2 3 3 - export const rootLogger = pino({ name: 'recipes' }); 4 - export const apiLogger = pino({ name: 'recipes.api' }); 5 - export const authLogger = pino({ name: 'recipes.auth' }); 4 + export const logMiddleware = (logger: Logger): FetchMiddleware => { 5 + return async (req, next) => { 6 + const startTime = new Date(); 7 + logger.setBindings({ 8 + request: { 9 + method: req.method, 10 + path: new URL(req.url).pathname, 11 + id: crypto.randomUUID(), 12 + } 13 + }); 14 + 15 + logger.info('Request received'); 16 + 17 + const response = await next(req); 18 + const endTime = new Date(); 19 + 20 + logger.info({ 21 + response: { 22 + status: response.status, 23 + durationMs: endTime.getTime() - startTime.getTime(), 24 + }, 25 + }, 'Finished processing request'); 26 + 27 + return response; 28 + }; 29 + };
-5
apps/api/src/recipes/index.ts
··· 1 - import { Hono } from "hono"; 2 - 3 - export const recipeApp = new Hono(); 4 - 5 - recipeApp.post('/', async ctx => {});
+59 -25
apps/api/src/util/api.ts
··· 1 - import { XRPC } from '@atcute/client'; 2 - import type { AppBskyActorProfile, BlueRecipesFeedDefs } from '@atcute/client/lexicons'; 3 - import { DID, getDidDoc } from '@cookware/lexicons'; 1 + import type {} from '@atcute/atproto'; 2 + import { CompositeDidDocumentResolver, PlcDidDocumentResolver, WebDidDocumentResolver } from '@atcute/identity-resolver'; 3 + import { CompositeHandleResolver, DohJsonHandleResolver, WellKnownHandleResolver } from '@atcute/identity-resolver'; 4 + import { ActorIdentifier, AtprotoDid, Handle, isHandle } from '@atcute/lexicons/syntax'; 5 + import { isAtprotoDid } from '@atcute/identity'; 6 + import { RedisClient } from 'bun'; 7 + import { ProfileViewBasic } from '../../../../libs/lexicons/dist/types/blue/recipes/actor/defs.js'; 8 + import { Blob, LegacyBlob } from '@atcute/lexicons'; 9 + import { buildCdnUrl } from './cdn.js'; 4 10 5 - export const getAuthorInfo = async ( 6 - did: DID, 7 - rpc: XRPC, 8 - ): Promise<BlueRecipesFeedDefs.AuthorInfo> => { 9 - const author = await getDidDoc(did); 10 - const profile = await rpc.get('com.atproto.repo.getRecord', { 11 - params: { 12 - repo: did, 13 - collection: 'app.bsky.actor.profile', 14 - rkey: 'self', 15 - }, 16 - }); 17 - const data = profile.data.value as AppBskyActorProfile.Record; 11 + const handleResolver = new CompositeHandleResolver({ 12 + strategy: 'race', 13 + methods: { 14 + dns: new DohJsonHandleResolver({ dohUrl: 'https://mozilla.cloudflare-dns.com/dns-query' }), 15 + http: new WellKnownHandleResolver({ fetch }), 16 + }, 17 + }); 18 18 19 - let info: BlueRecipesFeedDefs.AuthorInfo = { 20 - did: did, 21 - handle: author.alsoKnownAs[0]?.substring(5) as string, 22 - displayName: data.displayName, 23 - }; 19 + const didResolver = new CompositeDidDocumentResolver({ 20 + methods: { 21 + plc: new PlcDidDocumentResolver(), 22 + web: new WebDidDocumentResolver(), 23 + } 24 + }); 24 25 25 - if (data.avatar) 26 - info['avatarUrl'] = `https://cdn.bsky.app/img/avatar_thumbnail/plain/${did}/${data.avatar.ref.$link}@jpeg`; 26 + const HANDLE_CACHE_TTL = 5 * 60; // 5 minutes 27 + 28 + export const parseDid = async (id: ActorIdentifier): Promise<AtprotoDid> => { 29 + if (isAtprotoDid(id)) return id; 30 + if (isHandle(id)) { 31 + return await handleResolver.resolve(id); 32 + } 33 + throw Error("Invalid DID or Handle!"); 34 + } 27 35 28 - return info; 29 - }; 36 + export const getHandle = async (did: AtprotoDid, redis: RedisClient): Promise<Handle> => { 37 + let handle = await redis.get(`handle:${did}`) as Handle | null; 38 + if (!handle) { 39 + const didDoc = await didResolver.resolve(did); 40 + if (didDoc.alsoKnownAs == null || didDoc.alsoKnownAs.length < 1) { 41 + throw new Error(`User ${did} had no resolvable DID document.`); 42 + } 43 + handle = didDoc.alsoKnownAs[0]!.substring(5) as Handle; 44 + redis.setex(`handle:${did}`, HANDLE_CACHE_TTL, handle); 45 + } 46 + 47 + return handle; 48 + } 49 + 50 + export const buildProfileViewBasic = async (author: { 51 + did: AtprotoDid; 52 + displayName: string; 53 + pronouns: string | null; 54 + avatarRef: Blob | LegacyBlob | null; 55 + createdAt: Date; 56 + }, redis: RedisClient): Promise<ProfileViewBasic> => ({ 57 + did: author.did, 58 + handle: await getHandle(author.did, redis), 59 + displayName: author.displayName, 60 + pronouns: author.pronouns ?? undefined, 61 + avatar: author.avatarRef ? buildCdnUrl('avatar', author.did, author.avatarRef) : undefined, 62 + createdAt: author.createdAt.toISOString(), 63 + });
+21
apps/api/src/util/cdn.ts
··· 1 + import { type Blob, type LegacyBlob } from "@atcute/lexicons"; 2 + import { isBlob, isLegacyBlob } from "@atcute/lexicons/interfaces"; 3 + 4 + const CDN_ROOT = "https://cdn.bsky.app/img/"; 5 + 6 + export const buildCdnUrl = ( 7 + type: 'feed_thumbnail' | 'post_image' | 'avatar', 8 + did: string, 9 + blob: Blob | LegacyBlob, 10 + ): string => { 11 + let ref: string; 12 + if (isLegacyBlob(blob)) { 13 + ref = blob.cid; 14 + } else if (isBlob(blob)) { 15 + ref = blob.ref.$link; 16 + } else { 17 + throw new Error("Invalid blob type"); 18 + } 19 + 20 + return `${CDN_ROOT}${type}/plain/${did}/${ref}`; 21 + }
+40
apps/api/src/util/hono.ts
··· 1 + import { XRPCRouter } from '@atcute/xrpc-server'; 2 + import type { Context, Hono } from 'hono'; 3 + 4 + export type ApiContext = {}; 5 + 6 + /** 7 + * mounts an @atcute/xrpc-server router into hono as a nested route 8 + * 9 + * basically just bridges the two request handlers since both are 10 + * web standard Request/Response. you can optionally pass hono context 11 + * properties to xrpc handlers via the request object 12 + */ 13 + export const mountXrpcRouter = ( 14 + app: Hono, 15 + router: XRPCRouter, 16 + injectContext?: (c: Context) => ApiContext, 17 + ) => { 18 + app.all('*', async (c) => { 19 + let request = c.req.raw; 20 + 21 + // if context injector provided, attach properties to request 22 + if (injectContext) { 23 + const contextData = injectContext(c); 24 + request = Object.assign(request, contextData); 25 + } 26 + 27 + const response = await router.fetch(request); 28 + return response; 29 + }); 30 + }; 31 + 32 + /** 33 + * helper to extract injected context from xrpc request 34 + * use this in your xrpc handlers to access hono context data 35 + */ 36 + export const getInjectedContext = ( 37 + request: Request 38 + ): ApiContext => { 39 + return request as any as ApiContext; 40 + };
-229
apps/api/src/util/jwt.ts
··· 1 - import * as common from "@atproto/common"; 2 - import { MINUTE } from "@atproto/common"; 3 - import * as crypto from "@atproto/crypto"; 4 - import * as ui8 from "uint8arrays"; 5 - import { XRPCError } from "./xrpc.js"; 6 - import { z } from "zod"; 7 - 8 - export const jwt = z.custom<`${string}.${string}.${string}`>((input) => { 9 - if (typeof input !== "string") return; 10 - if (input.split(".").length !== 3) return false; 11 - return true; 12 - }); 13 - 14 - type ServiceJwtParams = { 15 - iss: string; 16 - aud: string; 17 - iat?: number; 18 - exp?: number; 19 - lxm: string | null; 20 - keypair: crypto.Keypair; 21 - }; 22 - 23 - type ServiceJwtHeaders = { 24 - alg: string; 25 - } & Record<string, unknown>; 26 - 27 - type ServiceJwtPayload = { 28 - iss: string; 29 - aud: string; 30 - exp: number; 31 - lxm?: string; 32 - jti?: string; 33 - }; 34 - 35 - export const createServiceJwt = async ( 36 - params: ServiceJwtParams, 37 - ): Promise<string> => { 38 - const { iss, aud, keypair } = params; 39 - const iat = params.iat ?? Math.floor(Date.now() / 1e3); 40 - const exp = params.exp ?? iat + MINUTE / 1e3; 41 - const lxm = params.lxm ?? undefined; 42 - const jti = crypto.randomStr(16, "hex"); 43 - const header = { 44 - typ: "JWT", 45 - alg: keypair.jwtAlg, 46 - }; 47 - const payload = common.noUndefinedVals({ 48 - iat, 49 - iss, 50 - aud, 51 - exp, 52 - lxm, 53 - jti, 54 - }); 55 - const toSignStr = `${jsonToB64Url(header)}.${jsonToB64Url(payload)}`; 56 - const toSign = ui8.fromString(toSignStr, "utf8"); 57 - const sig = await keypair.sign(toSign); 58 - return `${toSignStr}.${ui8.toString(sig, "base64url")}`; 59 - }; 60 - 61 - export const createServiceAuthHeaders = async (params: ServiceJwtParams) => { 62 - const jwt = await createServiceJwt(params); 63 - return { 64 - headers: { authorization: `Bearer ${jwt}` }, 65 - }; 66 - }; 67 - 68 - const jsonToB64Url = (json: Record<string, unknown>): string => { 69 - return common.utf8ToB64Url(JSON.stringify(json)); 70 - }; 71 - 72 - export type VerifySignatureWithKeyFn = ( 73 - key: string, 74 - msgBytes: Uint8Array, 75 - sigBytes: Uint8Array, 76 - alg: string, 77 - ) => Promise<boolean>; 78 - 79 - export const verifyJwt = async ( 80 - jwtStr: string, 81 - ownDid: string | null, // null indicates to skip the audience check 82 - lxm: string | null, // null indicates to skip the lxm check 83 - getSigningKey: (iss: string, forceRefresh: boolean) => Promise<string>, 84 - verifySignatureWithKey: VerifySignatureWithKeyFn = cryptoVerifySignatureWithKey, 85 - ): Promise<ServiceJwtPayload> => { 86 - const jwtParsed = jwt.safeParse(jwtStr); 87 - if (!jwtParsed.success) { 88 - throw new XRPCError("poorly formatted jwt", "BadJwt", 401); 89 - } 90 - const parts = jwtParsed.data.split("."); 91 - 92 - const header = parseHeader(parts[0]!); 93 - 94 - // The spec does not describe what to do with the "typ" claim. We can, 95 - // however, forbid some values that are not compatible with our use case. 96 - if ( 97 - // service tokens are not OAuth 2.0 access tokens 98 - // https://datatracker.ietf.org/doc/html/rfc9068 99 - header["typ"] === "at+jwt" || 100 - // "refresh+jwt" is a non-standard type used by the @atproto packages 101 - header["typ"] === "refresh+jwt" || 102 - // "DPoP" proofs are not meant to be used as service tokens 103 - // https://datatracker.ietf.org/doc/html/rfc9449 104 - header["typ"] === "dpop+jwt" 105 - ) { 106 - throw new XRPCError( 107 - `Invalid jwt type "${header["typ"]}"`, 108 - "BadJwtType", 109 - 401, 110 - ); 111 - } 112 - 113 - const payload = parsePayload(parts[1]!); 114 - const sig = parts[2]!; 115 - 116 - if (Date.now() / 1000 > payload.exp) { 117 - throw new XRPCError("jwt expired", "JwtExpired", 401); 118 - } 119 - if (ownDid !== null && payload.aud !== ownDid) { 120 - throw new XRPCError( 121 - "jwt audience does not match service did", 122 - "BadJwtAudience", 123 - 401, 124 - ); 125 - } 126 - if (lxm !== null && payload.lxm !== lxm) { 127 - throw new XRPCError( 128 - payload.lxm !== undefined 129 - ? `bad jwt lexicon method ("lxm"). must match: ${lxm}` 130 - : `missing jwt lexicon method ("lxm"). must match: ${lxm}`, 131 - "BadJwtLexiconMethod", 132 - 401, 133 - ); 134 - } 135 - 136 - const msgBytes = ui8.fromString(parts.slice(0, 2).join("."), "utf8"); 137 - const sigBytes = ui8.fromString(sig, "base64url"); 138 - 139 - const signingKey = await getSigningKey(payload.iss, false); 140 - const { alg } = header; 141 - 142 - let validSig: boolean; 143 - try { 144 - validSig = await verifySignatureWithKey( 145 - signingKey, 146 - msgBytes, 147 - sigBytes, 148 - alg, 149 - ); 150 - } catch (err) { 151 - throw new XRPCError( 152 - "could not verify jwt signature", 153 - "BadJwtSignature", 154 - 401, 155 - ); 156 - } 157 - 158 - if (!validSig) { 159 - // get fresh signing key in case it failed due to a recent rotation 160 - const freshSigningKey = await getSigningKey(payload.iss, true); 161 - try { 162 - validSig = 163 - freshSigningKey !== signingKey 164 - ? await verifySignatureWithKey( 165 - freshSigningKey, 166 - msgBytes, 167 - sigBytes, 168 - alg, 169 - ) 170 - : false; 171 - } catch (err) { 172 - throw new XRPCError( 173 - "could not verify jwt signature", 174 - "BadJwtSignature", 175 - 401, 176 - ); 177 - } 178 - } 179 - 180 - if (!validSig) { 181 - throw new XRPCError( 182 - "jwt signature does not match jwt issuer", 183 - "BadJwtSignature", 184 - 401, 185 - ); 186 - } 187 - 188 - return payload; 189 - }; 190 - 191 - export const cryptoVerifySignatureWithKey: VerifySignatureWithKeyFn = async ( 192 - key: string, 193 - msgBytes: Uint8Array, 194 - sigBytes: Uint8Array, 195 - alg: string, 196 - ) => { 197 - return crypto.verifySignature(key, msgBytes, sigBytes, { 198 - jwtAlg: alg, 199 - allowMalleableSig: true, 200 - }); 201 - }; 202 - 203 - const parseB64UrlToJson = (b64: string) => { 204 - return JSON.parse(common.b64UrlToUtf8(b64)); 205 - }; 206 - 207 - const parseHeader = (b64: string): ServiceJwtHeaders => { 208 - const header = parseB64UrlToJson(b64); 209 - if (!header || typeof header !== "object" || typeof header.alg !== "string") { 210 - throw new XRPCError("poorly formatted jwt", "BadJwt", 401); 211 - } 212 - return header; 213 - }; 214 - 215 - const parsePayload = (b64: string): ServiceJwtPayload => { 216 - const payload = parseB64UrlToJson(b64); 217 - if ( 218 - !payload || 219 - typeof payload !== "object" || 220 - typeof payload.iss !== "string" || 221 - typeof payload.aud !== "string" || 222 - typeof payload.exp !== "number" || 223 - (payload.lxm && typeof payload.lxm !== "string") || 224 - (payload.nonce && typeof payload.nonce !== "string") 225 - ) { 226 - throw new XRPCError("poorly formatted jwt", "BadJwt", 401); 227 - } 228 - return payload; 229 - };
-20
apps/api/src/util/xrpc.ts
··· 1 - import { Context } from "hono"; 2 - import { StatusCode } from "hono/utils/http-status"; 3 - 4 - export class XRPCError extends Error { 5 - constructor( 6 - message: string, 7 - public error: string, 8 - public code: StatusCode, 9 - ) { 10 - super(message); 11 - } 12 - 13 - hono(ctx: Context) { 14 - ctx.status(this.code); 15 - return ctx.json({ 16 - error: this.error, 17 - message: this.message, 18 - }); 19 - } 20 - }
+44
apps/api/src/xrpc/blue.recipes.actor.getProfile.ts
··· 1 + import { json, XRPCRouter, XRPCError } from '@atcute/xrpc-server'; 2 + import { BlueRecipesActorGetProfile } from '@cookware/lexicons'; 3 + import { db, eq } from '@cookware/database'; 4 + import { getHandle, parseDid } from '../util/api.js'; 5 + import { Logger } from 'pino'; 6 + import { profilesTable, recipeTable } from '@cookware/database/schema'; 7 + import { RedisClient } from 'bun'; 8 + import { buildCdnUrl } from '../util/cdn.js'; 9 + 10 + export const registerGetProfile = (router: XRPCRouter, _logger: Logger, redis: RedisClient) => { 11 + router.addQuery(BlueRecipesActorGetProfile.mainSchema, { 12 + async handler({ params: { actor } }) { 13 + const where = eq(profilesTable.did, await parseDid(actor)); 14 + const profile = await db.query.profilesTable.findFirst({ 15 + where, 16 + orderBy: profilesTable.createdAt, 17 + extras: { 18 + recipesCount: db.$count(recipeTable, where).as('recipesCount'), 19 + } 20 + }); 21 + 22 + if (!profile) { 23 + throw new XRPCError({ 24 + status: 404, 25 + error: 'ProfileNotFound', 26 + description: `Profile for actor ${actor} not found.`, 27 + }); 28 + } 29 + 30 + return json({ 31 + did: profile.did, 32 + handle: await getHandle(profile.did, redis), 33 + displayName: profile.displayName ?? undefined, 34 + description: profile.description ?? undefined, 35 + pronouns: profile.pronouns ?? undefined, 36 + website: profile.website ?? undefined, 37 + avatar: profile.avatarRef ? buildCdnUrl('avatar', profile.did, profile.avatarRef) : undefined, 38 + banner: profile.bannerRef ? buildCdnUrl('feed_thumbnail', profile.did, profile.bannerRef) : undefined, 39 + recipesCount: profile.recipesCount, 40 + createdAt: profile.createdAt.toISOString(), 41 + }); 42 + }, 43 + }); 44 + };
+78
apps/api/src/xrpc/blue.recipes.feed.getRecipe.ts
··· 1 + import { json, XRPCRouter, XRPCError } from '@atcute/xrpc-server'; 2 + import { BlueRecipesFeedDefs, BlueRecipesFeedGetRecipe, BlueRecipesFeedRecipe } from '@cookware/lexicons'; 3 + import { db, and, or, eq } from '@cookware/database'; 4 + import { buildProfileViewBasic, parseDid } from '../util/api.js'; 5 + import { Logger } from 'pino'; 6 + import { parseResourceUri, ResourceUri } from '@atcute/lexicons'; 7 + import { recipeTable } from '@cookware/database/schema'; 8 + import { isLegacyBlob } from '@atcute/lexicons/interfaces'; 9 + import { RedisClient } from 'bun'; 10 + import { buildCdnUrl } from '../util/cdn.js'; 11 + 12 + const invalidUriError = (uri: string) => new XRPCError({ 13 + status: 400, 14 + error: 'InvalidURI', 15 + description: `The provided URI is invalid: ${uri}`, 16 + }); 17 + 18 + export const registerGetRecipe = (router: XRPCRouter, _logger: Logger, redis: RedisClient) => { 19 + router.addQuery(BlueRecipesFeedGetRecipe.mainSchema, { 20 + async handler({ params: { uris } }) { 21 + const whereClauses = []; 22 + 23 + for (const uri of uris) { 24 + const parsed = parseResourceUri(uri); 25 + if (!parsed.ok) throw invalidUriError(uri); 26 + 27 + const { repo, collection, rkey } = parsed.value; 28 + if (!repo) throw invalidUriError(uri); 29 + if (collection !== BlueRecipesFeedRecipe.mainSchema.object.shape.$type.expected) throw invalidUriError(uri); 30 + if (!rkey) throw invalidUriError(uri); 31 + 32 + const did = await parseDid(repo); 33 + 34 + whereClauses.push(and(eq(recipeTable.did, did), eq(recipeTable.rkey, rkey))); 35 + } 36 + 37 + const recipes = await db.query.recipeTable.findMany({ 38 + orderBy: recipeTable.createdAt, 39 + where: or(...whereClauses), 40 + with: { 41 + author: { 42 + columns: { 43 + did: true, 44 + displayName: true, 45 + pronouns: true, 46 + avatarRef: true, 47 + createdAt: true, 48 + }, 49 + }, 50 + }, 51 + }); 52 + 53 + return json({ 54 + recipes: await Promise.all( 55 + recipes.map(async ({ author, ...recipe }) => ({ 56 + uri: recipe.uri as ResourceUri, 57 + author: await buildProfileViewBasic(author, redis), 58 + cid: recipe.cid, 59 + rkey: recipe.rkey, 60 + imageUrl: recipe.imageRef ? buildCdnUrl('post_image', recipe.did, recipe.imageRef) : undefined, 61 + indexedAt: recipe.ingestedAt.toISOString(), 62 + record: { 63 + $type: BlueRecipesFeedRecipe.mainSchema.object.shape.$type.expected, 64 + title: recipe.title, 65 + description: recipe.description ?? undefined, 66 + time: recipe.time ?? undefined, 67 + serves: recipe.serves ?? undefined, 68 + ingredients: recipe.ingredients as BlueRecipesFeedRecipe.Ingredient[], 69 + steps: recipe.steps as BlueRecipesFeedRecipe.Step[], 70 + image: isLegacyBlob(recipe.imageRef) ? undefined : recipe.imageRef ?? undefined, 71 + createdAt: recipe.createdAt.toISOString(), 72 + }, 73 + })), 74 + ), 75 + }); 76 + }, 77 + }); 78 + };
+79
apps/api/src/xrpc/blue.recipes.feed.getRecipes.ts
··· 1 + import { db, and, eq } from '@cookware/database'; 2 + import { recipeTable } from '@cookware/database/schema'; 3 + import { BlueRecipesFeedGetRecipes, BlueRecipesFeedRecipe } from '@cookware/lexicons'; 4 + import { json, XRPCRouter } from '@atcute/xrpc-server'; 5 + import { getHandle, parseDid } from '../util/api.js'; 6 + import { ResourceUri } from '@atcute/lexicons/syntax'; 7 + import { Logger } from 'pino'; 8 + import { isLegacyBlob } from '@atcute/lexicons/interfaces'; 9 + import { RedisClient } from 'bun'; 10 + import { buildCdnUrl } from '../util/cdn.js'; 11 + 12 + export const registerGetRecipes = (router: XRPCRouter, _logger: Logger, redis: RedisClient) => { 13 + router.addQuery(BlueRecipesFeedGetRecipes.mainSchema, { 14 + async handler({ params: { author, limit, cursor } }) { 15 + const whereClauses = []; 16 + if (author) { 17 + const did = await parseDid(author); 18 + whereClauses.push(eq(recipeTable.did, did)); 19 + } 20 + 21 + if (cursor) { 22 + const { c } = JSON.parse(atob(cursor)) as { c: string }; 23 + whereClauses.push(eq(recipeTable.createdAt, new Date(c))); 24 + } 25 + 26 + const recipes = await db.query.recipeTable.findMany({ 27 + orderBy: recipeTable.createdAt, 28 + limit: limit, 29 + where: whereClauses ? and(...whereClauses) : undefined, 30 + with: { 31 + author: { 32 + columns: { 33 + did: true, 34 + displayName: true, 35 + pronouns: true, 36 + avatarRef: true, 37 + createdAt: true, 38 + }, 39 + }, 40 + }, 41 + }); 42 + 43 + let nextCursor = ''; 44 + if (recipes.length == limit) { 45 + const { createdAt } = recipes[limit - 1]!; 46 + nextCursor = atob(JSON.stringify({ c: createdAt })); 47 + } 48 + 49 + return json({ 50 + nextCursor, 51 + recipes: await Promise.all(recipes.map(async (recipe) => ({ 52 + author: { 53 + did: recipe.author.did, 54 + handle: await getHandle(recipe.author.did, redis), 55 + displayName: recipe.author.displayName, 56 + avatar: recipe.author.avatarRef ? buildCdnUrl('avatar', recipe.author.did, recipe.author.avatarRef) : undefined, 57 + pronouns: recipe.author.pronouns ?? undefined, 58 + createdAt: recipe.author.createdAt.toISOString(), 59 + }, 60 + cid: recipe.cid, 61 + rkey: recipe.rkey, 62 + indexedAt: recipe.ingestedAt.toISOString(), 63 + record: { 64 + $type: BlueRecipesFeedRecipe.mainSchema.object.shape.$type.expected, 65 + title: recipe.title, 66 + description: recipe.description ?? undefined, 67 + time: recipe.time ?? undefined, 68 + serves: recipe.serves ?? undefined, 69 + ingredients: recipe.ingredients as BlueRecipesFeedRecipe.Ingredient[], 70 + steps: recipe.steps as BlueRecipesFeedRecipe.Step[], 71 + image: isLegacyBlob(recipe.imageRef) ? undefined : recipe.imageRef ?? undefined, 72 + createdAt: recipe.createdAt.toISOString(), 73 + }, 74 + uri: recipe.uri as ResourceUri, 75 + }))), 76 + }); 77 + } 78 + }); 79 + };
-124
apps/api/src/xrpc/index.ts
··· 1 - import { Hono } from 'hono'; 2 - import { db, recipeTable } from '@cookware/database'; 3 - import { and, desc, eq, sql } from 'drizzle-orm'; 4 - import { DID, getDidDoc, getDidFromHandleOrDid } from '@cookware/lexicons'; 5 - import { simpleFetchHandler, XRPC } from '@atcute/client'; 6 - import { AppBskyActorProfile } from '@atproto/api'; 7 - import { BlueRecipesFeedDefs, BlueRecipesFeedGetRecipes } from '@atcute/client/lexicons'; 8 - import { getAuthorInfo } from '../util/api.js'; 9 - 10 - export const xrpcApp = new Hono(); 11 - 12 - xrpcApp.get('/blue.recipes.feed.getRecipes', async ctx => { 13 - const { did: didQuery } = ctx.req.query(); 14 - 15 - let did: DID | null = null; 16 - if (didQuery) 17 - did = await getDidFromHandleOrDid(didQuery); 18 - 19 - const recipes = await db 20 - .select({ 21 - rkey: recipeTable.rkey, 22 - title: recipeTable.title, 23 - description: recipeTable.description, 24 - time: recipeTable.time, 25 - ingredientsCount: sql`json_array_length(${recipeTable.ingredients})`, 26 - stepsCount: sql`json_array_length(${recipeTable.steps})`, 27 - createdAt: recipeTable.createdAt, 28 - authorDid: recipeTable.authorDid, 29 - uri: sql`concat(${recipeTable.authorDid}, "/", ${recipeTable.rkey})`.as('uri'), 30 - }) 31 - .from(recipeTable) 32 - .where(did ? eq(recipeTable.authorDid, did) : undefined) 33 - .orderBy(desc(recipeTable.createdAt)); 34 - 35 - const rpc = new XRPC({ 36 - handler: simpleFetchHandler({ 37 - service: 'https://public.api.bsky.app', 38 - }), 39 - }); 40 - 41 - let authorInfo: BlueRecipesFeedDefs.AuthorInfo | null = null; 42 - if (did) { 43 - authorInfo = await getAuthorInfo(did, rpc); 44 - }; 45 - 46 - const results = []; 47 - const eachRecipe = async (r: typeof recipes[0]) => ({ 48 - author: authorInfo || await getAuthorInfo(r.authorDid, rpc), 49 - rkey: r.rkey, 50 - title: r.title, 51 - time: r.time, 52 - description: r.description || undefined, 53 - ingredients: r.ingredientsCount as number, 54 - steps: r.stepsCount as number, 55 - }); 56 - 57 - for (const result of recipes) { 58 - results.push(await eachRecipe(result)); 59 - } 60 - 61 - let result: BlueRecipesFeedGetRecipes.Output = { 62 - author: authorInfo || undefined, 63 - recipes: results, 64 - }; 65 - 66 - return ctx.json(result); 67 - }); 68 - 69 - xrpcApp.get('/blue.recipes.feed.getRecipe', async ctx => { 70 - const { did, rkey } = ctx.req.query(); 71 - if (!did) throw new Error('Invalid DID'); 72 - if (!rkey) throw new Error('Invalid rkey'); 73 - 74 - let parsedDid = await getDidFromHandleOrDid(did); 75 - if (!parsedDid) { 76 - ctx.status(404); 77 - return ctx.json({ 78 - error: 'invalid_did', 79 - message: 'No such author was found by that identifier.', 80 - }); 81 - } 82 - 83 - const recipe = await db.query.recipeTable.findFirst({ 84 - where: and( 85 - eq(recipeTable.authorDid, parsedDid), 86 - eq(recipeTable.rkey, rkey), 87 - ), 88 - }); 89 - 90 - if (!recipe) { 91 - ctx.status(404); 92 - return ctx.json({ 93 - error: 'not_found', 94 - message: 'No such recipe was found in the index.', 95 - }); 96 - } 97 - 98 - const rpc = new XRPC({ 99 - handler: simpleFetchHandler({ 100 - service: 'https://public.api.bsky.app', 101 - }), 102 - }); 103 - 104 - const authorInfo = await getAuthorInfo(recipe.authorDid, rpc); 105 - 106 - return ctx.json({ 107 - recipe: { 108 - author: authorInfo, 109 - title: recipe.title, 110 - time: recipe.time, 111 - description: recipe.description, 112 - ingredients: recipe.ingredients, 113 - steps: recipe.steps, 114 - }, 115 - }); 116 - }); 117 - 118 - xrpcApp.use(async c => { 119 - c.status(400); 120 - return c.json({ 121 - error: 'not_implemented', 122 - message: 'The XRPC server has not yet been implemented.', 123 - }); 124 - });
+42
apps/ingester/Dockerfile
··· 1 + FROM oven/bun:1.3.3 AS base 2 + WORKDIR /app 3 + 4 + FROM base AS deps 5 + COPY package.json bun.lock ./ 6 + COPY apps/api/package.json apps/api/package.json 7 + COPY apps/ingester/package.json apps/ingester/package.json 8 + COPY apps/web/package.json apps/web/package.json 9 + COPY libs/database/package.json libs/database/package.json 10 + COPY libs/lexicons/package.json libs/lexicons/package.json 11 + COPY libs/tsconfig/package.json libs/tsconfig/package.json 12 + 13 + RUN \ 14 + --mount=type=cache,target=/root/.bun/install/cache \ 15 + bun install \ 16 + --frozen-lockfile \ 17 + --filter '@cookware/ingester' 18 + 19 + FROM base AS build 20 + COPY --from=deps /app/node_modules ./node_modules/ 21 + COPY . . 22 + 23 + RUN bun build /app/apps/ingester/src/index.ts \ 24 + --compile \ 25 + --minify \ 26 + --sourcemap \ 27 + --bytecode \ 28 + --outfile=/app/dist/ingester \ 29 + --target=bun \ 30 + --external '@libsql/*' 31 + 32 + FROM base AS libsql 33 + WORKDIR /app 34 + COPY bun.lock ./ 35 + RUN LIBSQL_VERSION=$(grep -oP '"@libsql/client@\K[0-9.]+' bun.lock | head -1) && \ 36 + bun install @libsql/client@${LIBSQL_VERSION} --production 37 + 38 + FROM rockylinux/rockylinux:9.4-ubi AS run 39 + ENV NODE_PATH=/app/node_modules 40 + COPY --from=build /app/dist/ingester /app/ingester 41 + COPY --from=libsql /app/node_modules /app/node_modules 42 + ENTRYPOINT ["/app/ingester"]
+13 -26
apps/ingester/package.json
··· 7 7 "access": "public" 8 8 }, 9 9 "scripts": { 10 - "dev": "NODE_OPTIONS=--use-openssl-ca tsx watch --clear-screen=false src/index.ts | pino-pretty", 11 - "build": "tsup", 12 - "start": "NODE_OPTIONS=--use-openssl-ca node dist/index.cjs", 10 + "build": "bun --bun run check-types && bun --bun run compile", 11 + "dev": "bun run --hot src/index.ts | pino-pretty", 12 + "check-types": "tsc --noEmit", 13 + "compile": "bun build src/index.ts --compile --minify --sourcemap --outfile=dist/api --target=bun", 13 14 "clean": "rimraf dist" 14 15 }, 15 16 "dependencies": { 16 - "@atcute/client": "^2.0.6", 17 + "@atcute/client": "catalog:", 18 + "@atcute/identity": "^1.1.3", 19 + "@atcute/identity-resolver": "^1.1.4", 20 + "@atcute/jetstream": "^1.1.2", 21 + "@atcute/lexicons": "catalog:", 22 + "@badrap/valita": "^0.4.6", 17 23 "@cookware/database": "workspace:^", 24 + "@cookware/lexicons": "workspace:*", 18 25 "@sentry/node": "^8.42.0", 19 - "@skyware/jetstream": "^0.2.1", 20 - "bufferutil": "^4.0.8", 21 - "drizzle-orm": "^0.37.0", 22 - "pino": "^9.5.0", 23 - "ws": "^8.18.0", 24 - "zod": "^3.23.8" 26 + "pino": "^9.5.0" 25 27 }, 26 28 "devDependencies": { 27 - "@cookware/lexicons": "workspace:*", 28 29 "@cookware/tsconfig": "workspace:*", 29 - "@types/node": "^22.10.1", 30 + "@types/bun": "catalog:", 30 31 "@types/ws": "^8.5.13", 31 32 "pino-pretty": "^13.0.0", 32 33 "rimraf": "^6.0.1", 33 - "ts-node": "^10.9.2", 34 - "tsup": "^8.3.5", 35 - "tsx": "^4.19.2", 36 34 "typescript": "^5.7.2" 37 - }, 38 - "tsup": { 39 - "entry": [ 40 - "src", 41 - "!src/**/__tests__/**", 42 - "!src/**/*.test.*" 43 - ], 44 - "splitting": false, 45 - "sourcemap": true, 46 - "clean": true, 47 - "format": "esm" 48 35 } 49 36 }
+13 -18
apps/ingester/src/config.ts
··· 1 - import { z } from "zod"; 1 + import * as v from "@badrap/valita"; 2 2 3 - const envSchema = z.object({ 4 - TURSO_CONNECTION_URL: z.string().default('https://turso.dev.hayden.moe'), 5 - TURSO_AUTH_TOKEN: z.string().or(z.undefined()), 3 + const envSchema = v.object({ 4 + TURSO_CONNECTION_URL: v.string().optional(() => 'https://turso.dev.hayden.moe'), 5 + TURSO_AUTH_TOKEN: v.string().optional(), 6 6 7 - JETSTREAM_ENDPOINT: z 8 - .string() 9 - .url() 10 - .default('wss://jetstream1.us-east.bsky.network/subscribe'), 11 - PLC_DIRECTORY_URL: z.string().url().default('https://plc.directory'), 7 + REDIS_URL: v.string().optional(() => 'redis://localhost:6379/0'), 12 8 13 - SENTRY_DSN: z.string().or(z.undefined()), 9 + JETSTREAM_ENDPOINT: v.string() 10 + .optional(() => 'wss://jetstream1.us-east.bsky.network'), 11 + PLC_DIRECTORY_URL: v.string().optional(() => 'https://plc.directory'), 14 12 15 - ENV: z 16 - .union([ 17 - z.literal('development'), 18 - z.literal('production'), 19 - ]) 20 - .default('development'), 13 + ENV: v 14 + .union(v.literal('development'), v.literal('production')) 15 + .optional(() => 'development'), 21 16 }); 22 17 23 - const env = envSchema.parse(process.env); 18 + const env = envSchema.parse(process.env, { mode: 'strip' }); 24 19 25 20 export default env; 26 - export type Env = z.infer<typeof envSchema>; 21 + export type Env = v.Infer<typeof envSchema>;
+52 -75
apps/ingester/src/index.ts
··· 1 - import { Jetstream } from "@skyware/jetstream"; 2 - import { WebSocket } from "ws"; 3 - import { ingestLogger } from "./logger.js"; 1 + import { JetstreamSubscription } from "@atcute/jetstream"; 4 2 import env from "./config.js"; 5 - import { RecipeCollection, RecipeRecord, parseDid } from "@cookware/lexicons"; 6 - import { db, recipeTable } from "@cookware/database"; 7 - import { and, eq } from "drizzle-orm"; 3 + import { BlueRecipesActorProfile, BlueRecipesFeedRecipe } from "@cookware/lexicons"; 4 + import { isAtprotoDid } from '@atcute/identity'; 5 + import pino from "pino"; 6 + import { ingestRecipe } from "./ingesters/recipe.js"; 7 + import { ingestProfile } from "./ingesters/profile.js"; 8 8 9 9 export const newIngester = () => { 10 - const jetstream = new Jetstream({ 11 - ws: WebSocket, 12 - endpoint: env.JETSTREAM_ENDPOINT, 13 - wantedCollections: ['blue.recipes.*'], 14 - cursor: 0, 10 + const logger = pino({ 11 + name: 'recipes.ingester', 12 + level: env.ENV === 'development' ? 'debug' : 'info', 15 13 }); 16 14 17 - jetstream.on("commit", async event => { 18 - if (event.commit.operation == 'create' || event.commit.operation == 'update') { 19 - const now = new Date(); 20 - const { record } = event.commit; 21 - 22 - if ( 23 - event.commit.collection == RecipeCollection 24 - && record.$type == RecipeCollection 25 - && RecipeRecord.safeParse(record).success 26 - ) { 27 - const res = await db 28 - .insert(recipeTable) 29 - .values({ 30 - rkey: event.commit.rkey, 31 - title: record.title, 32 - time: record.time, 33 - description: record.description, 34 - ingredients: record.ingredients, 35 - steps: record.steps, 36 - authorDid: parseDid(event.did)!, 37 - createdAt: now, 38 - }) 39 - .onConflictDoUpdate({ 40 - target: recipeTable.id, 41 - set: { 42 - title: record.title, 43 - time: record.time, 44 - description: record.description, 45 - ingredients: record.ingredients, 46 - steps: record.steps, 47 - }, 48 - }) 49 - .execute(); 50 - 51 - ingestLogger.info({ res }, 'recipe ingested'); 52 - } 53 - } else if (event.commit.operation == 'delete') { 54 - const res = await db 55 - .delete(recipeTable) 56 - .where( 57 - and( 58 - eq(recipeTable.authorDid, parseDid(event.did)!), 59 - eq(recipeTable.rkey, event.commit.rkey), 60 - ) 61 - ) 62 - .execute(); 63 - 64 - ingestLogger.info({ res }, 'recipe deleted'); 65 - } 15 + const subscription = new JetstreamSubscription({ 16 + url: env.JETSTREAM_ENDPOINT, 17 + wantedCollections: [ 18 + 'blue.recipes.feed.recipe', 19 + 'blue.recipes.actor.profile', 20 + ], 21 + onConnectionOpen: () => logger.info('Connected to Jetstream'), 22 + onConnectionError: err => { 23 + logger.error(err, 'Failed to connect to Jetstream'); 24 + process.exit(1); 25 + }, 26 + onConnectionClose: () => logger.info('Disconnected from Jetstream'), 66 27 }); 67 28 68 - jetstream.on('open', () => { 69 - ingestLogger.info({ 70 - endpoint: env.JETSTREAM_ENDPOINT, 71 - wantedCollections: ['recipes.blue.*'], 72 - }, 'Ingester connection opened.'); 73 - }); 29 + return { 30 + subscription, 31 + start: async () => { 32 + const redis = new Bun.RedisClient(env.REDIS_URL); 74 33 75 - jetstream.on('close', () => { 76 - ingestLogger.error('Ingester connection closed.'); 77 - }); 34 + for await (const event of subscription) { 35 + const authorDid = event.did; 36 + if (!isAtprotoDid(authorDid)) { 37 + logger.warn(`Invalid did: ${authorDid}`); 38 + continue; 39 + } 78 40 79 - jetstream.on('error', err => { 80 - ingestLogger.error({ err }, 'Ingester runtime error.'); 81 - }); 82 - 83 - return jetstream; 41 + if (event.kind === 'commit') { 42 + const commit = event.commit; 43 + switch (commit.collection) { 44 + case BlueRecipesFeedRecipe.mainSchema.object.shape.$type.expected: 45 + await ingestRecipe(authorDid, commit, logger); 46 + break; 47 + case BlueRecipesActorProfile.mainSchema.object.shape.$type.expected: 48 + await ingestProfile(authorDid, commit, logger, redis); 49 + break; 50 + default: 51 + logger.debug({ collection: commit.collection }, "skipping unknown collection"); 52 + break; 53 + } 54 + } else { 55 + logger.trace({ kind: event.kind, authorDid }, `Skipping non-commit event for did: ${event.did}`); 56 + continue; 57 + } 58 + } 59 + }, 60 + } 84 61 }; 85 62 86 - newIngester().start(); 63 + await newIngester().start();
+84
apps/ingester/src/ingesters/profile.ts
··· 1 + import { db, eq } from "@cookware/database"; 2 + import { profilesTable } from "@cookware/database/schema"; 3 + import { is } from '@atcute/lexicons'; 4 + import { BlueRecipesActorProfile } from "@cookware/lexicons"; 5 + import { CommitOperation } from "@atcute/jetstream"; 6 + import { Logger } from "pino"; 7 + import { AtprotoDid } from "@atcute/lexicons/syntax"; 8 + import { RedisClient } from "bun"; 9 + import { CompositeDidDocumentResolver, PlcDidDocumentResolver, WebDidDocumentResolver } from "@atcute/identity-resolver"; 10 + import env from "../config.js"; 11 + 12 + const didResolver = new CompositeDidDocumentResolver({ 13 + methods: { 14 + plc: new PlcDidDocumentResolver({ apiUrl: env.PLC_DIRECTORY_URL }), 15 + web: new WebDidDocumentResolver(), 16 + } 17 + }); 18 + 19 + const HANDLE_CACHE_TTL = 5 * 60; // 5 minutes 20 + 21 + export const ingestProfile = async (did: AtprotoDid, commit: CommitOperation, logger: Logger, redis: RedisClient) => { 22 + if (commit.operation == 'create' || commit.operation == 'update') { 23 + const { rkey, record, cid } = commit; 24 + 25 + if (rkey != "self") { 26 + logger.warn(`Invalid profile rkey for ${commit['operation']} ${did}: ${rkey}`); 27 + return; 28 + } 29 + if (!is(BlueRecipesActorProfile.mainSchema, record)) { 30 + logger.warn(`Invalid profile schema for ${commit['operation']} ${did}`); 31 + return; 32 + } 33 + 34 + // Preemptively cache the user's handle for the API 35 + let handle = await redis.get(`handle:${did}`); 36 + if (!handle) { 37 + const didDoc = await didResolver.resolve(did); 38 + if (didDoc.alsoKnownAs == null || didDoc.alsoKnownAs.length < 1) { 39 + logger.warn(`User ${did} had no resolvable DID document.`); 40 + return; 41 + } 42 + handle = didDoc.alsoKnownAs[0]!.substring(5); 43 + redis.setex(`handle:${did}`, HANDLE_CACHE_TTL, handle); 44 + } 45 + 46 + await db 47 + .insert(profilesTable) 48 + .values({ 49 + cid, 50 + did, 51 + displayName: record.displayName, 52 + avatarRef: record.avatar, 53 + bannerRef: record.banner, 54 + description: record.description, 55 + pronouns: record.pronouns, 56 + website: record.website, 57 + createdAt: record.createdAt ? new Date(record.createdAt) : new Date(), 58 + ingestedAt: new Date(), 59 + }) 60 + .onConflictDoUpdate({ 61 + target: [profilesTable.did], 62 + set: { 63 + cid, 64 + displayName: record.displayName, 65 + avatarRef: record.avatar, 66 + bannerRef: record.banner, 67 + description: record.description, 68 + pronouns: record.pronouns, 69 + website: record.website, 70 + createdAt: record.createdAt ? new Date(record.createdAt) : new Date(), 71 + }, 72 + }); 73 + 74 + logger.info(`Upserted profile ${did}/${rkey}`); 75 + } else if (commit.operation == 'delete') { 76 + const rkey = commit.rkey; 77 + db 78 + .delete(profilesTable) 79 + .where(eq(profilesTable.did, did)); 80 + logger.info(`Deleted profile ${did}/${rkey}`); 81 + } else { 82 + logger.warn(`Unknown operation type: ${commit['operation']}`); 83 + } 84 + };
+57
apps/ingester/src/ingesters/recipe.ts
··· 1 + import { db, and, eq } from "@cookware/database"; 2 + import { recipeTable } from "@cookware/database/schema"; 3 + import { is } from '@atcute/lexicons'; 4 + import { BlueRecipesFeedRecipe } from "@cookware/lexicons"; 5 + import { CommitOperation } from "@atcute/jetstream"; 6 + import { Logger } from "pino"; 7 + import { AtprotoDid } from "@atcute/lexicons/syntax"; 8 + 9 + export const ingestRecipe = async (did: AtprotoDid, commit: CommitOperation, logger: Logger) => { 10 + if (commit.operation == 'create' || commit.operation == 'update') { 11 + const { rkey, record, cid } = commit; 12 + 13 + if (!is(BlueRecipesFeedRecipe.mainSchema, record)) { 14 + logger.warn(`Invalid recipe schema for ${commit['operation']} ${did}/${rkey}`); 15 + return; 16 + } 17 + 18 + await db 19 + .insert(recipeTable) 20 + .values({ 21 + cid, rkey, did, 22 + title: record.title, 23 + time: record.time ?? 0, 24 + serves: record.serves ?? null, 25 + description: record.description ?? null, 26 + ingredients: record.ingredients, 27 + steps: record.steps, 28 + createdAt: record.createdAt ? new Date(record.createdAt) : new Date(), 29 + }) 30 + .onConflictDoUpdate({ 31 + target: [recipeTable.did, recipeTable.rkey], 32 + set: { 33 + cid, 34 + title: record.title, 35 + time: record.time ?? 0, 36 + serves: record.serves ?? null, 37 + description: record.description ?? null, 38 + ingredients: record.ingredients, 39 + steps: record.steps, 40 + createdAt: record.createdAt ? new Date(record.createdAt) : new Date(), 41 + }, 42 + }); 43 + 44 + logger.info(`Upserted recipe ${did}/${rkey}`); 45 + } else if (commit.operation == 'delete') { 46 + const rkey = commit.rkey; 47 + db 48 + .delete(recipeTable) 49 + .where(and( 50 + eq(recipeTable.did, did), 51 + eq(recipeTable.rkey, rkey), 52 + )); 53 + logger.info(`Deleted recipe ${did}/${rkey}`); 54 + } else { 55 + logger.warn(`Unknown operation type: ${commit['operation']}`); 56 + } 57 + };
-4
apps/ingester/src/logger.ts
··· 1 - import { pino } from "pino"; 2 - 3 - export const rootLogger = pino({ name: 'recipes' }); 4 - export const ingestLogger = pino({ name: 'recipes.ingest' });
+11 -6
apps/web/package.json
··· 10 10 "preview": "vite preview" 11 11 }, 12 12 "dependencies": { 13 - "@atcute/client": "^2.0.6", 14 - "@atcute/oauth-browser-client": "^1.0.7", 13 + "@atcute/atproto": "^3.1.9", 14 + "@atcute/client": "catalog:", 15 + "@atcute/identity-resolver": "^1.1.4", 16 + "@atcute/lexicons": "catalog:", 17 + "@atcute/oauth-browser-client": "^2.0.1", 15 18 "@atproto/common": "^0.4.5", 16 19 "@atproto/common-web": "^0.3.1", 17 20 "@dnd-kit/core": "^6.3.1", ··· 24 27 "@radix-ui/react-dialog": "^1.1.4", 25 28 "@radix-ui/react-dropdown-menu": "^2.1.4", 26 29 "@radix-ui/react-icons": "^1.3.2", 27 - "@radix-ui/react-label": "^2.1.0", 28 - "@radix-ui/react-separator": "^1.1.0", 29 - "@radix-ui/react-slot": "^1.1.0", 30 + "@radix-ui/react-label": "^2.1.8", 31 + "@radix-ui/react-separator": "^1.1.8", 32 + "@radix-ui/react-slot": "^1.2.4", 30 33 "@radix-ui/react-tooltip": "^1.1.4", 31 34 "@tanstack/react-query": "^5.62.2", 32 35 "@tanstack/react-query-devtools": "^5.62.2", ··· 51 54 "@types/node": "^22.10.1", 52 55 "@types/react": "^19.0.0", 53 56 "@types/react-dom": "^19.0.0", 57 + "@vitejs/plugin-react": "^5.1.1", 54 58 "@vitejs/plugin-react-swc": "^3.5.0", 55 59 "autoprefixer": "^10.4.20", 60 + "babel-plugin-react-compiler": "^1.0.0", 56 61 "cssnano": "^7.0.6", 57 62 "eslint": "^9.15.0", 58 63 "eslint-plugin-react-hooks": "^5.0.0", ··· 63 68 "tailwindcss": "^3.4.16", 64 69 "typescript": "~5.6.2", 65 70 "typescript-eslint": "^8.15.0", 66 - "vite": "^6.0.1" 71 + "vite": "^7.2.4" 67 72 } 68 73 }
-12
apps/web/public/client-metadata.json
··· 1 - { 2 - "client_id": "https://recipes.blue/client-metadata.json", 3 - "client_name": "Recipes", 4 - "client_uri": "https://recipes.blue", 5 - "redirect_uris": ["https://recipes.blue/"], 6 - "scope": "atproto transition:generic", 7 - "grant_types": ["authorization_code", "refresh_token"], 8 - "response_types": ["code"], 9 - "token_endpoint_auth_method": "none", 10 - "application_type": "web", 11 - "dpop_bound_access_tokens": true 12 - }
+9
apps/web/public/oauth-client-metadata.json
··· 1 + { 2 + "client_id": "https://recipes.blue/oauth-client-metadata.json", 3 + "client_name": "Recipes.blue", 4 + "redirect_uris": ["https://recipes.blue/"], 5 + "scope": "atproto transition:generic", 6 + "token_endpoint_auth_method": "none", 7 + "application_type": "web", 8 + "dpop_bound_access_tokens": true 9 + }
+3 -1
apps/web/src/components/app-sidebar.tsx
··· 18 18 SidebarRail, 19 19 } from "@/components/ui/sidebar" 20 20 import { NavUserOpts } from "./nav-user-opts" 21 + import { ModeToggle } from "./mode-toggle" 21 22 22 23 const data = { 23 24 navMain: [ ··· 61 62 <Sidebar collapsible="icon" {...props}> 62 63 <SidebarHeader> 63 64 <SidebarMenu> 64 - <SidebarMenuItem> 65 + <SidebarMenuItem className="flex items-center justify-between gap-x-2"> 65 66 <SidebarMenuButton size="lg" asChild> 66 67 <a href="#"> 67 68 <div className="flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground"> ··· 72 73 </div> 73 74 </a> 74 75 </SidebarMenuButton> 76 + <ModeToggle /> 75 77 </SidebarMenuItem> 76 78 </SidebarMenu> 77 79 </SidebarHeader>
+37
apps/web/src/components/mode-toggle.tsx
··· 1 + import { Moon, Sun } from "lucide-react" 2 + 3 + import { Button } from "@/components/ui/button" 4 + import { 5 + DropdownMenu, 6 + DropdownMenuContent, 7 + DropdownMenuItem, 8 + DropdownMenuTrigger, 9 + } from "@/components/ui/dropdown-menu" 10 + import { useTheme } from "@/components/theme-provider" 11 + 12 + export function ModeToggle() { 13 + const { setTheme } = useTheme() 14 + 15 + return ( 16 + <DropdownMenu> 17 + <DropdownMenuTrigger asChild> 18 + <Button variant="outline" size="icon" className="size-8 aspect-square flex items-center justify-center rounded-lg"> 19 + <Sun className="h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0" /> 20 + <Moon className="absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100" /> 21 + <span className="sr-only">Toggle theme</span> 22 + </Button> 23 + </DropdownMenuTrigger> 24 + <DropdownMenuContent align="end"> 25 + <DropdownMenuItem onClick={() => setTheme("light")}> 26 + Light 27 + </DropdownMenuItem> 28 + <DropdownMenuItem onClick={() => setTheme("dark")}> 29 + Dark 30 + </DropdownMenuItem> 31 + <DropdownMenuItem onClick={() => setTheme("system")}> 32 + System 33 + </DropdownMenuItem> 34 + </DropdownMenuContent> 35 + </DropdownMenu> 36 + ) 37 + }
+2 -2
apps/web/src/components/nav-user-opts.tsx
··· 7 7 SidebarMenuButton, 8 8 SidebarMenuItem, 9 9 } from "@/components/ui/sidebar" 10 - import { useAuth } from "@/state/auth" 10 + import { useSession } from "@/state/auth" 11 11 import { Link } from "@tanstack/react-router"; 12 12 import { LifeBuoy, Pencil, Send } from "lucide-react"; 13 13 14 14 export function NavUserOpts() { 15 - const { isLoggedIn } = useAuth(); 15 + const { isLoggedIn } = useSession(); 16 16 17 17 if (!isLoggedIn) { 18 18 return (
+5 -5
apps/web/src/components/nav-user.tsx
··· 20 20 } from "@/components/ui/sidebar" 21 21 import { Button } from "./ui/button" 22 22 import { Link } from "@tanstack/react-router" 23 - import { useAuth } from "@/state/auth" 23 + import { useSession } from "@/state/auth" 24 24 import { Skeleton } from "./ui/skeleton" 25 25 import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar" 26 26 import { useUserQuery } from "@/queries/self" 27 27 28 28 export function NavUser() { 29 29 const { isMobile } = useSidebar() 30 - const { isLoggedIn, agent, logOut } = useAuth(); 30 + const { isLoggedIn, agent, signOut } = useSession(); 31 31 32 32 const userQuery = useUserQuery(); 33 33 ··· 74 74 className="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground" 75 75 > 76 76 <Avatar className="h-8 w-8 rounded-lg"> 77 - <AvatarImage src={`https://cdn.bsky.app/img/avatar_thumbnail/plain/${agent.sub}/${userQuery.data.avatar?.ref.$link}@jpeg`} alt={userQuery.data.displayName} /> 77 + <AvatarImage src={userQuery.data.avatar} alt={userQuery.data.displayName} /> 78 78 <AvatarFallback className="rounded-lg">{userQuery.data.displayName}</AvatarFallback> 79 79 </Avatar> 80 80 <div className="grid flex-1 text-left text-sm leading-tight"> ··· 92 92 <DropdownMenuLabel className="p-0 font-normal"> 93 93 <div className="flex items-center gap-2 px-1 py-1.5 text-left text-sm"> 94 94 <Avatar className="h-8 w-8 rounded-lg"> 95 - <AvatarImage src={`https://cdn.bsky.app/img/avatar_thumbnail/plain/${agent.sub}/${userQuery.data.avatar?.ref.$link}@jpeg`} alt={userQuery.data.displayName} /> 95 + <AvatarImage src={userQuery.data.avatar} alt={userQuery.data.displayName} /> 96 96 <AvatarFallback className="rounded-lg">{userQuery.data.displayName}</AvatarFallback> 97 97 </Avatar> 98 98 <div className="grid flex-1 text-left text-sm leading-tight"> ··· 101 101 </div> 102 102 </DropdownMenuLabel> 103 103 <DropdownMenuSeparator /> 104 - <DropdownMenuItem className="cursor-pointer" onClick={() => logOut()}> 104 + <DropdownMenuItem className="cursor-pointer" onClick={() => signOut()}> 105 105 <LogOut /> 106 106 Log out 107 107 </DropdownMenuItem>
+10 -6
apps/web/src/components/query-placeholder.tsx
··· 1 1 import type { UseQueryResult } from '@tanstack/react-query'; 2 - import { PropsWithChildren, ReactNode } from 'react'; 2 + import { ReactNode } from 'react'; 3 3 import { Skeleton } from './ui/skeleton'; 4 4 import { Alert, AlertDescription, AlertTitle } from './ui/alert'; 5 5 import { AlertCircle } from 'lucide-react'; 6 - import { XRPCError } from '@atcute/client'; 6 + import { isXRPCErrorPayload } from '@atcute/client'; 7 7 8 - type QueryPlaceholderProps<TData, TError> = PropsWithChildren<{ 8 + type QueryPlaceholderProps<TData, TError> = { 9 9 query: UseQueryResult<TData, TError>; 10 10 cards?: boolean; 11 11 cardsCount?: number; 12 12 noData?: ReactNode; 13 - }>; 13 + children: ReactNode | ReactNode[] | ((data: TData) => ReactNode | ReactNode[]); 14 + }; 14 15 15 16 const QueryPlaceholder = <TData = {}, TError = Error>( 16 17 { ··· 32 33 } else if (query.isError) { 33 34 const { error } = query; 34 35 let errMsg = 'Unknown'; 35 - if (error instanceof XRPCError) { 36 - errMsg = error.kind ?? `HTTP_${error.status}`; 36 + if (isXRPCErrorPayload(error)) { 37 + errMsg = error.message ?? `XRPC_${error.error}`; 37 38 } if (error instanceof Error) { 38 39 errMsg = `${error.message} (${error.name})`; 39 40 } ··· 50 51 </Alert> 51 52 ) 52 53 } else if (query.data) { 54 + if (typeof children === 'function') { 55 + return children(query.data); 56 + } 53 57 return children; 54 58 } 55 59 return noData;
+23 -16
apps/web/src/components/recipe-card.tsx
··· 1 - import { BlueRecipesFeedGetRecipes } from "@atcute/client/lexicons"; 2 1 import { Card, CardContent, CardFooter, CardHeader } from "./ui/card"; 3 2 import { Avatar, AvatarFallback, AvatarImage } from "./ui/avatar"; 4 3 import { Link } from "@tanstack/react-router"; 5 - import { Clock, ListOrdered, Utensils } from "lucide-react"; 4 + import { Clock, ListOrdered, Users, Utensils } from "lucide-react"; 5 + import { BlueRecipesFeedGetRecipes } from "@cookware/lexicons"; 6 6 7 7 type RecipeCardProps = { 8 - recipe: BlueRecipesFeedGetRecipes.Result; 8 + recipe: BlueRecipesFeedGetRecipes.$output['recipes'][0]; 9 9 }; 10 10 11 11 function truncateDescription(description: string, maxLength: number = 120) { ··· 18 18 <Link to="/recipes/$author/$rkey" params={{ author: recipe.author.handle, rkey: recipe.rkey }} className="w-full"> 19 19 <Card className="overflow-hidden"> 20 20 <CardHeader className="p-0"> 21 - <div className="relative h-48 w-full"> 22 - <img 23 - src={"https://www.foodandwine.com/thmb/fjNakOY7IcuvZac1hR3JcSo7vzI=/1500x0/filters:no_upscale():max_bytes(150000):strip_icc()/FAW-recipes-pasta-sausage-basil-and-mustard-hero-06-cfd1c0a2989e474ea7e574a38182bbee.jpg"} 24 - alt={recipe.title} 25 - className="h-full w-full object-cover" 26 - /> 27 - </div> 21 + { recipe.record.image && 22 + <div className="relative h-48 w-full"> 23 + <img 24 + src={recipe.imageUrl} 25 + alt={recipe.record.title} 26 + className="h-full w-full object-cover" 27 + /> 28 + </div> 29 + } 28 30 </CardHeader> 29 31 <CardContent className="p-4"> 30 - <h3 className="text-lg font-semibold mb-2">{recipe.title}</h3> 32 + <h3 className="text-lg font-semibold mb-2">{recipe.record.title}</h3> 31 33 <p className="text-sm text-muted-foreground mb-4"> 32 - {truncateDescription(recipe.description || '')} 34 + {truncateDescription(recipe.record.description || '')} 33 35 </p> 34 36 </CardContent> 35 37 <CardFooter className="p-4 pt-0"> 36 38 <div className="w-full flex items-center justify-between"> 37 39 <div className="flex items-center"> 38 40 <Avatar className="h-8 w-8 mr-2"> 39 - <AvatarImage src={recipe.author.avatarUrl} alt={recipe.author.displayName} /> 41 + <AvatarImage src={recipe.author.avatar} alt={recipe.author.displayName} /> 40 42 <AvatarFallback className="rounded-lg">{recipe.author.displayName?.charAt(0)}</AvatarFallback> 41 43 </Avatar> 42 44 <span className="text-sm text-muted-foreground">{recipe.author.displayName}</span> ··· 44 46 <div className="flex gap-6 justify-between items-center text-sm text-muted-foreground"> 45 47 <div className="flex items-center"> 46 48 <Utensils className="w-4 h-4 mr-1" /> 47 - <span>{recipe.ingredients}</span> 49 + <span>{recipe.record.ingredients.length}</span> 48 50 </div> 49 51 50 52 <div className="flex items-center"> 51 53 <ListOrdered className="w-4 h-4 mr-1" /> 52 - <span>{recipe.steps}</span> 54 + <span>{recipe.record.steps.length}</span> 55 + </div> 56 + 57 + <div className="flex items-center"> 58 + <Users className="w-4 h-4 mr-1" /> 59 + <span>{recipe.record.serves}</span> 53 60 </div> 54 61 55 62 <div className="flex items-center"> 56 63 <Clock className="w-4 h-4 mr-1" /> 57 - <span>{recipe.time} min</span> 64 + <span>{recipe.record.time} min</span> 58 65 </div> 59 66 </div> 60 67 </div>
+7 -5
apps/web/src/components/sidebar-title.tsx
··· 4 4 SidebarMenu, 5 5 SidebarMenuItem, 6 6 } from "@/components/ui/sidebar" 7 + import { ModeToggle } from "./mode-toggle" 7 8 8 9 export function SidebarTitle() { 9 10 return ( 10 11 <SidebarMenu> 11 12 <SidebarMenuItem> 12 - <div className="flex items-center gap-2 p-2"> 13 - <div className="flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground"> 14 - <CookingPot className="size-4" /> 15 - </div> 16 - <span className="font-semibold text-sm flex-1 text-left leading-tight">Recipes</span> 13 + <div className="flex aspect-square size-8 items-center justify-center rounded-lg bg-sidebar-primary text-sidebar-primary-foreground"> 14 + <CookingPot className="size-4" /> 17 15 </div> 16 + <div className="flex flex-col gap-0.5 leading-none"> 17 + <span className="font-semibold">Recipes</span> 18 + </div> 19 + <ModeToggle /> 18 20 </SidebarMenuItem> 19 21 </SidebarMenu> 20 22 )
+73
apps/web/src/components/theme-provider.tsx
··· 1 + import { createContext, useContext, useEffect, useState } from "react" 2 + 3 + type Theme = "dark" | "light" | "system" 4 + 5 + type ThemeProviderProps = { 6 + children: React.ReactNode 7 + defaultTheme?: Theme 8 + storageKey?: string 9 + } 10 + 11 + type ThemeProviderState = { 12 + theme: Theme 13 + setTheme: (theme: Theme) => void 14 + } 15 + 16 + const initialState: ThemeProviderState = { 17 + theme: "system", 18 + setTheme: () => null, 19 + } 20 + 21 + const ThemeProviderContext = createContext<ThemeProviderState>(initialState) 22 + 23 + export function ThemeProvider({ 24 + children, 25 + defaultTheme = "system", 26 + storageKey = "vite-ui-theme", 27 + ...props 28 + }: ThemeProviderProps) { 29 + const [theme, setTheme] = useState<Theme>( 30 + () => (localStorage.getItem(storageKey) as Theme) || defaultTheme 31 + ) 32 + 33 + useEffect(() => { 34 + const root = window.document.documentElement 35 + 36 + root.classList.remove("light", "dark") 37 + 38 + if (theme === "system") { 39 + const systemTheme = window.matchMedia("(prefers-color-scheme: dark)") 40 + .matches 41 + ? "dark" 42 + : "light" 43 + 44 + root.classList.add(systemTheme) 45 + return 46 + } 47 + 48 + root.classList.add(theme) 49 + }, [theme]) 50 + 51 + const value = { 52 + theme, 53 + setTheme: (theme: Theme) => { 54 + localStorage.setItem(storageKey, theme) 55 + setTheme(theme) 56 + }, 57 + } 58 + 59 + return ( 60 + <ThemeProviderContext.Provider {...props} value={value}> 61 + {children} 62 + </ThemeProviderContext.Provider> 63 + ) 64 + } 65 + 66 + export const useTheme = () => { 67 + const context = useContext(ThemeProviderContext) 68 + 69 + if (context === undefined) 70 + throw new Error("useTheme must be used within a ThemeProvider") 71 + 72 + return context 73 + }
+242
apps/web/src/components/ui/field.tsx
··· 1 + import { useMemo } from "react" 2 + import { cva, type VariantProps } from "class-variance-authority" 3 + 4 + import { cn } from "@/lib/utils" 5 + import { Label } from "@/components/ui/label" 6 + import { Separator } from "@/components/ui/separator" 7 + 8 + function FieldSet({ className, ...props }: React.ComponentProps<"fieldset">) { 9 + return ( 10 + <fieldset 11 + data-slot="field-set" 12 + className={cn( 13 + "flex flex-col gap-6", 14 + "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", 15 + className 16 + )} 17 + {...props} 18 + /> 19 + ) 20 + } 21 + 22 + function FieldLegend({ 23 + className, 24 + variant = "legend", 25 + ...props 26 + }: React.ComponentProps<"legend"> & { variant?: "legend" | "label" }) { 27 + return ( 28 + <legend 29 + data-slot="field-legend" 30 + data-variant={variant} 31 + className={cn( 32 + "mb-3 font-medium", 33 + "data-[variant=legend]:text-base", 34 + "data-[variant=label]:text-sm", 35 + className 36 + )} 37 + {...props} 38 + /> 39 + ) 40 + } 41 + 42 + function FieldGroup({ className, ...props }: React.ComponentProps<"div">) { 43 + return ( 44 + <div 45 + data-slot="field-group" 46 + className={cn( 47 + "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", 48 + className 49 + )} 50 + {...props} 51 + /> 52 + ) 53 + } 54 + 55 + const fieldVariants = cva( 56 + "group/field data-[invalid=true]:text-destructive flex w-full gap-3", 57 + { 58 + variants: { 59 + orientation: { 60 + vertical: ["flex-col [&>*]:w-full [&>.sr-only]:w-auto"], 61 + horizontal: [ 62 + "flex-row items-center", 63 + "[&>[data-slot=field-label]]:flex-auto", 64 + "has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start", 65 + ], 66 + responsive: [ 67 + "@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto", 68 + "@md/field-group:[&>[data-slot=field-label]]:flex-auto", 69 + "@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px", 70 + ], 71 + }, 72 + }, 73 + defaultVariants: { 74 + orientation: "vertical", 75 + }, 76 + } 77 + ) 78 + 79 + function Field({ 80 + className, 81 + orientation = "vertical", 82 + ...props 83 + }: React.ComponentProps<"div"> & VariantProps<typeof fieldVariants>) { 84 + return ( 85 + <div 86 + role="group" 87 + data-slot="field" 88 + data-orientation={orientation} 89 + className={cn(fieldVariants({ orientation }), className)} 90 + {...props} 91 + /> 92 + ) 93 + } 94 + 95 + function FieldContent({ className, ...props }: React.ComponentProps<"div">) { 96 + return ( 97 + <div 98 + data-slot="field-content" 99 + className={cn( 100 + "group/field-content flex flex-1 flex-col gap-1.5 leading-snug", 101 + className 102 + )} 103 + {...props} 104 + /> 105 + ) 106 + } 107 + 108 + function FieldLabel({ 109 + className, 110 + ...props 111 + }: React.ComponentProps<typeof Label>) { 112 + return ( 113 + <Label 114 + data-slot="field-label" 115 + className={cn( 116 + "group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50", 117 + "has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4", 118 + "has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10", 119 + className 120 + )} 121 + {...props} 122 + /> 123 + ) 124 + } 125 + 126 + function FieldTitle({ className, ...props }: React.ComponentProps<"div">) { 127 + return ( 128 + <div 129 + data-slot="field-label" 130 + className={cn( 131 + "flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50", 132 + className 133 + )} 134 + {...props} 135 + /> 136 + ) 137 + } 138 + 139 + function FieldDescription({ className, ...props }: React.ComponentProps<"p">) { 140 + return ( 141 + <p 142 + data-slot="field-description" 143 + className={cn( 144 + "text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance", 145 + "nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5", 146 + "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", 147 + className 148 + )} 149 + {...props} 150 + /> 151 + ) 152 + } 153 + 154 + function FieldSeparator({ 155 + children, 156 + className, 157 + ...props 158 + }: React.ComponentProps<"div"> & { 159 + children?: React.ReactNode 160 + }) { 161 + return ( 162 + <div 163 + data-slot="field-separator" 164 + data-content={!!children} 165 + className={cn( 166 + "relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2", 167 + className 168 + )} 169 + {...props} 170 + > 171 + <Separator className="absolute inset-0 top-1/2" /> 172 + {children && ( 173 + <span 174 + className="bg-background text-muted-foreground relative mx-auto block w-fit px-2" 175 + data-slot="field-separator-content" 176 + > 177 + {children} 178 + </span> 179 + )} 180 + </div> 181 + ) 182 + } 183 + 184 + function FieldError({ 185 + className, 186 + children, 187 + errors, 188 + ...props 189 + }: React.ComponentProps<"div"> & { 190 + errors?: Array<{ message?: string } | undefined> 191 + }) { 192 + const content = useMemo(() => { 193 + if (children) { 194 + return children 195 + } 196 + 197 + if (!errors) { 198 + return null 199 + } 200 + 201 + if (errors?.length === 1 && errors[0]?.message) { 202 + return errors[0].message 203 + } 204 + 205 + return ( 206 + <ul className="ml-4 flex list-disc flex-col gap-1"> 207 + {errors.map( 208 + (error, index) => 209 + error?.message && <li key={index}>{error.message}</li> 210 + )} 211 + </ul> 212 + ) 213 + }, [children, errors]) 214 + 215 + if (!content) { 216 + return null 217 + } 218 + 219 + return ( 220 + <div 221 + role="alert" 222 + data-slot="field-error" 223 + className={cn("text-destructive text-sm font-normal", className)} 224 + {...props} 225 + > 226 + {content} 227 + </div> 228 + ) 229 + } 230 + 231 + export { 232 + Field, 233 + FieldLabel, 234 + FieldDescription, 235 + FieldError, 236 + FieldGroup, 237 + FieldLegend, 238 + FieldSeparator, 239 + FieldSet, 240 + FieldContent, 241 + FieldTitle, 242 + }
+2
apps/web/src/components/ui/separator.tsx
··· 1 + "use client" 2 + 1 3 import * as React from "react" 2 4 import * as SeparatorPrimitive from "@radix-ui/react-separator" 3 5
+4 -17
apps/web/src/hooks/use-xrpc.tsx
··· 1 - import { SERVER_URL } from "@/lib/utils"; 2 - import { useAuth } from "@/state/auth"; 3 - import { CredentialManager, XRPC } from "@atcute/client" 1 + import { useClient } from "@/state/auth"; 4 2 3 + /** @deprecated Use `useClient` from `state/auth/client` instead. */ 5 4 export function useXrpc() { 6 - const { agent } = useAuth(); 7 - 8 - if (agent) { 9 - return new XRPC({ 10 - handler: agent, 11 - proxy: { 12 - type: 'api', 13 - service: `did:web:${SERVER_URL}`, 14 - }, 15 - }); 16 - } 17 - 18 - const creds = new CredentialManager({ service: `http://${SERVER_URL}` }); 19 - return new XRPC({ handler: creds }); 5 + const client = useClient(); 6 + return client; 20 7 }
+14 -14
apps/web/src/index.css
··· 45 45 --card-foreground: 0 0% 98%; 46 46 --popover: 0 0% 3.9%; 47 47 --popover-foreground: 0 0% 98%; 48 - --primary: 0 72.2% 50.6%; 49 - --primary-foreground: 0 85.7% 97.3%; 50 - --secondary: 0 0% 14.9%; 51 - --secondary-foreground: 0 0% 98%; 52 - --muted: 0 0% 14.9%; 53 - --muted-foreground: 0 0% 63.9%; 54 - --accent: 0 0% 14.9%; 55 - --accent-foreground: 0 0% 98%; 48 + --primary: 217.2 91.2% 59.8%; 49 + --primary-foreground: 222.2 47.4% 11.2%; 50 + --secondary: 217.2 32.6% 17.5%; 51 + --secondary-foreground: 210 40% 98%; 52 + --muted: 217.2 32.6% 17.5%; 53 + --muted-foreground: 215 20.2% 65.1%; 54 + --accent: 217.2 32.6% 17.5%; 55 + --accent-foreground: 210 40% 98%; 56 56 --destructive: 0 62.8% 30.6%; 57 - --destructive-foreground: 0 0% 98%; 58 - --border: 0 0% 14.9%; 59 - --input: 0 0% 14.9%; 60 - --ring: 0 72.2% 50.6%; 57 + --destructive-foreground: 210 40% 98%; 58 + --border: 217.2 32.6% 17.5%; 59 + --input: 217.2 32.6% 17.5%; 60 + --ring: 224.3 76.3% 48%; 61 61 --chart-1: 220 70% 50%; 62 62 --chart-2: 160 60% 45%; 63 63 --chart-3: 30 80% 55%; ··· 65 65 --chart-5: 340 75% 55%; 66 66 --sidebar-background: 240 5.9% 10%; 67 67 --sidebar-foreground: 240 4.8% 95.9%; 68 - --sidebar-primary: 224.3 76.3% 48%; 68 + --sidebar-primary: 217.2 91.2% 59.8%; 69 69 --sidebar-primary-foreground: 0 0% 100%; 70 - --sidebar-accent: 240 3.7% 15.9%; 70 + --sidebar-accent: 217.2 32.6% 17.5%; 71 71 --sidebar-accent-foreground: 240 4.8% 95.9%; 72 72 --sidebar-border: 240 3.7% 15.9%; 73 73 --sidebar-ring: 217.2 91.2% 59.8%;
+30 -12
apps/web/src/main.tsx
··· 4 4 import { createRouter, RouterProvider } from '@tanstack/react-router'; 5 5 import { QueryClientProvider, QueryClient } from '@tanstack/react-query' 6 6 import { ReactQueryDevtools } from '@tanstack/react-query-devtools' 7 - import { configureOAuth } from '@atcute/oauth-browser-client'; 7 + import { configureOAuth, defaultIdentityResolver } from '@atcute/oauth-browser-client'; 8 8 import './index.css' 9 - import { AuthProvider, useAuth } from './state/auth'; 9 + import { ThemeProvider } from './components/theme-provider'; 10 + import { CompositeDidDocumentResolver, PlcDidDocumentResolver, WebDidDocumentResolver, XrpcHandleResolver } from '@atcute/identity-resolver'; 11 + import { SessionProvider, useSession } from './state/auth/session'; 12 + import { ClientProvider, useClient } from './state/auth'; 10 13 11 14 const router = createRouter({ 12 15 routeTree, 13 16 context: { 14 - auth: undefined!, 17 + session: undefined!, 18 + client: undefined!, 15 19 }, 16 20 }); 17 21 ··· 24 28 configureOAuth({ 25 29 metadata: { 26 30 client_id: import.meta.env.VITE_OAUTH_CLIENT_ID, 27 - redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URL, 31 + redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URI, 28 32 }, 33 + identityResolver: defaultIdentityResolver({ 34 + handleResolver: new XrpcHandleResolver({ serviceUrl: 'https://slingshot.microcosm.blue' }), 35 + didDocumentResolver: new CompositeDidDocumentResolver({ 36 + methods: { 37 + plc: new PlcDidDocumentResolver(), 38 + web: new WebDidDocumentResolver(), 39 + }, 40 + }), 41 + }), 29 42 }); 30 43 31 44 const queryClient = new QueryClient({ ··· 39 52 }); 40 53 41 54 const InnerApp = () => { 42 - const auth = useAuth(); 43 - return <RouterProvider router={router} context={{ auth }} /> 55 + const session = useSession(); 56 + const client = useClient(); 57 + return <RouterProvider router={router} context={{ session, client }} /> 44 58 }; 45 59 46 60 createRoot(document.getElementById('root')!).render( 47 61 <StrictMode> 48 - <AuthProvider> 49 - <QueryClientProvider client={queryClient}> 50 - <InnerApp /> 51 - <ReactQueryDevtools initialIsOpen={false} /> 52 - </QueryClientProvider> 53 - </AuthProvider> 62 + <SessionProvider> 63 + <ClientProvider> 64 + <ThemeProvider defaultTheme="dark" storageKey="recipes-theme"> 65 + <QueryClientProvider client={queryClient}> 66 + <InnerApp /> 67 + <ReactQueryDevtools initialIsOpen={false} /> 68 + </QueryClientProvider> 69 + </ThemeProvider> 70 + </ClientProvider> 71 + </SessionProvider> 54 72 </StrictMode>, 55 73 )
+58 -30
apps/web/src/queries/recipe.ts
··· 1 - import { useXrpc } from "@/hooks/use-xrpc"; 2 - import { useAuth } from "@/state/auth"; 3 - import { XRPC, XRPCError } from "@atcute/client"; 4 - import { Recipe, RecipeCollection } from "@cookware/lexicons"; 5 1 import { queryOptions, useMutation, useQuery } from "@tanstack/react-query"; 2 + import { Client } from "@atcute/client"; 6 3 import { notFound } from "@tanstack/react-router"; 7 4 import { UseFormReturn } from "react-hook-form"; 8 5 import { TID } from '@atproto/common-web'; 6 + import { z } from "zod"; 7 + import { ActorIdentifier, Did } from "@atcute/lexicons"; 8 + 9 + import type {} from '@atcute/atproto'; 10 + import type {} from '@cookware/lexicons'; 11 + import { useClient } from "../state/auth/client"; 9 12 10 13 const RQKEY_ROOT = 'posts'; 11 14 export const RQKEY = (cursor: string, did: string, rkey: string) => [RQKEY_ROOT, cursor, did, rkey]; 12 15 13 - export const useRecipesQuery = (cursor: string, did?: string) => { 14 - const rpc = useXrpc(); 16 + export const useRecipesQuery = (cursor: string, did?: Did) => { 17 + const client = useClient(); 15 18 return useQuery({ 16 19 queryKey: RQKEY(cursor, did ?? '', ''), 17 20 queryFn: async () => { 18 - const res = await rpc.get('blue.recipes.feed.getRecipes', { 21 + const res = await client.get('blue.recipes.feed.getRecipes', { 19 22 params: { cursor, did }, 20 23 }); 24 + if (!res.ok) throw res.data; 21 25 return res.data; 22 26 }, 23 27 }); 24 28 }; 25 29 26 - export const recipeQueryOptions = (rpc: XRPC, did: string, rkey: string) => { 30 + export const recipeQueryOptions = (rpc: Client, actor: ActorIdentifier, rkey: string) => { 27 31 return queryOptions({ 28 - queryKey: RQKEY('', did, rkey), 32 + queryKey: RQKEY('', actor, rkey), 29 33 queryFn: async () => { 30 - try { 31 - const res = await rpc.get('blue.recipes.feed.getRecipe', { 32 - params: { did, rkey }, 34 + const { ok, data } = await rpc.get('blue.recipes.feed.getRecipe', { 35 + params: { uris: [`at://${actor}/blue.recipes.feed.recipe/${rkey}`] }, 33 36 }); 34 - return res.data; 35 - } catch (err) { 36 - if (err instanceof XRPCError && err.kind && err.kind == 'not_found') { 37 - throw notFound({ routeId: '/_' }); 37 + 38 + if (!ok) { 39 + switch (data.error) { 40 + case 'RecipeNotFound': 41 + throw notFound({ routeId: '/_' }); 42 + default: 43 + throw new Error(`Error fetching recipe: ${data.error}`); 38 44 } 39 - throw err; 40 45 } 46 + 47 + return data; 41 48 }, 42 49 }); 43 50 }; 44 51 45 - export const useRecipeQuery = (did: string, rkey: string) => { 46 - const rpc = useXrpc(); 52 + export const useRecipeQuery = (did: Did, rkey: string) => { 53 + const rpc = useClient(); 47 54 return useQuery(recipeQueryOptions(rpc, did, rkey)); 48 55 }; 49 56 50 - export const useNewRecipeMutation = (form: UseFormReturn<Recipe>) => { 51 - const { agent } = useAuth(); 52 - const rpc = useXrpc(); 57 + export const useNewRecipeMutation = (form: UseFormReturn<z.infer<typeof recipeSchema>>) => { 58 + const rpc = useClient(); 53 59 return useMutation({ 54 60 mutationKey: ['recipes.new'], 55 - mutationFn: async ({ recipe }: { recipe: Recipe }) => { 61 + mutationFn: async ({ recipe: { image, ...recipe } }: { recipe: z.infer<typeof recipeSchema> }) => { 62 + let recipeImg = null; 63 + if (image) { 64 + const imageFile = image.item(0) as File; 65 + const { ok, data } = await rpc.post('com.atproto.repo.uploadBlob', { 66 + input: imageFile, 67 + }); 68 + 69 + if (!ok) { 70 + throw new Error(`Image upload failed: ${data.error}`); 71 + } 72 + 73 + recipeImg = data.blob; 74 + } 75 + 56 76 const rkey = TID.nextStr(); 57 - const res = await rpc.call(`com.atproto.repo.createRecord`, { 58 - data: { 59 - repo: agent?.session.info.sub as `did:${string}`, 60 - record: recipe, 61 - collection: RecipeCollection, 77 + const { ok, data } = await rpc.post(`com.atproto.repo.createRecord`, { 78 + input: { 79 + repo: agent?.session.info.sub as ActorIdentifier, 80 + record: { 81 + ...recipe, 82 + image: recipeImg, 83 + }, 84 + collection: 'blue.recipes.feed.recipe', 62 85 rkey: rkey, 63 - }, 86 + } 64 87 }); 88 + 89 + if (!ok) { 90 + throw new Error(`Recipe creation failed: ${data.error}`); 91 + } 92 + 65 93 return { 66 94 rkey: rkey, 67 - resp: res.data 95 + resp: data, 68 96 }; 69 97 }, 70 98 onError: (error) => {
+7 -11
apps/web/src/queries/self.ts
··· 1 - import { useXrpc } from "@/hooks/use-xrpc"; 2 - import { useAuth } from "@/state/auth"; 3 - import { AppBskyActorProfile } from "@atcute/client/lexicons"; 4 - import { At } from "@atcute/client/lexicons"; 1 + import { useClient, useSession } from "@/state/auth"; 2 + import { BlueRecipesActorDefs } from "@cookware/lexicons"; 5 3 import { useQuery } from "@tanstack/react-query"; 6 4 7 5 export const useUserQuery = () => { 8 - const { isLoggedIn, agent } = useAuth(); 9 - const rpc = useXrpc(); 6 + const { isLoggedIn, agent } = useSession(); 7 + const rpc = useClient(); 10 8 11 9 return useQuery({ 12 10 queryKey: ['self'], 13 11 queryFn: async () => { 14 - const res = await rpc.get('com.atproto.repo.getRecord', { 12 + const res = await rpc.get('blue.recipes.actor.getProfile', { 15 13 params: { 16 - repo: agent?.sub as At.DID, 17 - collection: 'app.bsky.actor.profile', 18 - rkey: 'self', 14 + actor: agent?.sub! 19 15 }, 20 16 }); 21 17 22 - return res.data.value as AppBskyActorProfile.Record; 18 + return res.data as BlueRecipesActorDefs.ProfileViewDetailed; 23 19 }, 24 20 enabled: isLoggedIn, 25 21 });
+92 -156
apps/web/src/routeTree.gen.ts
··· 10 10 11 11 import { createFileRoute } from '@tanstack/react-router' 12 12 13 - // Import Routes 14 - 15 - import { Route as rootRoute } from './routes/__root' 16 - import { Route as Import } from './routes/_' 17 - import { Route as authLoginImport } from './routes/_.(auth)/login' 18 - import { Route as appRecipesNewImport } from './routes/_.(app)/recipes/new' 19 - 20 - // Create Virtual Routes 13 + import { Route as rootRouteImport } from './routes/__root' 14 + import { Route as RouteImport } from './routes/_' 15 + import { Route as authLoginRouteImport } from './routes/_.(auth)/login' 16 + import { Route as appRecipesNewRouteImport } from './routes/_.(app)/recipes/new' 21 17 22 - const appIndexLazyImport = createFileRoute('/_/(app)/')() 23 - const appRecipesAuthorIndexLazyImport = createFileRoute( 18 + const appIndexLazyRouteImport = createFileRoute('/_/(app)/')() 19 + const appRecipesAuthorIndexLazyRouteImport = createFileRoute( 24 20 '/_/(app)/recipes/$author/', 25 21 )() 26 - const appRecipesAuthorRkeyIndexLazyImport = createFileRoute( 22 + const appRecipesAuthorRkeyIndexLazyRouteImport = createFileRoute( 27 23 '/_/(app)/recipes/$author/$rkey/', 28 24 )() 29 25 30 - // Create/Update Routes 31 - 32 - const Route = Import.update({ 26 + const Route = RouteImport.update({ 33 27 id: '/_', 34 - getParentRoute: () => rootRoute, 28 + getParentRoute: () => rootRouteImport, 35 29 } as any) 36 - 37 - const appIndexLazyRoute = appIndexLazyImport 30 + const appIndexLazyRoute = appIndexLazyRouteImport 38 31 .update({ 39 32 id: '/(app)/', 40 33 path: '/', 41 34 getParentRoute: () => Route, 42 35 } as any) 43 36 .lazy(() => import('./routes/_.(app)/index.lazy').then((d) => d.Route)) 44 - 45 - const authLoginRoute = authLoginImport.update({ 37 + const authLoginRoute = authLoginRouteImport.update({ 46 38 id: '/(auth)/login', 47 39 path: '/login', 48 40 getParentRoute: () => Route, 49 41 } as any) 50 - 51 - const appRecipesNewRoute = appRecipesNewImport.update({ 42 + const appRecipesNewRoute = appRecipesNewRouteImport.update({ 52 43 id: '/(app)/recipes/new', 53 44 path: '/recipes/new', 54 45 getParentRoute: () => Route, 55 46 } as any) 56 - 57 - const appRecipesAuthorIndexLazyRoute = appRecipesAuthorIndexLazyImport 47 + const appRecipesAuthorIndexLazyRoute = appRecipesAuthorIndexLazyRouteImport 58 48 .update({ 59 49 id: '/(app)/recipes/$author/', 60 50 path: '/recipes/$author/', ··· 63 53 .lazy(() => 64 54 import('./routes/_.(app)/recipes/$author/index.lazy').then((d) => d.Route), 65 55 ) 66 - 67 - const appRecipesAuthorRkeyIndexLazyRoute = appRecipesAuthorRkeyIndexLazyImport 68 - .update({ 69 - id: '/(app)/recipes/$author/$rkey/', 70 - path: '/recipes/$author/$rkey/', 71 - getParentRoute: () => Route, 72 - } as any) 73 - .lazy(() => 74 - import('./routes/_.(app)/recipes/$author/$rkey/index.lazy').then( 75 - (d) => d.Route, 76 - ), 77 - ) 78 - 79 - // Populate the FileRoutesByPath interface 80 - 81 - declare module '@tanstack/react-router' { 82 - interface FileRoutesByPath { 83 - '/_': { 84 - id: '/_' 85 - path: '' 86 - fullPath: '' 87 - preLoaderRoute: typeof Import 88 - parentRoute: typeof rootRoute 89 - } 90 - '/_/(auth)/login': { 91 - id: '/_/(auth)/login' 92 - path: '/login' 93 - fullPath: '/login' 94 - preLoaderRoute: typeof authLoginImport 95 - parentRoute: typeof rootRoute 96 - } 97 - '/_/(app)/': { 98 - id: '/_/(app)/' 99 - path: '/' 100 - fullPath: '/' 101 - preLoaderRoute: typeof appIndexLazyImport 102 - parentRoute: typeof rootRoute 103 - } 104 - '/_/(app)/recipes/new': { 105 - id: '/_/(app)/recipes/new' 106 - path: '/recipes/new' 107 - fullPath: '/recipes/new' 108 - preLoaderRoute: typeof appRecipesNewImport 109 - parentRoute: typeof rootRoute 110 - } 111 - '/_/(app)/recipes/$author/': { 112 - id: '/_/(app)/recipes/$author/' 113 - path: '/recipes/$author' 114 - fullPath: '/recipes/$author' 115 - preLoaderRoute: typeof appRecipesAuthorIndexLazyImport 116 - parentRoute: typeof rootRoute 117 - } 118 - '/_/(app)/recipes/$author/$rkey/': { 119 - id: '/_/(app)/recipes/$author/$rkey/' 120 - path: '/recipes/$author/$rkey' 121 - fullPath: '/recipes/$author/$rkey' 122 - preLoaderRoute: typeof appRecipesAuthorRkeyIndexLazyImport 123 - parentRoute: typeof rootRoute 124 - } 125 - } 126 - } 127 - 128 - // Create and export the route tree 129 - 130 - interface RouteChildren { 131 - authLoginRoute: typeof authLoginRoute 132 - appIndexLazyRoute: typeof appIndexLazyRoute 133 - appRecipesNewRoute: typeof appRecipesNewRoute 134 - appRecipesAuthorIndexLazyRoute: typeof appRecipesAuthorIndexLazyRoute 135 - appRecipesAuthorRkeyIndexLazyRoute: typeof appRecipesAuthorRkeyIndexLazyRoute 136 - } 137 - 138 - const RouteChildren: RouteChildren = { 139 - authLoginRoute: authLoginRoute, 140 - appIndexLazyRoute: appIndexLazyRoute, 141 - appRecipesNewRoute: appRecipesNewRoute, 142 - appRecipesAuthorIndexLazyRoute: appRecipesAuthorIndexLazyRoute, 143 - appRecipesAuthorRkeyIndexLazyRoute: appRecipesAuthorRkeyIndexLazyRoute, 144 - } 145 - 146 - const RouteWithChildren = Route._addFileChildren(RouteChildren) 56 + const appRecipesAuthorRkeyIndexLazyRoute = 57 + appRecipesAuthorRkeyIndexLazyRouteImport 58 + .update({ 59 + id: '/(app)/recipes/$author/$rkey/', 60 + path: '/recipes/$author/$rkey/', 61 + getParentRoute: () => Route, 62 + } as any) 63 + .lazy(() => 64 + import('./routes/_.(app)/recipes/$author/$rkey/index.lazy').then( 65 + (d) => d.Route, 66 + ), 67 + ) 147 68 148 69 export interface FileRoutesByFullPath { 149 - '': typeof RouteWithChildren 150 70 '/login': typeof authLoginRoute 151 71 '/': typeof appIndexLazyRoute 152 72 '/recipes/new': typeof appRecipesNewRoute 153 73 '/recipes/$author': typeof appRecipesAuthorIndexLazyRoute 154 74 '/recipes/$author/$rkey': typeof appRecipesAuthorRkeyIndexLazyRoute 155 75 } 156 - 157 76 export interface FileRoutesByTo { 158 77 '/login': typeof authLoginRoute 159 78 '/': typeof appIndexLazyRoute ··· 161 80 '/recipes/$author': typeof appRecipesAuthorIndexLazyRoute 162 81 '/recipes/$author/$rkey': typeof appRecipesAuthorRkeyIndexLazyRoute 163 82 } 164 - 165 83 export interface FileRoutesById { 166 - __root__: typeof rootRoute 84 + __root__: typeof rootRouteImport 167 85 '/_': typeof RouteWithChildren 168 86 '/_/(auth)/login': typeof authLoginRoute 169 87 '/_/(app)/': typeof appIndexLazyRoute ··· 171 89 '/_/(app)/recipes/$author/': typeof appRecipesAuthorIndexLazyRoute 172 90 '/_/(app)/recipes/$author/$rkey/': typeof appRecipesAuthorRkeyIndexLazyRoute 173 91 } 174 - 175 92 export interface FileRouteTypes { 176 93 fileRoutesByFullPath: FileRoutesByFullPath 177 94 fullPaths: 178 - | '' 179 95 | '/login' 180 96 | '/' 181 97 | '/recipes/new' ··· 198 114 | '/_/(app)/recipes/$author/$rkey/' 199 115 fileRoutesById: FileRoutesById 200 116 } 201 - 202 117 export interface RootRouteChildren { 203 118 Route: typeof RouteWithChildren 204 119 } 205 120 121 + declare module '@tanstack/react-router' { 122 + interface FileRoutesByPath { 123 + '/_': { 124 + id: '/_' 125 + path: '' 126 + fullPath: '' 127 + preLoaderRoute: typeof RouteImport 128 + parentRoute: typeof rootRouteImport 129 + } 130 + '/_/(app)/': { 131 + id: '/_/(app)/' 132 + path: '/' 133 + fullPath: '/' 134 + preLoaderRoute: typeof appIndexLazyRouteImport 135 + parentRoute: typeof Route 136 + } 137 + '/_/(auth)/login': { 138 + id: '/_/(auth)/login' 139 + path: '/login' 140 + fullPath: '/login' 141 + preLoaderRoute: typeof authLoginRouteImport 142 + parentRoute: typeof Route 143 + } 144 + '/_/(app)/recipes/new': { 145 + id: '/_/(app)/recipes/new' 146 + path: '/recipes/new' 147 + fullPath: '/recipes/new' 148 + preLoaderRoute: typeof appRecipesNewRouteImport 149 + parentRoute: typeof Route 150 + } 151 + '/_/(app)/recipes/$author/': { 152 + id: '/_/(app)/recipes/$author/' 153 + path: '/recipes/$author' 154 + fullPath: '/recipes/$author' 155 + preLoaderRoute: typeof appRecipesAuthorIndexLazyRouteImport 156 + parentRoute: typeof Route 157 + } 158 + '/_/(app)/recipes/$author/$rkey/': { 159 + id: '/_/(app)/recipes/$author/$rkey/' 160 + path: '/recipes/$author/$rkey' 161 + fullPath: '/recipes/$author/$rkey' 162 + preLoaderRoute: typeof appRecipesAuthorRkeyIndexLazyRouteImport 163 + parentRoute: typeof Route 164 + } 165 + } 166 + } 167 + 168 + interface RouteChildren { 169 + authLoginRoute: typeof authLoginRoute 170 + appIndexLazyRoute: typeof appIndexLazyRoute 171 + appRecipesNewRoute: typeof appRecipesNewRoute 172 + appRecipesAuthorIndexLazyRoute: typeof appRecipesAuthorIndexLazyRoute 173 + appRecipesAuthorRkeyIndexLazyRoute: typeof appRecipesAuthorRkeyIndexLazyRoute 174 + } 175 + 176 + const RouteChildren: RouteChildren = { 177 + authLoginRoute: authLoginRoute, 178 + appIndexLazyRoute: appIndexLazyRoute, 179 + appRecipesNewRoute: appRecipesNewRoute, 180 + appRecipesAuthorIndexLazyRoute: appRecipesAuthorIndexLazyRoute, 181 + appRecipesAuthorRkeyIndexLazyRoute: appRecipesAuthorRkeyIndexLazyRoute, 182 + } 183 + 184 + const RouteWithChildren = Route._addFileChildren(RouteChildren) 185 + 206 186 const rootRouteChildren: RootRouteChildren = { 207 187 Route: RouteWithChildren, 208 188 } 209 - 210 - export const routeTree = rootRoute 189 + export const routeTree = rootRouteImport 211 190 ._addFileChildren(rootRouteChildren) 212 191 ._addFileTypes<FileRouteTypes>() 213 - 214 - /* ROUTE_MANIFEST_START 215 - { 216 - "routes": { 217 - "__root__": { 218 - "filePath": "__root.tsx", 219 - "children": [ 220 - "/_" 221 - ] 222 - }, 223 - "/_": { 224 - "filePath": "_.tsx", 225 - "children": [ 226 - "/_/(auth)/login", 227 - "/_/(app)/", 228 - "/_/(app)/recipes/new", 229 - "/_/(app)/recipes/$author/", 230 - "/_/(app)/recipes/$author/$rkey/" 231 - ] 232 - }, 233 - "/_/(auth)/login": { 234 - "filePath": "_.(auth)/login.tsx", 235 - "parent": "/_" 236 - }, 237 - "/_/(app)/": { 238 - "filePath": "_.(app)/index.lazy.tsx", 239 - "parent": "/_" 240 - }, 241 - "/_/(app)/recipes/new": { 242 - "filePath": "_.(app)/recipes/new.tsx", 243 - "parent": "/_" 244 - }, 245 - "/_/(app)/recipes/$author/": { 246 - "filePath": "_.(app)/recipes/$author/index.lazy.tsx", 247 - "parent": "/_" 248 - }, 249 - "/_/(app)/recipes/$author/$rkey/": { 250 - "filePath": "_.(app)/recipes/$author/$rkey/index.lazy.tsx", 251 - "parent": "/_" 252 - } 253 - } 254 - } 255 - ROUTE_MANIFEST_END */
+3 -3
apps/web/src/routes/_.(app)/index.lazy.tsx
··· 30 30 <BreadcrumbList> 31 31 <BreadcrumbItem className="hidden md:block"> 32 32 <BreadcrumbLink asChild> 33 - <Link href="/">Community</Link> 33 + <Link to="/">Community</Link> 34 34 </BreadcrumbLink> 35 35 </BreadcrumbItem> 36 36 <BreadcrumbSeparator className="hidden md:block" /> ··· 48 48 <div className="flex-1 flex flex-col items-center p-4"> 49 49 <div className="flex flex-col gap-4 max-w-2xl w-full items-center"> 50 50 <QueryPlaceholder query={query} cards cardsCount={12}> 51 - {query.data?.recipes.map((recipe, idx) => ( 51 + {data => data.recipes.map(recipe => ( 52 52 <RecipeCard 53 53 recipe={recipe} 54 - key={idx} 54 + key={`${recipe.author.did}-${recipe.rkey}`} 55 55 /> 56 56 ))} 57 57 </QueryPlaceholder>
+66 -40
apps/web/src/routes/_.(app)/recipes/$author/$rkey/index.lazy.tsx
··· 9 9 } from '@/components/ui/breadcrumb' 10 10 import { Separator } from '@/components/ui/separator' 11 11 import { SidebarTrigger } from '@/components/ui/sidebar' 12 - import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' 12 + import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card' 13 13 import { recipeQueryOptions } from '@/queries/recipe' 14 14 import { useSuspenseQuery } from '@tanstack/react-query' 15 - import { useXrpc } from '@/hooks/use-xrpc' 15 + import { Badge } from '@/components/ui/badge' 16 + import { Clock, Users } from 'lucide-react' 17 + import { useClient, useSession } from '@/state/auth' 18 + import { Button } from '@/components/ui/button' 19 + import { ActorIdentifier } from '@atcute/lexicons' 16 20 17 21 export const Route = createLazyFileRoute('/_/(app)/recipes/$author/$rkey/')({ 18 22 component: RouteComponent, 19 23 }) 20 24 21 25 function RouteComponent() { 22 - const rpc = useXrpc(); 26 + const rpc = useClient(); 23 27 const { author, rkey } = Route.useParams() 24 28 const { 25 - data: { recipe }, 29 + data: { recipes }, 26 30 error, 27 - } = useSuspenseQuery(recipeQueryOptions(rpc, author, rkey)) 31 + } = useSuspenseQuery(recipeQueryOptions(rpc, author as ActorIdentifier, rkey)) 32 + const { isLoggedIn, agent } = useSession(); 28 33 29 - if (error) return <p>Error</p> 34 + if (error || !recipes[0]) return <p>Error</p> 30 35 31 36 return ( 32 37 <> ··· 50 55 <BreadcrumbSeparator className="hidden md:block" /> 51 56 <BreadcrumbItem className="hidden md:block"> 52 57 <BreadcrumbLink asChild> 53 - <Link to="/recipes/$author" params={{ author: recipe.author.handle }}> 54 - {recipe.author.displayName} 58 + <Link to="/recipes/$author" params={{ author: recipes[0].author.handle }}> 59 + {recipes[0].author.displayName} 55 60 </Link> 56 61 </BreadcrumbLink> 57 62 </BreadcrumbItem> 58 63 <BreadcrumbSeparator className="hidden md:block" /> 59 64 <BreadcrumbItem> 60 - <BreadcrumbPage>{recipe.title}</BreadcrumbPage> 65 + <BreadcrumbPage>{recipes[0].record.title}</BreadcrumbPage> 61 66 </BreadcrumbItem> 62 67 </BreadcrumbList> 63 68 </Breadcrumb> 64 69 </div> 65 70 </header> 66 71 <div className="flex flex-col gap-4 px-4 py-8 items-center max-w-2xl w-full mx-auto"> 67 - <p className="text-muted-foreground"> 68 - By {recipe.author.displayName} 69 - </p> 70 - <h1 className="scroll-m-20 text-4xl font-extrabold tracking-tight lg:text-5xl"> 71 - {recipe.title} 72 - </h1> 73 - <p className="leading-7 text-center"> 74 - {recipe.description} 75 - </p> 76 - </div> 77 - <div className="flex flex-1 flex-col gap-4 p-4 pt-0 w-full max-w-2xl items-center mx-auto"> 78 - <div className="grid gap-4 w-full"> 79 - <Card> 80 - <CardHeader> 81 - <CardTitle>Ingredients</CardTitle> 82 - </CardHeader> 83 - <CardContent> 84 - <ul className="flex flex-col"> 85 - {recipe.ingredients.map((ing, idx) => ( 72 + <Card className="w-full"> 73 + 74 + <CardHeader> 75 + <CardTitle className="text-3xl font-bold">{recipes[0].record.title}</CardTitle> 76 + <CardDescription>{recipes[0].record.description}</CardDescription> 77 + </CardHeader> 78 + 79 + <CardContent className="space-y-6"> 80 + { 81 + recipes[0].record.image && 82 + <img 83 + src={recipes[0].record.image.ref.$link} 84 + alt={recipes[0].record.title} 85 + className="h-64 w-full object-cover rounded-md" 86 + /> 87 + } 88 + <div className="flex flex-wrap gap-4"> 89 + <Badge variant="secondary" className="flex items-center gap-2"> 90 + <Clock className="size-4" /> 91 + <span>{recipes[0].record.time} mins</span> 92 + </Badge> 93 + <Badge variant="secondary" className="flex items-center gap-2"> 94 + <Users className="size-4" /> 95 + <span>Serves {recipes[0].record.serves ?? '1'}</span> 96 + </Badge> 97 + </div> 98 + 99 + <div> 100 + <h3 className="text-xl font-semibold mb-2">Ingredients</h3> 101 + <ul className="list-disc list-inside space-y-1"> 102 + {recipes[0].record.ingredients.map((ing, idx) => ( 86 103 <li key={idx}> 87 104 <b>{ing.amount}</b> {ing.name} 88 105 </li> 89 106 ))} 90 107 </ul> 91 - </CardContent> 92 - </Card> 93 - <Card> 94 - <CardHeader> 95 - <CardTitle>Steps</CardTitle> 96 - </CardHeader> 97 - <CardContent> 98 - <ol className="list-decimal gap-y-4 flex flex-col ml-4"> 99 - {recipe.steps.map((ing, idx) => ( 108 + </div> 109 + 110 + <div> 111 + <h3 className="text-xl font-semibold mb-2">Steps</h3> 112 + <ol className="list-decimal list-outside space-y-1 ml-4"> 113 + {recipes[0].record.steps.map((ing, idx) => ( 100 114 <li key={idx}>{ing.text}</li> 101 115 ))} 102 116 </ol> 103 - </CardContent> 104 - </Card> 105 - </div> 117 + </div> 118 + </CardContent> 119 + <CardFooter className="flex justify-between"> 120 + {(isLoggedIn && agent?.sub == recipes[0].author.did) && ( 121 + <div className="flex items-center gap-x-4"> 122 + <Button variant="outline">Edit</Button> 123 + <Button variant="destructive">Delete</Button> 124 + </div> 125 + )} 126 + 127 + <div className="flex items-center gap-x-4"> 128 + {/* TODO: share options */} 129 + </div> 130 + </CardFooter> 131 + </Card> 106 132 </div> 107 133 </> 108 134 )
+289 -304
apps/web/src/routes/_.(app)/recipes/new.tsx
··· 9 9 } from "@/components/ui/breadcrumb"; 10 10 import { Separator } from "@/components/ui/separator"; 11 11 import { SidebarTrigger } from "@/components/ui/sidebar"; 12 - import { useFieldArray, useForm } from "react-hook-form"; 13 - import { z } from "zod"; 14 - import { zodResolver } from "@hookform/resolvers/zod"; 15 - import { RecipeRecord } from "@cookware/lexicons"; 16 - import { 17 - Form, 18 - FormControl, 19 - FormDescription, 20 - FormField, 21 - FormItem, 22 - FormLabel, 23 - FormMessage, 24 - } from "@/components/ui/form"; 25 - import { Button } from "@/components/ui/button"; 26 - import { Input } from "@/components/ui/input"; 27 - import { Textarea } from "@/components/ui/textarea"; 28 - import { 29 - Card, 30 - CardContent, 31 - CardDescription, 32 - CardHeader, 33 - CardTitle, 34 - } from "@/components/ui/card"; 35 - import { 36 - Sortable, 37 - SortableDragHandle, 38 - SortableItem, 39 - } from "@/components/ui/sortable"; 40 - import { DragHandleDots2Icon } from "@radix-ui/react-icons"; 41 - import { Label } from "@/components/ui/label"; 42 - import { TrashIcon } from "lucide-react"; 43 - import { useNewRecipeMutation } from "@/queries/recipe"; 44 - import { useState } from "react"; 45 12 46 13 export const Route = createFileRoute("/_/(app)/recipes/new")({ 47 14 beforeLoad: async ({ context }) => { 48 - if (!context.auth.isLoggedIn) { 15 + if (!context.session.isLoggedIn) { 49 16 throw redirect({ 50 17 to: '/login', 51 18 }); ··· 54 21 component: RouteComponent, 55 22 }); 56 23 57 - const schema = RecipeRecord.extend({ 58 - time: z.coerce.number(), 59 - }); 60 - 61 24 function RouteComponent() { 62 - const form = useForm<z.infer<typeof schema>>({ 63 - resolver: zodResolver(schema), 64 - defaultValues: { 65 - title: "", 66 - time: 0, 67 - description: "", 68 - ingredients: [{ name: "" }], 69 - steps: [{ text: "" }], 70 - }, 71 - }); 72 - 73 - const { mutate, isPending } = useNewRecipeMutation(form); 74 - 75 - const onSubmit = (values: z.infer<typeof schema>) => { 76 - mutate({ recipe: values }); 77 - }; 78 - 79 - const ingredients = useFieldArray({ 80 - control: form.control, 81 - name: "ingredients", 82 - }); 83 - 84 - const steps = useFieldArray({ 85 - control: form.control, 86 - name: "steps", 87 - }); 88 - 89 - return ( 90 - <> 91 - <Breadcrumbs /> 92 - <div className="flex-1 flex-col p-4 pt-0 max-w-xl w-full mx-auto"> 93 - <Card> 94 - <CardHeader> 95 - <CardTitle>New recipe</CardTitle> 96 - <CardDescription>Share your recipe with the world!</CardDescription> 97 - </CardHeader> 98 - <CardContent> 99 - <Form {...form}> 100 - <form 101 - onSubmit={form.handleSubmit(onSubmit)} 102 - className="space-y-8" 103 - > 104 - <FormField 105 - name="title" 106 - control={form.control} 107 - render={({ field }) => ( 108 - <FormItem> 109 - <FormLabel>Title</FormLabel> 110 - <FormControl> 111 - <Input placeholder="My awesome recipe!" {...field} /> 112 - </FormControl> 113 - <FormDescription> 114 - This is your recipe's name. 115 - </FormDescription> 116 - <FormMessage /> 117 - </FormItem> 118 - )} 119 - /> 120 - 121 - <FormField 122 - name="description" 123 - control={form.control} 124 - render={({ field: { value, ...field } }) => ( 125 - <FormItem> 126 - <FormLabel>Description</FormLabel> 127 - <FormControl> 128 - <Textarea 129 - className="resize-none" 130 - value={value || ""} 131 - {...field} 132 - /> 133 - </FormControl> 134 - <FormDescription>Describe your recipe, maybe tell the world how tasty it is? (Optional)</FormDescription> 135 - <FormMessage /> 136 - </FormItem> 137 - )} 138 - /> 139 - 140 - <FormField 141 - name="time" 142 - control={form.control} 143 - render={({ field: { value, ...field } }) => ( 144 - <FormItem> 145 - <FormLabel>Time</FormLabel> 146 - <FormControl> 147 - <Input 148 - type="number" 149 - className="resize-none" 150 - value={value || ""} 151 - {...field} 152 - /> 153 - </FormControl> 154 - <FormDescription>How long (in minutes) does your recipe take to complete?</FormDescription> 155 - <FormMessage /> 156 - </FormItem> 157 - )} 158 - /> 159 - 160 - <div className="grid gap-2"> 161 - <Label>Ingredients</Label> 162 - <Sortable 163 - value={ingredients.fields} 164 - onMove={({ activeIndex, overIndex }) => 165 - ingredients.move(activeIndex, overIndex)} 166 - > 167 - <div className="flex w-full flex-col gap-2"> 168 - {ingredients.fields.map((field, index) => ( 169 - <SortableItem key={field.id} value={field.id} asChild> 170 - <div className="grid grid-cols-[2rem_0.3fr_1fr_2rem] items-center gap-2"> 171 - <SortableDragHandle 172 - type="button" 173 - variant="outline" 174 - size="icon" 175 - className="size-8 shrink-0" 176 - > 177 - <DragHandleDots2Icon 178 - className="size-4" 179 - aria-hidden="true" 180 - /> 181 - </SortableDragHandle> 182 - 183 - <FormField 184 - control={form.control} 185 - name={`ingredients.${index}.amount`} 186 - render={({ field: { value, ...field } }) => ( 187 - <FormItem> 188 - <FormControl> 189 - <Input 190 - placeholder="Amount" 191 - value={value || ""} 192 - className="h-8" 193 - {...field} 194 - /> 195 - </FormControl> 196 - <FormMessage /> 197 - </FormItem> 198 - )} 199 - /> 200 - 201 - <FormField 202 - control={form.control} 203 - name={`ingredients.${index}.name`} 204 - render={({ field }) => ( 205 - <FormItem> 206 - <FormControl> 207 - <Input 208 - placeholder="Ingredient" 209 - className="h-8" 210 - {...field} 211 - /> 212 - </FormControl> 213 - <FormMessage /> 214 - </FormItem> 215 - )} 216 - /> 217 - 218 - <Button 219 - type="button" 220 - variant="destructive" 221 - className="size-8" 222 - onClick={(e) => { 223 - e.preventDefault(); 224 - ingredients.remove(index); 225 - }} 226 - > 227 - <TrashIcon /> 228 - </Button> 229 - </div> 230 - </SortableItem> 231 - ))} 232 - </div> 233 - </Sortable> 234 - <Button 235 - type="button" 236 - variant="secondary" 237 - onClick={(e) => { 238 - e.preventDefault(); 239 - ingredients.append({ 240 - name: "", 241 - amount: "", 242 - }); 243 - }} 244 - > 245 - Add 246 - </Button> 247 - </div> 248 - 249 - <div className="grid gap-2"> 250 - <Label>Steps</Label> 251 - <Sortable 252 - value={steps.fields} 253 - onMove={({ activeIndex, overIndex }) => 254 - steps.move(activeIndex, overIndex)} 255 - > 256 - <div className="flex w-full flex-col gap-2"> 257 - {steps.fields.map((field, index) => ( 258 - <SortableItem key={field.id} value={field.id} asChild> 259 - <div className="grid grid-cols-[2rem_auto_2rem] items-center gap-2"> 260 - <SortableDragHandle 261 - type="button" 262 - variant="outline" 263 - size="icon" 264 - className="size-8 shrink-0" 265 - > 266 - <DragHandleDots2Icon 267 - className="size-4" 268 - aria-hidden="true" 269 - /> 270 - </SortableDragHandle> 271 - <FormField 272 - control={form.control} 273 - name={`steps.${index}.text`} 274 - render={({ field }) => ( 275 - <FormItem> 276 - <FormControl> 277 - <Input className="h-8" {...field} /> 278 - </FormControl> 279 - <FormMessage /> 280 - </FormItem> 281 - )} 282 - /> 283 - 284 - <Button 285 - type="button" 286 - variant="destructive" 287 - className="size-8" 288 - onClick={(e) => { 289 - e.preventDefault(); 290 - steps.remove(index); 291 - }} 292 - > 293 - <TrashIcon /> 294 - </Button> 295 - </div> 296 - </SortableItem> 297 - ))} 298 - </div> 299 - </Sortable> 300 - <Button 301 - type="button" 302 - variant="secondary" 303 - onClick={(e) => { 304 - e.preventDefault(); 305 - steps.append({ text: "" }); 306 - }} 307 - > 308 - Add 309 - </Button> 310 - </div> 311 - 312 - <div className="grid justify-end"> 313 - <Button 314 - type="submit" 315 - className="ml-auto" 316 - disabled={isPending} 317 - > 318 - Submit 319 - </Button> 320 - </div> 321 - </form> 322 - </Form> 323 - </CardContent> 324 - </Card> 325 - </div> 326 - </> 327 - ); 25 + return (<></>); 26 + // const form = useForm<z.infer<typeof recipeSchema>>({ 27 + // resolver: zodResolver(recipeSchema), 28 + // defaultValues: { 29 + // title: "", 30 + // time: 0, 31 + // image: null, 32 + // description: "", 33 + // ingredients: [{ name: "" }], 34 + // steps: [{ text: "" }], 35 + // }, 36 + // }); 37 + // 38 + // const { mutate, isPending } = useNewRecipeMutation(form); 39 + // 40 + // const onSubmit = (values: z.infer<typeof recipeSchema>) => { 41 + // mutate({ recipe: values }); 42 + // }; 43 + // 44 + // const imageRef = form.register("image"); 45 + // 46 + // const ingredients = useFieldArray({ 47 + // control: form.control, 48 + // name: "ingredients", 49 + // }); 50 + // 51 + // const steps = useFieldArray({ 52 + // control: form.control, 53 + // name: "steps", 54 + // }); 55 + // 56 + // return ( 57 + // <> 58 + // <Breadcrumbs /> 59 + // <div className="flex-1 flex-col p-4 pt-0 max-w-xl w-full mx-auto"> 60 + // <Card> 61 + // <CardHeader> 62 + // <CardTitle>New recipe</CardTitle> 63 + // <CardDescription>Share your recipe with the world!</CardDescription> 64 + // </CardHeader> 65 + // <CardContent> 66 + // <Form {...form}> 67 + // <form 68 + // onSubmit={form.handleSubmit(onSubmit)} 69 + // className="space-y-8" 70 + // > 71 + // <FormField 72 + // name="title" 73 + // control={form.control} 74 + // render={({ field }) => ( 75 + // <FormItem> 76 + // <FormLabel>Title</FormLabel> 77 + // <FormControl> 78 + // <Input placeholder="My awesome recipe!" {...field} /> 79 + // </FormControl> 80 + // <FormDescription> 81 + // This is your recipe's name. 82 + // </FormDescription> 83 + // <FormMessage /> 84 + // </FormItem> 85 + // )} 86 + // /> 87 + // 88 + // <FormField 89 + // name="description" 90 + // control={form.control} 91 + // render={({ field: { value, ...field } }) => ( 92 + // <FormItem> 93 + // <FormLabel>Description</FormLabel> 94 + // <FormControl> 95 + // <Textarea 96 + // className="resize-none" 97 + // value={value || ""} 98 + // {...field} 99 + // /> 100 + // </FormControl> 101 + // <FormDescription>Describe your recipe, maybe tell the world how tasty it is? (Optional)</FormDescription> 102 + // <FormMessage /> 103 + // </FormItem> 104 + // )} 105 + // /> 106 + // 107 + // <FormField 108 + // name="image" 109 + // control={form.control} 110 + // render={(_props) => ( 111 + // <FormItem> 112 + // <FormLabel>Image</FormLabel> 113 + // <FormControl> 114 + // <Input 115 + // type="file" 116 + // className="resize-none" 117 + // {...imageRef} 118 + // /> 119 + // </FormControl> 120 + // <FormMessage /> 121 + // </FormItem> 122 + // )} 123 + // /> 124 + // 125 + // <FormField 126 + // name="time" 127 + // control={form.control} 128 + // render={({ field: { value, ...field } }) => ( 129 + // <FormItem> 130 + // <FormLabel>Time</FormLabel> 131 + // <FormControl> 132 + // <Input 133 + // type="number" 134 + // className="resize-none" 135 + // value={value || ""} 136 + // {...field} 137 + // /> 138 + // </FormControl> 139 + // <FormDescription>How long (in minutes) does your recipe take to complete?</FormDescription> 140 + // <FormMessage /> 141 + // </FormItem> 142 + // )} 143 + // /> 144 + // 145 + // <div className="grid gap-2"> 146 + // <Label>Ingredients</Label> 147 + // <Sortable 148 + // value={ingredients.fields} 149 + // onMove={({ activeIndex, overIndex }) => 150 + // ingredients.move(activeIndex, overIndex)} 151 + // > 152 + // <div className="flex w-full flex-col gap-2"> 153 + // {ingredients.fields.map((field, index) => ( 154 + // <SortableItem key={field.id} value={field.id} asChild> 155 + // <div className="grid grid-cols-[2rem_0.3fr_1fr_2rem] items-center gap-2"> 156 + // <SortableDragHandle 157 + // type="button" 158 + // variant="outline" 159 + // size="icon" 160 + // className="size-8 shrink-0" 161 + // > 162 + // <DragHandleDots2Icon 163 + // className="size-4" 164 + // aria-hidden="true" 165 + // /> 166 + // </SortableDragHandle> 167 + // 168 + // <FormField 169 + // control={form.control} 170 + // name={`ingredients.${index}.amount`} 171 + // render={({ field: { value, ...field } }) => ( 172 + // <FormItem> 173 + // <FormControl> 174 + // <Input 175 + // placeholder="Amount" 176 + // value={value || ""} 177 + // className="h-8" 178 + // {...field} 179 + // /> 180 + // </FormControl> 181 + // <FormMessage /> 182 + // </FormItem> 183 + // )} 184 + // /> 185 + // 186 + // <FormField 187 + // control={form.control} 188 + // name={`ingredients.${index}.name`} 189 + // render={({ field }) => ( 190 + // <FormItem> 191 + // <FormControl> 192 + // <Input 193 + // placeholder="Ingredient" 194 + // className="h-8" 195 + // {...field} 196 + // /> 197 + // </FormControl> 198 + // <FormMessage /> 199 + // </FormItem> 200 + // )} 201 + // /> 202 + // 203 + // <Button 204 + // type="button" 205 + // variant="destructive" 206 + // className="size-8" 207 + // onClick={(e) => { 208 + // e.preventDefault(); 209 + // ingredients.remove(index); 210 + // }} 211 + // > 212 + // <TrashIcon /> 213 + // </Button> 214 + // </div> 215 + // </SortableItem> 216 + // ))} 217 + // </div> 218 + // </Sortable> 219 + // <Button 220 + // type="button" 221 + // variant="secondary" 222 + // onClick={(e) => { 223 + // e.preventDefault(); 224 + // ingredients.append({ 225 + // name: "", 226 + // amount: "", 227 + // }); 228 + // }} 229 + // > 230 + // Add 231 + // </Button> 232 + // </div> 233 + // 234 + // <div className="grid gap-2"> 235 + // <Label>Steps</Label> 236 + // <Sortable 237 + // value={steps.fields} 238 + // onMove={({ activeIndex, overIndex }) => 239 + // steps.move(activeIndex, overIndex)} 240 + // > 241 + // <div className="flex w-full flex-col gap-2"> 242 + // {steps.fields.map((field, index) => ( 243 + // <SortableItem key={field.id} value={field.id} asChild> 244 + // <div className="grid grid-cols-[2rem_auto_2rem] items-center gap-2"> 245 + // <SortableDragHandle 246 + // type="button" 247 + // variant="outline" 248 + // size="icon" 249 + // className="size-8 shrink-0" 250 + // > 251 + // <DragHandleDots2Icon 252 + // className="size-4" 253 + // aria-hidden="true" 254 + // /> 255 + // </SortableDragHandle> 256 + // <FormField 257 + // control={form.control} 258 + // name={`steps.${index}.text`} 259 + // render={({ field }) => ( 260 + // <FormItem> 261 + // <FormControl> 262 + // <Input className="h-8" {...field} /> 263 + // </FormControl> 264 + // <FormMessage /> 265 + // </FormItem> 266 + // )} 267 + // /> 268 + // 269 + // <Button 270 + // type="button" 271 + // variant="destructive" 272 + // className="size-8" 273 + // onClick={(e) => { 274 + // e.preventDefault(); 275 + // steps.remove(index); 276 + // }} 277 + // > 278 + // <TrashIcon /> 279 + // </Button> 280 + // </div> 281 + // </SortableItem> 282 + // ))} 283 + // </div> 284 + // </Sortable> 285 + // <Button 286 + // type="button" 287 + // variant="secondary" 288 + // onClick={(e) => { 289 + // e.preventDefault(); 290 + // steps.append({ text: "" }); 291 + // }} 292 + // > 293 + // Add 294 + // </Button> 295 + // </div> 296 + // 297 + // <div className="grid justify-end"> 298 + // <Button 299 + // type="submit" 300 + // className="ml-auto" 301 + // disabled={isPending} 302 + // > 303 + // Submit 304 + // </Button> 305 + // </div> 306 + // </form> 307 + // </Form> 308 + // </CardContent> 309 + // </Card> 310 + // </div> 311 + // </> 312 + // ); 328 313 } 329 314 330 315 const Breadcrumbs = () => (
+52 -70
apps/web/src/routes/_.(auth)/login.tsx
··· 13 13 CardHeader, 14 14 CardTitle, 15 15 } from '@/components/ui/card' 16 + import { Field, FieldError, FieldGroup, FieldLabel } from '@/components/ui/field' 16 17 import { Input } from '@/components/ui/input' 17 18 import { Label } from '@/components/ui/label' 18 19 import { Separator } from '@/components/ui/separator' 19 20 import { SidebarTrigger } from '@/components/ui/sidebar' 20 - import { sleep } from '@/lib/utils' 21 - import { 22 - createAuthorizationUrl, 23 - resolveFromIdentity, 24 - } from '@atcute/oauth-browser-client' 21 + import { useSession } from '@/state/auth/session' 25 22 import { useMutation } from '@tanstack/react-query' 26 23 import { createFileRoute } from '@tanstack/react-router' 27 24 import { useState } from 'react' ··· 31 28 }) 32 29 33 30 function RouteComponent() { 31 + const { signIn } = useSession(); 34 32 const [handle, setHandle] = useState('') 35 33 36 34 const { mutate, isPending, error } = useMutation({ 37 35 mutationKey: ['login'], 38 36 mutationFn: async () => { 39 - const { identity, metadata } = await resolveFromIdentity(handle) 40 - 41 - const authUrl = await createAuthorizationUrl({ 42 - metadata: metadata, 43 - identity: identity, 44 - scope: 'atproto transition:generic', 45 - }) 46 - 47 - await sleep(200) 48 - 49 - return authUrl 50 - }, 51 - onSuccess: async (authUrl: URL) => { 52 - window.location.assign(authUrl) 53 - 54 - await new Promise((_resolve, reject) => { 55 - const listener = () => { 56 - reject(new Error(`user aborted the login request`)) 57 - } 58 - 59 - window.addEventListener('pageshow', listener, { once: true }) 60 - }) 37 + await signIn(handle); 38 + return; 61 39 }, 62 40 }) 63 41 ··· 77 55 </div> 78 56 </header> 79 57 <div className="flex flex-1 flex-col items-center justify-center gap-4 p-4 pt-0"> 80 - <Card className="max-w-sm w-full"> 81 - <CardHeader> 82 - <CardTitle>Log in</CardTitle> 83 - <CardDescription> 84 - Enter your handle below to sign in to your account. 85 - </CardDescription> 86 - </CardHeader> 87 - <CardContent> 88 - <div className="flex flex-col gap-2"> 89 - <Label htmlFor="handle">Handle</Label> 90 - <Input 91 - className={`${error ? 'border-destructive text-destructive' : ''}`} 92 - type="text" 93 - id="handle" 94 - name="handle" 95 - placeholder="johndoe.bsky.social" 96 - required 97 - value={handle} 98 - onChange={(e) => setHandle(e.currentTarget.value)} 99 - /> 100 - {error && ( 101 - <p className="text-sm font-medium text-destructive"> 102 - {error.message} 103 - </p> 104 - )} 105 - </div> 106 - </CardContent> 107 - <CardFooter className="grid gap-2"> 108 - <Button onClick={() => mutate()} disabled={isPending}> 109 - Log in 110 - </Button> 111 - <p className="text-sm text-muted-foreground text-center"> 112 - Don't have an account?{' '} 113 - <a 114 - className="font-bold text-primary" 115 - href="https://bsky.app/" 116 - target="_blank" 117 - > 118 - Sign up on Bluesky! 119 - </a> 120 - </p> 121 - </CardFooter> 122 - </Card> 58 + <form onSubmit={e => { 59 + e.preventDefault(); 60 + mutate(); 61 + }}> 62 + <Card className="max-w-sm w-full"> 63 + <CardHeader> 64 + <CardTitle>Log in</CardTitle> 65 + <CardDescription> 66 + Enter your Atmosphere handle below to sign in to your account. 67 + </CardDescription> 68 + </CardHeader> 69 + <CardContent> 70 + <FieldGroup> 71 + <Field data-invalid={error ? true : false}> 72 + <FieldLabel htmlFor="handle">Handle</FieldLabel> 73 + <Input 74 + id="handle" 75 + placeholder="johndoe.bsky.social" 76 + required 77 + autoComplete="username" 78 + aria-invalid={error ? 'true' : 'false'} 79 + tabIndex={0} 80 + autoFocus 81 + value={handle} 82 + onChange={(e) => setHandle(e.currentTarget.value)} 83 + /> 84 + {error && <FieldError>{error.message}</FieldError>} 85 + </Field> 86 + </FieldGroup> 87 + </CardContent> 88 + <CardFooter className="grid gap-2"> 89 + <Button type="submit" disabled={isPending}> 90 + Log in 91 + </Button> 92 + <p className="text-sm text-muted-foreground text-center"> 93 + Don't have an account?{' '} 94 + <a 95 + className="font-bold text-primary" 96 + href="https://bsky.app/" 97 + target="_blank" 98 + > 99 + Sign up on Bluesky! 100 + </a> 101 + </p> 102 + </CardFooter> 103 + </Card> 104 + </form> 123 105 </div> 124 106 </> 125 107 )
+3 -2
apps/web/src/routes/__root.tsx
··· 3 3 SidebarInset, 4 4 SidebarProvider, 5 5 } from '@/components/ui/sidebar' 6 - import { AuthContextType } from '@/state/auth'; 6 + import { ClientContext, SessionContext } from '@/state/auth'; 7 7 import { Outlet, createRootRouteWithContext } from '@tanstack/react-router' 8 8 9 9 type RootContext = { 10 - auth: AuthContextType; 10 + session: SessionContext; 11 + client: ClientContext['client']; 11 12 }; 12 13 13 14 export const Route = createRootRouteWithContext<RootContext>()({
+8 -8
apps/web/src/screens/Recipes/RecipeCard.tsx
··· 1 1 import { Avatar, AvatarImage, AvatarFallback } from "@/components/ui/avatar"; 2 2 import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; 3 - import { BlueRecipesFeedGetRecipes } from "@atcute/client/lexicons"; 4 3 import { Link } from "@tanstack/react-router"; 5 4 import { Clock, CookingPot, ListIcon } from "lucide-react"; 5 + import { BlueRecipesFeedGetRecipes } from "@cookware/lexicons"; 6 6 7 7 type RecipeCardProps = { 8 - recipe: BlueRecipesFeedGetRecipes.Result; 8 + recipe: BlueRecipesFeedGetRecipes.$output['recipes'][0]; 9 9 }; 10 10 11 11 export const RecipeCard = ({ recipe }: RecipeCardProps) => { ··· 13 13 <Link to="/recipes/$author/$rkey" params={{ author: recipe.author.handle, rkey: recipe.rkey }} className="w-full"> 14 14 <Card className="w-full"> 15 15 <CardHeader> 16 + <CardTitle>{recipe.record.title}</CardTitle> 16 17 <CardDescription className="flex items-center space-x-2"> 17 18 <Avatar className="h-6 w-6 rounded-lg"> 18 - <AvatarImage src={recipe.author.avatarUrl} alt={recipe.author.displayName} /> 19 + <AvatarImage src={recipe.author.avatar} alt={recipe.author.displayName} /> 19 20 <AvatarFallback className="rounded-lg">{recipe.author.displayName}</AvatarFallback> 20 21 </Avatar> 21 22 22 23 <span>{recipe.author.displayName}</span> 23 24 </CardDescription> 24 - <CardTitle>{recipe.title}</CardTitle> 25 25 </CardHeader> 26 26 <CardContent> 27 - <p>{recipe.description}</p> 27 + <p>{recipe.record.description}</p> 28 28 </CardContent> 29 29 <CardFooter className="flex gap-6 text-sm text-muted-foreground"> 30 30 <span className="flex items-center gap-2"> 31 - <ListIcon className="size-4" /> <span>{recipe.steps}</span> 31 + <ListIcon className="size-4" /> <span>{recipe.record.steps.length}</span> 32 32 </span> 33 33 34 34 <span className="flex items-center gap-2"> 35 - <CookingPot className="size-4" /> <span>{recipe.ingredients}</span> 35 + <CookingPot className="size-4" /> <span>{recipe.record.ingredients.length}</span> 36 36 </span> 37 37 38 38 <span className="flex items-center gap-2"> 39 - <Clock className="size-4" /> <span>{recipe.time} mins</span> 39 + <Clock className="size-4" /> <span>{recipe.record.time} mins</span> 40 40 </span> 41 41 </CardFooter> 42 42 </Card>
+38
apps/web/src/state/auth/client.tsx
··· 1 + import { Client, simpleFetchHandler } from "@atcute/client"; 2 + import { createContext, PropsWithChildren, useContext, useEffect, useState } from "react"; 3 + import { useSession } from "./session"; 4 + 5 + export type ClientContext = { 6 + client: Client; 7 + }; 8 + 9 + const clientContext = createContext<ClientContext>({ 10 + client: new Client({ handler: simpleFetchHandler({ service: import.meta.env.VITE_API_SERVICE }) }), 11 + }); 12 + 13 + export const ClientProvider = ({ children }: PropsWithChildren) => { 14 + const { agent } = useSession(); 15 + const [client, setClient] = useState<Client>( 16 + () => new Client({ handler: simpleFetchHandler({ service: import.meta.env.VITE_API_SERVICE }) }) 17 + ); 18 + 19 + useEffect(() => { 20 + setClient(new Client({ 21 + handler: agent ?? simpleFetchHandler({ service: import.meta.env.VITE_API_SERVICE }), 22 + proxy: { 23 + did: 'did:web:localhost', 24 + serviceId: '#api_service' 25 + }, 26 + })); 27 + }, [agent]); 28 + 29 + return ( 30 + <clientContext.Provider value={{ client: client }}> 31 + {children} 32 + </clientContext.Provider> 33 + ); 34 + } 35 + 36 + export const useClient = () => { 37 + return useContext(clientContext).client; 38 + }
+2
apps/web/src/state/auth/index.ts
··· 1 + export * from './client'; 2 + export * from './session';
+121
apps/web/src/state/auth/session.tsx
··· 1 + import { isDid, isActorIdentifier } from "@atcute/lexicons/syntax"; 2 + import { createAuthorizationUrl, deleteStoredSession, finalizeAuthorization, getSession, OAuthUserAgent, Session } from "@atcute/oauth-browser-client"; 3 + import { createContext, PropsWithChildren, useContext, useEffect, useState } from "react"; 4 + 5 + export type SessionContext = { 6 + session: null | Session; 7 + agent: null | OAuthUserAgent; 8 + isLoading: boolean; 9 + isLoggedIn: boolean; 10 + signIn: (handle: string) => Promise<void>; 11 + signOut: () => Promise<void>; 12 + }; 13 + 14 + const sessionContext = createContext<SessionContext>({ 15 + session: null, 16 + agent: null, 17 + isLoading: false, 18 + isLoggedIn: false, 19 + signIn: async () => { 20 + throw new Error("AuthContext not initialized"); 21 + }, 22 + signOut: async () => { 23 + throw new Error("AuthContext not initialized"); 24 + }, 25 + }); 26 + 27 + const LS_LAST_SIGNED_IN = "recipes:last-signed-in"; 28 + 29 + export const SessionProvider = ({ children }: PropsWithChildren<{}>) => { 30 + const [initialized, setInitialized] = useState(false); 31 + const [loading, setLoading] = useState(true); 32 + const [session, setSession] = useState<null | Session>(null); 33 + const [agent, setAgent] = useState<null | OAuthUserAgent>(null); 34 + 35 + useEffect(() => { 36 + setInitialized(false); 37 + setSession(null); 38 + setAgent(null); 39 + 40 + const params = new URLSearchParams(location.hash.slice(1)); 41 + if (params.has("state") && params.has("iss") && params.has("code")) { 42 + // If there is an active auth attempt: 43 + history.replaceState(null, "", location.pathname + location.search); 44 + console.log("finalizing authorization..."); 45 + finalizeAuthorization(params) 46 + .then(val => { 47 + setSession(val.session); 48 + setAgent(new OAuthUserAgent(val.session)); 49 + }) 50 + .catch(err => { 51 + console.error("Failed to initialize session:", err); 52 + }) 53 + .finally(() => { 54 + setLoading(false); 55 + setInitialized(true); 56 + }); 57 + } else { 58 + const lastSignedIn = localStorage.getItem(LS_LAST_SIGNED_IN); 59 + if (lastSignedIn && isDid(lastSignedIn)) { 60 + getSession(lastSignedIn, { allowStale: true }) 61 + .then((session) => { 62 + setSession(session); 63 + setAgent(new OAuthUserAgent(session)); 64 + }) 65 + .catch(err => { 66 + console.error("Failed to initialize session:", err); 67 + }) 68 + } 69 + 70 + setLoading(false); 71 + setInitialized(true); 72 + } 73 + }, []); 74 + 75 + const signIn = async (handle: string) => { 76 + if (!isActorIdentifier(handle)) throw new Error("Invalid handle or DID!"); 77 + const authUrl = await createAuthorizationUrl({ 78 + target: { type: 'account', identifier: handle }, 79 + scope: 'atproto transition:generic', 80 + }); 81 + window.location.assign(authUrl); 82 + }; 83 + 84 + const signOut = async () => { 85 + if (!agent || !session) return; 86 + 87 + const did = session.info.sub; 88 + try { 89 + const session = await getSession(did, { allowStale: true }); 90 + const agent = new OAuthUserAgent(session); 91 + 92 + await agent.signOut(); 93 + setSession(null); 94 + } catch(err) { 95 + deleteStoredSession(did); 96 + } 97 + }; 98 + 99 + if (!initialized) return ( 100 + <p>Loading...</p> 101 + ); 102 + 103 + return ( 104 + <sessionContext.Provider value={{ 105 + isLoading: loading, 106 + isLoggedIn: session !== null, 107 + session, 108 + agent, 109 + signIn, 110 + signOut, 111 + }}> 112 + {children} 113 + </sessionContext.Provider> 114 + ); 115 + }; 116 + 117 + export const useSession = () => { 118 + const ctx = useContext(sessionContext); 119 + if (!ctx) throw new Error("useSession() must be called inside a <SessionProvider />!"); 120 + return ctx; 121 + };
-78
apps/web/src/state/auth.tsx
··· 1 - import { At } from "@atcute/client/lexicons"; 2 - import { finalizeAuthorization, getSession, OAuthUserAgent } from "@atcute/oauth-browser-client"; 3 - import { createContext, PropsWithChildren, useContext, useEffect, useState } from "react"; 4 - 5 - export type AuthContextType = { 6 - isLoggedIn: boolean; 7 - agent?: OAuthUserAgent; 8 - logOut: () => Promise<void>; 9 - }; 10 - 11 - const AuthContext = createContext<AuthContextType>({ 12 - isLoggedIn: false, 13 - logOut: async () => {}, 14 - }); 15 - 16 - export const AuthProvider = ({ children }: PropsWithChildren) => { 17 - const [isReady, setIsReady] = useState(false); 18 - const [isLoggedIn, setIsLoggedIn] = useState(false); 19 - const [agent, setAgent] = useState<OAuthUserAgent | undefined>(undefined); 20 - 21 - useEffect(() => { 22 - const init = async () => { 23 - const params = new URLSearchParams(location.hash.slice(1)); 24 - 25 - if (params.has("state") && (params.has("code") || params.has("error"))) { 26 - history.replaceState(null, "", location.pathname + location.search); 27 - 28 - const session = await finalizeAuthorization(params); 29 - const did = session.info.sub; 30 - 31 - localStorage.setItem("lastSignedIn", did); 32 - return session; 33 - 34 - } else { 35 - const lastSignedIn = localStorage.getItem("lastSignedIn"); 36 - 37 - if (lastSignedIn) { 38 - try { 39 - return await getSession(lastSignedIn as At.DID); 40 - } catch (err) { 41 - localStorage.removeItem("lastSignedIn"); 42 - throw err; 43 - } 44 - } 45 - } 46 - }; 47 - 48 - init() 49 - .then(session => { 50 - if (session) { 51 - setAgent(new OAuthUserAgent(session)); 52 - setIsLoggedIn(true); 53 - } 54 - 55 - setIsReady(true) 56 - }) 57 - .catch(() => {}); 58 - }, []); 59 - 60 - if (!isReady) return null; 61 - 62 - return ( 63 - <AuthContext.Provider value={{ 64 - isLoggedIn, 65 - agent, 66 - logOut: async () => { 67 - setIsLoggedIn(false); 68 - await agent?.signOut(); 69 - }, 70 - }}> 71 - {children} 72 - </AuthContext.Provider> 73 - ); 74 - }; 75 - 76 - export const useAuth = () => { 77 - return useContext(AuthContext); 78 - };
+1 -3
apps/web/src/vite-env.d.ts
··· 1 1 /// <reference types="vite/client" /> 2 - /// <reference types="@cookware/lexicons" /> 3 - /// <reference types="@atcute/bluesky/lexicons" /> 4 2 5 3 interface ImportMetaEnv { 6 4 readonly VITE_API_SERVICE: string; 7 5 readonly VITE_DEV_SERVER_PORT?: string; 8 6 readonly VITE_CLIENT_URI: string; 9 7 readonly VITE_OAUTH_CLIENT_ID: string; 10 - readonly VITE_OAUTH_REDIRECT_URL: string; 8 + readonly VITE_OAUTH_REDIRECT_URI: string; 11 9 readonly VITE_OAUTH_SCOPE: string; 12 10 } 13 11
+2 -2
apps/web/tailwind.config.js
··· 1 1 import animate from 'tailwindcss-animate'; 2 2 /** @type {import('tailwindcss').Config} */ 3 3 export default { 4 - darkMode: ["class"], 5 - content: ["./index.html", "./src/**/*.{ts,tsx,js,jsx}"], 4 + darkMode: ["class"], 5 + content: ["./index.html", "./src/**/*.{ts,tsx,js,jsx}"], 6 6 theme: { 7 7 extend: { 8 8 borderRadius: {
+29 -29
apps/web/vite.config.ts
··· 1 1 import { defineConfig } from 'vite' 2 - import react from '@vitejs/plugin-react-swc' 3 - import { TanStackRouterVite } from '@tanstack/router-plugin/vite' 2 + import react from '@vitejs/plugin-react' 3 + import { tanstackRouter } from '@tanstack/router-plugin/vite' 4 4 import path from 'path' 5 - import metadata from "./public/client-metadata.json"; 5 + import metadata from "./public/oauth-client-metadata.json" with { type: 'json' }; 6 6 7 7 const SERVER_HOST = "127.0.0.1"; 8 8 const SERVER_PORT = 5173; ··· 10 10 // https://vite.dev/config/ 11 11 export default defineConfig({ 12 12 plugins: [ 13 - TanStackRouterVite(), 14 - react(), 15 - 16 - { 17 - name: "oauth", 18 - config(_conf, { command }) { 19 - if (command === "build") { 20 - process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id; 21 - process.env.VITE_OAUTH_REDIRECT_URL = metadata.redirect_uris[0]; 22 - } else { 23 - const redirectUri = ((): string => { 24 - const url = new URL(metadata.redirect_uris[0]); 25 - return `http://${SERVER_HOST}:${SERVER_PORT}${url.pathname}`; 26 - })(); 13 + tanstackRouter(), 14 + react({ babel: { plugins: ['babel-plugin-react-compiler'] } }), 15 + { 16 + name: '_config', 17 + config(_conf, { command }) { 18 + if (command === 'build') { 19 + process.env.VITE_OAUTH_CLIENT_ID = metadata.client_id; 20 + process.env.VITE_OAUTH_REDIRECT_URI = metadata.redirect_uris[0]; 21 + } else { 22 + const redirectUri = (() => { 23 + const url = new URL(metadata.redirect_uris[0]); 24 + return `http://${SERVER_HOST}:${SERVER_PORT}${url.pathname}`; 25 + })(); 27 26 28 - const clientId = 29 - `http://localhost` + 30 - `?redirect_uri=${encodeURIComponent(redirectUri)}` + 31 - `&scope=${encodeURIComponent(metadata.scope)}`; 27 + const clientId = 28 + `http://localhost` + 29 + `?redirect_uri=${encodeURIComponent(redirectUri)}` + 30 + `&scope=${encodeURIComponent(metadata.scope)}`; 32 31 33 - process.env.VITE_DEV_SERVER_PORT = "" + SERVER_PORT; 34 - process.env.VITE_OAUTH_CLIENT_ID = clientId; 35 - process.env.VITE_OAUTH_REDIRECT_URL = redirectUri; 36 - } 32 + process.env.VITE_API_SERVICE = 'http://localhost:3000'; 33 + process.env.VITE_DEV_SERVER_PORT = '' + SERVER_PORT; 34 + process.env.VITE_OAUTH_CLIENT_ID = clientId; 35 + process.env.VITE_OAUTH_REDIRECT_URI = redirectUri; 36 + } 37 37 38 - process.env.VITE_CLIENT_URI = metadata.client_uri; 39 - process.env.VITE_OAUTH_SCOPE = metadata.scope; 40 - }, 41 - }, 38 + process.env.VITE_CLIENT_URI = metadata.client_uri; 39 + process.env.VITE_OAUTH_SCOPE = metadata.scope; 40 + }, 41 + }, 42 42 ], 43 43 server: { 44 44 host: SERVER_HOST,
+2054
bun.lock
··· 1 + { 2 + "lockfileVersion": 1, 3 + "configVersion": 1, 4 + "workspaces": { 5 + "": { 6 + "name": "@cookware/monorepo", 7 + "devDependencies": { 8 + "turbo": "^2.3.3", 9 + "typescript": "^5.9.3", 10 + }, 11 + }, 12 + "apps/api": { 13 + "name": "@cookware/api", 14 + "dependencies": { 15 + "@atcute/atproto": "^3.1.9", 16 + "@atcute/client": "catalog:", 17 + "@atcute/identity": "^1.1.3", 18 + "@atcute/identity-resolver": "^1.1.4", 19 + "@atcute/lexicons": "catalog:", 20 + "@atcute/xrpc-server": "^0.1.3", 21 + "@cookware/database": "workspace:*", 22 + "@cookware/lexicons": "workspace:*", 23 + "@libsql/client": "^0.14.0", 24 + "drizzle-orm": "catalog:", 25 + "hono": "^4.10.7", 26 + "pino": "^9.5.0", 27 + }, 28 + "devDependencies": { 29 + "@atcute/bluesky": "^3.2.10", 30 + "@cookware/tsconfig": "workspace:*", 31 + "@types/bun": "catalog:", 32 + "drizzle-kit": "^0.29.0", 33 + "pino-pretty": "^13.1.2", 34 + "rimraf": "^6.0.1", 35 + }, 36 + }, 37 + "apps/ingester": { 38 + "name": "@cookware/ingester", 39 + "dependencies": { 40 + "@atcute/client": "catalog:", 41 + "@atcute/identity": "^1.1.3", 42 + "@atcute/identity-resolver": "^1.1.4", 43 + "@atcute/jetstream": "^1.1.2", 44 + "@atcute/lexicons": "catalog:", 45 + "@badrap/valita": "^0.4.6", 46 + "@cookware/database": "workspace:^", 47 + "@cookware/lexicons": "workspace:*", 48 + "@sentry/node": "^8.42.0", 49 + "pino": "^9.5.0", 50 + }, 51 + "devDependencies": { 52 + "@cookware/tsconfig": "workspace:*", 53 + "@types/bun": "catalog:", 54 + "@types/ws": "^8.5.13", 55 + "pino-pretty": "^13.0.0", 56 + "rimraf": "^6.0.1", 57 + "typescript": "^5.7.2", 58 + }, 59 + }, 60 + "apps/web": { 61 + "name": "@cookware/web", 62 + "version": "0.0.0", 63 + "dependencies": { 64 + "@atcute/atproto": "^3.1.9", 65 + "@atcute/client": "catalog:", 66 + "@atcute/identity-resolver": "^1.1.4", 67 + "@atcute/lexicons": "catalog:", 68 + "@atcute/oauth-browser-client": "^2.0.1", 69 + "@atproto/common": "^0.4.5", 70 + "@atproto/common-web": "^0.3.1", 71 + "@dnd-kit/core": "^6.3.1", 72 + "@dnd-kit/modifiers": "^9.0.0", 73 + "@dnd-kit/sortable": "^10.0.0", 74 + "@dnd-kit/utilities": "^3.2.2", 75 + "@hookform/resolvers": "^3.9.1", 76 + "@radix-ui/react-avatar": "^1.1.1", 77 + "@radix-ui/react-collapsible": "^1.1.1", 78 + "@radix-ui/react-dialog": "^1.1.4", 79 + "@radix-ui/react-dropdown-menu": "^2.1.4", 80 + "@radix-ui/react-icons": "^1.3.2", 81 + "@radix-ui/react-label": "^2.1.8", 82 + "@radix-ui/react-separator": "^1.1.8", 83 + "@radix-ui/react-slot": "^1.2.4", 84 + "@radix-ui/react-tooltip": "^1.1.4", 85 + "@tanstack/react-query": "^5.62.2", 86 + "@tanstack/react-query-devtools": "^5.62.2", 87 + "@tanstack/react-router": "^1.91.2", 88 + "axios": "^1.7.9", 89 + "class-variance-authority": "^0.7.1", 90 + "clsx": "^2.1.1", 91 + "lucide-react": "^0.464.0", 92 + "react-dom": "19.0.0", 93 + "react-hook-form": "^7.54.1", 94 + "tailwind-merge": "^2.5.5", 95 + "tailwindcss-animate": "^1.0.7", 96 + "zod": "^3.23.8", 97 + }, 98 + "devDependencies": { 99 + "@atcute/bluesky": "^1.0.9", 100 + "@cookware/lexicons": "workspace:*", 101 + "@eslint/js": "^9.15.0", 102 + "@tanstack/eslint-plugin-query": "^5.62.1", 103 + "@tanstack/router-devtools": "^1.85.5", 104 + "@tanstack/router-plugin": "^1.85.3", 105 + "@types/node": "^22.10.1", 106 + "@types/react": "^19.0.0", 107 + "@types/react-dom": "^19.0.0", 108 + "@vitejs/plugin-react": "^5.1.1", 109 + "@vitejs/plugin-react-swc": "^3.5.0", 110 + "autoprefixer": "^10.4.20", 111 + "babel-plugin-react-compiler": "^1.0.0", 112 + "cssnano": "^7.0.6", 113 + "eslint": "^9.15.0", 114 + "eslint-plugin-react-hooks": "^5.0.0", 115 + "eslint-plugin-react-refresh": "^0.4.14", 116 + "globals": "^15.12.0", 117 + "postcss": "^8.4.49", 118 + "react": "19.0.0", 119 + "tailwindcss": "^3.4.16", 120 + "typescript": "~5.6.2", 121 + "typescript-eslint": "^8.15.0", 122 + "vite": "^7.2.4", 123 + }, 124 + }, 125 + "libs/database": { 126 + "name": "@cookware/database", 127 + "version": "0.0.0", 128 + "dependencies": { 129 + "@libsql/client": "^0.15.15", 130 + "drizzle-orm": "catalog:", 131 + "pg": "^8.16.3", 132 + "zod": "^3.23.8", 133 + }, 134 + "devDependencies": { 135 + "@atcute/lexicons": "catalog:", 136 + "@atproto/oauth-client-node": "^0.2.3", 137 + "@cookware/lexicons": "workspace:*", 138 + "@cookware/tsconfig": "workspace:*", 139 + "@types/bun": "catalog:", 140 + "@types/node": "^22.10.1", 141 + "@types/pg": "^8.15.6", 142 + "drizzle-kit": "^0.29.0", 143 + "typescript": "^5.2.2", 144 + }, 145 + }, 146 + "libs/lexicons": { 147 + "name": "@cookware/lexicons", 148 + "version": "0.0.0", 149 + "dependencies": { 150 + "@atcute/atproto": "catalog:", 151 + "@atcute/bluesky": "catalog:", 152 + "@atcute/client": "catalog:", 153 + "@atcute/lexicons": "catalog:", 154 + }, 155 + "devDependencies": { 156 + "@atcute/lex-cli": "^2.3.3", 157 + "@cookware/tsconfig": "workspace:*", 158 + "@typelex/emitter": "^0.4.0", 159 + "@types/bun": "catalog:", 160 + "@typespec/compiler": "^1.6.0", 161 + }, 162 + }, 163 + "libs/tsconfig": { 164 + "name": "@cookware/tsconfig", 165 + "version": "0.0.0", 166 + "dependencies": { 167 + "@types/bun": "^1.3.3", 168 + }, 169 + }, 170 + }, 171 + "catalog": { 172 + "@atcute/atproto": "^3.1.9", 173 + "@atcute/bluesky": "^3.2.11", 174 + "@atcute/client": "^4.0.5", 175 + "@atcute/lexicons": "^1.2.5", 176 + "@types/bun": "^1.3.3", 177 + "drizzle-orm": "^0.44.7", 178 + }, 179 + "packages": { 180 + "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], 181 + 182 + "@atcute/atproto": ["@atcute/atproto@3.1.9", "", { "dependencies": { "@atcute/lexicons": "^1.2.2" } }, "sha512-DyWwHCTdR4hY2BPNbLXgVmm7lI+fceOwWbE4LXbGvbvVtSn+ejSVFaAv01Ra3kWDha0whsOmbJL8JP0QPpf1+w=="], 183 + 184 + "@atcute/bluesky": ["@atcute/bluesky@3.2.11", "", { "dependencies": { "@atcute/atproto": "^3.1.9", "@atcute/lexicons": "^1.2.5" } }, "sha512-AboS6y4t+zaxIq7E4noue10csSpIuk/Uwo30/l6GgGBDPXrd7STw8Yb5nGZQP+TdG/uC8/c2mm7UnY65SDOh6A=="], 185 + 186 + "@atcute/cbor": ["@atcute/cbor@2.2.8", "", { "dependencies": { "@atcute/cid": "^2.2.6", "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5" } }, "sha512-UzOAN9BuN6JCXgn0ryV8qZuRJUDrNqrbLd6EFM8jc6RYssjRyGRxNy6RZ1NU/07Hd8Tq/0pz8+nQiMu5Zai5uw=="], 187 + 188 + "@atcute/cid": ["@atcute/cid@2.2.6", "", { "dependencies": { "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5" } }, "sha512-bTAHHbJ24p+E//V4KCS4xdmd39o211jJswvqQOevj7vk+5IYcgDLx1ryZWZ1sEPOo9x875li/kj5gpKL14RDwQ=="], 189 + 190 + "@atcute/client": ["@atcute/client@4.0.5", "", { "dependencies": { "@atcute/identity": "^1.1.1", "@atcute/lexicons": "^1.2.2" } }, "sha512-R8Qen8goGmEkynYGg2m6XFlVmz0GTDvQ+9w+4QqOob+XMk8/WDpF4aImev7WKEde/rV2gjcqW7zM8E6W9NShDA=="], 191 + 192 + "@atcute/crypto": ["@atcute/crypto@2.2.6", "", { "dependencies": { "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5", "@noble/secp256k1": "^3.0.0" } }, "sha512-vkuexF+kmrKE1/Uqzub99Qi4QpnxA2jbu60E6PTgL4XypELQ6rb59MB/J1VbY2gs0kd3ET7+L3+NWpKD5nXyfA=="], 193 + 194 + "@atcute/identity": ["@atcute/identity@1.1.3", "", { "dependencies": { "@atcute/lexicons": "^1.2.4", "@badrap/valita": "^0.4.6" } }, "sha512-oIqPoI8TwWeQxvcLmFEZLdN2XdWcaLVtlm8pNk0E72As9HNzzD9pwKPrLr3rmTLRIoULPPFmq9iFNsTeCIU9ng=="], 195 + 196 + "@atcute/identity-resolver": ["@atcute/identity-resolver@1.1.4", "", { "dependencies": { "@atcute/lexicons": "^1.2.2", "@atcute/util-fetch": "^1.0.3", "@badrap/valita": "^0.4.6" }, "peerDependencies": { "@atcute/identity": "^1.0.0" } }, "sha512-/SVh8vf2cXFJenmBnGeYF2aY3WGQm3cJeew5NWTlkqoy3LvJ5wkvKq9PWu4Tv653VF40rPOp6LOdVr9Fa+q5rA=="], 197 + 198 + "@atcute/jetstream": ["@atcute/jetstream@1.1.2", "", { "dependencies": { "@atcute/lexicons": "^1.2.2", "@badrap/valita": "^0.4.6", "@mary-ext/event-iterator": "^1.0.0", "@mary-ext/simple-event-emitter": "^1.0.0", "partysocket": "^1.1.5", "type-fest": "^4.41.0", "yocto-queue": "^1.2.1" } }, "sha512-u6p/h2xppp7LE6W/9xErAJ6frfN60s8adZuCKtfAaaBBiiYbb1CfpzN8Uc+2qtJZNorqGvuuDb5572Jmh7yHBQ=="], 199 + 200 + "@atcute/lex-cli": ["@atcute/lex-cli@2.3.3", "", { "dependencies": { "@atcute/lexicon-doc": "^2.0.0", "@badrap/valita": "^0.4.6", "@optique/core": "^0.6.2", "@optique/run": "^0.6.2", "picocolors": "^1.1.1", "prettier": "^3.6.2" }, "bin": { "lex-cli": "cli.mjs" } }, "sha512-L+fxfJWVBFiuS53yK2aDg7F3R0Ak7UOj9BOM2khofR6yBSKHrkCuk3b6GrkbcMKo+9O0ynaLsuXxUNlHvw/m3w=="], 201 + 202 + "@atcute/lexicon-doc": ["@atcute/lexicon-doc@2.0.4", "", { "dependencies": { "@atcute/identity": "^1.1.3", "@atcute/lexicons": "^1.2.5", "@badrap/valita": "^0.4.6" } }, "sha512-YfwlYFoYiBvRIYG0I1zsINCTFugFtS8l67uT3nQ04zdKVflzdg8uUj8cNZYRNY1V7okoOPdikhR4kPFhYGyemw=="], 203 + 204 + "@atcute/lexicons": ["@atcute/lexicons@1.2.5", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "esm-env": "^1.2.2" } }, "sha512-9yO9WdgxW8jZ7SbzUycH710z+JmsQ9W9n5S6i6eghYju32kkluFmgBeS47r8e8p2+Dv4DemS7o/3SUGsX9FR5Q=="], 205 + 206 + "@atcute/multibase": ["@atcute/multibase@1.1.6", "", { "dependencies": { "@atcute/uint8array": "^1.0.5" } }, "sha512-HBxuCgYLKPPxETV0Rot4VP9e24vKl8JdzGCZOVsDaOXJgbRZoRIF67Lp0H/OgnJeH/Xpva8Z5ReoTNJE5dn3kg=="], 207 + 208 + "@atcute/oauth-browser-client": ["@atcute/oauth-browser-client@2.0.1", "", { "dependencies": { "@atcute/client": "^4.0.5", "@atcute/identity": "^1.1.1", "@atcute/identity-resolver": "^1.1.4", "@atcute/lexicons": "^1.2.2", "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5", "nanoid": "^5.1.5" } }, "sha512-lG021GkeORG06zfFf4bH85egObjBEKHNgAWHvbtY/E2dX4wxo88hf370pJDx8acdnuUJLJ2VKPikJtZwo4Heeg=="], 209 + 210 + "@atcute/uint8array": ["@atcute/uint8array@1.0.5", "", {}, "sha512-XLWWxoR2HNl2qU+FCr0rp1APwJXci7HnzbOQLxK55OaMNBXZ19+xNC5ii4QCsThsDxa4JS/JTzuiQLziITWf2Q=="], 211 + 212 + "@atcute/util-fetch": ["@atcute/util-fetch@1.0.3", "", { "dependencies": { "@badrap/valita": "^0.4.6" } }, "sha512-f8zzTb/xlKIwv2OQ31DhShPUNCmIIleX6p7qIXwWwEUjX6x8skUtpdISSjnImq01LXpltGV5y8yhV4/Mlb7CRQ=="], 213 + 214 + "@atcute/xrpc-server": ["@atcute/xrpc-server@0.1.3", "", { "dependencies": { "@atcute/cbor": "^2.2.7", "@atcute/crypto": "^2.2.5", "@atcute/identity": "^1.1.1", "@atcute/identity-resolver": "^1.1.4", "@atcute/lexicons": "^1.2.2", "@atcute/multibase": "^1.1.6", "@atcute/uint8array": "^1.0.5", "@badrap/valita": "^0.4.6", "nanoid": "^5.1.5" } }, "sha512-AMig6MuAL5VfXRZVsQqQXKCXnZgpjTc6UM6RggvyE1qVT8y9tZPFXdP5tt/p6Jf+h4cAw+XMu2uyrGpUmnTSyQ=="], 215 + 216 + "@atproto-labs/did-resolver": ["@atproto-labs/did-resolver@0.1.13", "", { "dependencies": { "@atproto-labs/fetch": "0.2.3", "@atproto-labs/pipe": "0.1.1", "@atproto-labs/simple-store": "0.2.0", "@atproto-labs/simple-store-memory": "0.1.3", "@atproto/did": "0.1.5", "zod": "^3.23.8" } }, "sha512-DG3YNaCKc6PAIv1Gsz3E1Kufw2t14OBxe4LdKK7KKLCNoex51hm+A5yMevShe3BSll+QosqWYIEgkPSc5xBoGQ=="], 217 + 218 + "@atproto-labs/fetch": ["@atproto-labs/fetch@0.2.3", "", { "dependencies": { "@atproto-labs/pipe": "0.1.1" } }, "sha512-NZtbJOCbxKUFRFKMpamT38PUQMY0hX0p7TG5AEYOPhZKZEP7dHZ1K2s1aB8MdVH0qxmqX7nQleNrrvLf09Zfdw=="], 219 + 220 + "@atproto-labs/fetch-node": ["@atproto-labs/fetch-node@0.1.9", "", { "dependencies": { "@atproto-labs/fetch": "0.2.3", "@atproto-labs/pipe": "0.1.1", "ipaddr.js": "^2.1.0", "undici": "^6.14.1" } }, "sha512-8sHDDXZEzQptLu8ddUU/8U+THS6dumgPynVX0/1PjUYd4S/FWyPcz6yMIiVChTfzKnZvYRRz47+qvOKhydrHQw=="], 221 + 222 + "@atproto-labs/handle-resolver": ["@atproto-labs/handle-resolver@0.1.8", "", { "dependencies": { "@atproto-labs/simple-store": "0.2.0", "@atproto-labs/simple-store-memory": "0.1.3", "@atproto/did": "0.1.5", "zod": "^3.23.8" } }, "sha512-Y0ckccoCGDo/3g4thPkgp9QcORmc+qqEaCBCYCZYtfLIQp4775u22wd+4fyEyJP4DqoReKacninkICgRGfs3dQ=="], 223 + 224 + "@atproto-labs/handle-resolver-node": ["@atproto-labs/handle-resolver-node@0.1.16", "", { "dependencies": { "@atproto-labs/fetch-node": "0.1.9", "@atproto-labs/handle-resolver": "0.1.8", "@atproto/did": "0.1.5" } }, "sha512-i2F989zjyC7b/odrV3/tOpIT1IDIxR3F0khPG4REfOWcmJ89QcP8BiejJ6KFJk3hbTJHq6X9/pTG1vesCvyIKA=="], 225 + 226 + "@atproto-labs/identity-resolver": ["@atproto-labs/identity-resolver@0.1.18", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.13", "@atproto-labs/handle-resolver": "0.1.8", "@atproto/syntax": "0.4.0" } }, "sha512-DArYXP1hzZJIBcojun0CWEF+TjAhlGKcVq/RwLiGfY1mKq2yPjCiXyHj+5L0+z9jBSZiAB7L65JgcjI2+MFiRg=="], 227 + 228 + "@atproto-labs/pipe": ["@atproto-labs/pipe@0.1.1", "", {}, "sha512-hdNw2oUs2B6BN1lp+32pF7cp8EMKuIN5Qok2Vvv/aOpG/3tNSJ9YkvfI0k6Zd188LeDDYRUpYpxcoFIcGH/FNg=="], 229 + 230 + "@atproto-labs/simple-store": ["@atproto-labs/simple-store@0.2.0", "", {}, "sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA=="], 231 + 232 + "@atproto-labs/simple-store-memory": ["@atproto-labs/simple-store-memory@0.1.3", "", { "dependencies": { "@atproto-labs/simple-store": "0.2.0", "lru-cache": "^10.2.0" } }, "sha512-jkitT9+AtU+0b28DoN92iURLaCt/q/q4yX8q6V+9LSwYlUTqKoj/5NFKvF7x6EBuG+gpUdlcycbH7e60gjOhRQ=="], 233 + 234 + "@atproto/common": ["@atproto/common@0.4.12", "", { "dependencies": { "@atproto/common-web": "^0.4.3", "@ipld/dag-cbor": "^7.0.3", "cbor-x": "^1.5.1", "iso-datestring-validator": "^2.2.2", "multiformats": "^9.9.0", "pino": "^8.21.0" } }, "sha512-NC+TULLQiqs6MvNymhQS5WDms3SlbIKGLf4n33tpftRJcalh507rI+snbcUb7TLIkKw7VO17qMqxEXtIdd5auQ=="], 235 + 236 + "@atproto/common-web": ["@atproto/common-web@0.3.2", "", { "dependencies": { "graphemer": "^1.4.0", "multiformats": "^9.9.0", "uint8arrays": "3.0.0", "zod": "^3.23.8" } }, "sha512-Vx0JtL1/CssJbFAb0UOdvTrkbUautsDfHNOXNTcX2vyPIxH9xOameSqLLunM1hZnOQbJwyjmQCt6TV+bhnanDg=="], 237 + 238 + "@atproto/did": ["@atproto/did@0.1.5", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-8+1D08QdGE5TF0bB0vV8HLVrVZJeLNITpRTUVEoABNMRaUS7CoYSVb0+JNQDeJIVmqMjOL8dOjvCUDkp3gEaGQ=="], 239 + 240 + "@atproto/jwk": ["@atproto/jwk@0.3.0", "", { "dependencies": { "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-MIAXyNMGu1tCNHjqW/8jqfE/wgWCIoK2cJ0mR6UxwhNPvkbe35TcpRYJdtQu/E6MUd7TziyDBa/GO4dKAiePhQ=="], 241 + 242 + "@atproto/jwk-jose": ["@atproto/jwk-jose@0.1.8", "", { "dependencies": { "@atproto/jwk": "0.3.0", "jose": "^5.2.0" } }, "sha512-aoU2Q0GpIl388KhCcv9YvAxNscALUv3xzLq5gjVPdJ+zmqw94nGZNcjiNvpnbfS+VQM9e2DrrTuwmDXnxfrrSA=="], 243 + 244 + "@atproto/jwk-webcrypto": ["@atproto/jwk-webcrypto@0.1.8", "", { "dependencies": { "@atproto/jwk": "0.3.0", "@atproto/jwk-jose": "0.1.8", "zod": "^3.23.8" } }, "sha512-oOW/G40f6M0NbTOo8uZgiSsFtcvlfNFldyxm+V+fVo5yKe6cvgvPNqckpqMsoBe6JYfImdc/zdVak9fCSSh41A=="], 245 + 246 + "@atproto/lexicon": ["@atproto/lexicon@0.4.14", "", { "dependencies": { "@atproto/common-web": "^0.4.2", "@atproto/syntax": "^0.4.0", "iso-datestring-validator": "^2.2.2", "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-jiKpmH1QER3Gvc7JVY5brwrfo+etFoe57tKPQX/SmPwjvUsFnJAow5xLIryuBaJgFAhnTZViXKs41t//pahGHQ=="], 247 + 248 + "@atproto/oauth-client": ["@atproto/oauth-client@0.4.0", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.13", "@atproto-labs/fetch": "0.2.3", "@atproto-labs/handle-resolver": "0.1.8", "@atproto-labs/identity-resolver": "0.1.18", "@atproto-labs/simple-store": "0.2.0", "@atproto-labs/simple-store-memory": "0.1.3", "@atproto/did": "0.1.5", "@atproto/jwk": "0.3.0", "@atproto/oauth-types": "0.3.0", "@atproto/xrpc": "0.7.0", "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-uWVnlhennWkgvzqP0l53sFaw6DM6B4zmq0fv1xs05vt56Sjly8YirAj0GVDXlb37/BQRJQ1WOBzJVYDI3bH9uw=="], 249 + 250 + "@atproto/oauth-client-node": ["@atproto/oauth-client-node@0.2.24", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.13", "@atproto-labs/handle-resolver-node": "0.1.16", "@atproto-labs/simple-store": "0.2.0", "@atproto/did": "0.1.5", "@atproto/jwk": "0.3.0", "@atproto/jwk-jose": "0.1.8", "@atproto/jwk-webcrypto": "0.1.8", "@atproto/oauth-client": "0.4.0", "@atproto/oauth-types": "0.3.0" } }, "sha512-WsUiFkHjlm80J2d4czP7msYZoxvKB4hDpZGw34RgMD4VLA2jt03GMH4wTQPIZxfV3/9yrgMoOW/BDC9Iv4MavA=="], 251 + 252 + "@atproto/oauth-types": ["@atproto/oauth-types@0.3.0", "", { "dependencies": { "@atproto/jwk": "0.3.0", "zod": "^3.23.8" } }, "sha512-ptfsJARKODXfuOoDQag4a6PpEkDEj4Urz3jOmnQZy2YspPc/TNm1o0HglU0YehELv1vfhh9gEz40BJztPPhiLA=="], 253 + 254 + "@atproto/syntax": ["@atproto/syntax@0.4.0", "", {}, "sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA=="], 255 + 256 + "@atproto/xrpc": ["@atproto/xrpc@0.7.0", "", { "dependencies": { "@atproto/lexicon": "^0.4.11", "zod": "^3.23.8" } }, "sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw=="], 257 + 258 + "@babel/code-frame": ["@babel/code-frame@7.27.1", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg=="], 259 + 260 + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], 261 + 262 + "@babel/core": ["@babel/core@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.4", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw=="], 263 + 264 + "@babel/generator": ["@babel/generator@7.28.5", "", { "dependencies": { "@babel/parser": "^7.28.5", "@babel/types": "^7.28.5", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ=="], 265 + 266 + "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="], 267 + 268 + "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.27.2", "", { "dependencies": { "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" } }, "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ=="], 269 + 270 + "@babel/helper-create-class-features-plugin": ["@babel/helper-create-class-features-plugin@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-member-expression-to-functions": "^7.28.5", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/traverse": "^7.28.5", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ=="], 271 + 272 + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], 273 + 274 + "@babel/helper-member-expression-to-functions": ["@babel/helper-member-expression-to-functions@7.28.5", "", { "dependencies": { "@babel/traverse": "^7.28.5", "@babel/types": "^7.28.5" } }, "sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg=="], 275 + 276 + "@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="], 277 + 278 + "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.28.3", "", { "dependencies": { "@babel/helper-module-imports": "^7.27.1", "@babel/helper-validator-identifier": "^7.27.1", "@babel/traverse": "^7.28.3" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw=="], 279 + 280 + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], 281 + 282 + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], 283 + 284 + "@babel/helper-replace-supers": ["@babel/helper-replace-supers@7.27.1", "", { "dependencies": { "@babel/helper-member-expression-to-functions": "^7.27.1", "@babel/helper-optimise-call-expression": "^7.27.1", "@babel/traverse": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0" } }, "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA=="], 285 + 286 + "@babel/helper-skip-transparent-expression-wrappers": ["@babel/helper-skip-transparent-expression-wrappers@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg=="], 287 + 288 + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], 289 + 290 + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], 291 + 292 + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], 293 + 294 + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], 295 + 296 + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], 297 + 298 + "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w=="], 299 + 300 + "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ=="], 301 + 302 + "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.27.1", "", { "dependencies": { "@babel/helper-module-transforms": "^7.27.1", "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw=="], 303 + 304 + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw=="], 305 + 306 + "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.27.1", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw=="], 307 + 308 + "@babel/plugin-transform-typescript": ["@babel/plugin-transform-typescript@7.28.5", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", "@babel/helper-create-class-features-plugin": "^7.28.5", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA=="], 309 + 310 + "@babel/preset-typescript": ["@babel/preset-typescript@7.28.5", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-option": "^7.27.1", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-transform-modules-commonjs": "^7.27.1", "@babel/plugin-transform-typescript": "^7.28.5" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g=="], 311 + 312 + "@babel/template": ["@babel/template@7.27.2", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/parser": "^7.27.2", "@babel/types": "^7.27.1" } }, "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw=="], 313 + 314 + "@babel/traverse": ["@babel/traverse@7.28.5", "", { "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", "@babel/helper-globals": "^7.28.0", "@babel/parser": "^7.28.5", "@babel/template": "^7.27.2", "@babel/types": "^7.28.5", "debug": "^4.3.1" } }, "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ=="], 315 + 316 + "@babel/types": ["@babel/types@7.28.5", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA=="], 317 + 318 + "@badrap/valita": ["@badrap/valita@0.4.6", "", {}, "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg=="], 319 + 320 + "@cbor-extract/cbor-extract-darwin-arm64": ["@cbor-extract/cbor-extract-darwin-arm64@2.2.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w=="], 321 + 322 + "@cbor-extract/cbor-extract-darwin-x64": ["@cbor-extract/cbor-extract-darwin-x64@2.2.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w=="], 323 + 324 + "@cbor-extract/cbor-extract-linux-arm": ["@cbor-extract/cbor-extract-linux-arm@2.2.0", "", { "os": "linux", "cpu": "arm" }, "sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q=="], 325 + 326 + "@cbor-extract/cbor-extract-linux-arm64": ["@cbor-extract/cbor-extract-linux-arm64@2.2.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ=="], 327 + 328 + "@cbor-extract/cbor-extract-linux-x64": ["@cbor-extract/cbor-extract-linux-x64@2.2.0", "", { "os": "linux", "cpu": "x64" }, "sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw=="], 329 + 330 + "@cbor-extract/cbor-extract-win32-x64": ["@cbor-extract/cbor-extract-win32-x64@2.2.0", "", { "os": "win32", "cpu": "x64" }, "sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w=="], 331 + 332 + "@cookware/api": ["@cookware/api@workspace:apps/api"], 333 + 334 + "@cookware/database": ["@cookware/database@workspace:libs/database"], 335 + 336 + "@cookware/ingester": ["@cookware/ingester@workspace:apps/ingester"], 337 + 338 + "@cookware/lexicons": ["@cookware/lexicons@workspace:libs/lexicons"], 339 + 340 + "@cookware/tsconfig": ["@cookware/tsconfig@workspace:libs/tsconfig"], 341 + 342 + "@cookware/web": ["@cookware/web@workspace:apps/web"], 343 + 344 + "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], 345 + 346 + "@dnd-kit/core": ["@dnd-kit/core@6.3.1", "", { "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ=="], 347 + 348 + "@dnd-kit/modifiers": ["@dnd-kit/modifiers@9.0.0", "", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw=="], 349 + 350 + "@dnd-kit/sortable": ["@dnd-kit/sortable@10.0.0", "", { "dependencies": { "@dnd-kit/utilities": "^3.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@dnd-kit/core": "^6.3.0", "react": ">=16.8.0" } }, "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg=="], 351 + 352 + "@dnd-kit/utilities": ["@dnd-kit/utilities@3.2.2", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="], 353 + 354 + "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], 355 + 356 + "@esbuild-kit/core-utils": ["@esbuild-kit/core-utils@3.3.2", "", { "dependencies": { "esbuild": "~0.18.20", "source-map-support": "^0.5.21" } }, "sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ=="], 357 + 358 + "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "^3.3.2", "get-tsconfig": "^4.7.0" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], 359 + 360 + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="], 361 + 362 + "@esbuild/android-arm": ["@esbuild/android-arm@0.19.12", "", { "os": "android", "cpu": "arm" }, "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w=="], 363 + 364 + "@esbuild/android-arm64": ["@esbuild/android-arm64@0.19.12", "", { "os": "android", "cpu": "arm64" }, "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA=="], 365 + 366 + "@esbuild/android-x64": ["@esbuild/android-x64@0.19.12", "", { "os": "android", "cpu": "x64" }, "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew=="], 367 + 368 + "@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.19.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g=="], 369 + 370 + "@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.19.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A=="], 371 + 372 + "@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.19.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA=="], 373 + 374 + "@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.19.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg=="], 375 + 376 + "@esbuild/linux-arm": ["@esbuild/linux-arm@0.19.12", "", { "os": "linux", "cpu": "arm" }, "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w=="], 377 + 378 + "@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.19.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA=="], 379 + 380 + "@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.19.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA=="], 381 + 382 + "@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA=="], 383 + 384 + "@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w=="], 385 + 386 + "@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.19.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg=="], 387 + 388 + "@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.19.12", "", { "os": "linux", "cpu": "none" }, "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg=="], 389 + 390 + "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.19.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg=="], 391 + 392 + "@esbuild/linux-x64": ["@esbuild/linux-x64@0.19.12", "", { "os": "linux", "cpu": "x64" }, "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg=="], 393 + 394 + "@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg=="], 395 + 396 + "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.19.12", "", { "os": "none", "cpu": "x64" }, "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA=="], 397 + 398 + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], 399 + 400 + "@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.19.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw=="], 401 + 402 + "@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.25.12", "", { "os": "none", "cpu": "arm64" }, "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg=="], 403 + 404 + "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.19.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA=="], 405 + 406 + "@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.19.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A=="], 407 + 408 + "@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.19.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ=="], 409 + 410 + "@esbuild/win32-x64": ["@esbuild/win32-x64@0.19.12", "", { "os": "win32", "cpu": "x64" }, "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA=="], 411 + 412 + "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.0", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g=="], 413 + 414 + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], 415 + 416 + "@eslint/config-array": ["@eslint/config-array@0.21.1", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" } }, "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA=="], 417 + 418 + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], 419 + 420 + "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], 421 + 422 + "@eslint/eslintrc": ["@eslint/eslintrc@3.3.1", "", { "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" } }, "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ=="], 423 + 424 + "@eslint/js": ["@eslint/js@9.39.1", "", {}, "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw=="], 425 + 426 + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], 427 + 428 + "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="], 429 + 430 + "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], 431 + 432 + "@floating-ui/dom": ["@floating-ui/dom@1.7.4", "", { "dependencies": { "@floating-ui/core": "^1.7.3", "@floating-ui/utils": "^0.2.10" } }, "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA=="], 433 + 434 + "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.6", "", { "dependencies": { "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw=="], 435 + 436 + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], 437 + 438 + "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], 439 + 440 + "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], 441 + 442 + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], 443 + 444 + "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], 445 + 446 + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], 447 + 448 + "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], 449 + 450 + "@inquirer/checkbox": ["@inquirer/checkbox@4.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA=="], 451 + 452 + "@inquirer/confirm": ["@inquirer/confirm@5.1.21", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ=="], 453 + 454 + "@inquirer/core": ["@inquirer/core@10.3.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A=="], 455 + 456 + "@inquirer/editor": ["@inquirer/editor@4.2.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ=="], 457 + 458 + "@inquirer/expand": ["@inquirer/expand@4.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew=="], 459 + 460 + "@inquirer/external-editor": ["@inquirer/external-editor@1.0.3", "", { "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA=="], 461 + 462 + "@inquirer/figures": ["@inquirer/figures@1.0.15", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="], 463 + 464 + "@inquirer/input": ["@inquirer/input@4.3.1", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g=="], 465 + 466 + "@inquirer/number": ["@inquirer/number@3.0.23", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg=="], 467 + 468 + "@inquirer/password": ["@inquirer/password@4.0.23", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA=="], 469 + 470 + "@inquirer/prompts": ["@inquirer/prompts@7.10.1", "", { "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", "@inquirer/editor": "^4.2.23", "@inquirer/expand": "^4.0.23", "@inquirer/input": "^4.3.1", "@inquirer/number": "^3.0.23", "@inquirer/password": "^4.0.23", "@inquirer/rawlist": "^4.1.11", "@inquirer/search": "^3.2.2", "@inquirer/select": "^4.4.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg=="], 471 + 472 + "@inquirer/rawlist": ["@inquirer/rawlist@4.1.11", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw=="], 473 + 474 + "@inquirer/search": ["@inquirer/search@3.2.2", "", { "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA=="], 475 + 476 + "@inquirer/select": ["@inquirer/select@4.4.2", "", { "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", "@inquirer/type": "^3.0.10", "yoctocolors-cjs": "^2.1.3" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w=="], 477 + 478 + "@inquirer/type": ["@inquirer/type@3.0.10", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA=="], 479 + 480 + "@ipld/dag-cbor": ["@ipld/dag-cbor@7.0.3", "", { "dependencies": { "cborg": "^1.6.0", "multiformats": "^9.5.4" } }, "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA=="], 481 + 482 + "@isaacs/balanced-match": ["@isaacs/balanced-match@4.0.1", "", {}, "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ=="], 483 + 484 + "@isaacs/brace-expansion": ["@isaacs/brace-expansion@5.0.0", "", { "dependencies": { "@isaacs/balanced-match": "^4.0.1" } }, "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA=="], 485 + 486 + "@isaacs/fs-minipass": ["@isaacs/fs-minipass@4.0.1", "", { "dependencies": { "minipass": "^7.0.4" } }, "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w=="], 487 + 488 + "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.13", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA=="], 489 + 490 + "@jridgewell/remapping": ["@jridgewell/remapping@2.3.5", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" } }, "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ=="], 491 + 492 + "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], 493 + 494 + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], 495 + 496 + "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], 497 + 498 + "@libsql/client": ["@libsql/client@0.14.0", "", { "dependencies": { "@libsql/core": "^0.14.0", "@libsql/hrana-client": "^0.7.0", "js-base64": "^3.7.5", "libsql": "^0.4.4", "promise-limit": "^2.7.0" } }, "sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q=="], 499 + 500 + "@libsql/core": ["@libsql/core@0.14.0", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q=="], 501 + 502 + "@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.4.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg=="], 503 + 504 + "@libsql/darwin-x64": ["@libsql/darwin-x64@0.4.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA=="], 505 + 506 + "@libsql/hrana-client": ["@libsql/hrana-client@0.7.0", "", { "dependencies": { "@libsql/isomorphic-fetch": "^0.3.1", "@libsql/isomorphic-ws": "^0.1.5", "js-base64": "^3.7.5", "node-fetch": "^3.3.2" } }, "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw=="], 507 + 508 + "@libsql/isomorphic-fetch": ["@libsql/isomorphic-fetch@0.3.1", "", {}, "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw=="], 509 + 510 + "@libsql/isomorphic-ws": ["@libsql/isomorphic-ws@0.1.5", "", { "dependencies": { "@types/ws": "^8.5.4", "ws": "^8.13.0" } }, "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg=="], 511 + 512 + "@libsql/linux-arm-gnueabihf": ["@libsql/linux-arm-gnueabihf@0.5.22", "", { "os": "linux", "cpu": "arm" }, "sha512-3Uo3SoDPJe/zBnyZKosziRGtszXaEtv57raWrZIahtQDsjxBVjuzYQinCm9LRCJCUT5t2r5Z5nLDPJi2CwZVoA=="], 513 + 514 + "@libsql/linux-arm-musleabihf": ["@libsql/linux-arm-musleabihf@0.5.22", "", { "os": "linux", "cpu": "arm" }, "sha512-LCsXh07jvSojTNJptT9CowOzwITznD+YFGGW+1XxUr7fS+7/ydUrpDfsMX7UqTqjm7xG17eq86VkWJgHJfvpNg=="], 515 + 516 + "@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.4.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA=="], 517 + 518 + "@libsql/linux-arm64-musl": ["@libsql/linux-arm64-musl@0.4.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-6kK9xAArVRlTCpWeqnNMCoXW1pe7WITI378n4NpvU5EJ0Ok3aNTIC2nRPRjhro90QcnmLL1jPcrVwO4WD1U0xw=="], 519 + 520 + "@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.4.7", "", { "os": "linux", "cpu": "x64" }, "sha512-CMnNRCmlWQqqzlTw6NeaZXzLWI8bydaXDke63JTUCvu8R+fj/ENsLrVBtPDlxQ0wGsYdXGlrUCH8Qi9gJep0yQ=="], 521 + 522 + "@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.4.7", "", { "os": "linux", "cpu": "x64" }, "sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA=="], 523 + 524 + "@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.4.7", "", { "os": "win32", "cpu": "x64" }, "sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw=="], 525 + 526 + "@mary-ext/event-iterator": ["@mary-ext/event-iterator@1.0.0", "", { "dependencies": { "yocto-queue": "^1.2.1" } }, "sha512-l6gCPsWJ8aRCe/s7/oCmero70kDHgIK5m4uJvYgwEYTqVxoBOIXbKr5tnkLqUHEg6mNduB4IWvms3h70Hp9ADQ=="], 527 + 528 + "@mary-ext/simple-event-emitter": ["@mary-ext/simple-event-emitter@1.0.0", "", {}, "sha512-meA/zJZKIN1RVBNEYIbjufkUrW7/tRjHH60FjolpG1ixJKo76TB208qefQLNdOVDA7uIG0CGEDuhmMirtHKLAg=="], 529 + 530 + "@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="], 531 + 532 + "@noble/secp256k1": ["@noble/secp256k1@3.0.0", "", {}, "sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg=="], 533 + 534 + "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], 535 + 536 + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], 537 + 538 + "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], 539 + 540 + "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], 541 + 542 + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A=="], 543 + 544 + "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.30.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA=="], 545 + 546 + "@opentelemetry/core": ["@opentelemetry/core@1.30.1", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ=="], 547 + 548 + "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.57.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg=="], 549 + 550 + "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.46.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-AyXVnlCf/xV3K/rNumzKxZqsULyITJH6OVLiW6730JPRqWA7Zc9bvYoVNpN6iOpTU8CasH34SU/ksVJmObFibQ=="], 551 + 552 + "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.43.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/connect": "3.4.36" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Q57JGpH6T4dkYHo9tKXONgLtxzsh1ZEW5M9A/OwKrZFyEpLqWgjhcZ3hIuVvDlhb426iDF1f9FPToV/mi5rpeA=="], 553 + 554 + "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.16.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-88+qCHZC02up8PwKHk0UQKLLqGGURzS3hFQBZC7PnGwReuoKjHXS1o29H58S+QkXJpkTr2GACbx8j6mUoGjNPA=="], 555 + 556 + "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.47.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-XFWVx6k0XlU8lu6cBlCa29ONtVt6ADEjmxtyAyeF2+rifk8uBJbk1La0yIVfI0DoKURGbaEDTNelaXG9l/lNNQ=="], 557 + 558 + "@opentelemetry/instrumentation-fastify": ["@opentelemetry/instrumentation-fastify@0.44.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-RoVeMGKcNttNfXMSl6W4fsYoCAYP1vi6ZAWIGhBY+o7R9Y0afA7f9JJL0j8LHbyb0P0QhSYk+6O56OwI2k4iRQ=="], 559 + 560 + "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.19.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-JGwmHhBkRT2G/BYNV1aGI+bBjJu4fJUD/5/Jat0EWZa2ftrLV3YE8z84Fiij/wK32oMZ88eS8DI4ecLGZhpqsQ=="], 561 + 562 + "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.43.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-at8GceTtNxD1NfFKGAuwtqM41ot/TpcLh+YsGe4dhf7gvv1HW/ZWdq6nfRtS6UjIvZJOokViqLPJ3GVtZItAnQ=="], 563 + 564 + "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.47.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Cc8SMf+nLqp0fi8oAnooNEfwZWFnzMiBHCGmDFYqmgjPylyLmi83b+NiTns/rKGwlErpW0AGPt0sMpkbNlzn8w=="], 565 + 566 + "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.45.1", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-VH6mU3YqAKTePPfUPwfq4/xr049774qWtfTuJqVHoVspCLiT3bW+fCQ1toZxt6cxRPYASoYaBsMA3CWo8B8rcw=="], 567 + 568 + "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.57.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/instrumentation": "0.57.1", "@opentelemetry/semantic-conventions": "1.28.0", "forwarded-parse": "2.1.2", "semver": "^7.5.2" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-ThLmzAQDs7b/tdKI3BV2+yawuF09jF111OFsovqT1Qj3D8vjwKBwhi/rDE5xethwn4tSXtZcJ9hBsVAlWFQZ7g=="], 569 + 570 + "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.47.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-4HqP9IBC8e7pW9p90P3q4ox0XlbLGme65YTrA3UTLvqvo4Z6b0puqZQP203YFu8m9rE/luLfaG7/xrwwqMUpJw=="], 571 + 572 + "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.7.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-LB+3xiNzc034zHfCtgs4ITWhq6Xvdo8bsq7amR058jZlf2aXXDrN9SV4si4z2ya9QX4tz6r4eZJwDkXOp14/AQ=="], 573 + 574 + "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.44.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-SlT0+bLA0Lg3VthGje+bSZatlGHw/vwgQywx0R/5u9QC59FddTQSPJeWNw29M6f8ScORMeUOOTwihlQAn4GkJQ=="], 575 + 576 + "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.47.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-HFdvqf2+w8sWOuwtEXayGzdZ2vWpCKEQv5F7+2DSA74Te/Cv4rvb2E5So5/lh+ok4/RAIPuvCbCb/SHQFzMmbw=="], 577 + 578 + "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.44.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-Tn7emHAlvYDFik3vGU0mdwvWJDwtITtkJ+5eT2cUquct6nIs+H8M47sqMJkCpyPe5QIBJoTOHxmc6mj9lz6zDw=="], 579 + 580 + "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.51.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-cMKASxCX4aFxesoj3WK8uoQ0YUrRvnfxaO72QWI2xLu5ZtgX/QvdGBlU3Ehdond5eb74c2s1cqRQUIptBnKz1g=="], 581 + 582 + "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.46.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-mtVv6UeaaSaWTeZtLo4cx4P5/ING2obSqfWGItIFSunQBrYROfhuVe7wdIrFUs2RH1tn2YYpAJyMaRe/bnTTIQ=="], 583 + 584 + "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.45.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/mysql": "2.15.26" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-tWWyymgwYcTwZ4t8/rLDfPYbOTF3oYB8SxnYMtIQ1zEf5uDm90Ku3i6U/vhaMyfHNlIHvDhvJh+qx5Nc4Z3Acg=="], 585 + 586 + "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.45.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@opentelemetry/sql-common": "^0.40.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-qLslv/EPuLj0IXFvcE3b0EqhWI8LKmrgRPIa4gUd8DllbBpqJAvLNJSv3cC6vWwovpbSI3bagNO/3Q2SuXv2xA=="], 587 + 588 + "@opentelemetry/instrumentation-nestjs-core": ["@opentelemetry/instrumentation-nestjs-core@0.44.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-t16pQ7A4WYu1yyQJZhRKIfUNvl5PAaF2pEteLvgJb/BWdd1oNuU1rOYt4S825kMy+0q4ngiX281Ss9qiwHfxFQ=="], 589 + 590 + "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.50.0", "", { "dependencies": { "@opentelemetry/core": "^1.26.0", "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "1.27.0", "@opentelemetry/sql-common": "^0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.6" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-TtLxDdYZmBhFswm8UIsrDjh/HFBeDXd4BLmE8h2MxirNHewLJ0VS9UUddKKEverb5Sm2qFVjqRjcU+8Iw4FJ3w=="], 591 + 592 + "@opentelemetry/instrumentation-redis-4": ["@opentelemetry/instrumentation-redis-4@0.46.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/redis-common": "^0.36.2", "@opentelemetry/semantic-conventions": "^1.27.0" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-aTUWbzbFMFeRODn3720TZO0tsh/49T8H3h8vVnVKJ+yE36AeW38Uj/8zykQ/9nO8Vrtjr5yKuX3uMiG/W8FKNw=="], 593 + 594 + "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.18.0", "", { "dependencies": { "@opentelemetry/instrumentation": "^0.57.0", "@opentelemetry/semantic-conventions": "^1.27.0", "@types/tedious": "^4.0.14" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-9zhjDpUDOtD+coeADnYEJQ0IeLVCj7w/hqzIutdp5NqS1VqTAanaEfsEcSypyvYv5DX3YOsTUoF+nr2wDXPETA=="], 595 + 596 + "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.10.0", "", { "dependencies": { "@opentelemetry/core": "^1.8.0", "@opentelemetry/instrumentation": "^0.57.0" }, "peerDependencies": { "@opentelemetry/api": "^1.7.0" } }, "sha512-vm+V255NGw9gaSsPD6CP0oGo8L55BffBc8KnxqsMuc6XiAD1L8SFNzsW0RHhxJFqy9CJaJh+YiJ5EHXuZ5rZBw=="], 597 + 598 + "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.36.2", "", {}, "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g=="], 599 + 600 + "@opentelemetry/resources": ["@opentelemetry/resources@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA=="], 601 + 602 + "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.30.1", "", { "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg=="], 603 + 604 + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.38.0", "", {}, "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg=="], 605 + 606 + "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.40.1", "", { "dependencies": { "@opentelemetry/core": "^1.1.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg=="], 607 + 608 + "@optique/core": ["@optique/core@0.6.2", "", {}, "sha512-HTxIHJ8xLOSZotiU6Zc5BCJv+SJ8DMYmuiQM+7tjF7RolJn/pdZNe7M78G3+DgXL9lIf82l8aGcilmgVYRQnGQ=="], 609 + 610 + "@optique/run": ["@optique/run@0.6.2", "", { "dependencies": { "@optique/core": "0.6.2" } }, "sha512-ERksB5bHozwEUVlTPToIc8UjZZBOgLeBhFZYh2lgldUbNDt7LItzgcErsPq5au5i5IBmmyCti4+2A3x+MRI4Xw=="], 611 + 612 + "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], 613 + 614 + "@prisma/instrumentation": ["@prisma/instrumentation@5.22.0", "", { "dependencies": { "@opentelemetry/api": "^1.8", "@opentelemetry/instrumentation": "^0.49 || ^0.50 || ^0.51 || ^0.52.0 || ^0.53.0", "@opentelemetry/sdk-trace-base": "^1.22" } }, "sha512-LxccF392NN37ISGxIurUljZSh1YWnphO34V5a0+T7FVQG2u9bhAXRTJpgmQ3483woVhkraQZFF7cbRrpbw/F4Q=="], 615 + 616 + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], 617 + 618 + "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.7", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w=="], 619 + 620 + "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.11", "", { "dependencies": { "@radix-ui/react-context": "1.1.3", "@radix-ui/react-primitive": "2.1.4", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-is-hydrated": "0.1.0", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0Qk603AHGV28BOBO34p7IgD5m+V5Sg/YovfayABkoDDBM5d3NCx0Mp4gGrjzLGes1jV5eNOE1r3itqOR33VC6Q=="], 621 + 622 + "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.12", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA=="], 623 + 624 + "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw=="], 625 + 626 + "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg=="], 627 + 628 + "@radix-ui/react-context": ["@radix-ui/react-context@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ieIFACdMpYfMEjF0rEf5KLvfVyIkOz6PDGyNnP+u+4xQ6jny3VCgA4OgXOwNx2aUkxn8zx9fiVcM8CfFYv9Lxw=="], 629 + 630 + "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.15", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw=="], 631 + 632 + "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw=="], 633 + 634 + "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg=="], 635 + 636 + "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-menu": "2.1.16", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw=="], 637 + 638 + "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.3", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw=="], 639 + 640 + "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.7", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw=="], 641 + 642 + "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], 643 + 644 + "@radix-ui/react-id": ["@radix-ui/react-id@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg=="], 645 + 646 + "@radix-ui/react-label": ["@radix-ui/react-label@2.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-FmXs37I6hSBVDlO4y764TNz1rLgKwjJMQ0EGte6F3Cb3f4bIuHB/iLa/8I9VKkmOy+gNHq8rql3j686ACVV21A=="], 647 + 648 + "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.16", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-focus-guards": "1.1.3", "@radix-ui/react-focus-scope": "1.1.7", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-roving-focus": "1.1.11", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-callback-ref": "1.1.1", "aria-hidden": "^1.2.4", "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg=="], 649 + 650 + "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.8", "", { "dependencies": { "@floating-ui/react-dom": "^2.0.0", "@radix-ui/react-arrow": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.1", "@radix-ui/react-use-rect": "1.1.1", "@radix-ui/react-use-size": "1.1.1", "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw=="], 651 + 652 + "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.9", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ=="], 653 + 654 + "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.5", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ=="], 655 + 656 + "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.4", "", { "dependencies": { "@radix-ui/react-slot": "1.2.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-9hQc4+GNVtJAIEPEqlYqW5RiYdrr8ea5XQ0ZOnD6fgru+83kqT15mq2OCcbe8KnjRZl5vF3ks69AKz3kh1jrhg=="], 657 + 658 + "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.11", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-collection": "1.1.7", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-direction": "1.1.1", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-use-callback-ref": "1.1.1", "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA=="], 659 + 660 + "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.8", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.4" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-sDvqVY4itsKwwSMEe0jtKgfTh+72Sy3gPmQpjqcQneqQ4PFmr/1I0YA+2/puilhggCe2gJcx5EBAYFkWkdpa5g=="], 661 + 662 + "@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.4", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Jl+bCv8HxKnlTLVrcDE8zTMJ09R9/ukw4qBs/oZClOfoQk/cOTbDn+NceXfV7j09YPVQUryJPHurafcSg6EVKA=="], 663 + 664 + "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.2.8", "", { "dependencies": { "@radix-ui/primitive": "1.1.3", "@radix-ui/react-compose-refs": "1.1.2", "@radix-ui/react-context": "1.1.2", "@radix-ui/react-dismissable-layer": "1.1.11", "@radix-ui/react-id": "1.1.1", "@radix-ui/react-popper": "1.2.8", "@radix-ui/react-portal": "1.1.9", "@radix-ui/react-presence": "1.1.5", "@radix-ui/react-primitive": "2.1.3", "@radix-ui/react-slot": "1.2.3", "@radix-ui/react-use-controllable-state": "1.2.2", "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg=="], 665 + 666 + "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg=="], 667 + 668 + "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.2.2", "", { "dependencies": { "@radix-ui/react-use-effect-event": "0.0.2", "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg=="], 669 + 670 + "@radix-ui/react-use-effect-event": ["@radix-ui/react-use-effect-event@0.0.2", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA=="], 671 + 672 + "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.1", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g=="], 673 + 674 + "@radix-ui/react-use-is-hydrated": ["@radix-ui/react-use-is-hydrated@0.1.0", "", { "dependencies": { "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA=="], 675 + 676 + "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.1", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ=="], 677 + 678 + "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.1", "", { "dependencies": { "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w=="], 679 + 680 + "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.1", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ=="], 681 + 682 + "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.2.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug=="], 683 + 684 + "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], 685 + 686 + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.47", "", {}, "sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw=="], 687 + 688 + "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.53.3", "", { "os": "android", "cpu": "arm" }, "sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w=="], 689 + 690 + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.3", "", { "os": "android", "cpu": "arm64" }, "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w=="], 691 + 692 + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA=="], 693 + 694 + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ=="], 695 + 696 + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w=="], 697 + 698 + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q=="], 699 + 700 + "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw=="], 701 + 702 + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg=="], 703 + 704 + "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w=="], 705 + 706 + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A=="], 707 + 708 + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g=="], 709 + 710 + "@rollup/rollup-linux-ppc64-gnu": ["@rollup/rollup-linux-ppc64-gnu@4.53.3", "", { "os": "linux", "cpu": "ppc64" }, "sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw=="], 711 + 712 + "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g=="], 713 + 714 + "@rollup/rollup-linux-riscv64-musl": ["@rollup/rollup-linux-riscv64-musl@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A=="], 715 + 716 + "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.53.3", "", { "os": "linux", "cpu": "s390x" }, "sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg=="], 717 + 718 + "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w=="], 719 + 720 + "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.53.3", "", { "os": "linux", "cpu": "x64" }, "sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q=="], 721 + 722 + "@rollup/rollup-openharmony-arm64": ["@rollup/rollup-openharmony-arm64@4.53.3", "", { "os": "none", "cpu": "arm64" }, "sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw=="], 723 + 724 + "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.53.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-GOFuKpsxR/whszbF/bzydebLiXIHSgsEUp6M0JI8dWvi+fFa1TD6YQa4aSZHtpmh2/uAlj/Dy+nmby3TJ3pkTw=="], 725 + 726 + "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.53.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-iah+THLcBJdpfZ1TstDFbKNznlzoxa8fmnFYK4V67HvmuNYkVdAywJSoteUszvBQ9/HqN2+9AZghbajMsFT+oA=="], 727 + 728 + "@rollup/rollup-win32-x64-gnu": ["@rollup/rollup-win32-x64-gnu@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-J9QDiOIZlZLdcot5NXEepDkstocktoVjkaKUtqzgzpt2yWjGlbYiKyp05rWwk4nypbYUNoFAztEgixoLaSETkg=="], 729 + 730 + "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.53.3", "", { "os": "win32", "cpu": "x64" }, "sha512-UhTd8u31dXadv0MopwGgNOBpUVROFKWVQgAg5N1ESyCz8AuBcMqm4AuTjrwgQKGDfoFuz02EuMRHQIw/frmYKQ=="], 731 + 732 + "@sentry/core": ["@sentry/core@8.55.0", "", {}, "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA=="], 733 + 734 + "@sentry/node": ["@sentry/node@8.55.0", "", { "dependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1", "@opentelemetry/core": "^1.30.1", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/instrumentation-amqplib": "^0.46.0", "@opentelemetry/instrumentation-connect": "0.43.0", "@opentelemetry/instrumentation-dataloader": "0.16.0", "@opentelemetry/instrumentation-express": "0.47.0", "@opentelemetry/instrumentation-fastify": "0.44.1", "@opentelemetry/instrumentation-fs": "0.19.0", "@opentelemetry/instrumentation-generic-pool": "0.43.0", "@opentelemetry/instrumentation-graphql": "0.47.0", "@opentelemetry/instrumentation-hapi": "0.45.1", "@opentelemetry/instrumentation-http": "0.57.1", "@opentelemetry/instrumentation-ioredis": "0.47.0", "@opentelemetry/instrumentation-kafkajs": "0.7.0", "@opentelemetry/instrumentation-knex": "0.44.0", "@opentelemetry/instrumentation-koa": "0.47.0", "@opentelemetry/instrumentation-lru-memoizer": "0.44.0", "@opentelemetry/instrumentation-mongodb": "0.51.0", "@opentelemetry/instrumentation-mongoose": "0.46.0", "@opentelemetry/instrumentation-mysql": "0.45.0", "@opentelemetry/instrumentation-mysql2": "0.45.0", "@opentelemetry/instrumentation-nestjs-core": "0.44.0", "@opentelemetry/instrumentation-pg": "0.50.0", "@opentelemetry/instrumentation-redis-4": "0.46.0", "@opentelemetry/instrumentation-tedious": "0.18.0", "@opentelemetry/instrumentation-undici": "0.10.0", "@opentelemetry/resources": "^1.30.1", "@opentelemetry/sdk-trace-base": "^1.30.1", "@opentelemetry/semantic-conventions": "^1.28.0", "@prisma/instrumentation": "5.22.0", "@sentry/core": "8.55.0", "@sentry/opentelemetry": "8.55.0", "import-in-the-middle": "^1.11.2" } }, "sha512-h10LJLDTRAzYgay60Oy7moMookqqSZSviCWkkmHZyaDn+4WURnPp5SKhhfrzPRQcXKrweiOwDSHBgn1tweDssg=="], 735 + 736 + "@sentry/opentelemetry": ["@sentry/opentelemetry@8.55.0", "", { "dependencies": { "@sentry/core": "8.55.0" }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", "@opentelemetry/context-async-hooks": "^1.30.1", "@opentelemetry/core": "^1.30.1", "@opentelemetry/instrumentation": "^0.57.1", "@opentelemetry/sdk-trace-base": "^1.30.1", "@opentelemetry/semantic-conventions": "^1.28.0" } }, "sha512-UvatdmSr3Xf+4PLBzJNLZ2JjG1yAPWGe/VrJlJAqyTJ2gKeTzgXJJw8rp4pbvNZO8NaTGEYhhO+scLUj0UtLAQ=="], 737 + 738 + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], 739 + 740 + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], 741 + 742 + "@swc/core": ["@swc/core@1.15.3", "", { "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.25" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.15.3", "@swc/core-darwin-x64": "1.15.3", "@swc/core-linux-arm-gnueabihf": "1.15.3", "@swc/core-linux-arm64-gnu": "1.15.3", "@swc/core-linux-arm64-musl": "1.15.3", "@swc/core-linux-x64-gnu": "1.15.3", "@swc/core-linux-x64-musl": "1.15.3", "@swc/core-win32-arm64-msvc": "1.15.3", "@swc/core-win32-ia32-msvc": "1.15.3", "@swc/core-win32-x64-msvc": "1.15.3" }, "peerDependencies": { "@swc/helpers": ">=0.5.17" }, "optionalPeers": ["@swc/helpers"] }, "sha512-Qd8eBPkUFL4eAONgGjycZXj1jFCBW8Fd+xF0PzdTlBCWQIV1xnUT7B93wUANtW3KGjl3TRcOyxwSx/u/jyKw/Q=="], 743 + 744 + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.15.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ=="], 745 + 746 + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.15.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A=="], 747 + 748 + "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.15.3", "", { "os": "linux", "cpu": "arm" }, "sha512-Nuj5iF4JteFgwrai97mUX+xUOl+rQRHqTvnvHMATL/l9xE6/TJfPBpd3hk/PVpClMXG3Uvk1MxUFOEzM1JrMYg=="], 749 + 750 + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.15.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw=="], 751 + 752 + "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.15.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-j4SJniZ/qaZ5g8op+p1G9K1z22s/EYGg1UXIb3+Cg4nsxEpF5uSIGEE4mHUfA70L0BR9wKT2QF/zv3vkhfpX4g=="], 753 + 754 + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.15.3", "", { "os": "linux", "cpu": "x64" }, "sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A=="], 755 + 756 + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.15.3", "", { "os": "linux", "cpu": "x64" }, "sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug=="], 757 + 758 + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.15.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA=="], 759 + 760 + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.15.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw=="], 761 + 762 + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.15.3", "", { "os": "win32", "cpu": "x64" }, "sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog=="], 763 + 764 + "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], 765 + 766 + "@swc/types": ["@swc/types@0.1.25", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g=="], 767 + 768 + "@tanstack/eslint-plugin-query": ["@tanstack/eslint-plugin-query@5.91.2", "", { "dependencies": { "@typescript-eslint/utils": "^8.44.1" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0" } }, "sha512-UPeWKl/Acu1IuuHJlsN+eITUHqAaa9/04geHHPedY8siVarSaWprY0SVMKrkpKfk5ehRT7+/MZ5QwWuEtkWrFw=="], 769 + 770 + "@tanstack/history": ["@tanstack/history@1.139.0", "", {}, "sha512-l6wcxwDBeh/7Dhles23U1O8lp9kNJmAb2yNjekR6olZwCRNAVA8TCXlVCrueELyFlYZqvQkh0ofxnzG62A1Kkg=="], 771 + 772 + "@tanstack/query-core": ["@tanstack/query-core@5.90.10", "", {}, "sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ=="], 773 + 774 + "@tanstack/query-devtools": ["@tanstack/query-devtools@5.91.0", "", {}, "sha512-uNWkqWTiIKCv8Iaahb7bftmDaZVkBetB+l+OQhQeCEZAedyqxw2eyaRUc8sAQ2LzD843tVdYL6bzOtRWJHJSbQ=="], 775 + 776 + "@tanstack/react-query": ["@tanstack/react-query@5.90.10", "", { "dependencies": { "@tanstack/query-core": "5.90.10" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-BKLss9Y8PQ9IUjPYQiv3/Zmlx92uxffUOX8ZZNoQlCIZBJPT5M+GOMQj7xislvVQ6l1BstBjcX0XB/aHfFYVNw=="], 777 + 778 + "@tanstack/react-query-devtools": ["@tanstack/react-query-devtools@5.91.0", "", { "dependencies": { "@tanstack/query-devtools": "5.91.0" }, "peerDependencies": { "@tanstack/react-query": "^5.90.10", "react": "^18 || ^19" } }, "sha512-s7g8Zn8HN05HNe22n/KdNm8wXaRbkcsVkqpkdYIQuCfjVmEUoTQqtJsN2iZtgd9CU36xNS38trWIofxzyW5vbQ=="], 779 + 780 + "@tanstack/react-router": ["@tanstack/react-router@1.139.3", "", { "dependencies": { "@tanstack/history": "1.139.0", "@tanstack/react-store": "^0.8.0", "@tanstack/router-core": "1.139.3", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-lhqK0DnbA7PgHOnmhzOoWVzx8qd8oEpR4cOUbxAjwb3+ExFQWrEvRf9+ZdSxs49ZrtZL2S2UltxBv3vBV4Si5g=="], 781 + 782 + "@tanstack/react-router-devtools": ["@tanstack/react-router-devtools@1.139.3", "", { "dependencies": { "@tanstack/router-devtools-core": "1.139.3", "vite": "^7.1.7" }, "peerDependencies": { "@tanstack/react-router": "^1.139.3", "@tanstack/router-core": "^1.139.3", "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" }, "optionalPeers": ["@tanstack/router-core"] }, "sha512-taH/Zklh3TOEaGXo3Nmck67J6Cgj7LDY9E7pIwncocWXt/6s91kYKHsiSkCWfAbZ/bLIrj4YWu21ObnvU0PlHw=="], 783 + 784 + "@tanstack/react-store": ["@tanstack/react-store@0.8.0", "", { "dependencies": { "@tanstack/store": "0.8.0", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-1vG9beLIuB7q69skxK9r5xiLN3ztzIPfSQSs0GfeqWGO2tGIyInZx0x1COhpx97RKaONSoAb8C3dxacWksm1ow=="], 785 + 786 + "@tanstack/router-core": ["@tanstack/router-core@1.139.3", "", { "dependencies": { "@tanstack/history": "1.139.0", "@tanstack/store": "^0.8.0", "cookie-es": "^2.0.0", "seroval": "^1.4.0", "seroval-plugins": "^1.4.0", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" } }, "sha512-j3v1e739jmozBdtnmA45xHQHjCC2aKqBtfkMT3t2ZPijVrueaVP6qNRIAWmDK4ZSqd67TF5wP8vyqeTShJsEQQ=="], 787 + 788 + "@tanstack/router-devtools": ["@tanstack/router-devtools@1.139.3", "", { "dependencies": { "@tanstack/react-router-devtools": "1.139.3", "clsx": "^2.1.1", "goober": "^2.1.16", "vite": "^7.1.7" }, "peerDependencies": { "@tanstack/react-router": "^1.139.3", "csstype": "^3.0.10", "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" }, "optionalPeers": ["csstype"] }, "sha512-cJ8mQNMm/4nMFDwQxSMLWP4pk9kAXLl/SkRQqOwEbhzO35enSo7r2UdcM0uTwNEEKGjdjmNrNanFzDIZJnFHCg=="], 789 + 790 + "@tanstack/router-devtools-core": ["@tanstack/router-devtools-core@1.139.3", "", { "dependencies": { "clsx": "^2.1.1", "goober": "^2.1.16", "tiny-invariant": "^1.3.3", "vite": "^7.1.7" }, "peerDependencies": { "@tanstack/router-core": "^1.139.3", "csstype": "^3.0.10", "solid-js": ">=1.9.5" }, "optionalPeers": ["csstype"] }, "sha512-dqjL9QroVORlLC283uwwMB7CLMWAfn9rgKwwcXdaSQlPcuSVScFzyFI4Iz7l6A4jGC0ALtNPQoHJ52+mvTzY5Q=="], 791 + 792 + "@tanstack/router-generator": ["@tanstack/router-generator@1.139.3", "", { "dependencies": { "@tanstack/router-core": "1.139.3", "@tanstack/router-utils": "1.139.0", "@tanstack/virtual-file-routes": "1.139.0", "prettier": "^3.5.0", "recast": "^0.23.11", "source-map": "^0.7.4", "tsx": "^4.19.2", "zod": "^3.24.2" } }, "sha512-zq/ZC+1rx7pGNqYOthHSm0jxioNqm7JszYDcZPAZVhHT2Qhen02b7PzW8M7Qx4FU+ldXgnhpenDN5/jqYYClfQ=="], 793 + 794 + "@tanstack/router-plugin": ["@tanstack/router-plugin@1.139.3", "", { "dependencies": { "@babel/core": "^7.27.7", "@babel/plugin-syntax-jsx": "^7.27.1", "@babel/plugin-syntax-typescript": "^7.27.1", "@babel/template": "^7.27.2", "@babel/traverse": "^7.27.7", "@babel/types": "^7.27.7", "@tanstack/router-core": "1.139.3", "@tanstack/router-generator": "1.139.3", "@tanstack/router-utils": "1.139.0", "@tanstack/virtual-file-routes": "1.139.0", "babel-dead-code-elimination": "^1.0.10", "chokidar": "^3.6.0", "unplugin": "^2.1.2", "zod": "^3.24.2" }, "peerDependencies": { "@rsbuild/core": ">=1.0.2", "@tanstack/react-router": "^1.139.3", "vite": ">=5.0.0 || >=6.0.0 || >=7.0.0", "vite-plugin-solid": "^2.11.10", "webpack": ">=5.92.0" }, "optionalPeers": ["@rsbuild/core", "@tanstack/react-router", "vite", "vite-plugin-solid", "webpack"] }, "sha512-ymv5mr2IULgrZblzYeYUVZXzz3fzW1OzoDZh5cs5gEetRcEpXQ6XL8KG4pCkIQ04AJcrtXEWt1yZxi01XjZWxw=="], 795 + 796 + "@tanstack/router-utils": ["@tanstack/router-utils@1.139.0", "", { "dependencies": { "@babel/core": "^7.27.4", "@babel/generator": "^7.27.5", "@babel/parser": "^7.27.5", "@babel/preset-typescript": "^7.27.1", "ansis": "^4.1.0", "diff": "^8.0.2", "pathe": "^2.0.3", "tinyglobby": "^0.2.15" } }, "sha512-jT7D6NimWqoFSkid4vCno8gvTyfL1+NHpgm3es0B2UNhKKRV3LngOGilm1m6v8Qvk/gy6Fh/tvB+s+hBl6GhOg=="], 797 + 798 + "@tanstack/store": ["@tanstack/store@0.8.0", "", {}, "sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ=="], 799 + 800 + "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.139.0", "", {}, "sha512-9PImF1d1tovTUIpjFVa0W7Fwj/MHif7BaaczgJJfbv3sDt1Gh+oW9W9uCw9M3ndEJynnp5ZD/TTs0RGubH5ssg=="], 801 + 802 + "@typelex/emitter": ["@typelex/emitter@0.4.0", "", { "dependencies": { "@typespec/compiler": "^1.4.0" } }, "sha512-BaKny+8TA0yX5jZibkAodHHKLJ6l6xVe5ut7KeoUyTD63lSSuB9OXe8tWXrs2DbeR/hialCimHFZQ3xANleMow=="], 803 + 804 + "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], 805 + 806 + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], 807 + 808 + "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], 809 + 810 + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], 811 + 812 + "@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="], 813 + 814 + "@types/connect": ["@types/connect@3.4.36", "", { "dependencies": { "@types/node": "*" } }, "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w=="], 815 + 816 + "@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], 817 + 818 + "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], 819 + 820 + "@types/mysql": ["@types/mysql@2.15.26", "", { "dependencies": { "@types/node": "*" } }, "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ=="], 821 + 822 + "@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], 823 + 824 + "@types/pg": ["@types/pg@8.15.6", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ=="], 825 + 826 + "@types/pg-pool": ["@types/pg-pool@2.0.6", "", { "dependencies": { "@types/pg": "*" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="], 827 + 828 + "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], 829 + 830 + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], 831 + 832 + "@types/shimmer": ["@types/shimmer@1.2.0", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="], 833 + 834 + "@types/tedious": ["@types/tedious@4.0.14", "", { "dependencies": { "@types/node": "*" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="], 835 + 836 + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], 837 + 838 + "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.48.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/type-utils": "8.48.0", "@typescript-eslint/utils": "8.48.0", "@typescript-eslint/visitor-keys": "8.48.0", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.48.0", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-XxXP5tL1txl13YFtrECECQYeZjBZad4fyd3cFV4a19LkAY/bIp9fev3US4S5fDVV2JaYFiKAZ/GRTOLer+mbyQ=="], 839 + 840 + "@typescript-eslint/parser": ["@typescript-eslint/parser@8.48.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", "@typescript-eslint/typescript-estree": "8.48.0", "@typescript-eslint/visitor-keys": "8.48.0", "debug": "^4.3.4" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-jCzKdm/QK0Kg4V4IK/oMlRZlY+QOcdjv89U2NgKHZk1CYTj82/RVSx1mV/0gqCVMJ/DA+Zf/S4NBWNF8GQ+eqQ=="], 841 + 842 + "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.48.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.48.0", "@typescript-eslint/types": "^8.48.0", "debug": "^4.3.4" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-Ne4CTZyRh1BecBf84siv42wv5vQvVmgtk8AuiEffKTUo3DrBaGYZueJSxxBZ8fjk/N3DrgChH4TOdIOwOwiqqw=="], 843 + 844 + "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.48.0", "", { "dependencies": { "@typescript-eslint/types": "8.48.0", "@typescript-eslint/visitor-keys": "8.48.0" } }, "sha512-uGSSsbrtJrLduti0Q1Q9+BF1/iFKaxGoQwjWOIVNJv0o6omrdyR8ct37m4xIl5Zzpkp69Kkmvom7QFTtue89YQ=="], 845 + 846 + "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.48.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-WNebjBdFdyu10sR1M4OXTt2OkMd5KWIL+LLfeH9KhgP+jzfDV/LI3eXzwJ1s9+Yc0Kzo2fQCdY/OpdusCMmh6w=="], 847 + 848 + "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.48.0", "", { "dependencies": { "@typescript-eslint/types": "8.48.0", "@typescript-eslint/typescript-estree": "8.48.0", "@typescript-eslint/utils": "8.48.0", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-zbeVaVqeXhhab6QNEKfK96Xyc7UQuoFWERhEnj3mLVnUWrQnv15cJNseUni7f3g557gm0e46LZ6IJ4NJVOgOpw=="], 849 + 850 + "@typescript-eslint/types": ["@typescript-eslint/types@8.48.0", "", {}, "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA=="], 851 + 852 + "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.48.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.48.0", "@typescript-eslint/tsconfig-utils": "8.48.0", "@typescript-eslint/types": "8.48.0", "@typescript-eslint/visitor-keys": "8.48.0", "debug": "^4.3.4", "minimatch": "^9.0.4", "semver": "^7.6.0", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.0.0" } }, "sha512-ljHab1CSO4rGrQIAyizUS6UGHHCiAYhbfcIZ1zVJr5nMryxlXMVWS3duFPSKvSUbFPwkXMFk1k0EMIjub4sRRQ=="], 853 + 854 + "@typescript-eslint/utils": ["@typescript-eslint/utils@8.48.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", "@typescript-eslint/scope-manager": "8.48.0", "@typescript-eslint/types": "8.48.0", "@typescript-eslint/typescript-estree": "8.48.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-yTJO1XuGxCsSfIVt1+1UrLHtue8xz16V8apzPYI06W0HbEbEWHxHXgZaAgavIkoh+GeV6hKKd5jm0sS6OYxWXQ=="], 855 + 856 + "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.48.0", "", { "dependencies": { "@typescript-eslint/types": "8.48.0", "eslint-visitor-keys": "^4.2.1" } }, "sha512-T0XJMaRPOH3+LBbAfzR2jalckP1MSG/L9eUtY0DEzUyVaXJ/t6zN0nR7co5kz0Jko/nkSYCBRkz1djvjajVTTg=="], 857 + 858 + "@typespec/compiler": ["@typespec/compiler@1.6.0", "", { "dependencies": { "@babel/code-frame": "~7.27.1", "@inquirer/prompts": "^7.4.0", "ajv": "~8.17.1", "change-case": "~5.4.4", "env-paths": "^3.0.0", "globby": "~15.0.0", "is-unicode-supported": "^2.1.0", "mustache": "~4.2.0", "picocolors": "~1.1.1", "prettier": "~3.6.2", "semver": "^7.7.1", "tar": "^7.5.2", "temporal-polyfill": "^0.3.0", "vscode-languageserver": "~9.0.1", "vscode-languageserver-textdocument": "~1.0.12", "yaml": "~2.8.0", "yargs": "~18.0.0" }, "bin": { "tsp": "cmd/tsp.js", "tsp-server": "cmd/tsp-server.js" } }, "sha512-yxyV+ch8tnqiuU2gClv/mQEESoFwpkjo6177UkYfV0nVA9PzTg4zVVc7+WIMZk04wiLRRT3H1uc11FB1cwLY3g=="], 859 + 860 + "@vitejs/plugin-react": ["@vitejs/plugin-react@5.1.1", "", { "dependencies": { "@babel/core": "^7.28.5", "@babel/plugin-transform-react-jsx-self": "^7.27.1", "@babel/plugin-transform-react-jsx-source": "^7.27.1", "@rolldown/pluginutils": "1.0.0-beta.47", "@types/babel__core": "^7.20.5", "react-refresh": "^0.18.0" }, "peerDependencies": { "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, "sha512-WQfkSw0QbQ5aJ2CHYw23ZGkqnRwqKHD/KYsMeTkZzPT4Jcf0DcBxBtwMJxnu6E7oxw5+JC6ZAiePgh28uJ1HBA=="], 861 + 862 + "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.11.0", "", { "dependencies": { "@rolldown/pluginutils": "1.0.0-beta.27", "@swc/core": "^1.12.11" }, "peerDependencies": { "vite": "^4 || ^5 || ^6 || ^7" } }, "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w=="], 863 + 864 + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], 865 + 866 + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], 867 + 868 + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], 869 + 870 + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], 871 + 872 + "ajv": ["ajv@8.17.1", "", { "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2" } }, "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g=="], 873 + 874 + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 875 + 876 + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], 877 + 878 + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], 879 + 880 + "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], 881 + 882 + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], 883 + 884 + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], 885 + 886 + "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 887 + 888 + "aria-hidden": ["aria-hidden@1.2.6", "", { "dependencies": { "tslib": "^2.0.0" } }, "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA=="], 889 + 890 + "ast-types": ["ast-types@0.16.1", "", { "dependencies": { "tslib": "^2.0.1" } }, "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg=="], 891 + 892 + "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], 893 + 894 + "atomic-sleep": ["atomic-sleep@1.0.0", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="], 895 + 896 + "autoprefixer": ["autoprefixer@10.4.22", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-lite": "^1.0.30001754", "fraction.js": "^5.3.4", "normalize-range": "^0.1.2", "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.1.0" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg=="], 897 + 898 + "axios": ["axios@1.13.2", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.4", "proxy-from-env": "^1.1.0" } }, "sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA=="], 899 + 900 + "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.10", "", { "dependencies": { "@babel/core": "^7.23.7", "@babel/parser": "^7.23.6", "@babel/traverse": "^7.23.7", "@babel/types": "^7.23.6" } }, "sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA=="], 901 + 902 + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], 903 + 904 + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], 905 + 906 + "base64-js": ["base64-js@1.5.1", "", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="], 907 + 908 + "baseline-browser-mapping": ["baseline-browser-mapping@2.8.31", "", { "bin": { "baseline-browser-mapping": "dist/cli.js" } }, "sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw=="], 909 + 910 + "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], 911 + 912 + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], 913 + 914 + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], 915 + 916 + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 917 + 918 + "browserslist": ["browserslist@4.28.0", "", { "dependencies": { "baseline-browser-mapping": "^2.8.25", "caniuse-lite": "^1.0.30001754", "electron-to-chromium": "^1.5.249", "node-releases": "^2.0.27", "update-browserslist-db": "^1.1.4" }, "bin": { "browserslist": "cli.js" } }, "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ=="], 919 + 920 + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], 921 + 922 + "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], 923 + 924 + "bufferutil": ["bufferutil@4.0.9", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw=="], 925 + 926 + "bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], 927 + 928 + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], 929 + 930 + "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], 931 + 932 + "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], 933 + 934 + "caniuse-api": ["caniuse-api@3.0.0", "", { "dependencies": { "browserslist": "^4.0.0", "caniuse-lite": "^1.0.0", "lodash.memoize": "^4.1.2", "lodash.uniq": "^4.5.0" } }, "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="], 935 + 936 + "caniuse-lite": ["caniuse-lite@1.0.30001757", "", {}, "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ=="], 937 + 938 + "cbor-extract": ["cbor-extract@2.2.0", "", { "dependencies": { "node-gyp-build-optional-packages": "5.1.1" }, "optionalDependencies": { "@cbor-extract/cbor-extract-darwin-arm64": "2.2.0", "@cbor-extract/cbor-extract-darwin-x64": "2.2.0", "@cbor-extract/cbor-extract-linux-arm": "2.2.0", "@cbor-extract/cbor-extract-linux-arm64": "2.2.0", "@cbor-extract/cbor-extract-linux-x64": "2.2.0", "@cbor-extract/cbor-extract-win32-x64": "2.2.0" }, "bin": { "download-cbor-prebuilds": "bin/download-prebuilds.js" } }, "sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA=="], 939 + 940 + "cbor-x": ["cbor-x@1.6.0", "", { "optionalDependencies": { "cbor-extract": "^2.2.0" } }, "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg=="], 941 + 942 + "cborg": ["cborg@1.10.2", "", { "bin": { "cborg": "cli.js" } }, "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug=="], 943 + 944 + "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 945 + 946 + "change-case": ["change-case@5.4.4", "", {}, "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w=="], 947 + 948 + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], 949 + 950 + "chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], 951 + 952 + "chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="], 953 + 954 + "cjs-module-lexer": ["cjs-module-lexer@1.4.3", "", {}, "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q=="], 955 + 956 + "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "^2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], 957 + 958 + "cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="], 959 + 960 + "cliui": ["cliui@9.0.1", "", { "dependencies": { "string-width": "^7.2.0", "strip-ansi": "^7.1.0", "wrap-ansi": "^9.0.0" } }, "sha512-k7ndgKhwoQveBL+/1tqGJYNz097I7WOvwbmmU2AR5+magtbjPWQTS1C5vzGkBC8Ym8UWRzfKUzUUqFLypY4Q+w=="], 961 + 962 + "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], 963 + 964 + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 965 + 966 + "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 967 + 968 + "colord": ["colord@2.9.3", "", {}, "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="], 969 + 970 + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], 971 + 972 + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], 973 + 974 + "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], 975 + 976 + "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], 977 + 978 + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], 979 + 980 + "cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="], 981 + 982 + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], 983 + 984 + "css-declaration-sorter": ["css-declaration-sorter@7.3.0", "", { "peerDependencies": { "postcss": "^8.0.9" } }, "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ=="], 985 + 986 + "css-select": ["css-select@5.2.2", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw=="], 987 + 988 + "css-tree": ["css-tree@3.1.0", "", { "dependencies": { "mdn-data": "2.12.2", "source-map-js": "^1.0.1" } }, "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w=="], 989 + 990 + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], 991 + 992 + "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], 993 + 994 + "cssnano": ["cssnano@7.1.2", "", { "dependencies": { "cssnano-preset-default": "^7.0.10", "lilconfig": "^3.1.3" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-HYOPBsNvoiFeR1eghKD5C3ASm64v9YVyJB4Ivnl2gqKoQYvjjN/G0rztvKQq8OxocUtC6sjqY8jwYngIB4AByA=="], 995 + 996 + "cssnano-preset-default": ["cssnano-preset-default@7.0.10", "", { "dependencies": { "browserslist": "^4.27.0", "css-declaration-sorter": "^7.2.0", "cssnano-utils": "^5.0.1", "postcss-calc": "^10.1.1", "postcss-colormin": "^7.0.5", "postcss-convert-values": "^7.0.8", "postcss-discard-comments": "^7.0.5", "postcss-discard-duplicates": "^7.0.2", "postcss-discard-empty": "^7.0.1", "postcss-discard-overridden": "^7.0.1", "postcss-merge-longhand": "^7.0.5", "postcss-merge-rules": "^7.0.7", "postcss-minify-font-values": "^7.0.1", "postcss-minify-gradients": "^7.0.1", "postcss-minify-params": "^7.0.5", "postcss-minify-selectors": "^7.0.5", "postcss-normalize-charset": "^7.0.1", "postcss-normalize-display-values": "^7.0.1", "postcss-normalize-positions": "^7.0.1", "postcss-normalize-repeat-style": "^7.0.1", "postcss-normalize-string": "^7.0.1", "postcss-normalize-timing-functions": "^7.0.1", "postcss-normalize-unicode": "^7.0.5", "postcss-normalize-url": "^7.0.1", "postcss-normalize-whitespace": "^7.0.1", "postcss-ordered-values": "^7.0.2", "postcss-reduce-initial": "^7.0.5", "postcss-reduce-transforms": "^7.0.1", "postcss-svgo": "^7.1.0", "postcss-unique-selectors": "^7.0.4" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-6ZBjW0Lf1K1Z+0OKUAUpEN62tSXmYChXWi2NAA0afxEVsj9a+MbcB1l5qel6BHJHmULai2fCGRthCeKSFbScpA=="], 997 + 998 + "cssnano-utils": ["cssnano-utils@5.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg=="], 999 + 1000 + "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], 1001 + 1002 + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], 1003 + 1004 + "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], 1005 + 1006 + "dateformat": ["dateformat@4.6.3", "", {}, "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA=="], 1007 + 1008 + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 1009 + 1010 + "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], 1011 + 1012 + "delayed-stream": ["delayed-stream@1.0.0", "", {}, "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ=="], 1013 + 1014 + "detect-libc": ["detect-libc@2.0.2", "", {}, "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="], 1015 + 1016 + "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], 1017 + 1018 + "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], 1019 + 1020 + "diff": ["diff@8.0.2", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="], 1021 + 1022 + "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], 1023 + 1024 + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], 1025 + 1026 + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], 1027 + 1028 + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], 1029 + 1030 + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], 1031 + 1032 + "drizzle-kit": ["drizzle-kit@0.29.1", "", { "dependencies": { "@drizzle-team/brocli": "^0.10.2", "@esbuild-kit/esm-loader": "^2.5.5", "esbuild": "^0.19.7", "esbuild-register": "^3.5.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-OvHL8RVyYiPR3LLRE3SHdcON8xGXl+qMfR9uTTnFWBPIqVk/3NWYZPb7nfpM1Bhix3H+BsxqPyyagG7YZ+Z63A=="], 1033 + 1034 + "drizzle-orm": ["drizzle-orm@0.44.7", "", { "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=4", "@electric-sql/pglite": ">=0.2.0", "@libsql/client": ">=0.10.0", "@libsql/client-wasm": ">=0.10.0", "@neondatabase/serverless": ">=0.10.0", "@op-engineering/op-sqlite": ">=2", "@opentelemetry/api": "^1.4.1", "@planetscale/database": ">=1.13", "@prisma/client": "*", "@tidbcloud/serverless": "*", "@types/better-sqlite3": "*", "@types/pg": "*", "@types/sql.js": "*", "@upstash/redis": ">=1.34.7", "@vercel/postgres": ">=0.8.0", "@xata.io/client": "*", "better-sqlite3": ">=7", "bun-types": "*", "expo-sqlite": ">=14.0.0", "gel": ">=2", "knex": "*", "kysely": "*", "mysql2": ">=2", "pg": ">=8", "postgres": ">=3", "sql.js": ">=1", "sqlite3": ">=5" }, "optionalPeers": ["@aws-sdk/client-rds-data", "@cloudflare/workers-types", "@electric-sql/pglite", "@libsql/client", "@libsql/client-wasm", "@neondatabase/serverless", "@op-engineering/op-sqlite", "@opentelemetry/api", "@planetscale/database", "@prisma/client", "@tidbcloud/serverless", "@types/better-sqlite3", "@types/pg", "@types/sql.js", "@upstash/redis", "@vercel/postgres", "@xata.io/client", "better-sqlite3", "bun-types", "expo-sqlite", "gel", "knex", "kysely", "mysql2", "pg", "postgres", "sql.js", "sqlite3"] }, "sha512-quIpnYznjU9lHshEOAYLoZ9s3jweleHlZIAWR/jX9gAWNg/JhQ1wj0KGRf7/Zm+obRrYd9GjPVJg790QY9N5AQ=="], 1035 + 1036 + "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], 1037 + 1038 + "electron-to-chromium": ["electron-to-chromium@1.5.259", "", {}, "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ=="], 1039 + 1040 + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 1041 + 1042 + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], 1043 + 1044 + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], 1045 + 1046 + "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], 1047 + 1048 + "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], 1049 + 1050 + "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], 1051 + 1052 + "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], 1053 + 1054 + "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], 1055 + 1056 + "esbuild": ["esbuild@0.19.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.19.12", "@esbuild/android-arm": "0.19.12", "@esbuild/android-arm64": "0.19.12", "@esbuild/android-x64": "0.19.12", "@esbuild/darwin-arm64": "0.19.12", "@esbuild/darwin-x64": "0.19.12", "@esbuild/freebsd-arm64": "0.19.12", "@esbuild/freebsd-x64": "0.19.12", "@esbuild/linux-arm": "0.19.12", "@esbuild/linux-arm64": "0.19.12", "@esbuild/linux-ia32": "0.19.12", "@esbuild/linux-loong64": "0.19.12", "@esbuild/linux-mips64el": "0.19.12", "@esbuild/linux-ppc64": "0.19.12", "@esbuild/linux-riscv64": "0.19.12", "@esbuild/linux-s390x": "0.19.12", "@esbuild/linux-x64": "0.19.12", "@esbuild/netbsd-x64": "0.19.12", "@esbuild/openbsd-x64": "0.19.12", "@esbuild/sunos-x64": "0.19.12", "@esbuild/win32-arm64": "0.19.12", "@esbuild/win32-ia32": "0.19.12", "@esbuild/win32-x64": "0.19.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg=="], 1057 + 1058 + "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], 1059 + 1060 + "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 1061 + 1062 + "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], 1063 + 1064 + "eslint": ["eslint@9.39.1", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.1", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", "@eslint/js": "9.39.1", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-BhHmn2yNOFA9H9JmmIVKJmd288g9hrVRDkdoIgRCRuSySRUHH7r/DI6aAXW9T1WwUuY3DFgrcaqB+deURBLR5g=="], 1065 + 1066 + "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.2.0", "", { "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg=="], 1067 + 1068 + "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.24", "", { "peerDependencies": { "eslint": ">=8.40" } }, "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w=="], 1069 + 1070 + "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], 1071 + 1072 + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], 1073 + 1074 + "esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="], 1075 + 1076 + "espree": ["espree@10.4.0", "", { "dependencies": { "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^4.2.1" } }, "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ=="], 1077 + 1078 + "esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], 1079 + 1080 + "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "^5.1.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], 1081 + 1082 + "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "^5.2.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], 1083 + 1084 + "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], 1085 + 1086 + "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], 1087 + 1088 + "event-target-polyfill": ["event-target-polyfill@0.0.4", "", {}, "sha512-Gs6RLjzlLRdT8X9ZipJdIZI/Y6/HhRLyq9RdDlCsnpxr/+Nn6bU2EFGuC94GjxqhM+Nmij2Vcq98yoHrU8uNFQ=="], 1089 + 1090 + "event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], 1091 + 1092 + "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], 1093 + 1094 + "fast-copy": ["fast-copy@3.0.2", "", {}, "sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ=="], 1095 + 1096 + "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], 1097 + 1098 + "fast-glob": ["fast-glob@3.3.3", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.8" } }, "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg=="], 1099 + 1100 + "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], 1101 + 1102 + "fast-levenshtein": ["fast-levenshtein@2.0.6", "", {}, "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw=="], 1103 + 1104 + "fast-redact": ["fast-redact@3.5.0", "", {}, "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A=="], 1105 + 1106 + "fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="], 1107 + 1108 + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], 1109 + 1110 + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], 1111 + 1112 + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 1113 + 1114 + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], 1115 + 1116 + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], 1117 + 1118 + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 1119 + 1120 + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], 1121 + 1122 + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], 1123 + 1124 + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], 1125 + 1126 + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], 1127 + 1128 + "form-data": ["form-data@4.0.5", "", { "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", "hasown": "^2.0.2", "mime-types": "^2.1.12" } }, "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w=="], 1129 + 1130 + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], 1131 + 1132 + "forwarded-parse": ["forwarded-parse@2.1.2", "", {}, "sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw=="], 1133 + 1134 + "fraction.js": ["fraction.js@5.3.4", "", {}, "sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ=="], 1135 + 1136 + "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], 1137 + 1138 + "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], 1139 + 1140 + "gensync": ["gensync@1.0.0-beta.2", "", {}, "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg=="], 1141 + 1142 + "get-caller-file": ["get-caller-file@2.0.5", "", {}, "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="], 1143 + 1144 + "get-east-asian-width": ["get-east-asian-width@1.4.0", "", {}, "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q=="], 1145 + 1146 + "get-intrinsic": ["get-intrinsic@1.3.0", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", "get-proto": "^1.0.1", "gopd": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "math-intrinsics": "^1.1.0" } }, "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ=="], 1147 + 1148 + "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], 1149 + 1150 + "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], 1151 + 1152 + "get-tsconfig": ["get-tsconfig@4.13.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ=="], 1153 + 1154 + "glob": ["glob@13.0.0", "", { "dependencies": { "minimatch": "^10.1.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA=="], 1155 + 1156 + "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], 1157 + 1158 + "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], 1159 + 1160 + "globby": ["globby@15.0.0", "", { "dependencies": { "@sindresorhus/merge-streams": "^4.0.0", "fast-glob": "^3.3.3", "ignore": "^7.0.5", "path-type": "^6.0.0", "slash": "^5.1.0", "unicorn-magic": "^0.3.0" } }, "sha512-oB4vkQGqlMl682wL1IlWd02tXCbquGWM4voPEI85QmNKCaw8zGTm1f1rubFgkg3Eli2PtKlFgrnmUqasbQWlkw=="], 1161 + 1162 + "goober": ["goober@2.1.18", "", { "peerDependencies": { "csstype": "^3.0.10" } }, "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw=="], 1163 + 1164 + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], 1165 + 1166 + "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], 1167 + 1168 + "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], 1169 + 1170 + "has-symbols": ["has-symbols@1.1.0", "", {}, "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ=="], 1171 + 1172 + "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], 1173 + 1174 + "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], 1175 + 1176 + "help-me": ["help-me@5.0.0", "", {}, "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="], 1177 + 1178 + "hono": ["hono@4.10.7", "", {}, "sha512-icXIITfw/07Q88nLSkB9aiUrd8rYzSweK681Kjo/TSggaGbOX4RRyxxm71v+3PC8C/j+4rlxGeoTRxQDkaJkUw=="], 1179 + 1180 + "iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="], 1181 + 1182 + "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], 1183 + 1184 + "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], 1185 + 1186 + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], 1187 + 1188 + "import-in-the-middle": ["import-in-the-middle@1.15.0", "", { "dependencies": { "acorn": "^8.14.0", "acorn-import-attributes": "^1.9.5", "cjs-module-lexer": "^1.2.2", "module-details-from-path": "^1.0.3" } }, "sha512-bpQy+CrsRmYmoPMAE/0G33iwRqwW4ouqdRg8jgbH3aKuCtOc8lxgmYXg2dMM92CRiGP660EtBcymH/eVUpCSaA=="], 1189 + 1190 + "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], 1191 + 1192 + "ipaddr.js": ["ipaddr.js@2.2.0", "", {}, "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA=="], 1193 + 1194 + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], 1195 + 1196 + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], 1197 + 1198 + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], 1199 + 1200 + "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], 1201 + 1202 + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 1203 + 1204 + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], 1205 + 1206 + "is-unicode-supported": ["is-unicode-supported@2.1.0", "", {}, "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ=="], 1207 + 1208 + "isbot": ["isbot@5.1.32", "", {}, "sha512-VNfjM73zz2IBZmdShMfAUg10prm6t7HFUQmNAEOAVS4YH92ZrZcvkMcGX6cIgBJAzWDzPent/EeAtYEHNPNPBQ=="], 1209 + 1210 + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 1211 + 1212 + "iso-datestring-validator": ["iso-datestring-validator@2.2.2", "", {}, "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA=="], 1213 + 1214 + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], 1215 + 1216 + "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], 1217 + 1218 + "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], 1219 + 1220 + "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="], 1221 + 1222 + "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], 1223 + 1224 + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], 1225 + 1226 + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], 1227 + 1228 + "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], 1229 + 1230 + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 1231 + 1232 + "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], 1233 + 1234 + "json5": ["json5@2.2.3", "", { "bin": { "json5": "lib/cli.js" } }, "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg=="], 1235 + 1236 + "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], 1237 + 1238 + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], 1239 + 1240 + "libsql": ["libsql@0.4.7", "", { "dependencies": { "@neon-rs/load": "^0.0.4", "detect-libc": "2.0.2" }, "optionalDependencies": { "@libsql/darwin-arm64": "0.4.7", "@libsql/darwin-x64": "0.4.7", "@libsql/linux-arm64-gnu": "0.4.7", "@libsql/linux-arm64-musl": "0.4.7", "@libsql/linux-x64-gnu": "0.4.7", "@libsql/linux-x64-musl": "0.4.7", "@libsql/win32-x64-msvc": "0.4.7" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "x64", "arm64", ] }, "sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw=="], 1241 + 1242 + "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], 1243 + 1244 + "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], 1245 + 1246 + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], 1247 + 1248 + "lodash.memoize": ["lodash.memoize@4.1.2", "", {}, "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="], 1249 + 1250 + "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], 1251 + 1252 + "lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="], 1253 + 1254 + "lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], 1255 + 1256 + "lucide-react": ["lucide-react@0.464.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, "sha512-eCx1qClbnw5qRqB2Z1AFFp71wdJXEwhPp5ii8LviyvHb7o/7eMXFiTyDHh7JpjM9BO9pC6ZUp/c7mCwwxbPIcg=="], 1257 + 1258 + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], 1259 + 1260 + "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], 1261 + 1262 + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], 1263 + 1264 + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], 1265 + 1266 + "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], 1267 + 1268 + "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], 1269 + 1270 + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], 1271 + 1272 + "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], 1273 + 1274 + "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 1275 + 1276 + "minizlib": ["minizlib@3.1.0", "", { "dependencies": { "minipass": "^7.1.2" } }, "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw=="], 1277 + 1278 + "module-details-from-path": ["module-details-from-path@1.0.4", "", {}, "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w=="], 1279 + 1280 + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], 1281 + 1282 + "multiformats": ["multiformats@9.9.0", "", {}, "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="], 1283 + 1284 + "mustache": ["mustache@4.2.0", "", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="], 1285 + 1286 + "mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="], 1287 + 1288 + "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], 1289 + 1290 + "nanoid": ["nanoid@5.1.6", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg=="], 1291 + 1292 + "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], 1293 + 1294 + "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], 1295 + 1296 + "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", "formdata-polyfill": "^4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], 1297 + 1298 + "node-gyp-build": ["node-gyp-build@4.8.4", "", { "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", "node-gyp-build-test": "build-test.js" } }, "sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ=="], 1299 + 1300 + "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.1.1", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-test": "build-test.js", "node-gyp-build-optional-packages-optional": "optional.js" } }, "sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw=="], 1301 + 1302 + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], 1303 + 1304 + "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], 1305 + 1306 + "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], 1307 + 1308 + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], 1309 + 1310 + "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], 1311 + 1312 + "object-hash": ["object-hash@3.0.0", "", {}, "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw=="], 1313 + 1314 + "on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="], 1315 + 1316 + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], 1317 + 1318 + "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", "type-check": "^0.4.0", "word-wrap": "^1.2.5" } }, "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g=="], 1319 + 1320 + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], 1321 + 1322 + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], 1323 + 1324 + "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], 1325 + 1326 + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 1327 + 1328 + "partysocket": ["partysocket@1.1.6", "", { "dependencies": { "event-target-polyfill": "^0.0.4" } }, "sha512-LkEk8N9hMDDsDT0iDK0zuwUDFVrVMUXFXCeN3850Ng8wtjPqPBeJlwdeY6ROlJSEh3tPoTTasXoSBYH76y118w=="], 1329 + 1330 + "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], 1331 + 1332 + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], 1333 + 1334 + "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], 1335 + 1336 + "path-scurry": ["path-scurry@2.0.1", "", { "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" } }, "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA=="], 1337 + 1338 + "path-type": ["path-type@6.0.0", "", {}, "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ=="], 1339 + 1340 + "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], 1341 + 1342 + "pg": ["pg@8.16.3", "", { "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", "pg-protocol": "^1.10.3", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.2.7" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw=="], 1343 + 1344 + "pg-cloudflare": ["pg-cloudflare@1.2.7", "", {}, "sha512-YgCtzMH0ptvZJslLM1ffsY4EuGaU0cx4XSdXLRFae8bPP4dS5xL1tNB3k2o/N64cHJpwU7dxKli/nZ2lUa5fLg=="], 1345 + 1346 + "pg-connection-string": ["pg-connection-string@2.9.1", "", {}, "sha512-nkc6NpDcvPVpZXxrreI/FOtX3XemeLl8E0qFr6F2Lrm/I8WOnaWNhIPK2Z7OHpw7gh5XJThi6j6ppgNoaT1w4w=="], 1347 + 1348 + "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], 1349 + 1350 + "pg-pool": ["pg-pool@3.10.1", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg=="], 1351 + 1352 + "pg-protocol": ["pg-protocol@1.10.3", "", {}, "sha512-6DIBgBQaTKDJyxnXaLiLR8wBpQQcGWuAESkRBX/t6OwA8YsqP+iVSiond2EDy6Y/dsGk8rh/jtax3js5NeV7JQ=="], 1353 + 1354 + "pg-types": ["pg-types@2.2.0", "", { "dependencies": { "pg-int8": "1.0.1", "postgres-array": "~2.0.0", "postgres-bytea": "~1.0.0", "postgres-date": "~1.0.4", "postgres-interval": "^1.1.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], 1355 + 1356 + "pgpass": ["pgpass@1.0.5", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="], 1357 + 1358 + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 1359 + 1360 + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], 1361 + 1362 + "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], 1363 + 1364 + "pino": ["pino@9.14.0", "", { "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", "thread-stream": "^3.0.0" }, "bin": { "pino": "bin.js" } }, "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w=="], 1365 + 1366 + "pino-abstract-transport": ["pino-abstract-transport@2.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="], 1367 + 1368 + "pino-pretty": ["pino-pretty@13.1.2", "", { "dependencies": { "colorette": "^2.0.7", "dateformat": "^4.6.3", "fast-copy": "^3.0.2", "fast-safe-stringify": "^2.1.1", "help-me": "^5.0.0", "joycon": "^3.1.1", "minimist": "^1.2.6", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pump": "^3.0.0", "secure-json-parse": "^4.0.0", "sonic-boom": "^4.0.1", "strip-json-comments": "^5.0.2" }, "bin": { "pino-pretty": "bin.js" } }, "sha512-3cN0tCakkT4f3zo9RXDIhy6GTvtYD6bK4CRBLN9j3E/ePqN1tugAXD5rGVfoChW6s0hiek+eyYlLNqc/BG7vBQ=="], 1369 + 1370 + "pino-std-serializers": ["pino-std-serializers@7.0.0", "", {}, "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA=="], 1371 + 1372 + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], 1373 + 1374 + "postcss": ["postcss@8.5.6", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg=="], 1375 + 1376 + "postcss-calc": ["postcss-calc@10.1.1", "", { "dependencies": { "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.38" } }, "sha512-NYEsLHh8DgG/PRH2+G9BTuUdtf9ViS+vdoQ0YA5OQdGsfN4ztiwtDWNtBl9EKeqNMFnIu8IKZ0cLxEQ5r5KVMw=="], 1377 + 1378 + "postcss-colormin": ["postcss-colormin@7.0.5", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-api": "^3.0.0", "colord": "^2.9.3", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-ekIBP/nwzRWhEMmIxHHbXHcMdzd1HIUzBECaj5KEdLz9DVP2HzT065sEhvOx1dkLjYW7jyD0CngThx6bpFi2fA=="], 1379 + 1380 + "postcss-convert-values": ["postcss-convert-values@7.0.8", "", { "dependencies": { "browserslist": "^4.27.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-+XNKuPfkHTCEo499VzLMYn94TiL3r9YqRE3Ty+jP7UX4qjewUONey1t7CG21lrlTLN07GtGM8MqFVp86D4uKJg=="], 1381 + 1382 + "postcss-discard-comments": ["postcss-discard-comments@7.0.5", "", { "dependencies": { "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-IR2Eja8WfYgN5n32vEGSctVQ1+JARfu4UH8M7bgGh1bC+xI/obsPJXaBpQF7MAByvgwZinhpHpdrmXtvVVlKcQ=="], 1383 + 1384 + "postcss-discard-duplicates": ["postcss-discard-duplicates@7.0.2", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w=="], 1385 + 1386 + "postcss-discard-empty": ["postcss-discard-empty@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg=="], 1387 + 1388 + "postcss-discard-overridden": ["postcss-discard-overridden@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg=="], 1389 + 1390 + "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", "resolve": "^1.1.7" }, "peerDependencies": { "postcss": "^8.0.0" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], 1391 + 1392 + "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], 1393 + 1394 + "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "^3.1.1" }, "peerDependencies": { "jiti": ">=1.21.0", "postcss": ">=8.0.9", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["jiti", "postcss", "tsx", "yaml"] }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], 1395 + 1396 + "postcss-merge-longhand": ["postcss-merge-longhand@7.0.5", "", { "dependencies": { "postcss-value-parser": "^4.2.0", "stylehacks": "^7.0.5" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-Kpu5v4Ys6QI59FxmxtNB/iHUVDn9Y9sYw66D6+SZoIk4QTz1prC4aYkhIESu+ieG1iylod1f8MILMs1Em3mmIw=="], 1397 + 1398 + "postcss-merge-rules": ["postcss-merge-rules@7.0.7", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-api": "^3.0.0", "cssnano-utils": "^5.0.1", "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-njWJrd/Ms6XViwowaaCc+/vqhPG3SmXn725AGrnl+BgTuRPEacjiLEaGq16J6XirMJbtKkTwnt67SS+e2WGoew=="], 1399 + 1400 + "postcss-minify-font-values": ["postcss-minify-font-values@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-2m1uiuJeTplll+tq4ENOQSzB8LRnSUChBv7oSyFLsJRtUgAAJGP6LLz0/8lkinTgxrmJSPOEhgY1bMXOQ4ZXhQ=="], 1401 + 1402 + "postcss-minify-gradients": ["postcss-minify-gradients@7.0.1", "", { "dependencies": { "colord": "^2.9.3", "cssnano-utils": "^5.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A=="], 1403 + 1404 + "postcss-minify-params": ["postcss-minify-params@7.0.5", "", { "dependencies": { "browserslist": "^4.27.0", "cssnano-utils": "^5.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-FGK9ky02h6Ighn3UihsyeAH5XmLEE2MSGH5Tc4tXMFtEDx7B+zTG6hD/+/cT+fbF7PbYojsmmWjyTwFwW1JKQQ=="], 1405 + 1406 + "postcss-minify-selectors": ["postcss-minify-selectors@7.0.5", "", { "dependencies": { "cssesc": "^3.0.0", "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-x2/IvofHcdIrAm9Q+p06ZD1h6FPcQ32WtCRVodJLDR+WMn8EVHI1kvLxZuGKz/9EY5nAmI6lIQIrpo4tBy5+ug=="], 1407 + 1408 + "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "^6.1.1" }, "peerDependencies": { "postcss": "^8.2.14" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], 1409 + 1410 + "postcss-normalize-charset": ["postcss-normalize-charset@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ=="], 1411 + 1412 + "postcss-normalize-display-values": ["postcss-normalize-display-values@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-E5nnB26XjSYz/mGITm6JgiDpAbVuAkzXwLzRZtts19jHDUBFxZ0BkXAehy0uimrOjYJbocby4FVswA/5noOxrQ=="], 1413 + 1414 + "postcss-normalize-positions": ["postcss-normalize-positions@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-pB/SzrIP2l50ZIYu+yQZyMNmnAcwyYb9R1fVWPRxm4zcUFCY2ign7rcntGFuMXDdd9L2pPNUgoODDk91PzRZuQ=="], 1415 + 1416 + "postcss-normalize-repeat-style": ["postcss-normalize-repeat-style@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-NsSQJ8zj8TIDiF0ig44Byo3Jk9e4gNt9x2VIlJudnQQ5DhWAHJPF4Tr1ITwyHio2BUi/I6Iv0HRO7beHYOloYQ=="], 1417 + 1418 + "postcss-normalize-string": ["postcss-normalize-string@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-QByrI7hAhsoze992kpbMlJSbZ8FuCEc1OT9EFbZ6HldXNpsdpZr+YXC5di3UEv0+jeZlHbZcoCADgb7a+lPmmQ=="], 1419 + 1420 + "postcss-normalize-timing-functions": ["postcss-normalize-timing-functions@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-bHifyuuSNdKKsnNJ0s8fmfLMlvsQwYVxIoUBnowIVl2ZAdrkYQNGVB4RxjfpvkMjipqvbz0u7feBZybkl/6NJg=="], 1421 + 1422 + "postcss-normalize-unicode": ["postcss-normalize-unicode@7.0.5", "", { "dependencies": { "browserslist": "^4.27.0", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-X6BBwiRxVaFHrb2WyBMddIeB5HBjJcAaUHyhLrM2FsxSq5TFqcHSsK7Zu1otag+o0ZphQGJewGH1tAyrD0zX1Q=="], 1423 + 1424 + "postcss-normalize-url": ["postcss-normalize-url@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-sUcD2cWtyK1AOL/82Fwy1aIVm/wwj5SdZkgZ3QiUzSzQQofrbq15jWJ3BA7Z+yVRwamCjJgZJN0I9IS7c6tgeQ=="], 1425 + 1426 + "postcss-normalize-whitespace": ["postcss-normalize-whitespace@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-vsbgFHMFQrJBJKrUFJNZ2pgBeBkC2IvvoHjz1to0/0Xk7sII24T0qFOiJzG6Fu3zJoq/0yI4rKWi7WhApW+EFA=="], 1427 + 1428 + "postcss-ordered-values": ["postcss-ordered-values@7.0.2", "", { "dependencies": { "cssnano-utils": "^5.0.1", "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-AMJjt1ECBffF7CEON/Y0rekRLS6KsePU6PRP08UqYW4UGFRnTXNrByUzYK1h8AC7UWTZdQ9O3Oq9kFIhm0SFEw=="], 1429 + 1430 + "postcss-reduce-initial": ["postcss-reduce-initial@7.0.5", "", { "dependencies": { "browserslist": "^4.27.0", "caniuse-api": "^3.0.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-RHagHLidG8hTZcnr4FpyMB2jtgd/OcyAazjMhoy5qmWJOx1uxKh4ntk0Pb46ajKM0rkf32lRH4C8c9qQiPR6IA=="], 1431 + 1432 + "postcss-reduce-transforms": ["postcss-reduce-transforms@7.0.1", "", { "dependencies": { "postcss-value-parser": "^4.2.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-MhyEbfrm+Mlp/36hvZ9mT9DaO7dbncU0CvWI8V93LRkY6IYlu38OPg3FObnuKTUxJ4qA8HpurdQOo5CyqqO76g=="], 1433 + 1434 + "postcss-selector-parser": ["postcss-selector-parser@6.1.2", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg=="], 1435 + 1436 + "postcss-svgo": ["postcss-svgo@7.1.0", "", { "dependencies": { "postcss-value-parser": "^4.2.0", "svgo": "^4.0.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-KnAlfmhtoLz6IuU3Sij2ycusNs4jPW+QoFE5kuuUOK8awR6tMxZQrs5Ey3BUz7nFCzT3eqyFgqkyrHiaU2xx3w=="], 1437 + 1438 + "postcss-unique-selectors": ["postcss-unique-selectors@7.0.4", "", { "dependencies": { "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-pmlZjsmEAG7cHd7uK3ZiNSW6otSZ13RHuZ/4cDN/bVglS5EpF2r2oxY99SuOHa8m7AWoBCelTS3JPpzsIs8skQ=="], 1439 + 1440 + "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], 1441 + 1442 + "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], 1443 + 1444 + "postgres-bytea": ["postgres-bytea@1.0.0", "", {}, "sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w=="], 1445 + 1446 + "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], 1447 + 1448 + "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], 1449 + 1450 + "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], 1451 + 1452 + "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], 1453 + 1454 + "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], 1455 + 1456 + "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], 1457 + 1458 + "promise-limit": ["promise-limit@2.7.0", "", {}, "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="], 1459 + 1460 + "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], 1461 + 1462 + "pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="], 1463 + 1464 + "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], 1465 + 1466 + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], 1467 + 1468 + "quick-format-unescaped": ["quick-format-unescaped@4.0.4", "", {}, "sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg=="], 1469 + 1470 + "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], 1471 + 1472 + "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], 1473 + 1474 + "react-hook-form": ["react-hook-form@7.66.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA=="], 1475 + 1476 + "react-refresh": ["react-refresh@0.18.0", "", {}, "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw=="], 1477 + 1478 + "react-remove-scroll": ["react-remove-scroll@2.7.1", "", { "dependencies": { "react-remove-scroll-bar": "^2.3.7", "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", "use-callback-ref": "^1.3.3", "use-sidecar": "^1.1.3" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA=="], 1479 + 1480 + "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], 1481 + 1482 + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], 1483 + 1484 + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], 1485 + 1486 + "readable-stream": ["readable-stream@4.7.0", "", { "dependencies": { "abort-controller": "^3.0.0", "buffer": "^6.0.3", "events": "^3.3.0", "process": "^0.11.10", "string_decoder": "^1.3.0" } }, "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg=="], 1487 + 1488 + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], 1489 + 1490 + "real-require": ["real-require@0.2.0", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="], 1491 + 1492 + "recast": ["recast@0.23.11", "", { "dependencies": { "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" } }, "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA=="], 1493 + 1494 + "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], 1495 + 1496 + "require-in-the-middle": ["require-in-the-middle@7.5.2", "", { "dependencies": { "debug": "^4.3.5", "module-details-from-path": "^1.0.3", "resolve": "^1.22.8" } }, "sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ=="], 1497 + 1498 + "resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], 1499 + 1500 + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 1501 + 1502 + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], 1503 + 1504 + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], 1505 + 1506 + "rimraf": ["rimraf@6.1.2", "", { "dependencies": { "glob": "^13.0.0", "package-json-from-dist": "^1.0.1" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-cFCkPslJv7BAXJsYlK1dZsbP8/ZNLkCAQ0bi1hf5EKX2QHegmDFEFA6QhuYJlk7UDdc+02JjO80YSOrWPpw06g=="], 1507 + 1508 + "rollup": ["rollup@4.53.3", "", { "dependencies": { "@types/estree": "1.0.8" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.53.3", "@rollup/rollup-android-arm64": "4.53.3", "@rollup/rollup-darwin-arm64": "4.53.3", "@rollup/rollup-darwin-x64": "4.53.3", "@rollup/rollup-freebsd-arm64": "4.53.3", "@rollup/rollup-freebsd-x64": "4.53.3", "@rollup/rollup-linux-arm-gnueabihf": "4.53.3", "@rollup/rollup-linux-arm-musleabihf": "4.53.3", "@rollup/rollup-linux-arm64-gnu": "4.53.3", "@rollup/rollup-linux-arm64-musl": "4.53.3", "@rollup/rollup-linux-loong64-gnu": "4.53.3", "@rollup/rollup-linux-ppc64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-gnu": "4.53.3", "@rollup/rollup-linux-riscv64-musl": "4.53.3", "@rollup/rollup-linux-s390x-gnu": "4.53.3", "@rollup/rollup-linux-x64-gnu": "4.53.3", "@rollup/rollup-linux-x64-musl": "4.53.3", "@rollup/rollup-openharmony-arm64": "4.53.3", "@rollup/rollup-win32-arm64-msvc": "4.53.3", "@rollup/rollup-win32-ia32-msvc": "4.53.3", "@rollup/rollup-win32-x64-gnu": "4.53.3", "@rollup/rollup-win32-x64-msvc": "4.53.3", "fsevents": "~2.3.2" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-w8GmOxZfBmKknvdXU1sdM9NHcoQejwF/4mNgj2JuEEdRaHwwF12K7e9eXn1nLZ07ad+du76mkVsyeb2rKGllsA=="], 1509 + 1510 + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], 1511 + 1512 + "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], 1513 + 1514 + "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], 1515 + 1516 + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], 1517 + 1518 + "sax": ["sax@1.4.3", "", {}, "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ=="], 1519 + 1520 + "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], 1521 + 1522 + "secure-json-parse": ["secure-json-parse@4.1.0", "", {}, "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA=="], 1523 + 1524 + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1525 + 1526 + "seroval": ["seroval@1.4.0", "", {}, "sha512-BdrNXdzlofomLTiRnwJTSEAaGKyHHZkbMXIywOh7zlzp4uZnXErEwl9XZ+N1hJSNpeTtNxWvVwN0wUzAIQ4Hpg=="], 1527 + 1528 + "seroval-plugins": ["seroval-plugins@1.4.0", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-zir1aWzoiax6pbBVjoYVd0O1QQXgIL3eVGBMsBsNmM8Ukq90yGaWlfx0AB9dTS8GPqrOrbXn79vmItCUP9U3BQ=="], 1529 + 1530 + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], 1531 + 1532 + "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], 1533 + 1534 + "shimmer": ["shimmer@1.2.1", "", {}, "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw=="], 1535 + 1536 + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 1537 + 1538 + "slash": ["slash@5.1.0", "", {}, "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg=="], 1539 + 1540 + "solid-js": ["solid-js@1.9.10", "", { "dependencies": { "csstype": "^3.1.0", "seroval": "~1.3.0", "seroval-plugins": "~1.3.0" } }, "sha512-Coz956cos/EPDlhs6+jsdTxKuJDPT7B5SVIWgABwROyxjY7Xbr8wkzD68Et+NxnV7DLJ3nJdAC2r9InuV/4Jew=="], 1541 + 1542 + "sonic-boom": ["sonic-boom@4.2.0", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww=="], 1543 + 1544 + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], 1545 + 1546 + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], 1547 + 1548 + "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], 1549 + 1550 + "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], 1551 + 1552 + "string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], 1553 + 1554 + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], 1555 + 1556 + "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 1557 + 1558 + "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], 1559 + 1560 + "stylehacks": ["stylehacks@7.0.7", "", { "dependencies": { "browserslist": "^4.27.0", "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g=="], 1561 + 1562 + "sucrase": ["sucrase@3.35.1", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw=="], 1563 + 1564 + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 1565 + 1566 + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 1567 + 1568 + "svgo": ["svgo@4.0.0", "", { "dependencies": { "commander": "^11.1.0", "css-select": "^5.1.0", "css-tree": "^3.0.1", "css-what": "^6.1.0", "csso": "^5.0.5", "picocolors": "^1.1.1", "sax": "^1.4.1" }, "bin": "./bin/svgo.js" }, "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw=="], 1569 + 1570 + "tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], 1571 + 1572 + "tailwindcss": ["tailwindcss@3.4.18", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", "jiti": "^1.21.7", "lilconfig": "^3.1.3", "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", "picocolors": "^1.1.1", "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", "postcss-load-config": "^4.0.2 || ^5.0 || ^6.0", "postcss-nested": "^6.2.0", "postcss-selector-parser": "^6.1.2", "resolve": "^1.22.8", "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", "tailwindcss": "lib/cli.js" } }, "sha512-6A2rnmW5xZMdw11LYjhcI5846rt9pbLSabY5XPxo+XWdxwZaFEn47Go4NzFiHu9sNNmr/kXivP1vStfvMaK1GQ=="], 1573 + 1574 + "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], 1575 + 1576 + "tar": ["tar@7.5.2", "", { "dependencies": { "@isaacs/fs-minipass": "^4.0.0", "chownr": "^3.0.0", "minipass": "^7.1.2", "minizlib": "^3.1.0", "yallist": "^5.0.0" } }, "sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg=="], 1577 + 1578 + "temporal-polyfill": ["temporal-polyfill@0.3.0", "", { "dependencies": { "temporal-spec": "0.3.0" } }, "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g=="], 1579 + 1580 + "temporal-spec": ["temporal-spec@0.3.0", "", {}, "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ=="], 1581 + 1582 + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], 1583 + 1584 + "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": ">= 3.1.0 < 4" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], 1585 + 1586 + "thread-stream": ["thread-stream@3.1.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="], 1587 + 1588 + "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], 1589 + 1590 + "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], 1591 + 1592 + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], 1593 + 1594 + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 1595 + 1596 + "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], 1597 + 1598 + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], 1599 + 1600 + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 1601 + 1602 + "tsx": ["tsx@4.20.6", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg=="], 1603 + 1604 + "turbo": ["turbo@2.6.1", "", { "optionalDependencies": { "turbo-darwin-64": "2.6.1", "turbo-darwin-arm64": "2.6.1", "turbo-linux-64": "2.6.1", "turbo-linux-arm64": "2.6.1", "turbo-windows-64": "2.6.1", "turbo-windows-arm64": "2.6.1" }, "bin": { "turbo": "bin/turbo" } }, "sha512-qBwXXuDT3rA53kbNafGbT5r++BrhRgx3sAo0cHoDAeG9g1ItTmUMgltz3Hy7Hazy1ODqNpR+C7QwqL6DYB52yA=="], 1605 + 1606 + "turbo-darwin-64": ["turbo-darwin-64@2.6.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ=="], 1607 + 1608 + "turbo-darwin-arm64": ["turbo-darwin-arm64@2.6.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw=="], 1609 + 1610 + "turbo-linux-64": ["turbo-linux-64@2.6.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw=="], 1611 + 1612 + "turbo-linux-arm64": ["turbo-linux-arm64@2.6.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA=="], 1613 + 1614 + "turbo-windows-64": ["turbo-windows-64@2.6.1", "", { "os": "win32", "cpu": "x64" }, "sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ=="], 1615 + 1616 + "turbo-windows-arm64": ["turbo-windows-arm64@2.6.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q=="], 1617 + 1618 + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], 1619 + 1620 + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], 1621 + 1622 + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], 1623 + 1624 + "typescript-eslint": ["typescript-eslint@8.48.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.48.0", "@typescript-eslint/parser": "8.48.0", "@typescript-eslint/typescript-estree": "8.48.0", "@typescript-eslint/utils": "8.48.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-fcKOvQD9GUn3Xw63EgiDqhvWJ5jsyZUaekl3KVpGsDJnN46WJTe3jWxtQP9lMZm1LJNkFLlTaWAxK2vUQR+cqw=="], 1625 + 1626 + "uint8arrays": ["uint8arrays@3.0.0", "", { "dependencies": { "multiformats": "^9.4.2" } }, "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA=="], 1627 + 1628 + "undici": ["undici@6.22.0", "", {}, "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw=="], 1629 + 1630 + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], 1631 + 1632 + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], 1633 + 1634 + "unplugin": ["unplugin@2.3.11", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "acorn": "^8.15.0", "picomatch": "^4.0.3", "webpack-virtual-modules": "^0.6.2" } }, "sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww=="], 1635 + 1636 + "update-browserslist-db": ["update-browserslist-db@1.1.4", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A=="], 1637 + 1638 + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], 1639 + 1640 + "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], 1641 + 1642 + "use-sidecar": ["use-sidecar@1.1.3", "", { "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ=="], 1643 + 1644 + "use-sync-external-store": ["use-sync-external-store@1.6.0", "", { "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w=="], 1645 + 1646 + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], 1647 + 1648 + "vite": ["vite@7.2.4", "", { "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w=="], 1649 + 1650 + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], 1651 + 1652 + "vscode-languageserver": ["vscode-languageserver@9.0.1", "", { "dependencies": { "vscode-languageserver-protocol": "3.17.5" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g=="], 1653 + 1654 + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.17.5", "", { "dependencies": { "vscode-jsonrpc": "8.2.0", "vscode-languageserver-types": "3.17.5" } }, "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg=="], 1655 + 1656 + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], 1657 + 1658 + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], 1659 + 1660 + "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], 1661 + 1662 + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], 1663 + 1664 + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1665 + 1666 + "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], 1667 + 1668 + "wrap-ansi": ["wrap-ansi@9.0.2", "", { "dependencies": { "ansi-styles": "^6.2.1", "string-width": "^7.0.0", "strip-ansi": "^7.1.0" } }, "sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww=="], 1669 + 1670 + "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], 1671 + 1672 + "ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], 1673 + 1674 + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], 1675 + 1676 + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], 1677 + 1678 + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], 1679 + 1680 + "yaml": ["yaml@2.8.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw=="], 1681 + 1682 + "yargs": ["yargs@18.0.0", "", { "dependencies": { "cliui": "^9.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "string-width": "^7.2.0", "y18n": "^5.0.5", "yargs-parser": "^22.0.0" } }, "sha512-4UEqdc2RYGHZc7Doyqkrqiln3p9X2DZVxaGbwhn2pi7MrRagKaOcIKe8L3OxYcbhXLgLFUS3zAYuQjKBQgmuNg=="], 1683 + 1684 + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], 1685 + 1686 + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], 1687 + 1688 + "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], 1689 + 1690 + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 1691 + 1692 + "@atproto-labs/simple-store-memory/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], 1693 + 1694 + "@atproto/common/@atproto/common-web": ["@atproto/common-web@0.4.3", "", { "dependencies": { "graphemer": "^1.4.0", "multiformats": "^9.9.0", "uint8arrays": "3.0.0", "zod": "^3.23.8" } }, "sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg=="], 1695 + 1696 + "@atproto/common/pino": ["pino@8.21.0", "", { "dependencies": { "atomic-sleep": "^1.0.0", "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^1.2.0", "pino-std-serializers": "^6.0.0", "process-warning": "^3.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^3.7.0", "thread-stream": "^2.6.0" }, "bin": { "pino": "bin.js" } }, "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q=="], 1697 + 1698 + "@atproto/lexicon/@atproto/common-web": ["@atproto/common-web@0.4.3", "", { "dependencies": { "graphemer": "^1.4.0", "multiformats": "^9.9.0", "uint8arrays": "3.0.0", "zod": "^3.23.8" } }, "sha512-nRDINmSe4VycJzPo6fP/hEltBcULFxt9Kw7fQk6405FyAWZiTluYHlXOnU7GkQfeUK44OENG1qFTBcmCJ7e8pg=="], 1699 + 1700 + "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 1701 + 1702 + "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "^3.0.2" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], 1703 + 1704 + "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 1705 + 1706 + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 1707 + 1708 + "@cookware/database/@libsql/client": ["@libsql/client@0.15.15", "", { "dependencies": { "@libsql/core": "^0.15.14", "@libsql/hrana-client": "^0.7.0", "js-base64": "^3.7.5", "libsql": "^0.5.22", "promise-limit": "^2.7.0" } }, "sha512-twC0hQxPNHPKfeOv3sNT6u2pturQjLcI+CnpTM0SjRpocEGgfiZ7DWKXLNnsothjyJmDqEsBQJ5ztq9Wlu470w=="], 1709 + 1710 + "@cookware/web/@atcute/bluesky": ["@atcute/bluesky@1.0.15", "", { "peerDependencies": { "@atcute/client": "^1.0.0 || ^2.0.0" } }, "sha512-+EFiybmKQ97aBAgtaD+cKRJER5AMn3cZMkEwEg/pDdWyzxYJ9m1UgemmLdTgI8VrxPufKqdXS2nl7uO7TY6BPA=="], 1711 + 1712 + "@cookware/web/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1713 + 1714 + "@esbuild-kit/core-utils/esbuild": ["esbuild@0.18.20", "", { "optionalDependencies": { "@esbuild/android-arm": "0.18.20", "@esbuild/android-arm64": "0.18.20", "@esbuild/android-x64": "0.18.20", "@esbuild/darwin-arm64": "0.18.20", "@esbuild/darwin-x64": "0.18.20", "@esbuild/freebsd-arm64": "0.18.20", "@esbuild/freebsd-x64": "0.18.20", "@esbuild/linux-arm": "0.18.20", "@esbuild/linux-arm64": "0.18.20", "@esbuild/linux-ia32": "0.18.20", "@esbuild/linux-loong64": "0.18.20", "@esbuild/linux-mips64el": "0.18.20", "@esbuild/linux-ppc64": "0.18.20", "@esbuild/linux-riscv64": "0.18.20", "@esbuild/linux-s390x": "0.18.20", "@esbuild/linux-x64": "0.18.20", "@esbuild/netbsd-x64": "0.18.20", "@esbuild/openbsd-x64": "0.18.20", "@esbuild/sunos-x64": "0.18.20", "@esbuild/win32-arm64": "0.18.20", "@esbuild/win32-ia32": "0.18.20", "@esbuild/win32-x64": "0.18.20" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA=="], 1715 + 1716 + "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 1717 + 1718 + "@eslint/eslintrc/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], 1719 + 1720 + "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], 1721 + 1722 + "@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 1723 + 1724 + "@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="], 1725 + 1726 + "@opentelemetry/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1727 + 1728 + "@opentelemetry/instrumentation-http/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.57.1", "", { "dependencies": { "@opentelemetry/api-logs": "0.57.1", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-SgHEKXoVxOjc20ZYusPG3Fh+RLIZTSa4x8QtD3NfgAUDyqdFFS9W1F2ZVbZkqDCdyMcQG02Ok4duUGLHJXHgbA=="], 1729 + 1730 + "@opentelemetry/instrumentation-http/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1731 + 1732 + "@opentelemetry/instrumentation-pg/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1733 + 1734 + "@opentelemetry/instrumentation-pg/@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="], 1735 + 1736 + "@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1737 + 1738 + "@opentelemetry/sdk-trace-base/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1739 + 1740 + "@prisma/instrumentation/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "^1.2.0", "import-in-the-middle": "^1.8.1", "require-in-the-middle": "^7.1.1", "semver": "^7.5.2", "shimmer": "^1.2.1" }, "peerDependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 1741 + 1742 + "@radix-ui/react-arrow/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1743 + 1744 + "@radix-ui/react-collapsible/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1745 + 1746 + "@radix-ui/react-collapsible/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1747 + 1748 + "@radix-ui/react-collection/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1749 + 1750 + "@radix-ui/react-collection/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1751 + 1752 + "@radix-ui/react-collection/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1753 + 1754 + "@radix-ui/react-dialog/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1755 + 1756 + "@radix-ui/react-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1757 + 1758 + "@radix-ui/react-dialog/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1759 + 1760 + "@radix-ui/react-dismissable-layer/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1761 + 1762 + "@radix-ui/react-dropdown-menu/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1763 + 1764 + "@radix-ui/react-dropdown-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1765 + 1766 + "@radix-ui/react-focus-scope/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1767 + 1768 + "@radix-ui/react-menu/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1769 + 1770 + "@radix-ui/react-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1771 + 1772 + "@radix-ui/react-menu/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1773 + 1774 + "@radix-ui/react-popper/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1775 + 1776 + "@radix-ui/react-popper/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1777 + 1778 + "@radix-ui/react-portal/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1779 + 1780 + "@radix-ui/react-roving-focus/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1781 + 1782 + "@radix-ui/react-roving-focus/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1783 + 1784 + "@radix-ui/react-tooltip/@radix-ui/react-context": ["@radix-ui/react-context@1.1.2", "", { "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA=="], 1785 + 1786 + "@radix-ui/react-tooltip/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1787 + 1788 + "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1789 + 1790 + "@radix-ui/react-visually-hidden/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.1.3", "", { "dependencies": { "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react", "@types/react-dom"] }, "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ=="], 1791 + 1792 + "@types/pg-pool/@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="], 1793 + 1794 + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 1795 + 1796 + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], 1797 + 1798 + "@vitejs/plugin-react-swc/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], 1799 + 1800 + "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1801 + 1802 + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1803 + 1804 + "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], 1805 + 1806 + "eslint/ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], 1807 + 1808 + "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1809 + 1810 + "glob/minimatch": ["minimatch@10.1.1", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ=="], 1811 + 1812 + "globby/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 1813 + 1814 + "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1815 + 1816 + "p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], 1817 + 1818 + "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], 1819 + 1820 + "postcss-calc/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1821 + 1822 + "postcss-discard-comments/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1823 + 1824 + "postcss-merge-rules/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1825 + 1826 + "postcss-minify-selectors/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1827 + 1828 + "postcss-unique-selectors/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1829 + 1830 + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1831 + 1832 + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1833 + 1834 + "solid-js/seroval": ["seroval@1.3.2", "", {}, "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="], 1835 + 1836 + "solid-js/seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="], 1837 + 1838 + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1839 + 1840 + "stylehacks/postcss-selector-parser": ["postcss-selector-parser@7.1.0", "", { "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" } }, "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA=="], 1841 + 1842 + "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], 1843 + 1844 + "tsx/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], 1845 + 1846 + "vite/esbuild": ["esbuild@0.25.12", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.12", "@esbuild/android-arm": "0.25.12", "@esbuild/android-arm64": "0.25.12", "@esbuild/android-x64": "0.25.12", "@esbuild/darwin-arm64": "0.25.12", "@esbuild/darwin-x64": "0.25.12", "@esbuild/freebsd-arm64": "0.25.12", "@esbuild/freebsd-x64": "0.25.12", "@esbuild/linux-arm": "0.25.12", "@esbuild/linux-arm64": "0.25.12", "@esbuild/linux-ia32": "0.25.12", "@esbuild/linux-loong64": "0.25.12", "@esbuild/linux-mips64el": "0.25.12", "@esbuild/linux-ppc64": "0.25.12", "@esbuild/linux-riscv64": "0.25.12", "@esbuild/linux-s390x": "0.25.12", "@esbuild/linux-x64": "0.25.12", "@esbuild/netbsd-arm64": "0.25.12", "@esbuild/netbsd-x64": "0.25.12", "@esbuild/openbsd-arm64": "0.25.12", "@esbuild/openbsd-x64": "0.25.12", "@esbuild/openharmony-arm64": "0.25.12", "@esbuild/sunos-x64": "0.25.12", "@esbuild/win32-arm64": "0.25.12", "@esbuild/win32-ia32": "0.25.12", "@esbuild/win32-x64": "0.25.12" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg=="], 1847 + 1848 + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 1849 + 1850 + "@atproto/common/pino/pino-abstract-transport": ["pino-abstract-transport@1.2.0", "", { "dependencies": { "readable-stream": "^4.0.0", "split2": "^4.0.0" } }, "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q=="], 1851 + 1852 + "@atproto/common/pino/pino-std-serializers": ["pino-std-serializers@6.2.2", "", {}, "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="], 1853 + 1854 + "@atproto/common/pino/process-warning": ["process-warning@3.0.0", "", {}, "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="], 1855 + 1856 + "@atproto/common/pino/sonic-boom": ["sonic-boom@3.8.1", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg=="], 1857 + 1858 + "@atproto/common/pino/thread-stream": ["thread-stream@2.7.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw=="], 1859 + 1860 + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], 1861 + 1862 + "@cookware/database/@libsql/client/@libsql/core": ["@libsql/core@0.15.15", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA=="], 1863 + 1864 + "@cookware/database/@libsql/client/libsql": ["libsql@0.5.22", "", { "dependencies": { "@neon-rs/load": "^0.0.4", "detect-libc": "2.0.2" }, "optionalDependencies": { "@libsql/darwin-arm64": "0.5.22", "@libsql/darwin-x64": "0.5.22", "@libsql/linux-arm-gnueabihf": "0.5.22", "@libsql/linux-arm-musleabihf": "0.5.22", "@libsql/linux-arm64-gnu": "0.5.22", "@libsql/linux-arm64-musl": "0.5.22", "@libsql/linux-x64-gnu": "0.5.22", "@libsql/linux-x64-musl": "0.5.22", "@libsql/win32-x64-msvc": "0.5.22" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "arm", "x64", "arm64", ] }, "sha512-NscWthMQt7fpU8lqd7LXMvT9pi+KhhmTHAJWUB/Lj6MWa0MKFv0F2V4C6WKKpjCVZl0VwcDz4nOI3CyaT1DDiA=="], 1865 + 1866 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.18.20", "", { "os": "android", "cpu": "arm" }, "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw=="], 1867 + 1868 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.18.20", "", { "os": "android", "cpu": "arm64" }, "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ=="], 1869 + 1870 + "@esbuild-kit/core-utils/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.18.20", "", { "os": "android", "cpu": "x64" }, "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg=="], 1871 + 1872 + "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.18.20", "", { "os": "darwin", "cpu": "arm64" }, "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA=="], 1873 + 1874 + "@esbuild-kit/core-utils/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.18.20", "", { "os": "darwin", "cpu": "x64" }, "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ=="], 1875 + 1876 + "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.18.20", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw=="], 1877 + 1878 + "@esbuild-kit/core-utils/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.18.20", "", { "os": "freebsd", "cpu": "x64" }, "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ=="], 1879 + 1880 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.18.20", "", { "os": "linux", "cpu": "arm" }, "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg=="], 1881 + 1882 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.18.20", "", { "os": "linux", "cpu": "arm64" }, "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA=="], 1883 + 1884 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.18.20", "", { "os": "linux", "cpu": "ia32" }, "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA=="], 1885 + 1886 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg=="], 1887 + 1888 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ=="], 1889 + 1890 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.18.20", "", { "os": "linux", "cpu": "ppc64" }, "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA=="], 1891 + 1892 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.18.20", "", { "os": "linux", "cpu": "none" }, "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A=="], 1893 + 1894 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.18.20", "", { "os": "linux", "cpu": "s390x" }, "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ=="], 1895 + 1896 + "@esbuild-kit/core-utils/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.18.20", "", { "os": "linux", "cpu": "x64" }, "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w=="], 1897 + 1898 + "@esbuild-kit/core-utils/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.18.20", "", { "os": "none", "cpu": "x64" }, "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A=="], 1899 + 1900 + "@esbuild-kit/core-utils/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.18.20", "", { "os": "openbsd", "cpu": "x64" }, "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg=="], 1901 + 1902 + "@esbuild-kit/core-utils/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.18.20", "", { "os": "sunos", "cpu": "x64" }, "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ=="], 1903 + 1904 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.18.20", "", { "os": "win32", "cpu": "arm64" }, "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg=="], 1905 + 1906 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.18.20", "", { "os": "win32", "cpu": "ia32" }, "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g=="], 1907 + 1908 + "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], 1909 + 1910 + "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 1911 + 1912 + "@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="], 1913 + 1914 + "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 1915 + 1916 + "@opentelemetry/instrumentation-http/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.1", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-I4PHczeujhQAQv6ZBzqHYEUiggZL4IdSMixtVD3EYqbdrjujE7kRfI5QohjlPoJm8BvenoW5YaTMWRrbpot6tg=="], 1917 + 1918 + "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1919 + 1920 + "@radix-ui/react-arrow/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1921 + 1922 + "@radix-ui/react-collapsible/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1923 + 1924 + "@radix-ui/react-dismissable-layer/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1925 + 1926 + "@radix-ui/react-dropdown-menu/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1927 + 1928 + "@radix-ui/react-focus-scope/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1929 + 1930 + "@radix-ui/react-popper/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1931 + 1932 + "@radix-ui/react-portal/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1933 + 1934 + "@radix-ui/react-roving-focus/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1935 + 1936 + "@radix-ui/react-visually-hidden/@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.2.3", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A=="], 1937 + 1938 + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], 1939 + 1940 + "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], 1941 + 1942 + "eslint/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 1943 + 1944 + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], 1945 + 1946 + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], 1947 + 1948 + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], 1949 + 1950 + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], 1951 + 1952 + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], 1953 + 1954 + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], 1955 + 1956 + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], 1957 + 1958 + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], 1959 + 1960 + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], 1961 + 1962 + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], 1963 + 1964 + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], 1965 + 1966 + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], 1967 + 1968 + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], 1969 + 1970 + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], 1971 + 1972 + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], 1973 + 1974 + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], 1975 + 1976 + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], 1977 + 1978 + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], 1979 + 1980 + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], 1981 + 1982 + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], 1983 + 1984 + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], 1985 + 1986 + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], 1987 + 1988 + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], 1989 + 1990 + "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], 1991 + 1992 + "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], 1993 + 1994 + "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], 1995 + 1996 + "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], 1997 + 1998 + "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], 1999 + 2000 + "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], 2001 + 2002 + "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], 2003 + 2004 + "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], 2005 + 2006 + "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], 2007 + 2008 + "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], 2009 + 2010 + "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], 2011 + 2012 + "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], 2013 + 2014 + "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], 2015 + 2016 + "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], 2017 + 2018 + "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], 2019 + 2020 + "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], 2021 + 2022 + "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], 2023 + 2024 + "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], 2025 + 2026 + "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], 2027 + 2028 + "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], 2029 + 2030 + "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], 2031 + 2032 + "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], 2033 + 2034 + "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], 2035 + 2036 + "@cookware/database/@libsql/client/libsql/@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.5.22", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA=="], 2037 + 2038 + "@cookware/database/@libsql/client/libsql/@libsql/darwin-x64": ["@libsql/darwin-x64@0.5.22", "", { "os": "darwin", "cpu": "x64" }, "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA=="], 2039 + 2040 + "@cookware/database/@libsql/client/libsql/@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.5.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-KSdnOMy88c9mpOFKUEzPskSaF3VLflfSUCBwas/pn1/sV3pEhtMF6H8VUCd2rsedwoukeeCSEONqX7LLnQwRMA=="], 2041 + 2042 + "@cookware/database/@libsql/client/libsql/@libsql/linux-arm64-musl": ["@libsql/linux-arm64-musl@0.5.22", "", { "os": "linux", "cpu": "arm64" }, "sha512-mCHSMAsDTLK5YH//lcV3eFEgiR23Ym0U9oEvgZA0667gqRZg/2px+7LshDvErEKv2XZ8ixzw3p1IrBzLQHGSsw=="], 2043 + 2044 + "@cookware/database/@libsql/client/libsql/@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.5.22", "", { "os": "linux", "cpu": "x64" }, "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew=="], 2045 + 2046 + "@cookware/database/@libsql/client/libsql/@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.5.22", "", { "os": "linux", "cpu": "x64" }, "sha512-UZ4Xdxm4pu3pQXjvfJiyCzZop/9j/eA2JjmhMaAhe3EVLH2g11Fy4fwyUp9sT1QJYR1kpc2JLuybPM0kuXv/Tg=="], 2047 + 2048 + "@cookware/database/@libsql/client/libsql/@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.5.22", "", { "os": "win32", "cpu": "x64" }, "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA=="], 2049 + 2050 + "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], 2051 + 2052 + "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 2053 + } 2054 + }
+34
config/dev/caddy/Caddyfile
··· 1 + { 2 + storage file_system /data/ 3 + debug 4 + } 5 + 6 + (tls_config) { 7 + tls /tls/dev.crt /tls/dev.key { 8 + ca_root /tls/ca.crt 9 + } 10 + } 11 + 12 + api.local.recipes.blue { 13 + import tls_config 14 + reverse_proxy http://host.docker.internal:8787 15 + } 16 + 17 + local.recipes.blue { 18 + import tls_config 19 + reverse_proxy http://host.docker.internal:5173 20 + 21 + handle_path /xrpc/* { 22 + rewrite * /xrpc{uri} 23 + reverse_proxy http://host.docker.internal:8787 24 + } 25 + handle_path /api/* { 26 + rewrite * /api{uri} 27 + reverse_proxy http://host.docker.internal:8787 28 + } 29 + } 30 + 31 + turso.local.recipes.blue { 32 + import tls_config 33 + reverse_proxy http://libsql:8080 34 + }
+28
config/dev/caddy/compose.yaml
··· 1 + --- 2 + volumes: 3 + caddy_data: {} 4 + caddy_config: {} 5 + 6 + networks: 7 + caddy: 8 + 9 + services: 10 + caddy: 11 + image: caddy:2 12 + restart: unless-stopped 13 + cap_add: 14 + - NET_ADMIN 15 + ports: 16 + - "80:80" 17 + - "443:443" 18 + - "443:443/udp" 19 + volumes: 20 + - ./Caddyfile:/etc/caddy/Caddyfile:ro 21 + - ../pki:/tls:ro 22 + - caddy_data:/data 23 + - caddy_config:/config 24 + extra_hosts: 25 + - "host.docker.internal:host-gateway" 26 + networks: 27 + - caddy 28 + - recipesblue
+13
config/dev/db/compose.yaml
··· 1 + --- 2 + volumes: 3 + postgres: {} 4 + 5 + services: 6 + postgres: 7 + image: postgres:18 8 + environment: 9 + POSTGRES_PASSWORD: postgres 10 + ports: 11 + - 5432:5432 12 + volumes: 13 + - postgres:/var/lib/postgresql/18/docker
+29
config/dev/pki/ca.crt
··· 1 + -----BEGIN CERTIFICATE----- 2 + MIIE/DCCA2SgAwIBAgIRALK0p95iJHmmXOWjMAS7T4swDQYJKoZIhvcNAQELBQAw 3 + gZUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE1MDMGA1UECwwsaGF5 4 + ZGVuQEhBWURFTi1XMTEubG9jYWxkb21haW4gKEhheWRlbiBZb3VuZykxPDA6BgNV 5 + BAMMM21rY2VydCBoYXlkZW5ASEFZREVOLVcxMS5sb2NhbGRvbWFpbiAoSGF5ZGVu 6 + IFlvdW5nKTAeFw0yNTExMjIyMjIyNTdaFw0zNTExMjIyMjIyNTdaMIGVMR4wHAYD 7 + VQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExNTAzBgNVBAsMLGhheWRlbkBIQVlE 8 + RU4tVzExLmxvY2FsZG9tYWluIChIYXlkZW4gWW91bmcpMTwwOgYDVQQDDDNta2Nl 9 + cnQgaGF5ZGVuQEhBWURFTi1XMTEubG9jYWxkb21haW4gKEhheWRlbiBZb3VuZykw 10 + ggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQCzcORfQsG3VWrZ8GnJZZhB 11 + FTtjV/A+LllaUlt2GIjAf9eBMIct7C4GoVfUSG8V5C3UMHMDpoZZCSJym2NyndOV 12 + CI1O/pr8sC4klVGetny/GxO443tn6z5Xz/BHsXSrE35igIO1p8S2xYctlXYq/cdE 13 + N5PsceQEg2p5K/EsBpcXEM1gMfUXB+v7nUhNx5AO+z+kZzSNkcmPYigwxq/pm3iM 14 + H8vYqhmZCT9zD7+FUFsBgbEf/bLU41xium21zdqzS7aoG2rypRoDvbaWbEvqZoJO 15 + 2VBnqBwI2aaMqCJ+Lc2VwLOYHNqu6iisTMzaNLbj2dr8Uvatem3yZvB+ACPzpQ8O 16 + zIQp5gjKZQ6nC2/1kvLIo9g5g2mCyG2hphadv/ubPmxaqe0w/PobngQFt5SbO2au 17 + mguvKFRa4FEm/Dy215+1Hil3owQkSGEREQMLS+t8TorBw7bgXUF8iSEiZS6JYabD 18 + yHYr8oBl/axDaAfCPkH4KGcjVf4vxOK255RbIBoCIksCAwEAAaNFMEMwDgYDVR0P 19 + AQH/BAQDAgIEMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFKfqTnO4509h 20 + 3YIiTC2EnnZYLG1fMA0GCSqGSIb3DQEBCwUAA4IBgQBSRKsZyGQoxcONbYrTVK82 21 + PAeOnYwlk27vPhhYbSTfgJRS5v3om9brccAVSPbZX4WXT5f/ibvLja0o7zU3RmxJ 22 + D5M4narw76fRXNzHjHfU6PRqDqLzJhPWM/V0IuQotU6kxEoNrfg9a1buB4lqldXr 23 + xqAarNM7kb0UXB/Wi1paKBk8o9CIvfoDP0kHoZHapBN6VWsJyPaTDfSH0roUfU+H 24 + jsm75nTXMI6h7eI5jo7FJcut1wbBpSiHdvmr4BX2SOGPHbSYCACirGExADKa4ULz 25 + AdhDBtBGEBtjzIKi9cLFTZY9bHFQsrwhegEDJwZs/ZH931q+f3ciE2og7qqE0drZ 26 + zZrmjY9QdOagSNRWw1089jG02333wtdgH+eJbYqVaKxB+vpBMUP72HEDS4WOh1E6 27 + nLNjqm6cZ4bW8I5gfsIDvcsmSGWdHaZLWvXcO20G2ySyfd/64L5+VHAs5rtbbzZr 28 + TR3BleuWVc5lMCAQtdoMAcy7UFPdUzSxHdrATc/Y/uQ= 29 + -----END CERTIFICATE-----
+40
config/dev/pki/ca.key
··· 1 + -----BEGIN PRIVATE KEY----- 2 + MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQCzcORfQsG3VWrZ 3 + 8GnJZZhBFTtjV/A+LllaUlt2GIjAf9eBMIct7C4GoVfUSG8V5C3UMHMDpoZZCSJy 4 + m2NyndOVCI1O/pr8sC4klVGetny/GxO443tn6z5Xz/BHsXSrE35igIO1p8S2xYct 5 + lXYq/cdEN5PsceQEg2p5K/EsBpcXEM1gMfUXB+v7nUhNx5AO+z+kZzSNkcmPYigw 6 + xq/pm3iMH8vYqhmZCT9zD7+FUFsBgbEf/bLU41xium21zdqzS7aoG2rypRoDvbaW 7 + bEvqZoJO2VBnqBwI2aaMqCJ+Lc2VwLOYHNqu6iisTMzaNLbj2dr8Uvatem3yZvB+ 8 + ACPzpQ8OzIQp5gjKZQ6nC2/1kvLIo9g5g2mCyG2hphadv/ubPmxaqe0w/PobngQF 9 + t5SbO2aumguvKFRa4FEm/Dy215+1Hil3owQkSGEREQMLS+t8TorBw7bgXUF8iSEi 10 + ZS6JYabDyHYr8oBl/axDaAfCPkH4KGcjVf4vxOK255RbIBoCIksCAwEAAQKCAYAI 11 + 6Yd+L7udVnG7J1SpuxEH0n0jnv+Apx6q/MIsKGXKYc8bTIS6RCu5CpRpJ7vUs4OP 12 + MWTU/pVXoLuEQ7F5xNr4YPdbwAuEl1+DU6M9JcUmXLrrCOldLPLou5wsg2TPBmXV 13 + kJp6ED4V8dOX8P9wfTBDdBs1uCZiDwDfyc3tqNoiPCRnLbQFk9AlrBcmPc4q4FG1 14 + 4aZbja0cIPzsB0I/cQhYtU+TkEc7MZlkJpkVjvsmJQHeG+Sg7DXvdWDzkajWFOGF 15 + RobzHS/C+9xrybTMTr/nBWFY0rzeJNkNVAK1qQMKgkK+M+WihQYlH/x9XbNDzccx 16 + zDDU1Vn1c7WnrHiLN2m3SKgT/0NNxgZoQknOkR0kkTzAkBoco/T+/Li4M+y+jCnC 17 + yptMScwcAJL5whkWVWrE8jtD6gjqqK+NKMkE4UI/4cRj1eB49uVuixhg5VQmEeG8 18 + SdicfxOrnypdMthTCtxr1zoK4uRvd6XkysZUq+bneIvkykWp8IL4RA0gM4oKzFkC 19 + gcEA0hXSYoJK2yxQBmSUB3KXbMO3Yg2WGw5m5EgXPIGMd0gwJ7ALzFsJRd7AvVO/ 20 + mlEpDkYAGWCYE94RiVN36S3XHl0jh6z2RXHZvCe5/l4Jwr0AnoL+AhPxOO6OwR5e 21 + rnqwRYkbqI/sCsJXHKnQ5zUIgnVpgbTxdymoblM3lPcisPTxHTqCqKJ6mu97CVQk 22 + OqmpqklDOyk/LOe/E2/wWDu1EdkD+a+BmWRadTzAv07dZ0Vq/m0gWp7iE+cG61V3 23 + 9HDnAoHBANqoiZHG4ROtXhih0qA3TXKJ99sMWflMh+vt2AD3n3S5YOBKh8EU7f9P 24 + zE0nYpo5Qq0OkLom/Gwgp1JBiTlsDkeMSqOwwFQ9rCA8qCKMT68fcZ1LPW9loWDL 25 + sA6Z1LpbvMs/pD1jWZV74jUt8ZmPNSsKvdmqsHXzrG4TQoEZGtopWyWdQSlGO5pY 26 + q3qPA/EG+Asp2F3kzBFGd4Ax6xHU5mSm3OnAzqNhc26jNM8CTUG7KQad9SyrjegN 27 + vA4jA7VC/QKBwC2cyUnUChad/13z9mPLkG7v61/hnUaQkOxdbpYXdnzrcnEbeuRK 28 + m6/M1kIE7eO+XVCZCCp6W2ps25faRH2fE0anaDBr8ChRuLluUqaUmj/qszi3Lhkb 29 + ZVM8EEiDpIDzaFQgmZ22acRIP4ucnxuj2w4gGeEsfQSnScdyT+4K3kBXXgY/juC4 30 + LjB3cFotJ5SJA6pSL8Onh+zjAAxjUGaHyB9w47kRTu0T6cPshdjDcbSbUMievtiO 31 + CH3Tuh/cNagf3wKBwQDPOXbXPyJEYcORmJti18aATJ0nbbc/evY99DUIBaWLG7zi 32 + FABATrOXiWrXnAHoo2e7Vth2c0g6uV+Zpx6D2xJVYHHEXFiJ/cDI9HNr+onyL9ye 33 + 85WPo0Oj1qZN0CA5VYPBI9lljGh0MOoa+CXGIGCFIDL4vLlrr7m0wHAApWg7ZYJK 34 + TZRZp4QJLQumpS9ZF/+vpMK3iYSUwrGyPpzHU3vd2/31UpMDZ/Hb4rTDkyzgpJ2m 35 + 9cBLy3I7f/i/dROoj4kCgcACSTKfxzg8sWORWu5amTGMOoTlSfJzgi0f//koqiFN 36 + hqD77Srt23hzCqI2P7KniSwtLkyUFpW82Sq3TmkDkfiDJ4bywXjS6V9N/C3N7GGG 37 + iDw9wVHZFLy/d0aTnnkXKre38IVC2L7bX2gDEVr3cEYuKfFHfn6S3eLxYlf/uVzW 38 + vZYLaWra+fTpZn/TTsEu5Qf/By0jDqwmckBuaGQkpSUPVC6VCdJdkLj/P8KX/WEK 39 + Z2CAgvzTduQVyoeY0sSM0dA= 40 + -----END PRIVATE KEY-----
+27
config/dev/pki/dev.crt
··· 1 + -----BEGIN CERTIFICATE----- 2 + MIIEfjCCAuagAwIBAgIRAMooUps4l++//kLhRuQXNKIwDQYJKoZIhvcNAQELBQAw 3 + gZUxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTE1MDMGA1UECwwsaGF5 4 + ZGVuQEhBWURFTi1XMTEubG9jYWxkb21haW4gKEhheWRlbiBZb3VuZykxPDA6BgNV 5 + BAMMM21rY2VydCBoYXlkZW5ASEFZREVOLVcxMS5sb2NhbGRvbWFpbiAoSGF5ZGVu 6 + IFlvdW5nKTAeFw0yNTExMjIyMjIzMThaFw0yODAyMjIyMjIzMThaMGAxJzAlBgNV 7 + BAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0aWZpY2F0ZTE1MDMGA1UECwwsaGF5 8 + ZGVuQEhBWURFTi1XMTEubG9jYWxkb21haW4gKEhheWRlbiBZb3VuZykwggEiMA0G 9 + CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDSkRNRv4sBJbigX3Xiekg2eBk5ivz5 10 + tJ7VRPTYGCH2hqkyTvuiO44iX/CI0OKsDTxiCTzr2zaDQ6/bEAsK+NuIGUA7Lo81 11 + MWsGphiEfyHGK5j0oI8Rg5c9Vh7InXaoAdouJ8JTZlnjLbSEv3l1fLcY+BBNBfvK 12 + soF4KMhSyoXULsdnc5sTU1iXvhi0+330py7KYlW4KM1nb5ucQ7EYb/fWNmqmINTi 13 + 4agepceTvfV9/lkCGlwvAYUeYkiZsR2DM0j1zwiH7NVlitASjoUqP/IjzWqTd7xu 14 + NeDTyy0srJmu/CYG8GBi/w1lNSk0WPpT6R3i76/RmRZqU4sApJVbaWkFAgMBAAGj 15 + fTB7MA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSME 16 + GDAWgBSn6k5zuOdPYd2CIkwthJ52WCxtXzAzBgNVHREELDAqghJsb2NhbC5yZWNp 17 + cGVzLmJsdWWCFCoubG9jYWwucmVjaXBlcy5ibHVlMA0GCSqGSIb3DQEBCwUAA4IB 18 + gQArUayVybiyLqKslyikxMjg0W0OR6Vl3BOzcHuv0+MQYiU4RXZEy9gB158fRq/A 19 + oYfGf0VMyP4GXCKDyJUfGiU/d1KQeu2skBK+SnZys6lV2pxtqnTxsJX18HI8bH3g 20 + jPjP8iQTGk4izkzhP/IMtSO88gVu5YZkQuU/W3uCJEwjsQTwKCx+VbTI0+2iiVw4 21 + 6S8f5dbjRG5cWzRuNOq8YAG42/2wPEhUzxJXsFlxrRXSOP1FlGcJy0QQm6TQ85+l 22 + D7sYHVKET2d181yWggT1KiKeGKm+pYkNgLKEHXAM0XGmlYAR01ibz2iotguYnz+z 23 + NgD+rHerqcdIaRLDPUmNYUCbDRpKozT/X6HK9qB3OtGMLFd5nd1S6mS6NisdzZCY 24 + s7WyCvnvMbExqpMnlX97UPcI0l0RUC/q/feQ+H2TqTD5QWszEvIO0JqEaREEgZ4p 25 + A0ZMksO4ZDsKMX2eqDLEv+Td9nb/7Kw+ydCjAMDLV11o31WBF0ucA/dV7sdgYFCj 26 + 1NM= 27 + -----END CERTIFICATE-----
+28
config/dev/pki/dev.key
··· 1 + -----BEGIN PRIVATE KEY----- 2 + MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDSkRNRv4sBJbig 3 + X3Xiekg2eBk5ivz5tJ7VRPTYGCH2hqkyTvuiO44iX/CI0OKsDTxiCTzr2zaDQ6/b 4 + EAsK+NuIGUA7Lo81MWsGphiEfyHGK5j0oI8Rg5c9Vh7InXaoAdouJ8JTZlnjLbSE 5 + v3l1fLcY+BBNBfvKsoF4KMhSyoXULsdnc5sTU1iXvhi0+330py7KYlW4KM1nb5uc 6 + Q7EYb/fWNmqmINTi4agepceTvfV9/lkCGlwvAYUeYkiZsR2DM0j1zwiH7NVlitAS 7 + joUqP/IjzWqTd7xuNeDTyy0srJmu/CYG8GBi/w1lNSk0WPpT6R3i76/RmRZqU4sA 8 + pJVbaWkFAgMBAAECggEAagiYO/BCpV9Da67mhBejyZoMycdNwMjNuwOwcCkm4SfK 9 + iATx/i4TUwgQ7jSSEKXRpGSWgwaumsc5BQ09IldS5WQhziuR/e1WwdBeREpozYwi 10 + x/0aTm1/eWmmsstodw4HunpXBvxhg17+qmJpXVpiMXapbr/2nYnqXIHc7qQBZGkH 11 + MnuDi6chGw0RBZhySLCHsyth5OHP16/SiV7Am6UaQyi4oG3W/RrVIRsIjoLPj0Hw 12 + MSPhiv/yq4TIWb4ujnGgNhIcEGJN6tYKWUEdoMjWQwvWZKw1c3G1glfUQGUeS7fH 13 + 0U4XTtPS43j7d5iQoff0gfZwV8wZvUAaRgxfgc7+eQKBgQDTeF48lHbw9lrrMu9P 14 + YfGiS90v9U25TpOq3qYUEPdwy9ssnTXPS/iJim/IW/B10F/AneqLWPWUawjaLxVF 15 + tAxMiruE3L4pJfYtbF7x3bWz879fMItlatWIKSwinEXu1NeQMDaTy7P5u+H37+7c 16 + nQm8KNtIVT29XYalK9pv5Hvg7wKBgQD+6ADj4LA25h0xTcjKBERStMPRESiFE1K7 17 + ITzp2jvOO68ZKgWSN+8bKpLKQYj40Aivi7Nu22cqlpcZ7/7uETXb6xjVrEfteg3S 18 + u7FUU9vuwX/0RCtbj8FlV1iaJXdq2XmnQLg2RESYFKc9vHaWdRJ/VCDkDCuNWns0 19 + IVjlY7OtSwKBgDF/fy9W4PBN+cILzhAasOB4OXG8TVEOn2nja6ROxFxWmxq6QZog 20 + AjDPgpK3UnWBLKh9TiUH0ZPH6e6IDsad+jMAVhwnPyuKgzDmqOKcLqfMagLx7e7z 21 + LsAMQxRm18ercjmBz4SQrbPK0n2iX5qr91dfiNRJf4YPmjCXLy35oTVpAoGBAJBT 22 + 5mUgTEXZRwAqjZysi87UYOcYMvweM8KWkDnMgf5EVuEFpP/kQbL9CP4R2y8eAzz5 23 + +Y+0FJbNiyJ5e7tp7Tfmxjn9gQBaEkeWVFJt5OIrl3pDutTt8U+jBBzLR/Esz6++ 24 + ek7nmnsNfp/6/J42DVIg3TqiFWrEp2ud0gqXyB0/AoGBAMj1p1uknmOoEoqfdJeI 25 + UqbWE//107MXTAhydpn/iuUKUVw9SiBpmdgA+YZ0ufuPyxy+Uoc25LrLrvA4O7aP 26 + hy4SJZ/7jq45AK6jPqzJo9FMjB32t5QyWkHlbvbasXA+5AHlriVjC58/EW60K/e3 27 + Pth8LTDiTKFjWFJWXYkGLtFa 28 + -----END PRIVATE KEY-----
+12
config/dev/redis/compose.yaml
··· 1 + --- 2 + volumes: 3 + redis: 4 + 5 + services: 6 + redis: 7 + image: redis:8 8 + command: redis-server --save 60 1 --loglevel warning 9 + ports: 10 + - 6379:6379 11 + volumes: 12 + - redis:/data
+5 -34
docker-compose.yaml
··· 1 1 --- 2 - services: 3 - caddy: 4 - image: caddy:2 5 - restart: unless-stopped 6 - cap_add: 7 - - NET_ADMIN 8 - ports: 9 - - "80:80" 10 - - "443:443" 11 - - "443:443/udp" 12 - volumes: 13 - - ./Caddyfile:/etc/caddy/Caddyfile 14 - - caddy_data:/data 15 - - caddy_config:/config 16 - extra_hosts: 17 - - "host.docker.internal:host-gateway" 2 + include: 3 + - path: config/dev/db/compose.yaml 4 + - path: config/dev/redis/compose.yaml 18 5 19 - libsql: 20 - image: ghcr.io/tursodatabase/libsql-server:latest 21 - environment: 22 - SQLD_NODE: primary 23 - ports: 24 - - 4001:8080 25 - volumes: 26 - - libsql:/var/lib/sqld 27 - 28 - tunnel: 29 - image: cloudflare/cloudflared 30 - restart: unless-stopped 31 - command: tunnel --url http://caddy 32 - 33 - volumes: 34 - caddy_data: {} 35 - caddy_config: {} 36 - libsql: {} 6 + networks: 7 + recipesblue:
-43
fly.toml
··· 1 - app = "cookware" 2 - primary_region = "lhr" 3 - 4 - [build] 5 - dockerfile = "Dockerfile" 6 - [build.args] 7 - VITE_API_SERVICE = "recipes.blue" 8 - 9 - [processes] 10 - web = "bash -c 'cd apps/api && node dist/index.js'" 11 - ingester = "bash -c 'cd apps/ingester && node dist/index.js'" 12 - 13 - [env] 14 - CORS_ORIGINS = "https://recipes.blue,http://127.0.0.1:5173" 15 - 16 - [deploy] 17 - release_command = "bash -c 'cd libs/database && pnpm db:migrate'" 18 - 19 - [[vm]] 20 - size = "shared-cpu-1x" 21 - memory = 256 22 - processes = ["web"] 23 - 24 - [[vm]] 25 - size = "shared-cpu-1x" 26 - memory = 256 27 - processes = ["ingester"] 28 - 29 - [[services]] 30 - http_checks = [] 31 - processes = ["web"] 32 - internal_port = 8080 33 - [[services.ports]] 34 - handlers = ["http"] 35 - port = 80 36 - force_https = true 37 - [[services.ports]] 38 - handlers = ["tls", "http"] 39 - port = 443 40 - 41 - [[statics]] 42 - guest_path = "/usr/src/app/apps/web/dist" 43 - url_prefix = "/"
-53
lexicons/app/bsky/actor/profile.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "app.bsky.actor.profile", 4 - "defs": { 5 - "main": { 6 - "type": "record", 7 - "description": "A declaration of a Bluesky account profile.", 8 - "key": "literal:self", 9 - "record": { 10 - "type": "object", 11 - "properties": { 12 - "displayName": { 13 - "type": "string", 14 - "maxGraphemes": 64, 15 - "maxLength": 640 16 - }, 17 - "description": { 18 - "type": "string", 19 - "description": "Free-form profile description text.", 20 - "maxGraphemes": 256, 21 - "maxLength": 2560 22 - }, 23 - "avatar": { 24 - "type": "blob", 25 - "description": "Small image to be displayed next to posts from account. AKA, 'profile picture'", 26 - "accept": ["image/png", "image/jpeg"], 27 - "maxSize": 1000000 28 - }, 29 - "banner": { 30 - "type": "blob", 31 - "description": "Larger horizontal image to display behind profile view.", 32 - "accept": ["image/png", "image/jpeg"], 33 - "maxSize": 1000000 34 - }, 35 - "labels": { 36 - "type": "union", 37 - "description": "Self-label values, specific to the Bluesky application, on the overall account.", 38 - "refs": ["com.atproto.label.defs#selfLabels"] 39 - }, 40 - "joinedViaStarterPack": { 41 - "type": "ref", 42 - "ref": "com.atproto.repo.strongRef" 43 - }, 44 - "pinnedPost": { 45 - "type": "ref", 46 - "ref": "com.atproto.repo.strongRef" 47 - }, 48 - "createdAt": { "type": "string", "format": "datetime" } 49 - } 50 - } 51 - } 52 - } 53 - }
-43
lexicons/blue/recipes/feed/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "blue.recipes.feed.defs", 4 - "defs": { 5 - "ingredient": { 6 - "type": "object", 7 - "properties": { 8 - "name": { 9 - "type": "string", 10 - "maxLength": 3000, 11 - "maxGraphemes": 300, 12 - "description": "The name of the ingredient." 13 - }, 14 - "amount": { 15 - "type": "string", 16 - "description": "How much of the ingredient is needed." 17 - } 18 - } 19 - }, 20 - "step": { 21 - "type": "object", 22 - "required": ["text"], 23 - "properties": { 24 - "text": { 25 - "type": "string", 26 - "maxLength": 5000, 27 - "maxGraphemes": 300, 28 - "description": "The instruction to provide to the user." 29 - } 30 - } 31 - }, 32 - "authorInfo": { 33 - "type": "object", 34 - "required": ["did", "handle"], 35 - "properties": { 36 - "did": { "type": "string" }, 37 - "handle": { "type": "string" }, 38 - "displayName": { "type": "string" }, 39 - "avatarUrl": { "type": "string" } 40 - } 41 - } 42 - } 43 - }
-61
lexicons/blue/recipes/feed/getRecipe.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "blue.recipes.feed.getRecipe", 4 - "defs": { 5 - "main": { 6 - "type": "query", 7 - "description": "Gets a recipe from the index by author DID and rkey.", 8 - "parameters": { 9 - "type": "params", 10 - "required": ["did", "rkey"], 11 - "properties": { 12 - "did": { 13 - "type": "string", 14 - "format": "at-identifier" 15 - }, 16 - "rkey": { 17 - "type": "string" 18 - } 19 - } 20 - }, 21 - "output": { 22 - "encoding": "application/json", 23 - "schema": { 24 - "type": "object", 25 - "required": ["recipe"], 26 - "properties": { 27 - "recipe": { 28 - "type": "ref", 29 - "ref": "#result" 30 - } 31 - } 32 - } 33 - } 34 - }, 35 - "result": { 36 - "type": "object", 37 - "required": ["author", "title", "ingredients", "steps"], 38 - "properties": { 39 - "author": { "type": "ref", "ref": "blue.recipes.feed.defs#authorInfo" }, 40 - "title": { "type": "string" }, 41 - "description": { "type": "string" }, 42 - "time": { "type": "integer" }, 43 - "imageUrl": { "type": "string" }, 44 - "ingredients": { 45 - "type": "array", 46 - "items": { 47 - "type": "ref", 48 - "ref": "blue.recipes.feed.defs#ingredient" 49 - } 50 - }, 51 - "steps": { 52 - "type": "array", 53 - "items": { 54 - "type": "ref", 55 - "ref": "blue.recipes.feed.defs#step" 56 - } 57 - } 58 - } 59 - } 60 - } 61 - }
-58
lexicons/blue/recipes/feed/getRecipes.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "blue.recipes.feed.getRecipes", 4 - "defs": { 5 - "main": { 6 - "type": "query", 7 - "description": "Gets recipes from the index.", 8 - "parameters": { 9 - "type": "params", 10 - "required": ["cursor"], 11 - "properties": { 12 - "cursor": { 13 - "type": "string" 14 - }, 15 - "did": { 16 - "type": "string", 17 - "format": "at-identifier" 18 - } 19 - } 20 - }, 21 - "output": { 22 - "encoding": "application/json", 23 - "schema": { 24 - "type": "object", 25 - "required": ["recipes"], 26 - "properties": { 27 - "author": { 28 - "type": "ref", 29 - "ref": "blue.recipes.feed.defs#authorInfo" 30 - }, 31 - "recipes": { 32 - "type": "array", 33 - "items": { 34 - "type": "ref", 35 - "ref": "#result" 36 - } 37 - } 38 - } 39 - } 40 - } 41 - }, 42 - "result": { 43 - "type": "object", 44 - "required": [ "rkey", "author", "title", "time", "ingredients", "steps"], 45 - "properties": { 46 - "rkey": { "type": "string" }, 47 - "author": { "type": "ref", "ref": "blue.recipes.feed.defs#authorInfo" }, 48 - "type": { "type": "string" }, 49 - "imageUrl": { "type": "string" }, 50 - "title": { "type": "string" }, 51 - "time": { "type": "integer" }, 52 - "description": { "type": "string" }, 53 - "ingredients": { "type": "integer" }, 54 - "steps": { "type": "integer" } 55 - } 56 - } 57 - } 58 - }
-53
lexicons/blue/recipes/feed/recipes.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "blue.recipes.feed.recipe", 4 - "defs": { 5 - "main": { 6 - "type": "record", 7 - "description": "Record containing a Cookware recipe.", 8 - "key": "tid", 9 - "record": { 10 - "type": "object", 11 - "required": ["title", "ingredients", "steps"], 12 - "properties": { 13 - "title": { 14 - "type": "string", 15 - "maxLength": 3000, 16 - "maxGraphemes": 300, 17 - "description": "The title of the recipe." 18 - }, 19 - "description": { 20 - "type": "string", 21 - "maxLength": 3000, 22 - "maxGraphemes": 300, 23 - "description": "The description of the recipe." 24 - }, 25 - "image": { 26 - "type": "blob", 27 - "description": "The recipe's cover image.", 28 - "accept": ["image/*"], 29 - "maxSize": 1000000 30 - }, 31 - "time": { 32 - "type": "integer", 33 - "description": "The amount of time (in minutes) the recipe takes to complete." 34 - }, 35 - "ingredients": { 36 - "type": "array", 37 - "items": { 38 - "type": "ref", 39 - "ref": "blue.recipes.feed.defs#ingredient" 40 - } 41 - }, 42 - "steps": { 43 - "type": "array", 44 - "items": { 45 - "type": "ref", 46 - "ref": "blue.recipes.feed.defs#step" 47 - } 48 - } 49 - } 50 - } 51 - } 52 - } 53 - }
-156
lexicons/com/atproto/label/defs.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.label.defs", 4 - "defs": { 5 - "label": { 6 - "type": "object", 7 - "description": "Metadata tag on an atproto resource (eg, repo or record).", 8 - "required": ["src", "uri", "val", "cts"], 9 - "properties": { 10 - "ver": { 11 - "type": "integer", 12 - "description": "The AT Protocol version of the label object." 13 - }, 14 - "src": { 15 - "type": "string", 16 - "format": "did", 17 - "description": "DID of the actor who created this label." 18 - }, 19 - "uri": { 20 - "type": "string", 21 - "format": "uri", 22 - "description": "AT URI of the record, repository (account), or other resource that this label applies to." 23 - }, 24 - "cid": { 25 - "type": "string", 26 - "format": "cid", 27 - "description": "Optionally, CID specifying the specific version of 'uri' resource this label applies to." 28 - }, 29 - "val": { 30 - "type": "string", 31 - "maxLength": 128, 32 - "description": "The short string name of the value or type of this label." 33 - }, 34 - "neg": { 35 - "type": "boolean", 36 - "description": "If true, this is a negation label, overwriting a previous label." 37 - }, 38 - "cts": { 39 - "type": "string", 40 - "format": "datetime", 41 - "description": "Timestamp when this label was created." 42 - }, 43 - "exp": { 44 - "type": "string", 45 - "format": "datetime", 46 - "description": "Timestamp at which this label expires (no longer applies)." 47 - }, 48 - "sig": { 49 - "type": "bytes", 50 - "description": "Signature of dag-cbor encoded label." 51 - } 52 - } 53 - }, 54 - "selfLabels": { 55 - "type": "object", 56 - "description": "Metadata tags on an atproto record, published by the author within the record.", 57 - "required": ["values"], 58 - "properties": { 59 - "values": { 60 - "type": "array", 61 - "items": { "type": "ref", "ref": "#selfLabel" }, 62 - "maxLength": 10 63 - } 64 - } 65 - }, 66 - "selfLabel": { 67 - "type": "object", 68 - "description": "Metadata tag on an atproto record, published by the author within the record. Note that schemas should use #selfLabels, not #selfLabel.", 69 - "required": ["val"], 70 - "properties": { 71 - "val": { 72 - "type": "string", 73 - "maxLength": 128, 74 - "description": "The short string name of the value or type of this label." 75 - } 76 - } 77 - }, 78 - "labelValueDefinition": { 79 - "type": "object", 80 - "description": "Declares a label value and its expected interpretations and behaviors.", 81 - "required": ["identifier", "severity", "blurs", "locales"], 82 - "properties": { 83 - "identifier": { 84 - "type": "string", 85 - "description": "The value of the label being defined. Must only include lowercase ascii and the '-' character ([a-z-]+).", 86 - "maxLength": 100, 87 - "maxGraphemes": 100 88 - }, 89 - "severity": { 90 - "type": "string", 91 - "description": "How should a client visually convey this label? 'inform' means neutral and informational; 'alert' means negative and warning; 'none' means show nothing.", 92 - "knownValues": ["inform", "alert", "none"] 93 - }, 94 - "blurs": { 95 - "type": "string", 96 - "description": "What should this label hide in the UI, if applied? 'content' hides all of the target; 'media' hides the images/video/audio; 'none' hides nothing.", 97 - "knownValues": ["content", "media", "none"] 98 - }, 99 - "defaultSetting": { 100 - "type": "string", 101 - "description": "The default setting for this label.", 102 - "knownValues": ["ignore", "warn", "hide"], 103 - "default": "warn" 104 - }, 105 - "adultOnly": { 106 - "type": "boolean", 107 - "description": "Does the user need to have adult content enabled in order to configure this label?" 108 - }, 109 - "locales": { 110 - "type": "array", 111 - "items": { "type": "ref", "ref": "#labelValueDefinitionStrings" } 112 - } 113 - } 114 - }, 115 - "labelValueDefinitionStrings": { 116 - "type": "object", 117 - "description": "Strings which describe the label in the UI, localized into a specific language.", 118 - "required": ["lang", "name", "description"], 119 - "properties": { 120 - "lang": { 121 - "type": "string", 122 - "description": "The code of the language these strings are written in.", 123 - "format": "language" 124 - }, 125 - "name": { 126 - "type": "string", 127 - "description": "A short human-readable name for the label.", 128 - "maxGraphemes": 64, 129 - "maxLength": 640 130 - }, 131 - "description": { 132 - "type": "string", 133 - "description": "A longer description of what the label means and why it might be applied.", 134 - "maxGraphemes": 10000, 135 - "maxLength": 100000 136 - } 137 - } 138 - }, 139 - "labelValue": { 140 - "type": "string", 141 - "knownValues": [ 142 - "!hide", 143 - "!no-promote", 144 - "!warn", 145 - "!no-unauthenticated", 146 - "dmca-violation", 147 - "doxxing", 148 - "porn", 149 - "sexual", 150 - "nudity", 151 - "nsfl", 152 - "gore" 153 - ] 154 - } 155 - } 156 - }
-15
lexicons/com/atproto/repo/strongRef.json
··· 1 - { 2 - "lexicon": 1, 3 - "id": "com.atproto.repo.strongRef", 4 - "description": "A URI with a content-hash fingerprint.", 5 - "defs": { 6 - "main": { 7 - "type": "object", 8 - "required": ["uri", "cid"], 9 - "properties": { 10 - "uri": { "type": "string", "format": "at-uri" }, 11 - "cid": { "type": "string", "format": "cid" } 12 - } 13 - } 14 - } 15 - }
+4 -6
libs/database/drizzle.config.ts
··· 1 - import env from './src/config'; 2 1 import type { Config } from "drizzle-kit"; 3 2 4 3 export default { 5 - schema: "./src/schema.ts", 4 + schema: "./lib/schema.ts", 6 5 out: "./migrations", 7 - dialect: "turso", 6 + dialect: "postgresql", 8 7 dbCredentials: { 9 - url: env.TURSO_CONNECTION_URL, 10 - authToken: env.TURSO_AUTH_TOKEN, 11 - }, 8 + url: process.env.DATABASE_URL || 'postgres://postgres:postgres@localhost:5432/postgres', 9 + } 12 10 } satisfies Config;
+12
libs/database/lib/index.ts
··· 1 + import { drizzle } from 'drizzle-orm/node-postgres'; 2 + import { Pool } from 'pg'; 3 + 4 + const pool = new Pool({ 5 + connectionString: process.env.DATABASE_URL || 'postgres://postgres:postgres@localhost:5432/postgres', 6 + }); 7 + 8 + import * as schema from './schema.js'; 9 + export const db = drizzle(pool, { schema }); 10 + 11 + // Re-export drizzle-orm functions to ensure single instance 12 + export { eq, and, or, desc, asc, sql } from 'drizzle-orm';
+114
libs/database/lib/schema.ts
··· 1 + import { customType, index, integer, primaryKey, pgTable, text, jsonb, varchar } from "drizzle-orm/pg-core"; 2 + import { BlueRecipesFeedRecipe } from "@cookware/lexicons"; 3 + import { Cid, isCid, ResourceUri, type AtprotoDid } from "@atcute/lexicons/syntax"; 4 + import { Blob, LegacyBlob } from "@atcute/lexicons"; 5 + import { relations, sql, type SQL } from "drizzle-orm"; 6 + import { isBlob, isCidLink, isLegacyBlob } from "@atcute/lexicons/interfaces"; 7 + 8 + const dateIsoText = customType<{ data: Date; driverData: string }>({ 9 + dataType() { 10 + return "text"; 11 + }, 12 + toDriver: (value) => value.toISOString(), 13 + fromDriver: (value) => new Date(value), 14 + }); 15 + 16 + const atBlob = customType<{ data: Blob | LegacyBlob; driverData: string; }>({ 17 + dataType() { 18 + return "text"; 19 + }, 20 + toDriver: (value) => { 21 + if (isLegacyBlob(value)) { 22 + return `l:${value.cid}:${value.mimeType}`; 23 + } else if (isBlob(value)) { 24 + return `b:${value.ref.$link}:${value.mimeType}:${value.size}`; 25 + } else { 26 + throw new Error('Invalid blob value'); 27 + } 28 + }, 29 + fromDriver: (value): Blob | LegacyBlob => { 30 + if (typeof value !== 'string') throw new Error('Invalid blob ref data type'); 31 + var parts = value.split(':'); 32 + if (value.startsWith('l:')) { 33 + if (parts.length !== 3) throw new Error('Invalid legacy blob ref format'); 34 + if (!isCid(parts[1]!)) throw new Error('Invalid CID in legacy blob ref'); 35 + return { 36 + cid: parts[1]!, 37 + mimeType: parts[2]!, 38 + } as LegacyBlob; 39 + } else if (value.startsWith('b:')) { 40 + if (parts.length !== 4) throw new Error('Invalid blob ref format'); 41 + if (!isCidLink({ $link: parts[1] })) throw new Error('Invalid CID link in blob ref'); 42 + if (isNaN(parseInt(parts[3]!, 10))) throw new Error('Invalid size in blob ref'); 43 + 44 + return { 45 + $type: 'blob', 46 + mimeType: parts[2], 47 + size: parseInt(parts[3]!), 48 + ref: { $link: parts[1] } 49 + } as Blob; 50 + } else { 51 + throw new Error('Invalid blob ref prefix'); 52 + } 53 + }, 54 + }); 55 + 56 + export const profilesTable = pgTable("profiles", { 57 + uri: text('uri') 58 + .generatedAlwaysAs((): SQL => sql`'at://' || ${profilesTable.did} || '/blue.recipes.actor.profile/self'`) 59 + .$type<ResourceUri>(), 60 + 61 + cid: text("cid").$type<Cid>().notNull(), 62 + did: text("did").$type<AtprotoDid>().notNull().primaryKey(), 63 + ingestedAt: dateIsoText("ingested_at").notNull().default(sql`CURRENT_TIMESTAMP`), 64 + 65 + displayName: varchar('display_name', { length: 640 }).notNull(), 66 + description: varchar('description', { length: 2500 }), 67 + pronouns: varchar('pronouns', { length: 200 }), 68 + website: text('website'), 69 + avatarRef: atBlob('avatar'), 70 + bannerRef: atBlob('banner'), 71 + createdAt: dateIsoText("created_at").notNull(), 72 + }, t => ([ 73 + index('profiles_cid_idx').on(t.cid), 74 + index('profiles_cat_idx').on(t.createdAt), 75 + index('profiles_iat_idx').on(t.ingestedAt), 76 + ])); 77 + 78 + export const recipeTable = pgTable("recipes", { 79 + uri: text('uri') 80 + .generatedAlwaysAs((): SQL => sql`'at://' || ${recipeTable.did} || '/blue.recipes.feed.recipe/' || ${recipeTable.rkey}`), 81 + 82 + cid: text("cid").$type<Cid>().notNull(), 83 + did: text("author_did") 84 + .$type<AtprotoDid>() 85 + .notNull() 86 + .references(() => profilesTable.did, { onDelete: 'cascade' }), 87 + rkey: text('rkey').notNull(), 88 + 89 + imageRef: atBlob('image'), 90 + 91 + title: text('title').notNull(), 92 + time: integer('time').notNull().default(0), 93 + serves: integer('serves'), 94 + description: text('description'), 95 + 96 + ingredients: jsonb('ingredients').$type<BlueRecipesFeedRecipe.Main['ingredients']>().notNull(), 97 + ingredientsCount: integer('ingredients_count').generatedAlwaysAs((): SQL => sql`jsonb_array_length(${recipeTable.ingredients})`), 98 + 99 + steps: jsonb('steps').$type<BlueRecipesFeedRecipe.Main['steps']>().notNull(), 100 + stepsCount: integer('steps_count').generatedAlwaysAs((): SQL => sql`jsonb_array_length(${recipeTable.steps})`), 101 + 102 + createdAt: dateIsoText("created_at").notNull(), 103 + ingestedAt: dateIsoText("ingested_at").notNull().default(sql`CURRENT_TIMESTAMP`), 104 + }, t => ([ 105 + index('recipes_title_idx').on(t.title), 106 + index('recipes_cid_idx').on(t.cid), 107 + index('recipes_cat_idx').on(t.createdAt), 108 + index('recipes_iat_idx').on(t.ingestedAt), 109 + primaryKey({ columns: [ t.did, t.rkey ] }), 110 + ])); 111 + 112 + export const recipeTableRelations = relations(recipeTable, ({ one }) => ({ 113 + author: one(profilesTable, { fields: [recipeTable.did], references: [profilesTable.did] }) 114 + }));
-23
libs/database/migrations/0000_boring_tenebrous.sql
··· 1 - CREATE TABLE `auth_session` ( 2 - `key` text PRIMARY KEY NOT NULL, 3 - `session` text NOT NULL 4 - ); 5 - --> statement-breakpoint 6 - CREATE TABLE `auth_state` ( 7 - `key` text PRIMARY KEY NOT NULL, 8 - `state` text NOT NULL 9 - ); 10 - --> statement-breakpoint 11 - CREATE TABLE `recipes` ( 12 - `id` integer PRIMARY KEY NOT NULL, 13 - `rkey` text NOT NULL, 14 - `title` text NOT NULL, 15 - `description` text, 16 - `ingredients` text NOT NULL, 17 - `steps` text NOT NULL, 18 - `created_at` text NOT NULL, 19 - `author_did` text NOT NULL 20 - ); 21 - --> statement-breakpoint 22 - CREATE UNIQUE INDEX `recipes_id_unique` ON `recipes` (`id`);--> statement-breakpoint 23 - CREATE UNIQUE INDEX `recipes_rkey_author_did_unique` ON `recipes` (`rkey`,`author_did`);
+46
libs/database/migrations/0000_young_hellcat.sql
··· 1 + CREATE TABLE IF NOT EXISTS "profiles" ( 2 + "uri" text GENERATED ALWAYS AS ('at://' || "profiles"."did" || '/blue.recipes.actor.profile/self') STORED, 3 + "cid" text NOT NULL, 4 + "did" text PRIMARY KEY NOT NULL, 5 + "ingested_at" text DEFAULT CURRENT_TIMESTAMP NOT NULL, 6 + "display_name" varchar(640) NOT NULL, 7 + "description" varchar(2500), 8 + "pronouns" varchar(200), 9 + "website" text, 10 + "avatar" text, 11 + "banner" text, 12 + "created_at" text NOT NULL 13 + ); 14 + --> statement-breakpoint 15 + CREATE TABLE IF NOT EXISTS "recipes" ( 16 + "uri" text GENERATED ALWAYS AS ('at://' || "recipes"."author_did" || '/blue.recipes.feed.recipe/' || "recipes"."rkey") STORED, 17 + "cid" text NOT NULL, 18 + "author_did" text NOT NULL, 19 + "rkey" text NOT NULL, 20 + "image" text, 21 + "title" text NOT NULL, 22 + "time" integer DEFAULT 0 NOT NULL, 23 + "serves" integer, 24 + "description" text, 25 + "ingredients" jsonb NOT NULL, 26 + "ingredients_count" integer GENERATED ALWAYS AS (jsonb_array_length("recipes"."ingredients")) STORED, 27 + "steps" jsonb NOT NULL, 28 + "steps_count" integer GENERATED ALWAYS AS (jsonb_array_length("recipes"."steps")) STORED, 29 + "created_at" text NOT NULL, 30 + "ingested_at" text DEFAULT CURRENT_TIMESTAMP NOT NULL, 31 + CONSTRAINT "recipes_author_did_rkey_pk" PRIMARY KEY("author_did","rkey") 32 + ); 33 + --> statement-breakpoint 34 + DO $$ BEGIN 35 + ALTER TABLE "recipes" ADD CONSTRAINT "recipes_author_did_profiles_did_fk" FOREIGN KEY ("author_did") REFERENCES "public"."profiles"("did") ON DELETE cascade ON UPDATE no action; 36 + EXCEPTION 37 + WHEN duplicate_object THEN null; 38 + END $$; 39 + --> statement-breakpoint 40 + CREATE INDEX IF NOT EXISTS "profiles_cid_idx" ON "profiles" USING btree ("cid");--> statement-breakpoint 41 + CREATE INDEX IF NOT EXISTS "profiles_cat_idx" ON "profiles" USING btree ("created_at");--> statement-breakpoint 42 + CREATE INDEX IF NOT EXISTS "profiles_iat_idx" ON "profiles" USING btree ("ingested_at");--> statement-breakpoint 43 + CREATE INDEX IF NOT EXISTS "recipes_title_idx" ON "recipes" USING btree ("title");--> statement-breakpoint 44 + CREATE INDEX IF NOT EXISTS "recipes_cid_idx" ON "recipes" USING btree ("cid");--> statement-breakpoint 45 + CREATE INDEX IF NOT EXISTS "recipes_cat_idx" ON "recipes" USING btree ("created_at");--> statement-breakpoint 46 + CREATE INDEX IF NOT EXISTS "recipes_iat_idx" ON "recipes" USING btree ("ingested_at");
-1
libs/database/migrations/0001_icy_killmonger.sql
··· 1 - ALTER TABLE `recipes` ADD `time` integer DEFAULT 0 NOT NULL;
+275 -74
libs/database/migrations/meta/0000_snapshot.json
··· 1 1 { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "1c01d686-877c-426c-ac8a-31f47df9385d", 2 + "id": "5d896b70-087b-421e-8d94-c100476cd926", 5 3 "prevId": "00000000-0000-0000-0000-000000000000", 4 + "version": "7", 5 + "dialect": "postgresql", 6 6 "tables": { 7 - "auth_session": { 8 - "name": "auth_session", 7 + "public.profiles": { 8 + "name": "profiles", 9 + "schema": "", 9 10 "columns": { 10 - "key": { 11 - "name": "key", 11 + "uri": { 12 + "name": "uri", 13 + "type": "text", 14 + "primaryKey": false, 15 + "notNull": false, 16 + "generated": { 17 + "as": "'at://' || \"profiles\".\"did\" || '/blue.recipes.actor.profile/self'", 18 + "type": "stored" 19 + } 20 + }, 21 + "cid": { 22 + "name": "cid", 23 + "type": "text", 24 + "primaryKey": false, 25 + "notNull": true 26 + }, 27 + "did": { 28 + "name": "did", 12 29 "type": "text", 13 30 "primaryKey": true, 14 - "notNull": true, 15 - "autoincrement": false 31 + "notNull": true 16 32 }, 17 - "session": { 18 - "name": "session", 33 + "ingested_at": { 34 + "name": "ingested_at", 19 35 "type": "text", 20 36 "primaryKey": false, 21 37 "notNull": true, 22 - "autoincrement": false 23 - } 24 - }, 25 - "indexes": {}, 26 - "foreignKeys": {}, 27 - "compositePrimaryKeys": {}, 28 - "uniqueConstraints": {}, 29 - "checkConstraints": {} 30 - }, 31 - "auth_state": { 32 - "name": "auth_state", 33 - "columns": { 34 - "key": { 35 - "name": "key", 38 + "default": "CURRENT_TIMESTAMP" 39 + }, 40 + "display_name": { 41 + "name": "display_name", 42 + "type": "varchar(640)", 43 + "primaryKey": false, 44 + "notNull": true 45 + }, 46 + "description": { 47 + "name": "description", 48 + "type": "varchar(2500)", 49 + "primaryKey": false, 50 + "notNull": false 51 + }, 52 + "pronouns": { 53 + "name": "pronouns", 54 + "type": "varchar(200)", 55 + "primaryKey": false, 56 + "notNull": false 57 + }, 58 + "website": { 59 + "name": "website", 36 60 "type": "text", 37 - "primaryKey": true, 38 - "notNull": true, 39 - "autoincrement": false 61 + "primaryKey": false, 62 + "notNull": false 63 + }, 64 + "avatar": { 65 + "name": "avatar", 66 + "type": "text", 67 + "primaryKey": false, 68 + "notNull": false 69 + }, 70 + "banner": { 71 + "name": "banner", 72 + "type": "text", 73 + "primaryKey": false, 74 + "notNull": false 40 75 }, 41 - "state": { 42 - "name": "state", 76 + "created_at": { 77 + "name": "created_at", 43 78 "type": "text", 44 79 "primaryKey": false, 45 - "notNull": true, 46 - "autoincrement": false 80 + "notNull": true 81 + } 82 + }, 83 + "indexes": { 84 + "profiles_cid_idx": { 85 + "name": "profiles_cid_idx", 86 + "columns": [ 87 + { 88 + "expression": "cid", 89 + "isExpression": false, 90 + "asc": true, 91 + "nulls": "last" 92 + } 93 + ], 94 + "isUnique": false, 95 + "concurrently": false, 96 + "method": "btree", 97 + "with": {} 98 + }, 99 + "profiles_cat_idx": { 100 + "name": "profiles_cat_idx", 101 + "columns": [ 102 + { 103 + "expression": "created_at", 104 + "isExpression": false, 105 + "asc": true, 106 + "nulls": "last" 107 + } 108 + ], 109 + "isUnique": false, 110 + "concurrently": false, 111 + "method": "btree", 112 + "with": {} 113 + }, 114 + "profiles_iat_idx": { 115 + "name": "profiles_iat_idx", 116 + "columns": [ 117 + { 118 + "expression": "ingested_at", 119 + "isExpression": false, 120 + "asc": true, 121 + "nulls": "last" 122 + } 123 + ], 124 + "isUnique": false, 125 + "concurrently": false, 126 + "method": "btree", 127 + "with": {} 47 128 } 48 129 }, 49 - "indexes": {}, 50 130 "foreignKeys": {}, 51 131 "compositePrimaryKeys": {}, 52 132 "uniqueConstraints": {}, 53 - "checkConstraints": {} 133 + "policies": {}, 134 + "checkConstraints": {}, 135 + "isRLSEnabled": false 54 136 }, 55 - "recipes": { 137 + "public.recipes": { 56 138 "name": "recipes", 139 + "schema": "", 57 140 "columns": { 58 - "id": { 59 - "name": "id", 60 - "type": "integer", 61 - "primaryKey": true, 62 - "notNull": true, 63 - "autoincrement": false 141 + "uri": { 142 + "name": "uri", 143 + "type": "text", 144 + "primaryKey": false, 145 + "notNull": false, 146 + "generated": { 147 + "as": "'at://' || \"recipes\".\"author_did\" || '/blue.recipes.feed.recipe/' || \"recipes\".\"rkey\"", 148 + "type": "stored" 149 + } 150 + }, 151 + "cid": { 152 + "name": "cid", 153 + "type": "text", 154 + "primaryKey": false, 155 + "notNull": true 156 + }, 157 + "author_did": { 158 + "name": "author_did", 159 + "type": "text", 160 + "primaryKey": false, 161 + "notNull": true 64 162 }, 65 163 "rkey": { 66 164 "name": "rkey", 67 165 "type": "text", 68 166 "primaryKey": false, 69 - "notNull": true, 70 - "autoincrement": false 167 + "notNull": true 168 + }, 169 + "image": { 170 + "name": "image", 171 + "type": "text", 172 + "primaryKey": false, 173 + "notNull": false 71 174 }, 72 175 "title": { 73 176 "name": "title", 74 177 "type": "text", 75 178 "primaryKey": false, 179 + "notNull": true 180 + }, 181 + "time": { 182 + "name": "time", 183 + "type": "integer", 184 + "primaryKey": false, 76 185 "notNull": true, 77 - "autoincrement": false 186 + "default": 0 187 + }, 188 + "serves": { 189 + "name": "serves", 190 + "type": "integer", 191 + "primaryKey": false, 192 + "notNull": false 78 193 }, 79 194 "description": { 80 195 "name": "description", 81 196 "type": "text", 82 197 "primaryKey": false, 83 - "notNull": false, 84 - "autoincrement": false 198 + "notNull": false 85 199 }, 86 200 "ingredients": { 87 201 "name": "ingredients", 88 - "type": "text", 202 + "type": "jsonb", 89 203 "primaryKey": false, 90 - "notNull": true, 91 - "autoincrement": false 204 + "notNull": true 205 + }, 206 + "ingredients_count": { 207 + "name": "ingredients_count", 208 + "type": "integer", 209 + "primaryKey": false, 210 + "notNull": false, 211 + "generated": { 212 + "as": "jsonb_array_length(\"recipes\".\"ingredients\")", 213 + "type": "stored" 214 + } 92 215 }, 93 216 "steps": { 94 217 "name": "steps", 95 - "type": "text", 218 + "type": "jsonb", 96 219 "primaryKey": false, 97 - "notNull": true, 98 - "autoincrement": false 220 + "notNull": true 221 + }, 222 + "steps_count": { 223 + "name": "steps_count", 224 + "type": "integer", 225 + "primaryKey": false, 226 + "notNull": false, 227 + "generated": { 228 + "as": "jsonb_array_length(\"recipes\".\"steps\")", 229 + "type": "stored" 230 + } 99 231 }, 100 232 "created_at": { 101 233 "name": "created_at", 102 234 "type": "text", 103 235 "primaryKey": false, 104 - "notNull": true, 105 - "autoincrement": false 236 + "notNull": true 106 237 }, 107 - "author_did": { 108 - "name": "author_did", 238 + "ingested_at": { 239 + "name": "ingested_at", 109 240 "type": "text", 110 241 "primaryKey": false, 111 242 "notNull": true, 112 - "autoincrement": false 243 + "default": "CURRENT_TIMESTAMP" 113 244 } 114 245 }, 115 246 "indexes": { 116 - "recipes_id_unique": { 117 - "name": "recipes_id_unique", 247 + "recipes_title_idx": { 248 + "name": "recipes_title_idx", 118 249 "columns": [ 119 - "id" 250 + { 251 + "expression": "title", 252 + "isExpression": false, 253 + "asc": true, 254 + "nulls": "last" 255 + } 120 256 ], 121 - "isUnique": true 257 + "isUnique": false, 258 + "concurrently": false, 259 + "method": "btree", 260 + "with": {} 122 261 }, 123 - "recipes_rkey_author_did_unique": { 124 - "name": "recipes_rkey_author_did_unique", 262 + "recipes_cid_idx": { 263 + "name": "recipes_cid_idx", 125 264 "columns": [ 126 - "rkey", 265 + { 266 + "expression": "cid", 267 + "isExpression": false, 268 + "asc": true, 269 + "nulls": "last" 270 + } 271 + ], 272 + "isUnique": false, 273 + "concurrently": false, 274 + "method": "btree", 275 + "with": {} 276 + }, 277 + "recipes_cat_idx": { 278 + "name": "recipes_cat_idx", 279 + "columns": [ 280 + { 281 + "expression": "created_at", 282 + "isExpression": false, 283 + "asc": true, 284 + "nulls": "last" 285 + } 286 + ], 287 + "isUnique": false, 288 + "concurrently": false, 289 + "method": "btree", 290 + "with": {} 291 + }, 292 + "recipes_iat_idx": { 293 + "name": "recipes_iat_idx", 294 + "columns": [ 295 + { 296 + "expression": "ingested_at", 297 + "isExpression": false, 298 + "asc": true, 299 + "nulls": "last" 300 + } 301 + ], 302 + "isUnique": false, 303 + "concurrently": false, 304 + "method": "btree", 305 + "with": {} 306 + } 307 + }, 308 + "foreignKeys": { 309 + "recipes_author_did_profiles_did_fk": { 310 + "name": "recipes_author_did_profiles_did_fk", 311 + "tableFrom": "recipes", 312 + "tableTo": "profiles", 313 + "columnsFrom": [ 127 314 "author_did" 128 315 ], 129 - "isUnique": true 316 + "columnsTo": [ 317 + "did" 318 + ], 319 + "onDelete": "cascade", 320 + "onUpdate": "no action" 321 + } 322 + }, 323 + "compositePrimaryKeys": { 324 + "recipes_author_did_rkey_pk": { 325 + "name": "recipes_author_did_rkey_pk", 326 + "columns": [ 327 + "author_did", 328 + "rkey" 329 + ] 130 330 } 131 331 }, 132 - "foreignKeys": {}, 133 - "compositePrimaryKeys": {}, 134 332 "uniqueConstraints": {}, 135 - "checkConstraints": {} 333 + "policies": {}, 334 + "checkConstraints": {}, 335 + "isRLSEnabled": false 136 336 } 137 337 }, 338 + "enums": {}, 339 + "schemas": {}, 340 + "sequences": {}, 341 + "roles": {}, 342 + "policies": {}, 138 343 "views": {}, 139 - "enums": {}, 140 344 "_meta": { 345 + "columns": {}, 141 346 "schemas": {}, 142 - "tables": {}, 143 - "columns": {} 144 - }, 145 - "internal": { 146 - "indexes": {} 347 + "tables": {} 147 348 } 148 349 }
-156
libs/database/migrations/meta/0001_snapshot.json
··· 1 - { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "2c6fca6c-38c3-4482-b189-6defabb5f8c8", 5 - "prevId": "1c01d686-877c-426c-ac8a-31f47df9385d", 6 - "tables": { 7 - "auth_session": { 8 - "name": "auth_session", 9 - "columns": { 10 - "key": { 11 - "name": "key", 12 - "type": "text", 13 - "primaryKey": true, 14 - "notNull": true, 15 - "autoincrement": false 16 - }, 17 - "session": { 18 - "name": "session", 19 - "type": "text", 20 - "primaryKey": false, 21 - "notNull": true, 22 - "autoincrement": false 23 - } 24 - }, 25 - "indexes": {}, 26 - "foreignKeys": {}, 27 - "compositePrimaryKeys": {}, 28 - "uniqueConstraints": {}, 29 - "checkConstraints": {} 30 - }, 31 - "auth_state": { 32 - "name": "auth_state", 33 - "columns": { 34 - "key": { 35 - "name": "key", 36 - "type": "text", 37 - "primaryKey": true, 38 - "notNull": true, 39 - "autoincrement": false 40 - }, 41 - "state": { 42 - "name": "state", 43 - "type": "text", 44 - "primaryKey": false, 45 - "notNull": true, 46 - "autoincrement": false 47 - } 48 - }, 49 - "indexes": {}, 50 - "foreignKeys": {}, 51 - "compositePrimaryKeys": {}, 52 - "uniqueConstraints": {}, 53 - "checkConstraints": {} 54 - }, 55 - "recipes": { 56 - "name": "recipes", 57 - "columns": { 58 - "id": { 59 - "name": "id", 60 - "type": "integer", 61 - "primaryKey": true, 62 - "notNull": true, 63 - "autoincrement": false 64 - }, 65 - "rkey": { 66 - "name": "rkey", 67 - "type": "text", 68 - "primaryKey": false, 69 - "notNull": true, 70 - "autoincrement": false 71 - }, 72 - "title": { 73 - "name": "title", 74 - "type": "text", 75 - "primaryKey": false, 76 - "notNull": true, 77 - "autoincrement": false 78 - }, 79 - "time": { 80 - "name": "time", 81 - "type": "integer", 82 - "primaryKey": false, 83 - "notNull": true, 84 - "autoincrement": false, 85 - "default": 0 86 - }, 87 - "description": { 88 - "name": "description", 89 - "type": "text", 90 - "primaryKey": false, 91 - "notNull": false, 92 - "autoincrement": false 93 - }, 94 - "ingredients": { 95 - "name": "ingredients", 96 - "type": "text", 97 - "primaryKey": false, 98 - "notNull": true, 99 - "autoincrement": false 100 - }, 101 - "steps": { 102 - "name": "steps", 103 - "type": "text", 104 - "primaryKey": false, 105 - "notNull": true, 106 - "autoincrement": false 107 - }, 108 - "created_at": { 109 - "name": "created_at", 110 - "type": "text", 111 - "primaryKey": false, 112 - "notNull": true, 113 - "autoincrement": false 114 - }, 115 - "author_did": { 116 - "name": "author_did", 117 - "type": "text", 118 - "primaryKey": false, 119 - "notNull": true, 120 - "autoincrement": false 121 - } 122 - }, 123 - "indexes": { 124 - "recipes_id_unique": { 125 - "name": "recipes_id_unique", 126 - "columns": [ 127 - "id" 128 - ], 129 - "isUnique": true 130 - }, 131 - "recipes_rkey_author_did_unique": { 132 - "name": "recipes_rkey_author_did_unique", 133 - "columns": [ 134 - "rkey", 135 - "author_did" 136 - ], 137 - "isUnique": true 138 - } 139 - }, 140 - "foreignKeys": {}, 141 - "compositePrimaryKeys": {}, 142 - "uniqueConstraints": {}, 143 - "checkConstraints": {} 144 - } 145 - }, 146 - "views": {}, 147 - "enums": {}, 148 - "_meta": { 149 - "schemas": {}, 150 - "tables": {}, 151 - "columns": {} 152 - }, 153 - "internal": { 154 - "indexes": {} 155 - } 156 - }
+4 -11
libs/database/migrations/meta/_journal.json
··· 1 1 { 2 2 "version": "7", 3 - "dialect": "sqlite", 3 + "dialect": "postgresql", 4 4 "entries": [ 5 5 { 6 6 "idx": 0, 7 - "version": "6", 8 - "when": 1733683012154, 9 - "tag": "0000_boring_tenebrous", 10 - "breakpoints": true 11 - }, 12 - { 13 - "idx": 1, 14 - "version": "6", 15 - "when": 1734630004978, 16 - "tag": "0001_icy_killmonger", 7 + "version": "7", 8 + "when": 1764420650497, 9 + "tag": "0000_young_hellcat", 17 10 "breakpoints": true 18 11 } 19 12 ]
+20 -7
libs/database/package.json
··· 1 1 { 2 + "type": "module", 2 3 "name": "@cookware/database", 3 4 "version": "0.0.0", 4 5 "private": true, 5 - "main": "dist/index.js", 6 - "type": "module", 6 + "files": [ 7 + "dist/", 8 + "lib/", 9 + "!lib/**/*.bench.ts", 10 + "!lib/**/*.test.ts" 11 + ], 12 + "exports": { 13 + ".": "./dist/index.js", 14 + "./schema": "./dist/schema.js" 15 + }, 7 16 "scripts": { 8 - "dev": "tsc --watch", 9 - "build": "tsc", 17 + "dev": "tsc --watch --project tsconfig.build.json", 18 + "build": "tsc --project tsconfig.build.json", 10 19 "db:generate": "drizzle-kit generate", 11 20 "db:migrate": "drizzle-kit migrate", 12 21 "db:studio": "drizzle-kit studio" 13 22 }, 14 23 "devDependencies": { 24 + "@atcute/lexicons": "catalog:", 15 25 "@atproto/oauth-client-node": "^0.2.3", 16 - "@cookware/lexicons": "workspace:^", 26 + "@cookware/lexicons": "workspace:*", 17 27 "@cookware/tsconfig": "workspace:*", 28 + "@types/bun": "catalog:", 18 29 "@types/node": "^22.10.1", 30 + "@types/pg": "^8.15.6", 19 31 "drizzle-kit": "^0.29.0", 20 32 "typescript": "^5.2.2" 21 33 }, 22 34 "dependencies": { 23 - "@libsql/client": "^0.14.0", 24 - "drizzle-orm": "^0.37.0", 35 + "@libsql/client": "^0.15.15", 36 + "drizzle-orm": "catalog:", 37 + "pg": "^8.16.3", 25 38 "zod": "^3.23.8" 26 39 } 27 40 }
-18
libs/database/src/config.ts
··· 1 - import { z } from "zod"; 2 - 3 - const envSchema = z.object({ 4 - TURSO_CONNECTION_URL: z.string().default('https://turso.dev.hayden.moe'), 5 - TURSO_AUTH_TOKEN: z.string().or(z.undefined()), 6 - 7 - ENV: z 8 - .union([ 9 - z.literal('development'), 10 - z.literal('production'), 11 - ]) 12 - .default('development'), 13 - }); 14 - 15 - const env = envSchema.parse(process.env); 16 - 17 - export default env; 18 - export type Env = z.infer<typeof envSchema>;
-11
libs/database/src/database.ts
··· 1 - import { drizzle } from "drizzle-orm/libsql"; 2 - import { createClient } from "@libsql/client"; 3 - import * as schema from "./schema.js"; 4 - import env from "./config.js"; 5 - 6 - const client = createClient({ 7 - url: env.TURSO_CONNECTION_URL, 8 - authToken: env.TURSO_AUTH_TOKEN, 9 - }); 10 - 11 - export const db = drizzle(client, { schema });
-2
libs/database/src/index.ts
··· 1 - export * from './database.js'; 2 - export * from './schema.js';
-42
libs/database/src/schema.ts
··· 1 - import { customType, int, sqliteTable, text, unique } from "drizzle-orm/sqlite-core"; 2 - import { DID } from "@cookware/lexicons"; 3 - import { Ingredient, Step } from "@cookware/lexicons"; 4 - import { NodeSavedSession, NodeSavedState } from "@atproto/oauth-client-node"; 5 - 6 - const did = customType<{ data: DID }>({ 7 - dataType() { 8 - return "text"; 9 - }, 10 - }); 11 - 12 - const dateIsoText = customType<{ data: Date; driverData: string }>({ 13 - dataType() { 14 - return "text"; 15 - }, 16 - toDriver: (value) => value.toISOString(), 17 - fromDriver: (value) => new Date(value), 18 - }); 19 - 20 - export const recipeTable = sqliteTable("recipes", { 21 - id: int('id').primaryKey().notNull().unique(), 22 - rkey: text('rkey').notNull(), 23 - title: text('title').notNull(), 24 - time: int('time').notNull().default(0), 25 - description: text('description'), 26 - ingredients: text('ingredients', { mode: 'json' }).$type<Partial<Ingredient>[]>().notNull(), 27 - steps: text('steps', { mode: 'json' }).$type<Partial<Step>[]>().notNull(), 28 - createdAt: dateIsoText("created_at").notNull(), 29 - authorDid: did("author_did").notNull(), 30 - }, t => ({ 31 - unique_author_rkey: unique().on(t.rkey, t.authorDid), 32 - })); 33 - 34 - export const authStateTable = sqliteTable("auth_state", { 35 - key: text().primaryKey(), 36 - state: text({ mode: 'json' }).$type<NodeSavedState>().notNull(), 37 - }); 38 - 39 - export const authSessionTable = sqliteTable("auth_session", { 40 - key: text().primaryKey(), 41 - session: text({ mode: 'json' }).$type<NodeSavedSession>().notNull(), 42 - });
+8
libs/database/tsconfig.build.json
··· 1 + { 2 + "extends": "./tsconfig.json", 3 + "include": ["lib"], 4 + "compilerOptions": { 5 + "noEmit": false, 6 + "outDir": "./dist" 7 + } 8 + }
+2 -3
libs/database/tsconfig.json
··· 1 1 { 2 2 "extends": "@cookware/tsconfig/base.json", 3 - "include": ["src"], 3 + "include": ["lib", "drizzle.config.ts"], 4 4 "compilerOptions": { 5 - "declaration": true, 6 - "outDir": "dist" 5 + "noEmit": true 7 6 } 8 7 }
+1
libs/lexicons/.gitignore
··· 1 + tsp-output
+7
libs/lexicons/lex.config.ts
··· 1 + import { defineLexiconConfig } from '@atcute/lex-cli'; 2 + 3 + export default defineLexiconConfig({ 4 + files: ['./tsp-output/@typelex/emitter/**/*.json'], 5 + outdir: './lib', 6 + imports: ['@atcute/atproto'], 7 + });
+20
libs/lexicons/lexicons/feed/defs.tsp
··· 1 + import "@typelex/emitter"; 2 + import "../profiles"; 3 + 4 + namespace blue.recipes.feed.defs { 5 + /** Response model for fetching multiple recipes. */ 6 + model RecipeView { 7 + @required uri: atUri; 8 + @required cid: cid; 9 + @required rkey: string; 10 + imageUrl?: url; 11 + @required author: blue.recipes.actor.defs.ProfileViewBasic; 12 + @required record: blue.recipes.feed.recipe.Main; 13 + @required indexedAt: datetime; 14 + } 15 + 16 + model NotFoundRecipe { 17 + @required uri: atUri; 18 + @readOnly @required notFound: boolean = true; 19 + } 20 + }
+16
libs/lexicons/lexicons/feed/getRecipe.tsp
··· 1 + import "@typelex/emitter"; 2 + import "./defs.tsp"; 3 + 4 + namespace blue.recipes.feed.getRecipe { 5 + /** Response model for fetching multiple recipes. */ 6 + @query 7 + @errors(NotFound, InvalidUri) 8 + op main( 9 + @required uris: atUri[], 10 + ): { 11 + @required recipes: blue.recipes.feed.defs.RecipeView[]; 12 + }; 13 + 14 + @error model NotFound {} 15 + @error model InvalidUri {} 16 + }
+15
libs/lexicons/lexicons/feed/getRecipes.tsp
··· 1 + import "@typelex/emitter"; 2 + import "./defs.tsp"; 3 + 4 + namespace blue.recipes.feed.getRecipes { 5 + /** Response model for fetching multiple recipes. */ 6 + @query 7 + op main( 8 + author?: atIdentifier, 9 + @minValue(1) @maxValue(100) limit?: integer = 50, 10 + cursor?: string, 11 + ): { 12 + @required recipes: blue.recipes.feed.defs.RecipeView[]; 13 + @required nextCursor: string; 14 + }; 15 + }
+4
libs/lexicons/lexicons/feed/main.tsp
··· 1 + import "./defs.tsp"; 2 + import "./getRecipe.tsp"; 3 + import "./getRecipes.tsp"; 4 + import "./recipe.tsp";
+48
libs/lexicons/lexicons/feed/recipe.tsp
··· 1 + import "@typelex/emitter"; 2 + 3 + namespace blue.recipes.feed.recipe { 4 + /** Record containing a recipe. */ 5 + @rec("tid") 6 + model Main { 7 + @maxGraphemes(300) 8 + @maxLength(3000) 9 + @required title: string; 10 + 11 + /** Free-form recipe description text. */ 12 + @maxGraphemes(300) 13 + @maxLength(3000) 14 + description?: string; 15 + 16 + /** Image representing the recipe. */ 17 + image?: Blob<#["image/png", "image/jpeg"], 1000000>; // 1mb image 18 + 19 + /** The amount of time (in minutes) it takes to complete the recipe. */ 20 + time?: integer; 21 + 22 + /** The number of servings the recipe prepares. */ 23 + serves?: integer; 24 + 25 + @required steps: Step[]; 26 + @required ingredients: Ingredient[]; 27 + 28 + @format("datetime") 29 + createdAt?: string; 30 + } 31 + 32 + model Ingredient { 33 + /** The name of the ingredient. */ 34 + @maxLength(3000) 35 + @maxGraphemes(300) 36 + @required name: string; 37 + 38 + /** The amount of the ingredient needed. */ 39 + amount?: string; 40 + } 41 + 42 + model Step { 43 + /** The instruction to provide to the user. */ 44 + @maxLength(5000) 45 + @maxGraphemes(500) 46 + @required text: string; 47 + } 48 + }
+2
libs/lexicons/lexicons/main.tsp
··· 1 + import "./profiles"; 2 + import "./feed";
+41
libs/lexicons/lexicons/profiles/defs.tsp
··· 1 + import "@typelex/emitter"; 2 + 3 + namespace blue.recipes.actor.defs { 4 + model ProfileViewBasic { 5 + @required did: did; 6 + @required handle: handle; 7 + 8 + @maxGraphemes(64) 9 + @maxLength(640) 10 + displayName?: string; 11 + 12 + pronouns?: string; 13 + avatar?: url; 14 + 15 + @format("datetime") 16 + createdAt?: string; 17 + } 18 + 19 + model ProfileViewDetailed { 20 + @required did: did; 21 + @required handle: handle; 22 + 23 + @maxGraphemes(64) 24 + @maxLength(640) 25 + displayName?: string; 26 + 27 + @maxGraphemes(256) 28 + @maxLength(2500) 29 + description?: string; 30 + 31 + pronouns?: string; 32 + website?: url; 33 + avatar?: url; 34 + banner?: url; 35 + 36 + recipesCount?: integer; 37 + 38 + @format("datetime") 39 + createdAt?: string; 40 + } 41 + }
+9
libs/lexicons/lexicons/profiles/getProfile.tsp
··· 1 + import "@typelex/emitter"; 2 + import "./defs.tsp"; 3 + 4 + namespace blue.recipes.actor.getProfile { 5 + @query() 6 + op Main( 7 + @required actor: atIdentifier, 8 + ): blue.recipes.actor.defs.ProfileViewDetailed; 9 + }
+3
libs/lexicons/lexicons/profiles/main.tsp
··· 1 + import "./profile.tsp"; 2 + import "./defs.tsp"; 3 + import "./getProfile.tsp";
+31
libs/lexicons/lexicons/profiles/profile.tsp
··· 1 + import "@typelex/emitter"; 2 + 3 + namespace blue.recipes.actor.profile { 4 + @rec("literal:self") 5 + model Main { 6 + @maxGraphemes(64) 7 + @maxLength(640) 8 + @required displayName: string; 9 + 10 + /** Free-form profile description text. */ 11 + @maxGraphemes(256) 12 + @maxLength(2500) 13 + description?: string; 14 + 15 + /** Free-form text to describe pronouns. */ 16 + @maxGraphemes(20) 17 + @maxLength(200) 18 + pronouns?: string; 19 + 20 + website?: uri; 21 + 22 + /** Small image to be displayed on the profile. */ 23 + avatar?: Blob<#["image/png", "image/jpeg"], 1000000>; // 1mb image 24 + 25 + /** Larger header image to be displayed on the profile. */ 26 + banner?: Blob<#["image/png", "image/jpeg"], 1000000>; // 1mb image 27 + 28 + @format("datetime") 29 + createdAt?: string; 30 + } 31 + }
+7
libs/lexicons/lib/index.ts
··· 1 + export * as BlueRecipesActorDefs from "./types/blue/recipes/actor/defs.js"; 2 + export * as BlueRecipesActorGetProfile from "./types/blue/recipes/actor/getProfile.js"; 3 + export * as BlueRecipesActorProfile from "./types/blue/recipes/actor/profile.js"; 4 + export * as BlueRecipesFeedDefs from "./types/blue/recipes/feed/defs.js"; 5 + export * as BlueRecipesFeedGetRecipe from "./types/blue/recipes/feed/getRecipe.js"; 6 + export * as BlueRecipesFeedGetRecipes from "./types/blue/recipes/feed/getRecipes.js"; 7 + export * as BlueRecipesFeedRecipe from "./types/blue/recipes/feed/recipe.js";
+73
libs/lexicons/lib/types/blue/recipes/actor/defs.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + 4 + const _profileViewBasicSchema = /*#__PURE__*/ v.object({ 5 + $type: /*#__PURE__*/ v.optional( 6 + /*#__PURE__*/ v.literal("blue.recipes.actor.defs#profileViewBasic"), 7 + ), 8 + avatar: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 9 + createdAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 10 + did: /*#__PURE__*/ v.didString(), 11 + /** 12 + * @maxLength 640 13 + * @maxGraphemes 64 14 + */ 15 + displayName: /*#__PURE__*/ v.optional( 16 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 17 + /*#__PURE__*/ v.stringLength(0, 640), 18 + /*#__PURE__*/ v.stringGraphemes(0, 64), 19 + ]), 20 + ), 21 + handle: /*#__PURE__*/ v.handleString(), 22 + pronouns: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 23 + }); 24 + const _profileViewDetailedSchema = /*#__PURE__*/ v.object({ 25 + $type: /*#__PURE__*/ v.optional( 26 + /*#__PURE__*/ v.literal("blue.recipes.actor.defs#profileViewDetailed"), 27 + ), 28 + avatar: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 29 + banner: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 30 + createdAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 31 + /** 32 + * @maxLength 2500 33 + * @maxGraphemes 256 34 + */ 35 + description: /*#__PURE__*/ v.optional( 36 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 37 + /*#__PURE__*/ v.stringLength(0, 2500), 38 + /*#__PURE__*/ v.stringGraphemes(0, 256), 39 + ]), 40 + ), 41 + did: /*#__PURE__*/ v.didString(), 42 + /** 43 + * @maxLength 640 44 + * @maxGraphemes 64 45 + */ 46 + displayName: /*#__PURE__*/ v.optional( 47 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 48 + /*#__PURE__*/ v.stringLength(0, 640), 49 + /*#__PURE__*/ v.stringGraphemes(0, 64), 50 + ]), 51 + ), 52 + handle: /*#__PURE__*/ v.handleString(), 53 + pronouns: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 54 + recipesCount: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()), 55 + website: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 56 + }); 57 + 58 + type profileViewBasic$schematype = typeof _profileViewBasicSchema; 59 + type profileViewDetailed$schematype = typeof _profileViewDetailedSchema; 60 + 61 + export interface profileViewBasicSchema extends profileViewBasic$schematype {} 62 + export interface profileViewDetailedSchema 63 + extends profileViewDetailed$schematype {} 64 + 65 + export const profileViewBasicSchema = 66 + _profileViewBasicSchema as profileViewBasicSchema; 67 + export const profileViewDetailedSchema = 68 + _profileViewDetailedSchema as profileViewDetailedSchema; 69 + 70 + export interface ProfileViewBasic 71 + extends v.InferInput<typeof profileViewBasicSchema> {} 72 + export interface ProfileViewDetailed 73 + extends v.InferInput<typeof profileViewDetailedSchema> {}
+31
libs/lexicons/lib/types/blue/recipes/actor/getProfile.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + import * as BlueRecipesActorDefs from "./defs.js"; 5 + 6 + const _mainSchema = /*#__PURE__*/ v.query("blue.recipes.actor.getProfile", { 7 + params: /*#__PURE__*/ v.object({ 8 + actor: /*#__PURE__*/ v.actorIdentifierString(), 9 + }), 10 + output: { 11 + type: "lex", 12 + get schema() { 13 + return BlueRecipesActorDefs.profileViewDetailedSchema; 14 + }, 15 + }, 16 + }); 17 + 18 + type main$schematype = typeof _mainSchema; 19 + 20 + export interface mainSchema extends main$schematype {} 21 + 22 + export const mainSchema = _mainSchema as mainSchema; 23 + 24 + export interface $params extends v.InferInput<mainSchema["params"]> {} 25 + export type $output = v.InferXRPCBodyInput<mainSchema["output"]>; 26 + 27 + declare module "@atcute/lexicons/ambient" { 28 + interface XRPCQueries { 29 + "blue.recipes.actor.getProfile": mainSchema; 30 + } 31 + }
+68
libs/lexicons/lib/types/blue/recipes/actor/profile.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + 5 + const _mainSchema = /*#__PURE__*/ v.record( 6 + /*#__PURE__*/ v.literal("self"), 7 + /*#__PURE__*/ v.object({ 8 + $type: /*#__PURE__*/ v.literal("blue.recipes.actor.profile"), 9 + /** 10 + * Small image to be displayed on the profile. 11 + * @accept image/png, image/jpeg 12 + * @maxSize 1000000 13 + */ 14 + avatar: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.blob()), 15 + /** 16 + * Larger header image to be displayed on the profile. 17 + * @accept image/png, image/jpeg 18 + * @maxSize 1000000 19 + */ 20 + banner: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.blob()), 21 + createdAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 22 + /** 23 + * Free-form profile description text. 24 + * @maxLength 2500 25 + * @maxGraphemes 256 26 + */ 27 + description: /*#__PURE__*/ v.optional( 28 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 29 + /*#__PURE__*/ v.stringLength(0, 2500), 30 + /*#__PURE__*/ v.stringGraphemes(0, 256), 31 + ]), 32 + ), 33 + /** 34 + * @maxLength 640 35 + * @maxGraphemes 64 36 + */ 37 + displayName: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 38 + /*#__PURE__*/ v.stringLength(0, 640), 39 + /*#__PURE__*/ v.stringGraphemes(0, 64), 40 + ]), 41 + /** 42 + * Free-form text to describe pronouns. 43 + * @maxLength 200 44 + * @maxGraphemes 20 45 + */ 46 + pronouns: /*#__PURE__*/ v.optional( 47 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 48 + /*#__PURE__*/ v.stringLength(0, 200), 49 + /*#__PURE__*/ v.stringGraphemes(0, 20), 50 + ]), 51 + ), 52 + website: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.genericUriString()), 53 + }), 54 + ); 55 + 56 + type main$schematype = typeof _mainSchema; 57 + 58 + export interface mainSchema extends main$schematype {} 59 + 60 + export const mainSchema = _mainSchema as mainSchema; 61 + 62 + export interface Main extends v.InferInput<typeof mainSchema> {} 63 + 64 + declare module "@atcute/lexicons/ambient" { 65 + interface Records { 66 + "blue.recipes.actor.profile": mainSchema; 67 + } 68 + }
+42
libs/lexicons/lib/types/blue/recipes/feed/defs.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import * as BlueRecipesActorDefs from "../actor/defs.js"; 4 + import * as BlueRecipesFeedRecipe from "./recipe.js"; 5 + 6 + const _notFoundRecipeSchema = /*#__PURE__*/ v.object({ 7 + $type: /*#__PURE__*/ v.optional( 8 + /*#__PURE__*/ v.literal("blue.recipes.feed.defs#notFoundRecipe"), 9 + ), 10 + notFound: /*#__PURE__*/ v.literal(true), 11 + uri: /*#__PURE__*/ v.resourceUriString(), 12 + }); 13 + const _recipeViewSchema = /*#__PURE__*/ v.object({ 14 + $type: /*#__PURE__*/ v.optional( 15 + /*#__PURE__*/ v.literal("blue.recipes.feed.defs#recipeView"), 16 + ), 17 + get author() { 18 + return BlueRecipesActorDefs.profileViewBasicSchema; 19 + }, 20 + cid: /*#__PURE__*/ v.cidString(), 21 + imageUrl: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 22 + indexedAt: /*#__PURE__*/ v.datetimeString(), 23 + get record() { 24 + return BlueRecipesFeedRecipe.mainSchema; 25 + }, 26 + rkey: /*#__PURE__*/ v.string(), 27 + uri: /*#__PURE__*/ v.resourceUriString(), 28 + }); 29 + 30 + type notFoundRecipe$schematype = typeof _notFoundRecipeSchema; 31 + type recipeView$schematype = typeof _recipeViewSchema; 32 + 33 + export interface notFoundRecipeSchema extends notFoundRecipe$schematype {} 34 + export interface recipeViewSchema extends recipeView$schematype {} 35 + 36 + export const notFoundRecipeSchema = 37 + _notFoundRecipeSchema as notFoundRecipeSchema; 38 + export const recipeViewSchema = _recipeViewSchema as recipeViewSchema; 39 + 40 + export interface NotFoundRecipe 41 + extends v.InferInput<typeof notFoundRecipeSchema> {} 42 + export interface RecipeView extends v.InferInput<typeof recipeViewSchema> {}
+39
libs/lexicons/lib/types/blue/recipes/feed/getRecipe.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + import * as BlueRecipesFeedDefs from "./defs.js"; 5 + 6 + const _mainSchema = /*#__PURE__*/ v.query("blue.recipes.feed.getRecipe", { 7 + params: /*#__PURE__*/ v.object({ 8 + /** 9 + * @minLength 1 10 + */ 11 + uris: /*#__PURE__*/ v.constrain( 12 + /*#__PURE__*/ v.array(/*#__PURE__*/ v.resourceUriString()), 13 + [/*#__PURE__*/ v.arrayLength(1)], 14 + ), 15 + }), 16 + output: { 17 + type: "lex", 18 + schema: /*#__PURE__*/ v.object({ 19 + get recipes() { 20 + return /*#__PURE__*/ v.array(BlueRecipesFeedDefs.recipeViewSchema); 21 + }, 22 + }), 23 + }, 24 + }); 25 + 26 + type main$schematype = typeof _mainSchema; 27 + 28 + export interface mainSchema extends main$schematype {} 29 + 30 + export const mainSchema = _mainSchema as mainSchema; 31 + 32 + export interface $params extends v.InferInput<mainSchema["params"]> {} 33 + export interface $output extends v.InferXRPCBodyInput<mainSchema["output"]> {} 34 + 35 + declare module "@atcute/lexicons/ambient" { 36 + interface XRPCQueries { 37 + "blue.recipes.feed.getRecipe": mainSchema; 38 + } 39 + }
+46
libs/lexicons/lib/types/blue/recipes/feed/getRecipes.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + import * as BlueRecipesFeedDefs from "./defs.js"; 5 + 6 + const _mainSchema = /*#__PURE__*/ v.query("blue.recipes.feed.getRecipes", { 7 + params: /*#__PURE__*/ v.object({ 8 + author: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.actorIdentifierString()), 9 + cursor: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 10 + /** 11 + * @minimum 1 12 + * @maximum 100 13 + * @default 50 14 + */ 15 + limit: /*#__PURE__*/ v.optional( 16 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.integer(), [ 17 + /*#__PURE__*/ v.integerRange(1, 100), 18 + ]), 19 + 50, 20 + ), 21 + }), 22 + output: { 23 + type: "lex", 24 + schema: /*#__PURE__*/ v.object({ 25 + nextCursor: /*#__PURE__*/ v.string(), 26 + get recipes() { 27 + return /*#__PURE__*/ v.array(BlueRecipesFeedDefs.recipeViewSchema); 28 + }, 29 + }), 30 + }, 31 + }); 32 + 33 + type main$schematype = typeof _mainSchema; 34 + 35 + export interface mainSchema extends main$schematype {} 36 + 37 + export const mainSchema = _mainSchema as mainSchema; 38 + 39 + export interface $params extends v.InferInput<mainSchema["params"]> {} 40 + export interface $output extends v.InferXRPCBodyInput<mainSchema["output"]> {} 41 + 42 + declare module "@atcute/lexicons/ambient" { 43 + interface XRPCQueries { 44 + "blue.recipes.feed.getRecipes": mainSchema; 45 + } 46 + }
+104
libs/lexicons/lib/types/blue/recipes/feed/recipe.ts
··· 1 + import type {} from "@atcute/lexicons"; 2 + import * as v from "@atcute/lexicons/validations"; 3 + import type {} from "@atcute/lexicons/ambient"; 4 + 5 + const _ingredientSchema = /*#__PURE__*/ v.object({ 6 + $type: /*#__PURE__*/ v.optional( 7 + /*#__PURE__*/ v.literal("blue.recipes.feed.recipe#ingredient"), 8 + ), 9 + /** 10 + * The amount of the ingredient needed. 11 + */ 12 + amount: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 13 + /** 14 + * The name of the ingredient. 15 + * @maxLength 3000 16 + * @maxGraphemes 300 17 + */ 18 + name: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 19 + /*#__PURE__*/ v.stringLength(0, 3000), 20 + /*#__PURE__*/ v.stringGraphemes(0, 300), 21 + ]), 22 + }); 23 + const _mainSchema = /*#__PURE__*/ v.record( 24 + /*#__PURE__*/ v.tidString(), 25 + /*#__PURE__*/ v.object({ 26 + $type: /*#__PURE__*/ v.literal("blue.recipes.feed.recipe"), 27 + createdAt: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.string()), 28 + /** 29 + * Free-form recipe description text. 30 + * @maxLength 3000 31 + * @maxGraphemes 300 32 + */ 33 + description: /*#__PURE__*/ v.optional( 34 + /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 35 + /*#__PURE__*/ v.stringLength(0, 3000), 36 + /*#__PURE__*/ v.stringGraphemes(0, 300), 37 + ]), 38 + ), 39 + /** 40 + * Image representing the recipe. 41 + * @accept image/png, image/jpeg 42 + * @maxSize 1000000 43 + */ 44 + image: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.blob()), 45 + get ingredients() { 46 + return /*#__PURE__*/ v.array(ingredientSchema); 47 + }, 48 + /** 49 + * The number of servings the recipe prepares. 50 + */ 51 + serves: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()), 52 + get steps() { 53 + return /*#__PURE__*/ v.array(stepSchema); 54 + }, 55 + /** 56 + * The amount of time (in minutes) it takes to complete the recipe. 57 + */ 58 + time: /*#__PURE__*/ v.optional(/*#__PURE__*/ v.integer()), 59 + /** 60 + * @maxLength 3000 61 + * @maxGraphemes 300 62 + */ 63 + title: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 64 + /*#__PURE__*/ v.stringLength(0, 3000), 65 + /*#__PURE__*/ v.stringGraphemes(0, 300), 66 + ]), 67 + }), 68 + ); 69 + const _stepSchema = /*#__PURE__*/ v.object({ 70 + $type: /*#__PURE__*/ v.optional( 71 + /*#__PURE__*/ v.literal("blue.recipes.feed.recipe#step"), 72 + ), 73 + /** 74 + * The instruction to provide to the user. 75 + * @maxLength 5000 76 + * @maxGraphemes 500 77 + */ 78 + text: /*#__PURE__*/ v.constrain(/*#__PURE__*/ v.string(), [ 79 + /*#__PURE__*/ v.stringLength(0, 5000), 80 + /*#__PURE__*/ v.stringGraphemes(0, 500), 81 + ]), 82 + }); 83 + 84 + type ingredient$schematype = typeof _ingredientSchema; 85 + type main$schematype = typeof _mainSchema; 86 + type step$schematype = typeof _stepSchema; 87 + 88 + export interface ingredientSchema extends ingredient$schematype {} 89 + export interface mainSchema extends main$schematype {} 90 + export interface stepSchema extends step$schematype {} 91 + 92 + export const ingredientSchema = _ingredientSchema as ingredientSchema; 93 + export const mainSchema = _mainSchema as mainSchema; 94 + export const stepSchema = _stepSchema as stepSchema; 95 + 96 + export interface Ingredient extends v.InferInput<typeof ingredientSchema> {} 97 + export interface Main extends v.InferInput<typeof mainSchema> {} 98 + export interface Step extends v.InferInput<typeof stepSchema> {} 99 + 100 + declare module "@atcute/lexicons/ambient" { 101 + interface Records { 102 + "blue.recipes.feed.recipe": mainSchema; 103 + } 104 + }
+41 -12
libs/lexicons/package.json
··· 1 1 { 2 + "type": "module", 2 3 "name": "@cookware/lexicons", 3 4 "version": "0.0.0", 4 - "type": "module", 5 - "private": true, 6 - "main": "src/index.ts", 7 - "publishConfig": { 8 - "access": "public" 5 + "description": "TypeScript definitions for Atproto lexicons used in recipes.blue", 6 + "keywords": ["atproto", "recipes.blue", "lexicons"], 7 + "license": "BSD", 8 + "repository": { 9 + "url": "https://tangled.org/roost.moe/recipes.blue", 10 + "directory": "libs/lexicons" 11 + }, 12 + "files": [ 13 + "dist/", 14 + "lib/*", 15 + "!lib/**/*.bench.ts", 16 + "!lib/**/*.test.ts" 17 + ], 18 + "exports": { 19 + ".": "./dist/index.js", 20 + "./did": "./dist/did.js" 21 + }, 22 + "scripts": { 23 + "dev": "tsc --watch --project tsconfig.build.json", 24 + "build": "tsc --project tsconfig.build.json", 25 + "lexcomp": "rm -rf tsp-output && tsp compile ./lexicons --emit @typelex/emitter", 26 + "lexgen": "bun run -b lexcomp && rm -rf lib/types && lex-cli generate --config ./lex.config.ts", 27 + "prepublish": "rm -rf dist; bun run build" 28 + }, 29 + "dependencies": { 30 + "@atcute/atproto": "catalog:", 31 + "@atcute/bluesky": "catalog:", 32 + "@atcute/client": "catalog:", 33 + "@atcute/lexicons": "catalog:" 9 34 }, 10 35 "devDependencies": { 11 - "@atcute/client": "^2.0.6", 12 - "@atcute/lex-cli": "^1.0.3", 36 + "@atcute/lex-cli": "^2.3.3", 13 37 "@cookware/tsconfig": "workspace:*", 14 - "typescript": "^5.7.2", 15 - "zod": "^3.23.8" 38 + "@typelex/emitter": "^0.4.0", 39 + "@types/bun": "catalog:", 40 + "@typespec/compiler": "^1.6.0" 16 41 }, 17 - "peerDependencies": { 18 - "@atcute/client": "^2.0.6", 19 - "zod": "^3.23.8" 42 + "atcute:lexicons": { 43 + "mappings": { 44 + "blue.recipes.*": { 45 + "type": "namespace", 46 + "path": "./types/{{nsid_remainder}}" 47 + } 48 + } 20 49 } 21 50 }
+1 -1
libs/lexicons/scripts/generate.sh
··· 2 2 3 3 root="$(dirname "$(dirname "${BASH_SOURCE[0]}")")" 4 4 5 - pnpm exec lex-cli generate \ 5 + bun run lex-cli generate \ 6 6 "$root"/../../lexicons/blue/recipes/**/*.json \ 7 7 -o src/atcute.ts \ 8 8 --description "Contains type declarations for Cookware lexicons"
+83
libs/lexicons/scripts/publish.ts
··· 1 + import { readdirSync, statSync } from "fs"; 2 + import { join } from "path"; 3 + 4 + const TSP_OUTPUT_DIR = join(import.meta.dir, "../tsp-output/@typelex/emitter"); 5 + 6 + interface LexiconFile { 7 + path: string; 8 + id: string; 9 + content: unknown; 10 + } 11 + 12 + async function crawlJsonFiles(dir: string): Promise<LexiconFile[]> { 13 + const results: LexiconFile[] = []; 14 + 15 + const entries = readdirSync(dir); 16 + 17 + for (const entry of entries) { 18 + const fullPath = join(dir, entry); 19 + const stat = statSync(fullPath); 20 + 21 + if (stat.isDirectory()) { 22 + results.push(...(await crawlJsonFiles(fullPath))); 23 + } else if (entry.endsWith(".json")) { 24 + const file = Bun.file(fullPath); 25 + const content = await file.json(); 26 + 27 + results.push({ 28 + path: fullPath, 29 + id: content.id || entry.replace(".json", ""), 30 + content, 31 + }); 32 + } 33 + } 34 + 35 + return results; 36 + } 37 + 38 + async function generateDNSRecords(did: string): Promise<string> { 39 + const lexicons = await crawlJsonFiles(TSP_OUTPUT_DIR); 40 + const authorities = new Map<string, string[]>(); 41 + 42 + // group lexicons by authority (everything except the final "name" part) 43 + for (const lex of lexicons) { 44 + // blue.recipes.feed.getRecipe -> blue.recipes.feed (authority) 45 + const parts = lex.id.split("."); 46 + const authority = parts.slice(0, -1).join("."); 47 + 48 + if (!authorities.has(authority)) { 49 + authorities.set(authority, []); 50 + } 51 + authorities.get(authority)!.push(lex.id); 52 + } 53 + 54 + // generate DNS TXT records 55 + const records: string[] = []; 56 + records.push("; Lexicon DNS TXT Records for Cloudflare"); 57 + records.push("; Upload these to your Cloudflare DNS settings\n"); 58 + 59 + for (const [authority, nsids] of authorities) { 60 + // blue.recipes.feed -> _lexicon.feed.recipes.blue 61 + const reversedAuthority = authority.split(".").reverse().join("."); 62 + const txtName = `_lexicon.${reversedAuthority}`; 63 + 64 + records.push(`; Authority: ${authority}`); 65 + records.push(`; NSIDs: ${nsids.join(", ")}`); 66 + records.push(`${txtName}\tTXT\tdid=${did}`); 67 + records.push(""); 68 + } 69 + 70 + return records.join("\n"); 71 + } 72 + 73 + // main 74 + const did = process.argv[2]; 75 + 76 + if (!did || !did.startsWith("did:")) { 77 + console.error("usage: bun run scripts/publish.ts <did>"); 78 + console.error("example: bun run scripts/publish.ts did:plc:xyz123"); 79 + process.exit(1); 80 + } 81 + 82 + const dnsRecords = await generateDNSRecords(did); 83 + console.log(dnsRecords);
-128
libs/lexicons/src/atcute.ts
··· 1 - /* eslint-disable */ 2 - // This file is automatically generated, do not edit! 3 - 4 - /** 5 - * @module 6 - * Contains type declarations for Cookware lexicons 7 - */ 8 - 9 - import "@atcute/client/lexicons"; 10 - 11 - declare module "@atcute/client/lexicons" { 12 - namespace BlueRecipesFeedDefs { 13 - interface AuthorInfo { 14 - [Brand.Type]?: "blue.recipes.feed.defs#authorInfo"; 15 - did: string; 16 - handle: string; 17 - avatarUrl?: string; 18 - displayName?: string; 19 - } 20 - interface Ingredient { 21 - [Brand.Type]?: "blue.recipes.feed.defs#ingredient"; 22 - /** How much of the ingredient is needed. */ 23 - amount?: string; 24 - /** 25 - * The name of the ingredient. \ 26 - * Maximum string length: 3000 \ 27 - * Maximum grapheme length: 300 28 - */ 29 - name?: string; 30 - } 31 - interface Step { 32 - [Brand.Type]?: "blue.recipes.feed.defs#step"; 33 - /** 34 - * The instruction to provide to the user. \ 35 - * Maximum string length: 5000 \ 36 - * Maximum grapheme length: 300 37 - */ 38 - text: string; 39 - } 40 - } 41 - 42 - /** Gets a recipe from the index by author DID and rkey. */ 43 - namespace BlueRecipesFeedGetRecipe { 44 - interface Params { 45 - did: string; 46 - rkey: string; 47 - } 48 - type Input = undefined; 49 - interface Output { 50 - recipe: Result; 51 - } 52 - interface Result { 53 - [Brand.Type]?: "blue.recipes.feed.getRecipe#result"; 54 - author: BlueRecipesFeedDefs.AuthorInfo; 55 - ingredients: BlueRecipesFeedDefs.Ingredient[]; 56 - steps: BlueRecipesFeedDefs.Step[]; 57 - title: string; 58 - description?: string; 59 - time?: number; 60 - } 61 - } 62 - 63 - /** Gets recipes from the index. */ 64 - namespace BlueRecipesFeedGetRecipes { 65 - interface Params { 66 - cursor: string; 67 - did?: string; 68 - } 69 - type Input = undefined; 70 - interface Output { 71 - recipes: Result[]; 72 - author?: BlueRecipesFeedDefs.AuthorInfo; 73 - } 74 - interface Result { 75 - [Brand.Type]?: "blue.recipes.feed.getRecipes#result"; 76 - author: BlueRecipesFeedDefs.AuthorInfo; 77 - ingredients: number; 78 - rkey: string; 79 - steps: number; 80 - time: number; 81 - title: string; 82 - description?: string; 83 - type?: string; 84 - } 85 - } 86 - 87 - namespace BlueRecipesFeedRecipe { 88 - /** Record containing a Cookware recipe. */ 89 - interface Record { 90 - $type: "blue.recipes.feed.recipe"; 91 - ingredients: BlueRecipesFeedDefs.Ingredient[]; 92 - steps: BlueRecipesFeedDefs.Step[]; 93 - /** 94 - * The title of the recipe. \ 95 - * Maximum string length: 3000 \ 96 - * Maximum grapheme length: 300 97 - */ 98 - title: string; 99 - /** 100 - * The description of the recipe. \ 101 - * Maximum string length: 3000 \ 102 - * Maximum grapheme length: 300 103 - */ 104 - description?: string; 105 - /** The recipe's cover image. */ 106 - image?: At.Blob; 107 - /** The amount of time (in minutes) the recipe takes to complete. */ 108 - time?: number; 109 - } 110 - } 111 - 112 - interface Records { 113 - "blue.recipes.feed.recipe": BlueRecipesFeedRecipe.Record; 114 - } 115 - 116 - interface Queries { 117 - "blue.recipes.feed.getRecipe": { 118 - params: BlueRecipesFeedGetRecipe.Params; 119 - output: BlueRecipesFeedGetRecipe.Output; 120 - }; 121 - "blue.recipes.feed.getRecipes": { 122 - params: BlueRecipesFeedGetRecipes.Params; 123 - output: BlueRecipesFeedGetRecipes.Output; 124 - }; 125 - } 126 - 127 - interface Procedures {} 128 - }
-14
libs/lexicons/src/defs.ts
··· 1 - import { z } from 'zod'; 2 - 3 - export const IngredientObject = z.object({ 4 - amount: z.string().nullable(), 5 - name: z.string().max(3000, 'Ingredient names must be under 3000 characters.'), 6 - }); 7 - 8 - export type Ingredient = z.infer<typeof IngredientObject>; 9 - 10 - export const StepObject = z.object({ 11 - text: z.string().max(5000, 'Recipe steps must be under 5000 characters.'), 12 - }); 13 - 14 - export type Step = z.infer<typeof StepObject>;
-134
libs/lexicons/src/did.ts
··· 1 - import { z } from "zod"; 2 - 3 - type Brand<K, T> = K & { __brand: T }; 4 - export type DID = Brand<string, "DID">; 5 - 6 - export function isDid(s: string): s is DID { 7 - return s.startsWith("did:"); 8 - } 9 - 10 - export function parseDid(s: string): DID | null { 11 - if (!isDid(s)) { 12 - return null; 13 - } 14 - return s; 15 - } 16 - 17 - export const getDidDoc = async (did: DID) => { 18 - let url = `https://plc.directory/${did}`; 19 - if (did.startsWith('did:web')) { 20 - url = `https://${did.split(':')[2]}/.well-known/did.json`; 21 - } 22 - 23 - const response = await fetch(url); 24 - 25 - return PlcDocument.parse(await response.json()); 26 - }; 27 - 28 - export const getPdsUrl = async (did: DID) => { 29 - const plc = await getDidDoc(did); 30 - 31 - return ( 32 - plc.service.find((s) => s.type === "AtprotoPersonalDataServer") 33 - ?.serviceEndpoint ?? null 34 - ); 35 - }; 36 - 37 - const PlcDocument = z.object({ 38 - id: z.string(), 39 - alsoKnownAs: z.array(z.string()), 40 - service: z.array( 41 - z.object({ 42 - id: z.string(), 43 - type: z.string(), 44 - serviceEndpoint: z.string(), 45 - }), 46 - ), 47 - }); 48 - 49 - const DnsQueryResponse = z.object({ 50 - Answer: z.array( 51 - z.object({ 52 - name: z.string(), 53 - type: z.number(), 54 - TTL: z.number(), 55 - data: z.string(), 56 - }), 57 - ), 58 - }); 59 - 60 - async function getAtprotoDidFromDns(handle: string) { 61 - const url = new URL("https://cloudflare-dns.com/dns-query"); 62 - url.searchParams.set("type", "TXT"); 63 - url.searchParams.set("name", `_atproto.${handle}`); 64 - 65 - const response = await fetch(url, { 66 - headers: { 67 - Accept: "application/dns-json", 68 - }, 69 - }); 70 - 71 - const { Answer } = DnsQueryResponse.parse(await response.json()); 72 - // Answer[0].data is "\"did=...\"" (with quotes) 73 - const val = Answer[0]?.data 74 - ? JSON.parse(Answer[0]?.data).split("did=")[1] 75 - : null; 76 - 77 - return val ? parseDid(val) : null; 78 - } 79 - 80 - const getAtprotoFromHttps = async (handle: string) => { 81 - let res; 82 - const timeoutSignal = AbortSignal.timeout(1500); 83 - try { 84 - res = await fetch(`https://${handle}/.well-known/atproto-did`, { 85 - signal: timeoutSignal, 86 - }); 87 - } catch (_e) { 88 - // We're caching failures here, we should at some point invalidate the cache by listening to handle changes on the network 89 - return null; 90 - } 91 - 92 - if (!res.ok) { 93 - return null; 94 - } 95 - return parseDid((await res.text()).trim()); 96 - }; 97 - 98 - export const getVerifiedDid = async (handle: string) => { 99 - const [dnsDid, httpDid] = await Promise.all([ 100 - getAtprotoDidFromDns(handle).catch((_) => { 101 - return null; 102 - }), 103 - getAtprotoFromHttps(handle).catch(() => { 104 - return null; 105 - }), 106 - ]); 107 - 108 - if (dnsDid && httpDid && dnsDid !== httpDid) { 109 - return null; 110 - } 111 - 112 - const did = dnsDid ?? (httpDid ? parseDid(httpDid) : null); 113 - if (!did) { 114 - return null; 115 - } 116 - 117 - const plcDoc = await getDidDoc(did); 118 - const plcHandle = plcDoc.alsoKnownAs 119 - .find((handle) => handle.startsWith("at://")) 120 - ?.replace("at://", ""); 121 - 122 - if (!plcHandle) return null; 123 - 124 - return plcHandle.toLowerCase() === handle.toLowerCase() ? did : null; 125 - }; 126 - 127 - export const getDidFromHandleOrDid = async (handleOrDid: string) => { 128 - const decodedHandleOrDid = decodeURIComponent(handleOrDid); 129 - if (isDid(decodedHandleOrDid)) { 130 - return decodedHandleOrDid; 131 - } 132 - 133 - return getVerifiedDid(decodedHandleOrDid); 134 - };
-4
libs/lexicons/src/index.ts
··· 1 - export * from './recipe.js'; 2 - export * from './defs.js'; 3 - export * from './atcute.js'; 4 - export * from './did.js';
-14
libs/lexicons/src/recipe.ts
··· 1 - import { z } from 'zod'; 2 - import { IngredientObject, StepObject } from './defs.js'; 3 - 4 - export const RecipeCollection = 'blue.recipes.feed.recipe' as const; 5 - 6 - export const RecipeRecord = z.object({ 7 - title: z.string().max(3000, 'Recipe titles must be under 3000 characters.'), 8 - description: z.string().max(3000, 'Recipe descriptions must be under 3000 characters.').nullable(), 9 - time: z.number({ message: 'Time must be a number.' }), 10 - ingredients: z.array(IngredientObject), 11 - steps: z.array(StepObject), 12 - }); 13 - 14 - export type Recipe = z.infer<typeof RecipeRecord>;
+8
libs/lexicons/tsconfig.build.json
··· 1 + { 2 + "extends": "./tsconfig.json", 3 + "include": ["lib"], 4 + "compilerOptions": { 5 + "noEmit": false, 6 + "outDir": "./dist" 7 + } 8 + }
+4 -1
libs/lexicons/tsconfig.json
··· 1 1 { 2 2 "extends": "@cookware/tsconfig/base.json", 3 - "include": ["src"] 3 + "include": ["lib", "scripts"], 4 + "compilerOptions": { 5 + "noEmit": true 6 + } 4 7 }
+3
libs/tsconfig/package.json
··· 4 4 "private": true, 5 5 "publishConfig": { 6 6 "access": "public" 7 + }, 8 + "dependencies": { 9 + "@types/bun": "^1.3.3" 7 10 } 8 11 }
+4
mise.toml
··· 1 + [tools] 2 + bun = "1.3.3" 3 + cue = "0.15.1" 4 + just = "1.43.1"
+15 -2
package.json
··· 1 1 { 2 + "name": "@cookware/monorepo", 2 3 "private": true, 3 - "packageManager": "pnpm@9.15.0", 4 + "packageManager": "bun@1.3.3", 4 5 "devDependencies": { 5 - "turbo": "^2.3.3" 6 + "turbo": "^2.3.3", 7 + "typescript": "^5.9.3" 6 8 }, 7 9 "scripts": { 8 10 "dev": "turbo dev", 9 11 "build": "turbo build", 10 12 "db:generate": "turbo db:generate", 11 13 "db:migrate": "turbo db:migrate" 14 + }, 15 + "workspaces": { 16 + "packages": ["apps/**", "libs/**"], 17 + "catalog": { 18 + "@types/bun": "^1.3.3", 19 + "@atcute/atproto": "^3.1.9", 20 + "@atcute/bluesky": "^3.2.11", 21 + "@atcute/client": "^4.0.5", 22 + "@atcute/lexicons": "^1.2.5", 23 + "drizzle-orm": "^0.44.7" 24 + } 12 25 } 13 26 }
-8141
pnpm-lock.yaml
··· 1 - lockfileVersion: '9.0' 2 - 3 - settings: 4 - autoInstallPeers: true 5 - excludeLinksFromLockfile: false 6 - 7 - importers: 8 - 9 - .: 10 - devDependencies: 11 - turbo: 12 - specifier: ^2.3.3 13 - version: 2.3.3 14 - 15 - apps/api: 16 - dependencies: 17 - '@atcute/client': 18 - specifier: ^2.0.6 19 - version: 2.0.6 20 - '@atproto/api': 21 - specifier: ^0.13.19 22 - version: 0.13.19 23 - '@atproto/common': 24 - specifier: ^0.4.5 25 - version: 0.4.5 26 - '@atproto/crypto': 27 - specifier: ^0.4.2 28 - version: 0.4.2 29 - '@atproto/jwk-jose': 30 - specifier: ^0.1.2 31 - version: 0.1.2 32 - '@atproto/oauth-client-node': 33 - specifier: ^0.2.3 34 - version: 0.2.3 35 - '@cookware/database': 36 - specifier: workspace:^ 37 - version: link:../../libs/database 38 - '@hono/node-server': 39 - specifier: ^1.13.7 40 - version: 1.13.7(hono@4.6.12) 41 - '@libsql/client': 42 - specifier: ^0.14.0 43 - version: 0.14.0(bufferutil@4.0.8) 44 - '@sentry/node': 45 - specifier: ^8.42.0 46 - version: 8.42.0 47 - '@skyware/jetstream': 48 - specifier: ^0.2.1 49 - version: 0.2.1(@atcute/client@2.0.6) 50 - bufferutil: 51 - specifier: ^4.0.8 52 - version: 4.0.8 53 - drizzle-orm: 54 - specifier: ^0.37.0 55 - version: 0.37.0(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@19.0.1)(react@19.0.0) 56 - hono: 57 - specifier: ^4.6.12 58 - version: 4.6.12 59 - hono-sessions: 60 - specifier: ^0.7.0 61 - version: 0.7.0 62 - jose: 63 - specifier: ^5.9.6 64 - version: 5.9.6 65 - pino: 66 - specifier: ^9.5.0 67 - version: 9.5.0 68 - uint8arrays: 69 - specifier: ^5.1.0 70 - version: 5.1.0 71 - ws: 72 - specifier: ^8.18.0 73 - version: 8.18.0(bufferutil@4.0.8) 74 - zod: 75 - specifier: ^3.23.8 76 - version: 3.23.8 77 - devDependencies: 78 - '@atcute/bluesky': 79 - specifier: ^1.0.9 80 - version: 1.0.9(@atcute/client@2.0.6) 81 - '@cookware/lexicons': 82 - specifier: workspace:* 83 - version: link:../../libs/lexicons 84 - '@cookware/tsconfig': 85 - specifier: workspace:* 86 - version: link:../../libs/tsconfig 87 - '@swc/core': 88 - specifier: ^1.9.3 89 - version: 1.9.3 90 - '@types/node': 91 - specifier: ^22.10.1 92 - version: 22.10.1 93 - '@types/ws': 94 - specifier: ^8.5.13 95 - version: 8.5.13 96 - drizzle-kit: 97 - specifier: ^0.29.0 98 - version: 0.29.0 99 - pino-pretty: 100 - specifier: ^13.0.0 101 - version: 13.0.0 102 - rimraf: 103 - specifier: ^6.0.1 104 - version: 6.0.1 105 - ts-node: 106 - specifier: ^10.9.2 107 - version: 10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.7.2) 108 - tsup: 109 - specifier: ^8.3.5 110 - version: 8.3.5(@swc/core@1.9.3)(jiti@2.4.1)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) 111 - tsx: 112 - specifier: ^4.19.2 113 - version: 4.19.2 114 - typescript: 115 - specifier: ^5.7.2 116 - version: 5.7.2 117 - 118 - apps/ingester: 119 - dependencies: 120 - '@atcute/client': 121 - specifier: ^2.0.6 122 - version: 2.0.6 123 - '@cookware/database': 124 - specifier: workspace:^ 125 - version: link:../../libs/database 126 - '@sentry/node': 127 - specifier: ^8.42.0 128 - version: 8.42.0 129 - '@skyware/jetstream': 130 - specifier: ^0.2.1 131 - version: 0.2.1(@atcute/client@2.0.6) 132 - bufferutil: 133 - specifier: ^4.0.8 134 - version: 4.0.8 135 - drizzle-orm: 136 - specifier: ^0.37.0 137 - version: 0.37.0(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@19.0.1)(react@19.0.0) 138 - pino: 139 - specifier: ^9.5.0 140 - version: 9.5.0 141 - ws: 142 - specifier: ^8.18.0 143 - version: 8.18.0(bufferutil@4.0.8) 144 - zod: 145 - specifier: ^3.23.8 146 - version: 3.23.8 147 - devDependencies: 148 - '@cookware/lexicons': 149 - specifier: workspace:* 150 - version: link:../../libs/lexicons 151 - '@cookware/tsconfig': 152 - specifier: workspace:* 153 - version: link:../../libs/tsconfig 154 - '@types/node': 155 - specifier: ^22.10.1 156 - version: 22.10.1 157 - '@types/ws': 158 - specifier: ^8.5.13 159 - version: 8.5.13 160 - pino-pretty: 161 - specifier: ^13.0.0 162 - version: 13.0.0 163 - rimraf: 164 - specifier: ^6.0.1 165 - version: 6.0.1 166 - ts-node: 167 - specifier: ^10.9.2 168 - version: 10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.7.2) 169 - tsup: 170 - specifier: ^8.3.5 171 - version: 8.3.5(@swc/core@1.9.3)(jiti@2.4.1)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1) 172 - tsx: 173 - specifier: ^4.19.2 174 - version: 4.19.2 175 - typescript: 176 - specifier: ^5.7.2 177 - version: 5.7.2 178 - 179 - apps/web: 180 - dependencies: 181 - '@atcute/client': 182 - specifier: ^2.0.6 183 - version: 2.0.6 184 - '@atcute/oauth-browser-client': 185 - specifier: ^1.0.7 186 - version: 1.0.7 187 - '@atproto/common': 188 - specifier: ^0.4.5 189 - version: 0.4.5 190 - '@atproto/common-web': 191 - specifier: ^0.3.1 192 - version: 0.3.1 193 - '@dnd-kit/core': 194 - specifier: ^6.3.1 195 - version: 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 196 - '@dnd-kit/modifiers': 197 - specifier: ^9.0.0 198 - version: 9.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 199 - '@dnd-kit/sortable': 200 - specifier: ^10.0.0 201 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0) 202 - '@dnd-kit/utilities': 203 - specifier: ^3.2.2 204 - version: 3.2.2(react@19.0.0) 205 - '@hookform/resolvers': 206 - specifier: ^3.9.1 207 - version: 3.9.1(react-hook-form@7.54.1(react@19.0.0)) 208 - '@radix-ui/react-avatar': 209 - specifier: ^1.1.1 210 - version: 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 211 - '@radix-ui/react-collapsible': 212 - specifier: ^1.1.1 213 - version: 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 214 - '@radix-ui/react-dialog': 215 - specifier: ^1.1.4 216 - version: 1.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 217 - '@radix-ui/react-dropdown-menu': 218 - specifier: ^2.1.4 219 - version: 2.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 220 - '@radix-ui/react-icons': 221 - specifier: ^1.3.2 222 - version: 1.3.2(react@19.0.0) 223 - '@radix-ui/react-label': 224 - specifier: ^2.1.0 225 - version: 2.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 226 - '@radix-ui/react-separator': 227 - specifier: ^1.1.0 228 - version: 1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 229 - '@radix-ui/react-slot': 230 - specifier: ^1.1.0 231 - version: 1.1.0(@types/react@19.0.1)(react@19.0.0) 232 - '@radix-ui/react-tooltip': 233 - specifier: ^1.1.4 234 - version: 1.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 235 - '@tanstack/react-query': 236 - specifier: ^5.62.2 237 - version: 5.62.2(react@19.0.0) 238 - '@tanstack/react-query-devtools': 239 - specifier: ^5.62.2 240 - version: 5.62.2(@tanstack/react-query@5.62.2(react@19.0.0))(react@19.0.0) 241 - '@tanstack/react-router': 242 - specifier: ^1.91.2 243 - version: 1.91.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 244 - axios: 245 - specifier: ^1.7.9 246 - version: 1.7.9 247 - class-variance-authority: 248 - specifier: ^0.7.1 249 - version: 0.7.1 250 - clsx: 251 - specifier: ^2.1.1 252 - version: 2.1.1 253 - lucide-react: 254 - specifier: ^0.464.0 255 - version: 0.464.0(react@19.0.0) 256 - react-dom: 257 - specifier: 19.0.0 258 - version: 19.0.0(react@19.0.0) 259 - react-hook-form: 260 - specifier: ^7.54.1 261 - version: 7.54.1(react@19.0.0) 262 - tailwind-merge: 263 - specifier: ^2.5.5 264 - version: 2.5.5 265 - tailwindcss-animate: 266 - specifier: ^1.0.7 267 - version: 1.0.7(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3))) 268 - zod: 269 - specifier: ^3.23.8 270 - version: 3.23.8 271 - devDependencies: 272 - '@atcute/bluesky': 273 - specifier: ^1.0.9 274 - version: 1.0.9(@atcute/client@2.0.6) 275 - '@cookware/lexicons': 276 - specifier: workspace:* 277 - version: link:../../libs/lexicons 278 - '@eslint/js': 279 - specifier: ^9.15.0 280 - version: 9.16.0 281 - '@tanstack/eslint-plugin-query': 282 - specifier: ^5.62.1 283 - version: 5.62.1(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 284 - '@tanstack/router-devtools': 285 - specifier: ^1.85.5 286 - version: 1.85.5(@tanstack/react-router@1.91.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 287 - '@tanstack/router-plugin': 288 - specifier: ^1.85.3 289 - version: 1.85.3(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1)) 290 - '@types/node': 291 - specifier: ^22.10.1 292 - version: 22.10.1 293 - '@types/react': 294 - specifier: ^19.0.0 295 - version: 19.0.1 296 - '@types/react-dom': 297 - specifier: ^19.0.0 298 - version: 19.0.1 299 - '@vitejs/plugin-react-swc': 300 - specifier: ^3.5.0 301 - version: 3.7.2(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1)) 302 - autoprefixer: 303 - specifier: ^10.4.20 304 - version: 10.4.20(postcss@8.4.49) 305 - cssnano: 306 - specifier: ^7.0.6 307 - version: 7.0.6(postcss@8.4.49) 308 - eslint: 309 - specifier: ^9.15.0 310 - version: 9.16.0(jiti@2.4.1) 311 - eslint-plugin-react-hooks: 312 - specifier: ^5.0.0 313 - version: 5.0.0(eslint@9.16.0(jiti@2.4.1)) 314 - eslint-plugin-react-refresh: 315 - specifier: ^0.4.14 316 - version: 0.4.16(eslint@9.16.0(jiti@2.4.1)) 317 - globals: 318 - specifier: ^15.12.0 319 - version: 15.13.0 320 - postcss: 321 - specifier: ^8.4.49 322 - version: 8.4.49 323 - react: 324 - specifier: 19.0.0 325 - version: 19.0.0 326 - tailwindcss: 327 - specifier: ^3.4.16 328 - version: 3.4.16(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3)) 329 - typescript: 330 - specifier: ~5.6.2 331 - version: 5.6.3 332 - typescript-eslint: 333 - specifier: ^8.15.0 334 - version: 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 335 - vite: 336 - specifier: ^6.0.1 337 - version: 6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1) 338 - 339 - libs/database: 340 - dependencies: 341 - '@libsql/client': 342 - specifier: ^0.14.0 343 - version: 0.14.0(bufferutil@4.0.8) 344 - drizzle-orm: 345 - specifier: ^0.37.0 346 - version: 0.37.0(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@19.0.1)(react@19.0.0) 347 - zod: 348 - specifier: ^3.23.8 349 - version: 3.23.8 350 - devDependencies: 351 - '@atproto/oauth-client-node': 352 - specifier: ^0.2.3 353 - version: 0.2.3 354 - '@cookware/lexicons': 355 - specifier: workspace:^ 356 - version: link:../lexicons 357 - '@cookware/tsconfig': 358 - specifier: workspace:* 359 - version: link:../tsconfig 360 - '@types/node': 361 - specifier: ^22.10.1 362 - version: 22.10.1 363 - drizzle-kit: 364 - specifier: ^0.29.0 365 - version: 0.29.0 366 - typescript: 367 - specifier: ^5.2.2 368 - version: 5.7.2 369 - 370 - libs/lexicons: 371 - devDependencies: 372 - '@atcute/client': 373 - specifier: ^2.0.6 374 - version: 2.0.6 375 - '@atcute/lex-cli': 376 - specifier: ^1.0.3 377 - version: 1.0.3 378 - '@cookware/tsconfig': 379 - specifier: workspace:* 380 - version: link:../tsconfig 381 - typescript: 382 - specifier: ^5.7.2 383 - version: 5.7.2 384 - zod: 385 - specifier: ^3.23.8 386 - version: 3.23.8 387 - 388 - libs/tsconfig: {} 389 - 390 - packages: 391 - 392 - '@alloc/quick-lru@5.2.0': 393 - resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 394 - engines: {node: '>=10'} 395 - 396 - '@ampproject/remapping@2.3.0': 397 - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} 398 - engines: {node: '>=6.0.0'} 399 - 400 - '@atcute/bluesky@1.0.9': 401 - resolution: {integrity: sha512-06UbqlnREobZB5vVlstJXsJJVNBPr/RhauVVWQk9k8eIfzyiV9uxklc5olv+wULld+iBL6OQItnTEyZPv8QFLw==} 402 - peerDependencies: 403 - '@atcute/client': ^1.0.0 || ^2.0.0 404 - 405 - '@atcute/client@2.0.6': 406 - resolution: {integrity: sha512-mhdqEicGUx0s5HTFOLpz91rcLS9j/g63de0nmAqv7blhU3j+xBf4le54qr2YIXNfnReZI7EwLYLX/YIBez4LGA==} 407 - 408 - '@atcute/lex-cli@1.0.3': 409 - resolution: {integrity: sha512-o6nRrYe1Vu2C21ArSjBCaF9deujBmgx/Q3LkOJorZbc/ableFeThcS5jvePMYcW9t18EDSTlttKn13y8uuUDNQ==} 410 - hasBin: true 411 - 412 - '@atcute/oauth-browser-client@1.0.7': 413 - resolution: {integrity: sha512-ikf3FscGZXYU+S0K4n9eDUMg6pS//g/Zr159+bznxO3Wn2JYBohEIxzy29OIEExXD/qAYMq9kfqvo2d0gs4JWQ==} 414 - 415 - '@atproto-labs/did-resolver@0.1.6': 416 - resolution: {integrity: sha512-qddGpcjKj9SUMlZW1d+/dY/03CDVcmOAlAozXEXsU2H5OT1vFAdMmOp0VbwK0y99RH3DvAQtyQKiRzoPFqp8rA==} 417 - 418 - '@atproto-labs/fetch-node@0.1.4': 419 - resolution: {integrity: sha512-hwYx0XpgIl2zydRy13DtWvywruuHk1EX+yCjqjgUIezUm8fi35ZN4QvR6INEm0MpN2MD/kQsImPbd8ZftzZ3zw==} 420 - 421 - '@atproto-labs/fetch@0.1.2': 422 - resolution: {integrity: sha512-7mQQIRtVenqtdBQKCqoLjyAhPS2aA56EGEjyz5zB3sramM3qkrvzyusr55GAzGDS0tvB6cy9cDEtSLmfK7LUnA==} 423 - 424 - '@atproto-labs/handle-resolver-node@0.1.8': 425 - resolution: {integrity: sha512-AlH7qRtmhZFRCcv1HK9OYiZpTFGcX39zjzzANq42zVLlfqoJr3ugnv7mAXGHE8woVguKtbypHnrVCDceoBAs2w==} 426 - 427 - '@atproto-labs/handle-resolver@0.1.4': 428 - resolution: {integrity: sha512-tnGUD2mQ6c8xHs3eeVJgwYqM3FHoTZZbOcOGKqO1A5cuIG+gElwEhpWwpwX5LI7FF4J8eS9BOHLl3NFS7Q8QXg==} 429 - 430 - '@atproto-labs/identity-resolver@0.1.7': 431 - resolution: {integrity: sha512-aRmY0cp+aFDgxAD62jjCPUDJMqryuXmt0hK9ls8LHeSzszr58BFDwybLaW6Izz2KISQlzu75Ia0c6uRymdmcYA==} 432 - 433 - '@atproto-labs/pipe@0.1.0': 434 - resolution: {integrity: sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w==} 435 - 436 - '@atproto-labs/simple-store-memory@0.1.1': 437 - resolution: {integrity: sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA==} 438 - 439 - '@atproto-labs/simple-store@0.1.1': 440 - resolution: {integrity: sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg==} 441 - 442 - '@atproto/api@0.13.19': 443 - resolution: {integrity: sha512-rLWQBZaOIk3ds1Fx9CwrdyX3X2GbdSEvVJ9mdSPNX40joiEaE1ljGMOcziFipbvZacXynozE4E0Sb1CgOhzfmA==} 444 - 445 - '@atproto/common-web@0.3.1': 446 - resolution: {integrity: sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q==} 447 - 448 - '@atproto/common@0.4.5': 449 - resolution: {integrity: sha512-LFAGqHcxCI5+b31Xgk+VQQtZU258iGPpHJzNeHVcdh6teIKZi4C2l6YV+m+3CEz+yYcfP7jjUmgqesx7l9Arsg==} 450 - 451 - '@atproto/crypto@0.4.2': 452 - resolution: {integrity: sha512-aeOfPQYCDbhn2hV06oBF2KXrWjf/BK4yL8lfANJKSmKl3tKWCkiW/moi643rUXXxSE72KtWtQeqvNFYnnFJ0ig==} 453 - 454 - '@atproto/did@0.1.3': 455 - resolution: {integrity: sha512-ULD8Gw/KRRwLFZ2Z2L4DjmdOMrg8IYYlcjdSc+GQ2/QJSVnD2zaJJVTLd3vls121wGt/583rNaiZTT2DpBze4w==} 456 - 457 - '@atproto/jwk-jose@0.1.2': 458 - resolution: {integrity: sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ==} 459 - 460 - '@atproto/jwk-webcrypto@0.1.2': 461 - resolution: {integrity: sha512-vTBUbUZXh0GI+6KJiPGukmI4BQEHFAij8fJJ4WnReF/hefAs3ISZtrWZHGBebz+q2EcExYlnhhlmxvDzV7veGw==} 462 - 463 - '@atproto/jwk@0.1.1': 464 - resolution: {integrity: sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og==} 465 - 466 - '@atproto/lexicon@0.4.3': 467 - resolution: {integrity: sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg==} 468 - 469 - '@atproto/oauth-client-node@0.2.3': 470 - resolution: {integrity: sha512-crHxZaP9T/i7O9fOhALcFtW1EP/tVblDnWoaIiZ3vL/hvVLwSUad/wvG2WPcVURzLSbigDInhn7rZZSzLxJacg==} 471 - 472 - '@atproto/oauth-client@0.3.3': 473 - resolution: {integrity: sha512-qC6ekTdbUrXxDwuUC9jInWw7TuJYkl/EuReoLcvZ7dv9KbCUEuoYT0TNROLGp24cxRH65q/PVlp10Ov7lkxteg==} 474 - 475 - '@atproto/oauth-types@0.2.1': 476 - resolution: {integrity: sha512-hDisUXzcq5KU1HMuCYZ8Kcz7BePl7V11bFjjgZvND3mdSphiyBpJ8MCNn3QzAa6cXpFo0w9PDcYMAlCCRZHdVw==} 477 - 478 - '@atproto/syntax@0.3.1': 479 - resolution: {integrity: sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw==} 480 - 481 - '@atproto/xrpc@0.6.4': 482 - resolution: {integrity: sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA==} 483 - 484 - '@babel/code-frame@7.26.2': 485 - resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} 486 - engines: {node: '>=6.9.0'} 487 - 488 - '@babel/compat-data@7.26.2': 489 - resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} 490 - engines: {node: '>=6.9.0'} 491 - 492 - '@babel/core@7.26.0': 493 - resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} 494 - engines: {node: '>=6.9.0'} 495 - 496 - '@babel/generator@7.26.2': 497 - resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} 498 - engines: {node: '>=6.9.0'} 499 - 500 - '@babel/helper-compilation-targets@7.25.9': 501 - resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} 502 - engines: {node: '>=6.9.0'} 503 - 504 - '@babel/helper-module-imports@7.25.9': 505 - resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} 506 - engines: {node: '>=6.9.0'} 507 - 508 - '@babel/helper-module-transforms@7.26.0': 509 - resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} 510 - engines: {node: '>=6.9.0'} 511 - peerDependencies: 512 - '@babel/core': ^7.0.0 513 - 514 - '@babel/helper-plugin-utils@7.25.9': 515 - resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} 516 - engines: {node: '>=6.9.0'} 517 - 518 - '@babel/helper-string-parser@7.25.9': 519 - resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} 520 - engines: {node: '>=6.9.0'} 521 - 522 - '@babel/helper-validator-identifier@7.25.9': 523 - resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} 524 - engines: {node: '>=6.9.0'} 525 - 526 - '@babel/helper-validator-option@7.25.9': 527 - resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} 528 - engines: {node: '>=6.9.0'} 529 - 530 - '@babel/helpers@7.26.0': 531 - resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} 532 - engines: {node: '>=6.9.0'} 533 - 534 - '@babel/parser@7.26.2': 535 - resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} 536 - engines: {node: '>=6.0.0'} 537 - hasBin: true 538 - 539 - '@babel/plugin-syntax-jsx@7.25.9': 540 - resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} 541 - engines: {node: '>=6.9.0'} 542 - peerDependencies: 543 - '@babel/core': ^7.0.0-0 544 - 545 - '@babel/plugin-syntax-typescript@7.25.9': 546 - resolution: {integrity: sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==} 547 - engines: {node: '>=6.9.0'} 548 - peerDependencies: 549 - '@babel/core': ^7.0.0-0 550 - 551 - '@babel/template@7.25.9': 552 - resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} 553 - engines: {node: '>=6.9.0'} 554 - 555 - '@babel/traverse@7.25.9': 556 - resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} 557 - engines: {node: '>=6.9.0'} 558 - 559 - '@babel/types@7.26.0': 560 - resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} 561 - engines: {node: '>=6.9.0'} 562 - 563 - '@badrap/valita@0.3.16': 564 - resolution: {integrity: sha512-slP2blSd6A+xUBgGf+wW6adGd72ojBLxemU0jXQ0fXQcsZWYQ70wTLTJggs6+oxcAqN/bvYA3Ops8SqR2Imyaw==} 565 - engines: {node: '>= 16'} 566 - 567 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 568 - resolution: {integrity: sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w==} 569 - cpu: [arm64] 570 - os: [darwin] 571 - 572 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 573 - resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} 574 - cpu: [x64] 575 - os: [darwin] 576 - 577 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 578 - resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} 579 - cpu: [arm64] 580 - os: [linux] 581 - 582 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 583 - resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} 584 - cpu: [arm] 585 - os: [linux] 586 - 587 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 588 - resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} 589 - cpu: [x64] 590 - os: [linux] 591 - 592 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 593 - resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} 594 - cpu: [x64] 595 - os: [win32] 596 - 597 - '@cspotcode/source-map-support@0.8.1': 598 - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} 599 - engines: {node: '>=12'} 600 - 601 - '@dnd-kit/accessibility@3.1.1': 602 - resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} 603 - peerDependencies: 604 - react: '>=16.8.0' 605 - 606 - '@dnd-kit/core@6.3.1': 607 - resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} 608 - peerDependencies: 609 - react: '>=16.8.0' 610 - react-dom: '>=16.8.0' 611 - 612 - '@dnd-kit/modifiers@9.0.0': 613 - resolution: {integrity: sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw==} 614 - peerDependencies: 615 - '@dnd-kit/core': ^6.3.0 616 - react: '>=16.8.0' 617 - 618 - '@dnd-kit/sortable@10.0.0': 619 - resolution: {integrity: sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg==} 620 - peerDependencies: 621 - '@dnd-kit/core': ^6.3.0 622 - react: '>=16.8.0' 623 - 624 - '@dnd-kit/utilities@3.2.2': 625 - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} 626 - peerDependencies: 627 - react: '>=16.8.0' 628 - 629 - '@drizzle-team/brocli@0.10.2': 630 - resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} 631 - 632 - '@esbuild-kit/core-utils@3.3.2': 633 - resolution: {integrity: sha512-sPRAnw9CdSsRmEtnsl2WXWdyquogVpB3yZ3dgwJfe8zrOzTsV7cJvmwrKVa+0ma5BoiGJ+BoqkMvawbayKUsqQ==} 634 - deprecated: 'Merged into tsx: https://tsx.is' 635 - 636 - '@esbuild-kit/esm-loader@2.6.5': 637 - resolution: {integrity: sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA==} 638 - deprecated: 'Merged into tsx: https://tsx.is' 639 - 640 - '@esbuild/aix-ppc64@0.19.12': 641 - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} 642 - engines: {node: '>=12'} 643 - cpu: [ppc64] 644 - os: [aix] 645 - 646 - '@esbuild/aix-ppc64@0.23.1': 647 - resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} 648 - engines: {node: '>=18'} 649 - cpu: [ppc64] 650 - os: [aix] 651 - 652 - '@esbuild/aix-ppc64@0.24.0': 653 - resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} 654 - engines: {node: '>=18'} 655 - cpu: [ppc64] 656 - os: [aix] 657 - 658 - '@esbuild/android-arm64@0.18.20': 659 - resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} 660 - engines: {node: '>=12'} 661 - cpu: [arm64] 662 - os: [android] 663 - 664 - '@esbuild/android-arm64@0.19.12': 665 - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} 666 - engines: {node: '>=12'} 667 - cpu: [arm64] 668 - os: [android] 669 - 670 - '@esbuild/android-arm64@0.23.1': 671 - resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} 672 - engines: {node: '>=18'} 673 - cpu: [arm64] 674 - os: [android] 675 - 676 - '@esbuild/android-arm64@0.24.0': 677 - resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} 678 - engines: {node: '>=18'} 679 - cpu: [arm64] 680 - os: [android] 681 - 682 - '@esbuild/android-arm@0.18.20': 683 - resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} 684 - engines: {node: '>=12'} 685 - cpu: [arm] 686 - os: [android] 687 - 688 - '@esbuild/android-arm@0.19.12': 689 - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} 690 - engines: {node: '>=12'} 691 - cpu: [arm] 692 - os: [android] 693 - 694 - '@esbuild/android-arm@0.23.1': 695 - resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} 696 - engines: {node: '>=18'} 697 - cpu: [arm] 698 - os: [android] 699 - 700 - '@esbuild/android-arm@0.24.0': 701 - resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} 702 - engines: {node: '>=18'} 703 - cpu: [arm] 704 - os: [android] 705 - 706 - '@esbuild/android-x64@0.18.20': 707 - resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} 708 - engines: {node: '>=12'} 709 - cpu: [x64] 710 - os: [android] 711 - 712 - '@esbuild/android-x64@0.19.12': 713 - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} 714 - engines: {node: '>=12'} 715 - cpu: [x64] 716 - os: [android] 717 - 718 - '@esbuild/android-x64@0.23.1': 719 - resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} 720 - engines: {node: '>=18'} 721 - cpu: [x64] 722 - os: [android] 723 - 724 - '@esbuild/android-x64@0.24.0': 725 - resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} 726 - engines: {node: '>=18'} 727 - cpu: [x64] 728 - os: [android] 729 - 730 - '@esbuild/darwin-arm64@0.18.20': 731 - resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} 732 - engines: {node: '>=12'} 733 - cpu: [arm64] 734 - os: [darwin] 735 - 736 - '@esbuild/darwin-arm64@0.19.12': 737 - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} 738 - engines: {node: '>=12'} 739 - cpu: [arm64] 740 - os: [darwin] 741 - 742 - '@esbuild/darwin-arm64@0.23.1': 743 - resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} 744 - engines: {node: '>=18'} 745 - cpu: [arm64] 746 - os: [darwin] 747 - 748 - '@esbuild/darwin-arm64@0.24.0': 749 - resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} 750 - engines: {node: '>=18'} 751 - cpu: [arm64] 752 - os: [darwin] 753 - 754 - '@esbuild/darwin-x64@0.18.20': 755 - resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} 756 - engines: {node: '>=12'} 757 - cpu: [x64] 758 - os: [darwin] 759 - 760 - '@esbuild/darwin-x64@0.19.12': 761 - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} 762 - engines: {node: '>=12'} 763 - cpu: [x64] 764 - os: [darwin] 765 - 766 - '@esbuild/darwin-x64@0.23.1': 767 - resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} 768 - engines: {node: '>=18'} 769 - cpu: [x64] 770 - os: [darwin] 771 - 772 - '@esbuild/darwin-x64@0.24.0': 773 - resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} 774 - engines: {node: '>=18'} 775 - cpu: [x64] 776 - os: [darwin] 777 - 778 - '@esbuild/freebsd-arm64@0.18.20': 779 - resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} 780 - engines: {node: '>=12'} 781 - cpu: [arm64] 782 - os: [freebsd] 783 - 784 - '@esbuild/freebsd-arm64@0.19.12': 785 - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} 786 - engines: {node: '>=12'} 787 - cpu: [arm64] 788 - os: [freebsd] 789 - 790 - '@esbuild/freebsd-arm64@0.23.1': 791 - resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} 792 - engines: {node: '>=18'} 793 - cpu: [arm64] 794 - os: [freebsd] 795 - 796 - '@esbuild/freebsd-arm64@0.24.0': 797 - resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} 798 - engines: {node: '>=18'} 799 - cpu: [arm64] 800 - os: [freebsd] 801 - 802 - '@esbuild/freebsd-x64@0.18.20': 803 - resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} 804 - engines: {node: '>=12'} 805 - cpu: [x64] 806 - os: [freebsd] 807 - 808 - '@esbuild/freebsd-x64@0.19.12': 809 - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} 810 - engines: {node: '>=12'} 811 - cpu: [x64] 812 - os: [freebsd] 813 - 814 - '@esbuild/freebsd-x64@0.23.1': 815 - resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} 816 - engines: {node: '>=18'} 817 - cpu: [x64] 818 - os: [freebsd] 819 - 820 - '@esbuild/freebsd-x64@0.24.0': 821 - resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} 822 - engines: {node: '>=18'} 823 - cpu: [x64] 824 - os: [freebsd] 825 - 826 - '@esbuild/linux-arm64@0.18.20': 827 - resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} 828 - engines: {node: '>=12'} 829 - cpu: [arm64] 830 - os: [linux] 831 - 832 - '@esbuild/linux-arm64@0.19.12': 833 - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} 834 - engines: {node: '>=12'} 835 - cpu: [arm64] 836 - os: [linux] 837 - 838 - '@esbuild/linux-arm64@0.23.1': 839 - resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} 840 - engines: {node: '>=18'} 841 - cpu: [arm64] 842 - os: [linux] 843 - 844 - '@esbuild/linux-arm64@0.24.0': 845 - resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} 846 - engines: {node: '>=18'} 847 - cpu: [arm64] 848 - os: [linux] 849 - 850 - '@esbuild/linux-arm@0.18.20': 851 - resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} 852 - engines: {node: '>=12'} 853 - cpu: [arm] 854 - os: [linux] 855 - 856 - '@esbuild/linux-arm@0.19.12': 857 - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} 858 - engines: {node: '>=12'} 859 - cpu: [arm] 860 - os: [linux] 861 - 862 - '@esbuild/linux-arm@0.23.1': 863 - resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} 864 - engines: {node: '>=18'} 865 - cpu: [arm] 866 - os: [linux] 867 - 868 - '@esbuild/linux-arm@0.24.0': 869 - resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} 870 - engines: {node: '>=18'} 871 - cpu: [arm] 872 - os: [linux] 873 - 874 - '@esbuild/linux-ia32@0.18.20': 875 - resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} 876 - engines: {node: '>=12'} 877 - cpu: [ia32] 878 - os: [linux] 879 - 880 - '@esbuild/linux-ia32@0.19.12': 881 - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} 882 - engines: {node: '>=12'} 883 - cpu: [ia32] 884 - os: [linux] 885 - 886 - '@esbuild/linux-ia32@0.23.1': 887 - resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} 888 - engines: {node: '>=18'} 889 - cpu: [ia32] 890 - os: [linux] 891 - 892 - '@esbuild/linux-ia32@0.24.0': 893 - resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} 894 - engines: {node: '>=18'} 895 - cpu: [ia32] 896 - os: [linux] 897 - 898 - '@esbuild/linux-loong64@0.18.20': 899 - resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} 900 - engines: {node: '>=12'} 901 - cpu: [loong64] 902 - os: [linux] 903 - 904 - '@esbuild/linux-loong64@0.19.12': 905 - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} 906 - engines: {node: '>=12'} 907 - cpu: [loong64] 908 - os: [linux] 909 - 910 - '@esbuild/linux-loong64@0.23.1': 911 - resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} 912 - engines: {node: '>=18'} 913 - cpu: [loong64] 914 - os: [linux] 915 - 916 - '@esbuild/linux-loong64@0.24.0': 917 - resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} 918 - engines: {node: '>=18'} 919 - cpu: [loong64] 920 - os: [linux] 921 - 922 - '@esbuild/linux-mips64el@0.18.20': 923 - resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} 924 - engines: {node: '>=12'} 925 - cpu: [mips64el] 926 - os: [linux] 927 - 928 - '@esbuild/linux-mips64el@0.19.12': 929 - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} 930 - engines: {node: '>=12'} 931 - cpu: [mips64el] 932 - os: [linux] 933 - 934 - '@esbuild/linux-mips64el@0.23.1': 935 - resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} 936 - engines: {node: '>=18'} 937 - cpu: [mips64el] 938 - os: [linux] 939 - 940 - '@esbuild/linux-mips64el@0.24.0': 941 - resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} 942 - engines: {node: '>=18'} 943 - cpu: [mips64el] 944 - os: [linux] 945 - 946 - '@esbuild/linux-ppc64@0.18.20': 947 - resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} 948 - engines: {node: '>=12'} 949 - cpu: [ppc64] 950 - os: [linux] 951 - 952 - '@esbuild/linux-ppc64@0.19.12': 953 - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} 954 - engines: {node: '>=12'} 955 - cpu: [ppc64] 956 - os: [linux] 957 - 958 - '@esbuild/linux-ppc64@0.23.1': 959 - resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} 960 - engines: {node: '>=18'} 961 - cpu: [ppc64] 962 - os: [linux] 963 - 964 - '@esbuild/linux-ppc64@0.24.0': 965 - resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} 966 - engines: {node: '>=18'} 967 - cpu: [ppc64] 968 - os: [linux] 969 - 970 - '@esbuild/linux-riscv64@0.18.20': 971 - resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} 972 - engines: {node: '>=12'} 973 - cpu: [riscv64] 974 - os: [linux] 975 - 976 - '@esbuild/linux-riscv64@0.19.12': 977 - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} 978 - engines: {node: '>=12'} 979 - cpu: [riscv64] 980 - os: [linux] 981 - 982 - '@esbuild/linux-riscv64@0.23.1': 983 - resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} 984 - engines: {node: '>=18'} 985 - cpu: [riscv64] 986 - os: [linux] 987 - 988 - '@esbuild/linux-riscv64@0.24.0': 989 - resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} 990 - engines: {node: '>=18'} 991 - cpu: [riscv64] 992 - os: [linux] 993 - 994 - '@esbuild/linux-s390x@0.18.20': 995 - resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} 996 - engines: {node: '>=12'} 997 - cpu: [s390x] 998 - os: [linux] 999 - 1000 - '@esbuild/linux-s390x@0.19.12': 1001 - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} 1002 - engines: {node: '>=12'} 1003 - cpu: [s390x] 1004 - os: [linux] 1005 - 1006 - '@esbuild/linux-s390x@0.23.1': 1007 - resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} 1008 - engines: {node: '>=18'} 1009 - cpu: [s390x] 1010 - os: [linux] 1011 - 1012 - '@esbuild/linux-s390x@0.24.0': 1013 - resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} 1014 - engines: {node: '>=18'} 1015 - cpu: [s390x] 1016 - os: [linux] 1017 - 1018 - '@esbuild/linux-x64@0.18.20': 1019 - resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} 1020 - engines: {node: '>=12'} 1021 - cpu: [x64] 1022 - os: [linux] 1023 - 1024 - '@esbuild/linux-x64@0.19.12': 1025 - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} 1026 - engines: {node: '>=12'} 1027 - cpu: [x64] 1028 - os: [linux] 1029 - 1030 - '@esbuild/linux-x64@0.23.1': 1031 - resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} 1032 - engines: {node: '>=18'} 1033 - cpu: [x64] 1034 - os: [linux] 1035 - 1036 - '@esbuild/linux-x64@0.24.0': 1037 - resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} 1038 - engines: {node: '>=18'} 1039 - cpu: [x64] 1040 - os: [linux] 1041 - 1042 - '@esbuild/netbsd-x64@0.18.20': 1043 - resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} 1044 - engines: {node: '>=12'} 1045 - cpu: [x64] 1046 - os: [netbsd] 1047 - 1048 - '@esbuild/netbsd-x64@0.19.12': 1049 - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} 1050 - engines: {node: '>=12'} 1051 - cpu: [x64] 1052 - os: [netbsd] 1053 - 1054 - '@esbuild/netbsd-x64@0.23.1': 1055 - resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} 1056 - engines: {node: '>=18'} 1057 - cpu: [x64] 1058 - os: [netbsd] 1059 - 1060 - '@esbuild/netbsd-x64@0.24.0': 1061 - resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} 1062 - engines: {node: '>=18'} 1063 - cpu: [x64] 1064 - os: [netbsd] 1065 - 1066 - '@esbuild/openbsd-arm64@0.23.1': 1067 - resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} 1068 - engines: {node: '>=18'} 1069 - cpu: [arm64] 1070 - os: [openbsd] 1071 - 1072 - '@esbuild/openbsd-arm64@0.24.0': 1073 - resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} 1074 - engines: {node: '>=18'} 1075 - cpu: [arm64] 1076 - os: [openbsd] 1077 - 1078 - '@esbuild/openbsd-x64@0.18.20': 1079 - resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} 1080 - engines: {node: '>=12'} 1081 - cpu: [x64] 1082 - os: [openbsd] 1083 - 1084 - '@esbuild/openbsd-x64@0.19.12': 1085 - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} 1086 - engines: {node: '>=12'} 1087 - cpu: [x64] 1088 - os: [openbsd] 1089 - 1090 - '@esbuild/openbsd-x64@0.23.1': 1091 - resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} 1092 - engines: {node: '>=18'} 1093 - cpu: [x64] 1094 - os: [openbsd] 1095 - 1096 - '@esbuild/openbsd-x64@0.24.0': 1097 - resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} 1098 - engines: {node: '>=18'} 1099 - cpu: [x64] 1100 - os: [openbsd] 1101 - 1102 - '@esbuild/sunos-x64@0.18.20': 1103 - resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} 1104 - engines: {node: '>=12'} 1105 - cpu: [x64] 1106 - os: [sunos] 1107 - 1108 - '@esbuild/sunos-x64@0.19.12': 1109 - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} 1110 - engines: {node: '>=12'} 1111 - cpu: [x64] 1112 - os: [sunos] 1113 - 1114 - '@esbuild/sunos-x64@0.23.1': 1115 - resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} 1116 - engines: {node: '>=18'} 1117 - cpu: [x64] 1118 - os: [sunos] 1119 - 1120 - '@esbuild/sunos-x64@0.24.0': 1121 - resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} 1122 - engines: {node: '>=18'} 1123 - cpu: [x64] 1124 - os: [sunos] 1125 - 1126 - '@esbuild/win32-arm64@0.18.20': 1127 - resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} 1128 - engines: {node: '>=12'} 1129 - cpu: [arm64] 1130 - os: [win32] 1131 - 1132 - '@esbuild/win32-arm64@0.19.12': 1133 - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} 1134 - engines: {node: '>=12'} 1135 - cpu: [arm64] 1136 - os: [win32] 1137 - 1138 - '@esbuild/win32-arm64@0.23.1': 1139 - resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} 1140 - engines: {node: '>=18'} 1141 - cpu: [arm64] 1142 - os: [win32] 1143 - 1144 - '@esbuild/win32-arm64@0.24.0': 1145 - resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} 1146 - engines: {node: '>=18'} 1147 - cpu: [arm64] 1148 - os: [win32] 1149 - 1150 - '@esbuild/win32-ia32@0.18.20': 1151 - resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} 1152 - engines: {node: '>=12'} 1153 - cpu: [ia32] 1154 - os: [win32] 1155 - 1156 - '@esbuild/win32-ia32@0.19.12': 1157 - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} 1158 - engines: {node: '>=12'} 1159 - cpu: [ia32] 1160 - os: [win32] 1161 - 1162 - '@esbuild/win32-ia32@0.23.1': 1163 - resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} 1164 - engines: {node: '>=18'} 1165 - cpu: [ia32] 1166 - os: [win32] 1167 - 1168 - '@esbuild/win32-ia32@0.24.0': 1169 - resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} 1170 - engines: {node: '>=18'} 1171 - cpu: [ia32] 1172 - os: [win32] 1173 - 1174 - '@esbuild/win32-x64@0.18.20': 1175 - resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} 1176 - engines: {node: '>=12'} 1177 - cpu: [x64] 1178 - os: [win32] 1179 - 1180 - '@esbuild/win32-x64@0.19.12': 1181 - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} 1182 - engines: {node: '>=12'} 1183 - cpu: [x64] 1184 - os: [win32] 1185 - 1186 - '@esbuild/win32-x64@0.23.1': 1187 - resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} 1188 - engines: {node: '>=18'} 1189 - cpu: [x64] 1190 - os: [win32] 1191 - 1192 - '@esbuild/win32-x64@0.24.0': 1193 - resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} 1194 - engines: {node: '>=18'} 1195 - cpu: [x64] 1196 - os: [win32] 1197 - 1198 - '@eslint-community/eslint-utils@4.4.1': 1199 - resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} 1200 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1201 - peerDependencies: 1202 - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 1203 - 1204 - '@eslint-community/regexpp@4.12.1': 1205 - resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} 1206 - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 1207 - 1208 - '@eslint/config-array@0.19.0': 1209 - resolution: {integrity: sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==} 1210 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1211 - 1212 - '@eslint/core@0.9.0': 1213 - resolution: {integrity: sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg==} 1214 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1215 - 1216 - '@eslint/eslintrc@3.2.0': 1217 - resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} 1218 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1219 - 1220 - '@eslint/js@9.16.0': 1221 - resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} 1222 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1223 - 1224 - '@eslint/object-schema@2.1.4': 1225 - resolution: {integrity: sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==} 1226 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1227 - 1228 - '@eslint/plugin-kit@0.2.3': 1229 - resolution: {integrity: sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==} 1230 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 1231 - 1232 - '@externdefs/collider@0.1.0': 1233 - resolution: {integrity: sha512-vmFJEKHhftREiuhhK3WIMKk6bGfm7kM9c5HeVElFCbtqajXqCfwY/GR3f1G0qYWCvbtcoBhIZ2O8ia3A2/pjkw==} 1234 - peerDependencies: 1235 - '@badrap/valita': ^0.3.9 1236 - 1237 - '@floating-ui/core@1.6.8': 1238 - resolution: {integrity: sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==} 1239 - 1240 - '@floating-ui/dom@1.6.12': 1241 - resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} 1242 - 1243 - '@floating-ui/react-dom@2.1.2': 1244 - resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} 1245 - peerDependencies: 1246 - react: '>=16.8.0' 1247 - react-dom: '>=16.8.0' 1248 - 1249 - '@floating-ui/utils@0.2.8': 1250 - resolution: {integrity: sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==} 1251 - 1252 - '@hono/node-server@1.13.7': 1253 - resolution: {integrity: sha512-kTfUMsoloVKtRA2fLiGSd9qBddmru9KadNyhJCwgKBxTiNkaAJEwkVN9KV/rS4HtmmNRtUh6P+YpmjRMl0d9vQ==} 1254 - engines: {node: '>=18.14.1'} 1255 - peerDependencies: 1256 - hono: ^4 1257 - 1258 - '@hookform/resolvers@3.9.1': 1259 - resolution: {integrity: sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug==} 1260 - peerDependencies: 1261 - react-hook-form: ^7.0.0 1262 - 1263 - '@humanfs/core@0.19.1': 1264 - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} 1265 - engines: {node: '>=18.18.0'} 1266 - 1267 - '@humanfs/node@0.16.6': 1268 - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} 1269 - engines: {node: '>=18.18.0'} 1270 - 1271 - '@humanwhocodes/module-importer@1.0.1': 1272 - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 1273 - engines: {node: '>=12.22'} 1274 - 1275 - '@humanwhocodes/retry@0.3.1': 1276 - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} 1277 - engines: {node: '>=18.18'} 1278 - 1279 - '@humanwhocodes/retry@0.4.1': 1280 - resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} 1281 - engines: {node: '>=18.18'} 1282 - 1283 - '@ipld/dag-cbor@7.0.3': 1284 - resolution: {integrity: sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA==} 1285 - 1286 - '@isaacs/cliui@8.0.2': 1287 - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} 1288 - engines: {node: '>=12'} 1289 - 1290 - '@jridgewell/gen-mapping@0.3.5': 1291 - resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} 1292 - engines: {node: '>=6.0.0'} 1293 - 1294 - '@jridgewell/resolve-uri@3.1.2': 1295 - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} 1296 - engines: {node: '>=6.0.0'} 1297 - 1298 - '@jridgewell/set-array@1.2.1': 1299 - resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} 1300 - engines: {node: '>=6.0.0'} 1301 - 1302 - '@jridgewell/sourcemap-codec@1.5.0': 1303 - resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} 1304 - 1305 - '@jridgewell/trace-mapping@0.3.25': 1306 - resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} 1307 - 1308 - '@jridgewell/trace-mapping@0.3.9': 1309 - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} 1310 - 1311 - '@libsql/client@0.14.0': 1312 - resolution: {integrity: sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q==} 1313 - 1314 - '@libsql/core@0.14.0': 1315 - resolution: {integrity: sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q==} 1316 - 1317 - '@libsql/darwin-arm64@0.4.7': 1318 - resolution: {integrity: sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg==} 1319 - cpu: [arm64] 1320 - os: [darwin] 1321 - 1322 - '@libsql/darwin-x64@0.4.7': 1323 - resolution: {integrity: sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA==} 1324 - cpu: [x64] 1325 - os: [darwin] 1326 - 1327 - '@libsql/hrana-client@0.7.0': 1328 - resolution: {integrity: sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw==} 1329 - 1330 - '@libsql/isomorphic-fetch@0.3.1': 1331 - resolution: {integrity: sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw==} 1332 - engines: {node: '>=18.0.0'} 1333 - 1334 - '@libsql/isomorphic-ws@0.1.5': 1335 - resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} 1336 - 1337 - '@libsql/linux-arm64-gnu@0.4.7': 1338 - resolution: {integrity: sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA==} 1339 - cpu: [arm64] 1340 - os: [linux] 1341 - 1342 - '@libsql/linux-arm64-musl@0.4.7': 1343 - resolution: {integrity: sha512-6kK9xAArVRlTCpWeqnNMCoXW1pe7WITI378n4NpvU5EJ0Ok3aNTIC2nRPRjhro90QcnmLL1jPcrVwO4WD1U0xw==} 1344 - cpu: [arm64] 1345 - os: [linux] 1346 - 1347 - '@libsql/linux-x64-gnu@0.4.7': 1348 - resolution: {integrity: sha512-CMnNRCmlWQqqzlTw6NeaZXzLWI8bydaXDke63JTUCvu8R+fj/ENsLrVBtPDlxQ0wGsYdXGlrUCH8Qi9gJep0yQ==} 1349 - cpu: [x64] 1350 - os: [linux] 1351 - 1352 - '@libsql/linux-x64-musl@0.4.7': 1353 - resolution: {integrity: sha512-nI6tpS1t6WzGAt1Kx1n1HsvtBbZ+jHn0m7ogNNT6pQHZQj7AFFTIMeDQw/i/Nt5H38np1GVRNsFe99eSIMs9XA==} 1354 - cpu: [x64] 1355 - os: [linux] 1356 - 1357 - '@libsql/win32-x64-msvc@0.4.7': 1358 - resolution: {integrity: sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw==} 1359 - cpu: [x64] 1360 - os: [win32] 1361 - 1362 - '@neon-rs/load@0.0.4': 1363 - resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} 1364 - 1365 - '@noble/curves@1.7.0': 1366 - resolution: {integrity: sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==} 1367 - engines: {node: ^14.21.3 || >=16} 1368 - 1369 - '@noble/hashes@1.6.0': 1370 - resolution: {integrity: sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==} 1371 - engines: {node: ^14.21.3 || >=16} 1372 - 1373 - '@noble/hashes@1.6.1': 1374 - resolution: {integrity: sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==} 1375 - engines: {node: ^14.21.3 || >=16} 1376 - 1377 - '@nodelib/fs.scandir@2.1.5': 1378 - resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 1379 - engines: {node: '>= 8'} 1380 - 1381 - '@nodelib/fs.stat@2.0.5': 1382 - resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 1383 - engines: {node: '>= 8'} 1384 - 1385 - '@nodelib/fs.walk@1.2.8': 1386 - resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 1387 - engines: {node: '>= 8'} 1388 - 1389 - '@opentelemetry/api-logs@0.52.1': 1390 - resolution: {integrity: sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A==} 1391 - engines: {node: '>=14'} 1392 - 1393 - '@opentelemetry/api-logs@0.53.0': 1394 - resolution: {integrity: sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw==} 1395 - engines: {node: '>=14'} 1396 - 1397 - '@opentelemetry/api-logs@0.54.2': 1398 - resolution: {integrity: sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ==} 1399 - engines: {node: '>=14'} 1400 - 1401 - '@opentelemetry/api@1.9.0': 1402 - resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} 1403 - engines: {node: '>=8.0.0'} 1404 - 1405 - '@opentelemetry/context-async-hooks@1.29.0': 1406 - resolution: {integrity: sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q==} 1407 - engines: {node: '>=14'} 1408 - peerDependencies: 1409 - '@opentelemetry/api': '>=1.0.0 <1.10.0' 1410 - 1411 - '@opentelemetry/core@1.26.0': 1412 - resolution: {integrity: sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ==} 1413 - engines: {node: '>=14'} 1414 - peerDependencies: 1415 - '@opentelemetry/api': '>=1.0.0 <1.10.0' 1416 - 1417 - '@opentelemetry/core@1.29.0': 1418 - resolution: {integrity: sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA==} 1419 - engines: {node: '>=14'} 1420 - peerDependencies: 1421 - '@opentelemetry/api': '>=1.0.0 <1.10.0' 1422 - 1423 - '@opentelemetry/instrumentation-amqplib@0.43.0': 1424 - resolution: {integrity: sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A==} 1425 - engines: {node: '>=14'} 1426 - peerDependencies: 1427 - '@opentelemetry/api': ^1.3.0 1428 - 1429 - '@opentelemetry/instrumentation-connect@0.40.0': 1430 - resolution: {integrity: sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q==} 1431 - engines: {node: '>=14'} 1432 - peerDependencies: 1433 - '@opentelemetry/api': ^1.3.0 1434 - 1435 - '@opentelemetry/instrumentation-dataloader@0.12.0': 1436 - resolution: {integrity: sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g==} 1437 - engines: {node: '>=14'} 1438 - peerDependencies: 1439 - '@opentelemetry/api': ^1.3.0 1440 - 1441 - '@opentelemetry/instrumentation-express@0.44.0': 1442 - resolution: {integrity: sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA==} 1443 - engines: {node: '>=14'} 1444 - peerDependencies: 1445 - '@opentelemetry/api': ^1.3.0 1446 - 1447 - '@opentelemetry/instrumentation-fastify@0.41.0': 1448 - resolution: {integrity: sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA==} 1449 - engines: {node: '>=14'} 1450 - peerDependencies: 1451 - '@opentelemetry/api': ^1.3.0 1452 - 1453 - '@opentelemetry/instrumentation-fs@0.16.0': 1454 - resolution: {integrity: sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg==} 1455 - engines: {node: '>=14'} 1456 - peerDependencies: 1457 - '@opentelemetry/api': ^1.3.0 1458 - 1459 - '@opentelemetry/instrumentation-generic-pool@0.39.0': 1460 - resolution: {integrity: sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw==} 1461 - engines: {node: '>=14'} 1462 - peerDependencies: 1463 - '@opentelemetry/api': ^1.3.0 1464 - 1465 - '@opentelemetry/instrumentation-graphql@0.44.0': 1466 - resolution: {integrity: sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg==} 1467 - engines: {node: '>=14'} 1468 - peerDependencies: 1469 - '@opentelemetry/api': ^1.3.0 1470 - 1471 - '@opentelemetry/instrumentation-hapi@0.41.0': 1472 - resolution: {integrity: sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ==} 1473 - engines: {node: '>=14'} 1474 - peerDependencies: 1475 - '@opentelemetry/api': ^1.3.0 1476 - 1477 - '@opentelemetry/instrumentation-http@0.53.0': 1478 - resolution: {integrity: sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ==} 1479 - engines: {node: '>=14'} 1480 - peerDependencies: 1481 - '@opentelemetry/api': ^1.3.0 1482 - 1483 - '@opentelemetry/instrumentation-ioredis@0.43.0': 1484 - resolution: {integrity: sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig==} 1485 - engines: {node: '>=14'} 1486 - peerDependencies: 1487 - '@opentelemetry/api': ^1.3.0 1488 - 1489 - '@opentelemetry/instrumentation-kafkajs@0.4.0': 1490 - resolution: {integrity: sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A==} 1491 - engines: {node: '>=14'} 1492 - peerDependencies: 1493 - '@opentelemetry/api': ^1.3.0 1494 - 1495 - '@opentelemetry/instrumentation-knex@0.41.0': 1496 - resolution: {integrity: sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg==} 1497 - engines: {node: '>=14'} 1498 - peerDependencies: 1499 - '@opentelemetry/api': ^1.3.0 1500 - 1501 - '@opentelemetry/instrumentation-koa@0.43.0': 1502 - resolution: {integrity: sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ==} 1503 - engines: {node: '>=14'} 1504 - peerDependencies: 1505 - '@opentelemetry/api': ^1.3.0 1506 - 1507 - '@opentelemetry/instrumentation-lru-memoizer@0.40.0': 1508 - resolution: {integrity: sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A==} 1509 - engines: {node: '>=14'} 1510 - peerDependencies: 1511 - '@opentelemetry/api': ^1.3.0 1512 - 1513 - '@opentelemetry/instrumentation-mongodb@0.48.0': 1514 - resolution: {integrity: sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw==} 1515 - engines: {node: '>=14'} 1516 - peerDependencies: 1517 - '@opentelemetry/api': ^1.3.0 1518 - 1519 - '@opentelemetry/instrumentation-mongoose@0.42.0': 1520 - resolution: {integrity: sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg==} 1521 - engines: {node: '>=14'} 1522 - peerDependencies: 1523 - '@opentelemetry/api': ^1.3.0 1524 - 1525 - '@opentelemetry/instrumentation-mysql2@0.41.0': 1526 - resolution: {integrity: sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g==} 1527 - engines: {node: '>=14'} 1528 - peerDependencies: 1529 - '@opentelemetry/api': ^1.3.0 1530 - 1531 - '@opentelemetry/instrumentation-mysql@0.41.0': 1532 - resolution: {integrity: sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw==} 1533 - engines: {node: '>=14'} 1534 - peerDependencies: 1535 - '@opentelemetry/api': ^1.3.0 1536 - 1537 - '@opentelemetry/instrumentation-nestjs-core@0.40.0': 1538 - resolution: {integrity: sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg==} 1539 - engines: {node: '>=14'} 1540 - peerDependencies: 1541 - '@opentelemetry/api': ^1.3.0 1542 - 1543 - '@opentelemetry/instrumentation-pg@0.44.0': 1544 - resolution: {integrity: sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ==} 1545 - engines: {node: '>=14'} 1546 - peerDependencies: 1547 - '@opentelemetry/api': ^1.3.0 1548 - 1549 - '@opentelemetry/instrumentation-redis-4@0.42.0': 1550 - resolution: {integrity: sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg==} 1551 - engines: {node: '>=14'} 1552 - peerDependencies: 1553 - '@opentelemetry/api': ^1.3.0 1554 - 1555 - '@opentelemetry/instrumentation-tedious@0.15.0': 1556 - resolution: {integrity: sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw==} 1557 - engines: {node: '>=14'} 1558 - peerDependencies: 1559 - '@opentelemetry/api': ^1.3.0 1560 - 1561 - '@opentelemetry/instrumentation-undici@0.6.0': 1562 - resolution: {integrity: sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ==} 1563 - engines: {node: '>=14'} 1564 - peerDependencies: 1565 - '@opentelemetry/api': ^1.7.0 1566 - 1567 - '@opentelemetry/instrumentation@0.52.1': 1568 - resolution: {integrity: sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw==} 1569 - engines: {node: '>=14'} 1570 - peerDependencies: 1571 - '@opentelemetry/api': ^1.3.0 1572 - 1573 - '@opentelemetry/instrumentation@0.53.0': 1574 - resolution: {integrity: sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A==} 1575 - engines: {node: '>=14'} 1576 - peerDependencies: 1577 - '@opentelemetry/api': ^1.3.0 1578 - 1579 - '@opentelemetry/instrumentation@0.54.2': 1580 - resolution: {integrity: sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg==} 1581 - engines: {node: '>=14'} 1582 - peerDependencies: 1583 - '@opentelemetry/api': ^1.3.0 1584 - 1585 - '@opentelemetry/redis-common@0.36.2': 1586 - resolution: {integrity: sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g==} 1587 - engines: {node: '>=14'} 1588 - 1589 - '@opentelemetry/resources@1.29.0': 1590 - resolution: {integrity: sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ==} 1591 - engines: {node: '>=14'} 1592 - peerDependencies: 1593 - '@opentelemetry/api': '>=1.0.0 <1.10.0' 1594 - 1595 - '@opentelemetry/sdk-trace-base@1.29.0': 1596 - resolution: {integrity: sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ==} 1597 - engines: {node: '>=14'} 1598 - peerDependencies: 1599 - '@opentelemetry/api': '>=1.0.0 <1.10.0' 1600 - 1601 - '@opentelemetry/semantic-conventions@1.27.0': 1602 - resolution: {integrity: sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg==} 1603 - engines: {node: '>=14'} 1604 - 1605 - '@opentelemetry/semantic-conventions@1.28.0': 1606 - resolution: {integrity: sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==} 1607 - engines: {node: '>=14'} 1608 - 1609 - '@opentelemetry/sql-common@0.40.1': 1610 - resolution: {integrity: sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg==} 1611 - engines: {node: '>=14'} 1612 - peerDependencies: 1613 - '@opentelemetry/api': ^1.1.0 1614 - 1615 - '@pkgjs/parseargs@0.11.0': 1616 - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} 1617 - engines: {node: '>=14'} 1618 - 1619 - '@prisma/instrumentation@5.19.1': 1620 - resolution: {integrity: sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w==} 1621 - 1622 - '@radix-ui/primitive@1.1.0': 1623 - resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} 1624 - 1625 - '@radix-ui/primitive@1.1.1': 1626 - resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==} 1627 - 1628 - '@radix-ui/react-arrow@1.1.0': 1629 - resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} 1630 - peerDependencies: 1631 - '@types/react': '*' 1632 - '@types/react-dom': '*' 1633 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1634 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1635 - peerDependenciesMeta: 1636 - '@types/react': 1637 - optional: true 1638 - '@types/react-dom': 1639 - optional: true 1640 - 1641 - '@radix-ui/react-arrow@1.1.1': 1642 - resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==} 1643 - peerDependencies: 1644 - '@types/react': '*' 1645 - '@types/react-dom': '*' 1646 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1647 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1648 - peerDependenciesMeta: 1649 - '@types/react': 1650 - optional: true 1651 - '@types/react-dom': 1652 - optional: true 1653 - 1654 - '@radix-ui/react-avatar@1.1.1': 1655 - resolution: {integrity: sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==} 1656 - peerDependencies: 1657 - '@types/react': '*' 1658 - '@types/react-dom': '*' 1659 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1660 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1661 - peerDependenciesMeta: 1662 - '@types/react': 1663 - optional: true 1664 - '@types/react-dom': 1665 - optional: true 1666 - 1667 - '@radix-ui/react-collapsible@1.1.1': 1668 - resolution: {integrity: sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==} 1669 - peerDependencies: 1670 - '@types/react': '*' 1671 - '@types/react-dom': '*' 1672 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1673 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1674 - peerDependenciesMeta: 1675 - '@types/react': 1676 - optional: true 1677 - '@types/react-dom': 1678 - optional: true 1679 - 1680 - '@radix-ui/react-collection@1.1.1': 1681 - resolution: {integrity: sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA==} 1682 - peerDependencies: 1683 - '@types/react': '*' 1684 - '@types/react-dom': '*' 1685 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1686 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1687 - peerDependenciesMeta: 1688 - '@types/react': 1689 - optional: true 1690 - '@types/react-dom': 1691 - optional: true 1692 - 1693 - '@radix-ui/react-compose-refs@1.1.0': 1694 - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} 1695 - peerDependencies: 1696 - '@types/react': '*' 1697 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1698 - peerDependenciesMeta: 1699 - '@types/react': 1700 - optional: true 1701 - 1702 - '@radix-ui/react-compose-refs@1.1.1': 1703 - resolution: {integrity: sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw==} 1704 - peerDependencies: 1705 - '@types/react': '*' 1706 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1707 - peerDependenciesMeta: 1708 - '@types/react': 1709 - optional: true 1710 - 1711 - '@radix-ui/react-context@1.1.0': 1712 - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} 1713 - peerDependencies: 1714 - '@types/react': '*' 1715 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1716 - peerDependenciesMeta: 1717 - '@types/react': 1718 - optional: true 1719 - 1720 - '@radix-ui/react-context@1.1.1': 1721 - resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==} 1722 - peerDependencies: 1723 - '@types/react': '*' 1724 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1725 - peerDependenciesMeta: 1726 - '@types/react': 1727 - optional: true 1728 - 1729 - '@radix-ui/react-dialog@1.1.4': 1730 - resolution: {integrity: sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA==} 1731 - peerDependencies: 1732 - '@types/react': '*' 1733 - '@types/react-dom': '*' 1734 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1735 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1736 - peerDependenciesMeta: 1737 - '@types/react': 1738 - optional: true 1739 - '@types/react-dom': 1740 - optional: true 1741 - 1742 - '@radix-ui/react-direction@1.1.0': 1743 - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} 1744 - peerDependencies: 1745 - '@types/react': '*' 1746 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1747 - peerDependenciesMeta: 1748 - '@types/react': 1749 - optional: true 1750 - 1751 - '@radix-ui/react-dismissable-layer@1.1.1': 1752 - resolution: {integrity: sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==} 1753 - peerDependencies: 1754 - '@types/react': '*' 1755 - '@types/react-dom': '*' 1756 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1757 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1758 - peerDependenciesMeta: 1759 - '@types/react': 1760 - optional: true 1761 - '@types/react-dom': 1762 - optional: true 1763 - 1764 - '@radix-ui/react-dismissable-layer@1.1.3': 1765 - resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==} 1766 - peerDependencies: 1767 - '@types/react': '*' 1768 - '@types/react-dom': '*' 1769 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1770 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1771 - peerDependenciesMeta: 1772 - '@types/react': 1773 - optional: true 1774 - '@types/react-dom': 1775 - optional: true 1776 - 1777 - '@radix-ui/react-dropdown-menu@2.1.4': 1778 - resolution: {integrity: sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA==} 1779 - peerDependencies: 1780 - '@types/react': '*' 1781 - '@types/react-dom': '*' 1782 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1783 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1784 - peerDependenciesMeta: 1785 - '@types/react': 1786 - optional: true 1787 - '@types/react-dom': 1788 - optional: true 1789 - 1790 - '@radix-ui/react-focus-guards@1.1.1': 1791 - resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==} 1792 - peerDependencies: 1793 - '@types/react': '*' 1794 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1795 - peerDependenciesMeta: 1796 - '@types/react': 1797 - optional: true 1798 - 1799 - '@radix-ui/react-focus-scope@1.1.1': 1800 - resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==} 1801 - peerDependencies: 1802 - '@types/react': '*' 1803 - '@types/react-dom': '*' 1804 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1805 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1806 - peerDependenciesMeta: 1807 - '@types/react': 1808 - optional: true 1809 - '@types/react-dom': 1810 - optional: true 1811 - 1812 - '@radix-ui/react-icons@1.3.2': 1813 - resolution: {integrity: sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g==} 1814 - peerDependencies: 1815 - react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc 1816 - 1817 - '@radix-ui/react-id@1.1.0': 1818 - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} 1819 - peerDependencies: 1820 - '@types/react': '*' 1821 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1822 - peerDependenciesMeta: 1823 - '@types/react': 1824 - optional: true 1825 - 1826 - '@radix-ui/react-label@2.1.0': 1827 - resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} 1828 - peerDependencies: 1829 - '@types/react': '*' 1830 - '@types/react-dom': '*' 1831 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1832 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1833 - peerDependenciesMeta: 1834 - '@types/react': 1835 - optional: true 1836 - '@types/react-dom': 1837 - optional: true 1838 - 1839 - '@radix-ui/react-menu@2.1.4': 1840 - resolution: {integrity: sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A==} 1841 - peerDependencies: 1842 - '@types/react': '*' 1843 - '@types/react-dom': '*' 1844 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1845 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1846 - peerDependenciesMeta: 1847 - '@types/react': 1848 - optional: true 1849 - '@types/react-dom': 1850 - optional: true 1851 - 1852 - '@radix-ui/react-popper@1.2.0': 1853 - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} 1854 - peerDependencies: 1855 - '@types/react': '*' 1856 - '@types/react-dom': '*' 1857 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1858 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1859 - peerDependenciesMeta: 1860 - '@types/react': 1861 - optional: true 1862 - '@types/react-dom': 1863 - optional: true 1864 - 1865 - '@radix-ui/react-popper@1.2.1': 1866 - resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==} 1867 - peerDependencies: 1868 - '@types/react': '*' 1869 - '@types/react-dom': '*' 1870 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1871 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1872 - peerDependenciesMeta: 1873 - '@types/react': 1874 - optional: true 1875 - '@types/react-dom': 1876 - optional: true 1877 - 1878 - '@radix-ui/react-portal@1.1.2': 1879 - resolution: {integrity: sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==} 1880 - peerDependencies: 1881 - '@types/react': '*' 1882 - '@types/react-dom': '*' 1883 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1884 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1885 - peerDependenciesMeta: 1886 - '@types/react': 1887 - optional: true 1888 - '@types/react-dom': 1889 - optional: true 1890 - 1891 - '@radix-ui/react-portal@1.1.3': 1892 - resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==} 1893 - peerDependencies: 1894 - '@types/react': '*' 1895 - '@types/react-dom': '*' 1896 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1897 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1898 - peerDependenciesMeta: 1899 - '@types/react': 1900 - optional: true 1901 - '@types/react-dom': 1902 - optional: true 1903 - 1904 - '@radix-ui/react-presence@1.1.1': 1905 - resolution: {integrity: sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==} 1906 - peerDependencies: 1907 - '@types/react': '*' 1908 - '@types/react-dom': '*' 1909 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1910 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1911 - peerDependenciesMeta: 1912 - '@types/react': 1913 - optional: true 1914 - '@types/react-dom': 1915 - optional: true 1916 - 1917 - '@radix-ui/react-presence@1.1.2': 1918 - resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==} 1919 - peerDependencies: 1920 - '@types/react': '*' 1921 - '@types/react-dom': '*' 1922 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1923 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1924 - peerDependenciesMeta: 1925 - '@types/react': 1926 - optional: true 1927 - '@types/react-dom': 1928 - optional: true 1929 - 1930 - '@radix-ui/react-primitive@2.0.0': 1931 - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} 1932 - peerDependencies: 1933 - '@types/react': '*' 1934 - '@types/react-dom': '*' 1935 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1936 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1937 - peerDependenciesMeta: 1938 - '@types/react': 1939 - optional: true 1940 - '@types/react-dom': 1941 - optional: true 1942 - 1943 - '@radix-ui/react-primitive@2.0.1': 1944 - resolution: {integrity: sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg==} 1945 - peerDependencies: 1946 - '@types/react': '*' 1947 - '@types/react-dom': '*' 1948 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1949 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1950 - peerDependenciesMeta: 1951 - '@types/react': 1952 - optional: true 1953 - '@types/react-dom': 1954 - optional: true 1955 - 1956 - '@radix-ui/react-roving-focus@1.1.1': 1957 - resolution: {integrity: sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw==} 1958 - peerDependencies: 1959 - '@types/react': '*' 1960 - '@types/react-dom': '*' 1961 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1962 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1963 - peerDependenciesMeta: 1964 - '@types/react': 1965 - optional: true 1966 - '@types/react-dom': 1967 - optional: true 1968 - 1969 - '@radix-ui/react-separator@1.1.0': 1970 - resolution: {integrity: sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==} 1971 - peerDependencies: 1972 - '@types/react': '*' 1973 - '@types/react-dom': '*' 1974 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1975 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1976 - peerDependenciesMeta: 1977 - '@types/react': 1978 - optional: true 1979 - '@types/react-dom': 1980 - optional: true 1981 - 1982 - '@radix-ui/react-slot@1.1.0': 1983 - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} 1984 - peerDependencies: 1985 - '@types/react': '*' 1986 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1987 - peerDependenciesMeta: 1988 - '@types/react': 1989 - optional: true 1990 - 1991 - '@radix-ui/react-slot@1.1.1': 1992 - resolution: {integrity: sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g==} 1993 - peerDependencies: 1994 - '@types/react': '*' 1995 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 1996 - peerDependenciesMeta: 1997 - '@types/react': 1998 - optional: true 1999 - 2000 - '@radix-ui/react-tooltip@1.1.4': 2001 - resolution: {integrity: sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==} 2002 - peerDependencies: 2003 - '@types/react': '*' 2004 - '@types/react-dom': '*' 2005 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2006 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2007 - peerDependenciesMeta: 2008 - '@types/react': 2009 - optional: true 2010 - '@types/react-dom': 2011 - optional: true 2012 - 2013 - '@radix-ui/react-use-callback-ref@1.1.0': 2014 - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} 2015 - peerDependencies: 2016 - '@types/react': '*' 2017 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2018 - peerDependenciesMeta: 2019 - '@types/react': 2020 - optional: true 2021 - 2022 - '@radix-ui/react-use-controllable-state@1.1.0': 2023 - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} 2024 - peerDependencies: 2025 - '@types/react': '*' 2026 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2027 - peerDependenciesMeta: 2028 - '@types/react': 2029 - optional: true 2030 - 2031 - '@radix-ui/react-use-escape-keydown@1.1.0': 2032 - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} 2033 - peerDependencies: 2034 - '@types/react': '*' 2035 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2036 - peerDependenciesMeta: 2037 - '@types/react': 2038 - optional: true 2039 - 2040 - '@radix-ui/react-use-layout-effect@1.1.0': 2041 - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} 2042 - peerDependencies: 2043 - '@types/react': '*' 2044 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2045 - peerDependenciesMeta: 2046 - '@types/react': 2047 - optional: true 2048 - 2049 - '@radix-ui/react-use-rect@1.1.0': 2050 - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} 2051 - peerDependencies: 2052 - '@types/react': '*' 2053 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2054 - peerDependenciesMeta: 2055 - '@types/react': 2056 - optional: true 2057 - 2058 - '@radix-ui/react-use-size@1.1.0': 2059 - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} 2060 - peerDependencies: 2061 - '@types/react': '*' 2062 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2063 - peerDependenciesMeta: 2064 - '@types/react': 2065 - optional: true 2066 - 2067 - '@radix-ui/react-visually-hidden@1.1.0': 2068 - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} 2069 - peerDependencies: 2070 - '@types/react': '*' 2071 - '@types/react-dom': '*' 2072 - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2073 - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc 2074 - peerDependenciesMeta: 2075 - '@types/react': 2076 - optional: true 2077 - '@types/react-dom': 2078 - optional: true 2079 - 2080 - '@radix-ui/rect@1.1.0': 2081 - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} 2082 - 2083 - '@rollup/rollup-android-arm-eabi@4.28.0': 2084 - resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==} 2085 - cpu: [arm] 2086 - os: [android] 2087 - 2088 - '@rollup/rollup-android-arm64@4.28.0': 2089 - resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==} 2090 - cpu: [arm64] 2091 - os: [android] 2092 - 2093 - '@rollup/rollup-darwin-arm64@4.28.0': 2094 - resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==} 2095 - cpu: [arm64] 2096 - os: [darwin] 2097 - 2098 - '@rollup/rollup-darwin-x64@4.28.0': 2099 - resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==} 2100 - cpu: [x64] 2101 - os: [darwin] 2102 - 2103 - '@rollup/rollup-freebsd-arm64@4.28.0': 2104 - resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==} 2105 - cpu: [arm64] 2106 - os: [freebsd] 2107 - 2108 - '@rollup/rollup-freebsd-x64@4.28.0': 2109 - resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==} 2110 - cpu: [x64] 2111 - os: [freebsd] 2112 - 2113 - '@rollup/rollup-linux-arm-gnueabihf@4.28.0': 2114 - resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==} 2115 - cpu: [arm] 2116 - os: [linux] 2117 - 2118 - '@rollup/rollup-linux-arm-musleabihf@4.28.0': 2119 - resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==} 2120 - cpu: [arm] 2121 - os: [linux] 2122 - 2123 - '@rollup/rollup-linux-arm64-gnu@4.28.0': 2124 - resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==} 2125 - cpu: [arm64] 2126 - os: [linux] 2127 - 2128 - '@rollup/rollup-linux-arm64-musl@4.28.0': 2129 - resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==} 2130 - cpu: [arm64] 2131 - os: [linux] 2132 - 2133 - '@rollup/rollup-linux-powerpc64le-gnu@4.28.0': 2134 - resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==} 2135 - cpu: [ppc64] 2136 - os: [linux] 2137 - 2138 - '@rollup/rollup-linux-riscv64-gnu@4.28.0': 2139 - resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==} 2140 - cpu: [riscv64] 2141 - os: [linux] 2142 - 2143 - '@rollup/rollup-linux-s390x-gnu@4.28.0': 2144 - resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==} 2145 - cpu: [s390x] 2146 - os: [linux] 2147 - 2148 - '@rollup/rollup-linux-x64-gnu@4.28.0': 2149 - resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==} 2150 - cpu: [x64] 2151 - os: [linux] 2152 - 2153 - '@rollup/rollup-linux-x64-musl@4.28.0': 2154 - resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==} 2155 - cpu: [x64] 2156 - os: [linux] 2157 - 2158 - '@rollup/rollup-win32-arm64-msvc@4.28.0': 2159 - resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==} 2160 - cpu: [arm64] 2161 - os: [win32] 2162 - 2163 - '@rollup/rollup-win32-ia32-msvc@4.28.0': 2164 - resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==} 2165 - cpu: [ia32] 2166 - os: [win32] 2167 - 2168 - '@rollup/rollup-win32-x64-msvc@4.28.0': 2169 - resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==} 2170 - cpu: [x64] 2171 - os: [win32] 2172 - 2173 - '@sentry/core@8.42.0': 2174 - resolution: {integrity: sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw==} 2175 - engines: {node: '>=14.18'} 2176 - 2177 - '@sentry/node@8.42.0': 2178 - resolution: {integrity: sha512-MsNrmAIwDaxf1jTX1FsgZ+3mUq6G6IuU6FAqyp7TDnvUTsbWUtr0OM6EvVUz0zCImybIh9dcTQ+6KTmUyA7URw==} 2179 - engines: {node: '>=14.18'} 2180 - 2181 - '@sentry/opentelemetry@8.42.0': 2182 - resolution: {integrity: sha512-QPb9kMFgl35TIwIz0u+BFTbPG461CofMiloidJ44GFZ9cB33T5cB0oIN7ut/5tsH/AvqUmucydsV/Nj3HNQx9g==} 2183 - engines: {node: '>=14.18'} 2184 - peerDependencies: 2185 - '@opentelemetry/api': ^1.9.0 2186 - '@opentelemetry/core': ^1.25.1 2187 - '@opentelemetry/instrumentation': ^0.54.0 2188 - '@opentelemetry/sdk-trace-base': ^1.26.0 2189 - '@opentelemetry/semantic-conventions': ^1.27.0 2190 - 2191 - '@skyware/jetstream@0.2.1': 2192 - resolution: {integrity: sha512-qmQkBnMYG3+XBTLUDUKTWMS0QpwCFSZh66fvQRn+xEqUQ2CXB2ELo4El0tgVvdT4+glk4nfzVG45L6Op9VURow==} 2193 - 2194 - '@swc/core-darwin-arm64@1.9.3': 2195 - resolution: {integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==} 2196 - engines: {node: '>=10'} 2197 - cpu: [arm64] 2198 - os: [darwin] 2199 - 2200 - '@swc/core-darwin-x64@1.9.3': 2201 - resolution: {integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==} 2202 - engines: {node: '>=10'} 2203 - cpu: [x64] 2204 - os: [darwin] 2205 - 2206 - '@swc/core-linux-arm-gnueabihf@1.9.3': 2207 - resolution: {integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==} 2208 - engines: {node: '>=10'} 2209 - cpu: [arm] 2210 - os: [linux] 2211 - 2212 - '@swc/core-linux-arm64-gnu@1.9.3': 2213 - resolution: {integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==} 2214 - engines: {node: '>=10'} 2215 - cpu: [arm64] 2216 - os: [linux] 2217 - 2218 - '@swc/core-linux-arm64-musl@1.9.3': 2219 - resolution: {integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==} 2220 - engines: {node: '>=10'} 2221 - cpu: [arm64] 2222 - os: [linux] 2223 - 2224 - '@swc/core-linux-x64-gnu@1.9.3': 2225 - resolution: {integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==} 2226 - engines: {node: '>=10'} 2227 - cpu: [x64] 2228 - os: [linux] 2229 - 2230 - '@swc/core-linux-x64-musl@1.9.3': 2231 - resolution: {integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==} 2232 - engines: {node: '>=10'} 2233 - cpu: [x64] 2234 - os: [linux] 2235 - 2236 - '@swc/core-win32-arm64-msvc@1.9.3': 2237 - resolution: {integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==} 2238 - engines: {node: '>=10'} 2239 - cpu: [arm64] 2240 - os: [win32] 2241 - 2242 - '@swc/core-win32-ia32-msvc@1.9.3': 2243 - resolution: {integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==} 2244 - engines: {node: '>=10'} 2245 - cpu: [ia32] 2246 - os: [win32] 2247 - 2248 - '@swc/core-win32-x64-msvc@1.9.3': 2249 - resolution: {integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==} 2250 - engines: {node: '>=10'} 2251 - cpu: [x64] 2252 - os: [win32] 2253 - 2254 - '@swc/core@1.9.3': 2255 - resolution: {integrity: sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==} 2256 - engines: {node: '>=10'} 2257 - peerDependencies: 2258 - '@swc/helpers': '*' 2259 - peerDependenciesMeta: 2260 - '@swc/helpers': 2261 - optional: true 2262 - 2263 - '@swc/counter@0.1.3': 2264 - resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} 2265 - 2266 - '@swc/types@0.1.17': 2267 - resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==} 2268 - 2269 - '@tanstack/eslint-plugin-query@5.62.1': 2270 - resolution: {integrity: sha512-1886D5U+re1TW0wSH4/kUGG36yIoW5Wkz4twVEzlk3ZWmjF3XkRSWgB+Sc7n+Lyzt8usNV8ZqkZE6DA7IC47fQ==} 2271 - peerDependencies: 2272 - eslint: ^8.57.0 || ^9.0.0 2273 - 2274 - '@tanstack/history@1.90.0': 2275 - resolution: {integrity: sha512-riNhDGm+fAwxgZRJ0J/36IZis1UDHsDCNIxfEodbw6BgTWJr0ah+G20V4HT91uBXiCqYFvX3somlfTLhS5yHDA==} 2276 - engines: {node: '>=12'} 2277 - 2278 - '@tanstack/query-core@5.62.2': 2279 - resolution: {integrity: sha512-LcwVcC5qpsDpHcqlXUUL5o9SaOBwhNkGeV+B06s0GBoyBr8FqXPuXT29XzYXR36lchhnerp6XO+CWc84/vh7Zg==} 2280 - 2281 - '@tanstack/query-devtools@5.61.4': 2282 - resolution: {integrity: sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ==} 2283 - 2284 - '@tanstack/react-query-devtools@5.62.2': 2285 - resolution: {integrity: sha512-s4+88OZ6ygD4ziNfUgh9y1XxsGqpscI77c8EaLP7KwEfa5WqnlB9MT/uslFkFq3vwb8JhMjB7Osv2MYrSMry6w==} 2286 - peerDependencies: 2287 - '@tanstack/react-query': ^5.62.2 2288 - react: ^18 || ^19 2289 - 2290 - '@tanstack/react-query@5.62.2': 2291 - resolution: {integrity: sha512-fkTpKKfwTJtVPKVR+ag7YqFgG/7TRVVPzduPAUF9zRCiiA8Wu305u+KJl8rCrh98Qce77vzIakvtUyzWLtaPGA==} 2292 - peerDependencies: 2293 - react: ^18 || ^19 2294 - 2295 - '@tanstack/react-router@1.91.2': 2296 - resolution: {integrity: sha512-L93/fXLJ3PTM0QXzPhUOCmm3zflCoO0KKiQptkPwh7S9GVj9OsNWhah+IC7ou2djt9cQ3LpnCyEWklkynXMhXg==} 2297 - engines: {node: '>=12'} 2298 - peerDependencies: 2299 - '@tanstack/router-generator': ^1.87.7 2300 - react: '>=18' 2301 - react-dom: '>=18' 2302 - peerDependenciesMeta: 2303 - '@tanstack/router-generator': 2304 - optional: true 2305 - 2306 - '@tanstack/react-store@0.6.1': 2307 - resolution: {integrity: sha512-6gOopOpPp1cAXkEyTEv6tMbAywwFunvIdCKN/SpEiButUayjXU+Q5Sp5Y3hREN3VMR4OA5+RI5SPhhJoqP9e4w==} 2308 - peerDependencies: 2309 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 2310 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 2311 - 2312 - '@tanstack/router-devtools@1.85.5': 2313 - resolution: {integrity: sha512-C5A0TP2dFSu3o4Bc1jHzX6ZRC4FC3BmjPJbUx3wJJduPaW72FwTqbGfeT79oyk8mOC69bvLTLydRGfMHQZbIRQ==} 2314 - engines: {node: '>=12'} 2315 - peerDependencies: 2316 - '@tanstack/react-router': ^1.85.5 2317 - react: '>=18' 2318 - react-dom: '>=18' 2319 - 2320 - '@tanstack/router-generator@1.85.3': 2321 - resolution: {integrity: sha512-ka3hO1EPgV4h2hhECUHi4PGyCCUoo70Masb1/idyL7zzkDX/OPZnRd7JxxyneuRGKJ+GI//YWevqjAemyYeg1A==} 2322 - engines: {node: '>=12'} 2323 - 2324 - '@tanstack/router-plugin@1.85.3': 2325 - resolution: {integrity: sha512-se75j7NZ+I44dcbi6CayvWhfp0r/3pfqgHNYgEQ5BSSPTtXYDaZXxFm5eU6oNxej8IqkzEZS5CMSkq9iHRvaUA==} 2326 - engines: {node: '>=12'} 2327 - peerDependencies: 2328 - '@rsbuild/core': '>=1.0.2' 2329 - vite: '>=5.0.0' 2330 - webpack: '>=5.92.0' 2331 - peerDependenciesMeta: 2332 - '@rsbuild/core': 2333 - optional: true 2334 - vite: 2335 - optional: true 2336 - webpack: 2337 - optional: true 2338 - 2339 - '@tanstack/store@0.6.0': 2340 - resolution: {integrity: sha512-+m2OBglsjXcLmmKOX6/9v8BDOCtyxhMmZLsRUDswOOSdIIR9mvv6i0XNKsmTh3AlYU8c1mRcodC8/Vyf+69VlQ==} 2341 - 2342 - '@tanstack/virtual-file-routes@1.81.9': 2343 - resolution: {integrity: sha512-jV5mWJrsh3QXHpb/by6udSqwva0qK50uYHpIXvKsLaxnlbjbLfflfPjFyRWXbMtZsnzCjSUqp5pm5/p+Wpaerg==} 2344 - engines: {node: '>=12'} 2345 - 2346 - '@trysound/sax@0.2.0': 2347 - resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} 2348 - engines: {node: '>=10.13.0'} 2349 - 2350 - '@tsconfig/node10@1.0.11': 2351 - resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} 2352 - 2353 - '@tsconfig/node12@1.0.11': 2354 - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} 2355 - 2356 - '@tsconfig/node14@1.0.3': 2357 - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} 2358 - 2359 - '@tsconfig/node16@1.0.4': 2360 - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} 2361 - 2362 - '@types/babel__core@7.20.5': 2363 - resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} 2364 - 2365 - '@types/babel__generator@7.6.8': 2366 - resolution: {integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==} 2367 - 2368 - '@types/babel__template@7.4.4': 2369 - resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} 2370 - 2371 - '@types/babel__traverse@7.20.6': 2372 - resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} 2373 - 2374 - '@types/connect@3.4.36': 2375 - resolution: {integrity: sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w==} 2376 - 2377 - '@types/estree@1.0.6': 2378 - resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} 2379 - 2380 - '@types/json-schema@7.0.15': 2381 - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} 2382 - 2383 - '@types/mysql@2.15.26': 2384 - resolution: {integrity: sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ==} 2385 - 2386 - '@types/node@22.10.1': 2387 - resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} 2388 - 2389 - '@types/pg-pool@2.0.6': 2390 - resolution: {integrity: sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ==} 2391 - 2392 - '@types/pg@8.6.1': 2393 - resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==} 2394 - 2395 - '@types/react-dom@19.0.1': 2396 - resolution: {integrity: sha512-hljHij7MpWPKF6u5vojuyfV0YA4YURsQG7KT6SzV0Zs2BXAtgdTxG6A229Ub/xiWV4w/7JL8fi6aAyjshH4meA==} 2397 - 2398 - '@types/react@19.0.1': 2399 - resolution: {integrity: sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ==} 2400 - 2401 - '@types/shimmer@1.2.0': 2402 - resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} 2403 - 2404 - '@types/tedious@4.0.14': 2405 - resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} 2406 - 2407 - '@types/ws@8.5.13': 2408 - resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==} 2409 - 2410 - '@typescript-eslint/eslint-plugin@8.17.0': 2411 - resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} 2412 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2413 - peerDependencies: 2414 - '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 2415 - eslint: ^8.57.0 || ^9.0.0 2416 - typescript: '*' 2417 - peerDependenciesMeta: 2418 - typescript: 2419 - optional: true 2420 - 2421 - '@typescript-eslint/parser@8.17.0': 2422 - resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} 2423 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2424 - peerDependencies: 2425 - eslint: ^8.57.0 || ^9.0.0 2426 - typescript: '*' 2427 - peerDependenciesMeta: 2428 - typescript: 2429 - optional: true 2430 - 2431 - '@typescript-eslint/scope-manager@8.17.0': 2432 - resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} 2433 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2434 - 2435 - '@typescript-eslint/type-utils@8.17.0': 2436 - resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} 2437 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2438 - peerDependencies: 2439 - eslint: ^8.57.0 || ^9.0.0 2440 - typescript: '*' 2441 - peerDependenciesMeta: 2442 - typescript: 2443 - optional: true 2444 - 2445 - '@typescript-eslint/types@8.17.0': 2446 - resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} 2447 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2448 - 2449 - '@typescript-eslint/typescript-estree@8.17.0': 2450 - resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} 2451 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2452 - peerDependencies: 2453 - typescript: '*' 2454 - peerDependenciesMeta: 2455 - typescript: 2456 - optional: true 2457 - 2458 - '@typescript-eslint/utils@8.17.0': 2459 - resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} 2460 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2461 - peerDependencies: 2462 - eslint: ^8.57.0 || ^9.0.0 2463 - typescript: '*' 2464 - peerDependenciesMeta: 2465 - typescript: 2466 - optional: true 2467 - 2468 - '@typescript-eslint/visitor-keys@8.17.0': 2469 - resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} 2470 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2471 - 2472 - '@vitejs/plugin-react-swc@3.7.2': 2473 - resolution: {integrity: sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew==} 2474 - peerDependencies: 2475 - vite: ^4 || ^5 || ^6 2476 - 2477 - abort-controller@3.0.0: 2478 - resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 2479 - engines: {node: '>=6.5'} 2480 - 2481 - acorn-import-attributes@1.9.5: 2482 - resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} 2483 - peerDependencies: 2484 - acorn: ^8 2485 - 2486 - acorn-jsx@5.3.2: 2487 - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 2488 - peerDependencies: 2489 - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 2490 - 2491 - acorn-walk@8.3.4: 2492 - resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} 2493 - engines: {node: '>=0.4.0'} 2494 - 2495 - acorn@8.14.0: 2496 - resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} 2497 - engines: {node: '>=0.4.0'} 2498 - hasBin: true 2499 - 2500 - ajv@6.12.6: 2501 - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 2502 - 2503 - ansi-regex@5.0.1: 2504 - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 2505 - engines: {node: '>=8'} 2506 - 2507 - ansi-regex@6.1.0: 2508 - resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} 2509 - engines: {node: '>=12'} 2510 - 2511 - ansi-styles@4.3.0: 2512 - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 2513 - engines: {node: '>=8'} 2514 - 2515 - ansi-styles@6.2.1: 2516 - resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} 2517 - engines: {node: '>=12'} 2518 - 2519 - any-promise@1.3.0: 2520 - resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 2521 - 2522 - anymatch@3.1.3: 2523 - resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 2524 - engines: {node: '>= 8'} 2525 - 2526 - arg@4.1.3: 2527 - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} 2528 - 2529 - arg@5.0.2: 2530 - resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 2531 - 2532 - argparse@2.0.1: 2533 - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 2534 - 2535 - aria-hidden@1.2.4: 2536 - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} 2537 - engines: {node: '>=10'} 2538 - 2539 - asynckit@0.4.0: 2540 - resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 2541 - 2542 - atomic-sleep@1.0.0: 2543 - resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} 2544 - engines: {node: '>=8.0.0'} 2545 - 2546 - autoprefixer@10.4.20: 2547 - resolution: {integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==} 2548 - engines: {node: ^10 || ^12 || >=14} 2549 - hasBin: true 2550 - peerDependencies: 2551 - postcss: ^8.1.0 2552 - 2553 - await-lock@2.2.2: 2554 - resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} 2555 - 2556 - axios@1.7.9: 2557 - resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} 2558 - 2559 - babel-dead-code-elimination@1.0.6: 2560 - resolution: {integrity: sha512-JxFi9qyRJpN0LjEbbjbN8g0ux71Qppn9R8Qe3k6QzHg2CaKsbUQtbn307LQGiDLGjV6JCtEFqfxzVig9MyDCHQ==} 2561 - 2562 - balanced-match@1.0.2: 2563 - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 2564 - 2565 - base64-js@1.5.1: 2566 - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} 2567 - 2568 - binary-extensions@2.3.0: 2569 - resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} 2570 - engines: {node: '>=8'} 2571 - 2572 - boolbase@1.0.0: 2573 - resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} 2574 - 2575 - brace-expansion@1.1.11: 2576 - resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 2577 - 2578 - brace-expansion@2.0.1: 2579 - resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} 2580 - 2581 - braces@3.0.3: 2582 - resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} 2583 - engines: {node: '>=8'} 2584 - 2585 - browserslist@4.24.2: 2586 - resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} 2587 - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 2588 - hasBin: true 2589 - 2590 - buffer-from@1.1.2: 2591 - resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 2592 - 2593 - buffer@6.0.3: 2594 - resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} 2595 - 2596 - bufferutil@4.0.8: 2597 - resolution: {integrity: sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw==} 2598 - engines: {node: '>=6.14.2'} 2599 - 2600 - bundle-require@5.0.0: 2601 - resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} 2602 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 2603 - peerDependencies: 2604 - esbuild: '>=0.18' 2605 - 2606 - cac@6.7.14: 2607 - resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} 2608 - engines: {node: '>=8'} 2609 - 2610 - callsites@3.1.0: 2611 - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 2612 - engines: {node: '>=6'} 2613 - 2614 - camelcase-css@2.0.1: 2615 - resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 2616 - engines: {node: '>= 6'} 2617 - 2618 - caniuse-api@3.0.0: 2619 - resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} 2620 - 2621 - caniuse-lite@1.0.30001686: 2622 - resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==} 2623 - 2624 - cbor-extract@2.2.0: 2625 - resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} 2626 - hasBin: true 2627 - 2628 - cbor-x@1.6.0: 2629 - resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} 2630 - 2631 - cborg@1.10.2: 2632 - resolution: {integrity: sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==} 2633 - hasBin: true 2634 - 2635 - chalk@4.1.2: 2636 - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 2637 - engines: {node: '>=10'} 2638 - 2639 - chokidar@3.6.0: 2640 - resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} 2641 - engines: {node: '>= 8.10.0'} 2642 - 2643 - chokidar@4.0.1: 2644 - resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==} 2645 - engines: {node: '>= 14.16.0'} 2646 - 2647 - cjs-module-lexer@1.4.1: 2648 - resolution: {integrity: sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==} 2649 - 2650 - class-variance-authority@0.7.1: 2651 - resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} 2652 - 2653 - clsx@2.1.1: 2654 - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} 2655 - engines: {node: '>=6'} 2656 - 2657 - color-convert@2.0.1: 2658 - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 2659 - engines: {node: '>=7.0.0'} 2660 - 2661 - color-name@1.1.4: 2662 - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 2663 - 2664 - colord@2.9.3: 2665 - resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==} 2666 - 2667 - colorette@2.0.20: 2668 - resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} 2669 - 2670 - combined-stream@1.0.8: 2671 - resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 2672 - engines: {node: '>= 0.8'} 2673 - 2674 - commander@4.1.1: 2675 - resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 2676 - engines: {node: '>= 6'} 2677 - 2678 - commander@7.2.0: 2679 - resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} 2680 - engines: {node: '>= 10'} 2681 - 2682 - concat-map@0.0.1: 2683 - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 2684 - 2685 - consola@3.2.3: 2686 - resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} 2687 - engines: {node: ^14.18.0 || >=16.10.0} 2688 - 2689 - convert-source-map@2.0.0: 2690 - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 2691 - 2692 - create-require@1.1.1: 2693 - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} 2694 - 2695 - cross-spawn@7.0.6: 2696 - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} 2697 - engines: {node: '>= 8'} 2698 - 2699 - css-declaration-sorter@7.2.0: 2700 - resolution: {integrity: sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==} 2701 - engines: {node: ^14 || ^16 || >=18} 2702 - peerDependencies: 2703 - postcss: ^8.0.9 2704 - 2705 - css-select@5.1.0: 2706 - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} 2707 - 2708 - css-tree@2.2.1: 2709 - resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} 2710 - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 2711 - 2712 - css-tree@2.3.1: 2713 - resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 2714 - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 2715 - 2716 - css-what@6.1.0: 2717 - resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} 2718 - engines: {node: '>= 6'} 2719 - 2720 - cssesc@3.0.0: 2721 - resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 2722 - engines: {node: '>=4'} 2723 - hasBin: true 2724 - 2725 - cssnano-preset-default@7.0.6: 2726 - resolution: {integrity: sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ==} 2727 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 2728 - peerDependencies: 2729 - postcss: ^8.4.31 2730 - 2731 - cssnano-utils@5.0.0: 2732 - resolution: {integrity: sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ==} 2733 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 2734 - peerDependencies: 2735 - postcss: ^8.4.31 2736 - 2737 - cssnano@7.0.6: 2738 - resolution: {integrity: sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw==} 2739 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 2740 - peerDependencies: 2741 - postcss: ^8.4.31 2742 - 2743 - csso@5.0.5: 2744 - resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} 2745 - engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} 2746 - 2747 - csstype@3.1.3: 2748 - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} 2749 - 2750 - data-uri-to-buffer@4.0.1: 2751 - resolution: {integrity: sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==} 2752 - engines: {node: '>= 12'} 2753 - 2754 - dateformat@4.6.3: 2755 - resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} 2756 - 2757 - debug@4.3.7: 2758 - resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} 2759 - engines: {node: '>=6.0'} 2760 - peerDependencies: 2761 - supports-color: '*' 2762 - peerDependenciesMeta: 2763 - supports-color: 2764 - optional: true 2765 - 2766 - deep-is@0.1.4: 2767 - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 2768 - 2769 - delayed-stream@1.0.0: 2770 - resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 2771 - engines: {node: '>=0.4.0'} 2772 - 2773 - detect-libc@2.0.2: 2774 - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} 2775 - engines: {node: '>=8'} 2776 - 2777 - detect-node-es@1.1.0: 2778 - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} 2779 - 2780 - didyoumean@1.2.2: 2781 - resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 2782 - 2783 - diff@4.0.2: 2784 - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} 2785 - engines: {node: '>=0.3.1'} 2786 - 2787 - dlv@1.1.3: 2788 - resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 2789 - 2790 - dom-serializer@2.0.0: 2791 - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} 2792 - 2793 - domelementtype@2.3.0: 2794 - resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} 2795 - 2796 - domhandler@5.0.3: 2797 - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} 2798 - engines: {node: '>= 4'} 2799 - 2800 - domutils@3.1.0: 2801 - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} 2802 - 2803 - drizzle-kit@0.29.0: 2804 - resolution: {integrity: sha512-WjH0eC7/WKl8hucZPl/H5Df6WbUs1KJdM/vfX6bCjn1lOePrbeeroc18dzAVXdZpvgYx0ywJcFOypoC5MfYAYg==} 2805 - hasBin: true 2806 - 2807 - drizzle-orm@0.37.0: 2808 - resolution: {integrity: sha512-AsCNACQ/T2CyZUkrBRUqFT2ibHJ9ZHz3+lzYJFFn3hnj7ylIeItMz5kacRG89uSE74nXYShqehr6u+6ks4JR1A==} 2809 - peerDependencies: 2810 - '@aws-sdk/client-rds-data': '>=3' 2811 - '@cloudflare/workers-types': '>=4' 2812 - '@electric-sql/pglite': '>=0.2.0' 2813 - '@libsql/client': '>=0.10.0' 2814 - '@libsql/client-wasm': '>=0.10.0' 2815 - '@neondatabase/serverless': '>=0.10.0' 2816 - '@op-engineering/op-sqlite': '>=2' 2817 - '@opentelemetry/api': ^1.4.1 2818 - '@planetscale/database': '>=1' 2819 - '@prisma/client': '*' 2820 - '@tidbcloud/serverless': '*' 2821 - '@types/better-sqlite3': '*' 2822 - '@types/pg': '*' 2823 - '@types/react': '>=18' 2824 - '@types/sql.js': '*' 2825 - '@vercel/postgres': '>=0.8.0' 2826 - '@xata.io/client': '*' 2827 - better-sqlite3: '>=7' 2828 - bun-types: '*' 2829 - expo-sqlite: '>=14.0.0' 2830 - knex: '*' 2831 - kysely: '*' 2832 - mysql2: '>=2' 2833 - pg: '>=8' 2834 - postgres: '>=3' 2835 - prisma: '*' 2836 - react: '>=18' 2837 - sql.js: '>=1' 2838 - sqlite3: '>=5' 2839 - peerDependenciesMeta: 2840 - '@aws-sdk/client-rds-data': 2841 - optional: true 2842 - '@cloudflare/workers-types': 2843 - optional: true 2844 - '@electric-sql/pglite': 2845 - optional: true 2846 - '@libsql/client': 2847 - optional: true 2848 - '@libsql/client-wasm': 2849 - optional: true 2850 - '@neondatabase/serverless': 2851 - optional: true 2852 - '@op-engineering/op-sqlite': 2853 - optional: true 2854 - '@opentelemetry/api': 2855 - optional: true 2856 - '@planetscale/database': 2857 - optional: true 2858 - '@prisma/client': 2859 - optional: true 2860 - '@tidbcloud/serverless': 2861 - optional: true 2862 - '@types/better-sqlite3': 2863 - optional: true 2864 - '@types/pg': 2865 - optional: true 2866 - '@types/react': 2867 - optional: true 2868 - '@types/sql.js': 2869 - optional: true 2870 - '@vercel/postgres': 2871 - optional: true 2872 - '@xata.io/client': 2873 - optional: true 2874 - better-sqlite3: 2875 - optional: true 2876 - bun-types: 2877 - optional: true 2878 - expo-sqlite: 2879 - optional: true 2880 - knex: 2881 - optional: true 2882 - kysely: 2883 - optional: true 2884 - mysql2: 2885 - optional: true 2886 - pg: 2887 - optional: true 2888 - postgres: 2889 - optional: true 2890 - prisma: 2891 - optional: true 2892 - react: 2893 - optional: true 2894 - sql.js: 2895 - optional: true 2896 - sqlite3: 2897 - optional: true 2898 - 2899 - eastasianwidth@0.2.0: 2900 - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} 2901 - 2902 - electron-to-chromium@1.5.68: 2903 - resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==} 2904 - 2905 - emoji-regex@8.0.0: 2906 - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 2907 - 2908 - emoji-regex@9.2.2: 2909 - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 2910 - 2911 - end-of-stream@1.4.4: 2912 - resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} 2913 - 2914 - entities@4.5.0: 2915 - resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} 2916 - engines: {node: '>=0.12'} 2917 - 2918 - esbuild-register@3.6.0: 2919 - resolution: {integrity: sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==} 2920 - peerDependencies: 2921 - esbuild: '>=0.12 <1' 2922 - 2923 - esbuild@0.18.20: 2924 - resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} 2925 - engines: {node: '>=12'} 2926 - hasBin: true 2927 - 2928 - esbuild@0.19.12: 2929 - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} 2930 - engines: {node: '>=12'} 2931 - hasBin: true 2932 - 2933 - esbuild@0.23.1: 2934 - resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} 2935 - engines: {node: '>=18'} 2936 - hasBin: true 2937 - 2938 - esbuild@0.24.0: 2939 - resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} 2940 - engines: {node: '>=18'} 2941 - hasBin: true 2942 - 2943 - escalade@3.2.0: 2944 - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} 2945 - engines: {node: '>=6'} 2946 - 2947 - escape-string-regexp@4.0.0: 2948 - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 2949 - engines: {node: '>=10'} 2950 - 2951 - eslint-plugin-react-hooks@5.0.0: 2952 - resolution: {integrity: sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==} 2953 - engines: {node: '>=10'} 2954 - peerDependencies: 2955 - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 2956 - 2957 - eslint-plugin-react-refresh@0.4.16: 2958 - resolution: {integrity: sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ==} 2959 - peerDependencies: 2960 - eslint: '>=8.40' 2961 - 2962 - eslint-scope@8.2.0: 2963 - resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} 2964 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2965 - 2966 - eslint-visitor-keys@3.4.3: 2967 - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 2968 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 2969 - 2970 - eslint-visitor-keys@4.2.0: 2971 - resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} 2972 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2973 - 2974 - eslint@9.16.0: 2975 - resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} 2976 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2977 - hasBin: true 2978 - peerDependencies: 2979 - jiti: '*' 2980 - peerDependenciesMeta: 2981 - jiti: 2982 - optional: true 2983 - 2984 - espree@10.3.0: 2985 - resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} 2986 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 2987 - 2988 - esquery@1.6.0: 2989 - resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} 2990 - engines: {node: '>=0.10'} 2991 - 2992 - esrecurse@4.3.0: 2993 - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 2994 - engines: {node: '>=4.0'} 2995 - 2996 - estraverse@5.3.0: 2997 - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 2998 - engines: {node: '>=4.0'} 2999 - 3000 - esutils@2.0.3: 3001 - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 3002 - engines: {node: '>=0.10.0'} 3003 - 3004 - event-target-shim@5.0.1: 3005 - resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 3006 - engines: {node: '>=6'} 3007 - 3008 - event-target-shim@6.0.2: 3009 - resolution: {integrity: sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA==} 3010 - engines: {node: '>=10.13.0'} 3011 - 3012 - events@3.3.0: 3013 - resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} 3014 - engines: {node: '>=0.8.x'} 3015 - 3016 - fast-copy@3.0.2: 3017 - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} 3018 - 3019 - fast-deep-equal@3.1.3: 3020 - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 3021 - 3022 - fast-glob@3.3.2: 3023 - resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 3024 - engines: {node: '>=8.6.0'} 3025 - 3026 - fast-json-stable-stringify@2.1.0: 3027 - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 3028 - 3029 - fast-levenshtein@2.0.6: 3030 - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 3031 - 3032 - fast-redact@3.5.0: 3033 - resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} 3034 - engines: {node: '>=6'} 3035 - 3036 - fast-safe-stringify@2.1.1: 3037 - resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} 3038 - 3039 - fastq@1.17.1: 3040 - resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} 3041 - 3042 - fdir@6.4.2: 3043 - resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==} 3044 - peerDependencies: 3045 - picomatch: ^3 || ^4 3046 - peerDependenciesMeta: 3047 - picomatch: 3048 - optional: true 3049 - 3050 - fetch-blob@3.2.0: 3051 - resolution: {integrity: sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==} 3052 - engines: {node: ^12.20 || >= 14.13} 3053 - 3054 - file-entry-cache@8.0.0: 3055 - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} 3056 - engines: {node: '>=16.0.0'} 3057 - 3058 - fill-range@7.1.1: 3059 - resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} 3060 - engines: {node: '>=8'} 3061 - 3062 - find-up@5.0.0: 3063 - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 3064 - engines: {node: '>=10'} 3065 - 3066 - flat-cache@4.0.1: 3067 - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} 3068 - engines: {node: '>=16'} 3069 - 3070 - flatted@3.3.2: 3071 - resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} 3072 - 3073 - follow-redirects@1.15.9: 3074 - resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} 3075 - engines: {node: '>=4.0'} 3076 - peerDependencies: 3077 - debug: '*' 3078 - peerDependenciesMeta: 3079 - debug: 3080 - optional: true 3081 - 3082 - foreground-child@3.3.0: 3083 - resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} 3084 - engines: {node: '>=14'} 3085 - 3086 - form-data@4.0.1: 3087 - resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} 3088 - engines: {node: '>= 6'} 3089 - 3090 - formdata-polyfill@4.0.10: 3091 - resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} 3092 - engines: {node: '>=12.20.0'} 3093 - 3094 - fraction.js@4.3.7: 3095 - resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 3096 - 3097 - fsevents@2.3.3: 3098 - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 3099 - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 3100 - os: [darwin] 3101 - 3102 - function-bind@1.1.2: 3103 - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 3104 - 3105 - gensync@1.0.0-beta.2: 3106 - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 3107 - engines: {node: '>=6.9.0'} 3108 - 3109 - get-nonce@1.0.1: 3110 - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} 3111 - engines: {node: '>=6'} 3112 - 3113 - get-tsconfig@4.8.1: 3114 - resolution: {integrity: sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==} 3115 - 3116 - glob-parent@5.1.2: 3117 - resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 3118 - engines: {node: '>= 6'} 3119 - 3120 - glob-parent@6.0.2: 3121 - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 3122 - engines: {node: '>=10.13.0'} 3123 - 3124 - glob@10.4.5: 3125 - resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} 3126 - hasBin: true 3127 - 3128 - glob@11.0.0: 3129 - resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} 3130 - engines: {node: 20 || >=22} 3131 - hasBin: true 3132 - 3133 - globals@11.12.0: 3134 - resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 3135 - engines: {node: '>=4'} 3136 - 3137 - globals@14.0.0: 3138 - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} 3139 - engines: {node: '>=18'} 3140 - 3141 - globals@15.13.0: 3142 - resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} 3143 - engines: {node: '>=18'} 3144 - 3145 - goober@2.1.16: 3146 - resolution: {integrity: sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g==} 3147 - peerDependencies: 3148 - csstype: ^3.0.10 3149 - 3150 - graphemer@1.4.0: 3151 - resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 3152 - 3153 - has-flag@4.0.0: 3154 - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 3155 - engines: {node: '>=8'} 3156 - 3157 - hasown@2.0.2: 3158 - resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} 3159 - engines: {node: '>= 0.4'} 3160 - 3161 - help-me@5.0.0: 3162 - resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} 3163 - 3164 - hono-sessions@0.7.0: 3165 - resolution: {integrity: sha512-bclJUXaBq66R7jEjccqs/tc9WPJiS/wbWV5rrSMuYkTTCRF24wUi2nHjIummb7yzSpkT3GqLRifZkvNbzSMTzg==} 3166 - 3167 - hono@4.6.12: 3168 - resolution: {integrity: sha512-eHtf4kSDNw6VVrdbd5IQi16r22m3s7mWPLd7xOMhg1a/Yyb1A0qpUFq8xYMX4FMuDe1nTKeMX5rTx7Nmw+a+Ag==} 3169 - engines: {node: '>=16.9.0'} 3170 - 3171 - ieee754@1.2.1: 3172 - resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} 3173 - 3174 - ignore@5.3.2: 3175 - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} 3176 - engines: {node: '>= 4'} 3177 - 3178 - import-fresh@3.3.0: 3179 - resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 3180 - engines: {node: '>=6'} 3181 - 3182 - import-in-the-middle@1.11.3: 3183 - resolution: {integrity: sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw==} 3184 - 3185 - imurmurhash@0.1.4: 3186 - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 3187 - engines: {node: '>=0.8.19'} 3188 - 3189 - ipaddr.js@2.2.0: 3190 - resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==} 3191 - engines: {node: '>= 10'} 3192 - 3193 - iron-webcrypto@0.10.1: 3194 - resolution: {integrity: sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA==} 3195 - 3196 - is-binary-path@2.1.0: 3197 - resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 3198 - engines: {node: '>=8'} 3199 - 3200 - is-core-module@2.15.1: 3201 - resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} 3202 - engines: {node: '>= 0.4'} 3203 - 3204 - is-extglob@2.1.1: 3205 - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 3206 - engines: {node: '>=0.10.0'} 3207 - 3208 - is-fullwidth-code-point@3.0.0: 3209 - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 3210 - engines: {node: '>=8'} 3211 - 3212 - is-glob@4.0.3: 3213 - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 3214 - engines: {node: '>=0.10.0'} 3215 - 3216 - is-number@7.0.0: 3217 - resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 3218 - engines: {node: '>=0.12.0'} 3219 - 3220 - isexe@2.0.0: 3221 - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 3222 - 3223 - iso-datestring-validator@2.2.2: 3224 - resolution: {integrity: sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==} 3225 - 3226 - jackspeak@3.4.3: 3227 - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} 3228 - 3229 - jackspeak@4.0.2: 3230 - resolution: {integrity: sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw==} 3231 - engines: {node: 20 || >=22} 3232 - 3233 - jiti@1.21.6: 3234 - resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} 3235 - hasBin: true 3236 - 3237 - jiti@2.4.1: 3238 - resolution: {integrity: sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g==} 3239 - hasBin: true 3240 - 3241 - jose@5.9.6: 3242 - resolution: {integrity: sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==} 3243 - 3244 - joycon@3.1.1: 3245 - resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} 3246 - engines: {node: '>=10'} 3247 - 3248 - js-base64@3.7.7: 3249 - resolution: {integrity: sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==} 3250 - 3251 - js-tokens@4.0.0: 3252 - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 3253 - 3254 - js-yaml@4.1.0: 3255 - resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 3256 - hasBin: true 3257 - 3258 - jsesc@3.0.2: 3259 - resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==} 3260 - engines: {node: '>=6'} 3261 - hasBin: true 3262 - 3263 - json-buffer@3.0.1: 3264 - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 3265 - 3266 - json-schema-traverse@0.4.1: 3267 - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 3268 - 3269 - json-stable-stringify-without-jsonify@1.0.1: 3270 - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 3271 - 3272 - json5@2.2.3: 3273 - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 3274 - engines: {node: '>=6'} 3275 - hasBin: true 3276 - 3277 - keyv@4.5.4: 3278 - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 3279 - 3280 - levn@0.4.1: 3281 - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 3282 - engines: {node: '>= 0.8.0'} 3283 - 3284 - libsql@0.4.7: 3285 - resolution: {integrity: sha512-T9eIRCs6b0J1SHKYIvD8+KCJMcWZ900iZyxdnSCdqxN12Z1ijzT+jY5nrk72Jw4B0HGzms2NgpryArlJqvc3Lw==} 3286 - cpu: [x64, arm64, wasm32] 3287 - os: [darwin, linux, win32] 3288 - 3289 - lilconfig@3.1.3: 3290 - resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} 3291 - engines: {node: '>=14'} 3292 - 3293 - lines-and-columns@1.2.4: 3294 - resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 3295 - 3296 - load-tsconfig@0.2.5: 3297 - resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} 3298 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 3299 - 3300 - locate-path@6.0.0: 3301 - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 3302 - engines: {node: '>=10'} 3303 - 3304 - lodash.memoize@4.1.2: 3305 - resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} 3306 - 3307 - lodash.merge@4.6.2: 3308 - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 3309 - 3310 - lodash.sortby@4.7.0: 3311 - resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} 3312 - 3313 - lodash.uniq@4.5.0: 3314 - resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} 3315 - 3316 - lru-cache@10.4.3: 3317 - resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} 3318 - 3319 - lru-cache@11.0.2: 3320 - resolution: {integrity: sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA==} 3321 - engines: {node: 20 || >=22} 3322 - 3323 - lru-cache@5.1.1: 3324 - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 3325 - 3326 - lucide-react@0.464.0: 3327 - resolution: {integrity: sha512-eCx1qClbnw5qRqB2Z1AFFp71wdJXEwhPp5ii8LviyvHb7o/7eMXFiTyDHh7JpjM9BO9pC6ZUp/c7mCwwxbPIcg==} 3328 - peerDependencies: 3329 - react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc 3330 - 3331 - make-error@1.3.6: 3332 - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} 3333 - 3334 - mdn-data@2.0.28: 3335 - resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} 3336 - 3337 - mdn-data@2.0.30: 3338 - resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 3339 - 3340 - merge2@1.4.1: 3341 - resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 3342 - engines: {node: '>= 8'} 3343 - 3344 - micromatch@4.0.8: 3345 - resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} 3346 - engines: {node: '>=8.6'} 3347 - 3348 - mime-db@1.52.0: 3349 - resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 3350 - engines: {node: '>= 0.6'} 3351 - 3352 - mime-types@2.1.35: 3353 - resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 3354 - engines: {node: '>= 0.6'} 3355 - 3356 - minimatch@10.0.1: 3357 - resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} 3358 - engines: {node: 20 || >=22} 3359 - 3360 - minimatch@3.1.2: 3361 - resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 3362 - 3363 - minimatch@9.0.5: 3364 - resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} 3365 - engines: {node: '>=16 || 14 >=14.17'} 3366 - 3367 - minimist@1.2.8: 3368 - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 3369 - 3370 - minipass@7.1.2: 3371 - resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} 3372 - engines: {node: '>=16 || 14 >=14.17'} 3373 - 3374 - module-details-from-path@1.0.3: 3375 - resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} 3376 - 3377 - ms@2.1.3: 3378 - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 3379 - 3380 - multiformats@13.3.1: 3381 - resolution: {integrity: sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g==} 3382 - 3383 - multiformats@9.9.0: 3384 - resolution: {integrity: sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==} 3385 - 3386 - mz@2.7.0: 3387 - resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 3388 - 3389 - nanoid@3.3.8: 3390 - resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==} 3391 - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 3392 - hasBin: true 3393 - 3394 - nanoid@5.0.9: 3395 - resolution: {integrity: sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==} 3396 - engines: {node: ^18 || >=20} 3397 - hasBin: true 3398 - 3399 - natural-compare@1.4.0: 3400 - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 3401 - 3402 - node-domexception@1.0.0: 3403 - resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 3404 - engines: {node: '>=10.5.0'} 3405 - 3406 - node-fetch@3.3.2: 3407 - resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} 3408 - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} 3409 - 3410 - node-gyp-build-optional-packages@5.1.1: 3411 - resolution: {integrity: sha512-+P72GAjVAbTxjjwUmwjVrqrdZROD4nf8KgpBoDxqXXTiYZZt/ud60dE5yvCSr9lRO8e8yv6kgJIC0K0PfZFVQw==} 3412 - hasBin: true 3413 - 3414 - node-gyp-build@4.8.4: 3415 - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} 3416 - hasBin: true 3417 - 3418 - node-releases@2.0.18: 3419 - resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} 3420 - 3421 - normalize-path@3.0.0: 3422 - resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 3423 - engines: {node: '>=0.10.0'} 3424 - 3425 - normalize-range@0.1.2: 3426 - resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 3427 - engines: {node: '>=0.10.0'} 3428 - 3429 - nth-check@2.1.1: 3430 - resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} 3431 - 3432 - object-assign@4.1.1: 3433 - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 3434 - engines: {node: '>=0.10.0'} 3435 - 3436 - object-hash@3.0.0: 3437 - resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 3438 - engines: {node: '>= 6'} 3439 - 3440 - on-exit-leak-free@2.1.2: 3441 - resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} 3442 - engines: {node: '>=14.0.0'} 3443 - 3444 - once@1.4.0: 3445 - resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 3446 - 3447 - optionator@0.9.4: 3448 - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} 3449 - engines: {node: '>= 0.8.0'} 3450 - 3451 - p-limit@3.1.0: 3452 - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 3453 - engines: {node: '>=10'} 3454 - 3455 - p-locate@5.0.0: 3456 - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 3457 - engines: {node: '>=10'} 3458 - 3459 - package-json-from-dist@1.0.1: 3460 - resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} 3461 - 3462 - parent-module@1.0.1: 3463 - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 3464 - engines: {node: '>=6'} 3465 - 3466 - partysocket@1.0.2: 3467 - resolution: {integrity: sha512-rAFOUKImaq+VBk2B+2RTBsWEvlnarEP53nchoUHzpVs8V6fG2/estihOTslTQUWHVuHEKDL5k8htG8K3TngyFA==} 3468 - 3469 - path-exists@4.0.0: 3470 - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3471 - engines: {node: '>=8'} 3472 - 3473 - path-key@3.1.1: 3474 - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3475 - engines: {node: '>=8'} 3476 - 3477 - path-parse@1.0.7: 3478 - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 3479 - 3480 - path-scurry@1.11.1: 3481 - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} 3482 - engines: {node: '>=16 || 14 >=14.18'} 3483 - 3484 - path-scurry@2.0.0: 3485 - resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} 3486 - engines: {node: 20 || >=22} 3487 - 3488 - pg-int8@1.0.1: 3489 - resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} 3490 - engines: {node: '>=4.0.0'} 3491 - 3492 - pg-protocol@1.7.0: 3493 - resolution: {integrity: sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ==} 3494 - 3495 - pg-types@2.2.0: 3496 - resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} 3497 - engines: {node: '>=4'} 3498 - 3499 - picocolors@1.1.1: 3500 - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} 3501 - 3502 - picomatch@2.3.1: 3503 - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 3504 - engines: {node: '>=8.6'} 3505 - 3506 - picomatch@4.0.2: 3507 - resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} 3508 - engines: {node: '>=12'} 3509 - 3510 - pify@2.3.0: 3511 - resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 3512 - engines: {node: '>=0.10.0'} 3513 - 3514 - pino-abstract-transport@1.2.0: 3515 - resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} 3516 - 3517 - pino-abstract-transport@2.0.0: 3518 - resolution: {integrity: sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==} 3519 - 3520 - pino-pretty@13.0.0: 3521 - resolution: {integrity: sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA==} 3522 - hasBin: true 3523 - 3524 - pino-std-serializers@6.2.2: 3525 - resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} 3526 - 3527 - pino-std-serializers@7.0.0: 3528 - resolution: {integrity: sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==} 3529 - 3530 - pino@8.21.0: 3531 - resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} 3532 - hasBin: true 3533 - 3534 - pino@9.5.0: 3535 - resolution: {integrity: sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw==} 3536 - hasBin: true 3537 - 3538 - pirates@4.0.6: 3539 - resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 3540 - engines: {node: '>= 6'} 3541 - 3542 - postcss-calc@10.0.2: 3543 - resolution: {integrity: sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg==} 3544 - engines: {node: ^18.12 || ^20.9 || >=22.0} 3545 - peerDependencies: 3546 - postcss: ^8.4.38 3547 - 3548 - postcss-colormin@7.0.2: 3549 - resolution: {integrity: sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA==} 3550 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3551 - peerDependencies: 3552 - postcss: ^8.4.31 3553 - 3554 - postcss-convert-values@7.0.4: 3555 - resolution: {integrity: sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q==} 3556 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3557 - peerDependencies: 3558 - postcss: ^8.4.31 3559 - 3560 - postcss-discard-comments@7.0.3: 3561 - resolution: {integrity: sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA==} 3562 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3563 - peerDependencies: 3564 - postcss: ^8.4.31 3565 - 3566 - postcss-discard-duplicates@7.0.1: 3567 - resolution: {integrity: sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ==} 3568 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3569 - peerDependencies: 3570 - postcss: ^8.4.31 3571 - 3572 - postcss-discard-empty@7.0.0: 3573 - resolution: {integrity: sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA==} 3574 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3575 - peerDependencies: 3576 - postcss: ^8.4.31 3577 - 3578 - postcss-discard-overridden@7.0.0: 3579 - resolution: {integrity: sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w==} 3580 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3581 - peerDependencies: 3582 - postcss: ^8.4.31 3583 - 3584 - postcss-import@15.1.0: 3585 - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 3586 - engines: {node: '>=14.0.0'} 3587 - peerDependencies: 3588 - postcss: ^8.0.0 3589 - 3590 - postcss-js@4.0.1: 3591 - resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 3592 - engines: {node: ^12 || ^14 || >= 16} 3593 - peerDependencies: 3594 - postcss: ^8.4.21 3595 - 3596 - postcss-load-config@4.0.2: 3597 - resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 3598 - engines: {node: '>= 14'} 3599 - peerDependencies: 3600 - postcss: '>=8.0.9' 3601 - ts-node: '>=9.0.0' 3602 - peerDependenciesMeta: 3603 - postcss: 3604 - optional: true 3605 - ts-node: 3606 - optional: true 3607 - 3608 - postcss-load-config@6.0.1: 3609 - resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} 3610 - engines: {node: '>= 18'} 3611 - peerDependencies: 3612 - jiti: '>=1.21.0' 3613 - postcss: '>=8.0.9' 3614 - tsx: ^4.8.1 3615 - yaml: ^2.4.2 3616 - peerDependenciesMeta: 3617 - jiti: 3618 - optional: true 3619 - postcss: 3620 - optional: true 3621 - tsx: 3622 - optional: true 3623 - yaml: 3624 - optional: true 3625 - 3626 - postcss-merge-longhand@7.0.4: 3627 - resolution: {integrity: sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A==} 3628 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3629 - peerDependencies: 3630 - postcss: ^8.4.31 3631 - 3632 - postcss-merge-rules@7.0.4: 3633 - resolution: {integrity: sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg==} 3634 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3635 - peerDependencies: 3636 - postcss: ^8.4.31 3637 - 3638 - postcss-minify-font-values@7.0.0: 3639 - resolution: {integrity: sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog==} 3640 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3641 - peerDependencies: 3642 - postcss: ^8.4.31 3643 - 3644 - postcss-minify-gradients@7.0.0: 3645 - resolution: {integrity: sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg==} 3646 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3647 - peerDependencies: 3648 - postcss: ^8.4.31 3649 - 3650 - postcss-minify-params@7.0.2: 3651 - resolution: {integrity: sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ==} 3652 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3653 - peerDependencies: 3654 - postcss: ^8.4.31 3655 - 3656 - postcss-minify-selectors@7.0.4: 3657 - resolution: {integrity: sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA==} 3658 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3659 - peerDependencies: 3660 - postcss: ^8.4.31 3661 - 3662 - postcss-nested@6.2.0: 3663 - resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} 3664 - engines: {node: '>=12.0'} 3665 - peerDependencies: 3666 - postcss: ^8.2.14 3667 - 3668 - postcss-normalize-charset@7.0.0: 3669 - resolution: {integrity: sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ==} 3670 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3671 - peerDependencies: 3672 - postcss: ^8.4.31 3673 - 3674 - postcss-normalize-display-values@7.0.0: 3675 - resolution: {integrity: sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q==} 3676 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3677 - peerDependencies: 3678 - postcss: ^8.4.31 3679 - 3680 - postcss-normalize-positions@7.0.0: 3681 - resolution: {integrity: sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ==} 3682 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3683 - peerDependencies: 3684 - postcss: ^8.4.31 3685 - 3686 - postcss-normalize-repeat-style@7.0.0: 3687 - resolution: {integrity: sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw==} 3688 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3689 - peerDependencies: 3690 - postcss: ^8.4.31 3691 - 3692 - postcss-normalize-string@7.0.0: 3693 - resolution: {integrity: sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg==} 3694 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3695 - peerDependencies: 3696 - postcss: ^8.4.31 3697 - 3698 - postcss-normalize-timing-functions@7.0.0: 3699 - resolution: {integrity: sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g==} 3700 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3701 - peerDependencies: 3702 - postcss: ^8.4.31 3703 - 3704 - postcss-normalize-unicode@7.0.2: 3705 - resolution: {integrity: sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg==} 3706 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3707 - peerDependencies: 3708 - postcss: ^8.4.31 3709 - 3710 - postcss-normalize-url@7.0.0: 3711 - resolution: {integrity: sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ==} 3712 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3713 - peerDependencies: 3714 - postcss: ^8.4.31 3715 - 3716 - postcss-normalize-whitespace@7.0.0: 3717 - resolution: {integrity: sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ==} 3718 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3719 - peerDependencies: 3720 - postcss: ^8.4.31 3721 - 3722 - postcss-ordered-values@7.0.1: 3723 - resolution: {integrity: sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw==} 3724 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3725 - peerDependencies: 3726 - postcss: ^8.4.31 3727 - 3728 - postcss-reduce-initial@7.0.2: 3729 - resolution: {integrity: sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA==} 3730 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3731 - peerDependencies: 3732 - postcss: ^8.4.31 3733 - 3734 - postcss-reduce-transforms@7.0.0: 3735 - resolution: {integrity: sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew==} 3736 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3737 - peerDependencies: 3738 - postcss: ^8.4.31 3739 - 3740 - postcss-selector-parser@6.1.2: 3741 - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} 3742 - engines: {node: '>=4'} 3743 - 3744 - postcss-svgo@7.0.1: 3745 - resolution: {integrity: sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA==} 3746 - engines: {node: ^18.12.0 || ^20.9.0 || >= 18} 3747 - peerDependencies: 3748 - postcss: ^8.4.31 3749 - 3750 - postcss-unique-selectors@7.0.3: 3751 - resolution: {integrity: sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g==} 3752 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 3753 - peerDependencies: 3754 - postcss: ^8.4.31 3755 - 3756 - postcss-value-parser@4.2.0: 3757 - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 3758 - 3759 - postcss@8.4.49: 3760 - resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==} 3761 - engines: {node: ^10 || ^12 || >=14} 3762 - 3763 - postgres-array@2.0.0: 3764 - resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} 3765 - engines: {node: '>=4'} 3766 - 3767 - postgres-bytea@1.0.0: 3768 - resolution: {integrity: sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==} 3769 - engines: {node: '>=0.10.0'} 3770 - 3771 - postgres-date@1.0.7: 3772 - resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} 3773 - engines: {node: '>=0.10.0'} 3774 - 3775 - postgres-interval@1.2.0: 3776 - resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} 3777 - engines: {node: '>=0.10.0'} 3778 - 3779 - prelude-ls@1.2.1: 3780 - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3781 - engines: {node: '>= 0.8.0'} 3782 - 3783 - prettier@3.4.1: 3784 - resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==} 3785 - engines: {node: '>=14'} 3786 - hasBin: true 3787 - 3788 - process-warning@3.0.0: 3789 - resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} 3790 - 3791 - process-warning@4.0.0: 3792 - resolution: {integrity: sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw==} 3793 - 3794 - process@0.11.10: 3795 - resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} 3796 - engines: {node: '>= 0.6.0'} 3797 - 3798 - promise-limit@2.7.0: 3799 - resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} 3800 - 3801 - proxy-from-env@1.1.0: 3802 - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} 3803 - 3804 - psl@1.15.0: 3805 - resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} 3806 - 3807 - pump@3.0.2: 3808 - resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==} 3809 - 3810 - punycode@2.3.1: 3811 - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 3812 - engines: {node: '>=6'} 3813 - 3814 - queue-microtask@1.2.3: 3815 - resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3816 - 3817 - quick-format-unescaped@4.0.4: 3818 - resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} 3819 - 3820 - react-dom@19.0.0: 3821 - resolution: {integrity: sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==} 3822 - peerDependencies: 3823 - react: ^19.0.0 3824 - 3825 - react-hook-form@7.54.1: 3826 - resolution: {integrity: sha512-PUNzFwQeQ5oHiiTUO7GO/EJXGEtuun2Y1A59rLnZBBj+vNEOWt/3ERTiG1/zt7dVeJEM+4vDX/7XQ/qanuvPMg==} 3827 - engines: {node: '>=18.0.0'} 3828 - peerDependencies: 3829 - react: ^16.8.0 || ^17 || ^18 || ^19 3830 - 3831 - react-remove-scroll-bar@2.3.8: 3832 - resolution: {integrity: sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==} 3833 - engines: {node: '>=10'} 3834 - peerDependencies: 3835 - '@types/react': '*' 3836 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 3837 - peerDependenciesMeta: 3838 - '@types/react': 3839 - optional: true 3840 - 3841 - react-remove-scroll@2.6.2: 3842 - resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==} 3843 - engines: {node: '>=10'} 3844 - peerDependencies: 3845 - '@types/react': '*' 3846 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 3847 - peerDependenciesMeta: 3848 - '@types/react': 3849 - optional: true 3850 - 3851 - react-style-singleton@2.2.3: 3852 - resolution: {integrity: sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==} 3853 - engines: {node: '>=10'} 3854 - peerDependencies: 3855 - '@types/react': '*' 3856 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 3857 - peerDependenciesMeta: 3858 - '@types/react': 3859 - optional: true 3860 - 3861 - react@19.0.0: 3862 - resolution: {integrity: sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==} 3863 - engines: {node: '>=0.10.0'} 3864 - 3865 - read-cache@1.0.0: 3866 - resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 3867 - 3868 - readable-stream@4.5.2: 3869 - resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} 3870 - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 3871 - 3872 - readdirp@3.6.0: 3873 - resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3874 - engines: {node: '>=8.10.0'} 3875 - 3876 - readdirp@4.0.2: 3877 - resolution: {integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==} 3878 - engines: {node: '>= 14.16.0'} 3879 - 3880 - real-require@0.2.0: 3881 - resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} 3882 - engines: {node: '>= 12.13.0'} 3883 - 3884 - require-in-the-middle@7.4.0: 3885 - resolution: {integrity: sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ==} 3886 - engines: {node: '>=8.6.0'} 3887 - 3888 - resolve-from@4.0.0: 3889 - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3890 - engines: {node: '>=4'} 3891 - 3892 - resolve-from@5.0.0: 3893 - resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 3894 - engines: {node: '>=8'} 3895 - 3896 - resolve-pkg-maps@1.0.0: 3897 - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 3898 - 3899 - resolve@1.22.8: 3900 - resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 3901 - hasBin: true 3902 - 3903 - reusify@1.0.4: 3904 - resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3905 - engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3906 - 3907 - rimraf@6.0.1: 3908 - resolution: {integrity: sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==} 3909 - engines: {node: 20 || >=22} 3910 - hasBin: true 3911 - 3912 - rollup@4.28.0: 3913 - resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==} 3914 - engines: {node: '>=18.0.0', npm: '>=8.0.0'} 3915 - hasBin: true 3916 - 3917 - run-parallel@1.2.0: 3918 - resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3919 - 3920 - safe-buffer@5.2.1: 3921 - resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} 3922 - 3923 - safe-stable-stringify@2.5.0: 3924 - resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} 3925 - engines: {node: '>=10'} 3926 - 3927 - scheduler@0.25.0: 3928 - resolution: {integrity: sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==} 3929 - 3930 - secure-json-parse@2.7.0: 3931 - resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} 3932 - 3933 - semver@6.3.1: 3934 - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3935 - hasBin: true 3936 - 3937 - semver@7.6.3: 3938 - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} 3939 - engines: {node: '>=10'} 3940 - hasBin: true 3941 - 3942 - shebang-command@2.0.0: 3943 - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3944 - engines: {node: '>=8'} 3945 - 3946 - shebang-regex@3.0.0: 3947 - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3948 - engines: {node: '>=8'} 3949 - 3950 - shimmer@1.2.1: 3951 - resolution: {integrity: sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==} 3952 - 3953 - signal-exit@4.1.0: 3954 - resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} 3955 - engines: {node: '>=14'} 3956 - 3957 - sonic-boom@3.8.1: 3958 - resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} 3959 - 3960 - sonic-boom@4.2.0: 3961 - resolution: {integrity: sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==} 3962 - 3963 - source-map-js@1.2.1: 3964 - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} 3965 - engines: {node: '>=0.10.0'} 3966 - 3967 - source-map-support@0.5.21: 3968 - resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} 3969 - 3970 - source-map@0.6.1: 3971 - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 3972 - engines: {node: '>=0.10.0'} 3973 - 3974 - source-map@0.8.0-beta.0: 3975 - resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} 3976 - engines: {node: '>= 8'} 3977 - 3978 - split2@4.2.0: 3979 - resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} 3980 - engines: {node: '>= 10.x'} 3981 - 3982 - string-width@4.2.3: 3983 - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 3984 - engines: {node: '>=8'} 3985 - 3986 - string-width@5.1.2: 3987 - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} 3988 - engines: {node: '>=12'} 3989 - 3990 - string_decoder@1.3.0: 3991 - resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} 3992 - 3993 - strip-ansi@6.0.1: 3994 - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3995 - engines: {node: '>=8'} 3996 - 3997 - strip-ansi@7.1.0: 3998 - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} 3999 - engines: {node: '>=12'} 4000 - 4001 - strip-json-comments@3.1.1: 4002 - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 4003 - engines: {node: '>=8'} 4004 - 4005 - stylehacks@7.0.4: 4006 - resolution: {integrity: sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww==} 4007 - engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} 4008 - peerDependencies: 4009 - postcss: ^8.4.31 4010 - 4011 - sucrase@3.35.0: 4012 - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} 4013 - engines: {node: '>=16 || 14 >=14.17'} 4014 - hasBin: true 4015 - 4016 - supports-color@7.2.0: 4017 - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 4018 - engines: {node: '>=8'} 4019 - 4020 - supports-preserve-symlinks-flag@1.0.0: 4021 - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 4022 - engines: {node: '>= 0.4'} 4023 - 4024 - svgo@3.3.2: 4025 - resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} 4026 - engines: {node: '>=14.0.0'} 4027 - hasBin: true 4028 - 4029 - tailwind-merge@2.5.5: 4030 - resolution: {integrity: sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA==} 4031 - 4032 - tailwindcss-animate@1.0.7: 4033 - resolution: {integrity: sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==} 4034 - peerDependencies: 4035 - tailwindcss: '>=3.0.0 || insiders' 4036 - 4037 - tailwindcss@3.4.16: 4038 - resolution: {integrity: sha512-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw==} 4039 - engines: {node: '>=14.0.0'} 4040 - hasBin: true 4041 - 4042 - thenify-all@1.6.0: 4043 - resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 4044 - engines: {node: '>=0.8'} 4045 - 4046 - thenify@3.3.1: 4047 - resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 4048 - 4049 - thread-stream@2.7.0: 4050 - resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} 4051 - 4052 - thread-stream@3.1.0: 4053 - resolution: {integrity: sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==} 4054 - 4055 - tiny-invariant@1.3.3: 4056 - resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} 4057 - 4058 - tiny-warning@1.0.3: 4059 - resolution: {integrity: sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==} 4060 - 4061 - tinyexec@0.3.1: 4062 - resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==} 4063 - 4064 - tinyglobby@0.2.10: 4065 - resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==} 4066 - engines: {node: '>=12.0.0'} 4067 - 4068 - tlds@1.255.0: 4069 - resolution: {integrity: sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw==} 4070 - hasBin: true 4071 - 4072 - to-regex-range@5.0.1: 4073 - resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 4074 - engines: {node: '>=8.0'} 4075 - 4076 - tr46@1.0.1: 4077 - resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} 4078 - 4079 - tree-kill@1.2.2: 4080 - resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} 4081 - hasBin: true 4082 - 4083 - ts-api-utils@1.4.3: 4084 - resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} 4085 - engines: {node: '>=16'} 4086 - peerDependencies: 4087 - typescript: '>=4.2.0' 4088 - 4089 - ts-interface-checker@0.1.13: 4090 - resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 4091 - 4092 - ts-node@10.9.2: 4093 - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} 4094 - hasBin: true 4095 - peerDependencies: 4096 - '@swc/core': '>=1.2.50' 4097 - '@swc/wasm': '>=1.2.50' 4098 - '@types/node': '*' 4099 - typescript: '>=2.7' 4100 - peerDependenciesMeta: 4101 - '@swc/core': 4102 - optional: true 4103 - '@swc/wasm': 4104 - optional: true 4105 - 4106 - tslib@2.8.1: 4107 - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} 4108 - 4109 - tsup@8.3.5: 4110 - resolution: {integrity: sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA==} 4111 - engines: {node: '>=18'} 4112 - hasBin: true 4113 - peerDependencies: 4114 - '@microsoft/api-extractor': ^7.36.0 4115 - '@swc/core': ^1 4116 - postcss: ^8.4.12 4117 - typescript: '>=4.5.0' 4118 - peerDependenciesMeta: 4119 - '@microsoft/api-extractor': 4120 - optional: true 4121 - '@swc/core': 4122 - optional: true 4123 - postcss: 4124 - optional: true 4125 - typescript: 4126 - optional: true 4127 - 4128 - tsx@4.19.2: 4129 - resolution: {integrity: sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==} 4130 - engines: {node: '>=18.0.0'} 4131 - hasBin: true 4132 - 4133 - turbo-darwin-64@2.3.3: 4134 - resolution: {integrity: sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA==} 4135 - cpu: [x64] 4136 - os: [darwin] 4137 - 4138 - turbo-darwin-arm64@2.3.3: 4139 - resolution: {integrity: sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A==} 4140 - cpu: [arm64] 4141 - os: [darwin] 4142 - 4143 - turbo-linux-64@2.3.3: 4144 - resolution: {integrity: sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA==} 4145 - cpu: [x64] 4146 - os: [linux] 4147 - 4148 - turbo-linux-arm64@2.3.3: 4149 - resolution: {integrity: sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg==} 4150 - cpu: [arm64] 4151 - os: [linux] 4152 - 4153 - turbo-windows-64@2.3.3: 4154 - resolution: {integrity: sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ==} 4155 - cpu: [x64] 4156 - os: [win32] 4157 - 4158 - turbo-windows-arm64@2.3.3: 4159 - resolution: {integrity: sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag==} 4160 - cpu: [arm64] 4161 - os: [win32] 4162 - 4163 - turbo@2.3.3: 4164 - resolution: {integrity: sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA==} 4165 - hasBin: true 4166 - 4167 - type-check@0.4.0: 4168 - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 4169 - engines: {node: '>= 0.8.0'} 4170 - 4171 - typescript-eslint@8.17.0: 4172 - resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==} 4173 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} 4174 - peerDependencies: 4175 - eslint: ^8.57.0 || ^9.0.0 4176 - typescript: '*' 4177 - peerDependenciesMeta: 4178 - typescript: 4179 - optional: true 4180 - 4181 - typescript@5.6.3: 4182 - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} 4183 - engines: {node: '>=14.17'} 4184 - hasBin: true 4185 - 4186 - typescript@5.7.2: 4187 - resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} 4188 - engines: {node: '>=14.17'} 4189 - hasBin: true 4190 - 4191 - uint8arrays@3.0.0: 4192 - resolution: {integrity: sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==} 4193 - 4194 - uint8arrays@5.1.0: 4195 - resolution: {integrity: sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==} 4196 - 4197 - undici-types@6.20.0: 4198 - resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} 4199 - 4200 - undici@6.21.0: 4201 - resolution: {integrity: sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==} 4202 - engines: {node: '>=18.17'} 4203 - 4204 - unplugin@1.16.0: 4205 - resolution: {integrity: sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ==} 4206 - engines: {node: '>=14.0.0'} 4207 - 4208 - update-browserslist-db@1.1.1: 4209 - resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} 4210 - hasBin: true 4211 - peerDependencies: 4212 - browserslist: '>= 4.21.0' 4213 - 4214 - uri-js@4.4.1: 4215 - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 4216 - 4217 - use-callback-ref@1.3.3: 4218 - resolution: {integrity: sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==} 4219 - engines: {node: '>=10'} 4220 - peerDependencies: 4221 - '@types/react': '*' 4222 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc 4223 - peerDependenciesMeta: 4224 - '@types/react': 4225 - optional: true 4226 - 4227 - use-sidecar@1.1.2: 4228 - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} 4229 - engines: {node: '>=10'} 4230 - peerDependencies: 4231 - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 4232 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 4233 - peerDependenciesMeta: 4234 - '@types/react': 4235 - optional: true 4236 - 4237 - use-sync-external-store@1.2.2: 4238 - resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==} 4239 - peerDependencies: 4240 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 4241 - 4242 - util-deprecate@1.0.2: 4243 - resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 4244 - 4245 - v8-compile-cache-lib@3.0.1: 4246 - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} 4247 - 4248 - vite@6.0.2: 4249 - resolution: {integrity: sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g==} 4250 - engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} 4251 - hasBin: true 4252 - peerDependencies: 4253 - '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 4254 - jiti: '>=1.21.0' 4255 - less: '*' 4256 - lightningcss: ^1.21.0 4257 - sass: '*' 4258 - sass-embedded: '*' 4259 - stylus: '*' 4260 - sugarss: '*' 4261 - terser: ^5.16.0 4262 - tsx: ^4.8.1 4263 - yaml: ^2.4.2 4264 - peerDependenciesMeta: 4265 - '@types/node': 4266 - optional: true 4267 - jiti: 4268 - optional: true 4269 - less: 4270 - optional: true 4271 - lightningcss: 4272 - optional: true 4273 - sass: 4274 - optional: true 4275 - sass-embedded: 4276 - optional: true 4277 - stylus: 4278 - optional: true 4279 - sugarss: 4280 - optional: true 4281 - terser: 4282 - optional: true 4283 - tsx: 4284 - optional: true 4285 - yaml: 4286 - optional: true 4287 - 4288 - web-streams-polyfill@3.3.3: 4289 - resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} 4290 - engines: {node: '>= 8'} 4291 - 4292 - webidl-conversions@4.0.2: 4293 - resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} 4294 - 4295 - webpack-virtual-modules@0.6.2: 4296 - resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} 4297 - 4298 - whatwg-url@7.1.0: 4299 - resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} 4300 - 4301 - which@2.0.2: 4302 - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4303 - engines: {node: '>= 8'} 4304 - hasBin: true 4305 - 4306 - word-wrap@1.2.5: 4307 - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} 4308 - engines: {node: '>=0.10.0'} 4309 - 4310 - wrap-ansi@7.0.0: 4311 - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 4312 - engines: {node: '>=10'} 4313 - 4314 - wrap-ansi@8.1.0: 4315 - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} 4316 - engines: {node: '>=12'} 4317 - 4318 - wrappy@1.0.2: 4319 - resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 4320 - 4321 - ws@8.18.0: 4322 - resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==} 4323 - engines: {node: '>=10.0.0'} 4324 - peerDependencies: 4325 - bufferutil: ^4.0.1 4326 - utf-8-validate: '>=5.0.2' 4327 - peerDependenciesMeta: 4328 - bufferutil: 4329 - optional: true 4330 - utf-8-validate: 4331 - optional: true 4332 - 4333 - xtend@4.0.2: 4334 - resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 4335 - engines: {node: '>=0.4'} 4336 - 4337 - yallist@3.1.1: 4338 - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 4339 - 4340 - yaml@2.6.1: 4341 - resolution: {integrity: sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==} 4342 - engines: {node: '>= 14'} 4343 - hasBin: true 4344 - 4345 - yn@3.1.1: 4346 - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} 4347 - engines: {node: '>=6'} 4348 - 4349 - yocto-queue@0.1.0: 4350 - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 4351 - engines: {node: '>=10'} 4352 - 4353 - zod@3.23.8: 4354 - resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==} 4355 - 4356 - snapshots: 4357 - 4358 - '@alloc/quick-lru@5.2.0': {} 4359 - 4360 - '@ampproject/remapping@2.3.0': 4361 - dependencies: 4362 - '@jridgewell/gen-mapping': 0.3.5 4363 - '@jridgewell/trace-mapping': 0.3.25 4364 - 4365 - '@atcute/bluesky@1.0.9(@atcute/client@2.0.6)': 4366 - dependencies: 4367 - '@atcute/client': 2.0.6 4368 - 4369 - '@atcute/client@2.0.6': {} 4370 - 4371 - '@atcute/lex-cli@1.0.3': 4372 - dependencies: 4373 - '@badrap/valita': 0.3.16 4374 - '@externdefs/collider': 0.1.0(@badrap/valita@0.3.16) 4375 - picocolors: 1.1.1 4376 - prettier: 3.4.1 4377 - 4378 - '@atcute/oauth-browser-client@1.0.7': 4379 - dependencies: 4380 - '@atcute/client': 2.0.6 4381 - nanoid: 5.0.9 4382 - 4383 - '@atproto-labs/did-resolver@0.1.6': 4384 - dependencies: 4385 - '@atproto-labs/fetch': 0.1.2 4386 - '@atproto-labs/pipe': 0.1.0 4387 - '@atproto-labs/simple-store': 0.1.1 4388 - '@atproto-labs/simple-store-memory': 0.1.1 4389 - '@atproto/did': 0.1.3 4390 - zod: 3.23.8 4391 - 4392 - '@atproto-labs/fetch-node@0.1.4': 4393 - dependencies: 4394 - '@atproto-labs/fetch': 0.1.2 4395 - '@atproto-labs/pipe': 0.1.0 4396 - ipaddr.js: 2.2.0 4397 - psl: 1.15.0 4398 - undici: 6.21.0 4399 - 4400 - '@atproto-labs/fetch@0.1.2': 4401 - dependencies: 4402 - '@atproto-labs/pipe': 0.1.0 4403 - optionalDependencies: 4404 - zod: 3.23.8 4405 - 4406 - '@atproto-labs/handle-resolver-node@0.1.8': 4407 - dependencies: 4408 - '@atproto-labs/fetch-node': 0.1.4 4409 - '@atproto-labs/handle-resolver': 0.1.4 4410 - '@atproto/did': 0.1.3 4411 - 4412 - '@atproto-labs/handle-resolver@0.1.4': 4413 - dependencies: 4414 - '@atproto-labs/simple-store': 0.1.1 4415 - '@atproto-labs/simple-store-memory': 0.1.1 4416 - '@atproto/did': 0.1.3 4417 - zod: 3.23.8 4418 - 4419 - '@atproto-labs/identity-resolver@0.1.7': 4420 - dependencies: 4421 - '@atproto-labs/did-resolver': 0.1.6 4422 - '@atproto-labs/handle-resolver': 0.1.4 4423 - '@atproto/syntax': 0.3.1 4424 - 4425 - '@atproto-labs/pipe@0.1.0': {} 4426 - 4427 - '@atproto-labs/simple-store-memory@0.1.1': 4428 - dependencies: 4429 - '@atproto-labs/simple-store': 0.1.1 4430 - lru-cache: 10.4.3 4431 - 4432 - '@atproto-labs/simple-store@0.1.1': {} 4433 - 4434 - '@atproto/api@0.13.19': 4435 - dependencies: 4436 - '@atproto/common-web': 0.3.1 4437 - '@atproto/lexicon': 0.4.3 4438 - '@atproto/syntax': 0.3.1 4439 - '@atproto/xrpc': 0.6.4 4440 - await-lock: 2.2.2 4441 - multiformats: 9.9.0 4442 - tlds: 1.255.0 4443 - zod: 3.23.8 4444 - 4445 - '@atproto/common-web@0.3.1': 4446 - dependencies: 4447 - graphemer: 1.4.0 4448 - multiformats: 9.9.0 4449 - uint8arrays: 3.0.0 4450 - zod: 3.23.8 4451 - 4452 - '@atproto/common@0.4.5': 4453 - dependencies: 4454 - '@atproto/common-web': 0.3.1 4455 - '@ipld/dag-cbor': 7.0.3 4456 - cbor-x: 1.6.0 4457 - iso-datestring-validator: 2.2.2 4458 - multiformats: 9.9.0 4459 - pino: 8.21.0 4460 - 4461 - '@atproto/crypto@0.4.2': 4462 - dependencies: 4463 - '@noble/curves': 1.7.0 4464 - '@noble/hashes': 1.6.1 4465 - uint8arrays: 3.0.0 4466 - 4467 - '@atproto/did@0.1.3': 4468 - dependencies: 4469 - zod: 3.23.8 4470 - 4471 - '@atproto/jwk-jose@0.1.2': 4472 - dependencies: 4473 - '@atproto/jwk': 0.1.1 4474 - jose: 5.9.6 4475 - 4476 - '@atproto/jwk-webcrypto@0.1.2': 4477 - dependencies: 4478 - '@atproto/jwk': 0.1.1 4479 - '@atproto/jwk-jose': 0.1.2 4480 - 4481 - '@atproto/jwk@0.1.1': 4482 - dependencies: 4483 - multiformats: 9.9.0 4484 - zod: 3.23.8 4485 - 4486 - '@atproto/lexicon@0.4.3': 4487 - dependencies: 4488 - '@atproto/common-web': 0.3.1 4489 - '@atproto/syntax': 0.3.1 4490 - iso-datestring-validator: 2.2.2 4491 - multiformats: 9.9.0 4492 - zod: 3.23.8 4493 - 4494 - '@atproto/oauth-client-node@0.2.3': 4495 - dependencies: 4496 - '@atproto-labs/did-resolver': 0.1.6 4497 - '@atproto-labs/handle-resolver-node': 0.1.8 4498 - '@atproto-labs/simple-store': 0.1.1 4499 - '@atproto/did': 0.1.3 4500 - '@atproto/jwk': 0.1.1 4501 - '@atproto/jwk-jose': 0.1.2 4502 - '@atproto/jwk-webcrypto': 0.1.2 4503 - '@atproto/oauth-client': 0.3.3 4504 - '@atproto/oauth-types': 0.2.1 4505 - 4506 - '@atproto/oauth-client@0.3.3': 4507 - dependencies: 4508 - '@atproto-labs/did-resolver': 0.1.6 4509 - '@atproto-labs/fetch': 0.1.2 4510 - '@atproto-labs/handle-resolver': 0.1.4 4511 - '@atproto-labs/identity-resolver': 0.1.7 4512 - '@atproto-labs/simple-store': 0.1.1 4513 - '@atproto-labs/simple-store-memory': 0.1.1 4514 - '@atproto/did': 0.1.3 4515 - '@atproto/jwk': 0.1.1 4516 - '@atproto/oauth-types': 0.2.1 4517 - '@atproto/xrpc': 0.6.4 4518 - multiformats: 9.9.0 4519 - zod: 3.23.8 4520 - 4521 - '@atproto/oauth-types@0.2.1': 4522 - dependencies: 4523 - '@atproto/jwk': 0.1.1 4524 - zod: 3.23.8 4525 - 4526 - '@atproto/syntax@0.3.1': {} 4527 - 4528 - '@atproto/xrpc@0.6.4': 4529 - dependencies: 4530 - '@atproto/lexicon': 0.4.3 4531 - zod: 3.23.8 4532 - 4533 - '@babel/code-frame@7.26.2': 4534 - dependencies: 4535 - '@babel/helper-validator-identifier': 7.25.9 4536 - js-tokens: 4.0.0 4537 - picocolors: 1.1.1 4538 - 4539 - '@babel/compat-data@7.26.2': {} 4540 - 4541 - '@babel/core@7.26.0': 4542 - dependencies: 4543 - '@ampproject/remapping': 2.3.0 4544 - '@babel/code-frame': 7.26.2 4545 - '@babel/generator': 7.26.2 4546 - '@babel/helper-compilation-targets': 7.25.9 4547 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) 4548 - '@babel/helpers': 7.26.0 4549 - '@babel/parser': 7.26.2 4550 - '@babel/template': 7.25.9 4551 - '@babel/traverse': 7.25.9 4552 - '@babel/types': 7.26.0 4553 - convert-source-map: 2.0.0 4554 - debug: 4.3.7 4555 - gensync: 1.0.0-beta.2 4556 - json5: 2.2.3 4557 - semver: 6.3.1 4558 - transitivePeerDependencies: 4559 - - supports-color 4560 - 4561 - '@babel/generator@7.26.2': 4562 - dependencies: 4563 - '@babel/parser': 7.26.2 4564 - '@babel/types': 7.26.0 4565 - '@jridgewell/gen-mapping': 0.3.5 4566 - '@jridgewell/trace-mapping': 0.3.25 4567 - jsesc: 3.0.2 4568 - 4569 - '@babel/helper-compilation-targets@7.25.9': 4570 - dependencies: 4571 - '@babel/compat-data': 7.26.2 4572 - '@babel/helper-validator-option': 7.25.9 4573 - browserslist: 4.24.2 4574 - lru-cache: 5.1.1 4575 - semver: 6.3.1 4576 - 4577 - '@babel/helper-module-imports@7.25.9': 4578 - dependencies: 4579 - '@babel/traverse': 7.25.9 4580 - '@babel/types': 7.26.0 4581 - transitivePeerDependencies: 4582 - - supports-color 4583 - 4584 - '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)': 4585 - dependencies: 4586 - '@babel/core': 7.26.0 4587 - '@babel/helper-module-imports': 7.25.9 4588 - '@babel/helper-validator-identifier': 7.25.9 4589 - '@babel/traverse': 7.25.9 4590 - transitivePeerDependencies: 4591 - - supports-color 4592 - 4593 - '@babel/helper-plugin-utils@7.25.9': {} 4594 - 4595 - '@babel/helper-string-parser@7.25.9': {} 4596 - 4597 - '@babel/helper-validator-identifier@7.25.9': {} 4598 - 4599 - '@babel/helper-validator-option@7.25.9': {} 4600 - 4601 - '@babel/helpers@7.26.0': 4602 - dependencies: 4603 - '@babel/template': 7.25.9 4604 - '@babel/types': 7.26.0 4605 - 4606 - '@babel/parser@7.26.2': 4607 - dependencies: 4608 - '@babel/types': 7.26.0 4609 - 4610 - '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)': 4611 - dependencies: 4612 - '@babel/core': 7.26.0 4613 - '@babel/helper-plugin-utils': 7.25.9 4614 - 4615 - '@babel/plugin-syntax-typescript@7.25.9(@babel/core@7.26.0)': 4616 - dependencies: 4617 - '@babel/core': 7.26.0 4618 - '@babel/helper-plugin-utils': 7.25.9 4619 - 4620 - '@babel/template@7.25.9': 4621 - dependencies: 4622 - '@babel/code-frame': 7.26.2 4623 - '@babel/parser': 7.26.2 4624 - '@babel/types': 7.26.0 4625 - 4626 - '@babel/traverse@7.25.9': 4627 - dependencies: 4628 - '@babel/code-frame': 7.26.2 4629 - '@babel/generator': 7.26.2 4630 - '@babel/parser': 7.26.2 4631 - '@babel/template': 7.25.9 4632 - '@babel/types': 7.26.0 4633 - debug: 4.3.7 4634 - globals: 11.12.0 4635 - transitivePeerDependencies: 4636 - - supports-color 4637 - 4638 - '@babel/types@7.26.0': 4639 - dependencies: 4640 - '@babel/helper-string-parser': 7.25.9 4641 - '@babel/helper-validator-identifier': 7.25.9 4642 - 4643 - '@badrap/valita@0.3.16': {} 4644 - 4645 - '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': 4646 - optional: true 4647 - 4648 - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': 4649 - optional: true 4650 - 4651 - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': 4652 - optional: true 4653 - 4654 - '@cbor-extract/cbor-extract-linux-arm@2.2.0': 4655 - optional: true 4656 - 4657 - '@cbor-extract/cbor-extract-linux-x64@2.2.0': 4658 - optional: true 4659 - 4660 - '@cbor-extract/cbor-extract-win32-x64@2.2.0': 4661 - optional: true 4662 - 4663 - '@cspotcode/source-map-support@0.8.1': 4664 - dependencies: 4665 - '@jridgewell/trace-mapping': 0.3.9 4666 - 4667 - '@dnd-kit/accessibility@3.1.1(react@19.0.0)': 4668 - dependencies: 4669 - react: 19.0.0 4670 - tslib: 2.8.1 4671 - 4672 - '@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 4673 - dependencies: 4674 - '@dnd-kit/accessibility': 3.1.1(react@19.0.0) 4675 - '@dnd-kit/utilities': 3.2.2(react@19.0.0) 4676 - react: 19.0.0 4677 - react-dom: 19.0.0(react@19.0.0) 4678 - tslib: 2.8.1 4679 - 4680 - '@dnd-kit/modifiers@9.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': 4681 - dependencies: 4682 - '@dnd-kit/core': 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 4683 - '@dnd-kit/utilities': 3.2.2(react@19.0.0) 4684 - react: 19.0.0 4685 - tslib: 2.8.1 4686 - 4687 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(react@19.0.0)': 4688 - dependencies: 4689 - '@dnd-kit/core': 6.3.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 4690 - '@dnd-kit/utilities': 3.2.2(react@19.0.0) 4691 - react: 19.0.0 4692 - tslib: 2.8.1 4693 - 4694 - '@dnd-kit/utilities@3.2.2(react@19.0.0)': 4695 - dependencies: 4696 - react: 19.0.0 4697 - tslib: 2.8.1 4698 - 4699 - '@drizzle-team/brocli@0.10.2': {} 4700 - 4701 - '@esbuild-kit/core-utils@3.3.2': 4702 - dependencies: 4703 - esbuild: 0.18.20 4704 - source-map-support: 0.5.21 4705 - 4706 - '@esbuild-kit/esm-loader@2.6.5': 4707 - dependencies: 4708 - '@esbuild-kit/core-utils': 3.3.2 4709 - get-tsconfig: 4.8.1 4710 - 4711 - '@esbuild/aix-ppc64@0.19.12': 4712 - optional: true 4713 - 4714 - '@esbuild/aix-ppc64@0.23.1': 4715 - optional: true 4716 - 4717 - '@esbuild/aix-ppc64@0.24.0': 4718 - optional: true 4719 - 4720 - '@esbuild/android-arm64@0.18.20': 4721 - optional: true 4722 - 4723 - '@esbuild/android-arm64@0.19.12': 4724 - optional: true 4725 - 4726 - '@esbuild/android-arm64@0.23.1': 4727 - optional: true 4728 - 4729 - '@esbuild/android-arm64@0.24.0': 4730 - optional: true 4731 - 4732 - '@esbuild/android-arm@0.18.20': 4733 - optional: true 4734 - 4735 - '@esbuild/android-arm@0.19.12': 4736 - optional: true 4737 - 4738 - '@esbuild/android-arm@0.23.1': 4739 - optional: true 4740 - 4741 - '@esbuild/android-arm@0.24.0': 4742 - optional: true 4743 - 4744 - '@esbuild/android-x64@0.18.20': 4745 - optional: true 4746 - 4747 - '@esbuild/android-x64@0.19.12': 4748 - optional: true 4749 - 4750 - '@esbuild/android-x64@0.23.1': 4751 - optional: true 4752 - 4753 - '@esbuild/android-x64@0.24.0': 4754 - optional: true 4755 - 4756 - '@esbuild/darwin-arm64@0.18.20': 4757 - optional: true 4758 - 4759 - '@esbuild/darwin-arm64@0.19.12': 4760 - optional: true 4761 - 4762 - '@esbuild/darwin-arm64@0.23.1': 4763 - optional: true 4764 - 4765 - '@esbuild/darwin-arm64@0.24.0': 4766 - optional: true 4767 - 4768 - '@esbuild/darwin-x64@0.18.20': 4769 - optional: true 4770 - 4771 - '@esbuild/darwin-x64@0.19.12': 4772 - optional: true 4773 - 4774 - '@esbuild/darwin-x64@0.23.1': 4775 - optional: true 4776 - 4777 - '@esbuild/darwin-x64@0.24.0': 4778 - optional: true 4779 - 4780 - '@esbuild/freebsd-arm64@0.18.20': 4781 - optional: true 4782 - 4783 - '@esbuild/freebsd-arm64@0.19.12': 4784 - optional: true 4785 - 4786 - '@esbuild/freebsd-arm64@0.23.1': 4787 - optional: true 4788 - 4789 - '@esbuild/freebsd-arm64@0.24.0': 4790 - optional: true 4791 - 4792 - '@esbuild/freebsd-x64@0.18.20': 4793 - optional: true 4794 - 4795 - '@esbuild/freebsd-x64@0.19.12': 4796 - optional: true 4797 - 4798 - '@esbuild/freebsd-x64@0.23.1': 4799 - optional: true 4800 - 4801 - '@esbuild/freebsd-x64@0.24.0': 4802 - optional: true 4803 - 4804 - '@esbuild/linux-arm64@0.18.20': 4805 - optional: true 4806 - 4807 - '@esbuild/linux-arm64@0.19.12': 4808 - optional: true 4809 - 4810 - '@esbuild/linux-arm64@0.23.1': 4811 - optional: true 4812 - 4813 - '@esbuild/linux-arm64@0.24.0': 4814 - optional: true 4815 - 4816 - '@esbuild/linux-arm@0.18.20': 4817 - optional: true 4818 - 4819 - '@esbuild/linux-arm@0.19.12': 4820 - optional: true 4821 - 4822 - '@esbuild/linux-arm@0.23.1': 4823 - optional: true 4824 - 4825 - '@esbuild/linux-arm@0.24.0': 4826 - optional: true 4827 - 4828 - '@esbuild/linux-ia32@0.18.20': 4829 - optional: true 4830 - 4831 - '@esbuild/linux-ia32@0.19.12': 4832 - optional: true 4833 - 4834 - '@esbuild/linux-ia32@0.23.1': 4835 - optional: true 4836 - 4837 - '@esbuild/linux-ia32@0.24.0': 4838 - optional: true 4839 - 4840 - '@esbuild/linux-loong64@0.18.20': 4841 - optional: true 4842 - 4843 - '@esbuild/linux-loong64@0.19.12': 4844 - optional: true 4845 - 4846 - '@esbuild/linux-loong64@0.23.1': 4847 - optional: true 4848 - 4849 - '@esbuild/linux-loong64@0.24.0': 4850 - optional: true 4851 - 4852 - '@esbuild/linux-mips64el@0.18.20': 4853 - optional: true 4854 - 4855 - '@esbuild/linux-mips64el@0.19.12': 4856 - optional: true 4857 - 4858 - '@esbuild/linux-mips64el@0.23.1': 4859 - optional: true 4860 - 4861 - '@esbuild/linux-mips64el@0.24.0': 4862 - optional: true 4863 - 4864 - '@esbuild/linux-ppc64@0.18.20': 4865 - optional: true 4866 - 4867 - '@esbuild/linux-ppc64@0.19.12': 4868 - optional: true 4869 - 4870 - '@esbuild/linux-ppc64@0.23.1': 4871 - optional: true 4872 - 4873 - '@esbuild/linux-ppc64@0.24.0': 4874 - optional: true 4875 - 4876 - '@esbuild/linux-riscv64@0.18.20': 4877 - optional: true 4878 - 4879 - '@esbuild/linux-riscv64@0.19.12': 4880 - optional: true 4881 - 4882 - '@esbuild/linux-riscv64@0.23.1': 4883 - optional: true 4884 - 4885 - '@esbuild/linux-riscv64@0.24.0': 4886 - optional: true 4887 - 4888 - '@esbuild/linux-s390x@0.18.20': 4889 - optional: true 4890 - 4891 - '@esbuild/linux-s390x@0.19.12': 4892 - optional: true 4893 - 4894 - '@esbuild/linux-s390x@0.23.1': 4895 - optional: true 4896 - 4897 - '@esbuild/linux-s390x@0.24.0': 4898 - optional: true 4899 - 4900 - '@esbuild/linux-x64@0.18.20': 4901 - optional: true 4902 - 4903 - '@esbuild/linux-x64@0.19.12': 4904 - optional: true 4905 - 4906 - '@esbuild/linux-x64@0.23.1': 4907 - optional: true 4908 - 4909 - '@esbuild/linux-x64@0.24.0': 4910 - optional: true 4911 - 4912 - '@esbuild/netbsd-x64@0.18.20': 4913 - optional: true 4914 - 4915 - '@esbuild/netbsd-x64@0.19.12': 4916 - optional: true 4917 - 4918 - '@esbuild/netbsd-x64@0.23.1': 4919 - optional: true 4920 - 4921 - '@esbuild/netbsd-x64@0.24.0': 4922 - optional: true 4923 - 4924 - '@esbuild/openbsd-arm64@0.23.1': 4925 - optional: true 4926 - 4927 - '@esbuild/openbsd-arm64@0.24.0': 4928 - optional: true 4929 - 4930 - '@esbuild/openbsd-x64@0.18.20': 4931 - optional: true 4932 - 4933 - '@esbuild/openbsd-x64@0.19.12': 4934 - optional: true 4935 - 4936 - '@esbuild/openbsd-x64@0.23.1': 4937 - optional: true 4938 - 4939 - '@esbuild/openbsd-x64@0.24.0': 4940 - optional: true 4941 - 4942 - '@esbuild/sunos-x64@0.18.20': 4943 - optional: true 4944 - 4945 - '@esbuild/sunos-x64@0.19.12': 4946 - optional: true 4947 - 4948 - '@esbuild/sunos-x64@0.23.1': 4949 - optional: true 4950 - 4951 - '@esbuild/sunos-x64@0.24.0': 4952 - optional: true 4953 - 4954 - '@esbuild/win32-arm64@0.18.20': 4955 - optional: true 4956 - 4957 - '@esbuild/win32-arm64@0.19.12': 4958 - optional: true 4959 - 4960 - '@esbuild/win32-arm64@0.23.1': 4961 - optional: true 4962 - 4963 - '@esbuild/win32-arm64@0.24.0': 4964 - optional: true 4965 - 4966 - '@esbuild/win32-ia32@0.18.20': 4967 - optional: true 4968 - 4969 - '@esbuild/win32-ia32@0.19.12': 4970 - optional: true 4971 - 4972 - '@esbuild/win32-ia32@0.23.1': 4973 - optional: true 4974 - 4975 - '@esbuild/win32-ia32@0.24.0': 4976 - optional: true 4977 - 4978 - '@esbuild/win32-x64@0.18.20': 4979 - optional: true 4980 - 4981 - '@esbuild/win32-x64@0.19.12': 4982 - optional: true 4983 - 4984 - '@esbuild/win32-x64@0.23.1': 4985 - optional: true 4986 - 4987 - '@esbuild/win32-x64@0.24.0': 4988 - optional: true 4989 - 4990 - '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0(jiti@2.4.1))': 4991 - dependencies: 4992 - eslint: 9.16.0(jiti@2.4.1) 4993 - eslint-visitor-keys: 3.4.3 4994 - 4995 - '@eslint-community/regexpp@4.12.1': {} 4996 - 4997 - '@eslint/config-array@0.19.0': 4998 - dependencies: 4999 - '@eslint/object-schema': 2.1.4 5000 - debug: 4.3.7 5001 - minimatch: 3.1.2 5002 - transitivePeerDependencies: 5003 - - supports-color 5004 - 5005 - '@eslint/core@0.9.0': {} 5006 - 5007 - '@eslint/eslintrc@3.2.0': 5008 - dependencies: 5009 - ajv: 6.12.6 5010 - debug: 4.3.7 5011 - espree: 10.3.0 5012 - globals: 14.0.0 5013 - ignore: 5.3.2 5014 - import-fresh: 3.3.0 5015 - js-yaml: 4.1.0 5016 - minimatch: 3.1.2 5017 - strip-json-comments: 3.1.1 5018 - transitivePeerDependencies: 5019 - - supports-color 5020 - 5021 - '@eslint/js@9.16.0': {} 5022 - 5023 - '@eslint/object-schema@2.1.4': {} 5024 - 5025 - '@eslint/plugin-kit@0.2.3': 5026 - dependencies: 5027 - levn: 0.4.1 5028 - 5029 - '@externdefs/collider@0.1.0(@badrap/valita@0.3.16)': 5030 - dependencies: 5031 - '@badrap/valita': 0.3.16 5032 - 5033 - '@floating-ui/core@1.6.8': 5034 - dependencies: 5035 - '@floating-ui/utils': 0.2.8 5036 - 5037 - '@floating-ui/dom@1.6.12': 5038 - dependencies: 5039 - '@floating-ui/core': 1.6.8 5040 - '@floating-ui/utils': 0.2.8 5041 - 5042 - '@floating-ui/react-dom@2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5043 - dependencies: 5044 - '@floating-ui/dom': 1.6.12 5045 - react: 19.0.0 5046 - react-dom: 19.0.0(react@19.0.0) 5047 - 5048 - '@floating-ui/utils@0.2.8': {} 5049 - 5050 - '@hono/node-server@1.13.7(hono@4.6.12)': 5051 - dependencies: 5052 - hono: 4.6.12 5053 - 5054 - '@hookform/resolvers@3.9.1(react-hook-form@7.54.1(react@19.0.0))': 5055 - dependencies: 5056 - react-hook-form: 7.54.1(react@19.0.0) 5057 - 5058 - '@humanfs/core@0.19.1': {} 5059 - 5060 - '@humanfs/node@0.16.6': 5061 - dependencies: 5062 - '@humanfs/core': 0.19.1 5063 - '@humanwhocodes/retry': 0.3.1 5064 - 5065 - '@humanwhocodes/module-importer@1.0.1': {} 5066 - 5067 - '@humanwhocodes/retry@0.3.1': {} 5068 - 5069 - '@humanwhocodes/retry@0.4.1': {} 5070 - 5071 - '@ipld/dag-cbor@7.0.3': 5072 - dependencies: 5073 - cborg: 1.10.2 5074 - multiformats: 9.9.0 5075 - 5076 - '@isaacs/cliui@8.0.2': 5077 - dependencies: 5078 - string-width: 5.1.2 5079 - string-width-cjs: string-width@4.2.3 5080 - strip-ansi: 7.1.0 5081 - strip-ansi-cjs: strip-ansi@6.0.1 5082 - wrap-ansi: 8.1.0 5083 - wrap-ansi-cjs: wrap-ansi@7.0.0 5084 - 5085 - '@jridgewell/gen-mapping@0.3.5': 5086 - dependencies: 5087 - '@jridgewell/set-array': 1.2.1 5088 - '@jridgewell/sourcemap-codec': 1.5.0 5089 - '@jridgewell/trace-mapping': 0.3.25 5090 - 5091 - '@jridgewell/resolve-uri@3.1.2': {} 5092 - 5093 - '@jridgewell/set-array@1.2.1': {} 5094 - 5095 - '@jridgewell/sourcemap-codec@1.5.0': {} 5096 - 5097 - '@jridgewell/trace-mapping@0.3.25': 5098 - dependencies: 5099 - '@jridgewell/resolve-uri': 3.1.2 5100 - '@jridgewell/sourcemap-codec': 1.5.0 5101 - 5102 - '@jridgewell/trace-mapping@0.3.9': 5103 - dependencies: 5104 - '@jridgewell/resolve-uri': 3.1.2 5105 - '@jridgewell/sourcemap-codec': 1.5.0 5106 - 5107 - '@libsql/client@0.14.0(bufferutil@4.0.8)': 5108 - dependencies: 5109 - '@libsql/core': 0.14.0 5110 - '@libsql/hrana-client': 0.7.0(bufferutil@4.0.8) 5111 - js-base64: 3.7.7 5112 - libsql: 0.4.7 5113 - promise-limit: 2.7.0 5114 - transitivePeerDependencies: 5115 - - bufferutil 5116 - - utf-8-validate 5117 - 5118 - '@libsql/core@0.14.0': 5119 - dependencies: 5120 - js-base64: 3.7.7 5121 - 5122 - '@libsql/darwin-arm64@0.4.7': 5123 - optional: true 5124 - 5125 - '@libsql/darwin-x64@0.4.7': 5126 - optional: true 5127 - 5128 - '@libsql/hrana-client@0.7.0(bufferutil@4.0.8)': 5129 - dependencies: 5130 - '@libsql/isomorphic-fetch': 0.3.1 5131 - '@libsql/isomorphic-ws': 0.1.5(bufferutil@4.0.8) 5132 - js-base64: 3.7.7 5133 - node-fetch: 3.3.2 5134 - transitivePeerDependencies: 5135 - - bufferutil 5136 - - utf-8-validate 5137 - 5138 - '@libsql/isomorphic-fetch@0.3.1': {} 5139 - 5140 - '@libsql/isomorphic-ws@0.1.5(bufferutil@4.0.8)': 5141 - dependencies: 5142 - '@types/ws': 8.5.13 5143 - ws: 8.18.0(bufferutil@4.0.8) 5144 - transitivePeerDependencies: 5145 - - bufferutil 5146 - - utf-8-validate 5147 - 5148 - '@libsql/linux-arm64-gnu@0.4.7': 5149 - optional: true 5150 - 5151 - '@libsql/linux-arm64-musl@0.4.7': 5152 - optional: true 5153 - 5154 - '@libsql/linux-x64-gnu@0.4.7': 5155 - optional: true 5156 - 5157 - '@libsql/linux-x64-musl@0.4.7': 5158 - optional: true 5159 - 5160 - '@libsql/win32-x64-msvc@0.4.7': 5161 - optional: true 5162 - 5163 - '@neon-rs/load@0.0.4': {} 5164 - 5165 - '@noble/curves@1.7.0': 5166 - dependencies: 5167 - '@noble/hashes': 1.6.0 5168 - 5169 - '@noble/hashes@1.6.0': {} 5170 - 5171 - '@noble/hashes@1.6.1': {} 5172 - 5173 - '@nodelib/fs.scandir@2.1.5': 5174 - dependencies: 5175 - '@nodelib/fs.stat': 2.0.5 5176 - run-parallel: 1.2.0 5177 - 5178 - '@nodelib/fs.stat@2.0.5': {} 5179 - 5180 - '@nodelib/fs.walk@1.2.8': 5181 - dependencies: 5182 - '@nodelib/fs.scandir': 2.1.5 5183 - fastq: 1.17.1 5184 - 5185 - '@opentelemetry/api-logs@0.52.1': 5186 - dependencies: 5187 - '@opentelemetry/api': 1.9.0 5188 - 5189 - '@opentelemetry/api-logs@0.53.0': 5190 - dependencies: 5191 - '@opentelemetry/api': 1.9.0 5192 - 5193 - '@opentelemetry/api-logs@0.54.2': 5194 - dependencies: 5195 - '@opentelemetry/api': 1.9.0 5196 - 5197 - '@opentelemetry/api@1.9.0': {} 5198 - 5199 - '@opentelemetry/context-async-hooks@1.29.0(@opentelemetry/api@1.9.0)': 5200 - dependencies: 5201 - '@opentelemetry/api': 1.9.0 5202 - 5203 - '@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0)': 5204 - dependencies: 5205 - '@opentelemetry/api': 1.9.0 5206 - '@opentelemetry/semantic-conventions': 1.27.0 5207 - 5208 - '@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0)': 5209 - dependencies: 5210 - '@opentelemetry/api': 1.9.0 5211 - '@opentelemetry/semantic-conventions': 1.28.0 5212 - 5213 - '@opentelemetry/instrumentation-amqplib@0.43.0(@opentelemetry/api@1.9.0)': 5214 - dependencies: 5215 - '@opentelemetry/api': 1.9.0 5216 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5217 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5218 - '@opentelemetry/semantic-conventions': 1.28.0 5219 - transitivePeerDependencies: 5220 - - supports-color 5221 - 5222 - '@opentelemetry/instrumentation-connect@0.40.0(@opentelemetry/api@1.9.0)': 5223 - dependencies: 5224 - '@opentelemetry/api': 1.9.0 5225 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5226 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5227 - '@opentelemetry/semantic-conventions': 1.28.0 5228 - '@types/connect': 3.4.36 5229 - transitivePeerDependencies: 5230 - - supports-color 5231 - 5232 - '@opentelemetry/instrumentation-dataloader@0.12.0(@opentelemetry/api@1.9.0)': 5233 - dependencies: 5234 - '@opentelemetry/api': 1.9.0 5235 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5236 - transitivePeerDependencies: 5237 - - supports-color 5238 - 5239 - '@opentelemetry/instrumentation-express@0.44.0(@opentelemetry/api@1.9.0)': 5240 - dependencies: 5241 - '@opentelemetry/api': 1.9.0 5242 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5243 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5244 - '@opentelemetry/semantic-conventions': 1.28.0 5245 - transitivePeerDependencies: 5246 - - supports-color 5247 - 5248 - '@opentelemetry/instrumentation-fastify@0.41.0(@opentelemetry/api@1.9.0)': 5249 - dependencies: 5250 - '@opentelemetry/api': 1.9.0 5251 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5252 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5253 - '@opentelemetry/semantic-conventions': 1.28.0 5254 - transitivePeerDependencies: 5255 - - supports-color 5256 - 5257 - '@opentelemetry/instrumentation-fs@0.16.0(@opentelemetry/api@1.9.0)': 5258 - dependencies: 5259 - '@opentelemetry/api': 1.9.0 5260 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5261 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5262 - transitivePeerDependencies: 5263 - - supports-color 5264 - 5265 - '@opentelemetry/instrumentation-generic-pool@0.39.0(@opentelemetry/api@1.9.0)': 5266 - dependencies: 5267 - '@opentelemetry/api': 1.9.0 5268 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5269 - transitivePeerDependencies: 5270 - - supports-color 5271 - 5272 - '@opentelemetry/instrumentation-graphql@0.44.0(@opentelemetry/api@1.9.0)': 5273 - dependencies: 5274 - '@opentelemetry/api': 1.9.0 5275 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5276 - transitivePeerDependencies: 5277 - - supports-color 5278 - 5279 - '@opentelemetry/instrumentation-hapi@0.41.0(@opentelemetry/api@1.9.0)': 5280 - dependencies: 5281 - '@opentelemetry/api': 1.9.0 5282 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5283 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5284 - '@opentelemetry/semantic-conventions': 1.28.0 5285 - transitivePeerDependencies: 5286 - - supports-color 5287 - 5288 - '@opentelemetry/instrumentation-http@0.53.0(@opentelemetry/api@1.9.0)': 5289 - dependencies: 5290 - '@opentelemetry/api': 1.9.0 5291 - '@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0) 5292 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5293 - '@opentelemetry/semantic-conventions': 1.27.0 5294 - semver: 7.6.3 5295 - transitivePeerDependencies: 5296 - - supports-color 5297 - 5298 - '@opentelemetry/instrumentation-ioredis@0.43.0(@opentelemetry/api@1.9.0)': 5299 - dependencies: 5300 - '@opentelemetry/api': 1.9.0 5301 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5302 - '@opentelemetry/redis-common': 0.36.2 5303 - '@opentelemetry/semantic-conventions': 1.28.0 5304 - transitivePeerDependencies: 5305 - - supports-color 5306 - 5307 - '@opentelemetry/instrumentation-kafkajs@0.4.0(@opentelemetry/api@1.9.0)': 5308 - dependencies: 5309 - '@opentelemetry/api': 1.9.0 5310 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5311 - '@opentelemetry/semantic-conventions': 1.28.0 5312 - transitivePeerDependencies: 5313 - - supports-color 5314 - 5315 - '@opentelemetry/instrumentation-knex@0.41.0(@opentelemetry/api@1.9.0)': 5316 - dependencies: 5317 - '@opentelemetry/api': 1.9.0 5318 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5319 - '@opentelemetry/semantic-conventions': 1.28.0 5320 - transitivePeerDependencies: 5321 - - supports-color 5322 - 5323 - '@opentelemetry/instrumentation-koa@0.43.0(@opentelemetry/api@1.9.0)': 5324 - dependencies: 5325 - '@opentelemetry/api': 1.9.0 5326 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5327 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5328 - '@opentelemetry/semantic-conventions': 1.28.0 5329 - transitivePeerDependencies: 5330 - - supports-color 5331 - 5332 - '@opentelemetry/instrumentation-lru-memoizer@0.40.0(@opentelemetry/api@1.9.0)': 5333 - dependencies: 5334 - '@opentelemetry/api': 1.9.0 5335 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5336 - transitivePeerDependencies: 5337 - - supports-color 5338 - 5339 - '@opentelemetry/instrumentation-mongodb@0.48.0(@opentelemetry/api@1.9.0)': 5340 - dependencies: 5341 - '@opentelemetry/api': 1.9.0 5342 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5343 - '@opentelemetry/semantic-conventions': 1.28.0 5344 - transitivePeerDependencies: 5345 - - supports-color 5346 - 5347 - '@opentelemetry/instrumentation-mongoose@0.42.0(@opentelemetry/api@1.9.0)': 5348 - dependencies: 5349 - '@opentelemetry/api': 1.9.0 5350 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5351 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5352 - '@opentelemetry/semantic-conventions': 1.28.0 5353 - transitivePeerDependencies: 5354 - - supports-color 5355 - 5356 - '@opentelemetry/instrumentation-mysql2@0.41.0(@opentelemetry/api@1.9.0)': 5357 - dependencies: 5358 - '@opentelemetry/api': 1.9.0 5359 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5360 - '@opentelemetry/semantic-conventions': 1.28.0 5361 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) 5362 - transitivePeerDependencies: 5363 - - supports-color 5364 - 5365 - '@opentelemetry/instrumentation-mysql@0.41.0(@opentelemetry/api@1.9.0)': 5366 - dependencies: 5367 - '@opentelemetry/api': 1.9.0 5368 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5369 - '@opentelemetry/semantic-conventions': 1.28.0 5370 - '@types/mysql': 2.15.26 5371 - transitivePeerDependencies: 5372 - - supports-color 5373 - 5374 - '@opentelemetry/instrumentation-nestjs-core@0.40.0(@opentelemetry/api@1.9.0)': 5375 - dependencies: 5376 - '@opentelemetry/api': 1.9.0 5377 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5378 - '@opentelemetry/semantic-conventions': 1.28.0 5379 - transitivePeerDependencies: 5380 - - supports-color 5381 - 5382 - '@opentelemetry/instrumentation-pg@0.44.0(@opentelemetry/api@1.9.0)': 5383 - dependencies: 5384 - '@opentelemetry/api': 1.9.0 5385 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5386 - '@opentelemetry/semantic-conventions': 1.28.0 5387 - '@opentelemetry/sql-common': 0.40.1(@opentelemetry/api@1.9.0) 5388 - '@types/pg': 8.6.1 5389 - '@types/pg-pool': 2.0.6 5390 - transitivePeerDependencies: 5391 - - supports-color 5392 - 5393 - '@opentelemetry/instrumentation-redis-4@0.42.0(@opentelemetry/api@1.9.0)': 5394 - dependencies: 5395 - '@opentelemetry/api': 1.9.0 5396 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5397 - '@opentelemetry/redis-common': 0.36.2 5398 - '@opentelemetry/semantic-conventions': 1.28.0 5399 - transitivePeerDependencies: 5400 - - supports-color 5401 - 5402 - '@opentelemetry/instrumentation-tedious@0.15.0(@opentelemetry/api@1.9.0)': 5403 - dependencies: 5404 - '@opentelemetry/api': 1.9.0 5405 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5406 - '@opentelemetry/semantic-conventions': 1.28.0 5407 - '@types/tedious': 4.0.14 5408 - transitivePeerDependencies: 5409 - - supports-color 5410 - 5411 - '@opentelemetry/instrumentation-undici@0.6.0(@opentelemetry/api@1.9.0)': 5412 - dependencies: 5413 - '@opentelemetry/api': 1.9.0 5414 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5415 - '@opentelemetry/instrumentation': 0.53.0(@opentelemetry/api@1.9.0) 5416 - transitivePeerDependencies: 5417 - - supports-color 5418 - 5419 - '@opentelemetry/instrumentation@0.52.1(@opentelemetry/api@1.9.0)': 5420 - dependencies: 5421 - '@opentelemetry/api': 1.9.0 5422 - '@opentelemetry/api-logs': 0.52.1 5423 - '@types/shimmer': 1.2.0 5424 - import-in-the-middle: 1.11.3 5425 - require-in-the-middle: 7.4.0 5426 - semver: 7.6.3 5427 - shimmer: 1.2.1 5428 - transitivePeerDependencies: 5429 - - supports-color 5430 - 5431 - '@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0)': 5432 - dependencies: 5433 - '@opentelemetry/api': 1.9.0 5434 - '@opentelemetry/api-logs': 0.53.0 5435 - '@types/shimmer': 1.2.0 5436 - import-in-the-middle: 1.11.3 5437 - require-in-the-middle: 7.4.0 5438 - semver: 7.6.3 5439 - shimmer: 1.2.1 5440 - transitivePeerDependencies: 5441 - - supports-color 5442 - 5443 - '@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0)': 5444 - dependencies: 5445 - '@opentelemetry/api': 1.9.0 5446 - '@opentelemetry/api-logs': 0.54.2 5447 - '@types/shimmer': 1.2.0 5448 - import-in-the-middle: 1.11.3 5449 - require-in-the-middle: 7.4.0 5450 - semver: 7.6.3 5451 - shimmer: 1.2.1 5452 - transitivePeerDependencies: 5453 - - supports-color 5454 - 5455 - '@opentelemetry/redis-common@0.36.2': {} 5456 - 5457 - '@opentelemetry/resources@1.29.0(@opentelemetry/api@1.9.0)': 5458 - dependencies: 5459 - '@opentelemetry/api': 1.9.0 5460 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5461 - '@opentelemetry/semantic-conventions': 1.28.0 5462 - 5463 - '@opentelemetry/sdk-trace-base@1.29.0(@opentelemetry/api@1.9.0)': 5464 - dependencies: 5465 - '@opentelemetry/api': 1.9.0 5466 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5467 - '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) 5468 - '@opentelemetry/semantic-conventions': 1.28.0 5469 - 5470 - '@opentelemetry/semantic-conventions@1.27.0': {} 5471 - 5472 - '@opentelemetry/semantic-conventions@1.28.0': {} 5473 - 5474 - '@opentelemetry/sql-common@0.40.1(@opentelemetry/api@1.9.0)': 5475 - dependencies: 5476 - '@opentelemetry/api': 1.9.0 5477 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5478 - 5479 - '@pkgjs/parseargs@0.11.0': 5480 - optional: true 5481 - 5482 - '@prisma/instrumentation@5.19.1': 5483 - dependencies: 5484 - '@opentelemetry/api': 1.9.0 5485 - '@opentelemetry/instrumentation': 0.52.1(@opentelemetry/api@1.9.0) 5486 - '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) 5487 - transitivePeerDependencies: 5488 - - supports-color 5489 - 5490 - '@radix-ui/primitive@1.1.0': {} 5491 - 5492 - '@radix-ui/primitive@1.1.1': {} 5493 - 5494 - '@radix-ui/react-arrow@1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5495 - dependencies: 5496 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5497 - react: 19.0.0 5498 - react-dom: 19.0.0(react@19.0.0) 5499 - optionalDependencies: 5500 - '@types/react': 19.0.1 5501 - '@types/react-dom': 19.0.1 5502 - 5503 - '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5504 - dependencies: 5505 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5506 - react: 19.0.0 5507 - react-dom: 19.0.0(react@19.0.0) 5508 - optionalDependencies: 5509 - '@types/react': 19.0.1 5510 - '@types/react-dom': 19.0.1 5511 - 5512 - '@radix-ui/react-avatar@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5513 - dependencies: 5514 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5515 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5516 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5517 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5518 - react: 19.0.0 5519 - react-dom: 19.0.0(react@19.0.0) 5520 - optionalDependencies: 5521 - '@types/react': 19.0.1 5522 - '@types/react-dom': 19.0.1 5523 - 5524 - '@radix-ui/react-collapsible@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5525 - dependencies: 5526 - '@radix-ui/primitive': 1.1.0 5527 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5528 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5529 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5530 - '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5531 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5532 - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5533 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5534 - react: 19.0.0 5535 - react-dom: 19.0.0(react@19.0.0) 5536 - optionalDependencies: 5537 - '@types/react': 19.0.1 5538 - '@types/react-dom': 19.0.1 5539 - 5540 - '@radix-ui/react-collection@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5541 - dependencies: 5542 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5543 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5544 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5545 - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5546 - react: 19.0.0 5547 - react-dom: 19.0.0(react@19.0.0) 5548 - optionalDependencies: 5549 - '@types/react': 19.0.1 5550 - '@types/react-dom': 19.0.1 5551 - 5552 - '@radix-ui/react-compose-refs@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5553 - dependencies: 5554 - react: 19.0.0 5555 - optionalDependencies: 5556 - '@types/react': 19.0.1 5557 - 5558 - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.0.1)(react@19.0.0)': 5559 - dependencies: 5560 - react: 19.0.0 5561 - optionalDependencies: 5562 - '@types/react': 19.0.1 5563 - 5564 - '@radix-ui/react-context@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5565 - dependencies: 5566 - react: 19.0.0 5567 - optionalDependencies: 5568 - '@types/react': 19.0.1 5569 - 5570 - '@radix-ui/react-context@1.1.1(@types/react@19.0.1)(react@19.0.0)': 5571 - dependencies: 5572 - react: 19.0.0 5573 - optionalDependencies: 5574 - '@types/react': 19.0.1 5575 - 5576 - '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5577 - dependencies: 5578 - '@radix-ui/primitive': 1.1.1 5579 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5580 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5581 - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5582 - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5583 - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5584 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5585 - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5586 - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5587 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5588 - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5589 - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5590 - aria-hidden: 1.2.4 5591 - react: 19.0.0 5592 - react-dom: 19.0.0(react@19.0.0) 5593 - react-remove-scroll: 2.6.2(@types/react@19.0.1)(react@19.0.0) 5594 - optionalDependencies: 5595 - '@types/react': 19.0.1 5596 - '@types/react-dom': 19.0.1 5597 - 5598 - '@radix-ui/react-direction@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5599 - dependencies: 5600 - react: 19.0.0 5601 - optionalDependencies: 5602 - '@types/react': 19.0.1 5603 - 5604 - '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5605 - dependencies: 5606 - '@radix-ui/primitive': 1.1.0 5607 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5608 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5609 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5610 - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5611 - react: 19.0.0 5612 - react-dom: 19.0.0(react@19.0.0) 5613 - optionalDependencies: 5614 - '@types/react': 19.0.1 5615 - '@types/react-dom': 19.0.1 5616 - 5617 - '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5618 - dependencies: 5619 - '@radix-ui/primitive': 1.1.1 5620 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5621 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5622 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5623 - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5624 - react: 19.0.0 5625 - react-dom: 19.0.0(react@19.0.0) 5626 - optionalDependencies: 5627 - '@types/react': 19.0.1 5628 - '@types/react-dom': 19.0.1 5629 - 5630 - '@radix-ui/react-dropdown-menu@2.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5631 - dependencies: 5632 - '@radix-ui/primitive': 1.1.1 5633 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5634 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5635 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5636 - '@radix-ui/react-menu': 2.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5637 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5638 - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5639 - react: 19.0.0 5640 - react-dom: 19.0.0(react@19.0.0) 5641 - optionalDependencies: 5642 - '@types/react': 19.0.1 5643 - '@types/react-dom': 19.0.1 5644 - 5645 - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.1)(react@19.0.0)': 5646 - dependencies: 5647 - react: 19.0.0 5648 - optionalDependencies: 5649 - '@types/react': 19.0.1 5650 - 5651 - '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5652 - dependencies: 5653 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5654 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5655 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5656 - react: 19.0.0 5657 - react-dom: 19.0.0(react@19.0.0) 5658 - optionalDependencies: 5659 - '@types/react': 19.0.1 5660 - '@types/react-dom': 19.0.1 5661 - 5662 - '@radix-ui/react-icons@1.3.2(react@19.0.0)': 5663 - dependencies: 5664 - react: 19.0.0 5665 - 5666 - '@radix-ui/react-id@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5667 - dependencies: 5668 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5669 - react: 19.0.0 5670 - optionalDependencies: 5671 - '@types/react': 19.0.1 5672 - 5673 - '@radix-ui/react-label@2.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5674 - dependencies: 5675 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5676 - react: 19.0.0 5677 - react-dom: 19.0.0(react@19.0.0) 5678 - optionalDependencies: 5679 - '@types/react': 19.0.1 5680 - '@types/react-dom': 19.0.1 5681 - 5682 - '@radix-ui/react-menu@2.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5683 - dependencies: 5684 - '@radix-ui/primitive': 1.1.1 5685 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5686 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5687 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5688 - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5689 - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5690 - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5691 - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5692 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5693 - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5694 - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5695 - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5696 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5697 - '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5698 - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5699 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5700 - aria-hidden: 1.2.4 5701 - react: 19.0.0 5702 - react-dom: 19.0.0(react@19.0.0) 5703 - react-remove-scroll: 2.6.2(@types/react@19.0.1)(react@19.0.0) 5704 - optionalDependencies: 5705 - '@types/react': 19.0.1 5706 - '@types/react-dom': 19.0.1 5707 - 5708 - '@radix-ui/react-popper@1.2.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5709 - dependencies: 5710 - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5711 - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5712 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5713 - '@radix-ui/react-context': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5714 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5715 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5716 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5717 - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5718 - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5719 - '@radix-ui/rect': 1.1.0 5720 - react: 19.0.0 5721 - react-dom: 19.0.0(react@19.0.0) 5722 - optionalDependencies: 5723 - '@types/react': 19.0.1 5724 - '@types/react-dom': 19.0.1 5725 - 5726 - '@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5727 - dependencies: 5728 - '@floating-ui/react-dom': 2.1.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5729 - '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5730 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5731 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5732 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5733 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5734 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5735 - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5736 - '@radix-ui/react-use-size': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5737 - '@radix-ui/rect': 1.1.0 5738 - react: 19.0.0 5739 - react-dom: 19.0.0(react@19.0.0) 5740 - optionalDependencies: 5741 - '@types/react': 19.0.1 5742 - '@types/react-dom': 19.0.1 5743 - 5744 - '@radix-ui/react-portal@1.1.2(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5745 - dependencies: 5746 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5747 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5748 - react: 19.0.0 5749 - react-dom: 19.0.0(react@19.0.0) 5750 - optionalDependencies: 5751 - '@types/react': 19.0.1 5752 - '@types/react-dom': 19.0.1 5753 - 5754 - '@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5755 - dependencies: 5756 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5757 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5758 - react: 19.0.0 5759 - react-dom: 19.0.0(react@19.0.0) 5760 - optionalDependencies: 5761 - '@types/react': 19.0.1 5762 - '@types/react-dom': 19.0.1 5763 - 5764 - '@radix-ui/react-presence@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5765 - dependencies: 5766 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5767 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5768 - react: 19.0.0 5769 - react-dom: 19.0.0(react@19.0.0) 5770 - optionalDependencies: 5771 - '@types/react': 19.0.1 5772 - '@types/react-dom': 19.0.1 5773 - 5774 - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5775 - dependencies: 5776 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5777 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5778 - react: 19.0.0 5779 - react-dom: 19.0.0(react@19.0.0) 5780 - optionalDependencies: 5781 - '@types/react': 19.0.1 5782 - '@types/react-dom': 19.0.1 5783 - 5784 - '@radix-ui/react-primitive@2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5785 - dependencies: 5786 - '@radix-ui/react-slot': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5787 - react: 19.0.0 5788 - react-dom: 19.0.0(react@19.0.0) 5789 - optionalDependencies: 5790 - '@types/react': 19.0.1 5791 - '@types/react-dom': 19.0.1 5792 - 5793 - '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5794 - dependencies: 5795 - '@radix-ui/react-slot': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5796 - react: 19.0.0 5797 - react-dom: 19.0.0(react@19.0.0) 5798 - optionalDependencies: 5799 - '@types/react': 19.0.1 5800 - '@types/react-dom': 19.0.1 5801 - 5802 - '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5803 - dependencies: 5804 - '@radix-ui/primitive': 1.1.1 5805 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5806 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5807 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5808 - '@radix-ui/react-direction': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5809 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5810 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5811 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5812 - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5813 - react: 19.0.0 5814 - react-dom: 19.0.0(react@19.0.0) 5815 - optionalDependencies: 5816 - '@types/react': 19.0.1 5817 - '@types/react-dom': 19.0.1 5818 - 5819 - '@radix-ui/react-separator@1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5820 - dependencies: 5821 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5822 - react: 19.0.0 5823 - react-dom: 19.0.0(react@19.0.0) 5824 - optionalDependencies: 5825 - '@types/react': 19.0.1 5826 - '@types/react-dom': 19.0.1 5827 - 5828 - '@radix-ui/react-slot@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5829 - dependencies: 5830 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5831 - react: 19.0.0 5832 - optionalDependencies: 5833 - '@types/react': 19.0.1 5834 - 5835 - '@radix-ui/react-slot@1.1.1(@types/react@19.0.1)(react@19.0.0)': 5836 - dependencies: 5837 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5838 - react: 19.0.0 5839 - optionalDependencies: 5840 - '@types/react': 19.0.1 5841 - 5842 - '@radix-ui/react-tooltip@1.1.4(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5843 - dependencies: 5844 - '@radix-ui/primitive': 1.1.0 5845 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5846 - '@radix-ui/react-context': 1.1.1(@types/react@19.0.1)(react@19.0.0) 5847 - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5848 - '@radix-ui/react-id': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5849 - '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5850 - '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5851 - '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5852 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5853 - '@radix-ui/react-slot': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5854 - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5855 - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5856 - react: 19.0.0 5857 - react-dom: 19.0.0(react@19.0.0) 5858 - optionalDependencies: 5859 - '@types/react': 19.0.1 5860 - '@types/react-dom': 19.0.1 5861 - 5862 - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5863 - dependencies: 5864 - react: 19.0.0 5865 - optionalDependencies: 5866 - '@types/react': 19.0.1 5867 - 5868 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5869 - dependencies: 5870 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5871 - react: 19.0.0 5872 - optionalDependencies: 5873 - '@types/react': 19.0.1 5874 - 5875 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5876 - dependencies: 5877 - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5878 - react: 19.0.0 5879 - optionalDependencies: 5880 - '@types/react': 19.0.1 5881 - 5882 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5883 - dependencies: 5884 - react: 19.0.0 5885 - optionalDependencies: 5886 - '@types/react': 19.0.1 5887 - 5888 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5889 - dependencies: 5890 - '@radix-ui/rect': 1.1.0 5891 - react: 19.0.0 5892 - optionalDependencies: 5893 - '@types/react': 19.0.1 5894 - 5895 - '@radix-ui/react-use-size@1.1.0(@types/react@19.0.1)(react@19.0.0)': 5896 - dependencies: 5897 - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.1)(react@19.0.0) 5898 - react: 19.0.0 5899 - optionalDependencies: 5900 - '@types/react': 19.0.1 5901 - 5902 - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 5903 - dependencies: 5904 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.0.1)(@types/react@19.0.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 5905 - react: 19.0.0 5906 - react-dom: 19.0.0(react@19.0.0) 5907 - optionalDependencies: 5908 - '@types/react': 19.0.1 5909 - '@types/react-dom': 19.0.1 5910 - 5911 - '@radix-ui/rect@1.1.0': {} 5912 - 5913 - '@rollup/rollup-android-arm-eabi@4.28.0': 5914 - optional: true 5915 - 5916 - '@rollup/rollup-android-arm64@4.28.0': 5917 - optional: true 5918 - 5919 - '@rollup/rollup-darwin-arm64@4.28.0': 5920 - optional: true 5921 - 5922 - '@rollup/rollup-darwin-x64@4.28.0': 5923 - optional: true 5924 - 5925 - '@rollup/rollup-freebsd-arm64@4.28.0': 5926 - optional: true 5927 - 5928 - '@rollup/rollup-freebsd-x64@4.28.0': 5929 - optional: true 5930 - 5931 - '@rollup/rollup-linux-arm-gnueabihf@4.28.0': 5932 - optional: true 5933 - 5934 - '@rollup/rollup-linux-arm-musleabihf@4.28.0': 5935 - optional: true 5936 - 5937 - '@rollup/rollup-linux-arm64-gnu@4.28.0': 5938 - optional: true 5939 - 5940 - '@rollup/rollup-linux-arm64-musl@4.28.0': 5941 - optional: true 5942 - 5943 - '@rollup/rollup-linux-powerpc64le-gnu@4.28.0': 5944 - optional: true 5945 - 5946 - '@rollup/rollup-linux-riscv64-gnu@4.28.0': 5947 - optional: true 5948 - 5949 - '@rollup/rollup-linux-s390x-gnu@4.28.0': 5950 - optional: true 5951 - 5952 - '@rollup/rollup-linux-x64-gnu@4.28.0': 5953 - optional: true 5954 - 5955 - '@rollup/rollup-linux-x64-musl@4.28.0': 5956 - optional: true 5957 - 5958 - '@rollup/rollup-win32-arm64-msvc@4.28.0': 5959 - optional: true 5960 - 5961 - '@rollup/rollup-win32-ia32-msvc@4.28.0': 5962 - optional: true 5963 - 5964 - '@rollup/rollup-win32-x64-msvc@4.28.0': 5965 - optional: true 5966 - 5967 - '@sentry/core@8.42.0': {} 5968 - 5969 - '@sentry/node@8.42.0': 5970 - dependencies: 5971 - '@opentelemetry/api': 1.9.0 5972 - '@opentelemetry/context-async-hooks': 1.29.0(@opentelemetry/api@1.9.0) 5973 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 5974 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 5975 - '@opentelemetry/instrumentation-amqplib': 0.43.0(@opentelemetry/api@1.9.0) 5976 - '@opentelemetry/instrumentation-connect': 0.40.0(@opentelemetry/api@1.9.0) 5977 - '@opentelemetry/instrumentation-dataloader': 0.12.0(@opentelemetry/api@1.9.0) 5978 - '@opentelemetry/instrumentation-express': 0.44.0(@opentelemetry/api@1.9.0) 5979 - '@opentelemetry/instrumentation-fastify': 0.41.0(@opentelemetry/api@1.9.0) 5980 - '@opentelemetry/instrumentation-fs': 0.16.0(@opentelemetry/api@1.9.0) 5981 - '@opentelemetry/instrumentation-generic-pool': 0.39.0(@opentelemetry/api@1.9.0) 5982 - '@opentelemetry/instrumentation-graphql': 0.44.0(@opentelemetry/api@1.9.0) 5983 - '@opentelemetry/instrumentation-hapi': 0.41.0(@opentelemetry/api@1.9.0) 5984 - '@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0) 5985 - '@opentelemetry/instrumentation-ioredis': 0.43.0(@opentelemetry/api@1.9.0) 5986 - '@opentelemetry/instrumentation-kafkajs': 0.4.0(@opentelemetry/api@1.9.0) 5987 - '@opentelemetry/instrumentation-knex': 0.41.0(@opentelemetry/api@1.9.0) 5988 - '@opentelemetry/instrumentation-koa': 0.43.0(@opentelemetry/api@1.9.0) 5989 - '@opentelemetry/instrumentation-lru-memoizer': 0.40.0(@opentelemetry/api@1.9.0) 5990 - '@opentelemetry/instrumentation-mongodb': 0.48.0(@opentelemetry/api@1.9.0) 5991 - '@opentelemetry/instrumentation-mongoose': 0.42.0(@opentelemetry/api@1.9.0) 5992 - '@opentelemetry/instrumentation-mysql': 0.41.0(@opentelemetry/api@1.9.0) 5993 - '@opentelemetry/instrumentation-mysql2': 0.41.0(@opentelemetry/api@1.9.0) 5994 - '@opentelemetry/instrumentation-nestjs-core': 0.40.0(@opentelemetry/api@1.9.0) 5995 - '@opentelemetry/instrumentation-pg': 0.44.0(@opentelemetry/api@1.9.0) 5996 - '@opentelemetry/instrumentation-redis-4': 0.42.0(@opentelemetry/api@1.9.0) 5997 - '@opentelemetry/instrumentation-tedious': 0.15.0(@opentelemetry/api@1.9.0) 5998 - '@opentelemetry/instrumentation-undici': 0.6.0(@opentelemetry/api@1.9.0) 5999 - '@opentelemetry/resources': 1.29.0(@opentelemetry/api@1.9.0) 6000 - '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) 6001 - '@opentelemetry/semantic-conventions': 1.28.0 6002 - '@prisma/instrumentation': 5.19.1 6003 - '@sentry/core': 8.42.0 6004 - '@sentry/opentelemetry': 8.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.29.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0) 6005 - import-in-the-middle: 1.11.3 6006 - transitivePeerDependencies: 6007 - - supports-color 6008 - 6009 - '@sentry/opentelemetry@8.42.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.29.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.54.2(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.29.0(@opentelemetry/api@1.9.0))(@opentelemetry/semantic-conventions@1.28.0)': 6010 - dependencies: 6011 - '@opentelemetry/api': 1.9.0 6012 - '@opentelemetry/core': 1.29.0(@opentelemetry/api@1.9.0) 6013 - '@opentelemetry/instrumentation': 0.54.2(@opentelemetry/api@1.9.0) 6014 - '@opentelemetry/sdk-trace-base': 1.29.0(@opentelemetry/api@1.9.0) 6015 - '@opentelemetry/semantic-conventions': 1.28.0 6016 - '@sentry/core': 8.42.0 6017 - 6018 - '@skyware/jetstream@0.2.1(@atcute/client@2.0.6)': 6019 - dependencies: 6020 - '@atcute/bluesky': 1.0.9(@atcute/client@2.0.6) 6021 - partysocket: 1.0.2 6022 - transitivePeerDependencies: 6023 - - '@atcute/client' 6024 - 6025 - '@swc/core-darwin-arm64@1.9.3': 6026 - optional: true 6027 - 6028 - '@swc/core-darwin-x64@1.9.3': 6029 - optional: true 6030 - 6031 - '@swc/core-linux-arm-gnueabihf@1.9.3': 6032 - optional: true 6033 - 6034 - '@swc/core-linux-arm64-gnu@1.9.3': 6035 - optional: true 6036 - 6037 - '@swc/core-linux-arm64-musl@1.9.3': 6038 - optional: true 6039 - 6040 - '@swc/core-linux-x64-gnu@1.9.3': 6041 - optional: true 6042 - 6043 - '@swc/core-linux-x64-musl@1.9.3': 6044 - optional: true 6045 - 6046 - '@swc/core-win32-arm64-msvc@1.9.3': 6047 - optional: true 6048 - 6049 - '@swc/core-win32-ia32-msvc@1.9.3': 6050 - optional: true 6051 - 6052 - '@swc/core-win32-x64-msvc@1.9.3': 6053 - optional: true 6054 - 6055 - '@swc/core@1.9.3': 6056 - dependencies: 6057 - '@swc/counter': 0.1.3 6058 - '@swc/types': 0.1.17 6059 - optionalDependencies: 6060 - '@swc/core-darwin-arm64': 1.9.3 6061 - '@swc/core-darwin-x64': 1.9.3 6062 - '@swc/core-linux-arm-gnueabihf': 1.9.3 6063 - '@swc/core-linux-arm64-gnu': 1.9.3 6064 - '@swc/core-linux-arm64-musl': 1.9.3 6065 - '@swc/core-linux-x64-gnu': 1.9.3 6066 - '@swc/core-linux-x64-musl': 1.9.3 6067 - '@swc/core-win32-arm64-msvc': 1.9.3 6068 - '@swc/core-win32-ia32-msvc': 1.9.3 6069 - '@swc/core-win32-x64-msvc': 1.9.3 6070 - 6071 - '@swc/counter@0.1.3': {} 6072 - 6073 - '@swc/types@0.1.17': 6074 - dependencies: 6075 - '@swc/counter': 0.1.3 6076 - 6077 - '@tanstack/eslint-plugin-query@5.62.1(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3)': 6078 - dependencies: 6079 - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 6080 - eslint: 9.16.0(jiti@2.4.1) 6081 - transitivePeerDependencies: 6082 - - supports-color 6083 - - typescript 6084 - 6085 - '@tanstack/history@1.90.0': {} 6086 - 6087 - '@tanstack/query-core@5.62.2': {} 6088 - 6089 - '@tanstack/query-devtools@5.61.4': {} 6090 - 6091 - '@tanstack/react-query-devtools@5.62.2(@tanstack/react-query@5.62.2(react@19.0.0))(react@19.0.0)': 6092 - dependencies: 6093 - '@tanstack/query-devtools': 5.61.4 6094 - '@tanstack/react-query': 5.62.2(react@19.0.0) 6095 - react: 19.0.0 6096 - 6097 - '@tanstack/react-query@5.62.2(react@19.0.0)': 6098 - dependencies: 6099 - '@tanstack/query-core': 5.62.2 6100 - react: 19.0.0 6101 - 6102 - '@tanstack/react-router@1.91.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 6103 - dependencies: 6104 - '@tanstack/history': 1.90.0 6105 - '@tanstack/react-store': 0.6.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 6106 - jsesc: 3.0.2 6107 - react: 19.0.0 6108 - react-dom: 19.0.0(react@19.0.0) 6109 - tiny-invariant: 1.3.3 6110 - tiny-warning: 1.0.3 6111 - 6112 - '@tanstack/react-store@0.6.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 6113 - dependencies: 6114 - '@tanstack/store': 0.6.0 6115 - react: 19.0.0 6116 - react-dom: 19.0.0(react@19.0.0) 6117 - use-sync-external-store: 1.2.2(react@19.0.0) 6118 - 6119 - '@tanstack/router-devtools@1.85.5(@tanstack/react-router@1.91.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0))(csstype@3.1.3)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)': 6120 - dependencies: 6121 - '@tanstack/react-router': 1.91.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) 6122 - clsx: 2.1.1 6123 - goober: 2.1.16(csstype@3.1.3) 6124 - react: 19.0.0 6125 - react-dom: 19.0.0(react@19.0.0) 6126 - transitivePeerDependencies: 6127 - - csstype 6128 - 6129 - '@tanstack/router-generator@1.85.3': 6130 - dependencies: 6131 - '@tanstack/virtual-file-routes': 1.81.9 6132 - prettier: 3.4.1 6133 - tsx: 4.19.2 6134 - zod: 3.23.8 6135 - 6136 - '@tanstack/router-plugin@1.85.3(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1))': 6137 - dependencies: 6138 - '@babel/core': 7.26.0 6139 - '@babel/generator': 7.26.2 6140 - '@babel/parser': 7.26.2 6141 - '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) 6142 - '@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0) 6143 - '@babel/template': 7.25.9 6144 - '@babel/traverse': 7.25.9 6145 - '@babel/types': 7.26.0 6146 - '@tanstack/router-generator': 1.85.3 6147 - '@tanstack/virtual-file-routes': 1.81.9 6148 - '@types/babel__core': 7.20.5 6149 - '@types/babel__generator': 7.6.8 6150 - '@types/babel__template': 7.4.4 6151 - '@types/babel__traverse': 7.20.6 6152 - babel-dead-code-elimination: 1.0.6 6153 - chokidar: 3.6.0 6154 - unplugin: 1.16.0 6155 - zod: 3.23.8 6156 - optionalDependencies: 6157 - vite: 6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1) 6158 - transitivePeerDependencies: 6159 - - supports-color 6160 - 6161 - '@tanstack/store@0.6.0': {} 6162 - 6163 - '@tanstack/virtual-file-routes@1.81.9': {} 6164 - 6165 - '@trysound/sax@0.2.0': {} 6166 - 6167 - '@tsconfig/node10@1.0.11': {} 6168 - 6169 - '@tsconfig/node12@1.0.11': {} 6170 - 6171 - '@tsconfig/node14@1.0.3': {} 6172 - 6173 - '@tsconfig/node16@1.0.4': {} 6174 - 6175 - '@types/babel__core@7.20.5': 6176 - dependencies: 6177 - '@babel/parser': 7.26.2 6178 - '@babel/types': 7.26.0 6179 - '@types/babel__generator': 7.6.8 6180 - '@types/babel__template': 7.4.4 6181 - '@types/babel__traverse': 7.20.6 6182 - 6183 - '@types/babel__generator@7.6.8': 6184 - dependencies: 6185 - '@babel/types': 7.26.0 6186 - 6187 - '@types/babel__template@7.4.4': 6188 - dependencies: 6189 - '@babel/parser': 7.26.2 6190 - '@babel/types': 7.26.0 6191 - 6192 - '@types/babel__traverse@7.20.6': 6193 - dependencies: 6194 - '@babel/types': 7.26.0 6195 - 6196 - '@types/connect@3.4.36': 6197 - dependencies: 6198 - '@types/node': 22.10.1 6199 - 6200 - '@types/estree@1.0.6': {} 6201 - 6202 - '@types/json-schema@7.0.15': {} 6203 - 6204 - '@types/mysql@2.15.26': 6205 - dependencies: 6206 - '@types/node': 22.10.1 6207 - 6208 - '@types/node@22.10.1': 6209 - dependencies: 6210 - undici-types: 6.20.0 6211 - 6212 - '@types/pg-pool@2.0.6': 6213 - dependencies: 6214 - '@types/pg': 8.6.1 6215 - 6216 - '@types/pg@8.6.1': 6217 - dependencies: 6218 - '@types/node': 22.10.1 6219 - pg-protocol: 1.7.0 6220 - pg-types: 2.2.0 6221 - 6222 - '@types/react-dom@19.0.1': 6223 - dependencies: 6224 - '@types/react': 19.0.1 6225 - 6226 - '@types/react@19.0.1': 6227 - dependencies: 6228 - csstype: 3.1.3 6229 - 6230 - '@types/shimmer@1.2.0': {} 6231 - 6232 - '@types/tedious@4.0.14': 6233 - dependencies: 6234 - '@types/node': 22.10.1 6235 - 6236 - '@types/ws@8.5.13': 6237 - dependencies: 6238 - '@types/node': 22.10.1 6239 - 6240 - '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3)': 6241 - dependencies: 6242 - '@eslint-community/regexpp': 4.12.1 6243 - '@typescript-eslint/parser': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 6244 - '@typescript-eslint/scope-manager': 8.17.0 6245 - '@typescript-eslint/type-utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 6246 - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 6247 - '@typescript-eslint/visitor-keys': 8.17.0 6248 - eslint: 9.16.0(jiti@2.4.1) 6249 - graphemer: 1.4.0 6250 - ignore: 5.3.2 6251 - natural-compare: 1.4.0 6252 - ts-api-utils: 1.4.3(typescript@5.6.3) 6253 - optionalDependencies: 6254 - typescript: 5.6.3 6255 - transitivePeerDependencies: 6256 - - supports-color 6257 - 6258 - '@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3)': 6259 - dependencies: 6260 - '@typescript-eslint/scope-manager': 8.17.0 6261 - '@typescript-eslint/types': 8.17.0 6262 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.3) 6263 - '@typescript-eslint/visitor-keys': 8.17.0 6264 - debug: 4.3.7 6265 - eslint: 9.16.0(jiti@2.4.1) 6266 - optionalDependencies: 6267 - typescript: 5.6.3 6268 - transitivePeerDependencies: 6269 - - supports-color 6270 - 6271 - '@typescript-eslint/scope-manager@8.17.0': 6272 - dependencies: 6273 - '@typescript-eslint/types': 8.17.0 6274 - '@typescript-eslint/visitor-keys': 8.17.0 6275 - 6276 - '@typescript-eslint/type-utils@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3)': 6277 - dependencies: 6278 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.3) 6279 - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 6280 - debug: 4.3.7 6281 - eslint: 9.16.0(jiti@2.4.1) 6282 - ts-api-utils: 1.4.3(typescript@5.6.3) 6283 - optionalDependencies: 6284 - typescript: 5.6.3 6285 - transitivePeerDependencies: 6286 - - supports-color 6287 - 6288 - '@typescript-eslint/types@8.17.0': {} 6289 - 6290 - '@typescript-eslint/typescript-estree@8.17.0(typescript@5.6.3)': 6291 - dependencies: 6292 - '@typescript-eslint/types': 8.17.0 6293 - '@typescript-eslint/visitor-keys': 8.17.0 6294 - debug: 4.3.7 6295 - fast-glob: 3.3.2 6296 - is-glob: 4.0.3 6297 - minimatch: 9.0.5 6298 - semver: 7.6.3 6299 - ts-api-utils: 1.4.3(typescript@5.6.3) 6300 - optionalDependencies: 6301 - typescript: 5.6.3 6302 - transitivePeerDependencies: 6303 - - supports-color 6304 - 6305 - '@typescript-eslint/utils@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3)': 6306 - dependencies: 6307 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.1)) 6308 - '@typescript-eslint/scope-manager': 8.17.0 6309 - '@typescript-eslint/types': 8.17.0 6310 - '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.6.3) 6311 - eslint: 9.16.0(jiti@2.4.1) 6312 - optionalDependencies: 6313 - typescript: 5.6.3 6314 - transitivePeerDependencies: 6315 - - supports-color 6316 - 6317 - '@typescript-eslint/visitor-keys@8.17.0': 6318 - dependencies: 6319 - '@typescript-eslint/types': 8.17.0 6320 - eslint-visitor-keys: 4.2.0 6321 - 6322 - '@vitejs/plugin-react-swc@3.7.2(vite@6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1))': 6323 - dependencies: 6324 - '@swc/core': 1.9.3 6325 - vite: 6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1) 6326 - transitivePeerDependencies: 6327 - - '@swc/helpers' 6328 - 6329 - abort-controller@3.0.0: 6330 - dependencies: 6331 - event-target-shim: 5.0.1 6332 - 6333 - acorn-import-attributes@1.9.5(acorn@8.14.0): 6334 - dependencies: 6335 - acorn: 8.14.0 6336 - 6337 - acorn-jsx@5.3.2(acorn@8.14.0): 6338 - dependencies: 6339 - acorn: 8.14.0 6340 - 6341 - acorn-walk@8.3.4: 6342 - dependencies: 6343 - acorn: 8.14.0 6344 - 6345 - acorn@8.14.0: {} 6346 - 6347 - ajv@6.12.6: 6348 - dependencies: 6349 - fast-deep-equal: 3.1.3 6350 - fast-json-stable-stringify: 2.1.0 6351 - json-schema-traverse: 0.4.1 6352 - uri-js: 4.4.1 6353 - 6354 - ansi-regex@5.0.1: {} 6355 - 6356 - ansi-regex@6.1.0: {} 6357 - 6358 - ansi-styles@4.3.0: 6359 - dependencies: 6360 - color-convert: 2.0.1 6361 - 6362 - ansi-styles@6.2.1: {} 6363 - 6364 - any-promise@1.3.0: {} 6365 - 6366 - anymatch@3.1.3: 6367 - dependencies: 6368 - normalize-path: 3.0.0 6369 - picomatch: 2.3.1 6370 - 6371 - arg@4.1.3: {} 6372 - 6373 - arg@5.0.2: {} 6374 - 6375 - argparse@2.0.1: {} 6376 - 6377 - aria-hidden@1.2.4: 6378 - dependencies: 6379 - tslib: 2.8.1 6380 - 6381 - asynckit@0.4.0: {} 6382 - 6383 - atomic-sleep@1.0.0: {} 6384 - 6385 - autoprefixer@10.4.20(postcss@8.4.49): 6386 - dependencies: 6387 - browserslist: 4.24.2 6388 - caniuse-lite: 1.0.30001686 6389 - fraction.js: 4.3.7 6390 - normalize-range: 0.1.2 6391 - picocolors: 1.1.1 6392 - postcss: 8.4.49 6393 - postcss-value-parser: 4.2.0 6394 - 6395 - await-lock@2.2.2: {} 6396 - 6397 - axios@1.7.9: 6398 - dependencies: 6399 - follow-redirects: 1.15.9 6400 - form-data: 4.0.1 6401 - proxy-from-env: 1.1.0 6402 - transitivePeerDependencies: 6403 - - debug 6404 - 6405 - babel-dead-code-elimination@1.0.6: 6406 - dependencies: 6407 - '@babel/core': 7.26.0 6408 - '@babel/parser': 7.26.2 6409 - '@babel/traverse': 7.25.9 6410 - '@babel/types': 7.26.0 6411 - transitivePeerDependencies: 6412 - - supports-color 6413 - 6414 - balanced-match@1.0.2: {} 6415 - 6416 - base64-js@1.5.1: {} 6417 - 6418 - binary-extensions@2.3.0: {} 6419 - 6420 - boolbase@1.0.0: {} 6421 - 6422 - brace-expansion@1.1.11: 6423 - dependencies: 6424 - balanced-match: 1.0.2 6425 - concat-map: 0.0.1 6426 - 6427 - brace-expansion@2.0.1: 6428 - dependencies: 6429 - balanced-match: 1.0.2 6430 - 6431 - braces@3.0.3: 6432 - dependencies: 6433 - fill-range: 7.1.1 6434 - 6435 - browserslist@4.24.2: 6436 - dependencies: 6437 - caniuse-lite: 1.0.30001686 6438 - electron-to-chromium: 1.5.68 6439 - node-releases: 2.0.18 6440 - update-browserslist-db: 1.1.1(browserslist@4.24.2) 6441 - 6442 - buffer-from@1.1.2: {} 6443 - 6444 - buffer@6.0.3: 6445 - dependencies: 6446 - base64-js: 1.5.1 6447 - ieee754: 1.2.1 6448 - 6449 - bufferutil@4.0.8: 6450 - dependencies: 6451 - node-gyp-build: 4.8.4 6452 - 6453 - bundle-require@5.0.0(esbuild@0.24.0): 6454 - dependencies: 6455 - esbuild: 0.24.0 6456 - load-tsconfig: 0.2.5 6457 - 6458 - cac@6.7.14: {} 6459 - 6460 - callsites@3.1.0: {} 6461 - 6462 - camelcase-css@2.0.1: {} 6463 - 6464 - caniuse-api@3.0.0: 6465 - dependencies: 6466 - browserslist: 4.24.2 6467 - caniuse-lite: 1.0.30001686 6468 - lodash.memoize: 4.1.2 6469 - lodash.uniq: 4.5.0 6470 - 6471 - caniuse-lite@1.0.30001686: {} 6472 - 6473 - cbor-extract@2.2.0: 6474 - dependencies: 6475 - node-gyp-build-optional-packages: 5.1.1 6476 - optionalDependencies: 6477 - '@cbor-extract/cbor-extract-darwin-arm64': 2.2.0 6478 - '@cbor-extract/cbor-extract-darwin-x64': 2.2.0 6479 - '@cbor-extract/cbor-extract-linux-arm': 2.2.0 6480 - '@cbor-extract/cbor-extract-linux-arm64': 2.2.0 6481 - '@cbor-extract/cbor-extract-linux-x64': 2.2.0 6482 - '@cbor-extract/cbor-extract-win32-x64': 2.2.0 6483 - optional: true 6484 - 6485 - cbor-x@1.6.0: 6486 - optionalDependencies: 6487 - cbor-extract: 2.2.0 6488 - 6489 - cborg@1.10.2: {} 6490 - 6491 - chalk@4.1.2: 6492 - dependencies: 6493 - ansi-styles: 4.3.0 6494 - supports-color: 7.2.0 6495 - 6496 - chokidar@3.6.0: 6497 - dependencies: 6498 - anymatch: 3.1.3 6499 - braces: 3.0.3 6500 - glob-parent: 5.1.2 6501 - is-binary-path: 2.1.0 6502 - is-glob: 4.0.3 6503 - normalize-path: 3.0.0 6504 - readdirp: 3.6.0 6505 - optionalDependencies: 6506 - fsevents: 2.3.3 6507 - 6508 - chokidar@4.0.1: 6509 - dependencies: 6510 - readdirp: 4.0.2 6511 - 6512 - cjs-module-lexer@1.4.1: {} 6513 - 6514 - class-variance-authority@0.7.1: 6515 - dependencies: 6516 - clsx: 2.1.1 6517 - 6518 - clsx@2.1.1: {} 6519 - 6520 - color-convert@2.0.1: 6521 - dependencies: 6522 - color-name: 1.1.4 6523 - 6524 - color-name@1.1.4: {} 6525 - 6526 - colord@2.9.3: {} 6527 - 6528 - colorette@2.0.20: {} 6529 - 6530 - combined-stream@1.0.8: 6531 - dependencies: 6532 - delayed-stream: 1.0.0 6533 - 6534 - commander@4.1.1: {} 6535 - 6536 - commander@7.2.0: {} 6537 - 6538 - concat-map@0.0.1: {} 6539 - 6540 - consola@3.2.3: {} 6541 - 6542 - convert-source-map@2.0.0: {} 6543 - 6544 - create-require@1.1.1: {} 6545 - 6546 - cross-spawn@7.0.6: 6547 - dependencies: 6548 - path-key: 3.1.1 6549 - shebang-command: 2.0.0 6550 - which: 2.0.2 6551 - 6552 - css-declaration-sorter@7.2.0(postcss@8.4.49): 6553 - dependencies: 6554 - postcss: 8.4.49 6555 - 6556 - css-select@5.1.0: 6557 - dependencies: 6558 - boolbase: 1.0.0 6559 - css-what: 6.1.0 6560 - domhandler: 5.0.3 6561 - domutils: 3.1.0 6562 - nth-check: 2.1.1 6563 - 6564 - css-tree@2.2.1: 6565 - dependencies: 6566 - mdn-data: 2.0.28 6567 - source-map-js: 1.2.1 6568 - 6569 - css-tree@2.3.1: 6570 - dependencies: 6571 - mdn-data: 2.0.30 6572 - source-map-js: 1.2.1 6573 - 6574 - css-what@6.1.0: {} 6575 - 6576 - cssesc@3.0.0: {} 6577 - 6578 - cssnano-preset-default@7.0.6(postcss@8.4.49): 6579 - dependencies: 6580 - browserslist: 4.24.2 6581 - css-declaration-sorter: 7.2.0(postcss@8.4.49) 6582 - cssnano-utils: 5.0.0(postcss@8.4.49) 6583 - postcss: 8.4.49 6584 - postcss-calc: 10.0.2(postcss@8.4.49) 6585 - postcss-colormin: 7.0.2(postcss@8.4.49) 6586 - postcss-convert-values: 7.0.4(postcss@8.4.49) 6587 - postcss-discard-comments: 7.0.3(postcss@8.4.49) 6588 - postcss-discard-duplicates: 7.0.1(postcss@8.4.49) 6589 - postcss-discard-empty: 7.0.0(postcss@8.4.49) 6590 - postcss-discard-overridden: 7.0.0(postcss@8.4.49) 6591 - postcss-merge-longhand: 7.0.4(postcss@8.4.49) 6592 - postcss-merge-rules: 7.0.4(postcss@8.4.49) 6593 - postcss-minify-font-values: 7.0.0(postcss@8.4.49) 6594 - postcss-minify-gradients: 7.0.0(postcss@8.4.49) 6595 - postcss-minify-params: 7.0.2(postcss@8.4.49) 6596 - postcss-minify-selectors: 7.0.4(postcss@8.4.49) 6597 - postcss-normalize-charset: 7.0.0(postcss@8.4.49) 6598 - postcss-normalize-display-values: 7.0.0(postcss@8.4.49) 6599 - postcss-normalize-positions: 7.0.0(postcss@8.4.49) 6600 - postcss-normalize-repeat-style: 7.0.0(postcss@8.4.49) 6601 - postcss-normalize-string: 7.0.0(postcss@8.4.49) 6602 - postcss-normalize-timing-functions: 7.0.0(postcss@8.4.49) 6603 - postcss-normalize-unicode: 7.0.2(postcss@8.4.49) 6604 - postcss-normalize-url: 7.0.0(postcss@8.4.49) 6605 - postcss-normalize-whitespace: 7.0.0(postcss@8.4.49) 6606 - postcss-ordered-values: 7.0.1(postcss@8.4.49) 6607 - postcss-reduce-initial: 7.0.2(postcss@8.4.49) 6608 - postcss-reduce-transforms: 7.0.0(postcss@8.4.49) 6609 - postcss-svgo: 7.0.1(postcss@8.4.49) 6610 - postcss-unique-selectors: 7.0.3(postcss@8.4.49) 6611 - 6612 - cssnano-utils@5.0.0(postcss@8.4.49): 6613 - dependencies: 6614 - postcss: 8.4.49 6615 - 6616 - cssnano@7.0.6(postcss@8.4.49): 6617 - dependencies: 6618 - cssnano-preset-default: 7.0.6(postcss@8.4.49) 6619 - lilconfig: 3.1.3 6620 - postcss: 8.4.49 6621 - 6622 - csso@5.0.5: 6623 - dependencies: 6624 - css-tree: 2.2.1 6625 - 6626 - csstype@3.1.3: {} 6627 - 6628 - data-uri-to-buffer@4.0.1: {} 6629 - 6630 - dateformat@4.6.3: {} 6631 - 6632 - debug@4.3.7: 6633 - dependencies: 6634 - ms: 2.1.3 6635 - 6636 - deep-is@0.1.4: {} 6637 - 6638 - delayed-stream@1.0.0: {} 6639 - 6640 - detect-libc@2.0.2: {} 6641 - 6642 - detect-node-es@1.1.0: {} 6643 - 6644 - didyoumean@1.2.2: {} 6645 - 6646 - diff@4.0.2: {} 6647 - 6648 - dlv@1.1.3: {} 6649 - 6650 - dom-serializer@2.0.0: 6651 - dependencies: 6652 - domelementtype: 2.3.0 6653 - domhandler: 5.0.3 6654 - entities: 4.5.0 6655 - 6656 - domelementtype@2.3.0: {} 6657 - 6658 - domhandler@5.0.3: 6659 - dependencies: 6660 - domelementtype: 2.3.0 6661 - 6662 - domutils@3.1.0: 6663 - dependencies: 6664 - dom-serializer: 2.0.0 6665 - domelementtype: 2.3.0 6666 - domhandler: 5.0.3 6667 - 6668 - drizzle-kit@0.29.0: 6669 - dependencies: 6670 - '@drizzle-team/brocli': 0.10.2 6671 - '@esbuild-kit/esm-loader': 2.6.5 6672 - esbuild: 0.19.12 6673 - esbuild-register: 3.6.0(esbuild@0.19.12) 6674 - transitivePeerDependencies: 6675 - - supports-color 6676 - 6677 - drizzle-orm@0.37.0(@libsql/client@0.14.0)(@opentelemetry/api@1.9.0)(@types/pg@8.6.1)(@types/react@19.0.1)(react@19.0.0): 6678 - optionalDependencies: 6679 - '@libsql/client': 0.14.0(bufferutil@4.0.8) 6680 - '@opentelemetry/api': 1.9.0 6681 - '@types/pg': 8.6.1 6682 - '@types/react': 19.0.1 6683 - react: 19.0.0 6684 - 6685 - eastasianwidth@0.2.0: {} 6686 - 6687 - electron-to-chromium@1.5.68: {} 6688 - 6689 - emoji-regex@8.0.0: {} 6690 - 6691 - emoji-regex@9.2.2: {} 6692 - 6693 - end-of-stream@1.4.4: 6694 - dependencies: 6695 - once: 1.4.0 6696 - 6697 - entities@4.5.0: {} 6698 - 6699 - esbuild-register@3.6.0(esbuild@0.19.12): 6700 - dependencies: 6701 - debug: 4.3.7 6702 - esbuild: 0.19.12 6703 - transitivePeerDependencies: 6704 - - supports-color 6705 - 6706 - esbuild@0.18.20: 6707 - optionalDependencies: 6708 - '@esbuild/android-arm': 0.18.20 6709 - '@esbuild/android-arm64': 0.18.20 6710 - '@esbuild/android-x64': 0.18.20 6711 - '@esbuild/darwin-arm64': 0.18.20 6712 - '@esbuild/darwin-x64': 0.18.20 6713 - '@esbuild/freebsd-arm64': 0.18.20 6714 - '@esbuild/freebsd-x64': 0.18.20 6715 - '@esbuild/linux-arm': 0.18.20 6716 - '@esbuild/linux-arm64': 0.18.20 6717 - '@esbuild/linux-ia32': 0.18.20 6718 - '@esbuild/linux-loong64': 0.18.20 6719 - '@esbuild/linux-mips64el': 0.18.20 6720 - '@esbuild/linux-ppc64': 0.18.20 6721 - '@esbuild/linux-riscv64': 0.18.20 6722 - '@esbuild/linux-s390x': 0.18.20 6723 - '@esbuild/linux-x64': 0.18.20 6724 - '@esbuild/netbsd-x64': 0.18.20 6725 - '@esbuild/openbsd-x64': 0.18.20 6726 - '@esbuild/sunos-x64': 0.18.20 6727 - '@esbuild/win32-arm64': 0.18.20 6728 - '@esbuild/win32-ia32': 0.18.20 6729 - '@esbuild/win32-x64': 0.18.20 6730 - 6731 - esbuild@0.19.12: 6732 - optionalDependencies: 6733 - '@esbuild/aix-ppc64': 0.19.12 6734 - '@esbuild/android-arm': 0.19.12 6735 - '@esbuild/android-arm64': 0.19.12 6736 - '@esbuild/android-x64': 0.19.12 6737 - '@esbuild/darwin-arm64': 0.19.12 6738 - '@esbuild/darwin-x64': 0.19.12 6739 - '@esbuild/freebsd-arm64': 0.19.12 6740 - '@esbuild/freebsd-x64': 0.19.12 6741 - '@esbuild/linux-arm': 0.19.12 6742 - '@esbuild/linux-arm64': 0.19.12 6743 - '@esbuild/linux-ia32': 0.19.12 6744 - '@esbuild/linux-loong64': 0.19.12 6745 - '@esbuild/linux-mips64el': 0.19.12 6746 - '@esbuild/linux-ppc64': 0.19.12 6747 - '@esbuild/linux-riscv64': 0.19.12 6748 - '@esbuild/linux-s390x': 0.19.12 6749 - '@esbuild/linux-x64': 0.19.12 6750 - '@esbuild/netbsd-x64': 0.19.12 6751 - '@esbuild/openbsd-x64': 0.19.12 6752 - '@esbuild/sunos-x64': 0.19.12 6753 - '@esbuild/win32-arm64': 0.19.12 6754 - '@esbuild/win32-ia32': 0.19.12 6755 - '@esbuild/win32-x64': 0.19.12 6756 - 6757 - esbuild@0.23.1: 6758 - optionalDependencies: 6759 - '@esbuild/aix-ppc64': 0.23.1 6760 - '@esbuild/android-arm': 0.23.1 6761 - '@esbuild/android-arm64': 0.23.1 6762 - '@esbuild/android-x64': 0.23.1 6763 - '@esbuild/darwin-arm64': 0.23.1 6764 - '@esbuild/darwin-x64': 0.23.1 6765 - '@esbuild/freebsd-arm64': 0.23.1 6766 - '@esbuild/freebsd-x64': 0.23.1 6767 - '@esbuild/linux-arm': 0.23.1 6768 - '@esbuild/linux-arm64': 0.23.1 6769 - '@esbuild/linux-ia32': 0.23.1 6770 - '@esbuild/linux-loong64': 0.23.1 6771 - '@esbuild/linux-mips64el': 0.23.1 6772 - '@esbuild/linux-ppc64': 0.23.1 6773 - '@esbuild/linux-riscv64': 0.23.1 6774 - '@esbuild/linux-s390x': 0.23.1 6775 - '@esbuild/linux-x64': 0.23.1 6776 - '@esbuild/netbsd-x64': 0.23.1 6777 - '@esbuild/openbsd-arm64': 0.23.1 6778 - '@esbuild/openbsd-x64': 0.23.1 6779 - '@esbuild/sunos-x64': 0.23.1 6780 - '@esbuild/win32-arm64': 0.23.1 6781 - '@esbuild/win32-ia32': 0.23.1 6782 - '@esbuild/win32-x64': 0.23.1 6783 - 6784 - esbuild@0.24.0: 6785 - optionalDependencies: 6786 - '@esbuild/aix-ppc64': 0.24.0 6787 - '@esbuild/android-arm': 0.24.0 6788 - '@esbuild/android-arm64': 0.24.0 6789 - '@esbuild/android-x64': 0.24.0 6790 - '@esbuild/darwin-arm64': 0.24.0 6791 - '@esbuild/darwin-x64': 0.24.0 6792 - '@esbuild/freebsd-arm64': 0.24.0 6793 - '@esbuild/freebsd-x64': 0.24.0 6794 - '@esbuild/linux-arm': 0.24.0 6795 - '@esbuild/linux-arm64': 0.24.0 6796 - '@esbuild/linux-ia32': 0.24.0 6797 - '@esbuild/linux-loong64': 0.24.0 6798 - '@esbuild/linux-mips64el': 0.24.0 6799 - '@esbuild/linux-ppc64': 0.24.0 6800 - '@esbuild/linux-riscv64': 0.24.0 6801 - '@esbuild/linux-s390x': 0.24.0 6802 - '@esbuild/linux-x64': 0.24.0 6803 - '@esbuild/netbsd-x64': 0.24.0 6804 - '@esbuild/openbsd-arm64': 0.24.0 6805 - '@esbuild/openbsd-x64': 0.24.0 6806 - '@esbuild/sunos-x64': 0.24.0 6807 - '@esbuild/win32-arm64': 0.24.0 6808 - '@esbuild/win32-ia32': 0.24.0 6809 - '@esbuild/win32-x64': 0.24.0 6810 - 6811 - escalade@3.2.0: {} 6812 - 6813 - escape-string-regexp@4.0.0: {} 6814 - 6815 - eslint-plugin-react-hooks@5.0.0(eslint@9.16.0(jiti@2.4.1)): 6816 - dependencies: 6817 - eslint: 9.16.0(jiti@2.4.1) 6818 - 6819 - eslint-plugin-react-refresh@0.4.16(eslint@9.16.0(jiti@2.4.1)): 6820 - dependencies: 6821 - eslint: 9.16.0(jiti@2.4.1) 6822 - 6823 - eslint-scope@8.2.0: 6824 - dependencies: 6825 - esrecurse: 4.3.0 6826 - estraverse: 5.3.0 6827 - 6828 - eslint-visitor-keys@3.4.3: {} 6829 - 6830 - eslint-visitor-keys@4.2.0: {} 6831 - 6832 - eslint@9.16.0(jiti@2.4.1): 6833 - dependencies: 6834 - '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0(jiti@2.4.1)) 6835 - '@eslint-community/regexpp': 4.12.1 6836 - '@eslint/config-array': 0.19.0 6837 - '@eslint/core': 0.9.0 6838 - '@eslint/eslintrc': 3.2.0 6839 - '@eslint/js': 9.16.0 6840 - '@eslint/plugin-kit': 0.2.3 6841 - '@humanfs/node': 0.16.6 6842 - '@humanwhocodes/module-importer': 1.0.1 6843 - '@humanwhocodes/retry': 0.4.1 6844 - '@types/estree': 1.0.6 6845 - '@types/json-schema': 7.0.15 6846 - ajv: 6.12.6 6847 - chalk: 4.1.2 6848 - cross-spawn: 7.0.6 6849 - debug: 4.3.7 6850 - escape-string-regexp: 4.0.0 6851 - eslint-scope: 8.2.0 6852 - eslint-visitor-keys: 4.2.0 6853 - espree: 10.3.0 6854 - esquery: 1.6.0 6855 - esutils: 2.0.3 6856 - fast-deep-equal: 3.1.3 6857 - file-entry-cache: 8.0.0 6858 - find-up: 5.0.0 6859 - glob-parent: 6.0.2 6860 - ignore: 5.3.2 6861 - imurmurhash: 0.1.4 6862 - is-glob: 4.0.3 6863 - json-stable-stringify-without-jsonify: 1.0.1 6864 - lodash.merge: 4.6.2 6865 - minimatch: 3.1.2 6866 - natural-compare: 1.4.0 6867 - optionator: 0.9.4 6868 - optionalDependencies: 6869 - jiti: 2.4.1 6870 - transitivePeerDependencies: 6871 - - supports-color 6872 - 6873 - espree@10.3.0: 6874 - dependencies: 6875 - acorn: 8.14.0 6876 - acorn-jsx: 5.3.2(acorn@8.14.0) 6877 - eslint-visitor-keys: 4.2.0 6878 - 6879 - esquery@1.6.0: 6880 - dependencies: 6881 - estraverse: 5.3.0 6882 - 6883 - esrecurse@4.3.0: 6884 - dependencies: 6885 - estraverse: 5.3.0 6886 - 6887 - estraverse@5.3.0: {} 6888 - 6889 - esutils@2.0.3: {} 6890 - 6891 - event-target-shim@5.0.1: {} 6892 - 6893 - event-target-shim@6.0.2: {} 6894 - 6895 - events@3.3.0: {} 6896 - 6897 - fast-copy@3.0.2: {} 6898 - 6899 - fast-deep-equal@3.1.3: {} 6900 - 6901 - fast-glob@3.3.2: 6902 - dependencies: 6903 - '@nodelib/fs.stat': 2.0.5 6904 - '@nodelib/fs.walk': 1.2.8 6905 - glob-parent: 5.1.2 6906 - merge2: 1.4.1 6907 - micromatch: 4.0.8 6908 - 6909 - fast-json-stable-stringify@2.1.0: {} 6910 - 6911 - fast-levenshtein@2.0.6: {} 6912 - 6913 - fast-redact@3.5.0: {} 6914 - 6915 - fast-safe-stringify@2.1.1: {} 6916 - 6917 - fastq@1.17.1: 6918 - dependencies: 6919 - reusify: 1.0.4 6920 - 6921 - fdir@6.4.2(picomatch@4.0.2): 6922 - optionalDependencies: 6923 - picomatch: 4.0.2 6924 - 6925 - fetch-blob@3.2.0: 6926 - dependencies: 6927 - node-domexception: 1.0.0 6928 - web-streams-polyfill: 3.3.3 6929 - 6930 - file-entry-cache@8.0.0: 6931 - dependencies: 6932 - flat-cache: 4.0.1 6933 - 6934 - fill-range@7.1.1: 6935 - dependencies: 6936 - to-regex-range: 5.0.1 6937 - 6938 - find-up@5.0.0: 6939 - dependencies: 6940 - locate-path: 6.0.0 6941 - path-exists: 4.0.0 6942 - 6943 - flat-cache@4.0.1: 6944 - dependencies: 6945 - flatted: 3.3.2 6946 - keyv: 4.5.4 6947 - 6948 - flatted@3.3.2: {} 6949 - 6950 - follow-redirects@1.15.9: {} 6951 - 6952 - foreground-child@3.3.0: 6953 - dependencies: 6954 - cross-spawn: 7.0.6 6955 - signal-exit: 4.1.0 6956 - 6957 - form-data@4.0.1: 6958 - dependencies: 6959 - asynckit: 0.4.0 6960 - combined-stream: 1.0.8 6961 - mime-types: 2.1.35 6962 - 6963 - formdata-polyfill@4.0.10: 6964 - dependencies: 6965 - fetch-blob: 3.2.0 6966 - 6967 - fraction.js@4.3.7: {} 6968 - 6969 - fsevents@2.3.3: 6970 - optional: true 6971 - 6972 - function-bind@1.1.2: {} 6973 - 6974 - gensync@1.0.0-beta.2: {} 6975 - 6976 - get-nonce@1.0.1: {} 6977 - 6978 - get-tsconfig@4.8.1: 6979 - dependencies: 6980 - resolve-pkg-maps: 1.0.0 6981 - 6982 - glob-parent@5.1.2: 6983 - dependencies: 6984 - is-glob: 4.0.3 6985 - 6986 - glob-parent@6.0.2: 6987 - dependencies: 6988 - is-glob: 4.0.3 6989 - 6990 - glob@10.4.5: 6991 - dependencies: 6992 - foreground-child: 3.3.0 6993 - jackspeak: 3.4.3 6994 - minimatch: 9.0.5 6995 - minipass: 7.1.2 6996 - package-json-from-dist: 1.0.1 6997 - path-scurry: 1.11.1 6998 - 6999 - glob@11.0.0: 7000 - dependencies: 7001 - foreground-child: 3.3.0 7002 - jackspeak: 4.0.2 7003 - minimatch: 10.0.1 7004 - minipass: 7.1.2 7005 - package-json-from-dist: 1.0.1 7006 - path-scurry: 2.0.0 7007 - 7008 - globals@11.12.0: {} 7009 - 7010 - globals@14.0.0: {} 7011 - 7012 - globals@15.13.0: {} 7013 - 7014 - goober@2.1.16(csstype@3.1.3): 7015 - dependencies: 7016 - csstype: 3.1.3 7017 - 7018 - graphemer@1.4.0: {} 7019 - 7020 - has-flag@4.0.0: {} 7021 - 7022 - hasown@2.0.2: 7023 - dependencies: 7024 - function-bind: 1.1.2 7025 - 7026 - help-me@5.0.0: {} 7027 - 7028 - hono-sessions@0.7.0: 7029 - dependencies: 7030 - hono: 4.6.12 7031 - iron-webcrypto: 0.10.1 7032 - 7033 - hono@4.6.12: {} 7034 - 7035 - ieee754@1.2.1: {} 7036 - 7037 - ignore@5.3.2: {} 7038 - 7039 - import-fresh@3.3.0: 7040 - dependencies: 7041 - parent-module: 1.0.1 7042 - resolve-from: 4.0.0 7043 - 7044 - import-in-the-middle@1.11.3: 7045 - dependencies: 7046 - acorn: 8.14.0 7047 - acorn-import-attributes: 1.9.5(acorn@8.14.0) 7048 - cjs-module-lexer: 1.4.1 7049 - module-details-from-path: 1.0.3 7050 - 7051 - imurmurhash@0.1.4: {} 7052 - 7053 - ipaddr.js@2.2.0: {} 7054 - 7055 - iron-webcrypto@0.10.1: {} 7056 - 7057 - is-binary-path@2.1.0: 7058 - dependencies: 7059 - binary-extensions: 2.3.0 7060 - 7061 - is-core-module@2.15.1: 7062 - dependencies: 7063 - hasown: 2.0.2 7064 - 7065 - is-extglob@2.1.1: {} 7066 - 7067 - is-fullwidth-code-point@3.0.0: {} 7068 - 7069 - is-glob@4.0.3: 7070 - dependencies: 7071 - is-extglob: 2.1.1 7072 - 7073 - is-number@7.0.0: {} 7074 - 7075 - isexe@2.0.0: {} 7076 - 7077 - iso-datestring-validator@2.2.2: {} 7078 - 7079 - jackspeak@3.4.3: 7080 - dependencies: 7081 - '@isaacs/cliui': 8.0.2 7082 - optionalDependencies: 7083 - '@pkgjs/parseargs': 0.11.0 7084 - 7085 - jackspeak@4.0.2: 7086 - dependencies: 7087 - '@isaacs/cliui': 8.0.2 7088 - 7089 - jiti@1.21.6: {} 7090 - 7091 - jiti@2.4.1: 7092 - optional: true 7093 - 7094 - jose@5.9.6: {} 7095 - 7096 - joycon@3.1.1: {} 7097 - 7098 - js-base64@3.7.7: {} 7099 - 7100 - js-tokens@4.0.0: {} 7101 - 7102 - js-yaml@4.1.0: 7103 - dependencies: 7104 - argparse: 2.0.1 7105 - 7106 - jsesc@3.0.2: {} 7107 - 7108 - json-buffer@3.0.1: {} 7109 - 7110 - json-schema-traverse@0.4.1: {} 7111 - 7112 - json-stable-stringify-without-jsonify@1.0.1: {} 7113 - 7114 - json5@2.2.3: {} 7115 - 7116 - keyv@4.5.4: 7117 - dependencies: 7118 - json-buffer: 3.0.1 7119 - 7120 - levn@0.4.1: 7121 - dependencies: 7122 - prelude-ls: 1.2.1 7123 - type-check: 0.4.0 7124 - 7125 - libsql@0.4.7: 7126 - dependencies: 7127 - '@neon-rs/load': 0.0.4 7128 - detect-libc: 2.0.2 7129 - optionalDependencies: 7130 - '@libsql/darwin-arm64': 0.4.7 7131 - '@libsql/darwin-x64': 0.4.7 7132 - '@libsql/linux-arm64-gnu': 0.4.7 7133 - '@libsql/linux-arm64-musl': 0.4.7 7134 - '@libsql/linux-x64-gnu': 0.4.7 7135 - '@libsql/linux-x64-musl': 0.4.7 7136 - '@libsql/win32-x64-msvc': 0.4.7 7137 - 7138 - lilconfig@3.1.3: {} 7139 - 7140 - lines-and-columns@1.2.4: {} 7141 - 7142 - load-tsconfig@0.2.5: {} 7143 - 7144 - locate-path@6.0.0: 7145 - dependencies: 7146 - p-locate: 5.0.0 7147 - 7148 - lodash.memoize@4.1.2: {} 7149 - 7150 - lodash.merge@4.6.2: {} 7151 - 7152 - lodash.sortby@4.7.0: {} 7153 - 7154 - lodash.uniq@4.5.0: {} 7155 - 7156 - lru-cache@10.4.3: {} 7157 - 7158 - lru-cache@11.0.2: {} 7159 - 7160 - lru-cache@5.1.1: 7161 - dependencies: 7162 - yallist: 3.1.1 7163 - 7164 - lucide-react@0.464.0(react@19.0.0): 7165 - dependencies: 7166 - react: 19.0.0 7167 - 7168 - make-error@1.3.6: {} 7169 - 7170 - mdn-data@2.0.28: {} 7171 - 7172 - mdn-data@2.0.30: {} 7173 - 7174 - merge2@1.4.1: {} 7175 - 7176 - micromatch@4.0.8: 7177 - dependencies: 7178 - braces: 3.0.3 7179 - picomatch: 2.3.1 7180 - 7181 - mime-db@1.52.0: {} 7182 - 7183 - mime-types@2.1.35: 7184 - dependencies: 7185 - mime-db: 1.52.0 7186 - 7187 - minimatch@10.0.1: 7188 - dependencies: 7189 - brace-expansion: 2.0.1 7190 - 7191 - minimatch@3.1.2: 7192 - dependencies: 7193 - brace-expansion: 1.1.11 7194 - 7195 - minimatch@9.0.5: 7196 - dependencies: 7197 - brace-expansion: 2.0.1 7198 - 7199 - minimist@1.2.8: {} 7200 - 7201 - minipass@7.1.2: {} 7202 - 7203 - module-details-from-path@1.0.3: {} 7204 - 7205 - ms@2.1.3: {} 7206 - 7207 - multiformats@13.3.1: {} 7208 - 7209 - multiformats@9.9.0: {} 7210 - 7211 - mz@2.7.0: 7212 - dependencies: 7213 - any-promise: 1.3.0 7214 - object-assign: 4.1.1 7215 - thenify-all: 1.6.0 7216 - 7217 - nanoid@3.3.8: {} 7218 - 7219 - nanoid@5.0.9: {} 7220 - 7221 - natural-compare@1.4.0: {} 7222 - 7223 - node-domexception@1.0.0: {} 7224 - 7225 - node-fetch@3.3.2: 7226 - dependencies: 7227 - data-uri-to-buffer: 4.0.1 7228 - fetch-blob: 3.2.0 7229 - formdata-polyfill: 4.0.10 7230 - 7231 - node-gyp-build-optional-packages@5.1.1: 7232 - dependencies: 7233 - detect-libc: 2.0.2 7234 - optional: true 7235 - 7236 - node-gyp-build@4.8.4: {} 7237 - 7238 - node-releases@2.0.18: {} 7239 - 7240 - normalize-path@3.0.0: {} 7241 - 7242 - normalize-range@0.1.2: {} 7243 - 7244 - nth-check@2.1.1: 7245 - dependencies: 7246 - boolbase: 1.0.0 7247 - 7248 - object-assign@4.1.1: {} 7249 - 7250 - object-hash@3.0.0: {} 7251 - 7252 - on-exit-leak-free@2.1.2: {} 7253 - 7254 - once@1.4.0: 7255 - dependencies: 7256 - wrappy: 1.0.2 7257 - 7258 - optionator@0.9.4: 7259 - dependencies: 7260 - deep-is: 0.1.4 7261 - fast-levenshtein: 2.0.6 7262 - levn: 0.4.1 7263 - prelude-ls: 1.2.1 7264 - type-check: 0.4.0 7265 - word-wrap: 1.2.5 7266 - 7267 - p-limit@3.1.0: 7268 - dependencies: 7269 - yocto-queue: 0.1.0 7270 - 7271 - p-locate@5.0.0: 7272 - dependencies: 7273 - p-limit: 3.1.0 7274 - 7275 - package-json-from-dist@1.0.1: {} 7276 - 7277 - parent-module@1.0.1: 7278 - dependencies: 7279 - callsites: 3.1.0 7280 - 7281 - partysocket@1.0.2: 7282 - dependencies: 7283 - event-target-shim: 6.0.2 7284 - 7285 - path-exists@4.0.0: {} 7286 - 7287 - path-key@3.1.1: {} 7288 - 7289 - path-parse@1.0.7: {} 7290 - 7291 - path-scurry@1.11.1: 7292 - dependencies: 7293 - lru-cache: 10.4.3 7294 - minipass: 7.1.2 7295 - 7296 - path-scurry@2.0.0: 7297 - dependencies: 7298 - lru-cache: 11.0.2 7299 - minipass: 7.1.2 7300 - 7301 - pg-int8@1.0.1: {} 7302 - 7303 - pg-protocol@1.7.0: {} 7304 - 7305 - pg-types@2.2.0: 7306 - dependencies: 7307 - pg-int8: 1.0.1 7308 - postgres-array: 2.0.0 7309 - postgres-bytea: 1.0.0 7310 - postgres-date: 1.0.7 7311 - postgres-interval: 1.2.0 7312 - 7313 - picocolors@1.1.1: {} 7314 - 7315 - picomatch@2.3.1: {} 7316 - 7317 - picomatch@4.0.2: {} 7318 - 7319 - pify@2.3.0: {} 7320 - 7321 - pino-abstract-transport@1.2.0: 7322 - dependencies: 7323 - readable-stream: 4.5.2 7324 - split2: 4.2.0 7325 - 7326 - pino-abstract-transport@2.0.0: 7327 - dependencies: 7328 - split2: 4.2.0 7329 - 7330 - pino-pretty@13.0.0: 7331 - dependencies: 7332 - colorette: 2.0.20 7333 - dateformat: 4.6.3 7334 - fast-copy: 3.0.2 7335 - fast-safe-stringify: 2.1.1 7336 - help-me: 5.0.0 7337 - joycon: 3.1.1 7338 - minimist: 1.2.8 7339 - on-exit-leak-free: 2.1.2 7340 - pino-abstract-transport: 2.0.0 7341 - pump: 3.0.2 7342 - secure-json-parse: 2.7.0 7343 - sonic-boom: 4.2.0 7344 - strip-json-comments: 3.1.1 7345 - 7346 - pino-std-serializers@6.2.2: {} 7347 - 7348 - pino-std-serializers@7.0.0: {} 7349 - 7350 - pino@8.21.0: 7351 - dependencies: 7352 - atomic-sleep: 1.0.0 7353 - fast-redact: 3.5.0 7354 - on-exit-leak-free: 2.1.2 7355 - pino-abstract-transport: 1.2.0 7356 - pino-std-serializers: 6.2.2 7357 - process-warning: 3.0.0 7358 - quick-format-unescaped: 4.0.4 7359 - real-require: 0.2.0 7360 - safe-stable-stringify: 2.5.0 7361 - sonic-boom: 3.8.1 7362 - thread-stream: 2.7.0 7363 - 7364 - pino@9.5.0: 7365 - dependencies: 7366 - atomic-sleep: 1.0.0 7367 - fast-redact: 3.5.0 7368 - on-exit-leak-free: 2.1.2 7369 - pino-abstract-transport: 2.0.0 7370 - pino-std-serializers: 7.0.0 7371 - process-warning: 4.0.0 7372 - quick-format-unescaped: 4.0.4 7373 - real-require: 0.2.0 7374 - safe-stable-stringify: 2.5.0 7375 - sonic-boom: 4.2.0 7376 - thread-stream: 3.1.0 7377 - 7378 - pirates@4.0.6: {} 7379 - 7380 - postcss-calc@10.0.2(postcss@8.4.49): 7381 - dependencies: 7382 - postcss: 8.4.49 7383 - postcss-selector-parser: 6.1.2 7384 - postcss-value-parser: 4.2.0 7385 - 7386 - postcss-colormin@7.0.2(postcss@8.4.49): 7387 - dependencies: 7388 - browserslist: 4.24.2 7389 - caniuse-api: 3.0.0 7390 - colord: 2.9.3 7391 - postcss: 8.4.49 7392 - postcss-value-parser: 4.2.0 7393 - 7394 - postcss-convert-values@7.0.4(postcss@8.4.49): 7395 - dependencies: 7396 - browserslist: 4.24.2 7397 - postcss: 8.4.49 7398 - postcss-value-parser: 4.2.0 7399 - 7400 - postcss-discard-comments@7.0.3(postcss@8.4.49): 7401 - dependencies: 7402 - postcss: 8.4.49 7403 - postcss-selector-parser: 6.1.2 7404 - 7405 - postcss-discard-duplicates@7.0.1(postcss@8.4.49): 7406 - dependencies: 7407 - postcss: 8.4.49 7408 - 7409 - postcss-discard-empty@7.0.0(postcss@8.4.49): 7410 - dependencies: 7411 - postcss: 8.4.49 7412 - 7413 - postcss-discard-overridden@7.0.0(postcss@8.4.49): 7414 - dependencies: 7415 - postcss: 8.4.49 7416 - 7417 - postcss-import@15.1.0(postcss@8.4.49): 7418 - dependencies: 7419 - postcss: 8.4.49 7420 - postcss-value-parser: 4.2.0 7421 - read-cache: 1.0.0 7422 - resolve: 1.22.8 7423 - 7424 - postcss-js@4.0.1(postcss@8.4.49): 7425 - dependencies: 7426 - camelcase-css: 2.0.1 7427 - postcss: 8.4.49 7428 - 7429 - postcss-load-config@4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3)): 7430 - dependencies: 7431 - lilconfig: 3.1.3 7432 - yaml: 2.6.1 7433 - optionalDependencies: 7434 - postcss: 8.4.49 7435 - ts-node: 10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3) 7436 - 7437 - postcss-load-config@6.0.1(jiti@2.4.1)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.6.1): 7438 - dependencies: 7439 - lilconfig: 3.1.3 7440 - optionalDependencies: 7441 - jiti: 2.4.1 7442 - postcss: 8.4.49 7443 - tsx: 4.19.2 7444 - yaml: 2.6.1 7445 - 7446 - postcss-merge-longhand@7.0.4(postcss@8.4.49): 7447 - dependencies: 7448 - postcss: 8.4.49 7449 - postcss-value-parser: 4.2.0 7450 - stylehacks: 7.0.4(postcss@8.4.49) 7451 - 7452 - postcss-merge-rules@7.0.4(postcss@8.4.49): 7453 - dependencies: 7454 - browserslist: 4.24.2 7455 - caniuse-api: 3.0.0 7456 - cssnano-utils: 5.0.0(postcss@8.4.49) 7457 - postcss: 8.4.49 7458 - postcss-selector-parser: 6.1.2 7459 - 7460 - postcss-minify-font-values@7.0.0(postcss@8.4.49): 7461 - dependencies: 7462 - postcss: 8.4.49 7463 - postcss-value-parser: 4.2.0 7464 - 7465 - postcss-minify-gradients@7.0.0(postcss@8.4.49): 7466 - dependencies: 7467 - colord: 2.9.3 7468 - cssnano-utils: 5.0.0(postcss@8.4.49) 7469 - postcss: 8.4.49 7470 - postcss-value-parser: 4.2.0 7471 - 7472 - postcss-minify-params@7.0.2(postcss@8.4.49): 7473 - dependencies: 7474 - browserslist: 4.24.2 7475 - cssnano-utils: 5.0.0(postcss@8.4.49) 7476 - postcss: 8.4.49 7477 - postcss-value-parser: 4.2.0 7478 - 7479 - postcss-minify-selectors@7.0.4(postcss@8.4.49): 7480 - dependencies: 7481 - cssesc: 3.0.0 7482 - postcss: 8.4.49 7483 - postcss-selector-parser: 6.1.2 7484 - 7485 - postcss-nested@6.2.0(postcss@8.4.49): 7486 - dependencies: 7487 - postcss: 8.4.49 7488 - postcss-selector-parser: 6.1.2 7489 - 7490 - postcss-normalize-charset@7.0.0(postcss@8.4.49): 7491 - dependencies: 7492 - postcss: 8.4.49 7493 - 7494 - postcss-normalize-display-values@7.0.0(postcss@8.4.49): 7495 - dependencies: 7496 - postcss: 8.4.49 7497 - postcss-value-parser: 4.2.0 7498 - 7499 - postcss-normalize-positions@7.0.0(postcss@8.4.49): 7500 - dependencies: 7501 - postcss: 8.4.49 7502 - postcss-value-parser: 4.2.0 7503 - 7504 - postcss-normalize-repeat-style@7.0.0(postcss@8.4.49): 7505 - dependencies: 7506 - postcss: 8.4.49 7507 - postcss-value-parser: 4.2.0 7508 - 7509 - postcss-normalize-string@7.0.0(postcss@8.4.49): 7510 - dependencies: 7511 - postcss: 8.4.49 7512 - postcss-value-parser: 4.2.0 7513 - 7514 - postcss-normalize-timing-functions@7.0.0(postcss@8.4.49): 7515 - dependencies: 7516 - postcss: 8.4.49 7517 - postcss-value-parser: 4.2.0 7518 - 7519 - postcss-normalize-unicode@7.0.2(postcss@8.4.49): 7520 - dependencies: 7521 - browserslist: 4.24.2 7522 - postcss: 8.4.49 7523 - postcss-value-parser: 4.2.0 7524 - 7525 - postcss-normalize-url@7.0.0(postcss@8.4.49): 7526 - dependencies: 7527 - postcss: 8.4.49 7528 - postcss-value-parser: 4.2.0 7529 - 7530 - postcss-normalize-whitespace@7.0.0(postcss@8.4.49): 7531 - dependencies: 7532 - postcss: 8.4.49 7533 - postcss-value-parser: 4.2.0 7534 - 7535 - postcss-ordered-values@7.0.1(postcss@8.4.49): 7536 - dependencies: 7537 - cssnano-utils: 5.0.0(postcss@8.4.49) 7538 - postcss: 8.4.49 7539 - postcss-value-parser: 4.2.0 7540 - 7541 - postcss-reduce-initial@7.0.2(postcss@8.4.49): 7542 - dependencies: 7543 - browserslist: 4.24.2 7544 - caniuse-api: 3.0.0 7545 - postcss: 8.4.49 7546 - 7547 - postcss-reduce-transforms@7.0.0(postcss@8.4.49): 7548 - dependencies: 7549 - postcss: 8.4.49 7550 - postcss-value-parser: 4.2.0 7551 - 7552 - postcss-selector-parser@6.1.2: 7553 - dependencies: 7554 - cssesc: 3.0.0 7555 - util-deprecate: 1.0.2 7556 - 7557 - postcss-svgo@7.0.1(postcss@8.4.49): 7558 - dependencies: 7559 - postcss: 8.4.49 7560 - postcss-value-parser: 4.2.0 7561 - svgo: 3.3.2 7562 - 7563 - postcss-unique-selectors@7.0.3(postcss@8.4.49): 7564 - dependencies: 7565 - postcss: 8.4.49 7566 - postcss-selector-parser: 6.1.2 7567 - 7568 - postcss-value-parser@4.2.0: {} 7569 - 7570 - postcss@8.4.49: 7571 - dependencies: 7572 - nanoid: 3.3.8 7573 - picocolors: 1.1.1 7574 - source-map-js: 1.2.1 7575 - 7576 - postgres-array@2.0.0: {} 7577 - 7578 - postgres-bytea@1.0.0: {} 7579 - 7580 - postgres-date@1.0.7: {} 7581 - 7582 - postgres-interval@1.2.0: 7583 - dependencies: 7584 - xtend: 4.0.2 7585 - 7586 - prelude-ls@1.2.1: {} 7587 - 7588 - prettier@3.4.1: {} 7589 - 7590 - process-warning@3.0.0: {} 7591 - 7592 - process-warning@4.0.0: {} 7593 - 7594 - process@0.11.10: {} 7595 - 7596 - promise-limit@2.7.0: {} 7597 - 7598 - proxy-from-env@1.1.0: {} 7599 - 7600 - psl@1.15.0: 7601 - dependencies: 7602 - punycode: 2.3.1 7603 - 7604 - pump@3.0.2: 7605 - dependencies: 7606 - end-of-stream: 1.4.4 7607 - once: 1.4.0 7608 - 7609 - punycode@2.3.1: {} 7610 - 7611 - queue-microtask@1.2.3: {} 7612 - 7613 - quick-format-unescaped@4.0.4: {} 7614 - 7615 - react-dom@19.0.0(react@19.0.0): 7616 - dependencies: 7617 - react: 19.0.0 7618 - scheduler: 0.25.0 7619 - 7620 - react-hook-form@7.54.1(react@19.0.0): 7621 - dependencies: 7622 - react: 19.0.0 7623 - 7624 - react-remove-scroll-bar@2.3.8(@types/react@19.0.1)(react@19.0.0): 7625 - dependencies: 7626 - react: 19.0.0 7627 - react-style-singleton: 2.2.3(@types/react@19.0.1)(react@19.0.0) 7628 - tslib: 2.8.1 7629 - optionalDependencies: 7630 - '@types/react': 19.0.1 7631 - 7632 - react-remove-scroll@2.6.2(@types/react@19.0.1)(react@19.0.0): 7633 - dependencies: 7634 - react: 19.0.0 7635 - react-remove-scroll-bar: 2.3.8(@types/react@19.0.1)(react@19.0.0) 7636 - react-style-singleton: 2.2.3(@types/react@19.0.1)(react@19.0.0) 7637 - tslib: 2.8.1 7638 - use-callback-ref: 1.3.3(@types/react@19.0.1)(react@19.0.0) 7639 - use-sidecar: 1.1.2(@types/react@19.0.1)(react@19.0.0) 7640 - optionalDependencies: 7641 - '@types/react': 19.0.1 7642 - 7643 - react-style-singleton@2.2.3(@types/react@19.0.1)(react@19.0.0): 7644 - dependencies: 7645 - get-nonce: 1.0.1 7646 - react: 19.0.0 7647 - tslib: 2.8.1 7648 - optionalDependencies: 7649 - '@types/react': 19.0.1 7650 - 7651 - react@19.0.0: {} 7652 - 7653 - read-cache@1.0.0: 7654 - dependencies: 7655 - pify: 2.3.0 7656 - 7657 - readable-stream@4.5.2: 7658 - dependencies: 7659 - abort-controller: 3.0.0 7660 - buffer: 6.0.3 7661 - events: 3.3.0 7662 - process: 0.11.10 7663 - string_decoder: 1.3.0 7664 - 7665 - readdirp@3.6.0: 7666 - dependencies: 7667 - picomatch: 2.3.1 7668 - 7669 - readdirp@4.0.2: {} 7670 - 7671 - real-require@0.2.0: {} 7672 - 7673 - require-in-the-middle@7.4.0: 7674 - dependencies: 7675 - debug: 4.3.7 7676 - module-details-from-path: 1.0.3 7677 - resolve: 1.22.8 7678 - transitivePeerDependencies: 7679 - - supports-color 7680 - 7681 - resolve-from@4.0.0: {} 7682 - 7683 - resolve-from@5.0.0: {} 7684 - 7685 - resolve-pkg-maps@1.0.0: {} 7686 - 7687 - resolve@1.22.8: 7688 - dependencies: 7689 - is-core-module: 2.15.1 7690 - path-parse: 1.0.7 7691 - supports-preserve-symlinks-flag: 1.0.0 7692 - 7693 - reusify@1.0.4: {} 7694 - 7695 - rimraf@6.0.1: 7696 - dependencies: 7697 - glob: 11.0.0 7698 - package-json-from-dist: 1.0.1 7699 - 7700 - rollup@4.28.0: 7701 - dependencies: 7702 - '@types/estree': 1.0.6 7703 - optionalDependencies: 7704 - '@rollup/rollup-android-arm-eabi': 4.28.0 7705 - '@rollup/rollup-android-arm64': 4.28.0 7706 - '@rollup/rollup-darwin-arm64': 4.28.0 7707 - '@rollup/rollup-darwin-x64': 4.28.0 7708 - '@rollup/rollup-freebsd-arm64': 4.28.0 7709 - '@rollup/rollup-freebsd-x64': 4.28.0 7710 - '@rollup/rollup-linux-arm-gnueabihf': 4.28.0 7711 - '@rollup/rollup-linux-arm-musleabihf': 4.28.0 7712 - '@rollup/rollup-linux-arm64-gnu': 4.28.0 7713 - '@rollup/rollup-linux-arm64-musl': 4.28.0 7714 - '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0 7715 - '@rollup/rollup-linux-riscv64-gnu': 4.28.0 7716 - '@rollup/rollup-linux-s390x-gnu': 4.28.0 7717 - '@rollup/rollup-linux-x64-gnu': 4.28.0 7718 - '@rollup/rollup-linux-x64-musl': 4.28.0 7719 - '@rollup/rollup-win32-arm64-msvc': 4.28.0 7720 - '@rollup/rollup-win32-ia32-msvc': 4.28.0 7721 - '@rollup/rollup-win32-x64-msvc': 4.28.0 7722 - fsevents: 2.3.3 7723 - 7724 - run-parallel@1.2.0: 7725 - dependencies: 7726 - queue-microtask: 1.2.3 7727 - 7728 - safe-buffer@5.2.1: {} 7729 - 7730 - safe-stable-stringify@2.5.0: {} 7731 - 7732 - scheduler@0.25.0: {} 7733 - 7734 - secure-json-parse@2.7.0: {} 7735 - 7736 - semver@6.3.1: {} 7737 - 7738 - semver@7.6.3: {} 7739 - 7740 - shebang-command@2.0.0: 7741 - dependencies: 7742 - shebang-regex: 3.0.0 7743 - 7744 - shebang-regex@3.0.0: {} 7745 - 7746 - shimmer@1.2.1: {} 7747 - 7748 - signal-exit@4.1.0: {} 7749 - 7750 - sonic-boom@3.8.1: 7751 - dependencies: 7752 - atomic-sleep: 1.0.0 7753 - 7754 - sonic-boom@4.2.0: 7755 - dependencies: 7756 - atomic-sleep: 1.0.0 7757 - 7758 - source-map-js@1.2.1: {} 7759 - 7760 - source-map-support@0.5.21: 7761 - dependencies: 7762 - buffer-from: 1.1.2 7763 - source-map: 0.6.1 7764 - 7765 - source-map@0.6.1: {} 7766 - 7767 - source-map@0.8.0-beta.0: 7768 - dependencies: 7769 - whatwg-url: 7.1.0 7770 - 7771 - split2@4.2.0: {} 7772 - 7773 - string-width@4.2.3: 7774 - dependencies: 7775 - emoji-regex: 8.0.0 7776 - is-fullwidth-code-point: 3.0.0 7777 - strip-ansi: 6.0.1 7778 - 7779 - string-width@5.1.2: 7780 - dependencies: 7781 - eastasianwidth: 0.2.0 7782 - emoji-regex: 9.2.2 7783 - strip-ansi: 7.1.0 7784 - 7785 - string_decoder@1.3.0: 7786 - dependencies: 7787 - safe-buffer: 5.2.1 7788 - 7789 - strip-ansi@6.0.1: 7790 - dependencies: 7791 - ansi-regex: 5.0.1 7792 - 7793 - strip-ansi@7.1.0: 7794 - dependencies: 7795 - ansi-regex: 6.1.0 7796 - 7797 - strip-json-comments@3.1.1: {} 7798 - 7799 - stylehacks@7.0.4(postcss@8.4.49): 7800 - dependencies: 7801 - browserslist: 4.24.2 7802 - postcss: 8.4.49 7803 - postcss-selector-parser: 6.1.2 7804 - 7805 - sucrase@3.35.0: 7806 - dependencies: 7807 - '@jridgewell/gen-mapping': 0.3.5 7808 - commander: 4.1.1 7809 - glob: 10.4.5 7810 - lines-and-columns: 1.2.4 7811 - mz: 2.7.0 7812 - pirates: 4.0.6 7813 - ts-interface-checker: 0.1.13 7814 - 7815 - supports-color@7.2.0: 7816 - dependencies: 7817 - has-flag: 4.0.0 7818 - 7819 - supports-preserve-symlinks-flag@1.0.0: {} 7820 - 7821 - svgo@3.3.2: 7822 - dependencies: 7823 - '@trysound/sax': 0.2.0 7824 - commander: 7.2.0 7825 - css-select: 5.1.0 7826 - css-tree: 2.3.1 7827 - css-what: 6.1.0 7828 - csso: 5.0.5 7829 - picocolors: 1.1.1 7830 - 7831 - tailwind-merge@2.5.5: {} 7832 - 7833 - tailwindcss-animate@1.0.7(tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3))): 7834 - dependencies: 7835 - tailwindcss: 3.4.16(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3)) 7836 - 7837 - tailwindcss@3.4.16(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3)): 7838 - dependencies: 7839 - '@alloc/quick-lru': 5.2.0 7840 - arg: 5.0.2 7841 - chokidar: 3.6.0 7842 - didyoumean: 1.2.2 7843 - dlv: 1.1.3 7844 - fast-glob: 3.3.2 7845 - glob-parent: 6.0.2 7846 - is-glob: 4.0.3 7847 - jiti: 1.21.6 7848 - lilconfig: 3.1.3 7849 - micromatch: 4.0.8 7850 - normalize-path: 3.0.0 7851 - object-hash: 3.0.0 7852 - picocolors: 1.1.1 7853 - postcss: 8.4.49 7854 - postcss-import: 15.1.0(postcss@8.4.49) 7855 - postcss-js: 4.0.1(postcss@8.4.49) 7856 - postcss-load-config: 4.0.2(postcss@8.4.49)(ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3)) 7857 - postcss-nested: 6.2.0(postcss@8.4.49) 7858 - postcss-selector-parser: 6.1.2 7859 - resolve: 1.22.8 7860 - sucrase: 3.35.0 7861 - transitivePeerDependencies: 7862 - - ts-node 7863 - 7864 - thenify-all@1.6.0: 7865 - dependencies: 7866 - thenify: 3.3.1 7867 - 7868 - thenify@3.3.1: 7869 - dependencies: 7870 - any-promise: 1.3.0 7871 - 7872 - thread-stream@2.7.0: 7873 - dependencies: 7874 - real-require: 0.2.0 7875 - 7876 - thread-stream@3.1.0: 7877 - dependencies: 7878 - real-require: 0.2.0 7879 - 7880 - tiny-invariant@1.3.3: {} 7881 - 7882 - tiny-warning@1.0.3: {} 7883 - 7884 - tinyexec@0.3.1: {} 7885 - 7886 - tinyglobby@0.2.10: 7887 - dependencies: 7888 - fdir: 6.4.2(picomatch@4.0.2) 7889 - picomatch: 4.0.2 7890 - 7891 - tlds@1.255.0: {} 7892 - 7893 - to-regex-range@5.0.1: 7894 - dependencies: 7895 - is-number: 7.0.0 7896 - 7897 - tr46@1.0.1: 7898 - dependencies: 7899 - punycode: 2.3.1 7900 - 7901 - tree-kill@1.2.2: {} 7902 - 7903 - ts-api-utils@1.4.3(typescript@5.6.3): 7904 - dependencies: 7905 - typescript: 5.6.3 7906 - 7907 - ts-interface-checker@0.1.13: {} 7908 - 7909 - ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.6.3): 7910 - dependencies: 7911 - '@cspotcode/source-map-support': 0.8.1 7912 - '@tsconfig/node10': 1.0.11 7913 - '@tsconfig/node12': 1.0.11 7914 - '@tsconfig/node14': 1.0.3 7915 - '@tsconfig/node16': 1.0.4 7916 - '@types/node': 22.10.1 7917 - acorn: 8.14.0 7918 - acorn-walk: 8.3.4 7919 - arg: 4.1.3 7920 - create-require: 1.1.1 7921 - diff: 4.0.2 7922 - make-error: 1.3.6 7923 - typescript: 5.6.3 7924 - v8-compile-cache-lib: 3.0.1 7925 - yn: 3.1.1 7926 - optionalDependencies: 7927 - '@swc/core': 1.9.3 7928 - optional: true 7929 - 7930 - ts-node@10.9.2(@swc/core@1.9.3)(@types/node@22.10.1)(typescript@5.7.2): 7931 - dependencies: 7932 - '@cspotcode/source-map-support': 0.8.1 7933 - '@tsconfig/node10': 1.0.11 7934 - '@tsconfig/node12': 1.0.11 7935 - '@tsconfig/node14': 1.0.3 7936 - '@tsconfig/node16': 1.0.4 7937 - '@types/node': 22.10.1 7938 - acorn: 8.14.0 7939 - acorn-walk: 8.3.4 7940 - arg: 4.1.3 7941 - create-require: 1.1.1 7942 - diff: 4.0.2 7943 - make-error: 1.3.6 7944 - typescript: 5.7.2 7945 - v8-compile-cache-lib: 3.0.1 7946 - yn: 3.1.1 7947 - optionalDependencies: 7948 - '@swc/core': 1.9.3 7949 - 7950 - tslib@2.8.1: {} 7951 - 7952 - tsup@8.3.5(@swc/core@1.9.3)(jiti@2.4.1)(postcss@8.4.49)(tsx@4.19.2)(typescript@5.7.2)(yaml@2.6.1): 7953 - dependencies: 7954 - bundle-require: 5.0.0(esbuild@0.24.0) 7955 - cac: 6.7.14 7956 - chokidar: 4.0.1 7957 - consola: 3.2.3 7958 - debug: 4.3.7 7959 - esbuild: 0.24.0 7960 - joycon: 3.1.1 7961 - picocolors: 1.1.1 7962 - postcss-load-config: 6.0.1(jiti@2.4.1)(postcss@8.4.49)(tsx@4.19.2)(yaml@2.6.1) 7963 - resolve-from: 5.0.0 7964 - rollup: 4.28.0 7965 - source-map: 0.8.0-beta.0 7966 - sucrase: 3.35.0 7967 - tinyexec: 0.3.1 7968 - tinyglobby: 0.2.10 7969 - tree-kill: 1.2.2 7970 - optionalDependencies: 7971 - '@swc/core': 1.9.3 7972 - postcss: 8.4.49 7973 - typescript: 5.7.2 7974 - transitivePeerDependencies: 7975 - - jiti 7976 - - supports-color 7977 - - tsx 7978 - - yaml 7979 - 7980 - tsx@4.19.2: 7981 - dependencies: 7982 - esbuild: 0.23.1 7983 - get-tsconfig: 4.8.1 7984 - optionalDependencies: 7985 - fsevents: 2.3.3 7986 - 7987 - turbo-darwin-64@2.3.3: 7988 - optional: true 7989 - 7990 - turbo-darwin-arm64@2.3.3: 7991 - optional: true 7992 - 7993 - turbo-linux-64@2.3.3: 7994 - optional: true 7995 - 7996 - turbo-linux-arm64@2.3.3: 7997 - optional: true 7998 - 7999 - turbo-windows-64@2.3.3: 8000 - optional: true 8001 - 8002 - turbo-windows-arm64@2.3.3: 8003 - optional: true 8004 - 8005 - turbo@2.3.3: 8006 - optionalDependencies: 8007 - turbo-darwin-64: 2.3.3 8008 - turbo-darwin-arm64: 2.3.3 8009 - turbo-linux-64: 2.3.3 8010 - turbo-linux-arm64: 2.3.3 8011 - turbo-windows-64: 2.3.3 8012 - turbo-windows-arm64: 2.3.3 8013 - 8014 - type-check@0.4.0: 8015 - dependencies: 8016 - prelude-ls: 1.2.1 8017 - 8018 - typescript-eslint@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3): 8019 - dependencies: 8020 - '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3))(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 8021 - '@typescript-eslint/parser': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 8022 - '@typescript-eslint/utils': 8.17.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.6.3) 8023 - eslint: 9.16.0(jiti@2.4.1) 8024 - optionalDependencies: 8025 - typescript: 5.6.3 8026 - transitivePeerDependencies: 8027 - - supports-color 8028 - 8029 - typescript@5.6.3: {} 8030 - 8031 - typescript@5.7.2: {} 8032 - 8033 - uint8arrays@3.0.0: 8034 - dependencies: 8035 - multiformats: 9.9.0 8036 - 8037 - uint8arrays@5.1.0: 8038 - dependencies: 8039 - multiformats: 13.3.1 8040 - 8041 - undici-types@6.20.0: {} 8042 - 8043 - undici@6.21.0: {} 8044 - 8045 - unplugin@1.16.0: 8046 - dependencies: 8047 - acorn: 8.14.0 8048 - webpack-virtual-modules: 0.6.2 8049 - 8050 - update-browserslist-db@1.1.1(browserslist@4.24.2): 8051 - dependencies: 8052 - browserslist: 4.24.2 8053 - escalade: 3.2.0 8054 - picocolors: 1.1.1 8055 - 8056 - uri-js@4.4.1: 8057 - dependencies: 8058 - punycode: 2.3.1 8059 - 8060 - use-callback-ref@1.3.3(@types/react@19.0.1)(react@19.0.0): 8061 - dependencies: 8062 - react: 19.0.0 8063 - tslib: 2.8.1 8064 - optionalDependencies: 8065 - '@types/react': 19.0.1 8066 - 8067 - use-sidecar@1.1.2(@types/react@19.0.1)(react@19.0.0): 8068 - dependencies: 8069 - detect-node-es: 1.1.0 8070 - react: 19.0.0 8071 - tslib: 2.8.1 8072 - optionalDependencies: 8073 - '@types/react': 19.0.1 8074 - 8075 - use-sync-external-store@1.2.2(react@19.0.0): 8076 - dependencies: 8077 - react: 19.0.0 8078 - 8079 - util-deprecate@1.0.2: {} 8080 - 8081 - v8-compile-cache-lib@3.0.1: {} 8082 - 8083 - vite@6.0.2(@types/node@22.10.1)(jiti@2.4.1)(tsx@4.19.2)(yaml@2.6.1): 8084 - dependencies: 8085 - esbuild: 0.24.0 8086 - postcss: 8.4.49 8087 - rollup: 4.28.0 8088 - optionalDependencies: 8089 - '@types/node': 22.10.1 8090 - fsevents: 2.3.3 8091 - jiti: 2.4.1 8092 - tsx: 4.19.2 8093 - yaml: 2.6.1 8094 - 8095 - web-streams-polyfill@3.3.3: {} 8096 - 8097 - webidl-conversions@4.0.2: {} 8098 - 8099 - webpack-virtual-modules@0.6.2: {} 8100 - 8101 - whatwg-url@7.1.0: 8102 - dependencies: 8103 - lodash.sortby: 4.7.0 8104 - tr46: 1.0.1 8105 - webidl-conversions: 4.0.2 8106 - 8107 - which@2.0.2: 8108 - dependencies: 8109 - isexe: 2.0.0 8110 - 8111 - word-wrap@1.2.5: {} 8112 - 8113 - wrap-ansi@7.0.0: 8114 - dependencies: 8115 - ansi-styles: 4.3.0 8116 - string-width: 4.2.3 8117 - strip-ansi: 6.0.1 8118 - 8119 - wrap-ansi@8.1.0: 8120 - dependencies: 8121 - ansi-styles: 6.2.1 8122 - string-width: 5.1.2 8123 - strip-ansi: 7.1.0 8124 - 8125 - wrappy@1.0.2: {} 8126 - 8127 - ws@8.18.0(bufferutil@4.0.8): 8128 - optionalDependencies: 8129 - bufferutil: 4.0.8 8130 - 8131 - xtend@4.0.2: {} 8132 - 8133 - yallist@3.1.1: {} 8134 - 8135 - yaml@2.6.1: {} 8136 - 8137 - yn@3.1.1: {} 8138 - 8139 - yocto-queue@0.1.0: {} 8140 - 8141 - zod@3.23.8: {}
-4
pnpm-workspace.yaml
··· 1 - --- 2 - packages: 3 - - apps/* 4 - - libs/*