+8
.env.example
+8
.env.example
-76
Caddyfile
-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
+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
+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
+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
+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
-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
+7
-2
apps/api/src/env.d.ts
+45
-84
apps/api/src/index.ts
+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
+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
-5
apps/api/src/recipes/index.ts
+59
-25
apps/api/src/util/api.ts
+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
+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
+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
-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
-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
+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
+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
+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
-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
+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
+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
+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
+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
+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
+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
-4
apps/ingester/src/logger.ts
+11
-6
apps/web/package.json
+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
-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
+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
+
}
+10
-6
apps/web/src/components/query-placeholder.tsx
+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
+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
+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
+2
apps/web/src/components/ui/separator.tsx
-9
apps/web/src/forms/recipe.ts
-9
apps/web/src/forms/recipe.ts
+4
-17
apps/web/src/hooks/use-xrpc.tsx
+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
+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
+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
+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
+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
+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>
+289
-320
apps/web/src/routes/_.(app)/recipes/new.tsx
+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
+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
-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
+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
+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
+2
apps/web/src/state/auth/index.ts
+121
apps/web/src/state/auth/session.tsx
+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
-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
-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
+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
+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
+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
-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
-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
-5
config/dev/atproto/env/jetstream.env
-55
config/dev/atproto/env/pds.env
-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
-9
config/dev/atproto/env/plc.env
-10
config/dev/atproto/env/relay.env
-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
+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
+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
+13
config/dev/db/compose.yaml
-13
config/dev/libsql/compose.yaml
-13
config/dev/libsql/compose.yaml
+29
config/dev/pki/ca.crt
+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
+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
+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
+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
+12
config/dev/redis/compose.yaml
+4
-8
docker-compose.yaml
+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
-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
-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
-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
-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
-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
-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
-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
+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
+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
+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
-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
+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
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
-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
-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
libs/database/migrations/0004_left_sersi.sql
···
1
-
ALTER TABLE `recipes` ADD `serves` integer;
+275
-74
libs/database/migrations/meta/0000_snapshot.json
+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
-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
-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
-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
-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
+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
+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
-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
-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
-2
libs/database/src/index.ts
-44
libs/database/src/schema.ts
-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
+8
libs/database/tsconfig.build.json
+2
-3
libs/database/tsconfig.json
+2
-3
libs/database/tsconfig.json
+1
libs/lexicons/.gitignore
+1
libs/lexicons/.gitignore
···
1
+
tsp-output
+7
libs/lexicons/lex.config.ts
+7
libs/lexicons/lex.config.ts
+20
libs/lexicons/lexicons/feed/defs.tsp
+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
+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
+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
+4
libs/lexicons/lexicons/feed/main.tsp
+48
libs/lexicons/lexicons/feed/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
+
}
+41
libs/lexicons/lexicons/profiles/defs.tsp
+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
+9
libs/lexicons/lexicons/profiles/getProfile.tsp
+3
libs/lexicons/lexicons/profiles/main.tsp
+3
libs/lexicons/lexicons/profiles/main.tsp
+31
libs/lexicons/lexicons/profiles/profile.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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+1
-1
libs/lexicons/scripts/generate.sh
+83
libs/lexicons/scripts/publish.ts
+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
-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
-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
-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
-4
libs/lexicons/src/index.ts
-15
libs/lexicons/src/recipe.ts
-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
+8
libs/lexicons/tsconfig.build.json
+4
-1
libs/lexicons/tsconfig.json
+4
-1
libs/lexicons/tsconfig.json
+3
libs/tsconfig/package.json
+3
libs/tsconfig/package.json
+15
-6
package.json
+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
}