The recipes.blue monorepo recipes.blue
recipes appview atproto

Compare changes

Choose any two refs to compare.

Changed files
+4125 -4616
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 - }
+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 + ```
+25 -8
apps/api/Dockerfile
··· 3 3 4 4 FROM base AS deps 5 5 COPY package.json bun.lock ./ 6 - COPY apps/*/package.json apps/ 7 - COPY libs/*/package.json libs/ 8 - RUN bun install --frozen-lockfile 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' 9 18 10 19 FROM base AS build 11 - COPY --from=deps /app/node_modules ./node_modules 20 + COPY --from=deps /app/node_modules ./node_modules/ 12 21 COPY . . 13 22 14 - WORKDIR /app/apps/api 15 - RUN bun build ./src/index.ts \ 23 + RUN bun build /app/apps/api/src/index.ts \ 16 24 --compile \ 17 25 --minify \ 18 26 --sourcemap \ 19 27 --bytecode \ 20 28 --outfile=/app/dist/api \ 21 - --target=bun 29 + --target=bun \ 30 + --external '@libsql/*' 22 31 23 - FROM base AS run 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 24 40 COPY --from=build /app/dist/api /app/api 41 + COPY --from=libsql /app/node_modules /app/node_modules 25 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 + };
-125
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, getDidFromHandleOrDid } from '@cookware/lexicons'; 5 - import { simpleFetchHandler, XRPC } from '@atcute/client'; 6 - import { BlueRecipesFeedDefs, BlueRecipesFeedGetRecipes } from '@atcute/client/lexicons'; 7 - import { getAuthorInfo } from '../util/api.js'; 8 - 9 - export const xrpcApp = new Hono(); 10 - 11 - xrpcApp.get('/blue.recipes.feed.getRecipes', async ctx => { 12 - const { did: didQuery } = ctx.req.query(); 13 - 14 - let did: DID | null = null; 15 - if (didQuery) 16 - did = await getDidFromHandleOrDid(didQuery); 17 - 18 - const recipes = await db 19 - .select({ 20 - rkey: recipeTable.rkey, 21 - title: recipeTable.title, 22 - description: recipeTable.description, 23 - time: recipeTable.time, 24 - serves: recipeTable.serves, 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 - imageRef: recipeTable.imageRef, 30 - uri: sql`concat(${recipeTable.authorDid}, "/", ${recipeTable.rkey})`.as('uri'), 31 - }) 32 - .from(recipeTable) 33 - .where(did ? eq(recipeTable.authorDid, did) : undefined) 34 - .orderBy(desc(recipeTable.createdAt)); 35 - 36 - const rpc = new XRPC({ 37 - handler: simpleFetchHandler({ 38 - service: 'https://public.api.bsky.app', 39 - }), 40 - }); 41 - 42 - let authorInfo: BlueRecipesFeedDefs.AuthorInfo | null = null; 43 - if (did) { 44 - authorInfo = await getAuthorInfo(did, rpc); 45 - }; 46 - 47 - const results = []; 48 - const eachRecipe = async (r: typeof recipes[0]) => ({ 49 - author: authorInfo || await getAuthorInfo(r.authorDid, rpc), 50 - rkey: r.rkey, 51 - title: r.title, 52 - time: r.time, 53 - serves: r.serves ?? 1, 54 - description: r.description || undefined, 55 - ingredients: r.ingredientsCount as number, 56 - steps: r.stepsCount as number, 57 - imageUrl: r.imageRef 58 - ? `https://cdn.bsky.app/img/feed_thumbnail/plain/${r.authorDid}/${r.imageRef}@jpeg` 59 - : undefined, 60 - }); 61 - 62 - for (const result of recipes) { 63 - results.push(await eachRecipe(result)); 64 - } 65 - 66 - let result: BlueRecipesFeedGetRecipes.Output = { 67 - author: authorInfo || undefined, 68 - recipes: results, 69 - }; 70 - 71 - return ctx.json(result); 72 - }); 73 - 74 - xrpcApp.get('/blue.recipes.feed.getRecipe', async ctx => { 75 - const { did, rkey } = ctx.req.query(); 76 - if (!did) throw new Error('Invalid DID'); 77 - if (!rkey) throw new Error('Invalid rkey'); 78 - 79 - let parsedDid = await getDidFromHandleOrDid(did); 80 - if (!parsedDid) { 81 - ctx.status(404); 82 - return ctx.json({ 83 - error: 'invalid_did', 84 - message: 'No such author was found by that identifier.', 85 - }); 86 - } 87 - 88 - const recipe = await db.query.recipeTable.findFirst({ 89 - where: and( 90 - eq(recipeTable.authorDid, parsedDid), 91 - eq(recipeTable.rkey, rkey), 92 - ), 93 - }); 94 - 95 - if (!recipe) { 96 - ctx.status(404); 97 - return ctx.json({ 98 - error: 'not_found', 99 - message: 'No such recipe was found in the index.', 100 - }); 101 - } 102 - 103 - const rpc = new XRPC({ 104 - handler: simpleFetchHandler({ 105 - service: 'https://public.api.bsky.app', 106 - }), 107 - }); 108 - 109 - const authorInfo = await getAuthorInfo(recipe.authorDid, rpc); 110 - 111 - return ctx.json({ 112 - recipe: { 113 - author: authorInfo, 114 - title: recipe.title, 115 - time: recipe.time, 116 - serves: recipe.serves, 117 - description: recipe.description, 118 - ingredients: recipe.ingredients, 119 - steps: recipe.steps, 120 - imageUrl: recipe.imageRef 121 - ? `https://cdn.bsky.app/img/feed_thumbnail/plain/${recipe.authorDid}/${recipe.imageRef}@jpeg` 122 - : null, 123 - }, 124 - }); 125 - });
+25 -8
apps/ingester/Dockerfile
··· 3 3 4 4 FROM base AS deps 5 5 COPY package.json bun.lock ./ 6 - COPY apps/*/package.json apps/ 7 - COPY libs/*/package.json libs/ 8 - RUN bun install --frozen-lockfile 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' 9 18 10 19 FROM base AS build 11 - COPY --from=deps /app/node_modules ./node_modules 20 + COPY --from=deps /app/node_modules ./node_modules/ 12 21 COPY . . 13 22 14 - WORKDIR /app/apps/ingester 15 - RUN bun build ./src/index.ts \ 23 + RUN bun build /app/apps/ingester/src/index.ts \ 16 24 --compile \ 17 25 --minify \ 18 26 --sourcemap \ 19 27 --bytecode \ 20 28 --outfile=/app/dist/ingester \ 21 - --target=bun 29 + --target=bun \ 30 + --external '@libsql/*' 22 31 23 - FROM base AS run 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 24 40 COPY --from=build /app/dist/ingester /app/ingester 41 + COPY --from=libsql /app/node_modules /app/node_modules 25 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 -79
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 - serves: record.serves, 34 - description: record.description, 35 - ingredients: record.ingredients, 36 - steps: record.steps, 37 - imageRef: record.image ? record.image.ref.$link : null, 38 - authorDid: parseDid(event.did)!, 39 - createdAt: now, 40 - }) 41 - .onConflictDoUpdate({ 42 - target: recipeTable.id, 43 - set: { 44 - title: record.title, 45 - time: record.time, 46 - serves: record.serves, 47 - description: record.description, 48 - ingredients: record.ingredients, 49 - steps: record.steps, 50 - imageRef: record.image ? record.image.ref.$link : null, 51 - }, 52 - }) 53 - .execute(); 54 - 55 - ingestLogger.info({ res }, 'recipe ingested'); 56 - } 57 - } else if (event.commit.operation == 'delete') { 58 - const res = await db 59 - .delete(recipeTable) 60 - .where( 61 - and( 62 - eq(recipeTable.authorDid, parseDid(event.did)!), 63 - eq(recipeTable.rkey, event.commit.rkey), 64 - ) 65 - ) 66 - .execute(); 67 - 68 - ingestLogger.info({ res }, 'recipe deleted'); 69 - } 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'), 70 27 }); 71 28 72 - jetstream.on('open', () => { 73 - ingestLogger.info({ 74 - endpoint: env.JETSTREAM_ENDPOINT, 75 - wantedCollections: ['recipes.blue.*'], 76 - }, 'Ingester connection opened.'); 77 - }); 29 + return { 30 + subscription, 31 + start: async () => { 32 + const redis = new Bun.RedisClient(env.REDIS_URL); 78 33 79 - jetstream.on('close', () => { 80 - ingestLogger.error('Ingester connection closed.'); 81 - }); 82 - 83 - jetstream.on('error', err => { 84 - ingestLogger.error({ err }, 'Ingester runtime error.'); 85 - }); 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 + } 86 40 87 - 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 + } 88 61 }; 89 62 90 - 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 + }
+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;
+11 -11
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 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 - { recipe.imageUrl && 21 + { recipe.record.image && 22 22 <div className="relative h-48 w-full"> 23 23 <img 24 24 src={recipe.imageUrl} 25 - alt={recipe.title} 25 + alt={recipe.record.title} 26 26 className="h-full w-full object-cover" 27 27 /> 28 28 </div> 29 29 } 30 30 </CardHeader> 31 31 <CardContent className="p-4"> 32 - <h3 className="text-lg font-semibold mb-2">{recipe.title}</h3> 32 + <h3 className="text-lg font-semibold mb-2">{recipe.record.title}</h3> 33 33 <p className="text-sm text-muted-foreground mb-4"> 34 - {truncateDescription(recipe.description || '')} 34 + {truncateDescription(recipe.record.description || '')} 35 35 </p> 36 36 </CardContent> 37 37 <CardFooter className="p-4 pt-0"> 38 38 <div className="w-full flex items-center justify-between"> 39 39 <div className="flex items-center"> 40 40 <Avatar className="h-8 w-8 mr-2"> 41 - <AvatarImage src={recipe.author.avatarUrl} alt={recipe.author.displayName} /> 41 + <AvatarImage src={recipe.author.avatar} alt={recipe.author.displayName} /> 42 42 <AvatarFallback className="rounded-lg">{recipe.author.displayName?.charAt(0)}</AvatarFallback> 43 43 </Avatar> 44 44 <span className="text-sm text-muted-foreground">{recipe.author.displayName}</span> ··· 46 46 <div className="flex gap-6 justify-between items-center text-sm text-muted-foreground"> 47 47 <div className="flex items-center"> 48 48 <Utensils className="w-4 h-4 mr-1" /> 49 - <span>{recipe.ingredients}</span> 49 + <span>{recipe.record.ingredients.length}</span> 50 50 </div> 51 51 52 52 <div className="flex items-center"> 53 53 <ListOrdered className="w-4 h-4 mr-1" /> 54 - <span>{recipe.steps}</span> 54 + <span>{recipe.record.steps.length}</span> 55 55 </div> 56 56 57 57 <div className="flex items-center"> 58 58 <Users className="w-4 h-4 mr-1" /> 59 - <span>{recipe.serves}</span> 59 + <span>{recipe.record.serves}</span> 60 60 </div> 61 61 62 62 <div className="flex items-center"> 63 63 <Clock className="w-4 h-4 mr-1" /> 64 - <span>{recipe.time} min</span> 64 + <span>{recipe.record.time} min</span> 65 65 </div> 66 66 </div> 67 67 </div>
+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
-9
apps/web/src/forms/recipe.ts
··· 1 - import { RecipeRecord } from "@cookware/lexicons"; 2 - import { z } from "zod"; 3 - 4 - export const recipeSchema = RecipeRecord.extend({ 5 - time: z.coerce.number(), 6 - image: z 7 - .instanceof(FileList) 8 - .or(z.null()), 9 - });
+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: `https://${SERVER_URL}` }); 19 - return new XRPC({ handler: creds }); 5 + const client = useClient(); 6 + return client; 20 7 }
+29 -14
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'; 10 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'; 11 13 12 14 const router = createRouter({ 13 15 routeTree, 14 16 context: { 15 - auth: undefined!, 17 + session: undefined!, 18 + client: undefined!, 16 19 }, 17 20 }); 18 21 ··· 25 28 configureOAuth({ 26 29 metadata: { 27 30 client_id: import.meta.env.VITE_OAUTH_CLIENT_ID, 28 - redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URL, 31 + redirect_uri: import.meta.env.VITE_OAUTH_REDIRECT_URI, 29 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 + }), 30 42 }); 31 43 32 44 const queryClient = new QueryClient({ ··· 40 52 }); 41 53 42 54 const InnerApp = () => { 43 - const auth = useAuth(); 44 - return <RouterProvider router={router} context={{ auth }} /> 55 + const session = useSession(); 56 + const client = useClient(); 57 + return <RouterProvider router={router} context={{ session, client }} /> 45 58 }; 46 59 47 60 createRoot(document.getElementById('root')!).render( 48 61 <StrictMode> 49 - <ThemeProvider defaultTheme="dark" storageKey="recipes-theme"> 50 - <AuthProvider> 51 - <QueryClientProvider client={queryClient}> 52 - <InnerApp /> 53 - <ReactQueryDevtools initialIsOpen={false} /> 54 - </QueryClientProvider> 55 - </AuthProvider> 56 - </ThemeProvider> 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> 57 72 </StrictMode>, 58 73 )
+45 -31
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 { 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'; 9 - import { recipeSchema } from "@/forms/recipe"; 10 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"; 11 12 12 13 const RQKEY_ROOT = 'posts'; 13 14 export const RQKEY = (cursor: string, did: string, rkey: string) => [RQKEY_ROOT, cursor, did, rkey]; 14 15 15 - export const useRecipesQuery = (cursor: string, did?: string) => { 16 - const rpc = useXrpc(); 16 + export const useRecipesQuery = (cursor: string, did?: Did) => { 17 + const client = useClient(); 17 18 return useQuery({ 18 19 queryKey: RQKEY(cursor, did ?? '', ''), 19 20 queryFn: async () => { 20 - const res = await rpc.get('blue.recipes.feed.getRecipes', { 21 + const res = await client.get('blue.recipes.feed.getRecipes', { 21 22 params: { cursor, did }, 22 23 }); 24 + if (!res.ok) throw res.data; 23 25 return res.data; 24 26 }, 25 27 }); 26 28 }; 27 29 28 - export const recipeQueryOptions = (rpc: XRPC, did: string, rkey: string) => { 30 + export const recipeQueryOptions = (rpc: Client, actor: ActorIdentifier, rkey: string) => { 29 31 return queryOptions({ 30 - queryKey: RQKEY('', did, rkey), 32 + queryKey: RQKEY('', actor, rkey), 31 33 queryFn: async () => { 32 - try { 33 - const res = await rpc.get('blue.recipes.feed.getRecipe', { 34 - params: { did, rkey }, 34 + const { ok, data } = await rpc.get('blue.recipes.feed.getRecipe', { 35 + params: { uris: [`at://${actor}/blue.recipes.feed.recipe/${rkey}`] }, 35 36 }); 36 - return res.data; 37 - } catch (err) { 38 - if (err instanceof XRPCError && err.kind && err.kind == 'not_found') { 39 - 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}`); 40 44 } 41 - throw err; 42 45 } 46 + 47 + return data; 43 48 }, 44 49 }); 45 50 }; 46 51 47 - export const useRecipeQuery = (did: string, rkey: string) => { 48 - const rpc = useXrpc(); 52 + export const useRecipeQuery = (did: Did, rkey: string) => { 53 + const rpc = useClient(); 49 54 return useQuery(recipeQueryOptions(rpc, did, rkey)); 50 55 }; 51 56 52 57 export const useNewRecipeMutation = (form: UseFormReturn<z.infer<typeof recipeSchema>>) => { 53 - const { agent } = useAuth(); 54 - const rpc = useXrpc(); 58 + const rpc = useClient(); 55 59 return useMutation({ 56 60 mutationKey: ['recipes.new'], 57 61 mutationFn: async ({ recipe: { image, ...recipe } }: { recipe: z.infer<typeof recipeSchema> }) => { 58 62 let recipeImg = null; 59 63 if (image) { 60 64 const imageFile = image.item(0) as File; 61 - const res = await rpc.call('com.atproto.repo.uploadBlob', { 62 - data: imageFile, 65 + const { ok, data } = await rpc.post('com.atproto.repo.uploadBlob', { 66 + input: imageFile, 63 67 }); 64 - recipeImg = res.data.blob 68 + 69 + if (!ok) { 70 + throw new Error(`Image upload failed: ${data.error}`); 71 + } 72 + 73 + recipeImg = data.blob; 65 74 } 66 75 67 76 const rkey = TID.nextStr(); 68 - const res = await rpc.call(`com.atproto.repo.createRecord`, { 69 - data: { 70 - repo: agent?.session.info.sub as `did:${string}`, 77 + const { ok, data } = await rpc.post(`com.atproto.repo.createRecord`, { 78 + input: { 79 + repo: agent?.session.info.sub as ActorIdentifier, 71 80 record: { 72 81 ...recipe, 73 82 image: recipeImg, 74 83 }, 75 - collection: RecipeCollection, 84 + collection: 'blue.recipes.feed.recipe', 76 85 rkey: rkey, 77 - }, 86 + } 78 87 }); 88 + 89 + if (!ok) { 90 + throw new Error(`Recipe creation failed: ${data.error}`); 91 + } 92 + 79 93 return { 80 94 rkey: rkey, 81 - resp: res.data 95 + resp: data, 82 96 }; 83 97 }, 84 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>
+20 -20
apps/web/src/routes/_.(app)/recipes/$author/$rkey/index.lazy.tsx
··· 12 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' 16 15 import { Badge } from '@/components/ui/badge' 17 16 import { Clock, Users } from 'lucide-react' 18 - import { useAuth } from '@/state/auth' 17 + import { useClient, useSession } from '@/state/auth' 19 18 import { Button } from '@/components/ui/button' 19 + import { ActorIdentifier } from '@atcute/lexicons' 20 20 21 21 export const Route = createLazyFileRoute('/_/(app)/recipes/$author/$rkey/')({ 22 22 component: RouteComponent, 23 23 }) 24 24 25 25 function RouteComponent() { 26 - const rpc = useXrpc(); 26 + const rpc = useClient(); 27 27 const { author, rkey } = Route.useParams() 28 28 const { 29 - data: { recipe }, 29 + data: { recipes }, 30 30 error, 31 - } = useSuspenseQuery(recipeQueryOptions(rpc, author, rkey)) 32 - const { isLoggedIn, agent } = useAuth(); 31 + } = useSuspenseQuery(recipeQueryOptions(rpc, author as ActorIdentifier, rkey)) 32 + const { isLoggedIn, agent } = useSession(); 33 33 34 - if (error) return <p>Error</p> 34 + if (error || !recipes[0]) return <p>Error</p> 35 35 36 36 return ( 37 37 <> ··· 55 55 <BreadcrumbSeparator className="hidden md:block" /> 56 56 <BreadcrumbItem className="hidden md:block"> 57 57 <BreadcrumbLink asChild> 58 - <Link to="/recipes/$author" params={{ author: recipe.author.handle }}> 59 - {recipe.author.displayName} 58 + <Link to="/recipes/$author" params={{ author: recipes[0].author.handle }}> 59 + {recipes[0].author.displayName} 60 60 </Link> 61 61 </BreadcrumbLink> 62 62 </BreadcrumbItem> 63 63 <BreadcrumbSeparator className="hidden md:block" /> 64 64 <BreadcrumbItem> 65 - <BreadcrumbPage>{recipe.title}</BreadcrumbPage> 65 + <BreadcrumbPage>{recipes[0].record.title}</BreadcrumbPage> 66 66 </BreadcrumbItem> 67 67 </BreadcrumbList> 68 68 </Breadcrumb> ··· 72 72 <Card className="w-full"> 73 73 74 74 <CardHeader> 75 - <CardTitle className="text-3xl font-bold">{recipe.title}</CardTitle> 76 - <CardDescription>{recipe.description}</CardDescription> 75 + <CardTitle className="text-3xl font-bold">{recipes[0].record.title}</CardTitle> 76 + <CardDescription>{recipes[0].record.description}</CardDescription> 77 77 </CardHeader> 78 78 79 79 <CardContent className="space-y-6"> 80 80 { 81 - recipe.imageUrl && 81 + recipes[0].record.image && 82 82 <img 83 - src={recipe.imageUrl} 84 - alt={recipe.title} 83 + src={recipes[0].record.image.ref.$link} 84 + alt={recipes[0].record.title} 85 85 className="h-64 w-full object-cover rounded-md" 86 86 /> 87 87 } 88 88 <div className="flex flex-wrap gap-4"> 89 89 <Badge variant="secondary" className="flex items-center gap-2"> 90 90 <Clock className="size-4" /> 91 - <span>{recipe.time} mins</span> 91 + <span>{recipes[0].record.time} mins</span> 92 92 </Badge> 93 93 <Badge variant="secondary" className="flex items-center gap-2"> 94 94 <Users className="size-4" /> 95 - <span>Serves {recipe.serves ?? '1'}</span> 95 + <span>Serves {recipes[0].record.serves ?? '1'}</span> 96 96 </Badge> 97 97 </div> 98 98 99 99 <div> 100 100 <h3 className="text-xl font-semibold mb-2">Ingredients</h3> 101 101 <ul className="list-disc list-inside space-y-1"> 102 - {recipe.ingredients.map((ing, idx) => ( 102 + {recipes[0].record.ingredients.map((ing, idx) => ( 103 103 <li key={idx}> 104 104 <b>{ing.amount}</b> {ing.name} 105 105 </li> ··· 110 110 <div> 111 111 <h3 className="text-xl font-semibold mb-2">Steps</h3> 112 112 <ol className="list-decimal list-outside space-y-1 ml-4"> 113 - {recipe.steps.map((ing, idx) => ( 113 + {recipes[0].record.steps.map((ing, idx) => ( 114 114 <li key={idx}>{ing.text}</li> 115 115 ))} 116 116 </ol> 117 117 </div> 118 118 </CardContent> 119 119 <CardFooter className="flex justify-between"> 120 - {(isLoggedIn && agent?.sub == recipe.author.did) && ( 120 + {(isLoggedIn && agent?.sub == recipes[0].author.did) && ( 121 121 <div className="flex items-center gap-x-4"> 122 122 <Button variant="outline">Edit</Button> 123 123 <Button variant="destructive">Delete</Button>
+289 -320
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 { 16 - Form, 17 - FormControl, 18 - FormDescription, 19 - FormField, 20 - FormItem, 21 - FormLabel, 22 - FormMessage, 23 - } from "@/components/ui/form"; 24 - import { Button } from "@/components/ui/button"; 25 - import { Input } from "@/components/ui/input"; 26 - import { Textarea } from "@/components/ui/textarea"; 27 - import { 28 - Card, 29 - CardContent, 30 - CardDescription, 31 - CardHeader, 32 - CardTitle, 33 - } from "@/components/ui/card"; 34 - import { 35 - Sortable, 36 - SortableDragHandle, 37 - SortableItem, 38 - } from "@/components/ui/sortable"; 39 - import { DragHandleDots2Icon } from "@radix-ui/react-icons"; 40 - import { Label } from "@/components/ui/label"; 41 - import { TrashIcon } from "lucide-react"; 42 - import { useNewRecipeMutation } from "@/queries/recipe"; 43 - import { recipeSchema } from "@/forms/recipe"; 44 12 45 13 export const Route = createFileRoute("/_/(app)/recipes/new")({ 46 14 beforeLoad: async ({ context }) => { 47 - if (!context.auth.isLoggedIn) { 15 + if (!context.session.isLoggedIn) { 48 16 throw redirect({ 49 17 to: '/login', 50 18 }); ··· 54 22 }); 55 23 56 24 function RouteComponent() { 57 - const form = useForm<z.infer<typeof recipeSchema>>({ 58 - resolver: zodResolver(recipeSchema), 59 - defaultValues: { 60 - title: "", 61 - time: 0, 62 - image: null, 63 - description: "", 64 - ingredients: [{ name: "" }], 65 - steps: [{ text: "" }], 66 - }, 67 - }); 68 - 69 - const { mutate, isPending } = useNewRecipeMutation(form); 70 - 71 - const onSubmit = (values: z.infer<typeof recipeSchema>) => { 72 - mutate({ recipe: values }); 73 - }; 74 - 75 - const imageRef = form.register("image"); 76 - 77 - const ingredients = useFieldArray({ 78 - control: form.control, 79 - name: "ingredients", 80 - }); 81 - 82 - const steps = useFieldArray({ 83 - control: form.control, 84 - name: "steps", 85 - }); 86 - 87 - return ( 88 - <> 89 - <Breadcrumbs /> 90 - <div className="flex-1 flex-col p-4 pt-0 max-w-xl w-full mx-auto"> 91 - <Card> 92 - <CardHeader> 93 - <CardTitle>New recipe</CardTitle> 94 - <CardDescription>Share your recipe with the world!</CardDescription> 95 - </CardHeader> 96 - <CardContent> 97 - <Form {...form}> 98 - <form 99 - onSubmit={form.handleSubmit(onSubmit)} 100 - className="space-y-8" 101 - > 102 - <FormField 103 - name="title" 104 - control={form.control} 105 - render={({ field }) => ( 106 - <FormItem> 107 - <FormLabel>Title</FormLabel> 108 - <FormControl> 109 - <Input placeholder="My awesome recipe!" {...field} /> 110 - </FormControl> 111 - <FormDescription> 112 - This is your recipe's name. 113 - </FormDescription> 114 - <FormMessage /> 115 - </FormItem> 116 - )} 117 - /> 118 - 119 - <FormField 120 - name="description" 121 - control={form.control} 122 - render={({ field: { value, ...field } }) => ( 123 - <FormItem> 124 - <FormLabel>Description</FormLabel> 125 - <FormControl> 126 - <Textarea 127 - className="resize-none" 128 - value={value || ""} 129 - {...field} 130 - /> 131 - </FormControl> 132 - <FormDescription>Describe your recipe, maybe tell the world how tasty it is? (Optional)</FormDescription> 133 - <FormMessage /> 134 - </FormItem> 135 - )} 136 - /> 137 - 138 - <FormField 139 - name="image" 140 - control={form.control} 141 - render={(_props) => ( 142 - <FormItem> 143 - <FormLabel>Image</FormLabel> 144 - <FormControl> 145 - <Input 146 - type="file" 147 - className="resize-none" 148 - {...imageRef} 149 - /> 150 - </FormControl> 151 - <FormMessage /> 152 - </FormItem> 153 - )} 154 - /> 155 - 156 - <FormField 157 - name="time" 158 - control={form.control} 159 - render={({ field: { value, ...field } }) => ( 160 - <FormItem> 161 - <FormLabel>Time</FormLabel> 162 - <FormControl> 163 - <Input 164 - type="number" 165 - className="resize-none" 166 - value={value || ""} 167 - {...field} 168 - /> 169 - </FormControl> 170 - <FormDescription>How long (in minutes) does your recipe take to complete?</FormDescription> 171 - <FormMessage /> 172 - </FormItem> 173 - )} 174 - /> 175 - 176 - <div className="grid gap-2"> 177 - <Label>Ingredients</Label> 178 - <Sortable 179 - value={ingredients.fields} 180 - onMove={({ activeIndex, overIndex }) => 181 - ingredients.move(activeIndex, overIndex)} 182 - > 183 - <div className="flex w-full flex-col gap-2"> 184 - {ingredients.fields.map((field, index) => ( 185 - <SortableItem key={field.id} value={field.id} asChild> 186 - <div className="grid grid-cols-[2rem_0.3fr_1fr_2rem] items-center gap-2"> 187 - <SortableDragHandle 188 - type="button" 189 - variant="outline" 190 - size="icon" 191 - className="size-8 shrink-0" 192 - > 193 - <DragHandleDots2Icon 194 - className="size-4" 195 - aria-hidden="true" 196 - /> 197 - </SortableDragHandle> 198 - 199 - <FormField 200 - control={form.control} 201 - name={`ingredients.${index}.amount`} 202 - render={({ field: { value, ...field } }) => ( 203 - <FormItem> 204 - <FormControl> 205 - <Input 206 - placeholder="Amount" 207 - value={value || ""} 208 - className="h-8" 209 - {...field} 210 - /> 211 - </FormControl> 212 - <FormMessage /> 213 - </FormItem> 214 - )} 215 - /> 216 - 217 - <FormField 218 - control={form.control} 219 - name={`ingredients.${index}.name`} 220 - render={({ field }) => ( 221 - <FormItem> 222 - <FormControl> 223 - <Input 224 - placeholder="Ingredient" 225 - className="h-8" 226 - {...field} 227 - /> 228 - </FormControl> 229 - <FormMessage /> 230 - </FormItem> 231 - )} 232 - /> 233 - 234 - <Button 235 - type="button" 236 - variant="destructive" 237 - className="size-8" 238 - onClick={(e) => { 239 - e.preventDefault(); 240 - ingredients.remove(index); 241 - }} 242 - > 243 - <TrashIcon /> 244 - </Button> 245 - </div> 246 - </SortableItem> 247 - ))} 248 - </div> 249 - </Sortable> 250 - <Button 251 - type="button" 252 - variant="secondary" 253 - onClick={(e) => { 254 - e.preventDefault(); 255 - ingredients.append({ 256 - name: "", 257 - amount: "", 258 - }); 259 - }} 260 - > 261 - Add 262 - </Button> 263 - </div> 264 - 265 - <div className="grid gap-2"> 266 - <Label>Steps</Label> 267 - <Sortable 268 - value={steps.fields} 269 - onMove={({ activeIndex, overIndex }) => 270 - steps.move(activeIndex, overIndex)} 271 - > 272 - <div className="flex w-full flex-col gap-2"> 273 - {steps.fields.map((field, index) => ( 274 - <SortableItem key={field.id} value={field.id} asChild> 275 - <div className="grid grid-cols-[2rem_auto_2rem] items-center gap-2"> 276 - <SortableDragHandle 277 - type="button" 278 - variant="outline" 279 - size="icon" 280 - className="size-8 shrink-0" 281 - > 282 - <DragHandleDots2Icon 283 - className="size-4" 284 - aria-hidden="true" 285 - /> 286 - </SortableDragHandle> 287 - <FormField 288 - control={form.control} 289 - name={`steps.${index}.text`} 290 - render={({ field }) => ( 291 - <FormItem> 292 - <FormControl> 293 - <Input className="h-8" {...field} /> 294 - </FormControl> 295 - <FormMessage /> 296 - </FormItem> 297 - )} 298 - /> 299 - 300 - <Button 301 - type="button" 302 - variant="destructive" 303 - className="size-8" 304 - onClick={(e) => { 305 - e.preventDefault(); 306 - steps.remove(index); 307 - }} 308 - > 309 - <TrashIcon /> 310 - </Button> 311 - </div> 312 - </SortableItem> 313 - ))} 314 - </div> 315 - </Sortable> 316 - <Button 317 - type="button" 318 - variant="secondary" 319 - onClick={(e) => { 320 - e.preventDefault(); 321 - steps.append({ text: "" }); 322 - }} 323 - > 324 - Add 325 - </Button> 326 - </div> 327 - 328 - <div className="grid justify-end"> 329 - <Button 330 - type="submit" 331 - className="ml-auto" 332 - disabled={isPending} 333 - > 334 - Submit 335 - </Button> 336 - </div> 337 - </form> 338 - </Form> 339 - </CardContent> 340 - </Card> 341 - </div> 342 - </> 343 - ); 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 + // ); 344 313 } 345 314 346 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,
+903 -843
bun.lock
··· 3 3 "configVersion": 1, 4 4 "workspaces": { 5 5 "": { 6 + "name": "@cookware/monorepo", 6 7 "devDependencies": { 7 8 "turbo": "^2.3.3", 9 + "typescript": "^5.9.3", 8 10 }, 9 11 }, 10 12 "apps/api": { 11 13 "name": "@cookware/api", 12 14 "dependencies": { 13 - "@atcute/client": "^2.0.6", 14 - "@atproto/api": "^0.13.19", 15 - "@atproto/common": "^0.4.5", 16 - "@atproto/crypto": "^0.4.2", 17 - "@atproto/jwk-jose": "^0.1.2", 18 - "@atproto/oauth-client-node": "^0.2.3", 19 - "@cookware/database": "workspace:^", 20 - "@hono/node-server": "^1.13.7", 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:*", 21 23 "@libsql/client": "^0.14.0", 22 - "@sentry/node": "^8.42.0", 23 - "@skyware/jetstream": "^0.2.1", 24 - "bufferutil": "^4.0.8", 25 - "drizzle-orm": "^0.37.0", 26 - "hono": "^4.6.12", 27 - "hono-sessions": "^0.7.0", 28 - "jose": "^5.9.6", 24 + "drizzle-orm": "catalog:", 25 + "hono": "^4.10.7", 29 26 "pino": "^9.5.0", 30 - "uint8arrays": "^5.1.0", 31 - "ws": "^8.18.0", 32 - "zod": "^3.23.8", 33 27 }, 34 28 "devDependencies": { 35 - "@atcute/bluesky": "^1.0.9", 36 - "@cookware/lexicons": "workspace:*", 29 + "@atcute/bluesky": "^3.2.10", 37 30 "@cookware/tsconfig": "workspace:*", 38 - "@swc/core": "^1.9.3", 39 - "@types/node": "^22.10.1", 40 - "@types/ws": "^8.5.13", 31 + "@types/bun": "catalog:", 41 32 "drizzle-kit": "^0.29.0", 42 - "pino-pretty": "^13.0.0", 33 + "pino-pretty": "^13.1.2", 43 34 "rimraf": "^6.0.1", 44 - "ts-node": "^10.9.2", 45 - "tsup": "^8.3.5", 46 - "tsx": "^4.19.2", 47 - "typescript": "^5.7.2", 48 35 }, 49 36 }, 50 37 "apps/ingester": { 51 38 "name": "@cookware/ingester", 52 39 "dependencies": { 53 - "@atcute/client": "^2.0.6", 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", 54 46 "@cookware/database": "workspace:^", 47 + "@cookware/lexicons": "workspace:*", 55 48 "@sentry/node": "^8.42.0", 56 - "@skyware/jetstream": "^0.2.1", 57 - "bufferutil": "^4.0.8", 58 - "drizzle-orm": "^0.37.0", 59 49 "pino": "^9.5.0", 60 - "ws": "^8.18.0", 61 - "zod": "^3.23.8", 62 50 }, 63 51 "devDependencies": { 64 - "@cookware/lexicons": "workspace:*", 65 52 "@cookware/tsconfig": "workspace:*", 66 - "@types/node": "^22.10.1", 53 + "@types/bun": "catalog:", 67 54 "@types/ws": "^8.5.13", 68 55 "pino-pretty": "^13.0.0", 69 56 "rimraf": "^6.0.1", 70 - "ts-node": "^10.9.2", 71 - "tsup": "^8.3.5", 72 - "tsx": "^4.19.2", 73 57 "typescript": "^5.7.2", 74 58 }, 75 59 }, ··· 77 61 "name": "@cookware/web", 78 62 "version": "0.0.0", 79 63 "dependencies": { 80 - "@atcute/client": "^2.0.6", 81 - "@atcute/oauth-browser-client": "^1.0.7", 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", 82 69 "@atproto/common": "^0.4.5", 83 70 "@atproto/common-web": "^0.3.1", 84 71 "@dnd-kit/core": "^6.3.1", ··· 91 78 "@radix-ui/react-dialog": "^1.1.4", 92 79 "@radix-ui/react-dropdown-menu": "^2.1.4", 93 80 "@radix-ui/react-icons": "^1.3.2", 94 - "@radix-ui/react-label": "^2.1.0", 95 - "@radix-ui/react-separator": "^1.1.0", 96 - "@radix-ui/react-slot": "^1.1.0", 81 + "@radix-ui/react-label": "^2.1.8", 82 + "@radix-ui/react-separator": "^1.1.8", 83 + "@radix-ui/react-slot": "^1.2.4", 97 84 "@radix-ui/react-tooltip": "^1.1.4", 98 85 "@tanstack/react-query": "^5.62.2", 99 86 "@tanstack/react-query-devtools": "^5.62.2", ··· 118 105 "@types/node": "^22.10.1", 119 106 "@types/react": "^19.0.0", 120 107 "@types/react-dom": "^19.0.0", 108 + "@vitejs/plugin-react": "^5.1.1", 121 109 "@vitejs/plugin-react-swc": "^3.5.0", 122 110 "autoprefixer": "^10.4.20", 111 + "babel-plugin-react-compiler": "^1.0.0", 123 112 "cssnano": "^7.0.6", 124 113 "eslint": "^9.15.0", 125 114 "eslint-plugin-react-hooks": "^5.0.0", ··· 130 119 "tailwindcss": "^3.4.16", 131 120 "typescript": "~5.6.2", 132 121 "typescript-eslint": "^8.15.0", 133 - "vite": "^6.0.1", 122 + "vite": "^7.2.4", 134 123 }, 135 124 }, 136 125 "libs/database": { 137 126 "name": "@cookware/database", 138 127 "version": "0.0.0", 139 128 "dependencies": { 140 - "@libsql/client": "^0.14.0", 141 - "drizzle-orm": "^0.37.0", 129 + "@libsql/client": "^0.15.15", 130 + "drizzle-orm": "catalog:", 131 + "pg": "^8.16.3", 142 132 "zod": "^3.23.8", 143 133 }, 144 134 "devDependencies": { 135 + "@atcute/lexicons": "catalog:", 145 136 "@atproto/oauth-client-node": "^0.2.3", 146 - "@cookware/lexicons": "workspace:^", 137 + "@cookware/lexicons": "workspace:*", 147 138 "@cookware/tsconfig": "workspace:*", 139 + "@types/bun": "catalog:", 148 140 "@types/node": "^22.10.1", 141 + "@types/pg": "^8.15.6", 149 142 "drizzle-kit": "^0.29.0", 150 143 "typescript": "^5.2.2", 151 144 }, ··· 153 146 "libs/lexicons": { 154 147 "name": "@cookware/lexicons", 155 148 "version": "0.0.0", 149 + "dependencies": { 150 + "@atcute/atproto": "catalog:", 151 + "@atcute/bluesky": "catalog:", 152 + "@atcute/client": "catalog:", 153 + "@atcute/lexicons": "catalog:", 154 + }, 156 155 "devDependencies": { 157 - "@atcute/client": "^2.0.6", 158 - "@atcute/lex-cli": "^1.0.3", 156 + "@atcute/lex-cli": "^2.3.3", 159 157 "@cookware/tsconfig": "workspace:*", 160 - "typescript": "^5.7.2", 161 - "zod": "^3.23.8", 162 - }, 163 - "peerDependencies": { 164 - "@atcute/client": "^2.0.6", 165 - "zod": "^3.23.8", 158 + "@typelex/emitter": "^0.4.0", 159 + "@types/bun": "catalog:", 160 + "@typespec/compiler": "^1.6.0", 166 161 }, 167 162 }, 168 163 "libs/tsconfig": { 169 164 "name": "@cookware/tsconfig", 170 165 "version": "0.0.0", 166 + "dependencies": { 167 + "@types/bun": "^1.3.3", 168 + }, 171 169 }, 172 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 + }, 173 179 "packages": { 174 180 "@alloc/quick-lru": ["@alloc/quick-lru@5.2.0", "", {}, "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw=="], 175 181 176 - "@ampproject/remapping": ["@ampproject/remapping@2.3.0", "", { "dependencies": { "@jridgewell/gen-mapping": "0.3.5", "@jridgewell/trace-mapping": "0.3.25" } }, "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw=="], 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=="], 177 225 178 - "@atcute/bluesky": ["@atcute/bluesky@1.0.9", "", { "peerDependencies": { "@atcute/client": "2.0.6" } }, "sha512-06UbqlnREobZB5vVlstJXsJJVNBPr/RhauVVWQk9k8eIfzyiV9uxklc5olv+wULld+iBL6OQItnTEyZPv8QFLw=="], 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=="], 179 229 180 - "@atcute/client": ["@atcute/client@2.0.6", "", {}, "sha512-mhdqEicGUx0s5HTFOLpz91rcLS9j/g63de0nmAqv7blhU3j+xBf4le54qr2YIXNfnReZI7EwLYLX/YIBez4LGA=="], 230 + "@atproto-labs/simple-store": ["@atproto-labs/simple-store@0.2.0", "", {}, "sha512-0bRbAlI8Ayh03wRwncAMEAyUKtZ+AuTS1jgPrfym1WVOAOiottI/ZmgccqLl6w5MbxVcClNQF7WYGKvGwGoIhA=="], 181 231 182 - "@atcute/lex-cli": ["@atcute/lex-cli@1.0.3", "", { "dependencies": { "@badrap/valita": "0.3.16", "@externdefs/collider": "0.1.0", "picocolors": "1.1.1", "prettier": "3.4.1" }, "bin": { "lex-cli": "cli.mjs" } }, "sha512-o6nRrYe1Vu2C21ArSjBCaF9deujBmgx/Q3LkOJorZbc/ableFeThcS5jvePMYcW9t18EDSTlttKn13y8uuUDNQ=="], 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=="], 183 233 184 - "@atcute/oauth-browser-client": ["@atcute/oauth-browser-client@1.0.7", "", { "dependencies": { "@atcute/client": "2.0.6", "nanoid": "5.0.9" } }, "sha512-ikf3FscGZXYU+S0K4n9eDUMg6pS//g/Zr159+bznxO3Wn2JYBohEIxzy29OIEExXD/qAYMq9kfqvo2d0gs4JWQ=="], 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=="], 185 235 186 - "@atproto-labs/did-resolver": ["@atproto-labs/did-resolver@0.1.6", "", { "dependencies": { "@atproto-labs/fetch": "0.1.2", "@atproto-labs/pipe": "0.1.0", "@atproto-labs/simple-store": "0.1.1", "@atproto-labs/simple-store-memory": "0.1.1", "@atproto/did": "0.1.3", "zod": "3.23.8" } }, "sha512-qddGpcjKj9SUMlZW1d+/dY/03CDVcmOAlAozXEXsU2H5OT1vFAdMmOp0VbwK0y99RH3DvAQtyQKiRzoPFqp8rA=="], 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=="], 187 237 188 - "@atproto-labs/fetch": ["@atproto-labs/fetch@0.1.2", "", { "dependencies": { "@atproto-labs/pipe": "0.1.0" }, "optionalDependencies": { "zod": "3.23.8" } }, "sha512-7mQQIRtVenqtdBQKCqoLjyAhPS2aA56EGEjyz5zB3sramM3qkrvzyusr55GAzGDS0tvB6cy9cDEtSLmfK7LUnA=="], 238 + "@atproto/did": ["@atproto/did@0.1.5", "", { "dependencies": { "zod": "^3.23.8" } }, "sha512-8+1D08QdGE5TF0bB0vV8HLVrVZJeLNITpRTUVEoABNMRaUS7CoYSVb0+JNQDeJIVmqMjOL8dOjvCUDkp3gEaGQ=="], 189 239 190 - "@atproto-labs/fetch-node": ["@atproto-labs/fetch-node@0.1.4", "", { "dependencies": { "@atproto-labs/fetch": "0.1.2", "@atproto-labs/pipe": "0.1.0", "ipaddr.js": "2.2.0", "psl": "1.15.0", "undici": "6.21.0" } }, "sha512-hwYx0XpgIl2zydRy13DtWvywruuHk1EX+yCjqjgUIezUm8fi35ZN4QvR6INEm0MpN2MD/kQsImPbd8ZftzZ3zw=="], 240 + "@atproto/jwk": ["@atproto/jwk@0.3.0", "", { "dependencies": { "multiformats": "^9.9.0", "zod": "^3.23.8" } }, "sha512-MIAXyNMGu1tCNHjqW/8jqfE/wgWCIoK2cJ0mR6UxwhNPvkbe35TcpRYJdtQu/E6MUd7TziyDBa/GO4dKAiePhQ=="], 191 241 192 - "@atproto-labs/handle-resolver": ["@atproto-labs/handle-resolver@0.1.4", "", { "dependencies": { "@atproto-labs/simple-store": "0.1.1", "@atproto-labs/simple-store-memory": "0.1.1", "@atproto/did": "0.1.3", "zod": "3.23.8" } }, "sha512-tnGUD2mQ6c8xHs3eeVJgwYqM3FHoTZZbOcOGKqO1A5cuIG+gElwEhpWwpwX5LI7FF4J8eS9BOHLl3NFS7Q8QXg=="], 242 + "@atproto/jwk-jose": ["@atproto/jwk-jose@0.1.8", "", { "dependencies": { "@atproto/jwk": "0.3.0", "jose": "^5.2.0" } }, "sha512-aoU2Q0GpIl388KhCcv9YvAxNscALUv3xzLq5gjVPdJ+zmqw94nGZNcjiNvpnbfS+VQM9e2DrrTuwmDXnxfrrSA=="], 193 243 194 - "@atproto-labs/handle-resolver-node": ["@atproto-labs/handle-resolver-node@0.1.8", "", { "dependencies": { "@atproto-labs/fetch-node": "0.1.4", "@atproto-labs/handle-resolver": "0.1.4", "@atproto/did": "0.1.3" } }, "sha512-AlH7qRtmhZFRCcv1HK9OYiZpTFGcX39zjzzANq42zVLlfqoJr3ugnv7mAXGHE8woVguKtbypHnrVCDceoBAs2w=="], 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=="], 195 245 196 - "@atproto-labs/identity-resolver": ["@atproto-labs/identity-resolver@0.1.7", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.6", "@atproto-labs/handle-resolver": "0.1.4", "@atproto/syntax": "0.3.1" } }, "sha512-aRmY0cp+aFDgxAD62jjCPUDJMqryuXmt0hK9ls8LHeSzszr58BFDwybLaW6Izz2KISQlzu75Ia0c6uRymdmcYA=="], 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=="], 197 247 198 - "@atproto-labs/pipe": ["@atproto-labs/pipe@0.1.0", "", {}, "sha512-ghOqHFyJlQVFPESzlVHjKroP0tPzbmG5Jms0dNI9yLDEfL8xp4OFPWLX4f6T8mRq69wWs4nIDM3sSsFbFqLa1w=="], 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=="], 199 249 200 - "@atproto-labs/simple-store": ["@atproto-labs/simple-store@0.1.1", "", {}, "sha512-WKILW2b3QbAYKh+w5U2x6p5FqqLl0nAeLwGeDY+KjX01K4Dq3vQTR9b/qNp0jZm48CabPQVrqCv0PPU9LgRRRg=="], 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=="], 201 251 202 - "@atproto-labs/simple-store-memory": ["@atproto-labs/simple-store-memory@0.1.1", "", { "dependencies": { "@atproto-labs/simple-store": "0.1.1", "lru-cache": "10.4.3" } }, "sha512-PCRqhnZ8NBNBvLku53O56T0lsVOtclfIrQU/rwLCc4+p45/SBPrRYNBi6YFq5rxZbK6Njos9MCmILV/KLQxrWA=="], 252 + "@atproto/oauth-types": ["@atproto/oauth-types@0.3.0", "", { "dependencies": { "@atproto/jwk": "0.3.0", "zod": "^3.23.8" } }, "sha512-ptfsJARKODXfuOoDQag4a6PpEkDEj4Urz3jOmnQZy2YspPc/TNm1o0HglU0YehELv1vfhh9gEz40BJztPPhiLA=="], 203 253 204 - "@atproto/api": ["@atproto/api@0.13.19", "", { "dependencies": { "@atproto/common-web": "0.3.1", "@atproto/lexicon": "0.4.3", "@atproto/syntax": "0.3.1", "@atproto/xrpc": "0.6.4", "await-lock": "2.2.2", "multiformats": "9.9.0", "tlds": "1.255.0", "zod": "3.23.8" } }, "sha512-rLWQBZaOIk3ds1Fx9CwrdyX3X2GbdSEvVJ9mdSPNX40joiEaE1ljGMOcziFipbvZacXynozE4E0Sb1CgOhzfmA=="], 254 + "@atproto/syntax": ["@atproto/syntax@0.4.0", "", {}, "sha512-b9y5ceHS8YKOfP3mdKmwAx5yVj9294UN7FG2XzP6V5aKUdFazEYRnR9m5n5ZQFKa3GNvz7de9guZCJ/sUTcOAA=="], 205 255 206 - "@atproto/common": ["@atproto/common@0.4.5", "", { "dependencies": { "@atproto/common-web": "0.3.1", "@ipld/dag-cbor": "7.0.3", "cbor-x": "1.6.0", "iso-datestring-validator": "2.2.2", "multiformats": "9.9.0", "pino": "8.21.0" } }, "sha512-LFAGqHcxCI5+b31Xgk+VQQtZU258iGPpHJzNeHVcdh6teIKZi4C2l6YV+m+3CEz+yYcfP7jjUmgqesx7l9Arsg=="], 256 + "@atproto/xrpc": ["@atproto/xrpc@0.7.0", "", { "dependencies": { "@atproto/lexicon": "^0.4.11", "zod": "^3.23.8" } }, "sha512-SfhP9dGx2qclaScFDb58Jnrmim5nk4geZXCqg6sB0I/KZhZEkr9iIx1hLCp+sxkIfEsmEJjeWO4B0rjUIJW5cw=="], 207 257 208 - "@atproto/common-web": ["@atproto/common-web@0.3.1", "", { "dependencies": { "graphemer": "1.4.0", "multiformats": "9.9.0", "uint8arrays": "3.0.0", "zod": "3.23.8" } }, "sha512-N7wiTnus5vAr+lT//0y8m/FaHHLJ9LpGuEwkwDAeV3LCiPif4m/FS8x/QOYrx1PdZQwKso95RAPzCGWQBH5j6Q=="], 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=="], 209 259 210 - "@atproto/crypto": ["@atproto/crypto@0.4.2", "", { "dependencies": { "@noble/curves": "1.7.0", "@noble/hashes": "1.6.1", "uint8arrays": "3.0.0" } }, "sha512-aeOfPQYCDbhn2hV06oBF2KXrWjf/BK4yL8lfANJKSmKl3tKWCkiW/moi643rUXXxSE72KtWtQeqvNFYnnFJ0ig=="], 260 + "@babel/compat-data": ["@babel/compat-data@7.28.5", "", {}, "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA=="], 211 261 212 - "@atproto/did": ["@atproto/did@0.1.3", "", { "dependencies": { "zod": "3.23.8" } }, "sha512-ULD8Gw/KRRwLFZ2Z2L4DjmdOMrg8IYYlcjdSc+GQ2/QJSVnD2zaJJVTLd3vls121wGt/583rNaiZTT2DpBze4w=="], 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=="], 213 263 214 - "@atproto/jwk": ["@atproto/jwk@0.1.1", "", { "dependencies": { "multiformats": "9.9.0", "zod": "3.23.8" } }, "sha512-6h/bj1APUk7QcV9t/oA6+9DB5NZx9SZru9x+/pV5oHFI9Xz4ZuM5+dq1PfsJV54pZyqdnZ6W6M717cxoC7q7og=="], 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=="], 215 265 216 - "@atproto/jwk-jose": ["@atproto/jwk-jose@0.1.2", "", { "dependencies": { "@atproto/jwk": "0.1.1", "jose": "5.9.6" } }, "sha512-lDwc/6lLn2aZ/JpyyggyjLFsJPMntrVzryyGUx5aNpuTS8SIuc4Ky0REhxqfLopQXJJZCuRRjagHG3uP05/moQ=="], 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=="], 217 267 218 - "@atproto/jwk-webcrypto": ["@atproto/jwk-webcrypto@0.1.2", "", { "dependencies": { "@atproto/jwk": "0.1.1", "@atproto/jwk-jose": "0.1.2" } }, "sha512-vTBUbUZXh0GI+6KJiPGukmI4BQEHFAij8fJJ4WnReF/hefAs3ISZtrWZHGBebz+q2EcExYlnhhlmxvDzV7veGw=="], 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=="], 219 269 220 - "@atproto/lexicon": ["@atproto/lexicon@0.4.3", "", { "dependencies": { "@atproto/common-web": "0.3.1", "@atproto/syntax": "0.3.1", "iso-datestring-validator": "2.2.2", "multiformats": "9.9.0", "zod": "3.23.8" } }, "sha512-lFVZXe1S1pJP0dcxvJuHP3r/a+EAIBwwU7jUK+r8iLhIja+ml6NmYv8KeFHmIJATh03spEQ9s02duDmFVdCoXg=="], 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=="], 221 271 222 - "@atproto/oauth-client": ["@atproto/oauth-client@0.3.3", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.6", "@atproto-labs/fetch": "0.1.2", "@atproto-labs/handle-resolver": "0.1.4", "@atproto-labs/identity-resolver": "0.1.7", "@atproto-labs/simple-store": "0.1.1", "@atproto-labs/simple-store-memory": "0.1.1", "@atproto/did": "0.1.3", "@atproto/jwk": "0.1.1", "@atproto/oauth-types": "0.2.1", "@atproto/xrpc": "0.6.4", "multiformats": "9.9.0", "zod": "3.23.8" } }, "sha512-qC6ekTdbUrXxDwuUC9jInWw7TuJYkl/EuReoLcvZ7dv9KbCUEuoYT0TNROLGp24cxRH65q/PVlp10Ov7lkxteg=="], 272 + "@babel/helper-globals": ["@babel/helper-globals@7.28.0", "", {}, "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw=="], 223 273 224 - "@atproto/oauth-client-node": ["@atproto/oauth-client-node@0.2.3", "", { "dependencies": { "@atproto-labs/did-resolver": "0.1.6", "@atproto-labs/handle-resolver-node": "0.1.8", "@atproto-labs/simple-store": "0.1.1", "@atproto/did": "0.1.3", "@atproto/jwk": "0.1.1", "@atproto/jwk-jose": "0.1.2", "@atproto/jwk-webcrypto": "0.1.2", "@atproto/oauth-client": "0.3.3", "@atproto/oauth-types": "0.2.1" } }, "sha512-crHxZaP9T/i7O9fOhALcFtW1EP/tVblDnWoaIiZ3vL/hvVLwSUad/wvG2WPcVURzLSbigDInhn7rZZSzLxJacg=="], 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=="], 225 275 226 - "@atproto/oauth-types": ["@atproto/oauth-types@0.2.1", "", { "dependencies": { "@atproto/jwk": "0.1.1", "zod": "3.23.8" } }, "sha512-hDisUXzcq5KU1HMuCYZ8Kcz7BePl7V11bFjjgZvND3mdSphiyBpJ8MCNn3QzAa6cXpFo0w9PDcYMAlCCRZHdVw=="], 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=="], 227 277 228 - "@atproto/syntax": ["@atproto/syntax@0.3.1", "", {}, "sha512-fzW0Mg1QUOVCWUD3RgEsDt6d1OZ6DdFmbKcDdbzUfh0t4rhtRAC05KbZYmxuMPWDAiJ4BbbQ5dkAc/mNypMXkw=="], 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=="], 229 279 230 - "@atproto/xrpc": ["@atproto/xrpc@0.6.4", "", { "dependencies": { "@atproto/lexicon": "0.4.3", "zod": "3.23.8" } }, "sha512-9ZAJ8nsXTqC4XFyS0E1Wlg7bAvonhXQNQ3Ocs1L1LIwFLXvsw/4fNpIHXxvXvqTCVeyHLbImOnE9UiO1c/qIYA=="], 280 + "@babel/helper-optimise-call-expression": ["@babel/helper-optimise-call-expression@7.27.1", "", { "dependencies": { "@babel/types": "^7.27.1" } }, "sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw=="], 231 281 232 - "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "7.25.9", "js-tokens": "4.0.0", "picocolors": "1.1.1" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], 282 + "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.27.1", "", {}, "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw=="], 233 283 234 - "@babel/compat-data": ["@babel/compat-data@7.26.2", "", {}, "sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg=="], 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=="], 235 285 236 - "@babel/core": ["@babel/core@7.26.0", "", { "dependencies": { "@ampproject/remapping": "2.3.0", "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/helper-compilation-targets": "7.25.9", "@babel/helper-module-transforms": "7.26.0", "@babel/helpers": "7.26.0", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "convert-source-map": "2.0.0", "debug": "4.3.7", "gensync": "1.0.0-beta.2", "json5": "2.2.3", "semver": "6.3.1" } }, "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg=="], 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=="], 237 287 238 - "@babel/generator": ["@babel/generator@7.26.2", "", { "dependencies": { "@babel/parser": "7.26.2", "@babel/types": "7.26.0", "@jridgewell/gen-mapping": "0.3.5", "@jridgewell/trace-mapping": "0.3.25", "jsesc": "3.0.2" } }, "sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw=="], 288 + "@babel/helper-string-parser": ["@babel/helper-string-parser@7.27.1", "", {}, "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA=="], 239 289 240 - "@babel/helper-compilation-targets": ["@babel/helper-compilation-targets@7.25.9", "", { "dependencies": { "@babel/compat-data": "7.26.2", "@babel/helper-validator-option": "7.25.9", "browserslist": "4.24.2", "lru-cache": "5.1.1", "semver": "6.3.1" } }, "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ=="], 290 + "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], 241 291 242 - "@babel/helper-module-imports": ["@babel/helper-module-imports@7.25.9", "", { "dependencies": { "@babel/traverse": "7.25.9", "@babel/types": "7.26.0" } }, "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw=="], 292 + "@babel/helper-validator-option": ["@babel/helper-validator-option@7.27.1", "", {}, "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg=="], 243 293 244 - "@babel/helper-module-transforms": ["@babel/helper-module-transforms@7.26.0", "", { "dependencies": { "@babel/helper-module-imports": "7.25.9", "@babel/helper-validator-identifier": "7.25.9", "@babel/traverse": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw=="], 294 + "@babel/helpers": ["@babel/helpers@7.28.4", "", { "dependencies": { "@babel/template": "^7.27.2", "@babel/types": "^7.28.4" } }, "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w=="], 245 295 246 - "@babel/helper-plugin-utils": ["@babel/helper-plugin-utils@7.25.9", "", {}, "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw=="], 296 + "@babel/parser": ["@babel/parser@7.28.5", "", { "dependencies": { "@babel/types": "^7.28.5" }, "bin": "./bin/babel-parser.js" }, "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ=="], 247 297 248 - "@babel/helper-string-parser": ["@babel/helper-string-parser@7.25.9", "", {}, "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA=="], 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=="], 249 299 250 - "@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.25.9", "", {}, "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ=="], 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=="], 251 301 252 - "@babel/helper-validator-option": ["@babel/helper-validator-option@7.25.9", "", {}, "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw=="], 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=="], 253 303 254 - "@babel/helpers": ["@babel/helpers@7.26.0", "", { "dependencies": { "@babel/template": "7.25.9", "@babel/types": "7.26.0" } }, "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw=="], 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=="], 255 305 256 - "@babel/parser": ["@babel/parser@7.26.2", "", { "dependencies": { "@babel/types": "7.26.0" }, "bin": "./bin/babel-parser.js" }, "sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ=="], 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=="], 257 307 258 - "@babel/plugin-syntax-jsx": ["@babel/plugin-syntax-jsx@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA=="], 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=="], 259 309 260 - "@babel/plugin-syntax-typescript": ["@babel/plugin-syntax-typescript@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "7.25.9" }, "peerDependencies": { "@babel/core": "7.26.0" } }, "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ=="], 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=="], 261 311 262 - "@babel/template": ["@babel/template@7.25.9", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/parser": "7.26.2", "@babel/types": "7.26.0" } }, "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg=="], 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=="], 263 313 264 - "@babel/traverse": ["@babel/traverse@7.25.9", "", { "dependencies": { "@babel/code-frame": "7.26.2", "@babel/generator": "7.26.2", "@babel/parser": "7.26.2", "@babel/template": "7.25.9", "@babel/types": "7.26.0", "debug": "4.3.7", "globals": "11.12.0" } }, "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw=="], 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=="], 265 315 266 - "@babel/types": ["@babel/types@7.26.0", "", { "dependencies": { "@babel/helper-string-parser": "7.25.9", "@babel/helper-validator-identifier": "7.25.9" } }, "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA=="], 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=="], 267 317 268 - "@badrap/valita": ["@badrap/valita@0.3.16", "", {}, "sha512-slP2blSd6A+xUBgGf+wW6adGd72ojBLxemU0jXQ0fXQcsZWYQ70wTLTJggs6+oxcAqN/bvYA3Ops8SqR2Imyaw=="], 318 + "@badrap/valita": ["@badrap/valita@0.4.6", "", {}, "sha512-4kdqcjyxo/8RQ8ayjms47HCWZIF5981oE5nIenbfThKDxWXtEHKipAOWlflpPJzZx9y/JWYQkp18Awr7VuepFg=="], 269 319 270 320 "@cbor-extract/cbor-extract-darwin-arm64": ["@cbor-extract/cbor-extract-darwin-arm64@2.2.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-P7swiOAdF7aSi0H+tHtHtr6zrpF3aAq/W9FXx5HektRvLTM2O89xCyXF3pk7pLc7QpaY7AoaE8UowVf9QBdh3w=="], 271 321 ··· 291 341 292 342 "@cookware/web": ["@cookware/web@workspace:apps/web"], 293 343 294 - "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], 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=="], 295 345 296 - "@dnd-kit/accessibility": ["@dnd-kit/accessibility@3.1.1", "", { "dependencies": { "tslib": "2.8.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw=="], 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=="], 297 347 298 - "@dnd-kit/core": ["@dnd-kit/core@6.3.1", "", { "dependencies": { "@dnd-kit/accessibility": "3.1.1", "@dnd-kit/utilities": "3.2.2", "tslib": "2.8.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ=="], 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=="], 299 349 300 - "@dnd-kit/modifiers": ["@dnd-kit/modifiers@9.0.0", "", { "dependencies": { "@dnd-kit/utilities": "3.2.2", "tslib": "2.8.1" }, "peerDependencies": { "@dnd-kit/core": "6.3.1", "react": "19.0.0" } }, "sha512-ybiLc66qRGuZoC20wdSSG6pDXFikui/dCNGthxv4Ndy8ylErY0N3KVxY2bgo7AWwIbxDmXDg3ylAFmnrjcbVvw=="], 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=="], 301 351 302 - "@dnd-kit/sortable": ["@dnd-kit/sortable@10.0.0", "", { "dependencies": { "@dnd-kit/utilities": "3.2.2", "tslib": "2.8.1" }, "peerDependencies": { "@dnd-kit/core": "6.3.1", "react": "19.0.0" } }, "sha512-+xqhmIIzvAYMGfBYYnbKuNicfSsk4RksY2XdmJhT+HAC01nix6fHCztU68jooFiMUB01Ky3F0FyOvhG/BZrWkg=="], 303 - 304 - "@dnd-kit/utilities": ["@dnd-kit/utilities@3.2.2", "", { "dependencies": { "tslib": "2.8.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg=="], 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=="], 305 353 306 354 "@drizzle-team/brocli": ["@drizzle-team/brocli@0.10.2", "", {}, "sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w=="], 307 355 308 - "@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=="], 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=="], 309 357 310 - "@esbuild-kit/esm-loader": ["@esbuild-kit/esm-loader@2.6.5", "", { "dependencies": { "@esbuild-kit/core-utils": "3.3.2", "get-tsconfig": "4.8.1" } }, "sha512-FxEMIkJKnodyA1OaCUoEvbYRkoZlLZ4d/eXFu9Fh8CbBBgP5EmZxrfTRyN0qpXZ4vOvqnE5YdRdcrmUUXuU+dA=="], 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=="], 311 359 312 360 "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.19.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA=="], 313 361 ··· 342 390 "@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.19.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg=="], 343 391 344 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=="], 345 395 346 396 "@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.19.12", "", { "os": "none", "cpu": "x64" }, "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA=="], 347 397 348 - "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.24.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg=="], 398 + "@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.12", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A=="], 349 399 350 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=="], 351 403 352 404 "@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.19.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA=="], 353 405 ··· 357 409 358 410 "@esbuild/win32-x64": ["@esbuild/win32-x64@0.19.12", "", { "os": "win32", "cpu": "x64" }, "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA=="], 359 411 360 - "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.4.1", "", { "dependencies": { "eslint-visitor-keys": "3.4.3" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA=="], 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=="], 361 413 362 - "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.1", "", {}, "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ=="], 414 + "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="], 363 415 364 - "@eslint/config-array": ["@eslint/config-array@0.19.0", "", { "dependencies": { "@eslint/object-schema": "2.1.4", "debug": "4.3.7", "minimatch": "3.1.2" } }, "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ=="], 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=="], 365 417 366 - "@eslint/core": ["@eslint/core@0.9.0", "", {}, "sha512-7ATR9F0e4W85D/0w7cU0SNj7qkAexMG+bAHEZOjo9akvGuhHE2m7umzWzfnpa0XAg5Kxc1BWmtPMV67jJ+9VUg=="], 418 + "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="], 367 419 368 - "@eslint/eslintrc": ["@eslint/eslintrc@3.2.0", "", { "dependencies": { "ajv": "6.12.6", "debug": "4.3.7", "espree": "10.3.0", "globals": "14.0.0", "ignore": "5.3.2", "import-fresh": "3.3.0", "js-yaml": "4.1.0", "minimatch": "3.1.2", "strip-json-comments": "3.1.1" } }, "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w=="], 420 + "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="], 369 421 370 - "@eslint/js": ["@eslint/js@9.16.0", "", {}, "sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg=="], 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=="], 371 423 372 - "@eslint/object-schema": ["@eslint/object-schema@2.1.4", "", {}, "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ=="], 424 + "@eslint/js": ["@eslint/js@9.39.1", "", {}, "sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw=="], 373 425 374 - "@eslint/plugin-kit": ["@eslint/plugin-kit@0.2.3", "", { "dependencies": { "levn": "0.4.1" } }, "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA=="], 426 + "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="], 375 427 376 - "@externdefs/collider": ["@externdefs/collider@0.1.0", "", { "peerDependencies": { "@badrap/valita": "0.3.16" } }, "sha512-vmFJEKHhftREiuhhK3WIMKk6bGfm7kM9c5HeVElFCbtqajXqCfwY/GR3f1G0qYWCvbtcoBhIZ2O8ia3A2/pjkw=="], 377 - 378 - "@floating-ui/core": ["@floating-ui/core@1.6.8", "", { "dependencies": { "@floating-ui/utils": "0.2.8" } }, "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA=="], 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=="], 379 429 380 - "@floating-ui/dom": ["@floating-ui/dom@1.6.12", "", { "dependencies": { "@floating-ui/core": "1.6.8", "@floating-ui/utils": "0.2.8" } }, "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w=="], 430 + "@floating-ui/core": ["@floating-ui/core@1.7.3", "", { "dependencies": { "@floating-ui/utils": "^0.2.10" } }, "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w=="], 381 431 382 - "@floating-ui/react-dom": ["@floating-ui/react-dom@2.1.2", "", { "dependencies": { "@floating-ui/dom": "1.6.12" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A=="], 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=="], 383 433 384 - "@floating-ui/utils": ["@floating-ui/utils@0.2.8", "", {}, "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig=="], 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=="], 385 435 386 - "@hono/node-server": ["@hono/node-server@1.13.7", "", { "peerDependencies": { "hono": "4.6.12" } }, "sha512-kTfUMsoloVKtRA2fLiGSd9qBddmru9KadNyhJCwgKBxTiNkaAJEwkVN9KV/rS4HtmmNRtUh6P+YpmjRMl0d9vQ=="], 436 + "@floating-ui/utils": ["@floating-ui/utils@0.2.10", "", {}, "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ=="], 387 437 388 - "@hookform/resolvers": ["@hookform/resolvers@3.9.1", "", { "peerDependencies": { "react-hook-form": "7.54.1" } }, "sha512-ud2HqmGBM0P0IABqoskKWI6PEf6ZDDBZkFqe2Vnl+mTHCEHzr3ISjjZyCwTjC/qpL25JC9aIDkloQejvMeq0ug=="], 438 + "@hookform/resolvers": ["@hookform/resolvers@3.10.0", "", { "peerDependencies": { "react-hook-form": "^7.0.0" } }, "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag=="], 389 439 390 440 "@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], 391 441 392 - "@humanfs/node": ["@humanfs/node@0.16.6", "", { "dependencies": { "@humanfs/core": "0.19.1", "@humanwhocodes/retry": "0.3.1" } }, "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw=="], 442 + "@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], 393 443 394 444 "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], 395 445 396 - "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.1", "", {}, "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA=="], 446 + "@humanwhocodes/retry": ["@humanwhocodes/retry@0.4.3", "", {}, "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ=="], 397 447 398 - "@ipld/dag-cbor": ["@ipld/dag-cbor@7.0.3", "", { "dependencies": { "cborg": "1.10.2", "multiformats": "9.9.0" } }, "sha512-1VVh2huHsuohdXC1bGJNE8WR72slZ9XE2T3wbBBq31dm7ZBatmKLLxrB+XAqafxfRFjv08RZmj/W/ZqaM13AuA=="], 448 + "@inquirer/ansi": ["@inquirer/ansi@1.0.2", "", {}, "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ=="], 399 449 400 - "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "5.1.2", "string-width-cjs": "npm:string-width@4.2.3", "strip-ansi": "7.1.0", "strip-ansi-cjs": "npm:strip-ansi@6.0.1", "wrap-ansi": "8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], 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=="], 401 451 402 - "@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.5", "", { "dependencies": { "@jridgewell/set-array": "1.2.1", "@jridgewell/sourcemap-codec": "1.5.0", "@jridgewell/trace-mapping": "0.3.25" } }, "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg=="], 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=="], 403 453 404 - "@jridgewell/resolve-uri": ["@jridgewell/resolve-uri@3.1.2", "", {}, "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw=="], 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=="], 405 455 406 - "@jridgewell/set-array": ["@jridgewell/set-array@1.2.1", "", {}, "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A=="], 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=="], 407 457 408 - "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="], 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=="], 409 459 410 - "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.9", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.0" } }, "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ=="], 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=="], 411 461 412 - "@libsql/client": ["@libsql/client@0.14.0", "", { "dependencies": { "@libsql/core": "0.14.0", "@libsql/hrana-client": "0.7.0", "js-base64": "3.7.7", "libsql": "0.4.7", "promise-limit": "2.7.0" } }, "sha512-/9HEKfn6fwXB5aTEEoMeFh4CtG0ZzbncBb1e++OCdVpgKZ/xyMsIVYXm0w7Pv4RUel803vE6LwniB3PqD72R0Q=="], 462 + "@inquirer/figures": ["@inquirer/figures@1.0.15", "", {}, "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g=="], 413 463 414 - "@libsql/core": ["@libsql/core@0.14.0", "", { "dependencies": { "js-base64": "3.7.7" } }, "sha512-nhbuXf7GP3PSZgdCY2Ecj8vz187ptHlZQ0VRc751oB2C1W8jQUXKKklvt7t1LJiUTQBVJuadF628eUk+3cRi4Q=="], 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=="], 415 501 416 502 "@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.4.7", "", { "os": "darwin", "cpu": "arm64" }, "sha512-yOL742IfWUlUevnI5PdnIT4fryY3LYTdLm56bnY0wXBw7dhFcnjuA7jrH3oSVz2mjZTHujxoITgAE7V6Z+eAbg=="], 417 503 418 504 "@libsql/darwin-x64": ["@libsql/darwin-x64@0.4.7", "", { "os": "darwin", "cpu": "x64" }, "sha512-ezc7V75+eoyyH07BO9tIyJdqXXcRfZMbKcLCeF8+qWK5nP8wWuMcfOVywecsXGRbT99zc5eNra4NEx6z5PkSsA=="], 419 505 420 - "@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.7", "node-fetch": "3.3.2" } }, "sha512-OF8fFQSkbL7vJY9rfuegK1R7sPgQ6kFMkDamiEccNUvieQ+3urzfDFI616oPl8V7T9zRmnTkSjMOImYCAVRVuw=="], 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=="], 421 507 422 508 "@libsql/isomorphic-fetch": ["@libsql/isomorphic-fetch@0.3.1", "", {}, "sha512-6kK3SUK5Uu56zPq/Las620n5aS9xJq+jMBcNSOmjhNf/MUvdyji4vrMTqD7ptY7/4/CAVEAYDeotUz60LNQHtw=="], 423 509 424 - "@libsql/isomorphic-ws": ["@libsql/isomorphic-ws@0.1.5", "", { "dependencies": { "@types/ws": "8.5.13", "ws": "8.18.0" } }, "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg=="], 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=="], 425 515 426 516 "@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.4.7", "", { "os": "linux", "cpu": "arm64" }, "sha512-WlX2VYB5diM4kFfNaYcyhw5y+UJAI3xcMkEUJZPtRDEIu85SsSFrQ+gvoKfcVh76B//ztSeEX2wl9yrjF7BBCA=="], 427 517 ··· 433 523 434 524 "@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.4.7", "", { "os": "win32", "cpu": "x64" }, "sha512-7pJzOWzPm6oJUxml+PCDRzYQ4A1hTMHAciTAHfFK4fkbDZX33nWPVG7Y3vqdKtslcwAzwmrNDc6sXy2nwWnbiw=="], 435 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 + 436 530 "@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="], 437 531 438 - "@noble/curves": ["@noble/curves@1.7.0", "", { "dependencies": { "@noble/hashes": "1.6.0" } }, "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw=="], 532 + "@noble/secp256k1": ["@noble/secp256k1@3.0.0", "", {}, "sha512-NJBaR352KyIvj3t6sgT/+7xrNyF9Xk9QlLSIqUGVUYlsnDTAUqY8LOmwpcgEx4AMJXRITQ5XEVHD+mMaPfr3mg=="], 439 533 440 - "@noble/hashes": ["@noble/hashes@1.6.1", "", {}, "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w=="], 441 - 442 - "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "1.2.0" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], 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=="], 443 535 444 536 "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], 445 537 446 - "@nodelib/fs.walk": ["@nodelib/fs.walk@1.2.8", "", { "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "1.17.1" } }, "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg=="], 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=="], 447 539 448 540 "@opentelemetry/api": ["@opentelemetry/api@1.9.0", "", {}, "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg=="], 449 541 450 - "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.54.2", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-4MTVwwmLgUh5QrJnZpYo6YRO5IBLAggf2h8gWDblwRagDStY13aEvt7gGk3jewrMaPlHiF83fENhIx0HO97/cQ=="], 542 + "@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.2", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-uIX52NnTM0iBh84MShlpouI7UKqkZ7MrUszTmaypHBu4r7NofznSnQRfJ+uUeDtQDj6w8eFGg5KBLDAwAPz1+A=="], 451 543 452 - "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.29.0", "", { "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-TKT91jcFXgHyIDF1lgJF3BHGIakn6x0Xp7Tq3zoS3TMPzT9IlP0xEavWP8C1zGjU9UmZP2VR1tJhW9Az1A3w8Q=="], 544 + "@opentelemetry/context-async-hooks": ["@opentelemetry/context-async-hooks@1.30.1", "", { "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA=="], 453 545 454 - "@opentelemetry/core": ["@opentelemetry/core@1.29.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-gmT7vAreXl0DTHD2rVZcw3+l2g84+5XiHIqdBUxXbExymPCvSsGOpiwMmn8nkiJur28STV31wnhIDrzWDPzjfA=="], 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=="], 455 547 456 - "@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.54.2", "", { "dependencies": { "@opentelemetry/api-logs": "0.54.2", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-go6zpOVoZVztT9r1aPd79Fr3OWiD4N24bCPJsIKkBses8oyFo12F/Ew3UBTdIu6hsW4HC4MVEJygG6TEyJI/lg=="], 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=="], 457 549 458 - "@opentelemetry/instrumentation-amqplib": ["@opentelemetry/instrumentation-amqplib@0.43.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-ALjfQC+0dnIEcvNYsbZl/VLh7D2P1HhFF4vicRKHhHFIUV3Shpg4kXgiek5PLhmeKSIPiUB25IYH5RIneclL4A=="], 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=="], 459 551 460 - "@opentelemetry/instrumentation-connect": ["@opentelemetry/instrumentation-connect@0.40.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0", "@types/connect": "3.4.36" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-3aR/3YBQ160siitwwRLjwqrv2KBT16897+bo6yz8wIfel6nWOxTZBJudcbsK3p42pTC7qrbotJ9t/1wRLpv79Q=="], 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=="], 461 553 462 - "@opentelemetry/instrumentation-dataloader": ["@opentelemetry/instrumentation-dataloader@0.12.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-pnPxatoFE0OXIZDQhL2okF//dmbiWFzcSc8pUg9TqofCLYZySSxDCgQc69CJBo5JnI3Gz1KP+mOjS4WAeRIH4g=="], 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=="], 463 555 464 - "@opentelemetry/instrumentation-express": ["@opentelemetry/instrumentation-express@0.44.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-GWgibp6Q0wxyFaaU8ERIgMMYgzcHmGrw3ILUtGchLtLncHNOKk0SNoWGqiylXWWT4HTn5XdV8MGawUgpZh80cA=="], 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=="], 465 557 466 - "@opentelemetry/instrumentation-fastify": ["@opentelemetry/instrumentation-fastify@0.41.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-pNRjFvf0mvqfJueaeL/qEkuGJwgtE5pgjIHGYwjc2rMViNCrtY9/Sf+Nu8ww6dDd/Oyk2fwZZP7i0XZfCnETrA=="], 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=="], 467 559 468 - "@opentelemetry/instrumentation-fs": ["@opentelemetry/instrumentation-fs@0.16.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-hMDRUxV38ln1R3lNz6osj3YjlO32ykbHqVrzG7gEhGXFQfu7LJUx8t9tEwE4r2h3CD4D0Rw4YGDU4yF4mP3ilg=="], 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=="], 469 561 470 - "@opentelemetry/instrumentation-generic-pool": ["@opentelemetry/instrumentation-generic-pool@0.39.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-y4v8Y+tSfRB3NNBvHjbjrn7rX/7sdARG7FuK6zR8PGb28CTa0kHpEGCJqvL9L8xkTNvTXo+lM36ajFGUaK1aNw=="], 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=="], 471 563 472 - "@opentelemetry/instrumentation-graphql": ["@opentelemetry/instrumentation-graphql@0.44.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.54.2" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-FYXTe3Bv96aNpYktqm86BFUTpjglKD0kWI5T5bxYkLUPEPvFn38vWGMJTGrDMVou/i55E4jlWvcm6hFIqLsMbg=="], 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=="], 473 565 474 - "@opentelemetry/instrumentation-hapi": ["@opentelemetry/instrumentation-hapi@0.41.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-jKDrxPNXDByPlYcMdZjNPYCvw0SQJjN+B1A+QH+sx+sAHsKSAf9hwFiJSrI6C4XdOls43V/f/fkp9ITkHhKFbQ=="], 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=="], 475 567 476 - "@opentelemetry/instrumentation-http": ["@opentelemetry/instrumentation-http@0.53.0", "", { "dependencies": { "@opentelemetry/core": "1.26.0", "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.27.0", "semver": "7.6.3" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-H74ErMeDuZfj7KgYCTOFGWF5W9AfaPnqLQQxeFq85+D29wwV2yqHbz2IKLYpkOh7EI6QwDEl7rZCIxjJLyc/CQ=="], 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=="], 477 569 478 - "@opentelemetry/instrumentation-ioredis": ["@opentelemetry/instrumentation-ioredis@0.43.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/redis-common": "0.36.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-i3Dke/LdhZbiUAEImmRG3i7Dimm/BD7t8pDDzwepSvIQ6s2X6FPia7561gw+64w+nx0+G9X14D7rEfaMEmmjig=="], 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=="], 479 571 480 - "@opentelemetry/instrumentation-kafkajs": ["@opentelemetry/instrumentation-kafkajs@0.4.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-I9VwDG314g7SDL4t8kD/7+1ytaDBRbZQjhVaQaVIDR8K+mlsoBhLsWH79yHxhHQKvwCSZwqXF+TiTOhoQVUt7A=="], 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=="], 481 573 482 - "@opentelemetry/instrumentation-knex": ["@opentelemetry/instrumentation-knex@0.41.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-OhI1SlLv5qnsnm2dOVrian/x3431P75GngSpnR7c4fcVFv7prXGYu29Z6ILRWJf/NJt6fkbySmwdfUUnFnHCTg=="], 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=="], 483 575 484 - "@opentelemetry/instrumentation-koa": ["@opentelemetry/instrumentation-koa@0.43.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-lDAhSnmoTIN6ELKmLJBplXzT/Jqs5jGZehuG22EdSMaTwgjMpxMDI1YtlKEhiWPWkrz5LUsd0aOO0ZRc9vn3AQ=="], 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=="], 485 577 486 - "@opentelemetry/instrumentation-lru-memoizer": ["@opentelemetry/instrumentation-lru-memoizer@0.40.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-21xRwZsEdMPnROu/QsaOIODmzw59IYpGFmuC4aFWvMj6stA8+Ei1tX67nkarJttlNjoM94um0N4X26AD7ff54A=="], 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=="], 487 579 488 - "@opentelemetry/instrumentation-mongodb": ["@opentelemetry/instrumentation-mongodb@0.48.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-9YWvaGvrrcrydMsYGLu0w+RgmosLMKe3kv/UNlsPy8RLnCkN2z+bhhbjjjuxtUmvEuKZMCoXFluABVuBr1yhjw=="], 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=="], 489 581 490 - "@opentelemetry/instrumentation-mongoose": ["@opentelemetry/instrumentation-mongoose@0.42.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-AnWv+RaR86uG3qNEMwt3plKX1ueRM7AspfszJYVkvkehiicC3bHQA6vWdb6Zvy5HAE14RyFbu9+2hUUjR2NSyg=="], 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=="], 491 583 492 - "@opentelemetry/instrumentation-mysql": ["@opentelemetry/instrumentation-mysql@0.41.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0", "@types/mysql": "2.15.26" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-jnvrV6BsQWyHS2qb2fkfbfSb1R/lmYwqEZITwufuRl37apTopswu9izc0b1CYRp/34tUG/4k/V39PND6eyiNvw=="], 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=="], 493 585 494 - "@opentelemetry/instrumentation-mysql2": ["@opentelemetry/instrumentation-mysql2@0.41.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0", "@opentelemetry/sql-common": "0.40.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-REQB0x+IzVTpoNgVmy5b+UnH1/mDByrneimP6sbDHkp1j8QOl1HyWOrBH/6YWR0nrbU3l825Em5PlybjT3232g=="], 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=="], 495 587 496 - "@opentelemetry/instrumentation-nestjs-core": ["@opentelemetry/instrumentation-nestjs-core@0.40.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-WF1hCUed07vKmf5BzEkL0wSPinqJgH7kGzOjjMAiTGacofNXjb/y4KQ8loj2sNsh5C/NN7s1zxQuCgbWbVTGKg=="], 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=="], 497 589 498 - "@opentelemetry/instrumentation-pg": ["@opentelemetry/instrumentation-pg@0.44.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/semantic-conventions": "1.28.0", "@opentelemetry/sql-common": "0.40.1", "@types/pg": "8.6.1", "@types/pg-pool": "2.0.6" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-oTWVyzKqXud1BYEGX1loo2o4k4vaU1elr3vPO8NZolrBtFvQ34nx4HgUaexUDuEog00qQt+MLR5gws/p+JXMLQ=="], 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=="], 499 591 500 - "@opentelemetry/instrumentation-redis-4": ["@opentelemetry/instrumentation-redis-4@0.42.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.53.0", "@opentelemetry/redis-common": "0.36.2", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-NaD+t2JNcOzX/Qa7kMy68JbmoVIV37fT/fJYzLKu2Wwd+0NCxt+K2OOsOakA8GVg8lSpFdbx4V/suzZZ2Pvdjg=="], 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=="], 501 593 502 - "@opentelemetry/instrumentation-tedious": ["@opentelemetry/instrumentation-tedious@0.15.0", "", { "dependencies": { "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/semantic-conventions": "1.28.0", "@types/tedious": "4.0.14" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-Kb7yo8Zsq2TUwBbmwYgTAMPK0VbhoS8ikJ6Bup9KrDtCx2JC01nCb+M0VJWXt7tl0+5jARUbKWh5jRSoImxdCw=="], 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=="], 503 595 504 - "@opentelemetry/instrumentation-undici": ["@opentelemetry/instrumentation-undici@0.6.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.53.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-ABJBhm5OdhGmbh0S/fOTE4N69IZ00CsHC5ijMYfzbw3E5NwLgpQk5xsljaECrJ8wz1SfXbO03FiSuu5AyRAkvQ=="], 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=="], 505 597 506 598 "@opentelemetry/redis-common": ["@opentelemetry/redis-common@0.36.2", "", {}, "sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g=="], 507 599 508 - "@opentelemetry/resources": ["@opentelemetry/resources@1.29.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-s7mLXuHZE7RQr1wwweGcaRp3Q4UJJ0wazeGlc/N5/XSe6UyXfsh1UQGMADYeg7YwD+cEdMtU1yJAUXdnFzYzyQ=="], 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=="], 509 601 510 - "@opentelemetry/sdk-trace-base": ["@opentelemetry/sdk-trace-base@1.29.0", "", { "dependencies": { "@opentelemetry/core": "1.29.0", "@opentelemetry/resources": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-hEOpAYLKXF3wGJpXOtWsxEtqBgde0SCv+w+jvr3/UusR4ll3QrENEGnSl1WDCyRrpqOQ5NCNOvZch9UFVa7MnQ=="], 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=="], 511 603 512 - "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 604 + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.38.0", "", {}, "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg=="], 513 605 514 - "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.40.1", "", { "dependencies": { "@opentelemetry/core": "1.29.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-nSDlnHSqzC3pXn/wZEZVLuAuJ1MYMXPBwtv2qAbCa3847SaHItdE7SzUq/Jtb0KZmh1zfAbNi3AAMjztTT4Ugg=="], 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=="], 515 607 516 - "@pkgjs/parseargs": ["@pkgjs/parseargs@0.11.0", "", {}, "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg=="], 608 + "@optique/core": ["@optique/core@0.6.2", "", {}, "sha512-HTxIHJ8xLOSZotiU6Zc5BCJv+SJ8DMYmuiQM+7tjF7RolJn/pdZNe7M78G3+DgXL9lIf82l8aGcilmgVYRQnGQ=="], 517 609 518 - "@prisma/instrumentation": ["@prisma/instrumentation@5.19.1", "", { "dependencies": { "@opentelemetry/api": "1.9.0", "@opentelemetry/instrumentation": "0.52.1", "@opentelemetry/sdk-trace-base": "1.29.0" } }, "sha512-VLnzMQq7CWroL5AeaW0Py2huiNKeoMfCH3SUxstdzPrlWQi6UQ9UrfcbUkNHlVFqOMacqy8X/8YtE0kuKDpD9w=="], 610 + "@optique/run": ["@optique/run@0.6.2", "", { "dependencies": { "@optique/core": "0.6.2" } }, "sha512-ERksB5bHozwEUVlTPToIc8UjZZBOgLeBhFZYh2lgldUbNDt7LItzgcErsPq5au5i5IBmmyCti4+2A3x+MRI4Xw=="], 519 611 520 - "@radix-ui/primitive": ["@radix-ui/primitive@1.1.0", "", {}, "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA=="], 612 + "@pinojs/redact": ["@pinojs/redact@0.4.0", "", {}, "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg=="], 521 613 522 - "@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw=="], 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=="], 523 615 524 - "@radix-ui/react-avatar": ["@radix-ui/react-avatar@1.1.1", "", { "dependencies": { "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw=="], 616 + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], 525 617 526 - "@radix-ui/react-collapsible": ["@radix-ui/react-collapsible@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg=="], 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=="], 527 619 528 - "@radix-ui/react-collection": ["@radix-ui/react-collection@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-LwT3pSho9Dljg+wY2KN2mrrh6y3qELfftINERIzBUO9e0N+t0oMTyn3k9iv+ZqgrwGkRnLpNJrsMv9BZlt2yuA=="], 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=="], 529 621 530 - "@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.0", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw=="], 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=="], 531 623 532 - "@radix-ui/react-context": ["@radix-ui/react-context@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q=="], 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=="], 533 625 534 - "@radix-ui/react-dialog": ["@radix-ui/react-dialog@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.3", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-controllable-state": "1.1.0", "aria-hidden": "1.2.4", "react-remove-scroll": "2.6.2" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-Ur7EV1IwQGCyaAuyDRiOLA5JIUZxELJljF+MbM/2NC0BYwfuRrbpS30BiQBJrVruscgUkieKkqXYDOoByaxIoA=="], 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=="], 535 627 536 - "@radix-ui/react-direction": ["@radix-ui/react-direction@1.1.0", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg=="], 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=="], 537 629 538 - "@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.3", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg=="], 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=="], 539 631 540 - "@radix-ui/react-dropdown-menu": ["@radix-ui/react-dropdown-menu@2.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-menu": "2.1.4", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-controllable-state": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-iXU1Ab5ecM+yEepGAWK8ZhMyKX4ubFdCNtol4sT9D0OVErG9PNElfx3TQhjw7n7BC5nFVz68/5//clWy+8TXzA=="], 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=="], 541 633 542 - "@radix-ui/react-focus-guards": ["@radix-ui/react-focus-guards@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg=="], 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=="], 543 635 544 - "@radix-ui/react-focus-scope": ["@radix-ui/react-focus-scope@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA=="], 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=="], 545 637 546 - "@radix-ui/react-icons": ["@radix-ui/react-icons@1.3.2", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-fyQIhGDhzfc9pK2kH6Pl9c4BDJGfMkPqkyIgYDthyNYoNg3wVhoJMMh19WS4Up/1KMPFVpNsT2q3WmXn2N1m6g=="], 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=="], 547 639 548 - "@radix-ui/react-id": ["@radix-ui/react-id@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA=="], 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=="], 549 641 550 - "@radix-ui/react-label": ["@radix-ui/react-label@2.1.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw=="], 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=="], 551 643 552 - "@radix-ui/react-menu": ["@radix-ui/react-menu@2.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-dismissable-layer": "1.1.3", "@radix-ui/react-focus-guards": "1.1.1", "@radix-ui/react-focus-scope": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.1", "@radix-ui/react-portal": "1.1.3", "@radix-ui/react-presence": "1.1.2", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-roving-focus": "1.1.1", "@radix-ui/react-slot": "1.1.1", "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "1.2.4", "react-remove-scroll": "2.6.2" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-BnOgVoL6YYdHAG6DtXONaR29Eq4nvbi8rutrV/xlr3RQCMMb3yqP85Qiw/3NReozrSW+4dfLkK+rc1hb4wPU/A=="], 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=="], 553 645 554 - "@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.0", "", { "dependencies": { "@floating-ui/react-dom": "2.1.2", "@radix-ui/react-arrow": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.0", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg=="], 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=="], 555 647 556 - "@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.3", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw=="], 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=="], 557 649 558 - "@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A=="], 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=="], 559 651 560 - "@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.0", "", { "dependencies": { "@radix-ui/react-slot": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw=="], 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=="], 561 653 562 - "@radix-ui/react-roving-focus": ["@radix-ui/react-roving-focus@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.1", "@radix-ui/react-collection": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-direction": "1.1.0", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-QE1RoxPGJ/Nm8Qmk0PxP8ojmoaS67i0s7hVssS7KuI2FQoc/uzVlZsqKfQvxPE6D8hICCPHJ4D88zNhT3OOmkw=="], 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=="], 563 655 564 - "@radix-ui/react-separator": ["@radix-ui/react-separator@1.1.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA=="], 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=="], 565 657 566 - "@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.1", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-RApLLOcINYJA+dMVbOju7MYv1Mb2EBp2nH4HdDzXTSyaR5optlm6Otrz1euW3HbdOR8UmmFK06TD+A9frYWv+g=="], 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=="], 567 659 568 - "@radix-ui/react-tooltip": ["@radix-ui/react-tooltip@1.1.4", "", { "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-dismissable-layer": "1.1.1", "@radix-ui/react-id": "1.1.0", "@radix-ui/react-popper": "1.2.0", "@radix-ui/react-portal": "1.1.2", "@radix-ui/react-presence": "1.1.1", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-slot": "1.1.0", "@radix-ui/react-use-controllable-state": "1.1.0", "@radix-ui/react-visually-hidden": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw=="], 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=="], 569 661 570 - "@radix-ui/react-use-callback-ref": ["@radix-ui/react-use-callback-ref@1.1.0", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw=="], 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=="], 571 663 572 - "@radix-ui/react-use-controllable-state": ["@radix-ui/react-use-controllable-state@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw=="], 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=="], 573 665 574 - "@radix-ui/react-use-escape-keydown": ["@radix-ui/react-use-escape-keydown@1.1.0", "", { "dependencies": { "@radix-ui/react-use-callback-ref": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw=="], 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=="], 575 667 576 - "@radix-ui/react-use-layout-effect": ["@radix-ui/react-use-layout-effect@1.1.0", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w=="], 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=="], 577 669 578 - "@radix-ui/react-use-rect": ["@radix-ui/react-use-rect@1.1.0", "", { "dependencies": { "@radix-ui/rect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ=="], 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=="], 579 671 580 - "@radix-ui/react-use-size": ["@radix-ui/react-use-size@1.1.0", "", { "dependencies": { "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw=="], 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=="], 581 673 582 - "@radix-ui/react-visually-hidden": ["@radix-ui/react-visually-hidden@1.1.0", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ=="], 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=="], 583 675 584 - "@radix-ui/rect": ["@radix-ui/rect@1.1.0", "", {}, "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg=="], 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=="], 585 677 586 - "@rollup/rollup-android-arm-eabi": ["@rollup/rollup-android-arm-eabi@4.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ=="], 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=="], 587 679 588 - "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.28.0", "", { "os": "android", "cpu": "arm64" }, "sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA=="], 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=="], 589 681 590 - "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.28.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q=="], 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=="], 591 683 592 - "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.28.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w=="], 684 + "@radix-ui/rect": ["@radix-ui/rect@1.1.1", "", {}, "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw=="], 593 685 594 - "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.28.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ=="], 686 + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.47", "", {}, "sha512-8QagwMH3kNCuzD8EWL8R2YPW5e4OrHNSAHRFDdmFqEwEaD/KcNKjVoumo+gP2vW5eKB2UPbM6vTYiGZX0ixLnw=="], 595 687 596 - "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.28.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA=="], 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=="], 597 689 598 - "@rollup/rollup-linux-arm-gnueabihf": ["@rollup/rollup-linux-arm-gnueabihf@4.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w=="], 690 + "@rollup/rollup-android-arm64": ["@rollup/rollup-android-arm64@4.53.3", "", { "os": "android", "cpu": "arm64" }, "sha512-CbDGaMpdE9sh7sCmTrTUyllhrg65t6SwhjlMJsLr+J8YjFuPmCEjbBSx4Z/e4SmDyH3aB5hGaJUP2ltV/vcs4w=="], 599 691 600 - "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.28.0", "", { "os": "linux", "cpu": "arm" }, "sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg=="], 692 + "@rollup/rollup-darwin-arm64": ["@rollup/rollup-darwin-arm64@4.53.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-Nr7SlQeqIBpOV6BHHGZgYBuSdanCXuw09hon14MGOLGmXAFYjx1wNvquVPmpZnl0tLjg25dEdr4IQ6GgyToCUA=="], 601 693 602 - "@rollup/rollup-linux-arm64-gnu": ["@rollup/rollup-linux-arm64-gnu@4.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg=="], 694 + "@rollup/rollup-darwin-x64": ["@rollup/rollup-darwin-x64@4.53.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-DZ8N4CSNfl965CmPktJ8oBnfYr3F8dTTNBQkRlffnUarJ2ohudQD17sZBa097J8xhQ26AwhHJ5mvUyQW8ddTsQ=="], 603 695 604 - "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.28.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw=="], 696 + "@rollup/rollup-freebsd-arm64": ["@rollup/rollup-freebsd-arm64@4.53.3", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-yMTrCrK92aGyi7GuDNtGn2sNW+Gdb4vErx4t3Gv/Tr+1zRb8ax4z8GWVRfr3Jw8zJWvpGHNpss3vVlbF58DZ4w=="], 605 697 606 - "@rollup/rollup-linux-powerpc64le-gnu": ["@rollup/rollup-linux-powerpc64le-gnu@4.28.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ=="], 698 + "@rollup/rollup-freebsd-x64": ["@rollup/rollup-freebsd-x64@4.53.3", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lMfF8X7QhdQzseM6XaX0vbno2m3hlyZFhwcndRMw8fbAGUGL3WFMBdK0hbUBIUYcEcMhVLr1SIamDeuLBnXS+Q=="], 607 699 608 - "@rollup/rollup-linux-riscv64-gnu": ["@rollup/rollup-linux-riscv64-gnu@4.28.0", "", { "os": "linux", "cpu": "none" }, "sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g=="], 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=="], 609 701 610 - "@rollup/rollup-linux-s390x-gnu": ["@rollup/rollup-linux-s390x-gnu@4.28.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw=="], 702 + "@rollup/rollup-linux-arm-musleabihf": ["@rollup/rollup-linux-arm-musleabihf@4.53.3", "", { "os": "linux", "cpu": "arm" }, "sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg=="], 611 703 612 - "@rollup/rollup-linux-x64-gnu": ["@rollup/rollup-linux-x64-gnu@4.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw=="], 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=="], 613 705 614 - "@rollup/rollup-linux-x64-musl": ["@rollup/rollup-linux-x64-musl@4.28.0", "", { "os": "linux", "cpu": "x64" }, "sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw=="], 706 + "@rollup/rollup-linux-arm64-musl": ["@rollup/rollup-linux-arm64-musl@4.53.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A=="], 615 707 616 - "@rollup/rollup-win32-arm64-msvc": ["@rollup/rollup-win32-arm64-msvc@4.28.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg=="], 708 + "@rollup/rollup-linux-loong64-gnu": ["@rollup/rollup-linux-loong64-gnu@4.53.3", "", { "os": "linux", "cpu": "none" }, "sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g=="], 617 709 618 - "@rollup/rollup-win32-ia32-msvc": ["@rollup/rollup-win32-ia32-msvc@4.28.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A=="], 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=="], 619 731 620 - "@rollup/rollup-win32-x64-msvc": ["@rollup/rollup-win32-x64-msvc@4.28.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ=="], 732 + "@sentry/core": ["@sentry/core@8.55.0", "", {}, "sha512-6g7jpbefjHYs821Z+EBJ8r4Z7LT5h80YSWRJaylGS4nW5W5Z2KXzpdnyFarv37O7QjauzVC2E+PABmpkw5/JGA=="], 621 733 622 - "@sentry/core": ["@sentry/core@8.42.0", "", {}, "sha512-ac6O3pgoIbU6rpwz6LlwW0wp3/GAHuSI0C5IsTgIY6baN8rOBnlAtG6KrHDDkGmUQ2srxkDJu9n1O6Td3cBCqw=="], 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=="], 623 735 624 - "@sentry/node": ["@sentry/node@8.42.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0", "@opentelemetry/context-async-hooks": "1.29.0", "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/instrumentation-amqplib": "0.43.0", "@opentelemetry/instrumentation-connect": "0.40.0", "@opentelemetry/instrumentation-dataloader": "0.12.0", "@opentelemetry/instrumentation-express": "0.44.0", "@opentelemetry/instrumentation-fastify": "0.41.0", "@opentelemetry/instrumentation-fs": "0.16.0", "@opentelemetry/instrumentation-generic-pool": "0.39.0", "@opentelemetry/instrumentation-graphql": "0.44.0", "@opentelemetry/instrumentation-hapi": "0.41.0", "@opentelemetry/instrumentation-http": "0.53.0", "@opentelemetry/instrumentation-ioredis": "0.43.0", "@opentelemetry/instrumentation-kafkajs": "0.4.0", "@opentelemetry/instrumentation-knex": "0.41.0", "@opentelemetry/instrumentation-koa": "0.43.0", "@opentelemetry/instrumentation-lru-memoizer": "0.40.0", "@opentelemetry/instrumentation-mongodb": "0.48.0", "@opentelemetry/instrumentation-mongoose": "0.42.0", "@opentelemetry/instrumentation-mysql": "0.41.0", "@opentelemetry/instrumentation-mysql2": "0.41.0", "@opentelemetry/instrumentation-nestjs-core": "0.40.0", "@opentelemetry/instrumentation-pg": "0.44.0", "@opentelemetry/instrumentation-redis-4": "0.42.0", "@opentelemetry/instrumentation-tedious": "0.15.0", "@opentelemetry/instrumentation-undici": "0.6.0", "@opentelemetry/resources": "1.29.0", "@opentelemetry/sdk-trace-base": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0", "@prisma/instrumentation": "5.19.1", "@sentry/core": "8.42.0", "@sentry/opentelemetry": "8.42.0", "import-in-the-middle": "1.11.3" } }, "sha512-MsNrmAIwDaxf1jTX1FsgZ+3mUq6G6IuU6FAqyp7TDnvUTsbWUtr0OM6EvVUz0zCImybIh9dcTQ+6KTmUyA7URw=="], 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=="], 625 737 626 - "@sentry/opentelemetry": ["@sentry/opentelemetry@8.42.0", "", { "dependencies": { "@sentry/core": "8.42.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0", "@opentelemetry/core": "1.29.0", "@opentelemetry/instrumentation": "0.54.2", "@opentelemetry/sdk-trace-base": "1.29.0", "@opentelemetry/semantic-conventions": "1.28.0" } }, "sha512-QPb9kMFgl35TIwIz0u+BFTbPG461CofMiloidJ44GFZ9cB33T5cB0oIN7ut/5tsH/AvqUmucydsV/Nj3HNQx9g=="], 738 + "@sindresorhus/merge-streams": ["@sindresorhus/merge-streams@4.0.0", "", {}, "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ=="], 627 739 628 - "@skyware/jetstream": ["@skyware/jetstream@0.2.1", "", { "dependencies": { "@atcute/bluesky": "1.0.9", "partysocket": "1.0.2" } }, "sha512-qmQkBnMYG3+XBTLUDUKTWMS0QpwCFSZh66fvQRn+xEqUQ2CXB2ELo4El0tgVvdT4+glk4nfzVG45L6Op9VURow=="], 740 + "@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], 629 741 630 - "@swc/core": ["@swc/core@1.9.3", "", { "dependencies": { "@swc/counter": "0.1.3", "@swc/types": "0.1.17" }, "optionalDependencies": { "@swc/core-darwin-arm64": "1.9.3", "@swc/core-darwin-x64": "1.9.3", "@swc/core-linux-arm-gnueabihf": "1.9.3", "@swc/core-linux-arm64-gnu": "1.9.3", "@swc/core-linux-arm64-musl": "1.9.3", "@swc/core-linux-x64-gnu": "1.9.3", "@swc/core-linux-x64-musl": "1.9.3", "@swc/core-win32-arm64-msvc": "1.9.3", "@swc/core-win32-ia32-msvc": "1.9.3", "@swc/core-win32-x64-msvc": "1.9.3" } }, "sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg=="], 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=="], 631 743 632 - "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.9.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w=="], 744 + "@swc/core-darwin-arm64": ["@swc/core-darwin-arm64@1.15.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-AXfeQn0CvcQ4cndlIshETx6jrAM45oeUrK8YeEY6oUZU/qzz0Id0CyvlEywxkWVC81Ajpd8TQQ1fW5yx6zQWkQ=="], 633 745 634 - "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.9.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ=="], 746 + "@swc/core-darwin-x64": ["@swc/core-darwin-x64@1.15.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-p68OeCz1ui+MZYG4wmfJGvcsAcFYb6Sl25H9TxWl+GkBgmNimIiRdnypK9nBGlqMZAcxngNPtnG3kEMNnvoJ2A=="], 635 747 636 - "@swc/core-linux-arm-gnueabihf": ["@swc/core-linux-arm-gnueabihf@1.9.3", "", { "os": "linux", "cpu": "arm" }, "sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ=="], 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=="], 637 749 638 - "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.9.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g=="], 750 + "@swc/core-linux-arm64-gnu": ["@swc/core-linux-arm64-gnu@1.15.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-2Nc/s8jE6mW2EjXWxO/lyQuLKShcmTrym2LRf5Ayp3ICEMX6HwFqB1EzDhwoMa2DcUgmnZIalesq2lG3krrUNw=="], 639 751 640 - "@swc/core-linux-arm64-musl": ["@swc/core-linux-arm64-musl@1.9.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg=="], 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=="], 641 753 642 - "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.9.3", "", { "os": "linux", "cpu": "x64" }, "sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w=="], 754 + "@swc/core-linux-x64-gnu": ["@swc/core-linux-x64-gnu@1.15.3", "", { "os": "linux", "cpu": "x64" }, "sha512-aKttAZnz8YB1VJwPQZtyU8Uk0BfMP63iDMkvjhJzRZVgySmqt/apWSdnoIcZlUoGheBrcqbMC17GGUmur7OT5A=="], 643 755 644 - "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.9.3", "", { "os": "linux", "cpu": "x64" }, "sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg=="], 756 + "@swc/core-linux-x64-musl": ["@swc/core-linux-x64-musl@1.15.3", "", { "os": "linux", "cpu": "x64" }, "sha512-oe8FctPu1gnUsdtGJRO2rvOUIkkIIaHqsO9xxN0bTR7dFTlPTGi2Fhk1tnvXeyAvCPxLIcwD8phzKg6wLv9yug=="], 645 757 646 - "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.9.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg=="], 758 + "@swc/core-win32-arm64-msvc": ["@swc/core-win32-arm64-msvc@1.15.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9AjzP2ZQ/Xh58e0lTRMLvEDrcJpR7GwZqAtIeNLcTK7JVE+QineSyHp0kLkO1rttCHyCy0U74kDTj0dRz6raA=="], 647 759 648 - "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.9.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA=="], 760 + "@swc/core-win32-ia32-msvc": ["@swc/core-win32-ia32-msvc@1.15.3", "", { "os": "win32", "cpu": "ia32" }, "sha512-B8UtogMzErUPDWUoKONSVBdsgKYd58rRyv2sHJWKOIMCHfZ22FVXICR4O/VwIYtlnZ7ahERcjayBHDlBZpR0aw=="], 649 761 650 - "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.9.3", "", { "os": "win32", "cpu": "x64" }, "sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ=="], 762 + "@swc/core-win32-x64-msvc": ["@swc/core-win32-x64-msvc@1.15.3", "", { "os": "win32", "cpu": "x64" }, "sha512-SpZKMR9QBTecHeqpzJdYEfgw30Oo8b/Xl6rjSzBt1g0ZsXyy60KLXrp6IagQyfTYqNYE/caDvwtF2FPn7pomog=="], 651 763 652 764 "@swc/counter": ["@swc/counter@0.1.3", "", {}, "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ=="], 653 765 654 - "@swc/types": ["@swc/types@0.1.17", "", { "dependencies": { "@swc/counter": "0.1.3" } }, "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ=="], 766 + "@swc/types": ["@swc/types@0.1.25", "", { "dependencies": { "@swc/counter": "^0.1.3" } }, "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g=="], 655 767 656 - "@tanstack/eslint-plugin-query": ["@tanstack/eslint-plugin-query@5.62.1", "", { "dependencies": { "@typescript-eslint/utils": "8.17.0" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-1886D5U+re1TW0wSH4/kUGG36yIoW5Wkz4twVEzlk3ZWmjF3XkRSWgB+Sc7n+Lyzt8usNV8ZqkZE6DA7IC47fQ=="], 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=="], 657 769 658 - "@tanstack/history": ["@tanstack/history@1.90.0", "", {}, "sha512-riNhDGm+fAwxgZRJ0J/36IZis1UDHsDCNIxfEodbw6BgTWJr0ah+G20V4HT91uBXiCqYFvX3somlfTLhS5yHDA=="], 770 + "@tanstack/history": ["@tanstack/history@1.139.0", "", {}, "sha512-l6wcxwDBeh/7Dhles23U1O8lp9kNJmAb2yNjekR6olZwCRNAVA8TCXlVCrueELyFlYZqvQkh0ofxnzG62A1Kkg=="], 659 771 660 - "@tanstack/query-core": ["@tanstack/query-core@5.62.2", "", {}, "sha512-LcwVcC5qpsDpHcqlXUUL5o9SaOBwhNkGeV+B06s0GBoyBr8FqXPuXT29XzYXR36lchhnerp6XO+CWc84/vh7Zg=="], 772 + "@tanstack/query-core": ["@tanstack/query-core@5.90.10", "", {}, "sha512-EhZVFu9rl7GfRNuJLJ3Y7wtbTnENsvzp+YpcAV7kCYiXni1v8qZh++lpw4ch4rrwC0u/EZRnBHIehzCGzwXDSQ=="], 661 773 662 - "@tanstack/query-devtools": ["@tanstack/query-devtools@5.61.4", "", {}, "sha512-21Tw+u8E3IJJj4A/Bct4H0uBaDTEu7zBrR79FeSyY+mS2gx5/m316oDtJiKkILc819VSTYt+sFzODoJNcpPqZQ=="], 774 + "@tanstack/query-devtools": ["@tanstack/query-devtools@5.91.0", "", {}, "sha512-uNWkqWTiIKCv8Iaahb7bftmDaZVkBetB+l+OQhQeCEZAedyqxw2eyaRUc8sAQ2LzD843tVdYL6bzOtRWJHJSbQ=="], 663 775 664 - "@tanstack/react-query": ["@tanstack/react-query@5.62.2", "", { "dependencies": { "@tanstack/query-core": "5.62.2" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-fkTpKKfwTJtVPKVR+ag7YqFgG/7TRVVPzduPAUF9zRCiiA8Wu305u+KJl8rCrh98Qce77vzIakvtUyzWLtaPGA=="], 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=="], 665 777 666 - "@tanstack/react-query-devtools": ["@tanstack/react-query-devtools@5.62.2", "", { "dependencies": { "@tanstack/query-devtools": "5.61.4" }, "peerDependencies": { "@tanstack/react-query": "5.62.2", "react": "19.0.0" } }, "sha512-s4+88OZ6ygD4ziNfUgh9y1XxsGqpscI77c8EaLP7KwEfa5WqnlB9MT/uslFkFq3vwb8JhMjB7Osv2MYrSMry6w=="], 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=="], 667 779 668 - "@tanstack/react-router": ["@tanstack/react-router@1.91.2", "", { "dependencies": { "@tanstack/history": "1.90.0", "@tanstack/react-store": "0.6.1", "jsesc": "3.0.2", "tiny-invariant": "1.3.3", "tiny-warning": "1.0.3" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-L93/fXLJ3PTM0QXzPhUOCmm3zflCoO0KKiQptkPwh7S9GVj9OsNWhah+IC7ou2djt9cQ3LpnCyEWklkynXMhXg=="], 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=="], 669 781 670 - "@tanstack/react-store": ["@tanstack/react-store@0.6.1", "", { "dependencies": { "@tanstack/store": "0.6.0", "use-sync-external-store": "1.2.2" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-6gOopOpPp1cAXkEyTEv6tMbAywwFunvIdCKN/SpEiButUayjXU+Q5Sp5Y3hREN3VMR4OA5+RI5SPhhJoqP9e4w=="], 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=="], 671 783 672 - "@tanstack/router-devtools": ["@tanstack/router-devtools@1.85.5", "", { "dependencies": { "clsx": "2.1.1", "goober": "2.1.16" }, "peerDependencies": { "@tanstack/react-router": "1.91.2", "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-C5A0TP2dFSu3o4Bc1jHzX6ZRC4FC3BmjPJbUx3wJJduPaW72FwTqbGfeT79oyk8mOC69bvLTLydRGfMHQZbIRQ=="], 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=="], 673 785 674 - "@tanstack/router-generator": ["@tanstack/router-generator@1.85.3", "", { "dependencies": { "@tanstack/virtual-file-routes": "1.81.9", "prettier": "3.4.1", "tsx": "4.19.2", "zod": "3.23.8" } }, "sha512-ka3hO1EPgV4h2hhECUHi4PGyCCUoo70Masb1/idyL7zzkDX/OPZnRd7JxxyneuRGKJ+GI//YWevqjAemyYeg1A=="], 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=="], 675 787 676 - "@tanstack/router-plugin": ["@tanstack/router-plugin@1.85.3", "", { "dependencies": { "@babel/core": "7.26.0", "@babel/generator": "7.26.2", "@babel/parser": "7.26.2", "@babel/plugin-syntax-jsx": "7.25.9", "@babel/plugin-syntax-typescript": "7.25.9", "@babel/template": "7.25.9", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0", "@tanstack/router-generator": "1.85.3", "@tanstack/virtual-file-routes": "1.81.9", "@types/babel__core": "7.20.5", "@types/babel__generator": "7.6.8", "@types/babel__template": "7.4.4", "@types/babel__traverse": "7.20.6", "babel-dead-code-elimination": "1.0.6", "chokidar": "3.6.0", "unplugin": "1.16.0", "zod": "3.23.8" }, "optionalDependencies": { "vite": "6.0.2" } }, "sha512-se75j7NZ+I44dcbi6CayvWhfp0r/3pfqgHNYgEQ5BSSPTtXYDaZXxFm5eU6oNxej8IqkzEZS5CMSkq9iHRvaUA=="], 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=="], 677 789 678 - "@tanstack/store": ["@tanstack/store@0.6.0", "", {}, "sha512-+m2OBglsjXcLmmKOX6/9v8BDOCtyxhMmZLsRUDswOOSdIIR9mvv6i0XNKsmTh3AlYU8c1mRcodC8/Vyf+69VlQ=="], 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=="], 679 791 680 - "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.81.9", "", {}, "sha512-jV5mWJrsh3QXHpb/by6udSqwva0qK50uYHpIXvKsLaxnlbjbLfflfPjFyRWXbMtZsnzCjSUqp5pm5/p+Wpaerg=="], 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=="], 681 793 682 - "@trysound/sax": ["@trysound/sax@0.2.0", "", {}, "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="], 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=="], 683 795 684 - "@tsconfig/node10": ["@tsconfig/node10@1.0.11", "", {}, "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw=="], 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=="], 685 797 686 - "@tsconfig/node12": ["@tsconfig/node12@1.0.11", "", {}, "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag=="], 798 + "@tanstack/store": ["@tanstack/store@0.8.0", "", {}, "sha512-Om+BO0YfMZe//X2z0uLF2j+75nQga6TpTJgLJQBiq85aOyZNIhkCgleNcud2KQg4k4v9Y9l+Uhru3qWMPGTOzQ=="], 687 799 688 - "@tsconfig/node14": ["@tsconfig/node14@1.0.3", "", {}, "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow=="], 800 + "@tanstack/virtual-file-routes": ["@tanstack/virtual-file-routes@1.139.0", "", {}, "sha512-9PImF1d1tovTUIpjFVa0W7Fwj/MHif7BaaczgJJfbv3sDt1Gh+oW9W9uCw9M3ndEJynnp5ZD/TTs0RGubH5ssg=="], 689 801 690 - "@tsconfig/node16": ["@tsconfig/node16@1.0.4", "", {}, "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA=="], 802 + "@typelex/emitter": ["@typelex/emitter@0.4.0", "", { "dependencies": { "@typespec/compiler": "^1.4.0" } }, "sha512-BaKny+8TA0yX5jZibkAodHHKLJ6l6xVe5ut7KeoUyTD63lSSuB9OXe8tWXrs2DbeR/hialCimHFZQ3xANleMow=="], 691 803 692 - "@types/babel__core": ["@types/babel__core@7.20.5", "", { "dependencies": { "@babel/parser": "7.26.2", "@babel/types": "7.26.0", "@types/babel__generator": "7.6.8", "@types/babel__template": "7.4.4", "@types/babel__traverse": "7.20.6" } }, "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA=="], 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=="], 693 805 694 - "@types/babel__generator": ["@types/babel__generator@7.6.8", "", { "dependencies": { "@babel/types": "7.26.0" } }, "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw=="], 806 + "@types/babel__generator": ["@types/babel__generator@7.27.0", "", { "dependencies": { "@babel/types": "^7.0.0" } }, "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg=="], 695 807 696 - "@types/babel__template": ["@types/babel__template@7.4.4", "", { "dependencies": { "@babel/parser": "7.26.2", "@babel/types": "7.26.0" } }, "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A=="], 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=="], 697 809 698 - "@types/babel__traverse": ["@types/babel__traverse@7.20.6", "", { "dependencies": { "@babel/types": "7.26.0" } }, "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg=="], 810 + "@types/babel__traverse": ["@types/babel__traverse@7.28.0", "", { "dependencies": { "@babel/types": "^7.28.2" } }, "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q=="], 699 811 700 - "@types/connect": ["@types/connect@3.4.36", "", { "dependencies": { "@types/node": "22.10.1" } }, "sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w=="], 812 + "@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="], 701 813 702 - "@types/estree": ["@types/estree@1.0.6", "", {}, "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw=="], 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=="], 703 817 704 818 "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], 705 819 706 - "@types/mysql": ["@types/mysql@2.15.26", "", { "dependencies": { "@types/node": "22.10.1" } }, "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ=="], 820 + "@types/mysql": ["@types/mysql@2.15.26", "", { "dependencies": { "@types/node": "*" } }, "sha512-DSLCOXhkvfS5WNNPbfn2KdICAmk8lLc+/PNvnPnF7gOdMZCxopXduqv0OQ13y/yA/zXTSikZZqVgybUxOEg6YQ=="], 707 821 708 - "@types/node": ["@types/node@22.10.1", "", { "dependencies": { "undici-types": "6.20.0" } }, "sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ=="], 822 + "@types/node": ["@types/node@22.19.1", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ=="], 709 823 710 - "@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "22.10.1", "pg-protocol": "1.7.0", "pg-types": "2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="], 824 + "@types/pg": ["@types/pg@8.15.6", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-NoaMtzhxOrubeL/7UZuNTrejB4MPAJ0RpxZqXQf2qXuVlTPuG6Y8p4u9dKRaue4yjmC7ZhzVO2/Yyyn25znrPQ=="], 711 825 712 - "@types/pg-pool": ["@types/pg-pool@2.0.6", "", { "dependencies": { "@types/pg": "8.6.1" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="], 826 + "@types/pg-pool": ["@types/pg-pool@2.0.6", "", { "dependencies": { "@types/pg": "*" } }, "sha512-TaAUE5rq2VQYxab5Ts7WZhKNmuN78Q6PiFonTDdpbx8a1H0M1vhy3rhiMjl+e2iHmogyMw7jZF4FrE6eJUy5HQ=="], 713 827 714 - "@types/react": ["@types/react@19.0.1", "", { "dependencies": { "csstype": "3.1.3" } }, "sha512-YW6614BDhqbpR5KtUYzTA+zlA7nayzJRA9ljz9CQoxthR0sDisYZLuvSMsil36t4EH/uAt8T52Xb4sVw17G+SQ=="], 828 + "@types/react": ["@types/react@19.2.7", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg=="], 715 829 716 - "@types/react-dom": ["@types/react-dom@19.0.1", "", { "dependencies": { "@types/react": "19.0.1" } }, "sha512-hljHij7MpWPKF6u5vojuyfV0YA4YURsQG7KT6SzV0Zs2BXAtgdTxG6A229Ub/xiWV4w/7JL8fi6aAyjshH4meA=="], 830 + "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], 717 831 718 832 "@types/shimmer": ["@types/shimmer@1.2.0", "", {}, "sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg=="], 719 833 720 - "@types/tedious": ["@types/tedious@4.0.14", "", { "dependencies": { "@types/node": "22.10.1" } }, "sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw=="], 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=="], 721 837 722 - "@types/ws": ["@types/ws@8.5.13", "", { "dependencies": { "@types/node": "22.10.1" } }, "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA=="], 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=="], 723 839 724 - "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.17.0", "", { "dependencies": { "@eslint-community/regexpp": "4.12.1", "@typescript-eslint/scope-manager": "8.17.0", "@typescript-eslint/type-utils": "8.17.0", "@typescript-eslint/utils": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", "graphemer": "1.4.0", "ignore": "5.3.2", "natural-compare": "1.4.0", "ts-api-utils": "1.4.3" }, "optionalDependencies": { "typescript": "5.6.3" }, "peerDependencies": { "@typescript-eslint/parser": "8.17.0", "eslint": "9.16.0" } }, "sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w=="], 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=="], 725 847 726 - "@typescript-eslint/parser": ["@typescript-eslint/parser@8.17.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.17.0", "@typescript-eslint/types": "8.17.0", "@typescript-eslint/typescript-estree": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", "debug": "4.3.7" }, "optionalDependencies": { "typescript": "5.6.3" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg=="], 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=="], 727 849 728 - "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.17.0", "", { "dependencies": { "@typescript-eslint/types": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0" } }, "sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg=="], 850 + "@typescript-eslint/types": ["@typescript-eslint/types@8.48.0", "", {}, "sha512-cQMcGQQH7kwKoVswD1xdOytxQR60MWKM1di26xSUtxehaDs/32Zpqsu5WJlXTtTTqyAVK8R7hvsUnIXRS+bjvA=="], 729 851 730 - "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.17.0", "", { "dependencies": { "@typescript-eslint/typescript-estree": "8.17.0", "@typescript-eslint/utils": "8.17.0", "debug": "4.3.7", "ts-api-utils": "1.4.3" }, "optionalDependencies": { "typescript": "5.6.3" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw=="], 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=="], 731 853 732 - "@typescript-eslint/types": ["@typescript-eslint/types@8.17.0", "", {}, "sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA=="], 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=="], 733 855 734 - "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.17.0", "", { "dependencies": { "@typescript-eslint/types": "8.17.0", "@typescript-eslint/visitor-keys": "8.17.0", "debug": "4.3.7", "fast-glob": "3.3.2", "is-glob": "4.0.3", "minimatch": "9.0.5", "semver": "7.6.3", "ts-api-utils": "1.4.3" }, "optionalDependencies": { "typescript": "5.6.3" } }, "sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw=="], 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=="], 735 857 736 - "@typescript-eslint/utils": ["@typescript-eslint/utils@8.17.0", "", { "dependencies": { "@eslint-community/eslint-utils": "4.4.1", "@typescript-eslint/scope-manager": "8.17.0", "@typescript-eslint/types": "8.17.0", "@typescript-eslint/typescript-estree": "8.17.0" }, "optionalDependencies": { "typescript": "5.6.3" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w=="], 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=="], 737 859 738 - "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.17.0", "", { "dependencies": { "@typescript-eslint/types": "8.17.0", "eslint-visitor-keys": "4.2.0" } }, "sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg=="], 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=="], 739 861 740 - "@vitejs/plugin-react-swc": ["@vitejs/plugin-react-swc@3.7.2", "", { "dependencies": { "@swc/core": "1.9.3" }, "peerDependencies": { "vite": "6.0.2" } }, "sha512-y0byko2b2tSVVf5Gpng1eEhX1OvPC7x8yns1Fx8jDzlJp4LS6CMkCPfLw47cjyoMrshQDoQw4qcgjsU9VvlCew=="], 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=="], 741 863 742 - "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "5.0.1" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], 864 + "abort-controller": ["abort-controller@3.0.0", "", { "dependencies": { "event-target-shim": "^5.0.0" } }, "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg=="], 743 865 744 - "acorn": ["acorn@8.14.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA=="], 866 + "acorn": ["acorn@8.15.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg=="], 745 867 746 - "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "8.14.0" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], 868 + "acorn-import-attributes": ["acorn-import-attributes@1.9.5", "", { "peerDependencies": { "acorn": "^8" } }, "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ=="], 747 869 748 - "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "8.14.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], 870 + "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], 749 871 750 - "acorn-walk": ["acorn-walk@8.3.4", "", { "dependencies": { "acorn": "8.14.0" } }, "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g=="], 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=="], 751 873 752 - "ajv": ["ajv@6.12.6", "", { "dependencies": { "fast-deep-equal": "3.1.3", "fast-json-stable-stringify": "2.1.0", "json-schema-traverse": "0.4.1", "uri-js": "4.4.1" } }, "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g=="], 874 + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], 753 875 754 - "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], 876 + "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], 755 877 756 - "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], 878 + "ansis": ["ansis@4.2.0", "", {}, "sha512-HqZ5rWlFjGiV0tDm3UxxgNRqsOTniqoKZu0pIAfh7TZQMGuZK+hH0drySty0si0QXj1ieop4+SkSfPZBPPkHig=="], 757 879 758 880 "any-promise": ["any-promise@1.3.0", "", {}, "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A=="], 759 881 760 - "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "3.0.0", "picomatch": "2.3.1" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], 882 + "anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="], 761 883 762 - "arg": ["arg@4.1.3", "", {}, "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA=="], 884 + "arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], 763 885 764 886 "argparse": ["argparse@2.0.1", "", {}, "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="], 765 887 766 - "aria-hidden": ["aria-hidden@1.2.4", "", { "dependencies": { "tslib": "2.8.1" } }, "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A=="], 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=="], 767 891 768 892 "asynckit": ["asynckit@0.4.0", "", {}, "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q=="], 769 893 770 894 "atomic-sleep": ["atomic-sleep@1.0.0", "", {}, "sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ=="], 771 895 772 - "autoprefixer": ["autoprefixer@10.4.20", "", { "dependencies": { "browserslist": "4.24.2", "caniuse-lite": "1.0.30001686", "fraction.js": "4.3.7", "normalize-range": "0.1.2", "picocolors": "1.1.1", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" }, "bin": { "autoprefixer": "bin/autoprefixer" } }, "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g=="], 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=="], 773 897 774 - "await-lock": ["await-lock@2.2.2", "", {}, "sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw=="], 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=="], 775 899 776 - "axios": ["axios@1.7.9", "", { "dependencies": { "follow-redirects": "1.15.9", "form-data": "4.0.1", "proxy-from-env": "1.1.0" } }, "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw=="], 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=="], 777 901 778 - "babel-dead-code-elimination": ["babel-dead-code-elimination@1.0.6", "", { "dependencies": { "@babel/core": "7.26.0", "@babel/parser": "7.26.2", "@babel/traverse": "7.25.9", "@babel/types": "7.26.0" } }, "sha512-JxFi9qyRJpN0LjEbbjbN8g0ux71Qppn9R8Qe3k6QzHg2CaKsbUQtbn307LQGiDLGjV6JCtEFqfxzVig9MyDCHQ=="], 902 + "babel-plugin-react-compiler": ["babel-plugin-react-compiler@1.0.0", "", { "dependencies": { "@babel/types": "^7.26.0" } }, "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw=="], 779 903 780 904 "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], 781 905 782 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=="], 783 909 784 910 "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], 785 911 786 912 "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], 787 913 788 - "brace-expansion": ["brace-expansion@1.1.11", "", { "dependencies": { "balanced-match": "1.0.2", "concat-map": "0.0.1" } }, "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA=="], 914 + "brace-expansion": ["brace-expansion@1.1.12", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg=="], 789 915 790 - "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 916 + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], 791 917 792 - "browserslist": ["browserslist@4.24.2", "", { "dependencies": { "caniuse-lite": "1.0.30001686", "electron-to-chromium": "1.5.68", "node-releases": "2.0.18", "update-browserslist-db": "1.1.1" }, "bin": { "browserslist": "cli.js" } }, "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg=="], 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=="], 793 919 794 - "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "1.5.1", "ieee754": "1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], 920 + "buffer": ["buffer@6.0.3", "", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" } }, "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA=="], 795 921 796 922 "buffer-from": ["buffer-from@1.1.2", "", {}, "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="], 797 923 798 - "bufferutil": ["bufferutil@4.0.8", "", { "dependencies": { "node-gyp-build": "4.8.4" } }, "sha512-4T53u4PdgsXqKaIctwF8ifXlRTTmEPJ8iEPWFdGZvcf7sbwYo6FKFEX9eNNAnzFZ7EzJAQ3CJeOtCRA4rDp7Pw=="], 924 + "bufferutil": ["bufferutil@4.0.9", "", { "dependencies": { "node-gyp-build": "^4.3.0" } }, "sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw=="], 799 925 800 - "bundle-require": ["bundle-require@5.0.0", "", { "dependencies": { "load-tsconfig": "0.2.5" }, "peerDependencies": { "esbuild": "0.24.0" } }, "sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w=="], 926 + "bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], 801 927 802 - "cac": ["cac@6.7.14", "", {}, "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ=="], 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=="], 803 929 804 930 "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], 805 931 806 932 "camelcase-css": ["camelcase-css@2.0.1", "", {}, "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA=="], 807 933 808 - "caniuse-api": ["caniuse-api@3.0.0", "", { "dependencies": { "browserslist": "4.24.2", "caniuse-lite": "1.0.30001686", "lodash.memoize": "4.1.2", "lodash.uniq": "4.5.0" } }, "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw=="], 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=="], 809 935 810 - "caniuse-lite": ["caniuse-lite@1.0.30001686", "", {}, "sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA=="], 936 + "caniuse-lite": ["caniuse-lite@1.0.30001757", "", {}, "sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ=="], 811 937 812 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=="], 813 939 814 - "cbor-x": ["cbor-x@1.6.0", "", { "optionalDependencies": { "cbor-extract": "2.2.0" } }, "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg=="], 940 + "cbor-x": ["cbor-x@1.6.0", "", { "optionalDependencies": { "cbor-extract": "^2.2.0" } }, "sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg=="], 815 941 816 942 "cborg": ["cborg@1.10.2", "", { "bin": { "cborg": "cli.js" } }, "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug=="], 817 943 818 - "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], 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=="], 819 947 820 - "chokidar": ["chokidar@4.0.1", "", { "dependencies": { "readdirp": "4.0.2" } }, "sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA=="], 948 + "chardet": ["chardet@2.1.1", "", {}, "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ=="], 821 949 822 - "cjs-module-lexer": ["cjs-module-lexer@1.4.1", "", {}, "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA=="], 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=="], 823 951 824 - "class-variance-authority": ["class-variance-authority@0.7.1", "", { "dependencies": { "clsx": "2.1.1" } }, "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg=="], 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=="], 825 961 826 962 "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], 827 963 828 - "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 964 + "color-convert": ["color-convert@2.0.1", "", { "dependencies": { "color-name": "~1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="], 829 965 830 966 "color-name": ["color-name@1.1.4", "", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="], 831 967 ··· 833 969 834 970 "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], 835 971 836 - "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], 972 + "combined-stream": ["combined-stream@1.0.8", "", { "dependencies": { "delayed-stream": "~1.0.0" } }, "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg=="], 837 973 838 974 "commander": ["commander@4.1.1", "", {}, "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA=="], 839 975 840 976 "concat-map": ["concat-map@0.0.1", "", {}, "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="], 841 - 842 - "consola": ["consola@3.2.3", "", {}, "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ=="], 843 977 844 978 "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], 845 979 846 - "create-require": ["create-require@1.1.1", "", {}, "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ=="], 980 + "cookie-es": ["cookie-es@2.0.0", "", {}, "sha512-RAj4E421UYRgqokKUmotqAwuplYw15qtdXfY+hGzgCJ/MBjCVZcSoHK/kH9kocfjRjcDME7IiDWR/1WX1TM2Pg=="], 847 981 848 - "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "3.1.1", "shebang-command": "2.0.0", "which": "2.0.2" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], 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=="], 849 983 850 - "css-declaration-sorter": ["css-declaration-sorter@7.2.0", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow=="], 984 + "css-declaration-sorter": ["css-declaration-sorter@7.3.0", "", { "peerDependencies": { "postcss": "^8.0.9" } }, "sha512-LQF6N/3vkAMYF4xoHLJfG718HRJh34Z8BnNhd6bosOMIVjMlhuZK5++oZa3uYAgrI5+7x2o27gUqTR2U/KjUOQ=="], 851 985 852 - "css-select": ["css-select@5.1.0", "", { "dependencies": { "boolbase": "1.0.0", "css-what": "6.1.0", "domhandler": "5.0.3", "domutils": "3.1.0", "nth-check": "2.1.1" } }, "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="], 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=="], 853 987 854 - "css-tree": ["css-tree@2.3.1", "", { "dependencies": { "mdn-data": "2.0.30", "source-map-js": "1.2.1" } }, "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw=="], 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=="], 855 989 856 - "css-what": ["css-what@6.1.0", "", {}, "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="], 990 + "css-what": ["css-what@6.2.2", "", {}, "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA=="], 857 991 858 992 "cssesc": ["cssesc@3.0.0", "", { "bin": { "cssesc": "bin/cssesc" } }, "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg=="], 859 993 860 - "cssnano": ["cssnano@7.0.6", "", { "dependencies": { "cssnano-preset-default": "7.0.6", "lilconfig": "3.1.3" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-54woqx8SCbp8HwvNZYn68ZFAepuouZW4lTwiMVnBErM3VkO7/Sd4oTOt3Zz3bPx3kxQ36aISppyXj2Md4lg8bw=="], 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=="], 861 995 862 - "cssnano-preset-default": ["cssnano-preset-default@7.0.6", "", { "dependencies": { "browserslist": "4.24.2", "css-declaration-sorter": "7.2.0", "cssnano-utils": "5.0.0", "postcss-calc": "10.0.2", "postcss-colormin": "7.0.2", "postcss-convert-values": "7.0.4", "postcss-discard-comments": "7.0.3", "postcss-discard-duplicates": "7.0.1", "postcss-discard-empty": "7.0.0", "postcss-discard-overridden": "7.0.0", "postcss-merge-longhand": "7.0.4", "postcss-merge-rules": "7.0.4", "postcss-minify-font-values": "7.0.0", "postcss-minify-gradients": "7.0.0", "postcss-minify-params": "7.0.2", "postcss-minify-selectors": "7.0.4", "postcss-normalize-charset": "7.0.0", "postcss-normalize-display-values": "7.0.0", "postcss-normalize-positions": "7.0.0", "postcss-normalize-repeat-style": "7.0.0", "postcss-normalize-string": "7.0.0", "postcss-normalize-timing-functions": "7.0.0", "postcss-normalize-unicode": "7.0.2", "postcss-normalize-url": "7.0.0", "postcss-normalize-whitespace": "7.0.0", "postcss-ordered-values": "7.0.1", "postcss-reduce-initial": "7.0.2", "postcss-reduce-transforms": "7.0.0", "postcss-svgo": "7.0.1", "postcss-unique-selectors": "7.0.3" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-ZzrgYupYxEvdGGuqL+JKOY70s7+saoNlHSCK/OGn1vB2pQK8KSET8jvenzItcY+kA7NoWvfbb/YhlzuzNKjOhQ=="], 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=="], 863 997 864 - "cssnano-utils": ["cssnano-utils@5.0.0", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-Uij0Xdxc24L6SirFr25MlwC2rCFX6scyUmuKpzI+JQ7cyqDEwD42fJ0xfB3yLfOnRDU5LKGgjQ9FA6LYh76GWQ=="], 998 + "cssnano-utils": ["cssnano-utils@5.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg=="], 865 999 866 - "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "2.2.1" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], 1000 + "csso": ["csso@5.0.5", "", { "dependencies": { "css-tree": "~2.2.0" } }, "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ=="], 867 1001 868 - "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], 1002 + "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], 869 1003 870 1004 "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], 871 1005 872 1006 "dateformat": ["dateformat@4.6.3", "", {}, "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA=="], 873 1007 874 - "debug": ["debug@4.3.7", "", { "dependencies": { "ms": "2.1.3" } }, "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ=="], 1008 + "debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="], 875 1009 876 1010 "deep-is": ["deep-is@0.1.4", "", {}, "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ=="], 877 1011 ··· 883 1017 884 1018 "didyoumean": ["didyoumean@1.2.2", "", {}, "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw=="], 885 1019 886 - "diff": ["diff@4.0.2", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="], 1020 + "diff": ["diff@8.0.2", "", {}, "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg=="], 887 1021 888 1022 "dlv": ["dlv@1.1.3", "", {}, "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="], 889 1023 890 - "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "2.3.0", "domhandler": "5.0.3", "entities": "4.5.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], 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=="], 891 1025 892 1026 "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], 893 1027 894 - "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], 1028 + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], 895 1029 896 - "domutils": ["domutils@3.1.0", "", { "dependencies": { "dom-serializer": "2.0.0", "domelementtype": "2.3.0", "domhandler": "5.0.3" } }, "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA=="], 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=="], 897 1031 898 - "drizzle-kit": ["drizzle-kit@0.29.0", "", { "dependencies": { "@drizzle-team/brocli": "0.10.2", "@esbuild-kit/esm-loader": "2.6.5", "esbuild": "0.19.12", "esbuild-register": "3.6.0" }, "bin": { "drizzle-kit": "bin.cjs" } }, "sha512-WjH0eC7/WKl8hucZPl/H5Df6WbUs1KJdM/vfX6bCjn1lOePrbeeroc18dzAVXdZpvgYx0ywJcFOypoC5MfYAYg=="], 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=="], 899 1033 900 - "drizzle-orm": ["drizzle-orm@0.37.0", "", { "optionalDependencies": { "@libsql/client": "0.14.0", "@opentelemetry/api": "1.9.0", "@types/pg": "8.6.1", "@types/react": "19.0.1", "react": "19.0.0" } }, "sha512-AsCNACQ/T2CyZUkrBRUqFT2ibHJ9ZHz3+lzYJFFn3hnj7ylIeItMz5kacRG89uSE74nXYShqehr6u+6ks4JR1A=="], 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=="], 901 1035 902 - "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="], 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=="], 903 1037 904 - "electron-to-chromium": ["electron-to-chromium@1.5.68", "", {}, "sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ=="], 1038 + "electron-to-chromium": ["electron-to-chromium@1.5.259", "", {}, "sha512-I+oLXgpEJzD6Cwuwt1gYjxsDmu/S/Kd41mmLA3O+/uH2pFRO/DvOjUyGozL8j3KeLV6WyZ7ssPwELMsXCcsJAQ=="], 905 1039 906 - "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], 1040 + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], 907 1041 908 - "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], 1042 + "end-of-stream": ["end-of-stream@1.4.5", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="], 909 1043 910 1044 "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], 911 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 + 912 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=="], 913 1057 914 - "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "4.3.7" }, "peerDependencies": { "esbuild": "0.19.12" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], 1058 + "esbuild-register": ["esbuild-register@3.6.0", "", { "dependencies": { "debug": "^4.3.4" }, "peerDependencies": { "esbuild": ">=0.12 <1" } }, "sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg=="], 915 1059 916 1060 "escalade": ["escalade@3.2.0", "", {}, "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA=="], 917 1061 918 1062 "escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="], 919 1063 920 - "eslint": ["eslint@9.16.0", "", { "dependencies": { "@eslint-community/eslint-utils": "4.4.1", "@eslint-community/regexpp": "4.12.1", "@eslint/config-array": "0.19.0", "@eslint/core": "0.9.0", "@eslint/eslintrc": "3.2.0", "@eslint/js": "9.16.0", "@eslint/plugin-kit": "0.2.3", "@humanfs/node": "0.16.6", "@humanwhocodes/module-importer": "1.0.1", "@humanwhocodes/retry": "0.4.1", "@types/estree": "1.0.6", "@types/json-schema": "7.0.15", "ajv": "6.12.6", "chalk": "4.1.2", "cross-spawn": "7.0.6", "debug": "4.3.7", "escape-string-regexp": "4.0.0", "eslint-scope": "8.2.0", "eslint-visitor-keys": "4.2.0", "espree": "10.3.0", "esquery": "1.6.0", "esutils": "2.0.3", "fast-deep-equal": "3.1.3", "file-entry-cache": "8.0.0", "find-up": "5.0.0", "glob-parent": "6.0.2", "ignore": "5.3.2", "imurmurhash": "0.1.4", "is-glob": "4.0.3", "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.4" }, "optionalDependencies": { "jiti": "2.4.1" }, "bin": { "eslint": "bin/eslint.js" } }, "sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA=="], 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=="], 921 1065 922 - "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@5.0.0", "", { "peerDependencies": { "eslint": "9.16.0" } }, "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw=="], 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=="], 923 1067 924 - "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.16", "", { "peerDependencies": { "eslint": "9.16.0" } }, "sha512-slterMlxAhov/DZO8NScf6mEeMBBXodFUolijDvrtTxyezyLoTQaa73FyYus/VbTdftd8wBgBxPMRk3poleXNQ=="], 1068 + "eslint-plugin-react-refresh": ["eslint-plugin-react-refresh@0.4.24", "", { "peerDependencies": { "eslint": ">=8.40" } }, "sha512-nLHIW7TEq3aLrEYWpVaJ1dRgFR+wLDPN8e8FpYAql/bMV2oBEfC37K0gLEGgv9fy66juNShSMV8OkTqzltcG/w=="], 925 1069 926 - "eslint-scope": ["eslint-scope@8.2.0", "", { "dependencies": { "esrecurse": "4.3.0", "estraverse": "5.3.0" } }, "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A=="], 1070 + "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], 927 1071 928 - "eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], 1072 + "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="], 929 1073 930 - "espree": ["espree@10.3.0", "", { "dependencies": { "acorn": "8.14.0", "acorn-jsx": "5.3.2", "eslint-visitor-keys": "4.2.0" } }, "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg=="], 1074 + "esm-env": ["esm-env@1.2.2", "", {}, "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA=="], 931 1075 932 - "esquery": ["esquery@1.6.0", "", { "dependencies": { "estraverse": "5.3.0" } }, "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg=="], 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=="], 933 1079 934 - "esrecurse": ["esrecurse@4.3.0", "", { "dependencies": { "estraverse": "5.3.0" } }, "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag=="], 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=="], 935 1083 936 1084 "estraverse": ["estraverse@5.3.0", "", {}, "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA=="], 937 1085 938 1086 "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], 939 1087 940 - "event-target-shim": ["event-target-shim@6.0.2", "", {}, "sha512-8q3LsZjRezbFZ2PN+uP+Q7pnHUMmAOziU2vA2OwoFaKIXxlxl38IylhSSgUorWu/rf4er67w0ikBqjBFk/pomA=="], 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=="], 941 1091 942 1092 "events": ["events@3.3.0", "", {}, "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q=="], 943 1093 ··· 945 1095 946 1096 "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], 947 1097 948 - "fast-glob": ["fast-glob@3.3.2", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "@nodelib/fs.walk": "1.2.8", "glob-parent": "5.1.2", "merge2": "1.4.1", "micromatch": "4.0.8" } }, "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow=="], 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=="], 949 1099 950 1100 "fast-json-stable-stringify": ["fast-json-stable-stringify@2.1.0", "", {}, "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="], 951 1101 ··· 955 1105 956 1106 "fast-safe-stringify": ["fast-safe-stringify@2.1.1", "", {}, "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA=="], 957 1107 958 - "fastq": ["fastq@1.17.1", "", { "dependencies": { "reusify": "1.0.4" } }, "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w=="], 1108 + "fast-uri": ["fast-uri@3.1.0", "", {}, "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA=="], 959 1109 960 - "fdir": ["fdir@6.4.2", "", { "optionalDependencies": { "picomatch": "4.0.2" } }, "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ=="], 1110 + "fastq": ["fastq@1.19.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ=="], 961 1111 962 - "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "1.0.0", "web-streams-polyfill": "3.3.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], 1112 + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], 963 1113 964 - "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "4.0.1" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], 1114 + "fetch-blob": ["fetch-blob@3.2.0", "", { "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" } }, "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ=="], 965 1115 966 - "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 1116 + "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="], 967 1117 968 - "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "6.0.0", "path-exists": "4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], 1118 + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], 969 1119 970 - "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "3.3.2", "keyv": "4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], 1120 + "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="], 971 1121 972 - "flatted": ["flatted@3.3.2", "", {}, "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA=="], 1122 + "flat-cache": ["flat-cache@4.0.1", "", { "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.4" } }, "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw=="], 973 1123 974 - "follow-redirects": ["follow-redirects@1.15.9", "", {}, "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ=="], 1124 + "flatted": ["flatted@3.3.3", "", {}, "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg=="], 975 1125 976 - "foreground-child": ["foreground-child@3.3.0", "", { "dependencies": { "cross-spawn": "7.0.6", "signal-exit": "4.1.0" } }, "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg=="], 1126 + "follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], 977 1127 978 - "form-data": ["form-data@4.0.1", "", { "dependencies": { "asynckit": "0.4.0", "combined-stream": "1.0.8", "mime-types": "2.1.35" } }, "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw=="], 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=="], 979 1129 980 - "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "3.2.0" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], 1130 + "formdata-polyfill": ["formdata-polyfill@4.0.10", "", { "dependencies": { "fetch-blob": "^3.1.2" } }, "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g=="], 981 1131 982 - "fraction.js": ["fraction.js@4.3.7", "", {}, "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew=="], 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=="], 983 1135 984 1136 "fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], 985 1137 986 1138 "function-bind": ["function-bind@1.1.2", "", {}, "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA=="], 987 1139 988 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=="], 989 1147 990 1148 "get-nonce": ["get-nonce@1.0.1", "", {}, "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q=="], 991 1149 992 - "get-tsconfig": ["get-tsconfig@4.8.1", "", { "dependencies": { "resolve-pkg-maps": "1.0.0" } }, "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg=="], 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=="], 993 1157 994 - "glob": ["glob@11.0.0", "", { "dependencies": { "foreground-child": "3.3.0", "jackspeak": "4.0.2", "minimatch": "10.0.1", "minipass": "7.1.2", "package-json-from-dist": "1.0.1", "path-scurry": "2.0.0" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g=="], 1158 + "globals": ["globals@15.15.0", "", {}, "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg=="], 995 1159 996 - "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], 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=="], 997 1161 998 - "globals": ["globals@15.13.0", "", {}, "sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g=="], 1162 + "goober": ["goober@2.1.18", "", { "peerDependencies": { "csstype": "^3.0.10" } }, "sha512-2vFqsaDVIT9Gz7N6kAL++pLpp41l3PfDuusHcjnGLfR6+huZkl6ziX+zgVC3ZxpqWhzH6pyDdGrCeDhMIvwaxw=="], 999 1163 1000 - "goober": ["goober@2.1.16", "", { "peerDependencies": { "csstype": "3.1.3" } }, "sha512-erjk19y1U33+XAMe1VTvIONHYoSqE4iS7BYUZfHaqeohLmnC0FdxEh7rQU+6MZ4OajItzjZFSRtVANrQwNq6/g=="], 1164 + "gopd": ["gopd@1.2.0", "", {}, "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg=="], 1001 1165 1002 1166 "graphemer": ["graphemer@1.4.0", "", {}, "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag=="], 1003 1167 1004 1168 "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="], 1005 1169 1006 - "hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], 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=="], 1007 1175 1008 1176 "help-me": ["help-me@5.0.0", "", {}, "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg=="], 1009 1177 1010 - "hono": ["hono@4.6.12", "", {}, "sha512-eHtf4kSDNw6VVrdbd5IQi16r22m3s7mWPLd7xOMhg1a/Yyb1A0qpUFq8xYMX4FMuDe1nTKeMX5rTx7Nmw+a+Ag=="], 1178 + "hono": ["hono@4.10.7", "", {}, "sha512-icXIITfw/07Q88nLSkB9aiUrd8rYzSweK681Kjo/TSggaGbOX4RRyxxm71v+3PC8C/j+4rlxGeoTRxQDkaJkUw=="], 1011 1179 1012 - "hono-sessions": ["hono-sessions@0.7.0", "", { "dependencies": { "hono": "4.6.12", "iron-webcrypto": "0.10.1" } }, "sha512-bclJUXaBq66R7jEjccqs/tc9WPJiS/wbWV5rrSMuYkTTCRF24wUi2nHjIummb7yzSpkT3GqLRifZkvNbzSMTzg=="], 1180 + "iconv-lite": ["iconv-lite@0.7.0", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ=="], 1013 1181 1014 1182 "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="], 1015 1183 1016 1184 "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="], 1017 1185 1018 - "import-fresh": ["import-fresh@3.3.0", "", { "dependencies": { "parent-module": "1.0.1", "resolve-from": "4.0.0" } }, "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw=="], 1186 + "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="], 1019 1187 1020 - "import-in-the-middle": ["import-in-the-middle@1.11.3", "", { "dependencies": { "acorn": "8.14.0", "acorn-import-attributes": "1.9.5", "cjs-module-lexer": "1.4.1", "module-details-from-path": "1.0.3" } }, "sha512-tNpKEb4AjZrCyrxi+Eyu43h5ig0O8ZRFSXPHh/00/o+4P4pKzVEW/m5lsVtsAT7fCIgmQOAPjdqecGDsBXRxsw=="], 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=="], 1021 1189 1022 1190 "imurmurhash": ["imurmurhash@0.1.4", "", {}, "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA=="], 1023 1191 1024 1192 "ipaddr.js": ["ipaddr.js@2.2.0", "", {}, "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA=="], 1025 1193 1026 - "iron-webcrypto": ["iron-webcrypto@0.10.1", "", {}, "sha512-QGOS8MRMnj/UiOa+aMIgfyHcvkhqNUsUxb1XzskENvbo+rEfp6TOwqd1KPuDzXC4OnGHcMSVxDGRoilqB8ViqA=="], 1027 - 1028 - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "2.3.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], 1194 + "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], 1029 1195 1030 - "is-core-module": ["is-core-module@2.15.1", "", { "dependencies": { "hasown": "2.0.2" } }, "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ=="], 1196 + "is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], 1031 1197 1032 1198 "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], 1033 1199 1034 1200 "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], 1035 1201 1036 - "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 1202 + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], 1037 1203 1038 1204 "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], 1039 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 + 1040 1210 "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], 1041 1211 1042 1212 "iso-datestring-validator": ["iso-datestring-validator@2.2.2", "", {}, "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA=="], 1043 1213 1044 - "jackspeak": ["jackspeak@4.0.2", "", { "dependencies": { "@isaacs/cliui": "8.0.2" } }, "sha512-bZsjR/iRjl1Nk1UkjGpAzLNfQtzuijhn2g+pbZb98HQ1Gk8vM9hfbxeMBP+M2/UUdwj0RqGG3mlvk2MsAqwvEw=="], 1214 + "jiti": ["jiti@1.21.7", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A=="], 1045 1215 1046 - "jiti": ["jiti@2.4.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-yPBThwecp1wS9DmoA4x4KR2h3QoslacnDR8ypuFM962kI4/456Iy1oHx2RAgh4jfZNdn0bctsdadceiBUgpU1g=="], 1047 - 1048 - "jose": ["jose@5.9.6", "", {}, "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ=="], 1216 + "jose": ["jose@5.10.0", "", {}, "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg=="], 1049 1217 1050 1218 "joycon": ["joycon@3.1.1", "", {}, "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw=="], 1051 1219 1052 - "js-base64": ["js-base64@3.7.7", "", {}, "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw=="], 1220 + "js-base64": ["js-base64@3.7.8", "", {}, "sha512-hNngCeKxIUQiEUN3GPJOkz4wF/YvdUdbNL9hsBcMQTkKzboD7T/q3OYOuuPZLUE6dBxSGpwhk5mwuDud7JVAow=="], 1053 1221 1054 1222 "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], 1055 1223 1056 - "js-yaml": ["js-yaml@4.1.0", "", { "dependencies": { "argparse": "2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA=="], 1224 + "js-yaml": ["js-yaml@4.1.1", "", { "dependencies": { "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA=="], 1057 1225 1058 - "jsesc": ["jsesc@3.0.2", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g=="], 1226 + "jsesc": ["jsesc@3.1.0", "", { "bin": { "jsesc": "bin/jsesc" } }, "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA=="], 1059 1227 1060 1228 "json-buffer": ["json-buffer@3.0.1", "", {}, "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ=="], 1061 1229 1062 - "json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 1230 + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], 1063 1231 1064 1232 "json-stable-stringify-without-jsonify": ["json-stable-stringify-without-jsonify@1.0.1", "", {}, "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw=="], 1065 1233 ··· 1067 1235 1068 1236 "keyv": ["keyv@4.5.4", "", { "dependencies": { "json-buffer": "3.0.1" } }, "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw=="], 1069 1237 1070 - "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "1.2.1", "type-check": "0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], 1238 + "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], 1071 1239 1072 - "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=="], 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=="], 1073 1241 1074 1242 "lilconfig": ["lilconfig@3.1.3", "", {}, "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw=="], 1075 1243 1076 1244 "lines-and-columns": ["lines-and-columns@1.2.4", "", {}, "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="], 1077 1245 1078 - "load-tsconfig": ["load-tsconfig@0.2.5", "", {}, "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg=="], 1079 - 1080 - "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], 1246 + "locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="], 1081 1247 1082 1248 "lodash.memoize": ["lodash.memoize@4.1.2", "", {}, "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag=="], 1083 1249 1084 1250 "lodash.merge": ["lodash.merge@4.6.2", "", {}, "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ=="], 1085 - 1086 - "lodash.sortby": ["lodash.sortby@4.7.0", "", {}, "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA=="], 1087 1251 1088 1252 "lodash.uniq": ["lodash.uniq@4.5.0", "", {}, "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ=="], 1089 1253 1090 - "lru-cache": ["lru-cache@11.0.2", "", {}, "sha512-123qHRfJBmo2jXDbo/a5YOQrJoHF/GNQTLzQ5+IdK5pWpceK17yRc6ozlWd25FxvGKQbIUs91fDFkXmDHTKcyA=="], 1254 + "lru-cache": ["lru-cache@11.2.2", "", {}, "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg=="], 1091 1255 1092 - "lucide-react": ["lucide-react@0.464.0", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-eCx1qClbnw5qRqB2Z1AFFp71wdJXEwhPp5ii8LviyvHb7o/7eMXFiTyDHh7JpjM9BO9pC6ZUp/c7mCwwxbPIcg=="], 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=="], 1093 1257 1094 - "make-error": ["make-error@1.3.6", "", {}, "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw=="], 1258 + "math-intrinsics": ["math-intrinsics@1.1.0", "", {}, "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g=="], 1095 1259 1096 - "mdn-data": ["mdn-data@2.0.30", "", {}, "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA=="], 1260 + "mdn-data": ["mdn-data@2.12.2", "", {}, "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA=="], 1097 1261 1098 1262 "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], 1099 1263 1100 - "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "3.0.3", "picomatch": "2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], 1264 + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], 1101 1265 1102 1266 "mime-db": ["mime-db@1.52.0", "", {}, "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg=="], 1103 1267 1104 1268 "mime-types": ["mime-types@2.1.35", "", { "dependencies": { "mime-db": "1.52.0" } }, "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw=="], 1105 1269 1106 - "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "1.1.11" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], 1270 + "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="], 1107 1271 1108 1272 "minimist": ["minimist@1.2.8", "", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="], 1109 1273 1110 1274 "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="], 1111 1275 1112 - "module-details-from-path": ["module-details-from-path@1.0.3", "", {}, "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A=="], 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=="], 1113 1279 1114 1280 "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], 1115 1281 1116 1282 "multiformats": ["multiformats@9.9.0", "", {}, "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg=="], 1117 1283 1118 - "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "1.3.0", "object-assign": "4.1.1", "thenify-all": "1.6.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], 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=="], 1119 1287 1120 - "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], 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=="], 1121 1291 1122 1292 "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], 1123 1293 1124 1294 "node-domexception": ["node-domexception@1.0.0", "", {}, "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="], 1125 1295 1126 - "node-fetch": ["node-fetch@3.3.2", "", { "dependencies": { "data-uri-to-buffer": "4.0.1", "fetch-blob": "3.2.0", "formdata-polyfill": "4.0.10" } }, "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA=="], 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=="], 1127 1297 1128 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=="], 1129 1299 1130 - "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.1.1", "", { "dependencies": { "detect-libc": "2.0.2" }, "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=="], 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=="], 1131 1301 1132 - "node-releases": ["node-releases@2.0.18", "", {}, "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g=="], 1302 + "node-releases": ["node-releases@2.0.27", "", {}, "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA=="], 1133 1303 1134 1304 "normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="], 1135 1305 1136 1306 "normalize-range": ["normalize-range@0.1.2", "", {}, "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA=="], 1137 1307 1138 - "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], 1308 + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], 1139 1309 1140 1310 "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], 1141 1311 ··· 1143 1313 1144 1314 "on-exit-leak-free": ["on-exit-leak-free@2.1.2", "", {}, "sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA=="], 1145 1315 1146 - "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1.0.2" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], 1316 + "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], 1147 1317 1148 - "optionator": ["optionator@0.9.4", "", { "dependencies": { "deep-is": "0.1.4", "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=="], 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=="], 1149 1319 1150 - "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], 1320 + "p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], 1151 1321 1152 - "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "3.1.0" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], 1322 + "p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="], 1153 1323 1154 1324 "package-json-from-dist": ["package-json-from-dist@1.0.1", "", {}, "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw=="], 1155 1325 1156 - "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "3.1.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 1326 + "parent-module": ["parent-module@1.0.1", "", { "dependencies": { "callsites": "^3.0.0" } }, "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g=="], 1157 1327 1158 - "partysocket": ["partysocket@1.0.2", "", { "dependencies": { "event-target-shim": "6.0.2" } }, "sha512-rAFOUKImaq+VBk2B+2RTBsWEvlnarEP53nchoUHzpVs8V6fG2/estihOTslTQUWHVuHEKDL5k8htG8K3TngyFA=="], 1328 + "partysocket": ["partysocket@1.1.6", "", { "dependencies": { "event-target-polyfill": "^0.0.4" } }, "sha512-LkEk8N9hMDDsDT0iDK0zuwUDFVrVMUXFXCeN3850Ng8wtjPqPBeJlwdeY6ROlJSEh3tPoTTasXoSBYH76y118w=="], 1159 1329 1160 1330 "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], 1161 1331 ··· 1163 1333 1164 1334 "path-parse": ["path-parse@1.0.7", "", {}, "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="], 1165 1335 1166 - "path-scurry": ["path-scurry@2.0.0", "", { "dependencies": { "lru-cache": "11.0.2", "minipass": "7.1.2" } }, "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg=="], 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=="], 1167 1347 1168 1348 "pg-int8": ["pg-int8@1.0.1", "", {}, "sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw=="], 1169 1349 1170 - "pg-protocol": ["pg-protocol@1.7.0", "", {}, "sha512-hTK/mE36i8fDDhgDFjy6xNOG+LCorxLG3WO17tku+ij6sVHXh1jQUJ8hYAnRhNla4QVD2H8er/FOjc/+EgC6yQ=="], 1350 + "pg-pool": ["pg-pool@3.10.1", "", { "peerDependencies": { "pg": ">=8.0" } }, "sha512-Tu8jMlcX+9d8+QVzKIvM/uJtp07PKr82IUOYEphaWcoBhIYkoHpLXN3qO59nAI11ripznDsEzEv8nUxBVWajGg=="], 1171 1351 1172 - "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.7", "postgres-interval": "1.2.0" } }, "sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA=="], 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=="], 1173 1357 1174 1358 "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], 1175 1359 1176 - "picomatch": ["picomatch@4.0.2", "", {}, "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg=="], 1360 + "picomatch": ["picomatch@4.0.3", "", {}, "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q=="], 1177 1361 1178 1362 "pify": ["pify@2.3.0", "", {}, "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog=="], 1179 1363 1180 - "pino": ["pino@9.5.0", "", { "dependencies": { "atomic-sleep": "1.0.0", "fast-redact": "3.5.0", "on-exit-leak-free": "2.1.2", "pino-abstract-transport": "2.0.0", "pino-std-serializers": "7.0.0", "process-warning": "4.0.0", "quick-format-unescaped": "4.0.4", "real-require": "0.2.0", "safe-stable-stringify": "2.5.0", "sonic-boom": "4.2.0", "thread-stream": "3.1.0" }, "bin": { "pino": "bin.js" } }, "sha512-xSEmD4pLnV54t0NOUN16yCl7RIB1c5UUOse5HSyEXtBp+FgFQyPeDutc+Q2ZO7/22vImV7VfEjH/1zV2QuqvYw=="], 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=="], 1181 1365 1182 - "pino-abstract-transport": ["pino-abstract-transport@2.0.0", "", { "dependencies": { "split2": "4.2.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="], 1366 + "pino-abstract-transport": ["pino-abstract-transport@2.0.0", "", { "dependencies": { "split2": "^4.0.0" } }, "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw=="], 1183 1367 1184 - "pino-pretty": ["pino-pretty@13.0.0", "", { "dependencies": { "colorette": "2.0.20", "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.8", "on-exit-leak-free": "2.1.2", "pino-abstract-transport": "2.0.0", "pump": "3.0.2", "secure-json-parse": "2.7.0", "sonic-boom": "4.2.0", "strip-json-comments": "3.1.1" }, "bin": { "pino-pretty": "bin.js" } }, "sha512-cQBBIVG3YajgoUjo1FdKVRX6t9XPxwB9lcNJVD5GCnNM4Y6T12YYx8c6zEejxQsU0wrg9TwmDulcE9LR7qcJqA=="], 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=="], 1185 1369 1186 1370 "pino-std-serializers": ["pino-std-serializers@7.0.0", "", {}, "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA=="], 1187 1371 1188 - "pirates": ["pirates@4.0.6", "", {}, "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg=="], 1372 + "pirates": ["pirates@4.0.7", "", {}, "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA=="], 1189 1373 1190 - "postcss": ["postcss@8.4.49", "", { "dependencies": { "nanoid": "3.3.8", "picocolors": "1.1.1", "source-map-js": "1.2.1" } }, "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA=="], 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=="], 1191 1375 1192 - "postcss-calc": ["postcss-calc@10.0.2", "", { "dependencies": { "postcss-selector-parser": "6.1.2", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-DT/Wwm6fCKgpYVI7ZEWuPJ4az8hiEHtCUeYjZXqU7Ou4QqYh1Df2yCQ7Ca6N7xqKPFkxN3fhf+u9KSoOCJNAjg=="], 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=="], 1193 1377 1194 - "postcss-colormin": ["postcss-colormin@7.0.2", "", { "dependencies": { "browserslist": "4.24.2", "caniuse-api": "3.0.0", "colord": "2.9.3", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-YntRXNngcvEvDbEjTdRWGU606eZvB5prmHG4BF0yLmVpamXbpsRJzevyy6MZVyuecgzI2AWAlvFi8DAeCqwpvA=="], 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=="], 1195 1379 1196 - "postcss-convert-values": ["postcss-convert-values@7.0.4", "", { "dependencies": { "browserslist": "4.24.2", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-e2LSXPqEHVW6aoGbjV9RsSSNDO3A0rZLCBxN24zvxF25WknMPpX8Dm9UxxThyEbaytzggRuZxaGXqaOhxQ514Q=="], 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=="], 1197 1381 1198 - "postcss-discard-comments": ["postcss-discard-comments@7.0.3", "", { "dependencies": { "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-q6fjd4WU4afNhWOA2WltHgCbkRhZPgQe7cXF74fuVB/ge4QbM9HEaOIzGSiMvM+g/cOsNAUGdf2JDzqA2F8iLA=="], 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=="], 1199 1383 1200 - "postcss-discard-duplicates": ["postcss-discard-duplicates@7.0.1", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-oZA+v8Jkpu1ct/xbbrntHRsfLGuzoP+cpt0nJe5ED2FQF8n8bJtn7Bo28jSmBYwqgqnqkuSXJfSUEE7if4nClQ=="], 1384 + "postcss-discard-duplicates": ["postcss-discard-duplicates@7.0.2", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-eTonaQvPZ/3i1ASDHOKkYwAybiM45zFIc7KXils4mQmHLqIswXD9XNOKEVxtTFnsmwYzF66u4LMgSr0abDlh5w=="], 1201 1385 1202 - "postcss-discard-empty": ["postcss-discard-empty@7.0.0", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-e+QzoReTZ8IAwhnSdp/++7gBZ/F+nBq9y6PomfwORfP7q9nBpK5AMP64kOt0bA+lShBFbBDcgpJ3X4etHg4lzA=="], 1386 + "postcss-discard-empty": ["postcss-discard-empty@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-cFrJKZvcg/uxB6Ijr4l6qmn3pXQBna9zyrPC+sK0zjbkDUZew+6xDltSF7OeB7rAtzaaMVYSdbod+sZOCWnMOg=="], 1203 1387 1204 - "postcss-discard-overridden": ["postcss-discard-overridden@7.0.0", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-GmNAzx88u3k2+sBTZrJSDauR0ccpE24omTQCVmaTTZFz1du6AasspjaUPMJ2ud4RslZpoFKyf+6MSPETLojc6w=="], 1388 + "postcss-discard-overridden": ["postcss-discard-overridden@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-7c3MMjjSZ/qYrx3uc1940GSOzN1Iqjtlqe8uoSg+qdVPYyRb0TILSqqmtlSFuE4mTDECwsm397Ya7iXGzfF7lg=="], 1205 1389 1206 - "postcss-import": ["postcss-import@15.1.0", "", { "dependencies": { "postcss-value-parser": "4.2.0", "read-cache": "1.0.0", "resolve": "1.22.8" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew=="], 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=="], 1207 1391 1208 - "postcss-js": ["postcss-js@4.0.1", "", { "dependencies": { "camelcase-css": "2.0.1" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw=="], 1392 + "postcss-js": ["postcss-js@4.1.0", "", { "dependencies": { "camelcase-css": "^2.0.1" }, "peerDependencies": { "postcss": "^8.4.21" } }, "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw=="], 1209 1393 1210 - "postcss-load-config": ["postcss-load-config@6.0.1", "", { "dependencies": { "lilconfig": "3.1.3" }, "optionalDependencies": { "jiti": "2.4.1", "postcss": "8.4.49", "tsx": "4.19.2", "yaml": "2.6.1" } }, "sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g=="], 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=="], 1211 1395 1212 - "postcss-merge-longhand": ["postcss-merge-longhand@7.0.4", "", { "dependencies": { "postcss-value-parser": "4.2.0", "stylehacks": "7.0.4" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-zer1KoZA54Q8RVHKOY5vMke0cCdNxMP3KBfDerjH/BYHh4nCIh+1Yy0t1pAEQF18ac/4z3OFclO+ZVH8azjR4A=="], 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=="], 1213 1397 1214 - "postcss-merge-rules": ["postcss-merge-rules@7.0.4", "", { "dependencies": { "browserslist": "4.24.2", "caniuse-api": "3.0.0", "cssnano-utils": "5.0.0", "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-ZsaamiMVu7uBYsIdGtKJ64PkcQt6Pcpep/uO90EpLS3dxJi6OXamIobTYcImyXGoW0Wpugh7DSD3XzxZS9JCPg=="], 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=="], 1215 1399 1216 - "postcss-minify-font-values": ["postcss-minify-font-values@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-2ckkZtgT0zG8SMc5aoNwtm5234eUx1GGFJKf2b1bSp8UflqaeFzR50lid4PfqVI9NtGqJ2J4Y7fwvnP/u1cQog=="], 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=="], 1217 1401 1218 - "postcss-minify-gradients": ["postcss-minify-gradients@7.0.0", "", { "dependencies": { "colord": "2.9.3", "cssnano-utils": "5.0.0", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-pdUIIdj/C93ryCHew0UgBnL2DtUS3hfFa5XtERrs4x+hmpMYGhbzo6l/Ir5de41O0GaKVpK1ZbDNXSY6GkXvtg=="], 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=="], 1219 1403 1220 - "postcss-minify-params": ["postcss-minify-params@7.0.2", "", { "dependencies": { "browserslist": "4.24.2", "cssnano-utils": "5.0.0", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-nyqVLu4MFl9df32zTsdcLqCFfE/z2+f8GE1KHPxWOAmegSo6lpV2GNy5XQvrzwbLmiU7d+fYay4cwto1oNdAaQ=="], 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=="], 1221 1405 1222 - "postcss-minify-selectors": ["postcss-minify-selectors@7.0.4", "", { "dependencies": { "cssesc": "3.0.0", "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-JG55VADcNb4xFCf75hXkzc1rNeURhlo7ugf6JjiiKRfMsKlDzN9CXHZDyiG6x/zGchpjQS+UAgb1d4nqXqOpmA=="], 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=="], 1223 1407 1224 - "postcss-nested": ["postcss-nested@6.2.0", "", { "dependencies": { "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ=="], 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=="], 1225 1409 1226 - "postcss-normalize-charset": ["postcss-normalize-charset@7.0.0", "", { "peerDependencies": { "postcss": "8.4.49" } }, "sha512-ABisNUXMeZeDNzCQxPxBCkXexvBrUHV+p7/BXOY+ulxkcjUZO0cp8ekGBwvIh2LbCwnWbyMPNJVtBSdyhM2zYQ=="], 1410 + "postcss-normalize-charset": ["postcss-normalize-charset@7.0.1", "", { "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-sn413ofhSQHlZFae//m9FTOfkmiZ+YQXsbosqOWRiVQncU2BA3daX3n0VF3cG6rGLSFVc5Di/yns0dFfh8NFgQ=="], 1227 1411 1228 - "postcss-normalize-display-values": ["postcss-normalize-display-values@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-lnFZzNPeDf5uGMPYgGOw7v0BfB45+irSRz9gHQStdkkhiM0gTfvWkWB5BMxpn0OqgOQuZG/mRlZyJxp0EImr2Q=="], 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=="], 1229 1413 1230 - "postcss-normalize-positions": ["postcss-normalize-positions@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-I0yt8wX529UKIGs2y/9Ybs2CelSvItfmvg/DBIjTnoUSrPxSV7Z0yZ8ShSVtKNaV/wAY+m7bgtyVQLhB00A1NQ=="], 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=="], 1231 1415 1232 - "postcss-normalize-repeat-style": ["postcss-normalize-repeat-style@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-o3uSGYH+2q30ieM3ppu9GTjSXIzOrRdCUn8UOMGNw7Af61bmurHTWI87hRybrP6xDHvOe5WlAj3XzN6vEO8jLw=="], 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=="], 1233 1417 1234 - "postcss-normalize-string": ["postcss-normalize-string@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-w/qzL212DFVOpMy3UGyxrND+Kb0fvCiBBujiaONIihq7VvtC7bswjWgKQU/w4VcRyDD8gpfqUiBQ4DUOwEJ6Qg=="], 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=="], 1235 1419 1236 - "postcss-normalize-timing-functions": ["postcss-normalize-timing-functions@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-tNgw3YV0LYoRwg43N3lTe3AEWZ66W7Dh7lVEpJbHoKOuHc1sLrzMLMFjP8SNULHaykzsonUEDbKedv8C+7ej6g=="], 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=="], 1237 1421 1238 - "postcss-normalize-unicode": ["postcss-normalize-unicode@7.0.2", "", { "dependencies": { "browserslist": "4.24.2", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-ztisabK5C/+ZWBdYC+Y9JCkp3M9qBv/XFvDtSw0d/XwfT3UaKeW/YTm/MD/QrPNxuecia46vkfEhewjwcYFjkg=="], 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=="], 1239 1423 1240 - "postcss-normalize-url": ["postcss-normalize-url@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-+d7+PpE+jyPX1hDQZYG+NaFD+Nd2ris6r8fPTBAjE8z/U41n/bib3vze8x7rKs5H1uEw5ppe9IojewouHk0klQ=="], 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=="], 1241 1425 1242 - "postcss-normalize-whitespace": ["postcss-normalize-whitespace@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-37/toN4wwZErqohedXYqWgvcHUGlT8O/m2jVkAfAe9Bd4MzRqlBmXrJRePH0e9Wgnz2X7KymTgTOaaFizQe3AQ=="], 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=="], 1243 1427 1244 - "postcss-ordered-values": ["postcss-ordered-values@7.0.1", "", { "dependencies": { "cssnano-utils": "5.0.0", "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-irWScWRL6nRzYmBOXReIKch75RRhNS86UPUAxXdmW/l0FcAsg0lvAXQCby/1lymxn/o0gVa6Rv/0f03eJOwHxw=="], 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=="], 1245 1429 1246 - "postcss-reduce-initial": ["postcss-reduce-initial@7.0.2", "", { "dependencies": { "browserslist": "4.24.2", "caniuse-api": "3.0.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-pOnu9zqQww7dEKf62Nuju6JgsW2V0KRNBHxeKohU+JkHd/GAH5uvoObqFLqkeB2n20mr6yrlWDvo5UBU5GnkfA=="], 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=="], 1247 1431 1248 - "postcss-reduce-transforms": ["postcss-reduce-transforms@7.0.0", "", { "dependencies": { "postcss-value-parser": "4.2.0" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-pnt1HKKZ07/idH8cpATX/ujMbtOGhUfE+m8gbqwJE05aTaNw8gbo34a2e3if0xc0dlu75sUOiqvwCGY3fzOHew=="], 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=="], 1249 1433 1250 - "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=="], 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=="], 1251 1435 1252 - "postcss-svgo": ["postcss-svgo@7.0.1", "", { "dependencies": { "postcss-value-parser": "4.2.0", "svgo": "3.3.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-0WBUlSL4lhD9rA5k1e5D8EN5wCEyZD6HJk0jIvRxl+FDVOMlJ7DePHYWGGVc5QRqrJ3/06FTXM0bxjmJpmTPSA=="], 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=="], 1253 1437 1254 - "postcss-unique-selectors": ["postcss-unique-selectors@7.0.3", "", { "dependencies": { "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-J+58u5Ic5T1QjP/LDV9g3Cx4CNOgB5vz+kM6+OxHHhFACdcDeKhBXjQmB7fnIZM12YSTvsL0Opwco83DmacW2g=="], 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=="], 1255 1439 1256 1440 "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], 1257 1441 ··· 1261 1445 1262 1446 "postgres-date": ["postgres-date@1.0.7", "", {}, "sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q=="], 1263 1447 1264 - "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "4.0.2" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], 1448 + "postgres-interval": ["postgres-interval@1.2.0", "", { "dependencies": { "xtend": "^4.0.0" } }, "sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ=="], 1265 1449 1266 1450 "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], 1267 1451 1268 - "prettier": ["prettier@3.4.1", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg=="], 1452 + "prettier": ["prettier@3.6.2", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ=="], 1269 1453 1270 1454 "process": ["process@0.11.10", "", {}, "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A=="], 1271 1455 1272 - "process-warning": ["process-warning@4.0.0", "", {}, "sha512-/MyYDxttz7DfGMMHiysAsFE4qF+pQYAA8ziO/3NcRVrQ5fSk+Mns4QZA/oRPFzvcqNoVJXQNWNAsdwBXLUkQKw=="], 1456 + "process-warning": ["process-warning@5.0.0", "", {}, "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA=="], 1273 1457 1274 1458 "promise-limit": ["promise-limit@2.7.0", "", {}, "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="], 1275 1459 1276 1460 "proxy-from-env": ["proxy-from-env@1.1.0", "", {}, "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg=="], 1277 1461 1278 - "psl": ["psl@1.15.0", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w=="], 1279 - 1280 - "pump": ["pump@3.0.2", "", { "dependencies": { "end-of-stream": "1.4.4", "once": "1.4.0" } }, "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw=="], 1462 + "pump": ["pump@3.0.3", "", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="], 1281 1463 1282 1464 "punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], 1283 1465 ··· 1287 1469 1288 1470 "react": ["react@19.0.0", "", {}, "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ=="], 1289 1471 1290 - "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "0.25.0" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], 1472 + "react-dom": ["react-dom@19.0.0", "", { "dependencies": { "scheduler": "^0.25.0" }, "peerDependencies": { "react": "^19.0.0" } }, "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ=="], 1291 1473 1292 - "react-hook-form": ["react-hook-form@7.54.1", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-PUNzFwQeQ5oHiiTUO7GO/EJXGEtuun2Y1A59rLnZBBj+vNEOWt/3ERTiG1/zt7dVeJEM+4vDX/7XQ/qanuvPMg=="], 1474 + "react-hook-form": ["react-hook-form@7.66.1", "", { "peerDependencies": { "react": "^16.8.0 || ^17 || ^18 || ^19" } }, "sha512-2KnjpgG2Rhbi+CIiIBQQ9Df6sMGH5ExNyFl4Hw9qO7pIqMBR8Bvu9RQyjl3JM4vehzCh9soiNUM/xYMswb2EiA=="], 1293 1475 1294 - "react-remove-scroll": ["react-remove-scroll@2.6.2", "", { "dependencies": { "react-remove-scroll-bar": "2.3.8", "react-style-singleton": "2.2.3", "tslib": "2.8.1", "use-callback-ref": "1.3.3", "use-sidecar": "1.1.2" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw=="], 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=="], 1295 1479 1296 - "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "2.2.3", "tslib": "2.8.1" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], 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=="], 1297 1481 1298 - "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "1.0.1", "tslib": "2.8.1" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], 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=="], 1299 1483 1300 - "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], 1484 + "read-cache": ["read-cache@1.0.0", "", { "dependencies": { "pify": "^2.3.0" } }, "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA=="], 1301 1485 1302 - "readable-stream": ["readable-stream@4.5.2", "", { "dependencies": { "abort-controller": "3.0.0", "buffer": "6.0.3", "events": "3.3.0", "process": "0.11.10", "string_decoder": "1.3.0" } }, "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g=="], 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=="], 1303 1487 1304 - "readdirp": ["readdirp@4.0.2", "", {}, "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA=="], 1488 + "readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], 1305 1489 1306 1490 "real-require": ["real-require@0.2.0", "", {}, "sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg=="], 1307 1491 1308 - "require-in-the-middle": ["require-in-the-middle@7.4.0", "", { "dependencies": { "debug": "4.3.7", "module-details-from-path": "1.0.3", "resolve": "1.22.8" } }, "sha512-X34iHADNbNDfr6OTStIAHWSAvvKQRYgLO6duASaVf7J2VA3lvmNYboAHOuLC2huav1IwgZJtyEcJCKVzFxOSMQ=="], 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=="], 1309 1497 1310 - "resolve": ["resolve@1.22.8", "", { "dependencies": { "is-core-module": "2.15.1", "path-parse": "1.0.7", "supports-preserve-symlinks-flag": "1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw=="], 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=="], 1311 1499 1312 - "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], 1500 + "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 1313 1501 1314 1502 "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], 1315 1503 1316 - "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], 1504 + "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], 1317 1505 1318 - "rimraf": ["rimraf@6.0.1", "", { "dependencies": { "glob": "11.0.0", "package-json-from-dist": "1.0.1" }, "bin": { "rimraf": "dist/esm/bin.mjs" } }, "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A=="], 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=="], 1319 1507 1320 - "rollup": ["rollup@4.28.0", "", { "dependencies": { "@types/estree": "1.0.6" }, "optionalDependencies": { "@rollup/rollup-android-arm-eabi": "4.28.0", "@rollup/rollup-android-arm64": "4.28.0", "@rollup/rollup-darwin-arm64": "4.28.0", "@rollup/rollup-darwin-x64": "4.28.0", "@rollup/rollup-freebsd-arm64": "4.28.0", "@rollup/rollup-freebsd-x64": "4.28.0", "@rollup/rollup-linux-arm-gnueabihf": "4.28.0", "@rollup/rollup-linux-arm-musleabihf": "4.28.0", "@rollup/rollup-linux-arm64-gnu": "4.28.0", "@rollup/rollup-linux-arm64-musl": "4.28.0", "@rollup/rollup-linux-powerpc64le-gnu": "4.28.0", "@rollup/rollup-linux-riscv64-gnu": "4.28.0", "@rollup/rollup-linux-s390x-gnu": "4.28.0", "@rollup/rollup-linux-x64-gnu": "4.28.0", "@rollup/rollup-linux-x64-musl": "4.28.0", "@rollup/rollup-win32-arm64-msvc": "4.28.0", "@rollup/rollup-win32-ia32-msvc": "4.28.0", "@rollup/rollup-win32-x64-msvc": "4.28.0", "fsevents": "2.3.3" }, "bin": { "rollup": "dist/bin/rollup" } }, "sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ=="], 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=="], 1321 1509 1322 - "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "1.2.3" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], 1510 + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], 1323 1511 1324 1512 "safe-buffer": ["safe-buffer@5.2.1", "", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="], 1325 1513 1326 1514 "safe-stable-stringify": ["safe-stable-stringify@2.5.0", "", {}, "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA=="], 1327 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 + 1328 1520 "scheduler": ["scheduler@0.25.0", "", {}, "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA=="], 1329 1521 1330 - "secure-json-parse": ["secure-json-parse@2.7.0", "", {}, "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw=="], 1522 + "secure-json-parse": ["secure-json-parse@4.1.0", "", {}, "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA=="], 1331 1523 1332 - "semver": ["semver@7.6.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="], 1524 + "semver": ["semver@7.7.3", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="], 1333 1525 1334 - "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], 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=="], 1335 1531 1336 1532 "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], 1337 1533 ··· 1339 1535 1340 1536 "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], 1341 1537 1342 - "sonic-boom": ["sonic-boom@4.2.0", "", { "dependencies": { "atomic-sleep": "1.0.0" } }, "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww=="], 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=="], 1343 1543 1344 - "source-map": ["source-map@0.8.0-beta.0", "", { "dependencies": { "whatwg-url": "7.1.0" } }, "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA=="], 1544 + "source-map": ["source-map@0.7.6", "", {}, "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ=="], 1345 1545 1346 1546 "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], 1347 1547 1348 - "source-map-support": ["source-map-support@0.5.21", "", { "dependencies": { "buffer-from": "1.1.2", "source-map": "0.6.1" } }, "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w=="], 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=="], 1349 1549 1350 1550 "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], 1351 1551 1352 - "string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "0.2.0", "emoji-regex": "9.2.2", "strip-ansi": "7.1.0" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], 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=="], 1353 1553 1354 - "string-width-cjs": ["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=="], 1554 + "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], 1355 1555 1356 - "string_decoder": ["string_decoder@1.3.0", "", { "dependencies": { "safe-buffer": "5.2.1" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="], 1556 + "strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], 1357 1557 1358 - "strip-ansi": ["strip-ansi@7.1.0", "", { "dependencies": { "ansi-regex": "6.1.0" } }, "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ=="], 1558 + "strip-json-comments": ["strip-json-comments@5.0.3", "", {}, "sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw=="], 1359 1559 1360 - "strip-ansi-cjs": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 1560 + "stylehacks": ["stylehacks@7.0.7", "", { "dependencies": { "browserslist": "^4.27.0", "postcss-selector-parser": "^7.1.0" }, "peerDependencies": { "postcss": "^8.4.32" } }, "sha512-bJkD0JkEtbRrMFtwgpJyBbFIwfDDONQ1Ov3sDLZQP8HuJ73kBOyx66H4bOcAbVWmnfLdvQ0AJwXxOMkpujcO6g=="], 1361 1561 1362 - "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 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=="], 1363 1563 1364 - "stylehacks": ["stylehacks@7.0.4", "", { "dependencies": { "browserslist": "4.24.2", "postcss-selector-parser": "6.1.2" }, "peerDependencies": { "postcss": "8.4.49" } }, "sha512-i4zfNrGMt9SB4xRK9L83rlsFCgdGANfeDAYacO1pkqcE7cRHPdWHwnKZVz7WY17Veq/FvyYsRAU++Ga+qDFIww=="], 1564 + "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 1365 1565 1366 - "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "0.3.5", "commander": "4.1.1", "glob": "10.4.5", "lines-and-columns": "1.2.4", "mz": "2.7.0", "pirates": "4.0.6", "ts-interface-checker": "0.1.13" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="], 1566 + "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 1367 1567 1368 - "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], 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=="], 1369 1569 1370 - "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], 1570 + "tailwind-merge": ["tailwind-merge@2.6.0", "", {}, "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA=="], 1371 1571 1372 - "svgo": ["svgo@3.3.2", "", { "dependencies": { "@trysound/sax": "0.2.0", "commander": "7.2.0", "css-select": "5.1.0", "css-tree": "2.3.1", "css-what": "6.1.0", "csso": "5.0.5", "picocolors": "1.1.1" }, "bin": "./bin/svgo" }, "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw=="], 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=="], 1373 1573 1374 - "tailwind-merge": ["tailwind-merge@2.5.5", "", {}, "sha512-0LXunzzAZzo0tEPxV3I297ffKZPlKDrjj7NXphC8V5ak9yHC5zRmxnOe2m/Rd/7ivsOMJe3JZ2JVocoDdQTRBA=="], 1574 + "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": ">=3.0.0 || insiders" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], 1375 1575 1376 - "tailwindcss": ["tailwindcss@3.4.16", "", { "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.6", "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.49", "postcss-import": "15.1.0", "postcss-js": "4.0.1", "postcss-load-config": "4.0.2", "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-TI4Cyx7gDiZ6r44ewaJmt0o6BrMCT5aK5e0rmJ/G9Xq3w7CX/5VXl/zIPEJZFUK5VEqwByyhqNPycPlvcK4ZNw=="], 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=="], 1377 1577 1378 - "tailwindcss-animate": ["tailwindcss-animate@1.0.7", "", { "peerDependencies": { "tailwindcss": "3.4.16" } }, "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA=="], 1578 + "temporal-polyfill": ["temporal-polyfill@0.3.0", "", { "dependencies": { "temporal-spec": "0.3.0" } }, "sha512-qNsTkX9K8hi+FHDfHmf22e/OGuXmfBm9RqNismxBrnSmZVJKegQ+HYYXT+R7Ha8F/YSm2Y34vmzD4cxMu2u95g=="], 1379 1579 1380 - "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "1.3.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], 1580 + "temporal-spec": ["temporal-spec@0.3.0", "", {}, "sha512-n+noVpIqz4hYgFSMOSiINNOUOMFtV5cZQNCmmszA6GiVFVRt3G7AqVyhXjhCSmowvQn+NsGn+jMDMKJYHd3bSQ=="], 1381 1581 1382 - "thenify-all": ["thenify-all@1.6.0", "", { "dependencies": { "thenify": "3.3.1" } }, "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA=="], 1582 + "thenify": ["thenify@3.3.1", "", { "dependencies": { "any-promise": "^1.0.0" } }, "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw=="], 1383 1583 1384 - "thread-stream": ["thread-stream@3.1.0", "", { "dependencies": { "real-require": "0.2.0" } }, "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A=="], 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=="], 1385 1587 1386 1588 "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], 1387 1589 1388 1590 "tiny-warning": ["tiny-warning@1.0.3", "", {}, "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA=="], 1389 1591 1390 - "tinyexec": ["tinyexec@0.3.1", "", {}, "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ=="], 1592 + "tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], 1391 1593 1392 - "tinyglobby": ["tinyglobby@0.2.10", "", { "dependencies": { "fdir": "6.4.2", "picomatch": "4.0.2" } }, "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew=="], 1594 + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 1393 1595 1394 - "tlds": ["tlds@1.255.0", "", { "bin": { "tlds": "bin.js" } }, "sha512-tcwMRIioTcF/FcxLev8MJWxCp+GUALRhFEqbDoZrnowmKSGqPrl5pqS+Sut2m8BgJ6S4FExCSSpGffZ0Tks6Aw=="], 1596 + "ts-api-utils": ["ts-api-utils@2.1.0", "", { "peerDependencies": { "typescript": ">=4.8.4" } }, "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ=="], 1395 1597 1396 - "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], 1598 + "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], 1397 1599 1398 - "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="], 1600 + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 1399 1601 1400 - "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], 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=="], 1401 1603 1402 - "ts-api-utils": ["ts-api-utils@1.4.3", "", { "peerDependencies": { "typescript": "5.6.3" } }, "sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw=="], 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=="], 1403 1605 1404 - "ts-interface-checker": ["ts-interface-checker@0.1.13", "", {}, "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA=="], 1606 + "turbo-darwin-64": ["turbo-darwin-64@2.6.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-Dm0HwhyZF4J0uLqkhUyCVJvKM9Rw7M03v3J9A7drHDQW0qAbIGBrUijQ8g4Q9Cciw/BXRRd8Uzkc3oue+qn+ZQ=="], 1405 1607 1406 - "ts-node": ["ts-node@10.9.2", "", { "dependencies": { "@cspotcode/source-map-support": "0.8.1", "@tsconfig/node10": "1.0.11", "@tsconfig/node12": "1.0.11", "@tsconfig/node14": "1.0.3", "@tsconfig/node16": "1.0.4", "acorn": "8.14.0", "acorn-walk": "8.3.4", "arg": "4.1.3", "create-require": "1.1.1", "diff": "4.0.2", "make-error": "1.3.6", "v8-compile-cache-lib": "3.0.1", "yn": "3.1.1" }, "optionalDependencies": { "@swc/core": "1.9.3" }, "peerDependencies": { "@types/node": "22.10.1", "typescript": "5.6.3" }, "bin": { "ts-node": "dist/bin.js", "ts-script": "dist/bin-script-deprecated.js", "ts-node-cwd": "dist/bin-cwd.js", "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js" } }, "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ=="], 1608 + "turbo-darwin-arm64": ["turbo-darwin-arm64@2.6.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-U0PIPTPyxdLsrC3jN7jaJUwgzX5sVUBsKLO7+6AL+OASaa1NbT1pPdiZoTkblBAALLP76FM0LlnsVQOnmjYhyw=="], 1407 1609 1408 - "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], 1610 + "turbo-linux-64": ["turbo-linux-64@2.6.1", "", { "os": "linux", "cpu": "x64" }, "sha512-eM1uLWgzv89bxlK29qwQEr9xYWBhmO/EGiH22UGfq+uXr+QW1OvNKKMogSN65Ry8lElMH4LZh0aX2DEc7eC0Mw=="], 1409 1611 1410 - "tsup": ["tsup@8.3.5", "", { "dependencies": { "bundle-require": "5.0.0", "cac": "6.7.14", "chokidar": "4.0.1", "consola": "3.2.3", "debug": "4.3.7", "esbuild": "0.24.0", "joycon": "3.1.1", "picocolors": "1.1.1", "postcss-load-config": "6.0.1", "resolve-from": "5.0.0", "rollup": "4.28.0", "source-map": "0.8.0-beta.0", "sucrase": "3.35.0", "tinyexec": "0.3.1", "tinyglobby": "0.2.10", "tree-kill": "1.2.2" }, "optionalDependencies": { "@swc/core": "1.9.3", "postcss": "8.4.49", "typescript": "5.7.2" }, "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-Tunf6r6m6tnZsG9GYWndg0z8dEV7fD733VBFzFJ5Vcm1FtlXB8xBD/rtrBi2a3YKEV7hHtxiZtW5EAVADoe1pA=="], 1612 + "turbo-linux-arm64": ["turbo-linux-arm64@2.6.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MFFh7AxAQAycXKuZDrbeutfWM5Ep0CEZ9u7zs4Hn2FvOViTCzIfEhmuJou3/a5+q5VX1zTxQrKGy+4Lf5cdpsA=="], 1411 1613 1412 - "tsx": ["tsx@4.19.2", "", { "dependencies": { "esbuild": "0.23.1", "get-tsconfig": "4.8.1" }, "optionalDependencies": { "fsevents": "2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g=="], 1614 + "turbo-windows-64": ["turbo-windows-64@2.6.1", "", { "os": "win32", "cpu": "x64" }, "sha512-buq7/VAN7KOjMYi4tSZT5m+jpqyhbRU2EUTTvp6V0Ii8dAkY2tAAjQN1q5q2ByflYWKecbQNTqxmVploE0LVwQ=="], 1413 1615 1414 - "turbo": ["turbo@2.3.3", "", { "optionalDependencies": { "turbo-darwin-64": "2.3.3", "turbo-darwin-arm64": "2.3.3", "turbo-linux-64": "2.3.3", "turbo-linux-arm64": "2.3.3", "turbo-windows-64": "2.3.3", "turbo-windows-arm64": "2.3.3" }, "bin": { "turbo": "bin/turbo" } }, "sha512-DUHWQAcC8BTiUZDRzAYGvpSpGLiaOQPfYXlCieQbwUvmml/LRGIe3raKdrOPOoiX0DYlzxs2nH6BoWJoZrj8hA=="], 1616 + "turbo-windows-arm64": ["turbo-windows-arm64@2.6.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-7w+AD5vJp3R+FB0YOj1YJcNcOOvBior7bcHTodqp90S3x3bLgpr7tE6xOea1e8JkP7GK6ciKVUpQvV7psiwU5Q=="], 1415 1617 1416 - "turbo-darwin-64": ["turbo-darwin-64@2.3.3", "", { "os": "darwin", "cpu": "x64" }, "sha512-bxX82xe6du/3rPmm4aCC5RdEilIN99VUld4HkFQuw+mvFg6darNBuQxyWSHZTtc25XgYjQrjsV05888w1grpaA=="], 1618 + "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], 1417 1619 1418 - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.3.3", "", { "os": "darwin", "cpu": "arm64" }, "sha512-DYbQwa3NsAuWkCUYVzfOUBbSUBVQzH5HWUFy2Kgi3fGjIWVZOFk86ss+xsWu//rlEAfYwEmopigsPYSmW4X15A=="], 1620 + "type-fest": ["type-fest@4.41.0", "", {}, "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA=="], 1419 1621 1420 - "turbo-linux-64": ["turbo-linux-64@2.3.3", "", { "os": "linux", "cpu": "x64" }, "sha512-eHj9OIB0dFaP6BxB88jSuaCLsOQSYWBgmhy2ErCu6D2GG6xW3b6e2UWHl/1Ho9FsTg4uVgo4DB9wGsKa5erjUA=="], 1622 + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], 1421 1623 1422 - "turbo-linux-arm64": ["turbo-linux-arm64@2.3.3", "", { "os": "linux", "cpu": "arm64" }, "sha512-NmDE/NjZoDj1UWBhMtOPmqFLEBKhzGS61KObfrDEbXvU3lekwHeoPvAMfcovzswzch+kN2DrtbNIlz+/rp8OCg=="], 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=="], 1423 1625 1424 - "turbo-windows-64": ["turbo-windows-64@2.3.3", "", { "os": "win32", "cpu": "x64" }, "sha512-O2+BS4QqjK3dOERscXqv7N2GXNcqHr9hXumkMxDj/oGx9oCatIwnnwx34UmzodloSnJpgSqjl8iRWiY65SmYoQ=="], 1626 + "uint8arrays": ["uint8arrays@3.0.0", "", { "dependencies": { "multiformats": "^9.4.2" } }, "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA=="], 1425 1627 1426 - "turbo-windows-arm64": ["turbo-windows-arm64@2.3.3", "", { "os": "win32", "cpu": "arm64" }, "sha512-dW4ZK1r6XLPNYLIKjC4o87HxYidtRRcBeo/hZ9Wng2XM/MqqYkAyzJXJGgRMsc0MMEN9z4+ZIfnSNBrA0b08ag=="], 1628 + "undici": ["undici@6.22.0", "", {}, "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw=="], 1427 1629 1428 - "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], 1630 + "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], 1429 1631 1430 - "typescript": ["typescript@5.7.2", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg=="], 1632 + "unicorn-magic": ["unicorn-magic@0.3.0", "", {}, "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA=="], 1431 1633 1432 - "typescript-eslint": ["typescript-eslint@8.17.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.17.0", "@typescript-eslint/parser": "8.17.0", "@typescript-eslint/utils": "8.17.0" }, "optionalDependencies": { "typescript": "5.6.3" }, "peerDependencies": { "eslint": "9.16.0" } }, "sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA=="], 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=="], 1433 1635 1434 - "uint8arrays": ["uint8arrays@5.1.0", "", { "dependencies": { "multiformats": "13.3.1" } }, "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww=="], 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=="], 1435 1637 1436 - "undici": ["undici@6.21.0", "", {}, "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw=="], 1638 + "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], 1437 1639 1438 - "undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], 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=="], 1439 1641 1440 - "unplugin": ["unplugin@1.16.0", "", { "dependencies": { "acorn": "8.14.0", "webpack-virtual-modules": "0.6.2" } }, "sha512-5liCNPuJW8dqh3+DM6uNM2EI3MLLpCKp/KY+9pB5M2S2SR2qvvDHhKgBOaTWEbZTAws3CXfB0rKTIolWKL05VQ=="], 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=="], 1441 1643 1442 - "update-browserslist-db": ["update-browserslist-db@1.1.1", "", { "dependencies": { "escalade": "3.2.0", "picocolors": "1.1.1" }, "peerDependencies": { "browserslist": "4.24.2" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A=="], 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=="], 1443 1645 1444 - "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "2.3.1" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="], 1646 + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], 1445 1647 1446 - "use-callback-ref": ["use-callback-ref@1.3.3", "", { "dependencies": { "tslib": "2.8.1" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg=="], 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=="], 1447 1649 1448 - "use-sidecar": ["use-sidecar@1.1.2", "", { "dependencies": { "detect-node-es": "1.1.0", "tslib": "2.8.1" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw=="], 1650 + "vscode-jsonrpc": ["vscode-jsonrpc@8.2.0", "", {}, "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA=="], 1449 1651 1450 - "use-sync-external-store": ["use-sync-external-store@1.2.2", "", { "peerDependencies": { "react": "19.0.0" } }, "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw=="], 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=="], 1451 1653 1452 - "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], 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=="], 1453 1655 1454 - "v8-compile-cache-lib": ["v8-compile-cache-lib@3.0.1", "", {}, "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg=="], 1656 + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], 1455 1657 1456 - "vite": ["vite@6.0.2", "", { "dependencies": { "esbuild": "0.24.0", "postcss": "8.4.49", "rollup": "4.28.0" }, "optionalDependencies": { "@types/node": "22.10.1", "fsevents": "2.3.3", "jiti": "2.4.1", "tsx": "4.19.2", "yaml": "2.6.1" }, "bin": { "vite": "bin/vite.js" } }, "sha512-XdQ+VsY2tJpBsKGs0wf3U/+azx8BBpYRHFAyKm5VeEZNOJZRB63q7Sc8Iup3k0TrN3KO6QgyzFf+opSbfY1y0g=="], 1658 + "vscode-languageserver-types": ["vscode-languageserver-types@3.17.5", "", {}, "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg=="], 1457 1659 1458 1660 "web-streams-polyfill": ["web-streams-polyfill@3.3.3", "", {}, "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw=="], 1459 1661 1460 - "webidl-conversions": ["webidl-conversions@4.0.2", "", {}, "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg=="], 1461 - 1462 1662 "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], 1463 1663 1464 - "whatwg-url": ["whatwg-url@7.1.0", "", { "dependencies": { "lodash.sortby": "4.7.0", "tr46": "1.0.1", "webidl-conversions": "4.0.2" } }, "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg=="], 1465 - 1466 - "which": ["which@2.0.2", "", { "dependencies": { "isexe": "2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1664 + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], 1467 1665 1468 1666 "word-wrap": ["word-wrap@1.2.5", "", {}, "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA=="], 1469 1667 1470 - "wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "6.2.1", "string-width": "5.1.2", "strip-ansi": "7.1.0" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], 1471 - 1472 - "wrap-ansi-cjs": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "4.3.0", "string-width": "4.2.3", "strip-ansi": "6.0.1" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], 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=="], 1473 1669 1474 1670 "wrappy": ["wrappy@1.0.2", "", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="], 1475 1671 1476 - "ws": ["ws@8.18.0", "", { "optionalDependencies": { "bufferutil": "4.0.8" } }, "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw=="], 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=="], 1477 1673 1478 1674 "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], 1479 1675 1480 - "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], 1676 + "y18n": ["y18n@5.0.8", "", {}, "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA=="], 1481 1677 1482 - "yaml": ["yaml@2.6.1", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg=="], 1678 + "yallist": ["yallist@5.0.0", "", {}, "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw=="], 1483 1679 1484 - "yn": ["yn@3.1.1", "", {}, "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q=="], 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=="], 1485 1683 1486 - "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], 1684 + "yargs-parser": ["yargs-parser@22.0.0", "", {}, "sha512-rwu/ClNdSMpkSrUb+d6BRsSkLUq1fmfsY6TOpYzTwvwkg1/NRG85KBy3kq++A8LKQwX6lsu+aWad+2khvuXrqw=="], 1487 1685 1488 - "zod": ["zod@3.23.8", "", {}, "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g=="], 1686 + "yocto-queue": ["yocto-queue@1.2.2", "", {}, "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ=="], 1489 1687 1490 - "@ampproject/remapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.0" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], 1688 + "yoctocolors-cjs": ["yoctocolors-cjs@2.1.3", "", {}, "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw=="], 1491 1689 1492 - "@atcute/oauth-browser-client/nanoid": ["nanoid@5.0.9", "", { "bin": { "nanoid": "bin/nanoid.js" } }, "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q=="], 1690 + "zod": ["zod@3.25.76", "", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="], 1493 1691 1494 1692 "@atproto-labs/simple-store-memory/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], 1495 1693 1496 - "@atproto/common/pino": ["pino@8.21.0", "", { "dependencies": { "atomic-sleep": "1.0.0", "fast-redact": "3.5.0", "on-exit-leak-free": "2.1.2", "pino-abstract-transport": "1.2.0", "pino-std-serializers": "6.2.2", "process-warning": "3.0.0", "quick-format-unescaped": "4.0.4", "real-require": "0.2.0", "safe-stable-stringify": "2.5.0", "sonic-boom": "3.8.1", "thread-stream": "2.7.0" }, "bin": { "pino": "bin.js" } }, "sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q=="], 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=="], 1497 1695 1498 - "@atproto/common-web/uint8arrays": ["uint8arrays@3.0.0", "", { "dependencies": { "multiformats": "9.9.0" } }, "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA=="], 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=="], 1499 1697 1500 - "@atproto/crypto/uint8arrays": ["uint8arrays@3.0.0", "", { "dependencies": { "multiformats": "9.9.0" } }, "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA=="], 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=="], 1501 1699 1502 1700 "@babel/core/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 1503 1701 1504 - "@babel/generator/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.0" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], 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=="], 1505 1705 1506 - "@babel/helper-compilation-targets/lru-cache": ["lru-cache@5.1.1", "", { "dependencies": { "yallist": "3.1.1" } }, "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w=="], 1706 + "@babel/helper-create-class-features-plugin/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 1507 1707 1508 - "@babel/helper-compilation-targets/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], 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=="], 1509 1709 1510 - "@babel/traverse/globals": ["globals@11.12.0", "", {}, "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA=="], 1710 + "@cookware/web/@atcute/bluesky": ["@atcute/bluesky@1.0.15", "", { "peerDependencies": { "@atcute/client": "^1.0.0 || ^2.0.0" } }, "sha512-+EFiybmKQ97aBAgtaD+cKRJER5AMn3cZMkEwEg/pDdWyzxYJ9m1UgemmLdTgI8VrxPufKqdXS2nl7uO7TY6BPA=="], 1511 1711 1512 1712 "@cookware/web/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1513 1713 ··· 1515 1715 1516 1716 "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="], 1517 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 + 1518 1720 "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], 1519 1721 1520 - "@humanfs/node/@humanwhocodes/retry": ["@humanwhocodes/retry@0.3.1", "", {}, "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA=="], 1722 + "@eslint/eslintrc/strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="], 1521 1723 1522 - "@jridgewell/gen-mapping/@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.25", "", { "dependencies": { "@jridgewell/resolve-uri": "3.1.2", "@jridgewell/sourcemap-codec": "1.5.0" } }, "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ=="], 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=="], 1523 1725 1524 - "@noble/curves/@noble/hashes": ["@noble/hashes@1.6.0", "", {}, "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ=="], 1726 + "@opentelemetry/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1525 1727 1526 - "@opentelemetry/instrumentation-dataloader/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1527 1729 1528 - "@opentelemetry/instrumentation-generic-pool/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 1730 + "@opentelemetry/instrumentation-http/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1529 1731 1530 - "@opentelemetry/instrumentation-hapi/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 1732 + "@opentelemetry/instrumentation-pg/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1531 1733 1532 - "@opentelemetry/instrumentation-http/@opentelemetry/core": ["@opentelemetry/core@1.26.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "1.27.0" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-1iKxXXE8415Cdv0yjG3G6hQnB5eVEsJce3QaawX8SjDn0mAS0ZM8fAbZZJD4ajvhC15cePvosSCut404KrIIvQ=="], 1734 + "@opentelemetry/instrumentation-pg/@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="], 1533 1735 1534 - "@opentelemetry/instrumentation-http/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 1736 + "@opentelemetry/resources/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1535 1737 1536 - "@opentelemetry/instrumentation-http/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.27.0", "", {}, "sha512-sAay1RrB+ONOem0OZanAR1ZI/k7yDpnOQSQmTMuGImUQb2y8EbSaCJ94FQluM74xoU03vlb2d2U90hZluL6nQg=="], 1738 + "@opentelemetry/sdk-trace-base/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.28.0", "", {}, "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA=="], 1537 1739 1538 - "@opentelemetry/instrumentation-ioredis/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1539 1741 1540 - "@opentelemetry/instrumentation-koa/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1541 1743 1542 - "@opentelemetry/instrumentation-lru-memoizer/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1543 1745 1544 - "@opentelemetry/instrumentation-mongoose/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1545 1747 1546 - "@opentelemetry/instrumentation-mysql/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1547 1749 1548 - "@opentelemetry/instrumentation-mysql2/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1549 1751 1550 - "@opentelemetry/instrumentation-nestjs-core/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1551 1753 1552 - "@opentelemetry/instrumentation-pg/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1553 1755 1554 - "@opentelemetry/instrumentation-redis-4/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1555 1757 1556 - "@opentelemetry/instrumentation-undici/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.53.0", "", { "dependencies": { "@opentelemetry/api-logs": "0.53.0", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-DMwg0hy4wzf7K73JJtl95m/e0boSoWhH07rfvHvYzQtBD3Bmv0Wc1x733vyZBqmFm8OjJD0/pfiUg1W3JjFX0A=="], 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=="], 1557 1759 1558 - "@prisma/instrumentation/@opentelemetry/instrumentation": ["@opentelemetry/instrumentation@0.52.1", "", { "dependencies": { "@opentelemetry/api-logs": "0.52.1", "@types/shimmer": "1.2.0", "import-in-the-middle": "1.11.3", "require-in-the-middle": "7.4.0", "semver": "7.6.3", "shimmer": "1.2.1" }, "peerDependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw=="], 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=="], 1559 1761 1560 - "@radix-ui/react-collection/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 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=="], 1561 1763 1562 - "@radix-ui/react-collection/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 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=="], 1563 1765 1564 - "@radix-ui/react-dialog/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], 1565 - 1566 - "@radix-ui/react-dialog/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1567 - 1568 - "@radix-ui/react-dialog/@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg=="], 1569 - 1570 - "@radix-ui/react-dialog/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 1571 - 1572 - "@radix-ui/react-dismissable-layer/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], 1573 - 1574 - "@radix-ui/react-dismissable-layer/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1575 - 1576 - "@radix-ui/react-dismissable-layer/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 1577 - 1578 - "@radix-ui/react-dropdown-menu/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], 1579 - 1580 - "@radix-ui/react-dropdown-menu/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1581 - 1582 - "@radix-ui/react-dropdown-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 1583 - 1584 - "@radix-ui/react-focus-scope/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1585 - 1586 - "@radix-ui/react-focus-scope/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 1587 - 1588 - "@radix-ui/react-menu/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], 1589 - 1590 - "@radix-ui/react-menu/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 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=="], 1591 1767 1592 - "@radix-ui/react-menu/@radix-ui/react-popper": ["@radix-ui/react-popper@1.2.1", "", { "dependencies": { "@floating-ui/react-dom": "2.1.2", "@radix-ui/react-arrow": "1.1.1", "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-context": "1.1.1", "@radix-ui/react-primitive": "2.0.1", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-layout-effect": "1.1.0", "@radix-ui/react-use-rect": "1.1.0", "@radix-ui/react-use-size": "1.1.0", "@radix-ui/rect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw=="], 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=="], 1593 1769 1594 - "@radix-ui/react-menu/@radix-ui/react-presence": ["@radix-ui/react-presence@1.1.2", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.1", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg=="], 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=="], 1595 1771 1596 - "@radix-ui/react-menu/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 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=="], 1597 1773 1598 - "@radix-ui/react-popper/@radix-ui/react-context": ["@radix-ui/react-context@1.1.0", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A=="], 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=="], 1599 1775 1600 - "@radix-ui/react-portal/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 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=="], 1601 1777 1602 - "@radix-ui/react-primitive/@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw=="], 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=="], 1603 1779 1604 - "@radix-ui/react-roving-focus/@radix-ui/primitive": ["@radix-ui/primitive@1.1.1", "", {}, "sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA=="], 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=="], 1605 1781 1606 - "@radix-ui/react-roving-focus/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1607 - 1608 - "@radix-ui/react-roving-focus/@radix-ui/react-primitive": ["@radix-ui/react-primitive@2.0.1", "", { "dependencies": { "@radix-ui/react-slot": "1.1.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-sHCWTtxwNn3L3fH8qAfnF3WbUZycW93SM1j3NFDzXBiz8D6F5UTTy8G1+WFEaiCdvCVRJWj6N2R4Xq6HdiHmDg=="], 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=="], 1609 1783 1610 - "@radix-ui/react-slot/@radix-ui/react-compose-refs": ["@radix-ui/react-compose-refs@1.1.1", "", { "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-Y9VzoRDSJtgFMUCoiZBDVo084VQ5hfpXxVE+NgkdNsjiDBByiImMZKKhxMwCbdHvhlENG6a833CbFkOQvTricw=="], 1611 - 1612 - "@radix-ui/react-tooltip/@radix-ui/react-dismissable-layer": ["@radix-ui/react-dismissable-layer@1.1.1", "", { "dependencies": { "@radix-ui/primitive": "1.1.0", "@radix-ui/react-compose-refs": "1.1.0", "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-callback-ref": "1.1.0", "@radix-ui/react-use-escape-keydown": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ=="], 1613 - 1614 - "@radix-ui/react-tooltip/@radix-ui/react-portal": ["@radix-ui/react-portal@1.1.2", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.0", "@radix-ui/react-use-layout-effect": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg=="], 1615 - 1616 - "@radix-ui/react-tooltip/@radix-ui/react-slot": ["@radix-ui/react-slot@1.1.0", "", { "dependencies": { "@radix-ui/react-compose-refs": "1.1.0" }, "optionalDependencies": { "@types/react": "19.0.1" }, "peerDependencies": { "react": "19.0.0" } }, "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw=="], 1617 - 1618 - "@tanstack/router-plugin/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "3.1.3", "braces": "3.0.3", "glob-parent": "5.1.2", "is-binary-path": "2.1.0", "is-glob": "4.0.3", "normalize-path": "3.0.0", "readdirp": "3.6.0" }, "optionalDependencies": { "fsevents": "2.3.3" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], 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=="], 1619 1785 1620 - "@typescript-eslint/eslint-plugin/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 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=="], 1621 1787 1622 - "@typescript-eslint/parser/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 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=="], 1623 1789 1624 - "@typescript-eslint/type-utils/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 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=="], 1625 1791 1626 - "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], 1792 + "@types/pg-pool/@types/pg": ["@types/pg@8.6.1", "", { "dependencies": { "@types/node": "*", "pg-protocol": "*", "pg-types": "^2.2.0" } }, "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w=="], 1627 1793 1628 - "@typescript-eslint/typescript-estree/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1794 + "@typescript-eslint/eslint-plugin/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 1629 1795 1630 - "@typescript-eslint/utils/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1796 + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], 1631 1797 1632 - "abort-controller/event-target-shim": ["event-target-shim@5.0.1", "", {}, "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ=="], 1798 + "@vitejs/plugin-react-swc/@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.0-beta.27", "", {}, "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA=="], 1633 1799 1634 1800 "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1635 1801 1636 - "bundle-require/esbuild": ["esbuild@0.24.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.0", "@esbuild/android-arm": "0.24.0", "@esbuild/android-arm64": "0.24.0", "@esbuild/android-x64": "0.24.0", "@esbuild/darwin-arm64": "0.24.0", "@esbuild/darwin-x64": "0.24.0", "@esbuild/freebsd-arm64": "0.24.0", "@esbuild/freebsd-x64": "0.24.0", "@esbuild/linux-arm": "0.24.0", "@esbuild/linux-arm64": "0.24.0", "@esbuild/linux-ia32": "0.24.0", "@esbuild/linux-loong64": "0.24.0", "@esbuild/linux-mips64el": "0.24.0", "@esbuild/linux-ppc64": "0.24.0", "@esbuild/linux-riscv64": "0.24.0", "@esbuild/linux-s390x": "0.24.0", "@esbuild/linux-x64": "0.24.0", "@esbuild/netbsd-x64": "0.24.0", "@esbuild/openbsd-arm64": "0.24.0", "@esbuild/openbsd-x64": "0.24.0", "@esbuild/sunos-x64": "0.24.0", "@esbuild/win32-arm64": "0.24.0", "@esbuild/win32-ia32": "0.24.0", "@esbuild/win32-x64": "0.24.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ=="], 1802 + "chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1637 1803 1638 - "csso/css-tree": ["css-tree@2.2.1", "", { "dependencies": { "mdn-data": "2.0.28", "source-map-js": "1.2.1" } }, "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA=="], 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=="], 1639 1805 1640 - "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 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=="], 1641 1807 1642 - "glob/minimatch": ["minimatch@10.0.1", "", { "dependencies": { "brace-expansion": "2.0.1" } }, "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ=="], 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=="], 1643 1811 1644 - "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], 1812 + "globby/ignore": ["ignore@7.0.5", "", {}, "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg=="], 1645 1813 1646 1814 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1647 1815 1648 - "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1816 + "p-limit/yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], 1649 1817 1650 - "string-width-cjs/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], 1818 + "postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], 1651 1819 1652 - "string-width-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 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=="], 1653 1821 1654 - "strip-ansi-cjs/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 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=="], 1655 1823 1656 - "sucrase/glob": ["glob@10.4.5", "", { "dependencies": { "foreground-child": "3.3.0", "jackspeak": "3.4.3", "minimatch": "9.0.5", "minipass": "7.1.2", "package-json-from-dist": "1.0.1", "path-scurry": "1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" } }, "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg=="], 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=="], 1657 1825 1658 - "svgo/commander": ["commander@7.2.0", "", {}, "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="], 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=="], 1659 1827 1660 - "tailwindcss/arg": ["arg@5.0.2", "", {}, "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg=="], 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=="], 1661 1829 1662 - "tailwindcss/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "3.1.3", "braces": "3.0.3", "glob-parent": "5.1.2", "is-binary-path": "2.1.0", "is-glob": "4.0.3", "normalize-path": "3.0.0", "readdirp": "3.6.0" }, "optionalDependencies": { "fsevents": "2.3.3" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], 1830 + "readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 1663 1831 1664 - "tailwindcss/jiti": ["jiti@1.21.6", "", { "bin": { "jiti": "bin/jiti.js" } }, "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w=="], 1832 + "recast/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1665 1833 1666 - "tailwindcss/postcss-load-config": ["postcss-load-config@4.0.2", "", { "dependencies": { "lilconfig": "3.1.3", "yaml": "2.6.1" }, "optionalDependencies": { "postcss": "8.4.49", "ts-node": "10.9.2" } }, "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ=="], 1834 + "solid-js/seroval": ["seroval@1.3.2", "", {}, "sha512-RbcPH1n5cfwKrru7v7+zrZvjLurgHhGyso3HTyGtRivGWgYjbOmGuivCQaORNELjNONoK35nj28EoWul9sb1zQ=="], 1667 1835 1668 - "ts-api-utils/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1836 + "solid-js/seroval-plugins": ["seroval-plugins@1.3.3", "", { "peerDependencies": { "seroval": "^1.0" } }, "sha512-16OL3NnUBw8JG1jBLUoZJsLnQq0n5Ua6aHalhJK4fMQkz1lqR7Osz1sA30trBtd9VUDc2NgkuRCn8+/pBwqZ+w=="], 1669 1837 1670 - "ts-node/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 1838 + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], 1671 1839 1672 - "tsup/esbuild": ["esbuild@0.24.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.0", "@esbuild/android-arm": "0.24.0", "@esbuild/android-arm64": "0.24.0", "@esbuild/android-x64": "0.24.0", "@esbuild/darwin-arm64": "0.24.0", "@esbuild/darwin-x64": "0.24.0", "@esbuild/freebsd-arm64": "0.24.0", "@esbuild/freebsd-x64": "0.24.0", "@esbuild/linux-arm": "0.24.0", "@esbuild/linux-arm64": "0.24.0", "@esbuild/linux-ia32": "0.24.0", "@esbuild/linux-loong64": "0.24.0", "@esbuild/linux-mips64el": "0.24.0", "@esbuild/linux-ppc64": "0.24.0", "@esbuild/linux-riscv64": "0.24.0", "@esbuild/linux-s390x": "0.24.0", "@esbuild/linux-x64": "0.24.0", "@esbuild/netbsd-x64": "0.24.0", "@esbuild/openbsd-arm64": "0.24.0", "@esbuild/openbsd-x64": "0.24.0", "@esbuild/sunos-x64": "0.24.0", "@esbuild/win32-arm64": "0.24.0", "@esbuild/win32-ia32": "0.24.0", "@esbuild/win32-x64": "0.24.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ=="], 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=="], 1673 1841 1674 - "tsx/esbuild": ["esbuild@0.23.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.23.1", "@esbuild/android-arm": "0.23.1", "@esbuild/android-arm64": "0.23.1", "@esbuild/android-x64": "0.23.1", "@esbuild/darwin-arm64": "0.23.1", "@esbuild/darwin-x64": "0.23.1", "@esbuild/freebsd-arm64": "0.23.1", "@esbuild/freebsd-x64": "0.23.1", "@esbuild/linux-arm": "0.23.1", "@esbuild/linux-arm64": "0.23.1", "@esbuild/linux-ia32": "0.23.1", "@esbuild/linux-loong64": "0.23.1", "@esbuild/linux-mips64el": "0.23.1", "@esbuild/linux-ppc64": "0.23.1", "@esbuild/linux-riscv64": "0.23.1", "@esbuild/linux-s390x": "0.23.1", "@esbuild/linux-x64": "0.23.1", "@esbuild/netbsd-x64": "0.23.1", "@esbuild/openbsd-arm64": "0.23.1", "@esbuild/openbsd-x64": "0.23.1", "@esbuild/sunos-x64": "0.23.1", "@esbuild/win32-arm64": "0.23.1", "@esbuild/win32-ia32": "0.23.1", "@esbuild/win32-x64": "0.23.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg=="], 1842 + "svgo/commander": ["commander@11.1.0", "", {}, "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ=="], 1675 1843 1676 - "typescript-eslint/typescript": ["typescript@5.6.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw=="], 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=="], 1677 1845 1678 - "uint8arrays/multiformats": ["multiformats@13.3.1", "", {}, "sha512-QxowxTNwJ3r5RMctoGA5p13w5RbRT2QDkoM+yFlqfLiioBp78nhDjnRLvmSBI9+KAqN4VdgOVWM9c0CHd86m3g=="], 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=="], 1679 1847 1680 - "vite/esbuild": ["esbuild@0.24.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.24.0", "@esbuild/android-arm": "0.24.0", "@esbuild/android-arm64": "0.24.0", "@esbuild/android-x64": "0.24.0", "@esbuild/darwin-arm64": "0.24.0", "@esbuild/darwin-x64": "0.24.0", "@esbuild/freebsd-arm64": "0.24.0", "@esbuild/freebsd-x64": "0.24.0", "@esbuild/linux-arm": "0.24.0", "@esbuild/linux-arm64": "0.24.0", "@esbuild/linux-ia32": "0.24.0", "@esbuild/linux-loong64": "0.24.0", "@esbuild/linux-mips64el": "0.24.0", "@esbuild/linux-ppc64": "0.24.0", "@esbuild/linux-riscv64": "0.24.0", "@esbuild/linux-s390x": "0.24.0", "@esbuild/linux-x64": "0.24.0", "@esbuild/netbsd-x64": "0.24.0", "@esbuild/openbsd-arm64": "0.24.0", "@esbuild/openbsd-x64": "0.24.0", "@esbuild/sunos-x64": "0.24.0", "@esbuild/win32-arm64": "0.24.0", "@esbuild/win32-ia32": "0.24.0", "@esbuild/win32-x64": "0.24.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ=="], 1848 + "wrap-ansi/ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], 1681 1849 1682 - "wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], 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=="], 1683 1851 1684 - "wrap-ansi-cjs/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=="], 1852 + "@atproto/common/pino/pino-std-serializers": ["pino-std-serializers@6.2.2", "", {}, "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="], 1685 1853 1686 - "wrap-ansi-cjs/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 1854 + "@atproto/common/pino/process-warning": ["process-warning@3.0.0", "", {}, "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="], 1687 1855 1688 - "@atproto/common/pino/pino-abstract-transport": ["pino-abstract-transport@1.2.0", "", { "dependencies": { "readable-stream": "4.5.2", "split2": "4.2.0" } }, "sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q=="], 1856 + "@atproto/common/pino/sonic-boom": ["sonic-boom@3.8.1", "", { "dependencies": { "atomic-sleep": "^1.0.0" } }, "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg=="], 1689 1857 1690 - "@atproto/common/pino/pino-std-serializers": ["pino-std-serializers@6.2.2", "", {}, "sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA=="], 1858 + "@atproto/common/pino/thread-stream": ["thread-stream@2.7.0", "", { "dependencies": { "real-require": "^0.2.0" } }, "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw=="], 1691 1859 1692 - "@atproto/common/pino/process-warning": ["process-warning@3.0.0", "", {}, "sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ=="], 1860 + "@babel/helper-compilation-targets/lru-cache/yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], 1693 1861 1694 - "@atproto/common/pino/sonic-boom": ["sonic-boom@3.8.1", "", { "dependencies": { "atomic-sleep": "1.0.0" } }, "sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg=="], 1862 + "@cookware/database/@libsql/client/@libsql/core": ["@libsql/core@0.15.15", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-C88Z6UKl+OyuKKPwz224riz02ih/zHYI3Ho/LAcVOgjsunIRZoBw7fjRfaH9oPMmSNeQfhGklSG2il1URoOIsA=="], 1695 1863 1696 - "@atproto/common/pino/thread-stream": ["thread-stream@2.7.0", "", { "dependencies": { "real-require": "0.2.0" } }, "sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw=="], 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=="], 1697 1865 1698 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=="], 1699 1867 ··· 1739 1907 1740 1908 "@esbuild-kit/core-utils/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.18.20", "", { "os": "win32", "cpu": "x64" }, "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ=="], 1741 1909 1742 - "@opentelemetry/instrumentation-dataloader/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1743 - 1744 - "@opentelemetry/instrumentation-generic-pool/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1745 - 1746 - "@opentelemetry/instrumentation-hapi/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1747 - 1748 - "@opentelemetry/instrumentation-http/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1749 - 1750 - "@opentelemetry/instrumentation-ioredis/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1751 - 1752 - "@opentelemetry/instrumentation-koa/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1753 - 1754 - "@opentelemetry/instrumentation-lru-memoizer/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1755 - 1756 - "@opentelemetry/instrumentation-mongoose/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1757 - 1758 - "@opentelemetry/instrumentation-mysql/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1759 - 1760 - "@opentelemetry/instrumentation-mysql2/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1761 - 1762 - "@opentelemetry/instrumentation-nestjs-core/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1763 - 1764 - "@opentelemetry/instrumentation-pg/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1765 - 1766 - "@opentelemetry/instrumentation-redis-4/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1767 - 1768 - "@opentelemetry/instrumentation-undici/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1769 - 1770 - "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.52.1", "", { "dependencies": { "@opentelemetry/api": "1.9.0" } }, "sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A=="], 1771 - 1772 - "@radix-ui/react-menu/@radix-ui/react-popper/@radix-ui/react-arrow": ["@radix-ui/react-arrow@1.1.1", "", { "dependencies": { "@radix-ui/react-primitive": "2.0.1" }, "optionalDependencies": { "@types/react": "19.0.1", "@types/react-dom": "19.0.1" }, "peerDependencies": { "react": "19.0.0", "react-dom": "19.0.0" } }, "sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w=="], 1773 - 1774 - "@tanstack/router-plugin/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1910 + "@eslint/eslintrc/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 1775 1911 1776 - "@tanstack/router-plugin/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "2.3.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], 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=="], 1777 1913 1778 - "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1914 + "@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], 1779 1915 1780 - "bundle-require/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw=="], 1916 + "@opentelemetry/instrumentation-http/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.57.1", "", { "dependencies": { "@opentelemetry/api": "^1.3.0" } }, "sha512-I4PHczeujhQAQv6ZBzqHYEUiggZL4IdSMixtVD3EYqbdrjujE7kRfI5QohjlPoJm8BvenoW5YaTMWRrbpot6tg=="], 1781 1917 1782 - "bundle-require/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.0", "", { "os": "android", "cpu": "arm" }, "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew=="], 1918 + "@prisma/instrumentation/@opentelemetry/instrumentation/@opentelemetry/api-logs": ["@opentelemetry/api-logs@0.53.0", "", { "dependencies": { "@opentelemetry/api": "^1.0.0" } }, "sha512-8HArjKx+RaAI8uEIgcORbZIPklyh1YLjPSBus8hjRmvLi6DeFzgOcdZ7KwPabKj8mXF8dX0hyfAyGfycz0DbFw=="], 1783 1919 1784 - "bundle-require/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.0", "", { "os": "android", "cpu": "arm64" }, "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w=="], 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=="], 1785 1921 1786 - "bundle-require/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.0", "", { "os": "android", "cpu": "x64" }, "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ=="], 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=="], 1787 1923 1788 - "bundle-require/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw=="], 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=="], 1789 1925 1790 - "bundle-require/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA=="], 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=="], 1791 1927 1792 - "bundle-require/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA=="], 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=="], 1793 1929 1794 - "bundle-require/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ=="], 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=="], 1795 1931 1796 - "bundle-require/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.0", "", { "os": "linux", "cpu": "arm" }, "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw=="], 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=="], 1797 1933 1798 - "bundle-require/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g=="], 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=="], 1799 1935 1800 - "bundle-require/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA=="], 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=="], 1801 1937 1802 - "bundle-require/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g=="], 1803 - 1804 - "bundle-require/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA=="], 1805 - 1806 - "bundle-require/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ=="], 1807 - 1808 - "bundle-require/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw=="], 1809 - 1810 - "bundle-require/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g=="], 1811 - 1812 - "bundle-require/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.0", "", { "os": "linux", "cpu": "x64" }, "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA=="], 1813 - 1814 - "bundle-require/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.0", "", { "os": "none", "cpu": "x64" }, "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg=="], 1815 - 1816 - "bundle-require/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q=="], 1817 - 1818 - "bundle-require/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA=="], 1819 - 1820 - "bundle-require/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA=="], 1821 - 1822 - "bundle-require/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw=="], 1823 - 1824 - "bundle-require/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.0", "", { "os": "win32", "cpu": "x64" }, "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA=="], 1938 + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.2", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ=="], 1825 1939 1826 1940 "csso/css-tree/mdn-data": ["mdn-data@2.0.28", "", {}, "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g=="], 1827 1941 1828 - "glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 1942 + "eslint/ajv/json-schema-traverse": ["json-schema-traverse@0.4.1", "", {}, "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg=="], 1829 1943 1830 - "string-width-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 1831 - 1832 - "sucrase/glob/jackspeak": ["jackspeak@3.4.3", "", { "dependencies": { "@isaacs/cliui": "8.0.2" }, "optionalDependencies": { "@pkgjs/parseargs": "0.11.0" } }, "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw=="], 1833 - 1834 - "sucrase/glob/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], 1835 - 1836 - "sucrase/glob/path-scurry": ["path-scurry@1.11.1", "", { "dependencies": { "lru-cache": "10.4.3", "minipass": "7.1.2" } }, "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA=="], 1837 - 1838 - "tailwindcss/chokidar/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "4.0.3" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], 1839 - 1840 - "tailwindcss/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "2.3.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], 1841 - 1842 - "tsup/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw=="], 1843 - 1844 - "tsup/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.0", "", { "os": "android", "cpu": "arm" }, "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew=="], 1845 - 1846 - "tsup/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.0", "", { "os": "android", "cpu": "arm64" }, "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w=="], 1847 - 1848 - "tsup/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.0", "", { "os": "android", "cpu": "x64" }, "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ=="], 1849 - 1850 - "tsup/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw=="], 1851 - 1852 - "tsup/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA=="], 1853 - 1854 - "tsup/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA=="], 1855 - 1856 - "tsup/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ=="], 1857 - 1858 - "tsup/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.0", "", { "os": "linux", "cpu": "arm" }, "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw=="], 1859 - 1860 - "tsup/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g=="], 1861 - 1862 - "tsup/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA=="], 1863 - 1864 - "tsup/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g=="], 1865 - 1866 - "tsup/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA=="], 1867 - 1868 - "tsup/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ=="], 1869 - 1870 - "tsup/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw=="], 1871 - 1872 - "tsup/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g=="], 1873 - 1874 - "tsup/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.0", "", { "os": "linux", "cpu": "x64" }, "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA=="], 1875 - 1876 - "tsup/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.0", "", { "os": "none", "cpu": "x64" }, "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg=="], 1877 - 1878 - "tsup/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q=="], 1879 - 1880 - "tsup/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA=="], 1881 - 1882 - "tsup/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA=="], 1883 - 1884 - "tsup/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw=="], 1944 + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], 1885 1945 1886 - "tsup/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.0", "", { "os": "win32", "cpu": "x64" }, "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA=="], 1946 + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], 1887 1947 1888 - "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.23.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ=="], 1948 + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], 1889 1949 1890 - "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.23.1", "", { "os": "android", "cpu": "arm" }, "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ=="], 1950 + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], 1891 1951 1892 - "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.23.1", "", { "os": "android", "cpu": "arm64" }, "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw=="], 1952 + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], 1893 1953 1894 - "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.23.1", "", { "os": "android", "cpu": "x64" }, "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg=="], 1954 + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], 1895 1955 1896 - "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.23.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q=="], 1956 + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], 1897 1957 1898 - "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.23.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw=="], 1958 + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], 1899 1959 1900 - "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.23.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA=="], 1960 + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], 1901 1961 1902 - "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.23.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g=="], 1962 + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], 1903 1963 1904 - "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.23.1", "", { "os": "linux", "cpu": "arm" }, "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ=="], 1964 + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], 1905 1965 1906 - "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.23.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g=="], 1966 + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], 1907 1967 1908 - "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.23.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ=="], 1968 + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], 1909 1969 1910 - "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw=="], 1970 + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], 1911 1971 1912 - "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q=="], 1972 + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], 1913 1973 1914 - "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.23.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw=="], 1974 + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], 1915 1975 1916 - "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.23.1", "", { "os": "linux", "cpu": "none" }, "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA=="], 1976 + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], 1917 1977 1918 - "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.23.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw=="], 1978 + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], 1919 1979 1920 - "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.23.1", "", { "os": "linux", "cpu": "x64" }, "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ=="], 1980 + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], 1921 1981 1922 - "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.23.1", "", { "os": "none", "cpu": "x64" }, "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA=="], 1982 + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], 1923 1983 1924 - "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.23.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q=="], 1984 + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], 1925 1985 1926 - "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.23.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA=="], 1986 + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], 1927 1987 1928 - "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.23.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA=="], 1988 + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], 1929 1989 1930 - "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.23.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A=="], 1990 + "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.12", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA=="], 1931 1991 1932 - "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.23.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ=="], 1992 + "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.12", "", { "os": "android", "cpu": "arm" }, "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg=="], 1933 1993 1934 - "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.23.1", "", { "os": "win32", "cpu": "x64" }, "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg=="], 1994 + "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.12", "", { "os": "android", "cpu": "arm64" }, "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg=="], 1935 1995 1936 - "vite/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw=="], 1996 + "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.12", "", { "os": "android", "cpu": "x64" }, "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg=="], 1937 1997 1938 - "vite/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.24.0", "", { "os": "android", "cpu": "arm" }, "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew=="], 1998 + "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.12", "", { "os": "darwin", "cpu": "arm64" }, "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg=="], 1939 1999 1940 - "vite/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.24.0", "", { "os": "android", "cpu": "arm64" }, "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w=="], 2000 + "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.12", "", { "os": "darwin", "cpu": "x64" }, "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA=="], 1941 2001 1942 - "vite/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.24.0", "", { "os": "android", "cpu": "x64" }, "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ=="], 2002 + "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.12", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg=="], 1943 2003 1944 - "vite/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.24.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw=="], 2004 + "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.12", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ=="], 1945 2005 1946 - "vite/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.24.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA=="], 2006 + "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.12", "", { "os": "linux", "cpu": "arm" }, "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw=="], 1947 2007 1948 - "vite/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.24.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA=="], 2008 + "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.12", "", { "os": "linux", "cpu": "arm64" }, "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ=="], 1949 2009 1950 - "vite/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.24.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ=="], 2010 + "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.12", "", { "os": "linux", "cpu": "ia32" }, "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA=="], 1951 2011 1952 - "vite/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.24.0", "", { "os": "linux", "cpu": "arm" }, "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw=="], 2012 + "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng=="], 1953 2013 1954 - "vite/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.24.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g=="], 2014 + "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw=="], 1955 2015 1956 - "vite/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.24.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA=="], 2016 + "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.12", "", { "os": "linux", "cpu": "ppc64" }, "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA=="], 1957 2017 1958 - "vite/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g=="], 2018 + "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.12", "", { "os": "linux", "cpu": "none" }, "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w=="], 1959 2019 1960 - "vite/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA=="], 2020 + "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.12", "", { "os": "linux", "cpu": "s390x" }, "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg=="], 1961 2021 1962 - "vite/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.24.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ=="], 2022 + "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.12", "", { "os": "linux", "cpu": "x64" }, "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw=="], 1963 2023 1964 - "vite/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.24.0", "", { "os": "linux", "cpu": "none" }, "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw=="], 2024 + "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.12", "", { "os": "none", "cpu": "x64" }, "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ=="], 1965 2025 1966 - "vite/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.24.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g=="], 2026 + "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.12", "", { "os": "openbsd", "cpu": "x64" }, "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw=="], 1967 2027 1968 - "vite/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.24.0", "", { "os": "linux", "cpu": "x64" }, "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA=="], 2028 + "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.12", "", { "os": "sunos", "cpu": "x64" }, "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w=="], 1969 2029 1970 - "vite/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.24.0", "", { "os": "none", "cpu": "x64" }, "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg=="], 2030 + "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.12", "", { "os": "win32", "cpu": "arm64" }, "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg=="], 1971 2031 1972 - "vite/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.24.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q=="], 2032 + "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.12", "", { "os": "win32", "cpu": "ia32" }, "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ=="], 1973 2033 1974 - "vite/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.24.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA=="], 2034 + "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.12", "", { "os": "win32", "cpu": "x64" }, "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA=="], 1975 2035 1976 - "vite/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.24.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA=="], 2036 + "@cookware/database/@libsql/client/libsql/@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.5.22", "", { "os": "darwin", "cpu": "arm64" }, "sha512-4B8ZlX3nIDPndfct7GNe0nI3Yw6ibocEicWdC4fvQbSs/jdq/RC2oCsoJxJ4NzXkvktX70C1J4FcmmoBy069UA=="], 1977 2037 1978 - "vite/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.24.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw=="], 2038 + "@cookware/database/@libsql/client/libsql/@libsql/darwin-x64": ["@libsql/darwin-x64@0.5.22", "", { "os": "darwin", "cpu": "x64" }, "sha512-ny2HYWt6lFSIdNFzUFIJ04uiW6finXfMNJ7wypkAD8Pqdm6nAByO+Fdqu8t7sD0sqJGeUCiOg480icjyQ2/8VA=="], 1979 2039 1980 - "vite/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.24.0", "", { "os": "win32", "cpu": "x64" }, "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA=="], 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=="], 1981 2041 1982 - "wrap-ansi-cjs/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], 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=="], 1983 2043 1984 - "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 2044 + "@cookware/database/@libsql/client/libsql/@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.5.22", "", { "os": "linux", "cpu": "x64" }, "sha512-kNBHaIkSg78Y4BqAdgjcR2mBilZXs4HYkAmi58J+4GRwDQZh5fIUWbnQvB9f95DkWUIGVeenqLRFY2pcTmlsew=="], 1985 2045 1986 - "@tanstack/router-plugin/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 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=="], 1987 2047 1988 - "sucrase/glob/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "1.0.2" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], 2048 + "@cookware/database/@libsql/client/libsql/@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.5.22", "", { "os": "win32", "cpu": "x64" }, "sha512-Fj0j8RnBpo43tVZUVoNK6BV/9AtDUM5S7DF3LB4qTYg1LMSZqi3yeCneUTLJD6XomQJlZzbI4mst89yspVSAnA=="], 1989 2049 1990 - "sucrase/glob/path-scurry/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], 2050 + "@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="], 1991 2051 1992 - "tailwindcss/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], 2052 + "@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], 1993 2053 } 1994 2054 }
-145
config/dev/atproto/compose.cue
··· 1 - package recipesblue 2 - 3 - version: "3" 4 - 5 - networks: 6 - atproto: 7 - driver: "bridge" 8 - 9 - #pg: { 10 - name: string 11 - embed: { 12 - volumes: "\(name)-pgdata": {} 13 - 14 - services: "\(name)-pg": { 15 - image: "postgres:16" 16 - ports: ["5432"] 17 - environment: { 18 - "POSTGRES_DB": name 19 - "POSTGRES_USER": name 20 - "POSTGRES_PASSWORD": name 21 - } 22 - networks: ["atproto"] 23 - volumes: [ 24 - "\(name)-pgdata:/var/lib/postgresql/data" 25 - ] 26 - healthcheck: { 27 - test: "pg_isready -U \(name)" 28 - interval: "500ms" 29 - timeout: "10s" 30 - retries: 20 31 - } 32 - } 33 - 34 - services: (name): { 35 - depends_on: { 36 - "\(name)-pg": { 37 - condition: "service_healthy" 38 - restart: true 39 - } 40 - } 41 - } 42 - } 43 - } 44 - 45 - (#pg & { name: "plc" }).embed 46 - services: plc: { 47 - image: "ghcr.io/bluesky-social/did-method-plc:plc-c54aea0373e65df0b87f5bc81710007092f539b1" 48 - ports: ["7000:3000"] 49 - restart: "always" 50 - env_file: ["./env/plc.env"] 51 - networks: ["atproto"] 52 - } 53 - 54 - (#pg & { name: "relay"}).embed 55 - services: relay: { 56 - image: "ghcr.io/bluesky-social/indigo:relay-05d91c9bccfe67c0ac981bd17abc03f8954cce4e" 57 - ports: ["7001:3000"] 58 - restart: "always" 59 - env_file: ["./env/relay.env"] 60 - networks: ["atproto"] 61 - volumes: [ 62 - "relay_data:/data", 63 - ] 64 - depends_on: { 65 - plc: condition: "service_started" 66 - } 67 - } 68 - volumes: { 69 - relay_data: {} 70 - } 71 - 72 - services: jetstream: { 73 - image: "ghcr.io/bluesky-social/jetstream:sha-7d7efa58d7f14101a80ccc4f1085953948b7d5de" 74 - ports: ["7002:7002"] 75 - restart: "always" 76 - env_file: ["./env/jetstream.env"] 77 - networks: ["atproto"] 78 - volumes: [ 79 - "jetstream_data:/data", 80 - ] 81 - depends_on: { 82 - plc: condition: "service_started" 83 - relay: condition: "service_started" 84 - } 85 - } 86 - volumes: { 87 - jetstream_data: {} 88 - } 89 - 90 - (#pg & { name: "spicedb"}).embed 91 - services: spicedb_pg_init: { 92 - image: "postgres:16" 93 - restart: "on-failure:3" 94 - command: "psql postgres://spicedb:spicedb@spicedb-pg:5432/spicedb?sslmode=disable -c \"ALTER SYSTEM SET track_commit_timestamp = on;\"" 95 - networks: ["atproto"] 96 - } 97 - services: spicedb_pg_mig: { 98 - image: "authzed/spicedb:latest" 99 - command: "migrate head" 100 - restart: "on-failure" 101 - networks: ["atproto"] 102 - environment: [ 103 - "SPICEDB_DATASTORE_ENGINE=postgres", 104 - "SPICEDB_DATASTORE_CONN_URI=postgres://spicedb:spicedb@spicedb-pg:5432/spicedb?sslmode=disable", 105 - ] 106 - depends_on: spicedb_pg_init: condition: "service_completed_successfully" 107 - } 108 - services: spicedb: { 109 - image: "authzed/spicedb" 110 - command: "serve --http-enabled" 111 - restart: "always" 112 - networks: ["atproto"] 113 - ports: [ 114 - "8080", 115 - "9090", 116 - "50051", 117 - ] 118 - environment: [ 119 - "SPICEDB_GRPC_PRESHARED_KEY=testnet-spicedb", 120 - "SPICEDB_DATASTORE_ENGINE=postgres", 121 - "SPICEDB_DATASTORE_CONN_URI=postgres://spicedb:spicedb@spicedb_pg:5432/spicedb?sslmode=disable", 122 - ] 123 - depends_on: spicedb_pg_mig: condition: "service_completed_successfully" 124 - } 125 - 126 - services: pds: { 127 - image: "ghcr.io/bluesky-social/pds:sha-347a567469edd0ba65ee643d3adeb1119891a9b8" 128 - ports: ["6000:3000"] 129 - restart: "always" 130 - env_file: ["./env/pds.env"] 131 - networks: ["atproto"] 132 - volumes: [ 133 - "pds_data:/app/data", 134 - "pds_blobs:/app/blobs", 135 - ] 136 - depends_on: { 137 - plc: condition: "service_started" 138 - relay: condition: "service_started" 139 - spicedb: condition: "service_started" 140 - } 141 - } 142 - volumes: { 143 - pds_data: {} 144 - pds_blobs: {} 145 - }
-167
config/dev/atproto/compose.yaml
··· 1 - version: "3" 2 - networks: 3 - atproto: 4 - driver: bridge 5 - services: 6 - relay-pg: 7 - image: postgres:16 8 - ports: 9 - - "5432" 10 - environment: 11 - POSTGRES_DB: relay 12 - POSTGRES_USER: relay 13 - POSTGRES_PASSWORD: relay 14 - networks: 15 - - atproto 16 - volumes: 17 - - relay-pgdata:/var/lib/postgresql/data 18 - healthcheck: 19 - test: pg_isready -U relay 20 - interval: 500ms 21 - timeout: 10s 22 - retries: 20 23 - plc: 24 - depends_on: 25 - plc-pg: 26 - condition: service_healthy 27 - restart: true 28 - image: ghcr.io/bluesky-social/did-method-plc:plc-c54aea0373e65df0b87f5bc81710007092f539b1 29 - ports: 30 - - "7000:3000" 31 - restart: always 32 - env_file: 33 - - ./env/plc.env 34 - networks: 35 - - atproto 36 - spicedb-pg: 37 - image: postgres:16 38 - ports: 39 - - "5432" 40 - environment: 41 - POSTGRES_DB: spicedb 42 - POSTGRES_USER: spicedb 43 - POSTGRES_PASSWORD: spicedb 44 - networks: 45 - - atproto 46 - volumes: 47 - - spicedb-pgdata:/var/lib/postgresql/data 48 - healthcheck: 49 - test: pg_isready -U spicedb 50 - interval: 500ms 51 - timeout: 10s 52 - retries: 20 53 - relay: 54 - depends_on: 55 - relay-pg: 56 - condition: service_healthy 57 - restart: true 58 - plc: 59 - condition: service_started 60 - image: ghcr.io/bluesky-social/indigo:relay-05d91c9bccfe67c0ac981bd17abc03f8954cce4e 61 - ports: 62 - - "7001:3000" 63 - restart: always 64 - env_file: 65 - - ./env/relay.env 66 - networks: 67 - - atproto 68 - volumes: 69 - - relay_data:/data 70 - plc-pg: 71 - image: postgres:16 72 - ports: 73 - - "5432" 74 - environment: 75 - POSTGRES_DB: plc 76 - POSTGRES_USER: plc 77 - POSTGRES_PASSWORD: plc 78 - networks: 79 - - atproto 80 - volumes: 81 - - plc-pgdata:/var/lib/postgresql/data 82 - healthcheck: 83 - test: pg_isready -U plc 84 - interval: 500ms 85 - timeout: 10s 86 - retries: 20 87 - spicedb: 88 - depends_on: 89 - spicedb-pg: 90 - condition: service_healthy 91 - restart: true 92 - spicedb_pg_mig: 93 - condition: service_completed_successfully 94 - image: authzed/spicedb 95 - command: serve --http-enabled 96 - restart: always 97 - networks: 98 - - atproto 99 - ports: 100 - - "8080" 101 - - "9090" 102 - - "50051" 103 - environment: 104 - - SPICEDB_GRPC_PRESHARED_KEY=testnet-spicedb 105 - - SPICEDB_DATASTORE_ENGINE=postgres 106 - - SPICEDB_DATASTORE_CONN_URI=postgres://spicedb:spicedb@spicedb_pg:5432/spicedb?sslmode=disable 107 - jetstream: 108 - image: ghcr.io/bluesky-social/jetstream:sha-7d7efa58d7f14101a80ccc4f1085953948b7d5de 109 - ports: 110 - - "7002:7002" 111 - restart: always 112 - env_file: 113 - - ./env/jetstream.env 114 - networks: 115 - - atproto 116 - volumes: 117 - - jetstream_data:/data 118 - depends_on: 119 - plc: 120 - condition: service_started 121 - relay: 122 - condition: service_started 123 - spicedb_pg_init: 124 - image: postgres:16 125 - restart: on-failure:3 126 - command: psql postgres://spicedb:spicedb@spicedb-pg:5432/spicedb?sslmode=disable -c "ALTER SYSTEM SET track_commit_timestamp = on;" 127 - networks: 128 - - atproto 129 - spicedb_pg_mig: 130 - image: authzed/spicedb:latest 131 - command: migrate head 132 - restart: on-failure 133 - networks: 134 - - atproto 135 - environment: 136 - - SPICEDB_DATASTORE_ENGINE=postgres 137 - - SPICEDB_DATASTORE_CONN_URI=postgres://spicedb:spicedb@spicedb-pg:5432/spicedb?sslmode=disable 138 - depends_on: 139 - spicedb_pg_init: 140 - condition: service_completed_successfully 141 - pds: 142 - image: ghcr.io/bluesky-social/pds:sha-347a567469edd0ba65ee643d3adeb1119891a9b8 143 - ports: 144 - - "6000:3000" 145 - restart: always 146 - env_file: 147 - - ./env/pds.env 148 - networks: 149 - - atproto 150 - volumes: 151 - - pds_data:/app/data 152 - - pds_blobs:/app/blobs 153 - depends_on: 154 - plc: 155 - condition: service_started 156 - relay: 157 - condition: service_started 158 - spicedb: 159 - condition: service_started 160 - volumes: 161 - relay-pgdata: {} 162 - spicedb-pgdata: {} 163 - plc-pgdata: {} 164 - relay_data: {} 165 - jetstream_data: {} 166 - pds_data: {} 167 - pds_blobs: {}
-5
config/dev/atproto/env/jetstream.env
··· 1 - # see: https://github.com/bluesky-social/jetstream/blob/main/cmd/jetstream/main.go 2 - 3 - JETSTREAM_DATA_DIR=/data 4 - JETSTREAM_LISTEN_ADDR=:7002 5 - JETSTREAM_LIVENESS_TTL=86400s
-55
config/dev/atproto/env/pds.env
··· 1 - # See more env options in src/config/env.ts 2 - # Hostname - the public domain that you intend to deploy your service at 3 - PDS_HOSTNAME="pds.dev.hayden.moe" 4 - PDS_PORT="3000" 5 - 6 - # Database config - use one or the other 7 - PDS_DATA_DIRECTORY="/app/data" 8 - 9 - # Blobstore - filesystem location to store uploaded blobs 10 - PDS_BLOBSTORE_DISK_LOCATION="/app/blobs" 11 - 12 - # Private keys - these are each expected to be 64 char hex strings (256 bit) 13 - PDS_REPO_SIGNING_KEY_K256_PRIVATE_KEY_HEX="8e187a9a35b6f523c45b7809cbfc50d5fffe139bef7d79818091c04805d35b22b823af8e8cf5ee5541c50b7585c1a8899a9824bf1a41fcfc2b56e64fb85c81b8" 14 - PDS_PLC_ROTATION_KEY_K256_PRIVATE_KEY_HEX="566ad198e537bd4e7dd710ea850bd99a3f42d7489fcb7791b1bc8a4b65a1581b3208104703bc45843682a7d39422be48d68510b482c17232c9ff8b71492b8835" 15 - 16 - # Secrets - update to secure high-entropy strings 17 - PDS_DPOP_SECRET="Z2amAvrUESz1xH8GT3Y+f91zulmA6YKi7I/N/b6ooqw=" 18 - PDS_JWT_SECRET="/qYxrMq3vRWk49WVSBwvzuFX8VvS6QcmMeGOMIOEasc=" 19 - PDS_ADMIN_PASSWORD="t2CbmsPamTkSmFyf39HBeoVcrrqDieFCLL7VcPxfM3I=" 20 - 21 - # Environment - example is for live network 22 - PDS_DID_PLC_URL="https://plc.dev.hayden.moe" 23 - PDS_CRAWLERS="https://relay.dev.hayden.moe" 24 - # PDS_BSKY_APP_VIEW_URL="https://api.bsky.app" 25 - # PDS_BSKY_APP_VIEW_DID="did:web:api.bsky.app" 26 - 27 - # OAuth Provider 28 - PDS_OAUTH_PROVIDER_NAME="Recipes.blue Test PDS" 29 - PDS_OAUTH_PROVIDER_LOGO= 30 - PDS_OAUTH_PROVIDER_PRIMARY_COLOR="#7507e3" 31 - PDS_OAUTH_PROVIDER_ERROR_COLOR= 32 - PDS_OAUTH_PROVIDER_HOME_LINK= 33 - PDS_OAUTH_PROVIDER_TOS_LINK= 34 - PDS_OAUTH_PROVIDER_POLICY_LINK= 35 - PDS_OAUTH_PROVIDER_SUPPORT_LINK= 36 - 37 - # Permission Provider 38 - PDS_SPICEDB_HOST=spicedb:50051 39 - PDS_SPICEDB_TOKEN=CHANGE-ME 40 - PDS_SPICEDB_INSECURE=1 41 - SPICEDB_DATASTORE_ENGINE="postgres" 42 - SPICEDB_DATASTORE_CONN_URI="postgres://spicedb:spicedb@spicedb_pg:5432/spicedb?sslmode=disable" 43 - SPICEDB_POSTGRES_HOST="spicedb_pg" 44 - SPICEDB_POSTGRES_PORT="5432" 45 - SPICEDB_POSTGRES_DB="spicedb" 46 - SPICEDB_POSTGRES_USER="spicedb" 47 - SPICEDB_POSTGRES_PASSWORD="spicedb" 48 - 49 - # Debugging 50 - PDS_DEV_MODE=1 51 - NODE_TLS_REJECT_UNAUTHORIZED=1 52 - LOG_ENABLED=0 53 - LOG_LEVEL=info 54 - PDS_INVITE_REQUIRED=1 55 - PDS_DISABLE_SSRF_PROTECTION=0
-9
config/dev/atproto/env/plc.env
··· 1 - DB_URL=postgres://plc:plc@plc-pg/plc 2 - DB_CREDS_JSON={"url":"postgres://plc:plc@plc-pg/plc"} 3 - DB_MIGRATE_CREDS_JSON={"url":"postgres://plc:plc@plc-pg/plc"} 4 - DB_SCHEMA=public 5 - DEBUG_MODE=1 6 - LOG_ENABLED=true 7 - LOG_LEVEL=debug 8 - ENABLE_MIGRATIONS=true 9 - LOG_DESTINATION=1
-10
config/dev/atproto/env/relay.env
··· 1 - # see: https://github.com/bluesky-social/indigo/blob/main/cmd/relay/main.go 2 - 3 - RELAY_ADMIN_PASSWORD=SpEkZB3OVNKUMWiAZAWfAg== 4 - RELAY_PLC_HOST=https://plc.dev.hayden.moe 5 - DATABASE_URL=postgres://relay:relay@relay_pg:5432/relay?sslmode=disable 6 - RELAY_IP_BIND=:7001 7 - RELAY_PERSIST_DIR=/data 8 - RELAY_DISABLE_REQUEST_CRAWL=1 9 - RELAY_INITIAL_SEQ_NUMBER=1 10 - RELAY_TRUSTED_DOMAINS=
+13 -95
config/dev/caddy/Caddyfile
··· 1 1 { 2 2 storage file_system /data/ 3 3 debug 4 - pki { 5 - ca hayden { 6 - name "Hayden" 7 - } 8 - } 9 4 } 10 5 11 - plc.dev.hayden.moe { 12 - tls { 13 - issuer internal { 14 - ca hayden 15 - } 16 - } 17 - 18 - reverse_proxy http://plc:3000 19 - } 20 - 21 - relay.dev.hayden.moe { 22 - tls { 23 - issuer internal { 24 - ca hayden 25 - } 26 - } 27 - 28 - reverse_proxy http://relay:3000 29 - } 30 - 31 - jetstream.dev.hayden.moe { 32 - tls { 33 - issuer internal { 34 - ca hayden 35 - } 36 - } 37 - 38 - reverse_proxy http://jetstream:3000 39 - } 40 - 41 - pds.dev.hayden.moe, *.pds.dev.hayden.moe { 42 - tls { 43 - issuer internal { 44 - ca hayden 45 - } 46 - } 47 - 48 - reverse_proxy http://pds:3000 49 - } 50 - 51 - api.dev.hayden.moe { 52 - tls { 53 - issuer internal { 54 - ca hayden 55 - } 56 - } 57 - 58 - reverse_proxy http://host.docker.internal:8080 6 + (tls_config) { 7 + tls /tls/dev.crt /tls/dev.key { 8 + ca_root /tls/ca.crt 9 + } 59 10 } 60 11 61 - cookware.dev.hayden.moe { 62 - tls { 63 - issuer internal { 64 - ca hayden 65 - } 66 - } 67 - 68 - reverse_proxy http://host.docker.internal:5173 69 - 70 - handle_path /xrpc/* { 71 - rewrite * /xrpc{uri} 72 - reverse_proxy http://host.docker.internal:8080 73 - } 74 - handle_path /api/* { 75 - rewrite * /api{uri} 76 - reverse_proxy http://host.docker.internal:8080 77 - } 12 + api.local.recipes.blue { 13 + import tls_config 14 + reverse_proxy http://host.docker.internal:8787 78 15 } 79 16 80 - http://*.trycloudflare.com { 17 + local.recipes.blue { 18 + import tls_config 81 19 reverse_proxy http://host.docker.internal:5173 82 20 83 21 handle_path /xrpc/* { 84 22 rewrite * /xrpc{uri} 85 - reverse_proxy http://host.docker.internal:8080 86 - } 87 - handle_path /oauth/* { 88 - rewrite * /oauth{uri} 89 - reverse_proxy http://host.docker.internal:8080 23 + reverse_proxy http://host.docker.internal:8787 90 24 } 91 25 handle_path /api/* { 92 26 rewrite * /api{uri} 93 - reverse_proxy http://host.docker.internal:8080 27 + reverse_proxy http://host.docker.internal:8787 94 28 } 95 29 } 96 30 97 - acme.dev.hayden.moe { 98 - tls { 99 - issuer internal { 100 - ca hayden 101 - } 102 - } 103 - acme_server { 104 - ca hayden 105 - } 106 - } 107 - 108 - turso.dev.hayden.moe { 109 - tls { 110 - issuer internal { 111 - ca hayden 112 - } 113 - } 114 - 31 + turso.local.recipes.blue { 32 + import tls_config 115 33 reverse_proxy http://libsql:8080 116 34 }
+3 -4
config/dev/caddy/compose.yaml
··· 1 1 --- 2 - version: '3' 3 - 4 2 volumes: 5 3 caddy_data: {} 6 4 caddy_config: {} ··· 19 17 - "443:443" 20 18 - "443:443/udp" 21 19 volumes: 22 - - ./Caddyfile:/etc/caddy/Caddyfile 20 + - ./Caddyfile:/etc/caddy/Caddyfile:ro 21 + - ../pki:/tls:ro 23 22 - caddy_data:/data 24 23 - caddy_config:/config 25 24 extra_hosts: 26 25 - "host.docker.internal:host-gateway" 27 26 networks: 28 27 - caddy 29 - - atproto 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
-13
config/dev/libsql/compose.yaml
··· 1 - --- 2 - volumes: 3 - libsql: {} 4 - 5 - services: 6 - libsql: 7 - image: ghcr.io/tursodatabase/libsql-server:latest 8 - environment: 9 - SQLD_NODE: primary 10 - ports: 11 - - 4001:8080 12 - volumes: 13 - - libsql:/var/lib/sqld
+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
+4 -8
docker-compose.yaml
··· 1 1 --- 2 2 include: 3 - - path: config/dev/atproto/compose.yaml 4 - - path: config/dev/caddy/compose.yaml 5 - - path: config/dev/libsql/compose.yaml 3 + - path: config/dev/db/compose.yaml 4 + - path: config/dev/redis/compose.yaml 6 5 7 - services: 8 - tunnel: 9 - image: cloudflare/cloudflared 10 - restart: unless-stopped 11 - command: tunnel --url http://caddy 6 + networks: 7 + recipesblue:
-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 - }
-62
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 - "serves": { "type": "integer" }, 44 - "imageUrl": { "type": "string" }, 45 - "ingredients": { 46 - "type": "array", 47 - "items": { 48 - "type": "ref", 49 - "ref": "blue.recipes.feed.defs#ingredient" 50 - } 51 - }, 52 - "steps": { 53 - "type": "array", 54 - "items": { 55 - "type": "ref", 56 - "ref": "blue.recipes.feed.defs#step" 57 - } 58 - } 59 - } 60 - } 61 - } 62 - }
-59
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 - "serves": { "type": "integer" }, 53 - "description": { "type": "string" }, 54 - "ingredients": { "type": "integer" }, 55 - "steps": { "type": "integer" } 56 - } 57 - } 58 - } 59 - }
-57
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 - "serves": { 36 - "type": "integer", 37 - "description": "The amount of people the recipe will make servings for." 38 - }, 39 - "ingredients": { 40 - "type": "array", 41 - "items": { 42 - "type": "ref", 43 - "ref": "blue.recipes.feed.defs#ingredient" 44 - } 45 - }, 46 - "steps": { 47 - "type": "array", 48 - "items": { 49 - "type": "ref", 50 - "ref": "blue.recipes.feed.defs#step" 51 - } 52 - } 53 - } 54 - } 55 - } 56 - } 57 - }
-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;
-5
libs/database/migrations/0002_redundant_wither.sql
··· 1 - DROP INDEX IF EXISTS "recipes_id_unique";--> statement-breakpoint 2 - DROP INDEX IF EXISTS "recipes_rkey_author_did_unique";--> statement-breakpoint 3 - ALTER TABLE `recipes` ALTER COLUMN "title" TO "title" text;--> statement-breakpoint 4 - CREATE UNIQUE INDEX `recipes_id_unique` ON `recipes` (`id`);--> statement-breakpoint 5 - CREATE UNIQUE INDEX `recipes_rkey_author_did_unique` ON `recipes` (`rkey`,`author_did`);
-6
libs/database/migrations/0003_fixed_peter_parker.sql
··· 1 - DROP INDEX IF EXISTS "recipes_id_unique";--> statement-breakpoint 2 - DROP INDEX IF EXISTS "recipes_rkey_author_did_unique";--> statement-breakpoint 3 - ALTER TABLE `recipes` ALTER COLUMN "title" TO "title" text NOT NULL;--> statement-breakpoint 4 - CREATE UNIQUE INDEX `recipes_id_unique` ON `recipes` (`id`);--> statement-breakpoint 5 - CREATE UNIQUE INDEX `recipes_rkey_author_did_unique` ON `recipes` (`rkey`,`author_did`);--> statement-breakpoint 6 - ALTER TABLE `recipes` ADD `image_ref` text;
-1
libs/database/migrations/0004_left_sersi.sql
··· 1 - ALTER TABLE `recipes` ADD `serves` integer;
+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 - }
-156
libs/database/migrations/meta/0002_snapshot.json
··· 1 - { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "5e0d9054-f192-4db9-8afe-afcabe08e661", 5 - "prevId": "2c6fca6c-38c3-4482-b189-6defabb5f8c8", 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": false, 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 - }
-163
libs/database/migrations/meta/0003_snapshot.json
··· 1 - { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "fa77a98d-2ae1-49d5-ab93-81492dcbdebd", 5 - "prevId": "5e0d9054-f192-4db9-8afe-afcabe08e661", 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 - "image_ref": { 80 - "name": "image_ref", 81 - "type": "text", 82 - "primaryKey": false, 83 - "notNull": false, 84 - "autoincrement": false 85 - }, 86 - "time": { 87 - "name": "time", 88 - "type": "integer", 89 - "primaryKey": false, 90 - "notNull": true, 91 - "autoincrement": false, 92 - "default": 0 93 - }, 94 - "description": { 95 - "name": "description", 96 - "type": "text", 97 - "primaryKey": false, 98 - "notNull": false, 99 - "autoincrement": false 100 - }, 101 - "ingredients": { 102 - "name": "ingredients", 103 - "type": "text", 104 - "primaryKey": false, 105 - "notNull": true, 106 - "autoincrement": false 107 - }, 108 - "steps": { 109 - "name": "steps", 110 - "type": "text", 111 - "primaryKey": false, 112 - "notNull": true, 113 - "autoincrement": false 114 - }, 115 - "created_at": { 116 - "name": "created_at", 117 - "type": "text", 118 - "primaryKey": false, 119 - "notNull": true, 120 - "autoincrement": false 121 - }, 122 - "author_did": { 123 - "name": "author_did", 124 - "type": "text", 125 - "primaryKey": false, 126 - "notNull": true, 127 - "autoincrement": false 128 - } 129 - }, 130 - "indexes": { 131 - "recipes_id_unique": { 132 - "name": "recipes_id_unique", 133 - "columns": [ 134 - "id" 135 - ], 136 - "isUnique": true 137 - }, 138 - "recipes_rkey_author_did_unique": { 139 - "name": "recipes_rkey_author_did_unique", 140 - "columns": [ 141 - "rkey", 142 - "author_did" 143 - ], 144 - "isUnique": true 145 - } 146 - }, 147 - "foreignKeys": {}, 148 - "compositePrimaryKeys": {}, 149 - "uniqueConstraints": {}, 150 - "checkConstraints": {} 151 - } 152 - }, 153 - "views": {}, 154 - "enums": {}, 155 - "_meta": { 156 - "schemas": {}, 157 - "tables": {}, 158 - "columns": {} 159 - }, 160 - "internal": { 161 - "indexes": {} 162 - } 163 - }
-170
libs/database/migrations/meta/0004_snapshot.json
··· 1 - { 2 - "version": "6", 3 - "dialect": "sqlite", 4 - "id": "d6e34451-dba5-4458-8471-ac988decffec", 5 - "prevId": "fa77a98d-2ae1-49d5-ab93-81492dcbdebd", 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 - "image_ref": { 80 - "name": "image_ref", 81 - "type": "text", 82 - "primaryKey": false, 83 - "notNull": false, 84 - "autoincrement": false 85 - }, 86 - "time": { 87 - "name": "time", 88 - "type": "integer", 89 - "primaryKey": false, 90 - "notNull": true, 91 - "autoincrement": false, 92 - "default": 0 93 - }, 94 - "serves": { 95 - "name": "serves", 96 - "type": "integer", 97 - "primaryKey": false, 98 - "notNull": false, 99 - "autoincrement": false 100 - }, 101 - "description": { 102 - "name": "description", 103 - "type": "text", 104 - "primaryKey": false, 105 - "notNull": false, 106 - "autoincrement": false 107 - }, 108 - "ingredients": { 109 - "name": "ingredients", 110 - "type": "text", 111 - "primaryKey": false, 112 - "notNull": true, 113 - "autoincrement": false 114 - }, 115 - "steps": { 116 - "name": "steps", 117 - "type": "text", 118 - "primaryKey": false, 119 - "notNull": true, 120 - "autoincrement": false 121 - }, 122 - "created_at": { 123 - "name": "created_at", 124 - "type": "text", 125 - "primaryKey": false, 126 - "notNull": true, 127 - "autoincrement": false 128 - }, 129 - "author_did": { 130 - "name": "author_did", 131 - "type": "text", 132 - "primaryKey": false, 133 - "notNull": true, 134 - "autoincrement": false 135 - } 136 - }, 137 - "indexes": { 138 - "recipes_id_unique": { 139 - "name": "recipes_id_unique", 140 - "columns": [ 141 - "id" 142 - ], 143 - "isUnique": true 144 - }, 145 - "recipes_rkey_author_did_unique": { 146 - "name": "recipes_rkey_author_did_unique", 147 - "columns": [ 148 - "rkey", 149 - "author_did" 150 - ], 151 - "isUnique": true 152 - } 153 - }, 154 - "foreignKeys": {}, 155 - "compositePrimaryKeys": {}, 156 - "uniqueConstraints": {}, 157 - "checkConstraints": {} 158 - } 159 - }, 160 - "views": {}, 161 - "enums": {}, 162 - "_meta": { 163 - "schemas": {}, 164 - "tables": {}, 165 - "columns": {} 166 - }, 167 - "internal": { 168 - "indexes": {} 169 - } 170 - }
+4 -32
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", 17 - "breakpoints": true 18 - }, 19 - { 20 - "idx": 2, 21 - "version": "6", 22 - "when": 1734642833768, 23 - "tag": "0002_redundant_wither", 24 - "breakpoints": true 25 - }, 26 - { 27 - "idx": 3, 28 - "version": "6", 29 - "when": 1734643156502, 30 - "tag": "0003_fixed_peter_parker", 31 - "breakpoints": true 32 - }, 33 - { 34 - "idx": 4, 35 - "version": "6", 36 - "when": 1735493787990, 37 - "tag": "0004_left_sersi", 7 + "version": "7", 8 + "when": 1764420650497, 9 + "tag": "0000_young_hellcat", 38 10 "breakpoints": true 39 11 } 40 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';
-44
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 - imageRef: text('image_ref'), 25 - time: int('time').notNull().default(0), 26 - serves: int('serves'), 27 - description: text('description'), 28 - ingredients: text('ingredients', { mode: 'json' }).$type<Partial<Ingredient>[]>().notNull(), 29 - steps: text('steps', { mode: 'json' }).$type<Partial<Step>[]>().notNull(), 30 - createdAt: dateIsoText("created_at").notNull(), 31 - authorDid: did("author_did").notNull(), 32 - }, t => ({ 33 - unique_author_rkey: unique().on(t.rkey, t.authorDid), 34 - })); 35 - 36 - export const authStateTable = sqliteTable("auth_state", { 37 - key: text().primaryKey(), 38 - state: text({ mode: 'json' }).$type<NodeSavedState>().notNull(), 39 - }); 40 - 41 - export const authSessionTable = sqliteTable("auth_session", { 42 - key: text().primaryKey(), 43 - session: text({ mode: 'json' }).$type<NodeSavedSession>().notNull(), 44 - });
+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);
-134
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 - imageUrl?: string; 60 - serves?: number; 61 - time?: number; 62 - } 63 - } 64 - 65 - /** Gets recipes from the index. */ 66 - namespace BlueRecipesFeedGetRecipes { 67 - interface Params { 68 - cursor: string; 69 - did?: string; 70 - } 71 - type Input = undefined; 72 - interface Output { 73 - recipes: Result[]; 74 - author?: BlueRecipesFeedDefs.AuthorInfo; 75 - } 76 - interface Result { 77 - [Brand.Type]?: "blue.recipes.feed.getRecipes#result"; 78 - author: BlueRecipesFeedDefs.AuthorInfo; 79 - ingredients: number; 80 - rkey: string; 81 - steps: number; 82 - time: number; 83 - title: string; 84 - description?: string; 85 - imageUrl?: string; 86 - serves?: number; 87 - type?: string; 88 - } 89 - } 90 - 91 - namespace BlueRecipesFeedRecipe { 92 - /** Record containing a Cookware recipe. */ 93 - interface Record { 94 - $type: "blue.recipes.feed.recipe"; 95 - ingredients: BlueRecipesFeedDefs.Ingredient[]; 96 - steps: BlueRecipesFeedDefs.Step[]; 97 - /** 98 - * The title of the recipe. \ 99 - * Maximum string length: 3000 \ 100 - * Maximum grapheme length: 300 101 - */ 102 - title: string; 103 - /** 104 - * The description of the recipe. \ 105 - * Maximum string length: 3000 \ 106 - * Maximum grapheme length: 300 107 - */ 108 - description?: string; 109 - /** The recipe's cover image. */ 110 - image?: At.Blob; 111 - /** The amount of people the recipe will make servings for. */ 112 - serves?: number; 113 - /** The amount of time (in minutes) the recipe takes to complete. */ 114 - time?: number; 115 - } 116 - } 117 - 118 - interface Records { 119 - "blue.recipes.feed.recipe": BlueRecipesFeedRecipe.Record; 120 - } 121 - 122 - interface Queries { 123 - "blue.recipes.feed.getRecipe": { 124 - params: BlueRecipesFeedGetRecipe.Params; 125 - output: BlueRecipesFeedGetRecipe.Output; 126 - }; 127 - "blue.recipes.feed.getRecipes": { 128 - params: BlueRecipesFeedGetRecipes.Params; 129 - output: BlueRecipesFeedGetRecipes.Output; 130 - }; 131 - } 132 - 133 - interface Procedures {} 134 - }
-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';
-15
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 - serves: z.number({ message: 'Serves must be a number.' }), 11 - ingredients: z.array(IngredientObject), 12 - steps: z.array(StepObject), 13 - }); 14 - 15 - 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 }
+1
mise.toml
··· 1 1 [tools] 2 2 bun = "1.3.3" 3 3 cue = "0.15.1" 4 + just = "1.43.1"
+15 -6
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", ··· 10 12 "db:generate": "turbo db:generate", 11 13 "db:migrate": "turbo db:migrate" 12 14 }, 13 - "workspaces": [ 14 - "apps/*", 15 - "libs/*" 16 - ] 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 + } 25 + } 17 26 }