From 1880742d89c080e4abf0c01ac00d2a457e89523e Mon Sep 17 00:00:00 2001 From: willbot Date: Thu, 16 Jul 2026 14:59:12 +0200 Subject: [PATCH 1/5] =?UTF-8?q?feat(composer):=20topology=20scaffold=20?= =?UTF-8?q?=E2=80=94=20module,=20config,=20launcher=20(D1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Express open-chat as a Prisma Composer app without touching its business logic. Installs @prisma/composer + @prisma/composer-prisma-cloud from the pkg.pr.new preview of composer main (ac1e7b1) — npm 0.1.0 predates the streams module and envParam. module.ts wires storage() -> streams() -> pnPostgres(database) -> the chat compute service, matching the slice spec exact-ly: streamsKey binds to the same platform var as the streams module apiKey, appOrigin is env-sourced via envParam, GitHub/Google OAuth secrets are omitted (social sign-in off). src/composer/start.ts is the one structural addition: a launcher that maps Composer secrets/config onto the env names src/server/env.ts already reads, then imports the existing built server entry unchanged, preserving the chdir + client-asset-resolution behavior in src/start.ts/src/chdir.ts. D1 probe (raw connection-URL extraction): pnPostgres(contract) hydrates straight to a typed client with no accessor for the URL underneath it, and (newly discovered) that hydrate throws outright against this preview build because open-chat contract.json predates the bundled @prisma-next toolchain by two minors. The launcher reads both dependency URLs from the private, address-free COMPOSER__URL env var the target stashes before boot(), bypassing service.load() entirely — recorded in FRICTION.md, not hacked around. Also newly found and recorded: the node() build adapters assemble() copies a single file, which cannot carry open-chats multi-file Bun HTML-import client bundle — blocks a real deploy (D3) until fixed upstream or worked around. Verified: bun run typecheck and bun run build both green; Load(module) resolves the full graph with correct secret/param bindings; a boot-time simulation (fabricated COMPOSER_* env, chatService.run() driving the real built launcher) starts the real open-chat server end-to-end. Signed-off-by: willbot Signed-off-by: Will Madden --- FRICTION.md | 211 ++++++++ bun.lock | 1078 ++++++++++++++++++++++++++++++++++++- module.ts | 40 ++ package.json | 5 +- prisma-composer.config.ts | 10 + src/composer/contract.ts | 21 + src/composer/service.ts | 32 ++ src/composer/start.ts | 63 +++ tsconfig.json | 9 +- 9 files changed, 1463 insertions(+), 6 deletions(-) create mode 100644 FRICTION.md create mode 100644 module.ts create mode 100644 prisma-composer.config.ts create mode 100644 src/composer/contract.ts create mode 100644 src/composer/service.ts create mode 100644 src/composer/start.ts diff --git a/FRICTION.md b/FRICTION.md new file mode 100644 index 0000000..8e9154f --- /dev/null +++ b/FRICTION.md @@ -0,0 +1,211 @@ +# Friction log — Composer port (S7) + +Every workaround, missing capability, or illegible error hit while porting +open-chat onto Prisma Composer. Appended by each dispatch (D1–D5); filed as +`prisma/compose` issues in D5. Framework version under test: the pkg.pr.new +preview of `prisma/composer`'s `main` at `ac1e7b1` (`@prisma/composer` + +`@prisma/composer-prisma-cloud`). + +## D1 — Topology scaffold + +### 1. `pnPostgres(contract)` has no raw connection-URL accessor + +**Where hit:** writing the launcher (`src/composer/start.ts`), which needs to +set `DATABASE_URL` for open-chat's own `src/prisma/db.ts` (`new +Pool({ connectionString: env.DATABASE_URL })` + its own +`@prisma-next/postgres/runtime` client — built by app code, not the +framework). + +**Symptom:** `service.load()`'s `db` binding is a fully-typed Prisma Next +client (`Client`); nothing on it, or on `service.load()`/`config()`/ +`secrets()`, exposes the connection string that produced it. + +**Cause:** `pnPostgres(contract)`'s dependency declaration +(`packages/1-prisma-cloud/1-extensions/target/src/prisma-next.ts`) is: + +```ts +dependency({ + type: 'prisma-next', + connection: { params: { url: string() }, hydrate: ({ url }) => buildClient(contract, url) }, + required: contract, +}); +``` + +`hydrate` receives `url` but returns only the built client — the raw string +is discarded. This is deliberate for the common case (ADR-0022: the framework +constructs the typed client so the app never handles a bare connection +string), but open-chat's `db.ts` predates Composer and builds its own +`pg.Pool` + its own separate `@prisma-next/postgres/runtime` client from +`DATABASE_URL` directly — it does not accept a pre-built client object, and +changing that is app business logic (out of scope for this port). + +**Workaround used:** the raw URL does still land in `process.env` — the +target's serializer (`serializer.ts`'s `stash()`) writes every dependency +connection param to an address-free env var +(`COMPOSER__`, here `COMPOSER_DB_URL`) *before* `boot()` runs, +independently of whether anything ever calls `load()`. The launcher reads +`process.env.COMPOSER_DB_URL` directly. This is an internal, undocumented key +convention (not a public accessor) — grep-visible in `serializer.ts`'s +`configKey()`, not in any public type or doc. + +**Recommendation:** either (a) add a public accessor for a `pnPostgres` +dependency's raw connection string (e.g. `pnPostgres.url(contract)` returning +a `postgres()`-shaped `{ url }` binding alongside the typed-client one), for +apps that need to build their own client, or (b) document +`COMPOSER__` as a supported (if discouraged) escape hatch. + +### 2. `pnPostgres(contract)`'s `load()` throws — contract-validation failure against the preview's bundled `@prisma-next` toolchain + +**Where hit:** a boot-time smoke test of the launcher (`chatService.run()` +with fabricated `COMPOSER_*` env vars, see D1 verification), and would have +hit it for real on first deploy had it not been caught here. + +**Symptom:** + +``` +ContractValidationError: Contract structural validation failed: +execution.mutations.defaults[0].ref.namespace must be a string (was missing); +... [8 entries] + at validateSqlContractStructure (.../@prisma-next/sql-contract/dist/validators.mjs) + at deserializeContract (.../@prisma-next/family-sql/dist/sql-contract-serializer-*.mjs) + at postgres (.../@prisma-next/postgres/dist/runtime.mjs) + at hydrateSync (.../@prisma/composer/dist/dist-*.mjs) +``` + +thrown from inside `service.load()`. + +**Cause:** version skew. The pkg.pr.new preview's `@prisma/composer-prisma-cloud` +declares its own `@prisma-next/*` dependencies at `0.15.0`; open-chat is +pinned to `@prisma-next/postgres@^0.13.0`, and `src/prisma/contract.json` was +emitted by that 0.13-vintage `prisma-next` CLI. Bun installs both — the +top-level hoisted `@prisma-next/postgres@0.13.0` (open-chat's own) and a +*nested* `node_modules/@prisma/composer-prisma-cloud/node_modules/@prisma-next/*@0.15.0` +(composer's own) — because the version ranges don't overlap. When +`pnPostgres(contract)`'s `hydrate` calls into the *0.15.0* runtime with +open-chat's *0.13-emitted* `contractJson`, the newer runtime's structural +validator rejects it: `execution.mutations.defaults[].ref.namespace` is a +field the 0.13 emitter didn't write. + +This is not just a TypeScript nominal-branding annoyance (see the comment in +`src/composer/contract.ts` about `AnyPnContract` vs. open-chat's own +`Contract` type) — it is a genuine data-format incompatibility that crashes +at runtime. + +**Compounding effect:** `hydrateSync` (`packages/0-framework/1-core/core/src/hydrate.ts`) +hydrates *every* declared dependency in one synchronous pass with no +per-key laziness or isolation: + +```ts +for (const [name, inputNode] of Object.entries(root.inputs)) { + deps[name] = inputNode.connection.hydrate(values as never); // throws here for "db" +} +``` + +So `db`'s failure poisons the *entire* `load()` call — the launcher cannot +call `service.load()` even just to read the harmless, trivially-hydrated +`streams.url` (`durableStreams()`'s hydrate is the identity function). + +**Workaround used:** the launcher never calls `service.load()`. Both +dependency URLs (`db`, `streams`) are read via the same private +`COMPOSER__URL` env vars as finding #1 — `stash()` writes them +regardless of whether `load()` is ever called, so this sidesteps the crash +entirely. `service.secrets()`/`service.config()` are unaffected (they never +touch `root.inputs`) and are used normally. + +**Recommendation:** (a) real fix — align open-chat's `@prisma-next/*` pins +with whatever version `@prisma/composer-prisma-cloud` depends on (or vice +versa) and regenerate `contract.json`/`contract.d.ts`; deferred here as an +operator-level, whole-app dependency decision, not a topology-wiring one. (b) +framework-side — `hydrateSync`/`hydrate` failing one input shouldn't prevent +reading any other already-hydratable input; consider per-key error +attribution at minimum (the current error gives no indication *which* +dependency failed without reading the stack). (c) `@prisma-next/postgres`'s +runtime validator rejecting a same-`schemaVersion` (`"1"`) contract emitted +two minor versions back is itself worth a `@prisma-next` compat note — +`contract.json`'s own `schemaVersion` field implies forward compatibility +within a schema version that didn't hold here. + +### 3. `node()` build adapter's `assemble()` copies a single file — incompatible with a multi-file Bun static-asset build + +**Where hit:** wiring the launcher's build script and reading +`@prisma/composer/node/control`'s `assemble()` source to understand what the +`entry` field needs to point at. + +**Symptom (projected — not yet exercised; D3 will hit this for real):** +`open-chat`'s own build (`bun run build:chat`) produces **seven** files under +`dist/server/` — the server bundle plus the client bundle Bun's native HTML-import +feature emits alongside it: + +``` +start.js 2.48 MB (entry point) +index-.js 0.98 MB (entry point) +client/index.html 3.10 KB (entry point) +index-.css 31.44 KB (asset) +og-tour-.png 103.0 KB (asset) +tour-app-.webp 0.31 MB (asset) +tour-console-.webp 215.54 KB (asset) +``` + +`@prisma/composer/node/control`'s `assemble()` +(`packages/0-framework/2-authoring/node/src/control.ts`) does: + +```ts +const entryFile = path.basename(entryPath); +const bundleDir = path.join(workDir, 'bundle'); +await fs.promises.mkdir(bundleDir, { recursive: true }); +await fs.promises.copyFile(entryPath, path.join(bundleDir, entryFile)); +``` + +— a single `fs.copyFile`, not a directory copy. Only the one file the `entry` +field names reaches the deploy bundle; the other six (including the client +HTML/JS/CSS/images the chat UI actually serves) are silently dropped. + +**Cause:** the `node` build type's `assemble()` assumes a single-file +runnable. `@prisma/composer/nextjs`'s `assemble()` +(`packages/0-framework/2-authoring/nextjs/src/control.ts`) does the opposite — +a recursive `fs.promises.cp(standaloneRoot, bundleDir, { recursive: true })` +— because Next's standalone output is inherently multi-file. `node` has no +equivalent. + +**Not worked around in D1** (deploying is D3's job; this dispatch only had to +produce a build the `node()` adapter's `entry` field type-checks against). +Recorded now because it was discovered while wiring the build, and it *will* +block D3 as written: pointing `entry` at `dist/composer/start.js` (which +dynamically imports `dist/server/start.js` at runtime, see `start.ts`) only +carries `dist/composer/start.js` into the deploy artifact — the dynamically +imported `dist/server/start.js` and its sibling client assets never arrive. + +**Recommendation:** extend `node`'s `assemble()` to copy the entry's sibling +files (mirroring `nextjs`'s directory copy, or reading a manifest such as +Bun's own build metadata) — or document that a `node`-built service must ship +a genuinely single-file bundle, which open-chat's HTML-import-based client +delivery cannot do without moving asset embedding into app code (out of +scope: "we don't bundle the app's code"). + +### 4. `bun build --external` doesn't match a dynamic import's as-written relative specifier + +**Where hit:** wiring `build:launcher`'s bundling of `src/composer/start.ts`. + +**Symptom:** `bun build --external "../../dist/server/start.js"` (the exact +string as written in the `await import(...)` call) has no effect — bun still +resolves and inlines the target, duplicating the ~2.5 MB already-built app +bundle into the launcher's own output (and breaking `chdir.ts`'s +`import.meta.dir`-relative asset resolution, since the re-bundled code's +`import.meta.dir` would then point at `dist/composer/`, not `dist/server/`). + +**Cause:** bun's `--external` glob matching (for a dynamic import) matches +against the path *relative to the build's working directory*, not the +specifier as written relative to the importing file. + +**Workaround used:** `--external './dist/server/start.js'` (or a +`*/dist/server/start.js'` glob) — either matches; documented in +`package.json`'s `build:launcher` script. + +## Referenced elsewhere + +The following are recorded in the slice spec's "Chosen design" and +"Pre-investigated edge cases" rather than duplicated here: cron not +applicable (no scheduled work in open-chat), OAuth secrets omitted (social +sign-in off), `DURABLE_STREAMS_R2_*` unsuppliable (local-disk fallback), +PRO-218 (Compute ingress buffers SSE), the `APP_ORIGIN` two-step deploy +(PRO-211). diff --git a/bun.lock b/bun.lock index 223d5f2..a9cca43 100644 --- a/bun.lock +++ b/bun.lock @@ -6,6 +6,8 @@ "name": "open-chat", "dependencies": { "@prisma-next/postgres": "^0.13.0", + "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", + "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", "@prisma/streams-local": "0.1.11", "@prisma/streams-server": "0.1.11", "@tanstack/db": "0.6.8", @@ -43,10 +45,52 @@ "@prisma/streams-server@0.1.11": "patches/@prisma%2Fstreams-server@0.1.11.patch", }, "packages": { + "@alcalzone/ansi-tokenize": ["@alcalzone/ansi-tokenize@0.2.5", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw=="], + + "@alchemy.run/node-utils": ["@alchemy.run/node-utils@0.0.5", "", {}, "sha512-5agdhQxWBodxa5hDRyjnpx91RTU3g+qd5fxYB7uNDCaOzB0XC47UU/KHR6zf6jhz/NXf61gJS+vhYwn8NHeRoQ=="], + "@ark/schema": ["@ark/schema@0.56.0", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ECg3hox/6Z/nLajxXqNhgPtNdHWC9zNsDyskwO28WinoFEnWow4IsERNz9AnXRhTZJnYIlAJ4uGn3nlLk65vZA=="], "@ark/util": ["@ark/util@0.56.0", "", {}, "sha512-BghfRC8b9pNs3vBoDJhcta0/c1J1rsoS1+HgVUreMFPdhz/CRAKReAu57YEllNaSy98rWAdY1gE+gFup7OXpgA=="], + "@aws-crypto/crc32": ["@aws-crypto/crc32@5.2.0", "", { "dependencies": { "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "tslib": "^2.6.2" } }, "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg=="], + + "@aws-crypto/util": ["@aws-crypto/util@5.2.0", "", { "dependencies": { "@aws-sdk/types": "^3.222.0", "@smithy/util-utf8": "^2.0.0", "tslib": "^2.6.2" } }, "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ=="], + + "@aws-sdk/core": ["@aws-sdk/core@3.975.3", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@aws-sdk/xml-builder": "^3.972.36", "@aws/lambda-invoke-store": "^0.3.0", "@smithy/core": "^3.29.4", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "bowser": "^2.11.0", "tslib": "^2.6.2" } }, "sha512-7ur3kCKuvPLqlsZ2XlvnNBVQ7KkpSu6Y6dOTwSPHLrFpTEfZM8isLBJc4cgv96WB7GifeVM436mpycwxBd2vEA=="], + + "@aws-sdk/credential-provider-cognito-identity": ["@aws-sdk/credential-provider-cognito-identity@3.972.58", "", { "dependencies": { "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-s5uoABv5eOzuH/S+XngHjHSrY8mK0UTBUFs8pm1ynBNuxXmYp176zarDyxN9lUS3Rry0wjzNvJUV09QROaO98g=="], + + "@aws-sdk/credential-provider-env": ["@aws-sdk/credential-provider-env@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-Ny5e4Mfh3QPmiAc0AiUe+cbTXDlxkU3Rc+EpWOfyWeWEy6yp7Fa1KmfNeCc+1a8by9zQ9gtohmiQUkMPScF3ng=="], + + "@aws-sdk/credential-provider-http": ["@aws-sdk/credential-provider-http@3.972.61", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-8jAjgStl5Ytq4+HF3X/9f+EmRinaRbGRRtQGktlPfBRVx73H+R1y48vIeXerQtYGFaUqkEp3fT6jP854rVO2yQ=="], + + "@aws-sdk/credential-provider-ini": ["@aws-sdk/credential-provider-ini@3.973.3", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-login": "^3.972.65", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-WpuqYX4gGkx++fCTSWE8+41JzkZVcrI50SH48Ml4CsG1pyuHKyMmpw/FixBHDrmjoQ553PmeCLa/fZIcst+WyA=="], + + "@aws-sdk/credential-provider-login": ["@aws-sdk/credential-provider-login@3.972.65", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-xr9rgjYEdmC2Tpg2lwt9o+nOEaK9Qpd+dBjzrVCuWWyQfvhO91Ezu0Hh9ts2VUxOZxmS/k5T9msa34e4R1bnrQ=="], + + "@aws-sdk/credential-provider-node": ["@aws-sdk/credential-provider-node@3.972.69", "", { "dependencies": { "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.3", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-wbJGGesd0Tl18bmUcbj1xJ+e7CpuRJ6PIpMywLFuUttGy615lua87cJ0EA8pFpY/QgPuUXbnupWBtSPJ9tyZhg=="], + + "@aws-sdk/credential-provider-process": ["@aws-sdk/credential-provider-process@3.972.59", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-DlZF2/MhLlatDdlrIy3CUCpfdbLrKx+3SMjVo+WyHnPpwzkc/M3vwAHw4OVJf7DMvO+4vfRqSCMc/E9I1auN0g=="], + + "@aws-sdk/credential-provider-sso": ["@aws-sdk/credential-provider-sso@3.973.3", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/token-providers": "3.1088.0", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-hmdDHoy2G5Es2e8IgelNMYUuSQI6uCIAKZMJ2u2PdKDhxvbk1uWD/g4+R7R5c/tJfKEB1+KjjWiaoCr/S+ZTiQ=="], + + "@aws-sdk/credential-provider-web-identity": ["@aws-sdk/credential-provider-web-identity@3.972.65", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-gHQb/Kt0chjk/JQDa/GJDqmAvEuVn8n7z10wK2h0LFM9TUDRkohgOO4aEF+s2sBLM0br7Cl5W6P7phgjrrJvLQ=="], + + "@aws-sdk/credential-providers": ["@aws-sdk/credential-providers@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/credential-provider-cognito-identity": "^3.972.58", "@aws-sdk/credential-provider-env": "^3.972.59", "@aws-sdk/credential-provider-http": "^3.972.61", "@aws-sdk/credential-provider-ini": "^3.973.3", "@aws-sdk/credential-provider-login": "^3.972.65", "@aws-sdk/credential-provider-node": "^3.972.69", "@aws-sdk/credential-provider-process": "^3.972.59", "@aws-sdk/credential-provider-sso": "^3.973.3", "@aws-sdk/credential-provider-web-identity": "^3.972.65", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/credential-provider-imds": "^4.4.9", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-PUlCtB3u7bg/IJmS1jihqqLDBAeZU48OQ9lBg5IW1+tGOVlQ+zqxAFSSryqynKPC5bYlau5tO3qskl/oD8K2MA=="], + + "@aws-sdk/nested-clients": ["@aws-sdk/nested-clients@3.997.33", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/signature-v4-multi-region": "^3.996.41", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/fetch-http-handler": "^5.6.6", "@smithy/node-http-handler": "^4.9.6", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-dVZOroI/r3/ENvqNGgjMPul+jjlz9GddfVusgTXlVjfZj5isibOxecLkGQbRPp8XOuX+RAfjXLFgPkD1JS5xrw=="], + + "@aws-sdk/signature-v4-multi-region": ["@aws-sdk/signature-v4-multi-region@3.996.41", "", { "dependencies": { "@aws-sdk/types": "^3.974.2", "@smithy/signature-v4": "^5.6.5", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-QMUytg+FQMGouc8gHS00KoYih3+N6cqmVI/pQGOIo7Nr7OpQaiXjSYOuL+vsPZ1tymY4LAQ8MYcHJmws5LRxng=="], + + "@aws-sdk/token-providers": ["@aws-sdk/token-providers@3.1088.0", "", { "dependencies": { "@aws-sdk/core": "^3.975.3", "@aws-sdk/nested-clients": "^3.997.33", "@aws-sdk/types": "^3.974.2", "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-4ObatWt2qpJg5FBk4LOOKrTQYzaqeewAtdO3r9ZO8lH9YqLtpTzLyIdy0mJ+nVdfYOnqISkKNfmzP22bNDhwyw=="], + + "@aws-sdk/types": ["@aws-sdk/types@3.974.2", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA=="], + + "@aws-sdk/xml-builder": ["@aws-sdk/xml-builder@3.972.36", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-RdGmS1GLrtaTOLE1ElSluMldNrpk9Emq6uYs8SS8iHlu5xTAmM9rRkM91o48+rIRryBtyO9t+uLYCoMG6jVMVA=="], + + "@aws/lambda-invoke-store": ["@aws/lambda-invoke-store@0.3.0", "", {}, "sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ=="], + "@better-auth/core": ["@better-auth/core@1.6.16", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.39.0", "@standard-schema/spec": "^1.1.0", "zod": "^4.3.6" }, "peerDependencies": { "@better-auth/utils": "0.4.1", "@better-fetch/fetch": "1.2.2", "@cloudflare/workers-types": ">=4", "@opentelemetry/api": "^1.9.0", "better-call": "1.3.6", "jose": "^6.1.0", "kysely": "^0.28.5 || ^0.29.0", "nanostores": "^1.0.1" }, "optionalPeers": ["@cloudflare/workers-types", "@opentelemetry/api"] }, "sha512-a0+ZNaaYYxOdFXFXmOE36TgtYN8QDzSYDozaAH0zsiWB0oyljsENyCxHJSekysISftb0rFpVXNdw525aEAOa6w=="], "@better-auth/drizzle-adapter": ["@better-auth/drizzle-adapter@1.6.16", "", { "peerDependencies": { "@better-auth/core": "^1.6.16", "@better-auth/utils": "0.4.1", "drizzle-orm": "^0.45.2" }, "optionalPeers": ["drizzle-orm"] }, "sha512-AZjswadpR7zlQduj3fRSsu1R5ldQRR9AeFqoxXRI4colrQhevOVY+tJr8RTJv9Nh18e9FMYDXUju2GX+QWHDzg=="], @@ -69,16 +113,54 @@ "@clack/prompts": ["@clack/prompts@1.5.1", "", { "dependencies": { "@clack/core": "1.4.1", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-zccHj2z2oCCO4yrDiRSlFOxWerGqRiysP7a5jPK6uoI9URKAquwY42Dd/iUP8JWHxEzdRe4TlbvZCo8z1/mhrw=="], + "@cloudflare/unenv-preset": ["@cloudflare/unenv-preset@2.16.1", "", { "peerDependencies": { "unenv": "2.0.0-rc.24", "workerd": ">1.20260305.0 <2.0.0-0" }, "optionalPeers": ["workerd"] }, "sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw=="], + + "@cloudflare/workerd-darwin-64": ["@cloudflare/workerd-darwin-64@1.20260617.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-jWwmgEVVWbsHNrLSNXzwjJaH90VzRxq1cWkQFUidxyeUPnMxemeNE8I9qFAfrpzGgE11e9sKDcE3ettJW08swQ=="], + + "@cloudflare/workerd-darwin-arm64": ["@cloudflare/workerd-darwin-arm64@1.20260617.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LHH7b565g9znfCUOkwbec6FG2rmRbsgCy6aJiU9KN662mNheWl5sw/iKleiFSiljPKQQP3HkjnC/NSkdgi/aSA=="], + + "@cloudflare/workerd-linux-64": ["@cloudflare/workerd-linux-64@1.20260617.1", "", { "os": "linux", "cpu": "x64" }, "sha512-FMnaAKXe4Cfd8TQurCVd9fs2XQVBFRCsP+Id/SRdUv89MlwYu9zXfoyx6BxM+brPTIUK38SHbo8iaxiwzLi9JQ=="], + + "@cloudflare/workerd-linux-arm64": ["@cloudflare/workerd-linux-arm64@1.20260617.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-MRoifFYcqbxxIIQy7PqO5tFY/qPFSnjXzakWl0sO93l+HLyG35jRAgOi6jfqa4kBxc7gKKtH861DcewjxUfkjA=="], + + "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260617.1", "", { "os": "win32", "cpu": "x64" }, "sha512-rgBV9wQrv0OSKgCTTbhFUFY3sLGNANZ88aqaLvtmEn2gmbFVb1J4PDGochVUdB7NSEp4D/ghHva6/8SZmbONpw=="], + "@cloudflare/workers-types": ["@cloudflare/workers-types@4.20260610.1", "", {}, "sha512-Mk/f3lUygeIHzQ4HnJjU/JvGg/kllgp9gISty9nylHE/2M2MFeKO+hgAKSgiPpmwUbuhewdYGgqFGgT/ADK0/g=="], + "@distilled.cloud/aws": ["@distilled.cloud/aws@0.27.0", "", { "dependencies": { "@aws-crypto/crc32": "^5.2.0", "@aws-crypto/util": "^5.2.0", "@aws-sdk/credential-providers": "^3.994.0", "@aws-sdk/types": "^3.973.1", "@distilled.cloud/core": "0.27.0", "@smithy/shared-ini-file-loader": "^4.4.3", "@smithy/types": "^4.12.0", "@smithy/util-base64": "^4.3.0", "aws4fetch": "^1.0.20", "fast-xml-parser": "^5.3.2" }, "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-3yjwnQ15XJJcDuNpeRD0INSLV4tQOulo5zppdp7juT6ODcDCxLBkx6QeVWlxCGPVqKed2LDBxHzVDj+8AxaIjw=="], + + "@distilled.cloud/axiom": ["@distilled.cloud/axiom@0.27.0", "", { "dependencies": { "@distilled.cloud/core": "0.27.0" }, "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-wVTeDihVSsr3TB9glQ/6DpHZd3L/OoG6oTDMLVZagEYuvohE6BGBbQ6pdj1XaUtnNY1x+ghTAvL/J17tds5Ukw=="], + + "@distilled.cloud/cloudflare": ["@distilled.cloud/cloudflare@0.27.0", "", { "dependencies": { "@distilled.cloud/core": "0.27.0" }, "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-sm4A/XEmN5/Bg7Tpe7C2U59wTpWf4uceOF/NnL8HqB250CWXftG2xGMxRidwFP0TRk41tfp5AkPjP8HtdxcAZw=="], + + "@distilled.cloud/cloudflare-rolldown-plugin": ["@distilled.cloud/cloudflare-rolldown-plugin@0.11.3", "", { "dependencies": { "@cloudflare/unenv-preset": "^2.16.0", "magic-string": "^0.30.21", "unenv": "^2.0.0-rc.24" }, "peerDependencies": { "rolldown": "^1.0.1", "vite": "^7.0.0 || ^8.0.0" }, "optionalPeers": ["rolldown", "vite"] }, "sha512-yr4ZzZFwXcsXz9nadNCJ6TAOMFOFvW0zOn/ynhYXdZ5DCxUKya871pTphY3WFU5A9ouSfKnlZ/3FXn0DZr6RZQ=="], + + "@distilled.cloud/cloudflare-runtime": ["@distilled.cloud/cloudflare-runtime@0.11.3", "", { "dependencies": { "@alchemy.run/node-utils": "^0.0.5", "workerd": "1.20260617.1" }, "peerDependencies": { "@distilled.cloud/cloudflare": "^0.24.5", "@effect/platform-bun": ">=4.0.0-beta.78 || >=4.0.0", "@effect/platform-node": ">=4.0.0-beta.78 || >=4.0.0", "effect": ">=4.0.0-beta.78 || >=4.0.0" }, "optionalPeers": ["@effect/platform-bun", "@effect/platform-node"] }, "sha512-CdA0gRWudvrsE4PSFSYYSjrQWSW6Z+Y1ACG7H9GmdWKqmEzhdY5xxg5Mr6Nt2JrIOGInDZuZRqprhAus6nmTeA=="], + + "@distilled.cloud/cloudflare-vite-plugin": ["@distilled.cloud/cloudflare-vite-plugin@0.11.3", "", { "dependencies": { "@distilled.cloud/cloudflare-rolldown-plugin": "0.11.3" }, "peerDependencies": { "@distilled.cloud/cloudflare": "^0.24.5", "@distilled.cloud/cloudflare-runtime": "0.11.3", "@effect/platform-bun": ">=4.0.0-beta.78 || >=4.0.0", "@effect/platform-node": ">=4.0.0-beta.78 || >=4.0.0", "effect": ">=4.0.0-beta.78 || >=4.0.0", "vite": "^7.0.0 || ^8.0.0" }, "optionalPeers": ["@effect/platform-bun", "@effect/platform-node"] }, "sha512-XRBtyFtk2cV3YKgqBBQ0YQfjf0fF57TAmHAuttA1Ed2fcIIRkUFaKdbItnRSdk8WCdEIhM41ZxCg4fqBEXw/3w=="], + + "@distilled.cloud/core": ["@distilled.cloud/core@0.27.0", "", { "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-Ak5e9k14i8PZCEOGlY64famKs9rFjRxpXnnhWRsLIESCOI6YRIggY9BWbHVBRQcRrGWm4rukR9Zmym/irfSrCA=="], + + "@distilled.cloud/neon": ["@distilled.cloud/neon@0.27.0", "", { "dependencies": { "@distilled.cloud/core": "0.27.0" }, "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-KaOmXjvBb+Xtku1BQCYbxiB8TynuHXWnXSLaXL0uyntkTz1a/1U7ePQKTrfbKBdGL4r6p5hrV1PUO48Rg7eqKg=="], + + "@distilled.cloud/planetscale": ["@distilled.cloud/planetscale@0.27.0", "", { "dependencies": { "@distilled.cloud/core": "0.27.0" }, "peerDependencies": { "effect": ">=4.0.0-beta.66 || >=4.0.0" } }, "sha512-Yb5Anj0QflXs1PHQh5U7KmxwbaXBUf4tPukZ/4dkhcT6/cer76qFv+N+W6wc6mX8LuvLEyJvYWQKJMzXv7/dXQ=="], + "@durable-streams/client": ["@durable-streams/client@0.2.6", "", { "dependencies": { "@microsoft/fetch-event-source": "^2.0.1", "fastq": "^1.19.1" }, "bin": { "intent": "bin/intent.js" } }, "sha512-uHKKbWpsKLhFMeGjG0PgM6LXE3oEIi7FHKlJZkmYGxcqd4Yjjd/QEvnQnDzteRP4Av1uJVM8qjTL7kfKsgeS/w=="], + "@effect/vitest": ["@effect/vitest@4.0.0-beta.98", "", { "peerDependencies": { "effect": "^4.0.0-beta.98", "vitest": "^3.0.0 || ^4.0.0" } }, "sha512-uXRPuN8Y6v43/OVmQwKOd/VFDh+dipaxGKdWPr1bdnM+4bl8NZlYYRJi5omgXLFZ6ZbleduXKcmLM3NeePe69w=="], + "@electric-sql/pglite": ["@electric-sql/pglite@0.4.3", "", {}, "sha512-ichuWTgtd4mOM1G4SpyGJa5trT03lWbMypDV0fUXUCXg5hiHqVAz/bZyV68NqmkLB7WcYmj1RMJVSp8HV/v/ZQ=="], "@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.1.3", "", { "peerDependencies": { "@electric-sql/pglite": "0.4.3" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-LAciWM0M1dCL8hlsxu2venbVZcdxema0BtDfpWYVqr+Y468UADw0pFWidhKw1M8sfJ8rdLT71tjMmnirf/IZRQ=="], "@electric-sql/pglite-tools": ["@electric-sql/pglite-tools@0.3.3", "", { "peerDependencies": { "@electric-sql/pglite": "0.4.3" } }, "sha512-AlzLJTRJ8+UFgK8CmxIpyIpJ0+YaFw02IiOSdYrqxwPXdSyeIShz8aa9Tq+tYFXdPwcaMp/Fc80mQZ1dkOQ/wg=="], + "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="], + + "@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="], + + "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="], + "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA=="], "@esbuild/android-arm": ["@esbuild/android-arm@0.28.0", "", { "os": "android", "cpu": "arm" }, "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ=="], @@ -133,16 +215,100 @@ "@hono/node-server": ["@hono/node-server@1.19.14", "", { "peerDependencies": { "hono": "^4" } }, "sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw=="], + "@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.5", "", {}, "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og=="], + "@kurkle/color": ["@kurkle/color@0.3.4", "", {}, "sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w=="], + "@libsql/client": ["@libsql/client@0.17.4", "", { "dependencies": { "@libsql/core": "^0.17.4", "@libsql/hrana-client": "^0.10.0", "js-base64": "^3.7.5", "libsql": "^0.5.28", "promise-limit": "^2.7.0" } }, "sha512-lYayFWasDV78A+TjlEhr6ubb3odBV6OHjb+wdp8VQcyWWAEIjuwbCHaraEUS4m4yWoo0BvZo96It4VdzZRmRWw=="], + + "@libsql/core": ["@libsql/core@0.17.4", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-LqF9gIvnJ38nmAH1y/ChizHqDO/MO1wLgA96XrraulEEbqXxLjleSH92YWTolbuJKgPUmGu4aJk9W3UnAcxLOQ=="], + + "@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.5.29", "", { "os": "darwin", "cpu": "arm64" }, "sha512-K+2RIB1OGFPYQbfay48GakLhqf3ArcbHqPFu7EZiaUcRgFcdw8RoltsMyvbj5ix2fY0HV3Q3Ioa/ByvQdaSM0A=="], + + "@libsql/darwin-x64": ["@libsql/darwin-x64@0.5.29", "", { "os": "darwin", "cpu": "x64" }, "sha512-OtT+KFHsKFy1R5FVadr8FJ2Bb1mghtXTyJkxv0trocq7NuHntSki1eUbxpO5ezJesDvBlqFjnWaYYY516QNLhQ=="], + + "@libsql/hrana-client": ["@libsql/hrana-client@0.10.0", "", { "dependencies": { "@libsql/isomorphic-ws": "^0.1.5", "js-base64": "^3.7.5" } }, "sha512-OoA4EMqRAC7kn7V2P6EQqRcpZf2W+AjsNIyCizBg339Tq/aMC7sRnzs3SklderhmQWAqEzvv8A2vhxVmWpkVvw=="], + + "@libsql/isomorphic-ws": ["@libsql/isomorphic-ws@0.1.5", "", { "dependencies": { "@types/ws": "^8.5.4", "ws": "^8.13.0" } }, "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg=="], + + "@libsql/linux-arm-gnueabihf": ["@libsql/linux-arm-gnueabihf@0.5.29", "", { "os": "linux", "cpu": "arm" }, "sha512-CD4n4zj7SJTHso4nf5cuMoWoMSS7asn5hHygsDuhRl8jjjCTT3yE+xdUvI4J7zsyb53VO5ISh4cwwOtf6k2UhQ=="], + + "@libsql/linux-arm-musleabihf": ["@libsql/linux-arm-musleabihf@0.5.29", "", { "os": "linux", "cpu": "arm" }, "sha512-2Z9qBVpEJV7OeflzIR3+l5yAd4uTOLxklScYTwpZnkm2vDSGlC1PRlueLaufc4EFITkLKXK2MWBpexuNJfMVcg=="], + + "@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.5.29", "", { "os": "linux", "cpu": "arm64" }, "sha512-gURBqaiXIGGwFNEaUj8Ldk7Hps4STtG+31aEidCk5evMMdtsdfL3HPCpvys+ZF/tkOs2MWlRWoSq7SOuCE9k3w=="], + + "@libsql/linux-arm64-musl": ["@libsql/linux-arm64-musl@0.5.29", "", { "os": "linux", "cpu": "arm64" }, "sha512-fwgYZ0H8mUkyVqXZHF3mT/92iIh1N94Owi/f66cPVNsk9BdGKq5gVpoKO+7UxaNzuEH1roJp2QEwsCZMvBLpqg=="], + + "@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.5.29", "", { "os": "linux", "cpu": "x64" }, "sha512-y14V0vY0nmMC6G0pHeJcEarcnGU2H6cm21ZceRkacWHvQAEhAG0latQkCtoS2njFOXiYIg+JYPfAoWKbi82rkg=="], + + "@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.5.29", "", { "os": "linux", "cpu": "x64" }, "sha512-gquqwA/39tH4pFl+J9n3SOMSymjX+6kZ3kWgY3b94nXFTwac9bnFNMffIomgvlFaC4ArVqMnOZD3nuJ3H3VO1w=="], + + "@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.5.29", "", { "os": "win32", "cpu": "x64" }, "sha512-4/0CvEdhi6+KjMxMaVbFM2n2Z44escBRoEYpR+gZg64DdetzGnYm8mcNLcoySaDJZNaBd6wz5DNdgRmcI4hXcg=="], + "@microsoft/fetch-event-source": ["@microsoft/fetch-event-source@2.0.1", "", {}, "sha512-W6CLUJ2eBMw3Rec70qrsEW0jOm/3twwJv21mrmj2yORiaVmVYGS4sSS5yUwvQc1ZlDLYGPnClVWmUUMagKNsfA=="], + "@msgpackr-extract/msgpackr-extract-darwin-arm64": ["@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ=="], + + "@msgpackr-extract/msgpackr-extract-darwin-x64": ["@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w=="], + + "@msgpackr-extract/msgpackr-extract-linux-arm": ["@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4", "", { "os": "linux", "cpu": "arm" }, "sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw=="], + + "@msgpackr-extract/msgpackr-extract-linux-arm64": ["@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw=="], + + "@msgpackr-extract/msgpackr-extract-linux-x64": ["@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4", "", { "os": "linux", "cpu": "x64" }, "sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ=="], + + "@msgpackr-extract/msgpackr-extract-win32-x64": ["@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4", "", { "os": "win32", "cpu": "x64" }, "sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ=="], + + "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.6", "", { "dependencies": { "@tybys/wasm-util": "^0.10.3" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg=="], + + "@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="], + "@noble/ciphers": ["@noble/ciphers@2.2.0", "", {}, "sha512-Z6pjIZ/8IJcCGzb2S/0Px5J81yij85xASuk1teLNeg75bfT07MV3a/O2Mtn1I2se43k3lkVEcFaR10N4cgQcZA=="], "@noble/hashes": ["@noble/hashes@2.2.0", "", {}, "sha512-IYqDGiTXab6FniAgnSdZwgWbomxpy9FtYvLKs7wCUs2a8RkITG+DFGO1DM9cr+E3/RgADRpFjrKVaJ1z6sjtEg=="], + "@nodable/entities": ["@nodable/entities@3.0.0", "", {}, "sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw=="], + + "@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=="], + + "@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="], + + "@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=="], + + "@octokit/auth-token": ["@octokit/auth-token@6.0.0", "", {}, "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w=="], + + "@octokit/core": ["@octokit/core@7.0.6", "", { "dependencies": { "@octokit/auth-token": "^6.0.0", "@octokit/graphql": "^9.0.3", "@octokit/request": "^10.0.6", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "before-after-hook": "^4.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q=="], + + "@octokit/endpoint": ["@octokit/endpoint@11.0.3", "", { "dependencies": { "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.2" } }, "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag=="], + + "@octokit/graphql": ["@octokit/graphql@9.0.3", "", { "dependencies": { "@octokit/request": "^10.0.6", "@octokit/types": "^16.0.0", "universal-user-agent": "^7.0.0" } }, "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA=="], + + "@octokit/openapi-types": ["@octokit/openapi-types@27.0.0", "", {}, "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA=="], + + "@octokit/openapi-webhooks-types": ["@octokit/openapi-webhooks-types@12.1.0", "", {}, "sha512-WiuzhOsiOvb7W3Pvmhf8d2C6qaLHXrWiLBP4nJ/4kydu+wpagV5Fkz9RfQwV2afYzv3PB+3xYgp4mAdNGjDprA=="], + + "@octokit/plugin-paginate-rest": ["@octokit/plugin-paginate-rest@14.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw=="], + + "@octokit/plugin-request-log": ["@octokit/plugin-request-log@6.0.0", "", { "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q=="], + + "@octokit/plugin-rest-endpoint-methods": ["@octokit/plugin-rest-endpoint-methods@17.0.0", "", { "dependencies": { "@octokit/types": "^16.0.0" }, "peerDependencies": { "@octokit/core": ">=6" } }, "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw=="], + + "@octokit/request": ["@octokit/request@10.0.11", "", { "dependencies": { "@octokit/endpoint": "^11.0.3", "@octokit/request-error": "^7.0.2", "@octokit/types": "^16.0.0", "content-type": "^2.0.0", "json-with-bigint": "^3.5.3", "universal-user-agent": "^7.0.2" } }, "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q=="], + + "@octokit/request-error": ["@octokit/request-error@7.1.0", "", { "dependencies": { "@octokit/types": "^16.0.0" } }, "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw=="], + + "@octokit/rest": ["@octokit/rest@22.0.1", "", { "dependencies": { "@octokit/core": "^7.0.6", "@octokit/plugin-paginate-rest": "^14.0.0", "@octokit/plugin-request-log": "^6.0.0", "@octokit/plugin-rest-endpoint-methods": "^17.0.0" } }, "sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw=="], + + "@octokit/types": ["@octokit/types@16.0.0", "", { "dependencies": { "@octokit/openapi-types": "^27.0.0" } }, "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg=="], + + "@octokit/webhooks": ["@octokit/webhooks@14.2.0", "", { "dependencies": { "@octokit/openapi-webhooks-types": "12.1.0", "@octokit/request-error": "^7.0.0", "@octokit/webhooks-methods": "^6.0.0" } }, "sha512-da6KbdNCV5sr1/txD896V+6W0iamFWrvVl8cHkBSPT+YlvmT3DwXa4jxZnQc+gnuTEqSWbBeoSZYTayXH9wXcw=="], + + "@octokit/webhooks-methods": ["@octokit/webhooks-methods@6.0.0", "", {}, "sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ=="], + "@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.41.1", "", {}, "sha512-/UhIkaZgPutTFmQ7RnIJGgDXZmtEJ7Dvi86xNTFWcnRxVRNk/aotsqDJYeEvDP+FSMB2SdW+pQzNMcWP0rwuNA=="], + "@oxc-project/types": ["@oxc-project/types@0.130.0", "", {}, "sha512-ibD2usx9JRu7f5pu2tMKMI4cpA4NgXJQoYRP4pQ7Pxmn1l6k/53qWtQWZayhYy3X4QZkt90Ot+mJEaeXouio6Q=="], + "@prisma-next/adapter-postgres": ["@prisma-next/adapter-postgres@0.13.0", "", { "dependencies": { "@prisma-next/contract": "0.13.0", "@prisma-next/contract-authoring": "0.13.0", "@prisma-next/errors": "0.13.0", "@prisma-next/family-sql": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/ids": "0.13.0", "@prisma-next/sql-contract": "0.13.0", "@prisma-next/sql-contract-psl": "0.13.0", "@prisma-next/sql-contract-ts": "0.13.0", "@prisma-next/sql-operations": "0.13.0", "@prisma-next/sql-relational-core": "0.13.0", "@prisma-next/sql-runtime": "0.13.0", "@prisma-next/sql-schema-ir": "0.13.0", "@prisma-next/target-postgres": "0.13.0", "@prisma-next/utils": "0.13.0", "arktype": "^2.2.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-C3eYTekLZcRYSBS6VUgurgGYHKmuIYO0P5jRUWyWbELHJf4aMyKrRWJWkvog3+A/SMZUQsLaL0CFL/x7cWgNmA=="], "@prisma-next/cli": ["@prisma-next/cli@0.13.0", "", { "dependencies": { "@clack/prompts": "^1.4.0", "@prisma-next/cli-telemetry": "0.13.0", "@prisma-next/config": "0.13.0", "@prisma-next/contract": "0.13.0", "@prisma-next/emitter": "0.13.0", "@prisma-next/errors": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/migration-tools": "0.13.0", "@prisma-next/psl-printer": "0.13.0", "@prisma-next/utils": "0.13.0", "arktype": "^2.2.0", "c12": "^3.3.4", "ci-info": "^4.3.1", "clipanion": "4.0.0-rc.4", "closest-match": "^1.3.3", "colorette": "^2.0.20", "commander": "^14.0.3", "esbuild": "^0.28.0", "jsonc-parser": "^3.3.1", "package-manager-detector": "^1.6.0", "pathe": "^2.0.3", "string-width": "^8.2.1", "strip-ansi": "^7.2.0", "wrap-ansi": "^10.0.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"], "bin": { "prisma-next": "dist/cli.js" } }, "sha512-bzVvhNlbS/Fh5WvTtUa0+L4wG/HmV4MugaTCDpZO4+MBbm5S8HdgloOP1dvjvchp4emZYLN4nu8x8Objqz3kEg=="], @@ -151,6 +317,8 @@ "@prisma-next/config": ["@prisma-next/config@0.13.0", "", { "dependencies": { "@prisma-next/contract": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/utils": "0.13.0", "arktype": "^2.2.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-M9RmCMGS0K6bPvMwjgszntRQa+9z7t0ZZGcyYP36CJ1w3/IUeSGZ0VJJCzKE/8XFGi+QxD6lULK8tzJkXQvgzQ=="], + "@prisma-next/config-loader": ["@prisma-next/config-loader@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/emitter": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/utils": "0.15.0", "c12": "^3.3.4", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-IJbTwsK9B+Rns3s0sn8hYc7jtMa5UShIvOmX2W0nJ8Qo3uKlFYrQ7p4Yf0EE/H7kYHZpTlepGD8iDpeVhuQWCA=="], + "@prisma-next/contract": ["@prisma-next/contract@0.13.0", "", { "dependencies": { "@prisma-next/utils": "0.13.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-QnLFmvHL6Z96J2ZRylo9YADjsY+yQUq2fVK/T3HWChbp9QaN9G2dymeugSJFjs72gbxtHJ86nsWONBZ8uAJUjg=="], "@prisma-next/contract-authoring": ["@prisma-next/contract-authoring@0.13.0", "", { "dependencies": { "@prisma-next/framework-components": "0.13.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-n+SwaTNJ+E/2cdQyShn67U5jJHMW/7CxaZf27oJDXqRzhNX2DthDJh955LGIbrQGQDc3zPvCL5nOD5oTU1MVpA=="], @@ -167,6 +335,8 @@ "@prisma-next/ids": ["@prisma-next/ids@0.13.0", "", { "dependencies": { "@prisma-next/contract": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/utils": "0.13.0", "uniku": "^0.0.12" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-SMb6qFTiS22cK3npJaaFaXYJu8+/kGdhblitOq63hzeBWS7hxkf3LNNy8ugyS7Tep9x3q+k312qcqOVKiJRB2Q=="], + "@prisma-next/language-server": ["@prisma-next/language-server@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/utils": "0.15.0", "pathe": "^2.0.3", "vscode-languageserver": "10.1.0", "vscode-languageserver-textdocument": "1.0.12" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-c8m31FAoe4tHqbFNv2LsJHzvwIC1eeheyh05iQt+gHptarEx4CAcUkoGL6LKok+b+dkpTNLzkB6rqUOzvdWqPQ=="], + "@prisma-next/migration-tools": ["@prisma-next/migration-tools@0.13.0", "", { "dependencies": { "@prisma-next/contract": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/utils": "0.13.0", "arktype": "^2.2.0", "pathe": "^2.0.3", "prettier": "^3.8.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-csvsFLurOb8DzTpRgp2TIfl+orf+jtnvkEFNuK0A02bL2b/aN4G+qtqKpvHl4KAfF5DTsPuzf+l8sj2AarzWBw=="], "@prisma-next/operations": ["@prisma-next/operations@0.13.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Wj3SPPYAZGgJ8thpeRoshqhlJSjOTruYgppjSy/eHgU91NgFMB1smeUXZAlkZK7062mGDJQabZBPoiZdRlcO5A=="], @@ -209,6 +379,10 @@ "@prisma/client-runtime-utils": ["@prisma/client-runtime-utils@7.8.0", "", {}, "sha512-5NQZztQ0oY/ADFkmd9gPuweH5A1/CCY8YQPorLLO0Mu6a87mY5gsnDkzmFmIHs9NFaLnZojzgddFVN4RpKYrdw=="], + "@prisma/composer": ["@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", { "dependencies": { "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "c12": "^3.3.4", "clipanion": "^3.2.1", "effect": "4.0.0-beta.93", "postgres": "^3.4.9", "tsdown": "^0.22.4" }, "bin": { "prisma-composer": "./dist/bin.mjs" } }, "sha512-vI0uLSZyEAsCEji02OznXyE6gwXEML2G+anG7BK4ZaVeFJLnZOuQ62x4jaNYQvnJ9Z+KcMoFDpzQc/lcv/nPTQ=="], + + "@prisma/composer-prisma-cloud": ["@prisma/composer-prisma-cloud@https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", { "dependencies": { "@prisma-next/cli": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/postgres": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "effect": "4.0.0-beta.93", "pathe": "^2.0.3", "pg": "8.22.0", "postgres": "^3.4.9", "tsdown": "^0.22.4" } }, "sha512-gWtYT3P/FcXpdvgXpf0+OOHbAY8tP+1MCg7Z+JCucx7GwecYUvDCuzNV8uxolW8I9kx2PDD09W6/kPyAordefg=="], + "@prisma/compute-sdk": ["@prisma/compute-sdk@0.26.0", "", { "dependencies": { "better-result": "^2.7.0", "jiti": "^2.7.0", "tar-stream": "^3.1.8", "tiny-invariant": "1.3.3", "ws": "^8.20.0" }, "peerDependencies": { "@prisma/management-api-sdk": ">=1.36.0" } }, "sha512-wNESYAyjgiCPj+Ib8xRSldbmra5kdOKeN4GFV3adADOnc0X7vwqyvx3V+5JB6epuTQcpfi7jHXRwS5EKc4+/pQ=="], "@prisma/config": ["@prisma/config@7.8.0", "", { "dependencies": { "c12": "3.3.4", "deepmerge-ts": "7.1.5", "effect": "3.20.0", "empathic": "2.0.0" } }, "sha512-HFESzd9rx2ZQxlK+TL7tu1HPvCqrHiL6LCxYykI2c34mvaUuIVVl3lYuicJD/MNnzgPnyeBEMlK4WTomJCV5jw=="], @@ -235,6 +409,8 @@ "@prisma/studio-core": ["@prisma/studio-core@0.27.3", "", { "dependencies": { "@radix-ui/react-toggle": "1.1.10", "chart.js": "4.5.1" }, "peerDependencies": { "@types/react": "^18.0.0 || ^19.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0" } }, "sha512-AADjNFPdsrglxHQVTmHFqv6DuKQZ5WY4p5/gVFY017twvNrSwpLJ9lqUbYYxEu2W7nbvVxTZA8deJ8LseNALsw=="], + "@quansync/fs": ["@quansync/fs@1.0.0", "", { "dependencies": { "quansync": "^1.0.0" } }, "sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ=="], + "@radix-ui/primitive": ["@radix-ui/primitive@1.1.3", "", {}, "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg=="], "@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=="], @@ -251,6 +427,62 @@ "@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=="], + "@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.0.1", "", { "os": "android", "cpu": "arm64" }, "sha512-fJI3I0r3C3Oj/zdBCpaCmBRZYf07xpaq4yCfDDoSFm+beWNzbIl26puW8RraUdugoJw/95zerNOn6jasAhzSmg=="], + + "@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.0.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-cKnAhWEsV7TPcA/5EAteDp6KcJZBQ2G+BqE7zayMMi7kMvwRsbv7WT9aOnn0WNl4SKEIf43vjS31iUPu80nzXg=="], + + "@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.0.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-YKrVwQjIRBPo+5G/u03wGjbdy4q7pyzCe93DK9VJ7zkVmeg8LJ7GbgsiHWdR4xSoe4CAXRD7Bcjgbtr64bkXNg=="], + + "@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.0.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-z/oBsREo46SsFqBwYtFe0kpJeBijAT48O/WXLI4suiCLBkr03RTtTJMCzSdDd2znlh8VJizL09XVkQgk8IZonw=="], + + "@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.0.1", "", { "os": "linux", "cpu": "arm" }, "sha512-ik8q7GM11zxvYxFc2PeDcT6TBvhCQMaUxfph/M5l9sKuTs/Sjg3L+Byw0F7w0ZVLBZmx30P+gG0ECzzN+MFcmQ=="], + + "@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-QoSx2EkyrrdZ6kcyE8stqZ62t0Yra8Fs5ia9lOxJrh6TMQJK7gQKmscdTHf7pOXKREKrVwOtJcQG3qVSfc866A=="], + + "@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.0.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-uwNwFpwKeNiZawfAWBgg0VIztPTV3ihhh1vV334h9ivnNLorxnQMU6Fz8wG1Zb4Qh9LC1/MkcyT3YlDXG3Rsgg=="], + + "@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.0.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-zY1bul7OWr7DFBiJ++wofXvnr8B45ce3QsQUhKrIhXsygAh7bTkwyeM1bi1a2g5C/yC/N8TZyGDEoMfm/l9mpg=="], + + "@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.0.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-0frlsT/f4Ft6I7SMESTKnF3cZsdicQn1dCMkF/jT9wDLE+gGoiQfv1nmT9e+s7s/fekvvy6tZM2jHvI2tkbJDQ=="], + + "@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-XABVmGp9Tg0WspTVvwduTc4fpqy6JnAUrSQe6OuyqD/03nI7r0O9OWUkMIwFrjKAIqolvqoA4ZrJppgwE0Gxmw=="], + + "@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.0.1", "", { "os": "linux", "cpu": "x64" }, "sha512-bV4fzswuzVcKD90o/VM6QqKxnxlDq0g2BISDLNVmxrnhpv1DDbyPhCIjYfvzYLV+MvkKKnQt2Q6AO86SEBULUQ=="], + + "@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.0.1", "", { "os": "none", "cpu": "arm64" }, "sha512-/Mh0Zhq3OP7fVs0kcQHZP6lZEthMGTaSf8UBQYSFEZDWGXXlEC+nJ6EqenaK2t4LBXMe3A+K/G2BVXXdtOr4PQ=="], + + "@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.0.1", "", { "dependencies": { "@emnapi/core": "1.10.0", "@emnapi/runtime": "1.10.0", "@napi-rs/wasm-runtime": "^1.1.4" }, "cpu": "none" }, "sha512-+1xc9X45l8ufsBAm6Gjvx2qDRIY9lTVt0cgWNcJ+1gdhXvkbxePA60yRTwSTuXL09CMhyJmjpV7E3NoyxbqFQQ=="], + + "@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.0.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-1D+UqZdfnuR+Jy1GgMJwi85bD40H21uNmOPRWQhw4oRSuolZ/B5rixZ45DK2KXOTCvmVCecauWgEhbw8bI7tOw=="], + + "@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.0.1", "", { "os": "win32", "cpu": "x64" }, "sha512-INAycaWuhlOK3wk4mRHGsdgwYWmd9cChdPdE9bwWmy6rn9VqVNYNFGhOdXrofXUxwHIncSiPNb8tNm8knDVIeQ=="], + + "@rolldown/pluginutils": ["@rolldown/pluginutils@1.0.1", "", {}, "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw=="], + + "@smithy/core": ["@smithy/core@3.29.4", "", { "dependencies": { "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-G1GRglAabzEhqghJMBAd54FkRS7SAFGHEwbhcI9r+O+LIMuFsLyXkLZkCoFSgAglRu8s/URVXJB0hglq3ZipIg=="], + + "@smithy/credential-provider-imds": ["@smithy/credential-provider-imds@4.4.9", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-2nfV4qRKiYeXU4zD2vvSCfg5dfp/BuhrM73vt7q9gzBhxs4rbPxXY21wo+kyI3bRmXcEGRnCLTaW8O437jzHIg=="], + + "@smithy/fetch-http-handler": ["@smithy/fetch-http-handler@5.6.6", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-NHLgAlORUFZjn5ZfhYuyyKMlXA1WLYOdGxEhyNxrPpbJzoacGbl0chn1lN2KiZ8mpNVk0tV5607CSYlYs/OFgw=="], + + "@smithy/is-array-buffer": ["@smithy/is-array-buffer@2.2.0", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA=="], + + "@smithy/node-config-provider": ["@smithy/node-config-provider@4.5.9", "", { "dependencies": { "@smithy/core": "^3.29.4", "tslib": "^2.6.2" } }, "sha512-8+sIiArnV0qdA62FN7dnXoRq5L3vxnWY66HdPmCC+uZAd2i/qCdjxL/gRBGQXtVuEptPehRsJz8Mxf5t/GRrCg=="], + + "@smithy/node-http-handler": ["@smithy/node-http-handler@4.9.6", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-odd+HYx3OLcXRSEz0ZeF3JQdSYdK8QnRgA2N87cPW7coWIbKfRk7a9VQjfeWQLqnzrDLk23KMEn46p8N7M/JFg=="], + + "@smithy/shared-ini-file-loader": ["@smithy/shared-ini-file-loader@4.6.9", "", { "dependencies": { "@smithy/core": "^3.29.4", "tslib": "^2.6.2" } }, "sha512-+4XQ4XVbcMJmg9KW/M5TDQXtSXHrmImtLj4FlMxtbcZBzcsLmVGxJO/RQjk9fbuvMjyCsIxrqAD5OalfGz4G9w=="], + + "@smithy/signature-v4": ["@smithy/signature-v4@5.6.5", "", { "dependencies": { "@smithy/core": "^3.29.4", "@smithy/types": "^4.16.1", "tslib": "^2.6.2" } }, "sha512-MO5VEhwVl0BN7xVoVeNrZfiUFoQtqxUbgl6/RwOTlMMxCSjblG8twSrVTwz3J4w9WZxd2rBfBAUXjH77agspBg=="], + + "@smithy/types": ["@smithy/types@4.16.1", "", { "dependencies": { "tslib": "^2.6.2" } }, "sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg=="], + + "@smithy/util-base64": ["@smithy/util-base64@4.5.9", "", { "dependencies": { "@smithy/core": "^3.29.4", "tslib": "^2.6.2" } }, "sha512-4q8h+aztxE85KYzuLH3b9P/OTKDoEwG4UKKphmrh5k65p4d5S/REwUgGcTTigFpWLYWGKt3h1aABO3mhUZEAKw=="], + + "@smithy/util-buffer-from": ["@smithy/util-buffer-from@2.2.0", "", { "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA=="], + + "@smithy/util-utf8": ["@smithy/util-utf8@2.3.0", "", { "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" } }, "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A=="], + "@standard-schema/spec": ["@standard-schema/spec@1.1.0", "", {}, "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w=="], "@tanstack/db": ["@tanstack/db@0.6.8", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@tanstack/db-ivm": "0.1.18", "@tanstack/pacer-lite": "^0.2.1" }, "peerDependencies": { "typescript": ">=4.7" } }, "sha512-1dzwxYH7jizvpOzVsVmxZ8dGwMPDaA+YcinEmAszoUYF7mgSL0RiIiGHFBAc0WyVvHES7vSHg6x0WslX8C+TTQ=="], @@ -265,10 +497,18 @@ "@tanstack/react-db": ["@tanstack/react-db@0.1.86", "", { "dependencies": { "@tanstack/db": "0.6.8", "use-sync-external-store": "^1.6.0" }, "peerDependencies": { "react": ">=16.8.0" } }, "sha512-s/8Iv5IrJd0jGeVwX/x3fn7GrPwCGkakzdfxvp2ju2o267uvV5YC2+MviVo9UIGZ+cCLdFAHjxY6P9+WZWTRAg=="], + "@tybys/wasm-util": ["@tybys/wasm-util@0.10.3", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg=="], + + "@types/aws-lambda": ["@types/aws-lambda@8.10.162", "", {}, "sha512-Fn658grtLOci1oxi1391vvDWJRKNGWRSqfxRkmN/Iy3c0tQH1USMKEXcPYHLvope+ZgTFocx9FRQJx1muBL6qw=="], + "@types/bun": ["@types/bun@1.3.3", "", { "dependencies": { "bun-types": "1.3.3" } }, "sha512-ogrKbJ2X5N0kWLLFKeytG0eHDleBYtngtlbu9cyBKFtNL3cnpDZkNdQj8flVf6WTZUX5ulI9AY1oa7ljhSrp+g=="], + "@types/chai": ["@types/chai@5.2.3", "", { "dependencies": { "@types/deep-eql": "*", "assertion-error": "^2.0.1" } }, "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA=="], + "@types/debug": ["@types/debug@4.1.13", "", { "dependencies": { "@types/ms": "*" } }, "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw=="], + "@types/deep-eql": ["@types/deep-eql@4.0.2", "", {}, "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw=="], + "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="], "@types/estree-jsx": ["@types/estree-jsx@1.0.5", "", { "dependencies": { "@types/estree": "*" } }, "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg=="], @@ -289,20 +529,98 @@ "@types/unist": ["@types/unist@3.0.3", "", {}, "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q=="], + "@types/ws": ["@types/ws@8.18.1", "", { "dependencies": { "@types/node": "*" } }, "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg=="], + "@ungap/structured-clone": ["@ungap/structured-clone@1.3.1", "", {}, "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ=="], + "@vercel/detect-agent": ["@vercel/detect-agent@1.2.3", "", {}, "sha512-VYNCgUc0nOmC4WJmWw9GkrKdfr8Zl4/rxhC5SvgacBgxiW9W/9NRttUoHHXV8xdII3MaRgkZZVX8Ikzc/Jmjag=="], + + "@vitest/expect": ["@vitest/expect@4.1.10", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "@types/chai": "^5.2.2", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "chai": "^6.2.2", "tinyrainbow": "^3.1.0" } }, "sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA=="], + + "@vitest/mocker": ["@vitest/mocker@4.1.10", "", { "dependencies": { "@vitest/spy": "4.1.10", "estree-walker": "^3.0.3", "magic-string": "^0.30.21" }, "peerDependencies": { "msw": "^2.4.9", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" }, "optionalPeers": ["msw", "vite"] }, "sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow=="], + + "@vitest/pretty-format": ["@vitest/pretty-format@4.1.10", "", { "dependencies": { "tinyrainbow": "^3.1.0" } }, "sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q=="], + + "@vitest/runner": ["@vitest/runner@4.1.10", "", { "dependencies": { "@vitest/utils": "4.1.10", "pathe": "^2.0.3" } }, "sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg=="], + + "@vitest/snapshot": ["@vitest/snapshot@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "@vitest/utils": "4.1.10", "magic-string": "^0.30.21", "pathe": "^2.0.3" } }, "sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw=="], + + "@vitest/spy": ["@vitest/spy@4.1.10", "", {}, "sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw=="], + + "@vitest/utils": ["@vitest/utils@4.1.10", "", { "dependencies": { "@vitest/pretty-format": "4.1.10", "convert-source-map": "^2.0.0", "tinyrainbow": "^3.1.0" } }, "sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA=="], + + "@yuku-codegen/binding-darwin-arm64": ["@yuku-codegen/binding-darwin-arm64@0.6.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-oTXKokdxrIc/rK+FOZ3GXsafSVLe9u92pIb7Zt/oiHtRj4unQbHl4badFXs0VIeRrqILshK1IXTdvE0PlA4QGg=="], + + "@yuku-codegen/binding-darwin-x64": ["@yuku-codegen/binding-darwin-x64@0.6.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-gKmy9V5VSnk6ZcoZrxKxWypmm+hercCh8gh/HNP5jvzWGKSobJAlYJJ9wQ0aHc3QI4h4gWBtDD7aizOrh1OEhQ=="], + + "@yuku-codegen/binding-freebsd-x64": ["@yuku-codegen/binding-freebsd-x64@0.6.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-yts1prQuuttrQlxIj546k6lYnktUCK4afcwAg/bu+h9mE+CpzhgDdonAGjJbayBRWvRtpGCmz4SDU0AgFgeWXw=="], + + "@yuku-codegen/binding-linux-arm-gnu": ["@yuku-codegen/binding-linux-arm-gnu@0.6.4", "", { "os": "linux", "cpu": "arm" }, "sha512-w4buuxYQMeb/hmFlVClDcTfLzbX6ASsZfpAFKi+99DtJKn6vxFFoYgl36EotpLwBkvYDG7nP+Q4sy/GYBpQ3Xg=="], + + "@yuku-codegen/binding-linux-arm-musl": ["@yuku-codegen/binding-linux-arm-musl@0.6.4", "", { "os": "linux", "cpu": "arm" }, "sha512-Ia176bKbP/eV0bB5lKh4m0MYf5KwEURm6NqxrW0iu5vaOTfiaV4WdD+pixskzon89G91yOe5uF9cUM5LJs9wLQ=="], + + "@yuku-codegen/binding-linux-arm64-gnu": ["@yuku-codegen/binding-linux-arm64-gnu@0.6.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-4HpkS5jgqVW5DOQnhIB5ObXwGWDdzz3TKNbBObRcXS3xmPBxDO7CEdXu7SznL9zzaVBWyjGUN+gdxf5eNu6Ggw=="], + + "@yuku-codegen/binding-linux-arm64-musl": ["@yuku-codegen/binding-linux-arm64-musl@0.6.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-VxjgM1a6O9ykOWB7jdaFn9VnMZVdcQXyy4+OGUd34P+WOJYey0xtWqRUNMFi8LkSky+89lWXpC5fT3txj8hT9w=="], + + "@yuku-codegen/binding-linux-x64-gnu": ["@yuku-codegen/binding-linux-x64-gnu@0.6.4", "", { "os": "linux", "cpu": "x64" }, "sha512-sRnYHQ/NBIBh+klW1vzGyHAs2YovD926HsqGyioRJcPIhI3e7xxhjGnoKyfKROVd7VihHHKjsaIqEGPdx7Nn+A=="], + + "@yuku-codegen/binding-linux-x64-musl": ["@yuku-codegen/binding-linux-x64-musl@0.6.4", "", { "os": "linux", "cpu": "x64" }, "sha512-1JKVnPbAsl3SqTdnB6hWgRL3LqJnUiPVP/s4hyAGscNbl0orBUZu/hlwF6+AfluWVgrT4fxaS46rszZ7iP0lqw=="], + + "@yuku-codegen/binding-win32-arm64": ["@yuku-codegen/binding-win32-arm64@0.6.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-5BAvS1UIZ0/tG4VlMpOxd8OVZuVDRnZF++BDgPWLTn+HUrF73GHKZD0AYpjZHIG167S5Nfqo5PQgvIavrOfQ9A=="], + + "@yuku-codegen/binding-win32-x64": ["@yuku-codegen/binding-win32-x64@0.6.4", "", { "os": "win32", "cpu": "x64" }, "sha512-1RXR6uh2qzMn61DyRmhQgPJW/oFdpUdUp6iKnpC+dAhdF2xVOobNE8ZifKBYhteZQsHOn7p4+f/YJBBZfXdFDg=="], + + "@yuku-parser/binding-darwin-arm64": ["@yuku-parser/binding-darwin-arm64@0.6.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-QsZxEeAt5r52mBl3kxu7bmW9Tk82Jtvc12O73IAXE89wBMIDxiBJhErYI+ct/nJ8Rw5oNa/+1cK+M1eMUsGSiA=="], + + "@yuku-parser/binding-darwin-x64": ["@yuku-parser/binding-darwin-x64@0.6.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-EnbVvqHmMI45oQXQsH1jJWq54a2oJ+L2JN1hFzTvKbhnMMn8BeUtUNMXQwPffHR2TngoCn+vDujqbXxXmF37EA=="], + + "@yuku-parser/binding-freebsd-x64": ["@yuku-parser/binding-freebsd-x64@0.6.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-fLNeBSLR5nxTt5a/sUpbN/WcXGhzzPjhJOoV4f9SCNV5hPiprandAE9FvdaFLUHodSq8EioLlQe7ntEDsF4vSg=="], + + "@yuku-parser/binding-linux-arm-gnu": ["@yuku-parser/binding-linux-arm-gnu@0.6.4", "", { "os": "linux", "cpu": "arm" }, "sha512-DKZndPj19B//6klRKE35+MbiY2b6yv3kGSzzxikReHm+wUgEOc84Cv9Q6/006NLmzNVM/apOFfT3gLD4DWprdg=="], + + "@yuku-parser/binding-linux-arm-musl": ["@yuku-parser/binding-linux-arm-musl@0.6.4", "", { "os": "linux", "cpu": "arm" }, "sha512-IpQLxD32qIWMujAAGwW1zwgcPyeBDdBjDbUzik8D+esgpW7Gf2z5r7exsvzXPGlEr3V3dolnv4hJ0QggAgGwVg=="], + + "@yuku-parser/binding-linux-arm64-gnu": ["@yuku-parser/binding-linux-arm64-gnu@0.6.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-HXCiigA/akjVgDbXi9VnwXvQFBi50PdQ6pF80uh7M2scFLLpn7I3dqSan7ooHpopqZgofniBOXCt3MorZgSlFA=="], + + "@yuku-parser/binding-linux-arm64-musl": ["@yuku-parser/binding-linux-arm64-musl@0.6.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-jEBbF8dXlvnmMtDJU+J126H8oWsfi61vUBpSf56IDMm6JsbcEDRJLV0HHuSu88GIT+AMwYqO9NbMW5yqidSjdQ=="], + + "@yuku-parser/binding-linux-x64-gnu": ["@yuku-parser/binding-linux-x64-gnu@0.6.4", "", { "os": "linux", "cpu": "x64" }, "sha512-SgHXzC6eN/rdRp7kLjCY76vKguKdIrX3GRMpr/MMz4+c0uZs8DpQ8XK/6TsgnJ+VPYjoTZm5e7wwyZZGhUJOuw=="], + + "@yuku-parser/binding-linux-x64-musl": ["@yuku-parser/binding-linux-x64-musl@0.6.4", "", { "os": "linux", "cpu": "x64" }, "sha512-bq6PsBS1VYpc6cPLSnTxMHxYKjlQSSnqrDlI7WF8fI8PCCZ2rKUgSVspNlnAXB8bbyqnG2Djt+LWu0SvRToBYA=="], + + "@yuku-parser/binding-win32-arm64": ["@yuku-parser/binding-win32-arm64@0.6.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-dzzSSFEP/ecfLE/VPOdnqUP3gWbHvQrKmZgWTgNjKj/z7zyjTNt7OPHwwt7oXfY0d1fZXpOUu0ZTLaTVt1wFyQ=="], + + "@yuku-parser/binding-win32-x64": ["@yuku-parser/binding-win32-x64@0.6.4", "", { "os": "win32", "cpu": "x64" }, "sha512-KBBaoGTqDpN7LUiR4fFPvZzNDTpQIbPOqTOjxEhFCCp+eq3liQzSgneyBsXf11teWqNcIPiue6jUtk2ckEF42Q=="], + + "@yuku-toolchain/types": ["@yuku-toolchain/types@0.5.43", "", {}, "sha512-kSpvPntnXw5+lYjO71ffBEnQ5ycQ74KGIYknh0TS4xeyCuBkOqxyJumxZkMhLBBUCLjDAbx2+Icnr3Zh4ftjpQ=="], + "ajv": ["ajv@8.20.0", "", { "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-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA=="], + "alchemy": ["alchemy@2.0.0-beta.59", "", { "dependencies": { "@alchemy.run/node-utils": "0.0.5", "@aws-sdk/credential-providers": "^3.0.0", "@clack/prompts": "^0.11.0", "@distilled.cloud/aws": "0.27.0", "@distilled.cloud/axiom": "0.27.0", "@distilled.cloud/cloudflare": "0.27.0", "@distilled.cloud/cloudflare-rolldown-plugin": "0.11.3", "@distilled.cloud/cloudflare-runtime": "0.11.3", "@distilled.cloud/cloudflare-vite-plugin": "0.11.3", "@distilled.cloud/core": "0.27.0", "@distilled.cloud/neon": "0.27.0", "@distilled.cloud/planetscale": "0.27.0", "@effect/vitest": ">=4.0.0-beta.84|| >=4.0.0", "@libsql/client": "^0.17.0", "@octokit/rest": "^22.0.1", "@octokit/webhooks": "^14.2.0", "@smithy/node-config-provider": "^4.0.0", "@smithy/shared-ini-file-loader": "^4.3.4", "@smithy/types": "^4.8.1", "@types/aws-lambda": "^8.10.152", "aws4fetch": "^1.0.20", "capnweb": "^0.6.1", "fast-glob": "^3.3.2", "fast-xml-parser": "^5.3.4", "ink": "^6.3.1", "jszip": "^3.10.1", "libsodium-wrappers": "^0.8.3", "magic-string": "^0.30.21", "mysql2": "^3.15.3", "pathe": "^2.0.3", "pg": "^8.13.0", "picomatch": "^4.0.4", "react": "^19.2.0", "rolldown": "1.0.1", "undici": "^7.16.0", "yaml": "^2.0.0" }, "peerDependencies": { "@effect/platform-bun": ">=4.0.0-beta.84|| >=4.0.0", "@effect/platform-node": ">=4.0.0-beta.84|| >=4.0.0", "@effect/sql-pg": ">=4.0.0-beta.84|| >=4.0.0", "drizzle-kit": ">=1.0.0-rc.1", "drizzle-orm": ">=1.0.0-rc.1", "effect": ">=4.0.0-beta.84|| >=4.0.0", "vite": "^8.0.7", "ws": "^8.20.0" }, "optionalPeers": ["@effect/platform-bun", "@effect/platform-node", "@effect/sql-pg", "drizzle-kit", "drizzle-orm", "vite", "ws"], "bin": { "alchemy": "bin/cli.js" } }, "sha512-Y1a2NWSK6/4UJT9Xv32oTu/vgk9KvKqXgnJ6SOu0U8RthFQSrVwqE5hN9Yp+3rRJTiaG23CjB4OeyAXFlD8nKA=="], + + "ansi-escapes": ["ansi-escapes@7.3.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg=="], + "ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "ansi-styles": ["ansi-styles@6.2.3", "", {}, "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg=="], + "ansis": ["ansis@4.3.1", "", {}, "sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA=="], + + "anynum": ["anynum@1.0.1", "", {}, "sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A=="], + "arkregex": ["arkregex@0.0.5", "", { "dependencies": { "@ark/util": "0.56.0" } }, "sha512-ncYjBdLlh5/QnVsAA8De16Tc9EqmYM7y/WU9j+236KcyYNUXogpz3sC4ATIZYzzLxwI+0sEOaQLEmLmRleaEXw=="], "arktype": ["arktype@2.2.0", "", { "dependencies": { "@ark/schema": "0.56.0", "@ark/util": "0.56.0", "arkregex": "0.0.5" } }, "sha512-t54MZ7ti5BhOEvzEkgKnWvqj+UbDfWig+DHr5I34xatymPusKLS0lQpNJd8M6DzmIto2QGszHfNKoFIT8tMCZQ=="], + "assertion-error": ["assertion-error@2.0.1", "", {}, "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA=="], + + "auto-bind": ["auto-bind@5.0.1", "", {}, "sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg=="], + "aws-ssl-profiles": ["aws-ssl-profiles@1.1.2", "", {}, "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g=="], + "aws4fetch": ["aws4fetch@1.0.20", "", {}, "sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g=="], + "b4a": ["b4a@1.8.1", "", { "peerDependencies": { "react-native-b4a": "*" }, "optionalPeers": ["react-native-b4a"] }, "sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw=="], "bail": ["bail@2.0.2", "", {}, "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw=="], @@ -319,18 +637,32 @@ "bare-url": ["bare-url@2.4.5", "", { "dependencies": { "bare-path": "^3.0.0" } }, "sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ=="], + "before-after-hook": ["before-after-hook@4.0.0", "", {}, "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ=="], + "better-auth": ["better-auth@1.6.16", "", { "dependencies": { "@better-auth/core": "1.6.16", "@better-auth/drizzle-adapter": "1.6.16", "@better-auth/kysely-adapter": "1.6.16", "@better-auth/memory-adapter": "1.6.16", "@better-auth/mongo-adapter": "1.6.16", "@better-auth/prisma-adapter": "1.6.16", "@better-auth/telemetry": "1.6.16", "@better-auth/utils": "0.4.1", "@better-fetch/fetch": "1.2.2", "@noble/ciphers": "^2.1.1", "@noble/hashes": "^2.0.1", "better-call": "1.3.6", "defu": "^6.1.4", "jose": "^6.1.3", "kysely": "^0.28.17 || ^0.29.0", "nanostores": "^1.1.1", "zod": "^4.3.6" }, "peerDependencies": { "@lynx-js/react": "*", "@prisma/client": "^5.0.0 || ^6.0.0 || ^7.0.0", "@sveltejs/kit": "^2.0.0", "@tanstack/react-start": "^1.0.0", "@tanstack/solid-start": "^1.0.0", "better-sqlite3": "^12.0.0", "drizzle-kit": ">=0.31.4", "drizzle-orm": "^0.45.2", "mongodb": "^6.0.0 || ^7.0.0", "mysql2": "^3.0.0", "next": "^14.0.0 || ^15.0.0 || ^16.0.0", "pg": "^8.0.0", "prisma": "^5.0.0 || ^6.0.0 || ^7.0.0", "react": "^18.0.0 || ^19.0.0", "react-dom": "^18.0.0 || ^19.0.0", "solid-js": "^1.0.0", "svelte": "^4.0.0 || ^5.0.0", "vitest": "^2.0.0 || ^3.0.0 || ^4.0.0", "vue": "^3.0.0" }, "optionalPeers": ["@lynx-js/react", "@prisma/client", "@sveltejs/kit", "@tanstack/react-start", "@tanstack/solid-start", "better-sqlite3", "drizzle-kit", "drizzle-orm", "mongodb", "mysql2", "next", "pg", "prisma", "react", "react-dom", "solid-js", "svelte", "vitest", "vue"] }, "sha512-YlBITnH3LIBRD+JpR1XRIToJAVVpoQvZzRc4sm5W0/bnPZKLbsmtXbVWJF3ypo9TVnF6geczJKprG/CsWT07Wg=="], "better-call": ["better-call@1.3.6", "", { "dependencies": { "@better-auth/utils": "^0.4.0", "@better-fetch/fetch": "^1.1.21", "rou3": "^0.7.12", "set-cookie-parser": "^3.0.1" }, "peerDependencies": { "zod": "^4.0.0" }, "optionalPeers": ["zod"] }, "sha512-no1jI+h6Bkxs1NVBo4rONbVIzsPjZ8IUu7IHaJBiFwVX1XEQGN8KpHots5fSWmXe9nNyLuLIcgx6WEUcE6EDaA=="], "better-result": ["better-result@2.9.2", "", {}, "sha512-WIFoBPCdnTOdk9inkE1ZRvCZ4P0CpSkAiLlchC65N7n9DcjZ3NhqkBOlafzpOVnO8ixyi37kicmSJ3ENhPZl7Q=="], + "bowser": ["bowser@2.14.1", "", {}, "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg=="], + + "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], + "bun-types": ["bun-types@1.3.3", "", { "dependencies": { "@types/node": "*" } }, "sha512-z3Xwlg7j2l9JY27x5Qn3Wlyos8YAp0kKRlrePAOjgjMGS5IG6E7Jnlx736vH9UVI4wUICwwhC9anYL++XeOgTQ=="], "c12": ["c12@3.3.4", "", { "dependencies": { "chokidar": "^5.0.0", "confbox": "^0.2.4", "defu": "^6.1.6", "dotenv": "^17.3.1", "exsolve": "^1.0.8", "giget": "^3.2.0", "jiti": "^2.6.1", "ohash": "^2.0.11", "pathe": "^2.0.3", "perfect-debounce": "^2.1.0", "pkg-types": "^2.3.0", "rc9": "^3.0.1" }, "peerDependencies": { "magicast": "*" }, "optionalPeers": ["magicast"] }, "sha512-cM0ApFQSBXuourJejzwv/AuPRvAxordTyParRVcHjjtXirtkzM0uK2L9TTn9s0cXZbG7E55jCivRQzoxYmRAlA=="], + "cac": ["cac@7.0.0", "", {}, "sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ=="], + + "capnweb": ["capnweb@0.6.1", "", {}, "sha512-fmhV26QPd1ewf5R74h55oVZnGwIcSaRMzbfLQUy8+zOBjuTmT3KXoT8wxHvnp1m9Ht9BoUUS5ZwNLoVLfQTyBg=="], + "ccount": ["ccount@2.0.1", "", {}, "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg=="], + "chai": ["chai@6.2.2", "", {}, "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg=="], + + "chalk": ["chalk@5.6.2", "", {}, "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA=="], + "character-entities": ["character-entities@2.0.2", "", {}, "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ=="], "character-entities-html4": ["character-entities-html4@2.1.0", "", {}, "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA=="], @@ -345,10 +677,18 @@ "ci-info": ["ci-info@4.4.0", "", {}, "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg=="], + "cli-boxes": ["cli-boxes@3.0.0", "", {}, "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g=="], + + "cli-cursor": ["cli-cursor@4.0.0", "", { "dependencies": { "restore-cursor": "^4.0.0" } }, "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg=="], + + "cli-truncate": ["cli-truncate@5.2.0", "", { "dependencies": { "slice-ansi": "^8.0.0", "string-width": "^8.2.0" } }, "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw=="], + "clipanion": ["clipanion@4.0.0-rc.4", "", { "dependencies": { "typanion": "^3.8.0" } }, "sha512-CXkMQxU6s9GklO/1f714dkKBMu1lopS1WFF0B8o4AxPykR1hpozxSiUZ5ZUeBjfPgCWqbcNOtZVFhB8Lkfp1+Q=="], "closest-match": ["closest-match@1.3.3", "", {}, "sha512-RSdHrZwNOvt2uMQgqJDJdM/I+5MlJ1tQJEXYrbRjSMXWiCRo06g2hwObJ7+WKt2J9ySK9/pJ0Q2vbL+BPkofDA=="], + "code-excerpt": ["code-excerpt@4.0.0", "", { "dependencies": { "convert-to-spaces": "^2.0.1" } }, "sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA=="], + "colorette": ["colorette@2.0.20", "", {}, "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w=="], "comma-separated-tokens": ["comma-separated-tokens@2.0.3", "", {}, "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg=="], @@ -357,6 +697,14 @@ "confbox": ["confbox@0.2.4", "", {}, "sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ=="], + "content-type": ["content-type@2.0.0", "", {}, "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ=="], + + "convert-source-map": ["convert-source-map@2.0.0", "", {}, "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg=="], + + "convert-to-spaces": ["convert-to-spaces@2.0.1", "", {}, "sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ=="], + + "core-util-is": ["core-util-is@1.0.3", "", {}, "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="], + "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], "csstype": ["csstype@3.2.3", "", {}, "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ=="], @@ -375,34 +723,52 @@ "destr": ["destr@2.0.5", "", {}, "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA=="], + "detect-libc": ["detect-libc@2.0.2", "", {}, "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="], + "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], "dotenv": ["dotenv@17.4.2", "", {}, "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw=="], - "effect": ["effect@3.20.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw=="], + "dts-resolver": ["dts-resolver@3.0.0", "", { "peerDependencies": { "oxc-resolver": ">=11.0.0" }, "optionalPeers": ["oxc-resolver"] }, "sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q=="], + + "effect": ["effect@4.0.0-beta.93", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.8.0", "find-my-way-ts": "^0.1.6", "ini": "^7.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^2.0.1", "multipasta": "^0.2.7", "toml": "^4.1.1", "uuid": "^14.0.0", "yaml": "^2.9.0" } }, "sha512-wNS5MKFa3C42uBfIDik2oJ78lhpoYz2hN4oBR0229BeeDCIrkg/FiOvoiPGdCVlWa7MEKxEL5I0f8AILVHSD9A=="], + + "emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "empathic": ["empathic@2.0.0", "", {}, "sha512-i6UzDscO/XfAcNYD75CfICkmfLedpyPDdozrLMmQc5ORaQcdMoc21OnlEylMIqI7U8eniKrPMxxtj8k0vhmJhA=="], "env-paths": ["env-paths@3.0.0", "", {}, "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A=="], + "environment": ["environment@1.1.0", "", {}, "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q=="], + + "es-module-lexer": ["es-module-lexer@2.3.1", "", {}, "sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA=="], + + "es-toolkit": ["es-toolkit@1.49.0", "", {}, "sha512-G5iZ6Pc/FNRY/soKZHC+TxGDD83rHUDXxzaWhGCX44vAv/tMs56WMusnm/KMNK+luUPsgA9U28cGr4RDlSzL2g=="], + "esbuild": ["esbuild@0.28.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.0", "@esbuild/android-arm": "0.28.0", "@esbuild/android-arm64": "0.28.0", "@esbuild/android-x64": "0.28.0", "@esbuild/darwin-arm64": "0.28.0", "@esbuild/darwin-x64": "0.28.0", "@esbuild/freebsd-arm64": "0.28.0", "@esbuild/freebsd-x64": "0.28.0", "@esbuild/linux-arm": "0.28.0", "@esbuild/linux-arm64": "0.28.0", "@esbuild/linux-ia32": "0.28.0", "@esbuild/linux-loong64": "0.28.0", "@esbuild/linux-mips64el": "0.28.0", "@esbuild/linux-ppc64": "0.28.0", "@esbuild/linux-riscv64": "0.28.0", "@esbuild/linux-s390x": "0.28.0", "@esbuild/linux-x64": "0.28.0", "@esbuild/netbsd-arm64": "0.28.0", "@esbuild/netbsd-x64": "0.28.0", "@esbuild/openbsd-arm64": "0.28.0", "@esbuild/openbsd-x64": "0.28.0", "@esbuild/openharmony-arm64": "0.28.0", "@esbuild/sunos-x64": "0.28.0", "@esbuild/win32-arm64": "0.28.0", "@esbuild/win32-ia32": "0.28.0", "@esbuild/win32-x64": "0.28.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw=="], - "escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + "escape-string-regexp": ["escape-string-regexp@2.0.0", "", {}, "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w=="], "estree-util-is-identifier-name": ["estree-util-is-identifier-name@3.0.0", "", {}, "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg=="], + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], + "events-universal": ["events-universal@1.0.1", "", { "dependencies": { "bare-events": "^2.7.0" } }, "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw=="], + "expect-type": ["expect-type@1.4.0", "", {}, "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA=="], + "exsolve": ["exsolve@1.0.8", "", {}, "sha512-LmDxfWXwcTArk8fUEnOfSZpHOJ6zOMUJKOtFLFqJLoKJetuQG874Uc7/Kki7zFLzYybmZhp1M7+98pfMqeX8yA=="], "extend": ["extend@3.0.2", "", {}, "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="], - "fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], + "fast-check": ["fast-check@4.9.0", "", { "dependencies": { "pure-rand": "^8.0.0" } }, "sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg=="], "fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="], "fast-fifo": ["fast-fifo@1.3.2", "", {}, "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ=="], + "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=="], + "fast-string-truncated-width": ["fast-string-truncated-width@3.0.3", "", {}, "sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g=="], "fast-string-width": ["fast-string-width@3.0.2", "", { "dependencies": { "fast-string-truncated-width": "^3.0.2" } }, "sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg=="], @@ -411,8 +777,18 @@ "fast-wrap-ansi": ["fast-wrap-ansi@0.2.2", "", { "dependencies": { "fast-string-width": "^3.0.2" } }, "sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q=="], + "fast-xml-builder": ["fast-xml-builder@1.3.0", "", { "dependencies": { "path-expression-matcher": "^1.6.2", "xml-naming": "^0.3.0" } }, "sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ=="], + + "fast-xml-parser": ["fast-xml-parser@5.10.1", "", { "dependencies": { "@nodable/entities": "^3.0.0", "fast-xml-builder": "^1.2.0", "is-unsafe": "^2.0.0", "path-expression-matcher": "^1.6.2", "strnum": "^2.4.1", "xml-naming": "^0.3.0" }, "bin": { "fxparser": "src/cli/cli.js" } }, "sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw=="], + "fastq": ["fastq@1.20.1", "", { "dependencies": { "reusify": "^1.0.4" } }, "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw=="], + "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="], + + "fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="], + + "find-my-way-ts": ["find-my-way-ts@0.1.6", "", {}, "sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA=="], + "foreground-child": ["foreground-child@3.3.1", "", { "dependencies": { "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" } }, "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw=="], "fractional-indexing": ["fractional-indexing@3.2.0", "", {}, "sha512-PcOxmqwYCW7O2ovKRU8OoQQj2yqTfEB/yeTYk4gPid6dN5ODRfU1hXd9tTVZzax/0NkO7AxpHykvZnT1aYp/BQ=="], @@ -425,8 +801,12 @@ "get-port-please": ["get-port-please@3.2.0", "", {}, "sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A=="], + "get-tsconfig": ["get-tsconfig@5.0.0-beta.5", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ=="], + "giget": ["giget@3.2.0", "", { "bin": { "giget": "dist/cli.mjs" } }, "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A=="], + "glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "graceful-fs": ["graceful-fs@4.2.11", "", {}, "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="], "grammex": ["grammex@3.1.12", "", {}, "sha512-6ufJOsSA7LcQehIJNCO7HIBykfM7DXQual0Ny780/DEcJIpBlHRvcqEBWGPYd7hrXL2GJ3oJI1MIhaXjWmLQOQ=="], @@ -439,12 +819,26 @@ "hono": ["hono@4.12.25", "", {}, "sha512-2NFaIyNVgJmBs/ecmtGzlmluTFs5cHEWGTdu0t1HBwYzoGXOL5nUQBRMXsXWla5i4KkG//QMzVP88m1+I3fdAQ=="], + "hookable": ["hookable@6.1.1", "", {}, "sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ=="], + "html-url-attributes": ["html-url-attributes@3.0.1", "", {}, "sha512-ol6UPyBWqsrO6EJySPz2O7ZSr856WDrEzM5zMqp+FJJLGMW35cLYmmZnl0vztAZxRUoNZJFTCohfjuIJ8I4QBQ=="], "http-status-codes": ["http-status-codes@2.3.0", "", {}, "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA=="], "iconv-lite": ["iconv-lite@0.7.2", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw=="], + "immediate": ["immediate@3.0.6", "", {}, "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ=="], + + "import-without-cache": ["import-without-cache@0.4.0", "", {}, "sha512-NkJQA7oZ4YHQhd2+H3BoRFKF3d/XNsiKpHZCQEMH9pDX27hQQLsTyOocyRgaIVtf8gHX3Nt3LPkR4e5EdtPAGQ=="], + + "indent-string": ["indent-string@5.0.0", "", {}, "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg=="], + + "inherits": ["inherits@2.0.4", "", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="], + + "ini": ["ini@7.0.0", "", {}, "sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w=="], + + "ink": ["ink@6.8.0", "", { "dependencies": { "@alcalzone/ansi-tokenize": "^0.2.4", "ansi-escapes": "^7.3.0", "ansi-styles": "^6.2.1", "auto-bind": "^5.0.1", "chalk": "^5.6.0", "cli-boxes": "^3.0.0", "cli-cursor": "^4.0.0", "cli-truncate": "^5.1.1", "code-excerpt": "^4.0.0", "es-toolkit": "^1.39.10", "indent-string": "^5.0.0", "is-in-ci": "^2.0.0", "patch-console": "^2.0.0", "react-reconciler": "^0.33.0", "scheduler": "^0.27.0", "signal-exit": "^3.0.7", "slice-ansi": "^8.0.0", "stack-utils": "^2.0.6", "string-width": "^8.1.1", "terminal-size": "^4.0.1", "type-fest": "^5.4.1", "widest-line": "^6.0.0", "wrap-ansi": "^9.0.0", "ws": "^8.18.0", "yoga-layout": "~3.2.1" }, "peerDependencies": { "@types/react": ">=19.0.0", "react": ">=19.0.0", "react-devtools-core": ">=6.1.2" }, "optionalPeers": ["@types/react", "react-devtools-core"] }, "sha512-sbl1RdLOgkO9isK42WCZlJCFN9hb++sX9dsklOvfd1YQ3bQ2AiFu12Q6tFlr0HvEUvzraJntQCCpfEoUe9DSzA=="], + "inline-style-parser": ["inline-style-parser@0.2.7", "", {}, "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA=="], "is-alphabetical": ["is-alphabetical@2.0.1", "", {}, "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="], @@ -453,24 +847,78 @@ "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], + + "is-fullwidth-code-point": ["is-fullwidth-code-point@5.1.0", "", { "dependencies": { "get-east-asian-width": "^1.3.1" } }, "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ=="], + + "is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="], + "is-hexadecimal": ["is-hexadecimal@2.0.1", "", {}, "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="], + "is-in-ci": ["is-in-ci@2.0.0", "", { "bin": { "is-in-ci": "cli.js" } }, "sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w=="], + + "is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="], + "is-plain-obj": ["is-plain-obj@4.1.0", "", {}, "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg=="], "is-property": ["is-property@1.0.2", "", {}, "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g=="], + "is-unsafe": ["is-unsafe@2.0.0", "", {}, "sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA=="], + + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], + "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="], "jose": ["jose@6.2.3", "", {}, "sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw=="], + "js-base64": ["js-base64@3.9.1", "", {}, "sha512-U73qptcvf/HIOauFOmqT3a0mDUp0MYlfd15oqoe9kqZt5XhiXVb+HG09sLvI9PQ9tZIBFS4nlErai8zbWazP0g=="], + "json-schema-traverse": ["json-schema-traverse@1.0.0", "", {}, "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="], + "json-with-bigint": ["json-with-bigint@3.5.10", "", {}, "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w=="], + "jsonc-parser": ["jsonc-parser@3.3.1", "", {}, "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ=="], + "jszip": ["jszip@3.10.1", "", { "dependencies": { "lie": "~3.3.0", "pako": "~1.0.2", "readable-stream": "~2.3.6", "setimmediate": "^1.0.5" } }, "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g=="], + + "kubernetes-types": ["kubernetes-types@1.30.0", "", {}, "sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q=="], + "kysely": ["kysely@0.29.2", "", {}, "sha512-s6WVJyEZrbm6jhBpiKHsGHyePMrVQKJ85wZCFCr9W4QHv6WTjWIrdvTmO9hDEA3bNK0xkrE2DqrHsXMLWuZpQg=="], + "libsodium": ["libsodium@0.8.4", "", {}, "sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw=="], + + "libsodium-wrappers": ["libsodium-wrappers@0.8.4", "", { "dependencies": { "libsodium": "^0.8.0" } }, "sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw=="], + + "libsql": ["libsql@0.5.29", "", { "dependencies": { "@neon-rs/load": "^0.0.4", "detect-libc": "2.0.2" }, "optionalDependencies": { "@libsql/darwin-arm64": "0.5.29", "@libsql/darwin-x64": "0.5.29", "@libsql/linux-arm-gnueabihf": "0.5.29", "@libsql/linux-arm-musleabihf": "0.5.29", "@libsql/linux-arm64-gnu": "0.5.29", "@libsql/linux-arm64-musl": "0.5.29", "@libsql/linux-x64-gnu": "0.5.29", "@libsql/linux-x64-musl": "0.5.29", "@libsql/win32-x64-msvc": "0.5.29" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "arm", "x64", "arm64", ] }, "sha512-8lMP8iMgiBzzoNbAPQ59qdVcj6UaE/Vnm+fiwX4doX4Narook0a4GPKWBEv+CR8a1OwbfkgL18uBfBjWdF0Fzg=="], + + "lie": ["lie@3.3.0", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ=="], + + "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], + + "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], + + "lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.32.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ=="], + + "lightningcss-darwin-x64": ["lightningcss-darwin-x64@1.32.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w=="], + + "lightningcss-freebsd-x64": ["lightningcss-freebsd-x64@1.32.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig=="], + + "lightningcss-linux-arm-gnueabihf": ["lightningcss-linux-arm-gnueabihf@1.32.0", "", { "os": "linux", "cpu": "arm" }, "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw=="], + + "lightningcss-linux-arm64-gnu": ["lightningcss-linux-arm64-gnu@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ=="], + + "lightningcss-linux-arm64-musl": ["lightningcss-linux-arm64-musl@1.32.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg=="], + + "lightningcss-linux-x64-gnu": ["lightningcss-linux-x64-gnu@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA=="], + + "lightningcss-linux-x64-musl": ["lightningcss-linux-x64-musl@1.32.0", "", { "os": "linux", "cpu": "x64" }, "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg=="], + + "lightningcss-win32-arm64-msvc": ["lightningcss-win32-arm64-msvc@1.32.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw=="], + + "lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.32.0", "", { "os": "win32", "cpu": "x64" }, "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q=="], + "long": ["long@5.3.2", "", {}, "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA=="], "longest-streak": ["longest-streak@3.1.0", "", {}, "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g=="], @@ -479,6 +927,8 @@ "lucide-react": ["lucide-react@0.476.0", "", { "peerDependencies": { "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-x6cLTk8gahdUPje0hSgLN1/MgiJH+Xl90Xoxy9bkPAsMPOUiyRSKR4JCDPGVCEpyqnZXH3exFWNItcvra9WzUQ=="], + "magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="], + "markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="], "mdast-util-find-and-replace": ["mdast-util-find-and-replace@3.0.2", "", { "dependencies": { "@types/mdast": "^4.0.0", "escape-string-regexp": "^5.0.0", "unist-util-is": "^6.0.0", "unist-util-visit-parents": "^6.0.0" } }, "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg=="], @@ -511,6 +961,8 @@ "mdast-util-to-string": ["mdast-util-to-string@4.0.0", "", { "dependencies": { "@types/mdast": "^4.0.0" } }, "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg=="], + "merge2": ["merge2@1.4.1", "", {}, "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg=="], + "micromark": ["micromark@4.0.2", "", { "dependencies": { "@types/debug": "^4.0.0", "debug": "^4.0.0", "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-core-commonmark": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-combine-extensions": "^2.0.0", "micromark-util-decode-numeric-character-reference": "^2.0.0", "micromark-util-encode": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-sanitize-uri": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA=="], "micromark-core-commonmark": ["micromark-core-commonmark@2.0.3", "", { "dependencies": { "decode-named-character-reference": "^1.0.0", "devlop": "^1.0.0", "micromark-factory-destination": "^2.0.0", "micromark-factory-label": "^2.0.0", "micromark-factory-space": "^2.0.0", "micromark-factory-title": "^2.0.0", "micromark-factory-whitespace": "^2.0.0", "micromark-util-character": "^2.0.0", "micromark-util-chunked": "^2.0.0", "micromark-util-classify-character": "^2.0.0", "micromark-util-html-tag-name": "^2.0.0", "micromark-util-normalize-identifier": "^2.0.0", "micromark-util-resolve-all": "^2.0.0", "micromark-util-subtokenize": "^2.0.0", "micromark-util-symbol": "^2.0.0", "micromark-util-types": "^2.0.0" } }, "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg=="], @@ -567,24 +1019,48 @@ "micromark-util-types": ["micromark-util-types@2.0.2", "", {}, "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA=="], + "micromatch": ["micromatch@4.0.8", "", { "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" } }, "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA=="], + + "mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="], + "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], + "msgpackr": ["msgpackr@2.0.4", "", { "optionalDependencies": { "msgpackr-extract": "^3.0.4" } }, "sha512-o1C5KRmuRt+apqMr1HuGSqWStZoRBUpEsCsl15uM9VdAF1qHLtvMOU2En747EnTyEl6c4pzPewRMFF31s1CNbA=="], + + "msgpackr-extract": ["msgpackr-extract@3.0.4", "", { "dependencies": { "node-gyp-build-optional-packages": "5.2.2" }, "optionalDependencies": { "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.4", "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.4", "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.4" }, "bin": { "download-msgpackr-prebuilds": "bin/download-prebuilds.js" } }, "sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw=="], + + "multipasta": ["multipasta@0.2.8", "", {}, "sha512-ZPWuMKyv0cSO29f7hozp+k6+crZbQijV8ipMvxNxRf2SwtYGTX1ZX89Kd20VV4H9Znonx+EQn+iy1wGQsJ+b+Q=="], + "mysql2": ["mysql2@3.15.3", "", { "dependencies": { "aws-ssl-profiles": "^1.1.1", "denque": "^2.1.0", "generate-function": "^2.3.1", "iconv-lite": "^0.7.0", "long": "^5.2.1", "lru.min": "^1.0.0", "named-placeholders": "^1.1.3", "seq-queue": "^0.0.5", "sqlstring": "^2.3.2" } }, "sha512-FBrGau0IXmuqg4haEZRBfHNWB5mUARw6hNwPDXXGg0XzVJ50mr/9hb267lvpVMnhZ1FON3qNd4Xfcez1rbFwSg=="], "named-placeholders": ["named-placeholders@1.1.6", "", { "dependencies": { "lru.min": "^1.1.0" } }, "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w=="], + "nanoid": ["nanoid@3.3.16", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q=="], + "nanostores": ["nanostores@1.3.0", "", {}, "sha512-XPUa/jz+P1oJvN9VBxw4L9MtdFfaH3DAryqPssqhb2kXjmb9npz0dly6rCsgFWOPr4Yg9mTfM3MDZgZZ+7A3lA=="], + "node-gyp-build-optional-packages": ["node-gyp-build-optional-packages@5.2.2", "", { "dependencies": { "detect-libc": "^2.0.1" }, "bin": { "node-gyp-build-optional-packages": "bin.js", "node-gyp-build-optional-packages-optional": "optional.js", "node-gyp-build-optional-packages-test": "build-test.js" } }, "sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw=="], + + "obug": ["obug@2.1.3", "", {}, "sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg=="], + "ohash": ["ohash@2.0.11", "", {}, "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ=="], + "onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="], + "openapi-fetch": ["openapi-fetch@0.14.0", "", { "dependencies": { "openapi-typescript-helpers": "^0.0.15" } }, "sha512-PshIdm1NgdLvb05zp8LqRQMNSKzIlPkyMxYFxwyHR+UlKD4t2nUjkDhNxeRbhRSEd3x5EUNh2w5sJYwkhOH4fg=="], "openapi-typescript-helpers": ["openapi-typescript-helpers@0.0.15", "", {}, "sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw=="], "package-manager-detector": ["package-manager-detector@1.6.0", "", {}, "sha512-61A5ThoTiDG/C8s8UMZwSorAGwMJ0ERVGj2OjoW5pAalsNOg15+iQiPzrLJ4jhZ1HJzmC2PIHT2oEiH3R5fzNA=="], + "pako": ["pako@1.0.11", "", {}, "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw=="], + "parse-entities": ["parse-entities@4.0.2", "", { "dependencies": { "@types/unist": "^2.0.0", "character-entities-legacy": "^3.0.0", "character-reference-invalid": "^2.0.0", "decode-named-character-reference": "^1.0.0", "is-alphanumerical": "^2.0.0", "is-decimal": "^2.0.0", "is-hexadecimal": "^2.0.0" } }, "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw=="], + "patch-console": ["patch-console@2.0.0", "", {}, "sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA=="], + + "path-expression-matcher": ["path-expression-matcher@1.6.2", "", {}, "sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ=="], + "path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="], "pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], @@ -609,12 +1085,18 @@ "pgpass": ["pgpass@1.0.5", "", { "dependencies": { "split2": "^4.1.0" } }, "sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug=="], + "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], + + "picomatch": ["picomatch@4.0.5", "", {}, "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A=="], + "pkg-types": ["pkg-types@2.3.1", "", { "dependencies": { "confbox": "^0.2.4", "exsolve": "^1.0.8", "pathe": "^2.0.3" } }, "sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg=="], "playwright": ["playwright@1.61.0", "", { "dependencies": { "playwright-core": "1.61.0" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-Z+7BeeqQPRRzklHsVFP4KTGIyMxKUmfeRA4WisM6G3/XW6nwGeX6fX9qYaDa+CiUqpOkb2f6X3nar05R3kSuJQ=="], "playwright-core": ["playwright-core@1.61.0", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-caX7TrY3Ml6egyDX0WUcTHDxodl/b51y5wJOdCEA36QviK/s2g081hvmGs8eaE3DWb6NYZQ6BjO/QkNRPenoPA=="], + "postcss": ["postcss@8.5.19", "", { "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-Mz8SaolMd8nB+G13WkORcxQKHZ/NE4xXevtkJHVuG+guo9/wYKlIMTKAqGdEmYOXR2ijPjTYNHssizdaVSUNdQ=="], + "postgres": ["postgres@3.4.7", "", {}, "sha512-Jtc2612XINuBjIl/QTWsV5UvE8UHuNblcO3vVADSrKsrc6RqGX6lOW1cEo3CM2v0XG4Nat8nI+YM7/f26VxXLw=="], "postgres-array": ["postgres-array@2.0.0", "", {}, "sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA=="], @@ -631,11 +1113,19 @@ "prisma-next": ["prisma-next@0.13.0", "", { "dependencies": { "@clack/prompts": "^1.4.0", "@prisma-next/cli-telemetry": "0.13.0", "@prisma-next/config": "0.13.0", "@prisma-next/contract": "0.13.0", "@prisma-next/emitter": "0.13.0", "@prisma-next/errors": "0.13.0", "@prisma-next/framework-components": "0.13.0", "@prisma-next/migration-tools": "0.13.0", "@prisma-next/psl-printer": "0.13.0", "@prisma-next/utils": "0.13.0", "arktype": "^2.2.0", "c12": "^3.3.4", "ci-info": "^4.3.1", "clipanion": "4.0.0-rc.4", "closest-match": "^1.3.3", "colorette": "^2.0.20", "commander": "^14.0.3", "esbuild": "^0.28.0", "jsonc-parser": "^3.3.1", "package-manager-detector": "^1.6.0", "pathe": "^2.0.3", "string-width": "^8.2.1", "strip-ansi": "^7.2.0", "wrap-ansi": "^10.0.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"], "bin": { "prisma-next": "dist/cli.js" } }, "sha512-IL/Ey6GCqeeg3CMm4yrh2lce5mlHkwIZ0RABdYSdVgWxj99T7VSBBnxnFcftGGIQo+wy+xuPHyq5nJ4aeVfzIA=="], + "process-nextick-args": ["process-nextick-args@2.0.1", "", {}, "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="], + + "promise-limit": ["promise-limit@2.7.0", "", {}, "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="], + "proper-lockfile": ["proper-lockfile@4.1.2", "", { "dependencies": { "graceful-fs": "^4.2.4", "retry": "^0.12.0", "signal-exit": "^3.0.2" } }, "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA=="], "property-information": ["property-information@7.2.0", "", {}, "sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg=="], - "pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], + "pure-rand": ["pure-rand@8.4.2", "", {}, "sha512-vvuOGgcuPJAirlHvuQw1TrOiw7ptaIXXmIbNuiNOY6lNGJJH49PQ1Kj4nd783nPdQhQdicgOjVI2yI/9BD6/Ng=="], + + "quansync": ["quansync@1.0.0", "", {}, "sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA=="], + + "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], "rc9": ["rc9@3.0.1", "", { "dependencies": { "defu": "^6.1.6", "destr": "^2.0.5" } }, "sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ=="], @@ -645,6 +1135,10 @@ "react-markdown": ["react-markdown@10.1.0", "", { "dependencies": { "@types/hast": "^3.0.0", "@types/mdast": "^4.0.0", "devlop": "^1.0.0", "hast-util-to-jsx-runtime": "^2.0.0", "html-url-attributes": "^3.0.0", "mdast-util-to-hast": "^13.0.0", "remark-parse": "^11.0.0", "remark-rehype": "^11.0.0", "unified": "^11.0.0", "unist-util-visit": "^5.0.0", "vfile": "^6.0.0" }, "peerDependencies": { "@types/react": ">=18", "react": ">=18" } }, "sha512-qKxVopLT/TyA6BX3Ue5NwabOsAzm0Q7kAPwq6L+wWDwisYs7R8vZ0nRXqq6rkueboxpkjvLGU9fWifiX/ZZFxQ=="], + "react-reconciler": ["react-reconciler@0.33.0", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.0" } }, "sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA=="], + + "readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="], + "readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], "remark-gfm": ["remark-gfm@4.0.1", "", { "dependencies": { "@types/mdast": "^4.0.0", "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", "unified": "^11.0.0" } }, "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg=="], @@ -659,72 +1153,132 @@ "require-from-string": ["require-from-string@2.0.2", "", {}, "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw=="], + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + + "restore-cursor": ["restore-cursor@4.0.0", "", { "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" } }, "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg=="], + "retry": ["retry@0.12.0", "", {}, "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow=="], "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], + "rolldown": ["rolldown@1.0.1", "", { "dependencies": { "@oxc-project/types": "=0.130.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.0.1", "@rolldown/binding-darwin-arm64": "1.0.1", "@rolldown/binding-darwin-x64": "1.0.1", "@rolldown/binding-freebsd-x64": "1.0.1", "@rolldown/binding-linux-arm-gnueabihf": "1.0.1", "@rolldown/binding-linux-arm64-gnu": "1.0.1", "@rolldown/binding-linux-arm64-musl": "1.0.1", "@rolldown/binding-linux-ppc64-gnu": "1.0.1", "@rolldown/binding-linux-s390x-gnu": "1.0.1", "@rolldown/binding-linux-x64-gnu": "1.0.1", "@rolldown/binding-linux-x64-musl": "1.0.1", "@rolldown/binding-openharmony-arm64": "1.0.1", "@rolldown/binding-wasm32-wasi": "1.0.1", "@rolldown/binding-win32-arm64-msvc": "1.0.1", "@rolldown/binding-win32-x64-msvc": "1.0.1" }, "bin": { "rolldown": "bin/cli.mjs" } }, "sha512-X0KQHljNnEkWNqqiz9zJrGunh1B0HgOxLXvnFpCOcadzcy5qohZ3tqMEUg00vncoRovXuK3ZqCT9KnnKzoInFQ=="], + + "rolldown-plugin-dts": ["rolldown-plugin-dts@0.27.9", "", { "dependencies": { "dts-resolver": "^3.0.0", "get-tsconfig": "5.0.0-beta.5", "obug": "^2.1.3", "yuku-ast": "^0.1.7", "yuku-codegen": "^0.6.1", "yuku-parser": "^0.6.1" }, "peerDependencies": { "@ts-macro/tsc": "^0.3.6", "@typescript/native-preview": "*", "rolldown": "^1.0.0", "typescript": "^5.0.0 || ^6.0.0 || ~7.0.0", "vue-tsc": "~3.2.0 || ~3.3.0" }, "optionalPeers": ["@ts-macro/tsc", "@typescript/native-preview", "typescript", "vue-tsc"] }, "sha512-d54yt65+ZF/Mk8H6P36As02PAMdaiWRSzVNtJRc1h7nCgUFjuRI4cN2DyTfJyfVpPH6pgy7/2D7YQH1/Rh75Yg=="], + "rou3": ["rou3@0.7.12", "", {}, "sha512-iFE4hLDuloSWcD7mjdCDhx2bKcIsYbtOTpfH5MHHLSKMOUyjqQXTeZVa289uuwEGEKFoE/BAPbhaU4B774nceg=="], + "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], + + "safe-buffer": ["safe-buffer@5.1.2", "", {}, "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="], + "safer-buffer": ["safer-buffer@2.1.2", "", {}, "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="], "scheduler": ["scheduler@0.27.0", "", {}, "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q=="], + "semver": ["semver@7.8.5", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA=="], + "seq-queue": ["seq-queue@0.0.5", "", {}, "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q=="], "set-cookie-parser": ["set-cookie-parser@3.1.0", "", {}, "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw=="], + "setimmediate": ["setimmediate@1.0.5", "", {}, "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA=="], + "shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="], "shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="], + "siginfo": ["siginfo@2.0.0", "", {}, "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g=="], + "signal-exit": ["signal-exit@4.1.0", "", {}, "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw=="], "sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="], + "slice-ansi": ["slice-ansi@8.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "is-fullwidth-code-point": "^5.1.0" } }, "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg=="], + "sorted-btree": ["sorted-btree@1.8.1", "", {}, "sha512-395+XIP+wqNn3USkFSrNz7G3Ss/MXlZEqesxvzCRFwL14h6e8LukDHdLBePn5pwbm5OQ9vGu8mDyz2lLDIqamQ=="], + "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], + "space-separated-tokens": ["space-separated-tokens@2.0.2", "", {}, "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q=="], "split2": ["split2@4.2.0", "", {}, "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg=="], "sqlstring": ["sqlstring@2.3.3", "", {}, "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg=="], + "stack-utils": ["stack-utils@2.0.6", "", { "dependencies": { "escape-string-regexp": "^2.0.0" } }, "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ=="], + + "stackback": ["stackback@0.0.2", "", {}, "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw=="], + "std-env": ["std-env@3.10.0", "", {}, "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg=="], "streamx": ["streamx@2.28.0", "", { "dependencies": { "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" } }, "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw=="], "string-width": ["string-width@8.2.1", "", { "dependencies": { "get-east-asian-width": "^1.5.0", "strip-ansi": "^7.1.2" } }, "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA=="], + "string_decoder": ["string_decoder@1.1.1", "", { "dependencies": { "safe-buffer": "~5.1.0" } }, "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg=="], + "stringify-entities": ["stringify-entities@4.0.4", "", { "dependencies": { "character-entities-html4": "^2.0.0", "character-entities-legacy": "^3.0.0" } }, "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg=="], "strip-ansi": ["strip-ansi@7.2.0", "", { "dependencies": { "ansi-regex": "^6.2.2" } }, "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w=="], "stripe": ["stripe@22.2.0", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-WFGpMOom9QZqso1kcnSwJsCdC1QHDlMoCOxBZRf3JraMzhkfw7dgSdD2a1CFZrqC+mzAfqeEtYILrZhWKIDruA=="], + "strnum": ["strnum@2.4.1", "", { "dependencies": { "anynum": "^1.0.1" } }, "sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg=="], + "style-to-js": ["style-to-js@1.1.21", "", { "dependencies": { "style-to-object": "1.0.14" } }, "sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ=="], "style-to-object": ["style-to-object@1.0.14", "", { "dependencies": { "inline-style-parser": "0.2.7" } }, "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw=="], + "tagged-tag": ["tagged-tag@1.0.0", "", {}, "sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng=="], + "tar-stream": ["tar-stream@3.2.0", "", { "dependencies": { "b4a": "^1.6.4", "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } }, "sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg=="], "teex": ["teex@1.0.1", "", { "dependencies": { "streamx": "^2.12.5" } }, "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg=="], + "terminal-size": ["terminal-size@4.0.1", "", {}, "sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ=="], + "text-decoder": ["text-decoder@1.2.7", "", { "dependencies": { "b4a": "^1.6.4" } }, "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ=="], "tiny-invariant": ["tiny-invariant@1.3.3", "", {}, "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg=="], + "tinybench": ["tinybench@2.9.0", "", {}, "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg=="], + + "tinyexec": ["tinyexec@1.2.4", "", {}, "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg=="], + + "tinyglobby": ["tinyglobby@0.2.17", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g=="], + + "tinyrainbow": ["tinyrainbow@3.1.0", "", {}, "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw=="], + + "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], + + "toml": ["toml@4.3.0", "", {}, "sha512-lVb8X9BsPVuH0M4BKeS91tXAmJvCjQ5UIyAbQFaxkKGyUFK2RPkhwaFSQH8vbpl1d23eu/IBH+dwVMHWaq9A5A=="], + + "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="], + "trim-lines": ["trim-lines@3.0.1", "", {}, "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg=="], "trough": ["trough@2.2.0", "", {}, "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw=="], "ts-toolbelt": ["ts-toolbelt@9.6.0", "", {}, "sha512-nsZd8ZeNUzukXPlJmTBwUAuABDe/9qtVDelJeT/qW0ow3ZS3BsQJtNkan1802aM9Uf68/Y8ljw86Hu0h5IUW3w=="], + "tsdown": ["tsdown@0.22.8", "", { "dependencies": { "ansis": "^4.3.1", "cac": "^7.0.0", "defu": "^6.1.7", "empathic": "^2.0.1", "hookable": "^6.1.1", "import-without-cache": "^0.4.0", "obug": "^2.1.3", "picomatch": "^4.0.5", "rolldown": "~1.1.5", "rolldown-plugin-dts": "^0.27.9", "semver": "^7.8.5", "tinyexec": "^1.2.4", "tinyglobby": "^0.2.17", "tree-kill": "^1.2.2", "unconfig-core": "^7.5.0" }, "peerDependencies": { "@arethetypeswrong/core": "^0.18.1", "@tsdown/css": "0.22.8", "@tsdown/exe": "0.22.8", "@vitejs/devtools": "*", "publint": "^0.3.8", "tsx": "*", "typescript": "^5.0.0 || ^6.0.0 || ^7.0.0", "unplugin-unused": "^0.5.0", "unrun": "*" }, "optionalPeers": ["@arethetypeswrong/core", "@tsdown/css", "@tsdown/exe", "@vitejs/devtools", "publint", "tsx", "typescript", "unplugin-unused", "unrun"], "bin": { "tsdown": "./dist/run.mjs" } }, "sha512-6FOLlr1iLcE3LheqQt13hVUWtTduJNwF2akPskPe8Tf1hr+N5UULHzrNZYTMNwL6lr2UyQ8iefVBB6tdqp1PCQ=="], + + "tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "typanion": ["typanion@3.14.0", "", {}, "sha512-ZW/lVMRabETuYCd9O9ZvMhAh8GslSqaUjxmK/JLPCh6l73CvLBiuXswj/+7LdnWOgYsQ130FqLzFz5aGT4I3Ug=="], + "type-fest": ["type-fest@5.8.0", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA=="], + "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], + "unconfig-core": ["unconfig-core@7.5.0", "", { "dependencies": { "@quansync/fs": "^1.0.0", "quansync": "^1.0.0" } }, "sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w=="], + + "undici": ["undici@7.28.0", "", {}, "sha512-cRZYrTDwWznlnRiPjggAGxZXanty6M8RV1ff8Wm4LWXBp7/IG8v5DnOm74DtUBp9OONpK75YlPnIjQqX0dBDtA=="], + "undici-types": ["undici-types@7.24.6", "", {}, "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg=="], + "unenv": ["unenv@2.0.0-rc.24", "", { "dependencies": { "pathe": "^2.0.3" } }, "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw=="], + "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="], "uniku": ["uniku@0.0.12", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-wqt0D/ZcBTDprQxlFpxDm4jCHlQyHWQ62PMXPF0AfU7oxHm4g5++7EY7/+uwApCMOhfzRE8fTf4WATe6lH1vkg=="], @@ -739,28 +1293,112 @@ "unist-util-visit-parents": ["unist-util-visit-parents@6.0.2", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" } }, "sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ=="], + "universal-user-agent": ["universal-user-agent@7.0.3", "", {}, "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A=="], + "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=="], + "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], + + "uuid": ["uuid@14.0.1", "", { "bin": { "uuid": "dist-node/bin/uuid" } }, "sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew=="], + "valibot": ["valibot@1.2.0", "", { "peerDependencies": { "typescript": ">=5" }, "optionalPeers": ["typescript"] }, "sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg=="], "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], "vfile-message": ["vfile-message@4.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "unist-util-stringify-position": "^4.0.0" } }, "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw=="], + "vite": ["vite@8.1.5", "", { "dependencies": { "lightningcss": "^1.32.0", "picomatch": "^4.0.5", "postcss": "^8.5.17", "rolldown": "~1.1.5", "tinyglobby": "^0.2.17" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "@vitejs/devtools": "^0.3.0", "esbuild": "^0.27.0 || ^0.28.0", "jiti": ">=1.21.0", "less": "^4.0.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", "@vitejs/devtools", "esbuild", "jiti", "less", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-7ULLwsCdYx/nRyrpiEwvqb5TFHrMVZyBt+rg/OAXT7rgj/z+DtTDyKFeLAdDkubDVDKD8jOsndmy7m55XcfUsw=="], + + "vitest": ["vitest@4.1.10", "", { "dependencies": { "@vitest/expect": "4.1.10", "@vitest/mocker": "4.1.10", "@vitest/pretty-format": "4.1.10", "@vitest/runner": "4.1.10", "@vitest/snapshot": "4.1.10", "@vitest/spy": "4.1.10", "@vitest/utils": "4.1.10", "es-module-lexer": "^2.0.0", "expect-type": "^1.3.0", "magic-string": "^0.30.21", "obug": "^2.1.1", "pathe": "^2.0.3", "picomatch": "^4.0.3", "std-env": "^4.0.0-rc.1", "tinybench": "^2.9.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tinyrainbow": "^3.1.0", "vite": "^6.0.0 || ^7.0.0 || ^8.0.0", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@opentelemetry/api": "^1.9.0", "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0", "@vitest/browser-playwright": "4.1.10", "@vitest/browser-preview": "4.1.10", "@vitest/browser-webdriverio": "4.1.10", "@vitest/coverage-istanbul": "4.1.10", "@vitest/coverage-v8": "4.1.10", "@vitest/ui": "4.1.10", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@opentelemetry/api", "@types/node", "@vitest/browser-playwright", "@vitest/browser-preview", "@vitest/browser-webdriverio", "@vitest/coverage-istanbul", "@vitest/coverage-v8", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "./vitest.mjs" } }, "sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw=="], + + "vscode-jsonrpc": ["vscode-jsonrpc@9.0.1", "", {}, "sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw=="], + + "vscode-languageserver": ["vscode-languageserver@10.1.0", "", { "dependencies": { "vscode-languageserver-protocol": "3.18.2" }, "bin": { "installServerIntoExtension": "bin/installServerIntoExtension" } }, "sha512-9gEWpXkYGXoqG7pBnE8O8hx/yP7+Aabn4+peQ3KDicQv6qunHSWyLTud3OF0w4S2+HfDD+5HqYKiXQW9HAU6mA=="], + + "vscode-languageserver-protocol": ["vscode-languageserver-protocol@3.18.2", "", { "dependencies": { "vscode-jsonrpc": "9.0.1", "vscode-languageserver-types": "3.18.0" } }, "sha512-XRyDbT0Pp3sSNti3JmxVEUMySWCSi1hhM+/KUlCy1hV1zmrqpM1OwO12EAki8blhmLuIMpaJrYbo0OzGVfK2Qg=="], + + "vscode-languageserver-textdocument": ["vscode-languageserver-textdocument@1.0.12", "", {}, "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA=="], + + "vscode-languageserver-types": ["vscode-languageserver-types@3.18.0", "", {}, "sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g=="], + "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], + "why-is-node-running": ["why-is-node-running@2.3.0", "", { "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" }, "bin": { "why-is-node-running": "cli.js" } }, "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w=="], + + "widest-line": ["widest-line@6.0.0", "", { "dependencies": { "string-width": "^8.1.0" } }, "sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA=="], + + "workerd": ["workerd@1.20260617.1", "", { "optionalDependencies": { "@cloudflare/workerd-darwin-64": "1.20260617.1", "@cloudflare/workerd-darwin-arm64": "1.20260617.1", "@cloudflare/workerd-linux-64": "1.20260617.1", "@cloudflare/workerd-linux-arm64": "1.20260617.1", "@cloudflare/workerd-windows-64": "1.20260617.1" }, "bin": { "workerd": "bin/workerd" } }, "sha512-Re5pl6pdowt3ZmWUzGlOuB7jbRIIPetgKalmo4cYmucQnVhpo7/3e4MfpekbhLi2EhZZz5EY9NWRu8zFzuEZew=="], + "wrap-ansi": ["wrap-ansi@10.0.0", "", { "dependencies": { "ansi-styles": "^6.2.3", "string-width": "^8.2.0", "strip-ansi": "^7.1.2" } }, "sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ=="], "ws": ["ws@8.21.0", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g=="], + "xml-naming": ["xml-naming@0.3.0", "", {}, "sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ=="], + "xtend": ["xtend@4.0.2", "", {}, "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="], + "yaml": ["yaml@2.9.0", "", { "bin": { "yaml": "bin.mjs" } }, "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA=="], + + "yoga-layout": ["yoga-layout@3.2.1", "", {}, "sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ=="], + + "yuku-ast": ["yuku-ast@0.1.7", "", { "dependencies": { "@yuku-toolchain/types": "0.5.43" } }, "sha512-2RiMEWv500TixY5rJy6OZd4fSy9WYZKWh6gGbIJ7y7vAGcuCugWOWwOLGaQcRZrXcPUfqtLtvpaJ3SdXtWlhKA=="], + + "yuku-codegen": ["yuku-codegen@0.6.4", "", { "dependencies": { "@yuku-toolchain/types": "0.5.43" }, "optionalDependencies": { "@yuku-codegen/binding-darwin-arm64": "0.6.4", "@yuku-codegen/binding-darwin-x64": "0.6.4", "@yuku-codegen/binding-freebsd-x64": "0.6.4", "@yuku-codegen/binding-linux-arm-gnu": "0.6.4", "@yuku-codegen/binding-linux-arm-musl": "0.6.4", "@yuku-codegen/binding-linux-arm64-gnu": "0.6.4", "@yuku-codegen/binding-linux-arm64-musl": "0.6.4", "@yuku-codegen/binding-linux-x64-gnu": "0.6.4", "@yuku-codegen/binding-linux-x64-musl": "0.6.4", "@yuku-codegen/binding-win32-arm64": "0.6.4", "@yuku-codegen/binding-win32-x64": "0.6.4" } }, "sha512-Y0nBr04uOalpLjoZ7sNhTV5olBBmLySg+obVXl+bcaFTo4cLk5fluvqpG4jNzDbPLOZTNP1Q/MOigf5hMl0WIA=="], + + "yuku-parser": ["yuku-parser@0.6.4", "", { "dependencies": { "@yuku-toolchain/types": "0.5.43" }, "optionalDependencies": { "@yuku-parser/binding-darwin-arm64": "0.6.4", "@yuku-parser/binding-darwin-x64": "0.6.4", "@yuku-parser/binding-freebsd-x64": "0.6.4", "@yuku-parser/binding-linux-arm-gnu": "0.6.4", "@yuku-parser/binding-linux-arm-musl": "0.6.4", "@yuku-parser/binding-linux-arm64-gnu": "0.6.4", "@yuku-parser/binding-linux-arm64-musl": "0.6.4", "@yuku-parser/binding-linux-x64-gnu": "0.6.4", "@yuku-parser/binding-linux-x64-musl": "0.6.4", "@yuku-parser/binding-win32-arm64": "0.6.4", "@yuku-parser/binding-win32-x64": "0.6.4" } }, "sha512-8RSyH8NK0BcvCiZohjh24EI/1dQqXmC8P+gCDJ4OC+WLTNavkMI27IRhkLM3DbMxw9fyd7Xfztq5Wn7Io5NRhQ=="], + "zeptomatch": ["zeptomatch@2.1.0", "", { "dependencies": { "grammex": "^3.1.11", "graphmatch": "^1.1.0" } }, "sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA=="], "zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], + "@prisma-next/config-loader/@prisma-next/config": ["@prisma-next/config@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WeXtzeGoX+qzEYeBKteJyFvkJnxy0iEyzuHxzGqikHQsMAlORSILK4Du/xwuHuqi9v8N4Kt1QdIaqx6+r/lBng=="], + + "@prisma-next/config-loader/@prisma-next/emitter": ["@prisma-next/emitter@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "prettier": "^3.9.4" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-kkaOsvDEAJ3CrOp6et9Pougly0tte83Tmub/D/ny/+ubN6tnZBOKTkSu1ZAqQLpCignjIvhvbYBqrzBKi700ww=="], + + "@prisma-next/config-loader/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma-next/config-loader/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma-next/language-server/@prisma-next/config": ["@prisma-next/config@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WeXtzeGoX+qzEYeBKteJyFvkJnxy0iEyzuHxzGqikHQsMAlORSILK4Du/xwuHuqi9v8N4Kt1QdIaqx6+r/lBng=="], + + "@prisma-next/language-server/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma-next/language-server/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma-next/language-server/@prisma-next/psl-parser": ["@prisma-next/psl-parser@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-vXAhl44/8lKtEszFtj6iIAmH8wor/yIrrhGNHGbbsl/9ukXSOcldLQz6re8DqvG1yXmStTzg1PHOnv8txQORPg=="], + + "@prisma-next/language-server/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer/@prisma/management-api-sdk": ["@prisma/management-api-sdk@1.49.0", "", { "dependencies": { "openapi-fetch": "0.14.0" } }, "sha512-SSpfjjH/uhgkGyli3Sh/+58C0m+BnHEUguEukMjJ9kmbd1bw9b83CkKPZl/6JGgr3I2kxi7tZJIlIGSxsXQs5g=="], + + "@prisma/composer/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma/composer/clipanion": ["clipanion@3.2.1", "", { "dependencies": { "typanion": "^3.8.0" } }, "sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA=="], + + "@prisma/composer/postgres": ["postgres@3.4.9", "", {}, "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli": ["@prisma-next/cli@0.15.0", "", { "dependencies": { "@clack/prompts": "^1.6.0", "@prisma-next/cli-telemetry": "0.15.0", "@prisma-next/config": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/emitter": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/language-server": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/psl-printer": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "ci-info": "^4.3.1", "clipanion": "4.0.0-rc.4", "closest-match": "^1.3.3", "colorette": "^2.0.20", "commander": "^14.0.3", "esbuild": "^0.28.1", "jsonc-parser": "^3.3.1", "package-manager-detector": "^1.7.0", "pathe": "^2.0.3", "string-width": "^8.2.1", "strip-ansi": "^7.2.0", "wrap-ansi": "^10.0.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"], "bin": { "prisma-next": "dist/cli.js" } }, "sha512-TJ9lMiyfC5Sdw5C7+LNzXmn5kX1ZQAFcxHffUgt8kvAo1yfXV9QRviibOUXsYAm8ZlMyVvvLBpmThP4M62MBCA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools": ["@prisma-next/migration-tools@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3", "prettier": "^3.9.4" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-YjxPVF8VBAFNeoQjiFqBEIbdfEBAEsOYlQhReW2C6Y/0sh3bVuQkVf8+rAMrlVjuNAANeDJd2kcaUq1hLdVgJA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres": ["@prisma-next/postgres@0.15.0", "", { "dependencies": { "@prisma-next/adapter-postgres": "0.15.0", "@prisma-next/cli": "0.15.0", "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/driver-postgres": "0.15.0", "@prisma-next/family-sql": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/sql-builder": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-contract-psl": "0.15.0", "@prisma-next/sql-contract-ts": "0.15.0", "@prisma-next/sql-orm-client": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/sql-runtime": "0.15.0", "@prisma-next/target-postgres": "0.15.0", "@prisma-next/utils": "0.15.0", "pathe": "^2.0.3", "pg": "8.22.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-07oq8oAw2gG7LYc7Y8vGwjUmNk15Br0mJUh2f66jBN5Ps8u79HAypg+eiYuhpLmCyq/WqiY5Z/weMaDz7N/P8Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/sql-contract": ["@prisma-next/sql-contract@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-su+DM4FC4edhkVj0XDakdyYL7AJ01oDBWozOLB5eDrY77Lduyk3LNKfAY4TvcB3VkW8HK6lcz0hoJxK8EO191g=="], + + "@prisma/composer-prisma-cloud/@prisma/management-api-sdk": ["@prisma/management-api-sdk@1.49.0", "", { "dependencies": { "openapi-fetch": "0.14.0" } }, "sha512-SSpfjjH/uhgkGyli3Sh/+58C0m+BnHEUguEukMjJ9kmbd1bw9b83CkKPZl/6JGgr3I2kxi7tZJIlIGSxsXQs5g=="], + + "@prisma/composer-prisma-cloud/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma/composer-prisma-cloud/pg": ["pg@8.22.0", "", { "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA=="], + + "@prisma/composer-prisma-cloud/postgres": ["postgres@3.4.9", "", {}, "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw=="], + + "@prisma/config/effect": ["effect@3.20.0", "", { "dependencies": { "@standard-schema/spec": "^1.0.0", "fast-check": "^3.23.1" } }, "sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw=="], + "@prisma/dev/@prisma/streams-local": ["@prisma/streams-local@0.1.10", "", { "dependencies": { "ajv": "^8.12.0", "better-result": "^2.7.0", "env-paths": "^3.0.0", "proper-lockfile": "^4.1.2" } }, "sha512-n6HALshO+IkmlYpYFZBQnjD3NXuwY7p4gH+6sJr6BIHKmKNZK1hsSUddLMlZQE5LLHpe+nwVb9S9h/RZJ15CTw=="], "@prisma/engines/@prisma/debug": ["@prisma/debug@7.8.0", "", {}, "sha512-p+QZReysDUqXC+mk17q9a+Y/qzh4c2KYliDK30buYUyfrGeTGSyfmc0AIrJRhZJrLHhRiJa9Au/J72h3C+szvA=="], @@ -771,12 +1409,160 @@ "@prisma/fetch-engine/@prisma/get-platform": ["@prisma/get-platform@7.8.0", "", { "dependencies": { "@prisma/debug": "7.8.0" } }, "sha512-WlxgRGnolL8VH2EmkH1R/DkKNr/mVdS3G2h42IZFFZ3eUrH9OT6t73kIOSlkkrv50wG123Iq8d96ufv5LlZktw=="], + "alchemy/@clack/prompts": ["@clack/prompts@0.11.0", "", { "dependencies": { "@clack/core": "0.5.0", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-pMN5FcrEw9hUkZA4f+zLlzivQSeQf5dRGJjSUbvVYDLvpKCdQx5OaknvKzgbtXOizhP+SJJJjqEbOe55uKKfAw=="], + + "alchemy/pg": ["pg@8.22.0", "", { "dependencies": { "pg-connection-string": "^2.14.0", "pg-pool": "^3.14.0", "pg-protocol": "^1.15.0", "pg-types": "2.2.0", "pgpass": "1.0.5" }, "optionalDependencies": { "pg-cloudflare": "^1.4.0" }, "peerDependencies": { "pg-native": ">=3.0.1" }, "optionalPeers": ["pg-native"] }, "sha512-8wih1vVIBMxoUM2oB4soJsD9tDnDpLv4OXBJ+EJzFsvycD+lfyIreC2gGHq78f8jbLLt+bvlPTFdFZfJkOuzAA=="], + + "ink/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "ink/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=="], + + "lightningcss/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + + "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], + + "micromatch/picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], + + "node-gyp-build-optional-packages/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], + "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], "prisma/@prisma/dev": ["@prisma/dev@0.24.3", "", { "dependencies": { "@electric-sql/pglite": "0.4.1", "@electric-sql/pglite-socket": "0.1.1", "@electric-sql/pglite-tools": "0.3.1", "@hono/node-server": "1.19.11", "@prisma/get-platform": "7.2.0", "@prisma/query-plan-executor": "7.2.0", "@prisma/streams-local": "0.1.2", "foreground-child": "3.3.1", "get-port-please": "3.2.0", "hono": "^4.12.8", "http-status-codes": "2.3.0", "pathe": "2.0.3", "proper-lockfile": "4.1.2", "remeda": "2.33.4", "std-env": "3.10.0", "valibot": "1.2.0", "zeptomatch": "2.1.0" } }, "sha512-ffHlQuKXZiaDt9Go0OnCTdJZrHxK0k7omJKNV86/VjpsXu5EIHZLK0T7JSWgvNlJwh56kW9JFu9v0qJciFzepg=="], "proper-lockfile/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + "restore-cursor/signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="], + + "tsdown/empathic": ["empathic@2.0.1", "", {}, "sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q=="], + + "tsdown/rolldown": ["rolldown@1.1.5", "", { "dependencies": { "@oxc-project/types": "=0.139.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.1.5", "@rolldown/binding-darwin-arm64": "1.1.5", "@rolldown/binding-darwin-x64": "1.1.5", "@rolldown/binding-freebsd-x64": "1.1.5", "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", "@rolldown/binding-linux-arm64-gnu": "1.1.5", "@rolldown/binding-linux-arm64-musl": "1.1.5", "@rolldown/binding-linux-ppc64-gnu": "1.1.5", "@rolldown/binding-linux-s390x-gnu": "1.1.5", "@rolldown/binding-linux-x64-gnu": "1.1.5", "@rolldown/binding-linux-x64-musl": "1.1.5", "@rolldown/binding-openharmony-arm64": "1.1.5", "@rolldown/binding-wasm32-wasi": "1.1.5", "@rolldown/binding-win32-arm64-msvc": "1.1.5", "@rolldown/binding-win32-x64-msvc": "1.1.5" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA=="], + + "vite/fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="], + + "vite/rolldown": ["rolldown@1.1.5", "", { "dependencies": { "@oxc-project/types": "=0.139.0", "@rolldown/pluginutils": "^1.0.0" }, "optionalDependencies": { "@rolldown/binding-android-arm64": "1.1.5", "@rolldown/binding-darwin-arm64": "1.1.5", "@rolldown/binding-darwin-x64": "1.1.5", "@rolldown/binding-freebsd-x64": "1.1.5", "@rolldown/binding-linux-arm-gnueabihf": "1.1.5", "@rolldown/binding-linux-arm64-gnu": "1.1.5", "@rolldown/binding-linux-arm64-musl": "1.1.5", "@rolldown/binding-linux-ppc64-gnu": "1.1.5", "@rolldown/binding-linux-s390x-gnu": "1.1.5", "@rolldown/binding-linux-x64-gnu": "1.1.5", "@rolldown/binding-linux-x64-musl": "1.1.5", "@rolldown/binding-openharmony-arm64": "1.1.5", "@rolldown/binding-wasm32-wasi": "1.1.5", "@rolldown/binding-win32-arm64-msvc": "1.1.5", "@rolldown/binding-win32-x64-msvc": "1.1.5" }, "bin": { "rolldown": "./bin/cli.mjs" } }, "sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA=="], + + "vitest/std-env": ["std-env@4.2.0", "", {}, "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw=="], + + "@prisma-next/config-loader/@prisma-next/config/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma-next/config-loader/@prisma-next/config/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma-next/config-loader/@prisma-next/config/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma-next/config-loader/@prisma-next/emitter/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma-next/config-loader/@prisma-next/emitter/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma-next/config-loader/@prisma-next/emitter/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma-next/config-loader/@prisma-next/emitter/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma-next/config-loader/@prisma-next/emitter/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma-next/config-loader/@prisma-next/emitter/prettier": ["prettier@3.9.5", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma-next/language-server/@prisma-next/config/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma-next/language-server/@prisma-next/config/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma-next/language-server/@prisma-next/framework-components/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma-next/language-server/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma-next/language-server/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma-next/language-server/@prisma-next/framework-components/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma-next/language-server/@prisma-next/psl-parser/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@clack/prompts": ["@clack/prompts@1.7.0", "", { "dependencies": { "@clack/core": "1.4.3", "fast-string-width": "^3.0.2", "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/cli-telemetry": ["@prisma-next/cli-telemetry@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/utils": "0.15.0", "@vercel/detect-agent": "^1.2.3", "arktype": "^2.2.2", "c12": "^3.3.4", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-hZu9VlzIt8HjbDLwSJ1ZchIg+9jp5qoZsfpSBMMqYQcTSDUQBlRdjnuBaP8AIWynso49ZS7gxj2lkGOm9xCwXw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/config": ["@prisma-next/config@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WeXtzeGoX+qzEYeBKteJyFvkJnxy0iEyzuHxzGqikHQsMAlORSILK4Du/xwuHuqi9v8N4Kt1QdIaqx6+r/lBng=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/emitter": ["@prisma-next/emitter@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "prettier": "^3.9.4" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-kkaOsvDEAJ3CrOp6et9Pougly0tte83Tmub/D/ny/+ubN6tnZBOKTkSu1ZAqQLpCignjIvhvbYBqrzBKi700ww=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/psl-parser": ["@prisma-next/psl-parser@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-vXAhl44/8lKtEszFtj6iIAmH8wor/yIrrhGNHGbbsl/9ukXSOcldLQz6re8DqvG1yXmStTzg1PHOnv8txQORPg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/psl-printer": ["@prisma-next/psl-printer@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-0GK+meUuWSefZqj+vgvGJOm1sGaMUsSrZG6/MVfApZLZ6HfGabZECkG0jfvNM9kkcyXIzaDtONjXkow07jk1Ww=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/package-manager-detector": ["package-manager-detector@1.7.0", "", {}, "sha512-xg1eHpwYL/D/HEdWw2goFZP6vV0FH7W+PZ5rFkGjdIDLtxq7EkzBUeT3m+lndYCt8wKbmofUu1MUdMCXkCk9ZQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/contract/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools/prettier": ["prettier@3.9.5", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres": ["@prisma-next/adapter-postgres@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/contract-authoring": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/family-sql": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/ids": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-contract-psl": "0.15.0", "@prisma-next/sql-contract-ts": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/sql-runtime": "0.15.0", "@prisma-next/sql-schema-ir": "0.15.0", "@prisma-next/target-postgres": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-mg5ueBhQGa3DI6WtmW7SgHXmjxkbFfqtXX4QAKDk70k2fVWu9h5N+HHUPHuVC5uTUVKHH7uu+yL872sWwB8grw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/config": ["@prisma-next/config@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WeXtzeGoX+qzEYeBKteJyFvkJnxy0iEyzuHxzGqikHQsMAlORSILK4Du/xwuHuqi9v8N4Kt1QdIaqx6+r/lBng=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres": ["@prisma-next/driver-postgres@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-errors": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pg": "8.22.0", "pg-cursor": "^2.21.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Ceb8L609rCkXk97QFsYmVmrifJoYETeU24gWWAdGRXbP2O3MRx1ZFtQGQxs5yfQstzpLu4auMgVQzqYEdEl+KQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql": ["@prisma-next/family-sql@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/emitter": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-contract-emitter": "0.15.0", "@prisma-next/sql-contract-ts": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/sql-runtime": "0.15.0", "@prisma-next/sql-schema-ir": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-HPbZnws4QxzIW9oZwtYXnZltdUTmDNbUnPrMpCoE3zc4Brp35bYVv57gpPVRRCqMRWvFl3UaxO9pU85KCix3qA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-builder": ["@prisma-next/sql-builder@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-lcNJZbIyU/ED6mezBiGcM7+63eJvAriJ0Vq6+DWg44sl2P3SOPbvA4QC/eEN5wb+diShluc6uMOK9IpAVikxhw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-contract-psl": ["@prisma-next/sql-contract-psl@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-contract-ts": "0.15.0", "@prisma-next/utils": "0.15.0", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-balmltd/9cusIyJgfcIdUJamU4t+xgo0ua7ZgUfiHrX5aX+P3vBAo5pQLt0Uxra7wVw/SRkrdtnHAhldf8nTYg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-contract-ts": ["@prisma-next/sql-contract-ts@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/contract-authoring": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "pathe": "^2.0.3", "ts-toolbelt": "^9.6.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Qp9CJ4Lzu35e19CttU14smMqC1ASlFj9g7d50bMET2ueCAhYh6OlC0bSAvKF8+dTP5S6uk6WQXejT7gC2R1U7w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-orm-client": ["@prisma-next/sql-orm-client@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-errors": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/sql-runtime": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-QmZVJjXaEXhgqPpxrltRiZV+hTV3mp1/04Da6aYeT+iylboXkc0WFMNExqEZ7Wwp5N3e+UuG1WMHQ80IdxKuWQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-relational-core": ["@prisma-next/sql-relational-core@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2", "ts-toolbelt": "^9.6.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-kxnRfQ5Oz7v0qMlPnyLWjPfSDW7mGzOA3a0W3rQgn76kJauPpRnehES0V5o/k0Wqifdb/DgydCjBlh1qGS1Ybw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-runtime": ["@prisma-next/sql-runtime@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/ids": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-zcQyL1yp6u4pUHrrQQjrhRl6TkI5YvOO6HcbEfA8spl0zwnkRcSGorraLpY8Zcmhe8b3iOXW5nZRGEteYQYohw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres": ["@prisma-next/target-postgres@0.15.0", "", { "dependencies": { "@prisma-next/cli": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/family-sql": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/sql-errors": "0.15.0", "@prisma-next/sql-operations": "0.15.0", "@prisma-next/sql-relational-core": "0.15.0", "@prisma-next/sql-schema-ir": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2", "pathe": "^2.0.3" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-5TmXqfxle3AAErtTSxJMykJC5tNlLMOltzrwdHC2whHYxkFZX27vNj72e8LAPfWTMGvSLRx6nPwSnswWA1k4dQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/sql-contract/@prisma-next/framework-components": ["@prisma-next/framework-components@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-MmtMuxt6R+pb4jcq54WBNQFYMixBkVYEcm9NGGubBzlap4Z8YcbkWcKCm+4uihsfyTK0VVJC6P+7GLpAojAmtA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/sql-contract/@prisma-next/utils": ["@prisma-next/utils@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-/px4QMcfHKXuGZpxl9RPiWgOCbhrRP1jR0Hi3pvDJxQcT5arVmpx3L5Gjbae9sKh7Rr1Nr7/2RIHNsh6Y1j4Jw=="], + + "@prisma/composer-prisma-cloud/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma/composer-prisma-cloud/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma/composer-prisma-cloud/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma/composer-prisma-cloud/pg/pg-connection-string": ["pg-connection-string@2.14.0", "", {}, "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg=="], + + "@prisma/composer-prisma-cloud/pg/pg-protocol": ["pg-protocol@1.15.0", "", {}, "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ=="], + + "@prisma/composer/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma/composer/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma/composer/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma/config/effect/fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], + + "alchemy/@clack/prompts/@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="], + + "alchemy/pg/pg-connection-string": ["pg-connection-string@2.14.0", "", {}, "sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg=="], + + "alchemy/pg/pg-protocol": ["pg-protocol@1.15.0", "", {}, "sha512-cq9sECI5s0+uPUXjbz8ioyPJni6RzsRib0US67i5IoTZKw8fNeYlVE7u8F4dG7vEJJtc5wdD1K189lCCUwqWTQ=="], + + "ink/wrap-ansi/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=="], + "prisma/@prisma/dev/@electric-sql/pglite": ["@electric-sql/pglite@0.4.1", "", {}, "sha512-mZ9NzzUSYPOCnxHH1oAHPRzoMFJHY472raDKwXl/+6oPbpdJ7g8LsCN4FSaIIfkiCKHhb3iF/Zqo3NYxaIhU7Q=="], "prisma/@prisma/dev/@electric-sql/pglite-socket": ["@electric-sql/pglite-socket@0.1.1", "", { "peerDependencies": { "@electric-sql/pglite": "0.4.1" }, "bin": { "pglite-server": "dist/scripts/server.js" } }, "sha512-p2hoXw3Z3LQHwTeikdZNsFBOvXGqKY2hk51BBw+8NKND8eoH+8LFOtW9Z8CQKmTJ2qqGYu82ipqiyFZOTTXNfw=="], @@ -786,5 +1572,289 @@ "prisma/@prisma/dev/@hono/node-server": ["@hono/node-server@1.19.11", "", { "peerDependencies": { "hono": "^4" } }, "sha512-dr8/3zEaB+p0D2n/IUrlPF1HZm586qgJNXK1a9fhg/PzdtkK7Ksd5l312tJX2yBuALqDYBlG20QEbayqPyxn+g=="], "prisma/@prisma/dev/@prisma/streams-local": ["@prisma/streams-local@0.1.2", "", { "dependencies": { "ajv": "^8.12.0", "better-result": "^2.7.0", "env-paths": "^3.0.0", "proper-lockfile": "^4.1.2" } }, "sha512-l49yTxKKF2odFxaAXTmwmkBKL3+bVQ1tFOooGifu4xkdb9NMNLxHj27XAhTylWZod8I+ISGM5erU1xcl/oBCtg=="], + + "tsdown/rolldown/@oxc-project/types": ["@oxc-project/types@0.139.0", "", {}, "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw=="], + + "tsdown/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.1.5", "", { "os": "android", "cpu": "arm64" }, "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ=="], + + "tsdown/rolldown/@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.1.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw=="], + + "tsdown/rolldown/@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.1.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g=="], + + "tsdown/rolldown/@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.1.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA=="], + + "tsdown/rolldown/@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.1.5", "", { "os": "linux", "cpu": "arm" }, "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw=="], + + "tsdown/rolldown/@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q=="], + + "tsdown/rolldown/@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA=="], + + "tsdown/rolldown/@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.1.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg=="], + + "tsdown/rolldown/@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.1.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA=="], + + "tsdown/rolldown/@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ=="], + + "tsdown/rolldown/@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg=="], + + "tsdown/rolldown/@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.1.5", "", { "os": "none", "cpu": "arm64" }, "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw=="], + + "tsdown/rolldown/@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.1.5", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA=="], + + "tsdown/rolldown/@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.1.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw=="], + + "tsdown/rolldown/@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.1.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA=="], + + "vite/rolldown/@oxc-project/types": ["@oxc-project/types@0.139.0", "", {}, "sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw=="], + + "vite/rolldown/@rolldown/binding-android-arm64": ["@rolldown/binding-android-arm64@1.1.5", "", { "os": "android", "cpu": "arm64" }, "sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ=="], + + "vite/rolldown/@rolldown/binding-darwin-arm64": ["@rolldown/binding-darwin-arm64@1.1.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw=="], + + "vite/rolldown/@rolldown/binding-darwin-x64": ["@rolldown/binding-darwin-x64@1.1.5", "", { "os": "darwin", "cpu": "x64" }, "sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g=="], + + "vite/rolldown/@rolldown/binding-freebsd-x64": ["@rolldown/binding-freebsd-x64@1.1.5", "", { "os": "freebsd", "cpu": "x64" }, "sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA=="], + + "vite/rolldown/@rolldown/binding-linux-arm-gnueabihf": ["@rolldown/binding-linux-arm-gnueabihf@1.1.5", "", { "os": "linux", "cpu": "arm" }, "sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw=="], + + "vite/rolldown/@rolldown/binding-linux-arm64-gnu": ["@rolldown/binding-linux-arm64-gnu@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q=="], + + "vite/rolldown/@rolldown/binding-linux-arm64-musl": ["@rolldown/binding-linux-arm64-musl@1.1.5", "", { "os": "linux", "cpu": "arm64" }, "sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA=="], + + "vite/rolldown/@rolldown/binding-linux-ppc64-gnu": ["@rolldown/binding-linux-ppc64-gnu@1.1.5", "", { "os": "linux", "cpu": "ppc64" }, "sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg=="], + + "vite/rolldown/@rolldown/binding-linux-s390x-gnu": ["@rolldown/binding-linux-s390x-gnu@1.1.5", "", { "os": "linux", "cpu": "s390x" }, "sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA=="], + + "vite/rolldown/@rolldown/binding-linux-x64-gnu": ["@rolldown/binding-linux-x64-gnu@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ=="], + + "vite/rolldown/@rolldown/binding-linux-x64-musl": ["@rolldown/binding-linux-x64-musl@1.1.5", "", { "os": "linux", "cpu": "x64" }, "sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg=="], + + "vite/rolldown/@rolldown/binding-openharmony-arm64": ["@rolldown/binding-openharmony-arm64@1.1.5", "", { "os": "none", "cpu": "arm64" }, "sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw=="], + + "vite/rolldown/@rolldown/binding-wasm32-wasi": ["@rolldown/binding-wasm32-wasi@1.1.5", "", { "dependencies": { "@emnapi/core": "1.11.1", "@emnapi/runtime": "1.11.1", "@napi-rs/wasm-runtime": "^1.1.6" }, "cpu": "none" }, "sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA=="], + + "vite/rolldown/@rolldown/binding-win32-arm64-msvc": ["@rolldown/binding-win32-arm64-msvc@1.1.5", "", { "os": "win32", "cpu": "arm64" }, "sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw=="], + + "vite/rolldown/@rolldown/binding-win32-x64-msvc": ["@rolldown/binding-win32-x64-msvc@1.1.5", "", { "os": "win32", "cpu": "x64" }, "sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA=="], + + "@prisma-next/config-loader/@prisma-next/config/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma-next/config-loader/@prisma-next/config/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma-next/config-loader/@prisma-next/config/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/config-loader/@prisma-next/config/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/config-loader/@prisma-next/config/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma-next/config-loader/@prisma-next/emitter/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/config-loader/@prisma-next/emitter/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/config-loader/@prisma-next/emitter/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/@prisma-next/contract": ["@prisma-next/contract@0.15.0", "", { "dependencies": { "@prisma-next/utils": "0.15.0", "@standard-schema/spec": "^1.1.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-Q6OFZKtUy3gSZwW6r0Nld4/m2jUSMJGsBzjXssT9dFY3mPVRUEuwUd0xQoDt1A/6/ZIKA2i/jzZo/qWf4HNgyw=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma-next/language-server/@prisma-next/config/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/language-server/@prisma-next/config/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/language-server/@prisma-next/config/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma-next/language-server/@prisma-next/framework-components/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/language-server/@prisma-next/framework-components/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/language-server/@prisma-next/framework-components/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma-next/language-server/@prisma-next/psl-parser/@prisma-next/contract/arktype": ["arktype@2.2.3", "", { "dependencies": { "@ark/schema": "0.56.2", "@ark/util": "0.56.2", "arkregex": "0.0.8" } }, "sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@clack/prompts/@clack/core": ["@clack/core@1.4.3", "", { "dependencies": { "fast-wrap-ansi": "^0.2.0", "sisteransi": "^1.0.5" } }, "sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/emitter/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/emitter/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/emitter/prettier": ["prettier@3.9.5", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/cli/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/migration-tools/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/contract-authoring": ["@prisma-next/contract-authoring@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-u4JMXV30V5TagLONn6ODwvD0ets+hwvfy2VEqYbDMOmQXSWUaVxLzwF9hGCCMDMEgnEla0LxXnU2GxfV+Fb48A=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/ids": ["@prisma-next/ids@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "uniku": "^0.0.13" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-bgukphJ0QZYZf18ie2fqOA+Y/GcJ961cLnItSXSsVc008exZ5BNIz1+SVTNkIDE6GIbh58dpq7hostIT3u7bWg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/psl-parser": ["@prisma-next/psl-parser@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-vXAhl44/8lKtEszFtj6iIAmH8wor/yIrrhGNHGbbsl/9ukXSOcldLQz6re8DqvG1yXmStTzg1PHOnv8txQORPg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/sql-schema-ir": ["@prisma-next/sql-schema-ir@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-yN87M/a0ePPME+ND5tUlU3R59YrAtMp0Swk97T1/7Fvjgfgtst19gCu2PqDAJXBTsCMh43RVMRDlsfzreWPgLw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres/@prisma-next/sql-errors": ["@prisma-next/sql-errors@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WC+2ODH3nTAYVcZ8dvb1ut9FRb/iUiPnCWBUOU/LqCYHSWybzTp5FN648GVVKqOtbtKeQoJzqdoFvwLZc3BE5g=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres/pg-cursor": ["pg-cursor@2.21.0", "", { "peerDependencies": { "pg": "^8" } }, "sha512-IYvk/j+Suhtbo/C3uOf4JLsLK/gWxOTUOmYbDsbKnLaVJDq+KwhwK6ngpRfiCk8eDMS3AmGQABZCv0cREEzHQw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/emitter": ["@prisma-next/emitter@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/operations": "0.15.0", "@prisma-next/ts-render": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "prettier": "^3.9.4" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-kkaOsvDEAJ3CrOp6et9Pougly0tte83Tmub/D/ny/+ubN6tnZBOKTkSu1ZAqQLpCignjIvhvbYBqrzBKi700ww=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/sql-contract-emitter": ["@prisma-next/sql-contract-emitter@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/emitter": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-ZzhIl/feFg+lSPZBk0MGudpsad9Ss/YWW97A7tkQmKSh+Szw87tgGYHRohZ1DU8mXUsFFjZ1qsNOvi6GQkWSPg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/sql-schema-ir": ["@prisma-next/sql-schema-ir@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-yN87M/a0ePPME+ND5tUlU3R59YrAtMp0Swk97T1/7Fvjgfgtst19gCu2PqDAJXBTsCMh43RVMRDlsfzreWPgLw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-builder/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-contract-psl/@prisma-next/psl-parser": ["@prisma-next/psl-parser@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-vXAhl44/8lKtEszFtj6iIAmH8wor/yIrrhGNHGbbsl/9ukXSOcldLQz6re8DqvG1yXmStTzg1PHOnv8txQORPg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-contract-ts/@prisma-next/contract-authoring": ["@prisma-next/contract-authoring@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-u4JMXV30V5TagLONn6ODwvD0ets+hwvfy2VEqYbDMOmQXSWUaVxLzwF9hGCCMDMEgnEla0LxXnU2GxfV+Fb48A=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-orm-client/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-orm-client/@prisma-next/sql-errors": ["@prisma-next/sql-errors@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WC+2ODH3nTAYVcZ8dvb1ut9FRb/iUiPnCWBUOU/LqCYHSWybzTp5FN648GVVKqOtbtKeQoJzqdoFvwLZc3BE5g=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-orm-client/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-relational-core/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-relational-core/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-runtime/@prisma-next/ids": ["@prisma-next/ids@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0", "uniku": "^0.0.13" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-bgukphJ0QZYZf18ie2fqOA+Y/GcJ961cLnItSXSsVc008exZ5BNIz1+SVTNkIDE6GIbh58dpq7hostIT3u7bWg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-runtime/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-runtime/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/errors": ["@prisma-next/errors@0.15.0", "", { "dependencies": { "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-4GoytMRrgZs3JFABarhhkIp6NUq98woy2sWnemCVxs9eE4t7Hjtijlz/VItp44XgOdclhcYgj+WZtNul4KN/6Q=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/psl-parser": ["@prisma-next/psl-parser@0.15.0", "", { "dependencies": { "@prisma-next/config": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-vXAhl44/8lKtEszFtj6iIAmH8wor/yIrrhGNHGbbsl/9ukXSOcldLQz6re8DqvG1yXmStTzg1PHOnv8txQORPg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/sql-errors": ["@prisma-next/sql-errors@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-WC+2ODH3nTAYVcZ8dvb1ut9FRb/iUiPnCWBUOU/LqCYHSWybzTp5FN648GVVKqOtbtKeQoJzqdoFvwLZc3BE5g=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/sql-operations": ["@prisma-next/sql-operations@0.15.0", "", { "dependencies": { "@prisma-next/operations": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "arktype": "^2.2.2" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-fRmSNyCnUP38iJ+QrMDJBwDD3mtCZR5GgAPA0wRzXXPR3/MjSFGtZBmndNGYXfjmXGulv5pyZxL0RXkSg8bE+w=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/sql-schema-ir": ["@prisma-next/sql-schema-ir@0.15.0", "", { "dependencies": { "@prisma-next/contract": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/utils": "0.15.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-yN87M/a0ePPME+ND5tUlU3R59YrAtMp0Swk97T1/7Fvjgfgtst19gCu2PqDAJXBTsCMh43RVMRDlsfzreWPgLw=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/sql-contract/@prisma-next/framework-components/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/sql-contract/@prisma-next/framework-components/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/config/effect/fast-check/pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], + + "tsdown/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], + + "tsdown/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], + + "vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.11.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.2", "tslib": "^2.4.0" } }, "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ=="], + + "vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.11.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/config-loader/@prisma-next/errors/@prisma-next/framework-components/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma-next/language-server/@prisma-next/psl-parser/@prisma-next/contract/arktype/@ark/schema": ["@ark/schema@0.56.2", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg=="], + + "@prisma-next/language-server/@prisma-next/psl-parser/@prisma-next/contract/arktype/@ark/util": ["@ark/util@0.56.2", "", {}, "sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ=="], + + "@prisma-next/language-server/@prisma-next/psl-parser/@prisma-next/contract/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/ids/uniku": ["uniku@0.0.13", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-CerdqsiEH5CxnaheugbXiryBMCyMZcRr+l3nwJgVTLGLGx/DCRilHp2WS7v9xzCyTNPlqwdhxUObDfC1ivL6Kg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/adapter-postgres/@prisma-next/sql-operations/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/driver-postgres/@prisma-next/sql-operations/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/emitter/@prisma-next/ts-render": ["@prisma-next/ts-render@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-FBQtUIceiGXbIBSxVsovrXlF4bcSXBXHS4lqfkrcxAtB+p1cH5QpOAF/sz2xdMH0sgldyK9fS8zP9K4gtyRhFg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/family-sql/@prisma-next/emitter/prettier": ["prettier@3.9.5", "", { "bin": { "prettier": "bin/prettier.cjs" } }, "sha512-/FVl766LpUfB5vXgCYOYa0MeV/441Ia99AeICQIQFTY/Nw0roZwULcXpku5i1/m5kt/baz+s4Zogspd839HSMg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-builder/@prisma-next/sql-operations/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/sql-runtime/@prisma-next/ids/uniku": ["uniku@0.0.13", "", { "dependencies": { "@noble/hashes": "^2.0.1" } }, "sha512-CerdqsiEH5CxnaheugbXiryBMCyMZcRr+l3nwJgVTLGLGx/DCRilHp2WS7v9xzCyTNPlqwdhxUObDfC1ivL6Kg=="], + + "@prisma/composer-prisma-cloud/@prisma-next/postgres/@prisma-next/target-postgres/@prisma-next/sql-operations/@prisma-next/operations": ["@prisma-next/operations@0.15.0", "", { "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"] }, "sha512-sqLxza9c4FnfOVlpu3pz680Z4f7qoZuuGZMGX97YOVHSm4jdt+iQqi5ADLE3KxfraiW8B2CQ+yisoWu7RSapvA=="], + + "tsdown/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], + + "vite/rolldown/@rolldown/binding-wasm32-wasi/@emnapi/core/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA=="], } } diff --git a/module.ts b/module.ts new file mode 100644 index 0000000..435d96d --- /dev/null +++ b/module.ts @@ -0,0 +1,40 @@ +// The open-chat Composer topology: storage's durable tier feeds the streams +// module (S6), a Prisma Next-typed Postgres carries the app's own schema and +// runs its migrations at deploy, and the chat compute service depends on +// both. `streamsKey` binds to the SAME platform variable as the streams +// module's own `apiKey` — one bearer key, two consumers of its name (spec: +// open-chat-port Chosen design #1). A closed root: no boundary argument, no +// return — it only provisions. +import { module } from "@prisma/composer"; +import { envParam, envSecret } from "@prisma/composer-prisma-cloud"; +import { pnPostgres } from "@prisma/composer-prisma-cloud/prisma-next"; +import { storage } from "@prisma/composer-prisma-cloud/storage"; +import { streams } from "@prisma/composer-prisma-cloud/streams"; +import { openChatContract } from "./src/composer/contract"; +import chatService from "./src/composer/service"; + +export default module("open-chat", ({ provision }) => { + const store = provision(storage()); + const streamsModule = provision(streams(), { + deps: { store: store.store }, + secrets: { apiKey: envSecret("STREAMS_API_KEY") }, + }); + + const db = provision( + pnPostgres({ name: "database", contract: openChatContract, config: "./prisma-next.config.ts" }), + { id: "database" }, + ); + + provision(chatService, { + id: "chat", + deps: { db, streams: streamsModule.streams }, + params: { appOrigin: envParam("APP_ORIGIN") }, + secrets: { + openrouterApiKey: envSecret("OPENROUTER_API_KEY"), + betterAuthSecret: envSecret("BETTER_AUTH_SECRET"), + streamsKey: envSecret("STREAMS_API_KEY"), + stripeSecretKey: envSecret("STRIPE_SECRET_KEY"), + stripeWebhookSecret: envSecret("STRIPE_WEBHOOK_SECRET"), + }, + }); +}); diff --git a/package.json b/package.json index 9eacc25..56c8912 100644 --- a/package.json +++ b/package.json @@ -6,9 +6,10 @@ "scripts": { "dev": "bun --hot src/server/index.ts", "start": "bun src/server/index.ts", - "build": "bun run build:chat && bun run build:streams", + "build": "bun run build:chat && bun run build:streams && bun run build:launcher", "build:chat": "rm -rf dist/server && bun build --target=bun --production --outdir=dist/server src/start.ts", "build:streams": "rm -rf dist/streams && bun build --target=bun --production --outdir=dist/streams src/streams-app/index.ts", + "build:launcher": "rm -rf dist/composer && bun build --target=bun --production --outdir=dist/composer --external './dist/server/start.js' src/composer/start.ts", "typecheck": "tsc --noEmit", "test": "bun test", "db:generate": "prisma-next contract emit", @@ -18,6 +19,8 @@ }, "dependencies": { "@prisma-next/postgres": "^0.13.0", + "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", + "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", "@prisma/streams-local": "0.1.11", "@prisma/streams-server": "0.1.11", "@tanstack/db": "0.6.8", diff --git a/prisma-composer.config.ts b/prisma-composer.config.ts new file mode 100644 index 0000000..dac309f --- /dev/null +++ b/prisma-composer.config.ts @@ -0,0 +1,10 @@ +// The app's control-plane config (ADR-0017) — read ONLY by `prisma-composer +// deploy`/`destroy`, never imported by app code. +import { defineConfig } from "@prisma/composer/config"; +import { nodeBuild } from "@prisma/composer/node/control"; +import { prismaCloud, prismaState } from "@prisma/composer-prisma-cloud/control"; + +export default defineConfig({ + extensions: [prismaCloud(), nodeBuild()], + state: () => prismaState(), +}); diff --git a/src/composer/contract.ts b/src/composer/contract.ts new file mode 100644 index 0000000..73a4947 --- /dev/null +++ b/src/composer/contract.ts @@ -0,0 +1,21 @@ +// open-chat's Prisma Next data contract wrapped into the framework's +// `prisma-next` kind — the ONE value both ends reference: the resource end +// (`pnPostgres({ name, contract, config })` in module.ts) and the dependency +// end (`pnPostgres(openChatContract)` in service.ts). Emitted from +// contract.prisma by `prisma-next contract emit`. +// +// Typed as the framework's own AnyPnContract, not open-chat's generated +// Contract: the pkg.pr.new preview's @prisma/composer-prisma-cloud pins +// @prisma-next/*@0.15.0, while open-chat (and this contract.json) is on +// @prisma-next/postgres@^0.13.0 — the two versions' branded Contract types +// are nominally incompatible (FRICTION.md: "pnPostgres contract type version +// skew"), so the generated Contract type fails AnyPnContract's constraint. +// Nothing downstream reads the contract through its field types here — the +// framework only reads contractJson.storage.storageHash at runtime — so +// widening costs nothing for this port; open-chat's own src/prisma/db.ts +// keeps building its fully field-typed client straight from contract.json. +import type { AnyPnContract } from "@prisma/composer-prisma-cloud/prisma-next"; +import { pnContract } from "@prisma/composer-prisma-cloud/prisma-next"; +import contractJson from "../prisma/contract.json" with { type: "json" }; + +export const openChatContract = pnContract(contractJson); diff --git a/src/composer/service.ts b/src/composer/service.ts new file mode 100644 index 0000000..2f93eaf --- /dev/null +++ b/src/composer/service.ts @@ -0,0 +1,32 @@ +// The open-chat compute service: a Prisma Next-typed Postgres and a durable +// streams server as dependencies, plus the secrets and params the app's own +// process.env surface needs (see start.ts, the launcher that maps these onto +// it). GitHub/Google OAuth are intentionally not declared here — social +// sign-in is off in the port topology (spec: open-chat-port Chosen design #8). +import { secret, string } from "@prisma/composer"; +import node from "@prisma/composer/node"; +import { compute } from "@prisma/composer-prisma-cloud"; +import { pnPostgres } from "@prisma/composer-prisma-cloud/prisma-next"; +import { durableStreams } from "@prisma/composer-prisma-cloud/streams"; +import { openChatContract } from "./contract"; + +export default compute({ + name: "chat", + deps: { + db: pnPostgres(openChatContract), + streams: durableStreams(), + }, + params: { + appOrigin: string(), + openrouterAppName: string({ default: "Open Chat Local" }), + openrouterSiteUrl: string({ default: "http://localhost:3000" }), + }, + secrets: { + openrouterApiKey: secret(), + betterAuthSecret: secret(), + streamsKey: secret(), + stripeSecretKey: secret(), + stripeWebhookSecret: secret(), + }, + build: node({ module: import.meta.url, entry: "../../dist/composer/start.js" }), +}); diff --git a/src/composer/start.ts b/src/composer/start.ts new file mode 100644 index 0000000..47771a0 --- /dev/null +++ b/src/composer/start.ts @@ -0,0 +1,63 @@ +// The launcher: the `node()` build adapter's `entry` (see service.ts). The +// pack-printed bootstrap dynamically imports this build's output AFTER +// main.run(address, boot) has re-keyed the platform environment +// address-free, so service.config()/secrets() read it here with no address — +// the same shape as the streams module's own entrypoint +// (packages/1-prisma-cloud/2-shared-modules/streams/src/streams-entrypoint.ts +// in the framework repo), the precedent for this file. +// +// Assigns the env names open-chat's app already reads (src/server/env.ts), +// then imports the app's existing, already-built server entry unchanged — +// business logic is not touched (mission: lift the app into Composer without +// modifying it). +import service from "./service"; + +// Deliberately not calling service.load(): it hydrates every declared +// dependency eagerly, including "db" — and hydrating "db" throws. The +// pkg.pr.new preview's @prisma/composer-prisma-cloud bundles +// @prisma-next/sql-contract@0.15.0, whose runtime structural validator +// rejects open-chat's committed contract.json (emitted by prisma-next +// 0.13.0): "execution.mutations.defaults[N].ref.namespace must be a string +// (was missing)". FRICTION.md: "pnPostgres contract validation fails against +// the composer preview's bundled @prisma-next toolchain". Both dependency +// values are read the same way instead: the address-free env var the +// target's serializer stashes into process.env before boot() runs — an +// internal, undocumented key convention (COMPOSER__), not a +// public accessor. FRICTION.md: "pnPostgres has no raw connection-URL +// accessor" covers why "db" needs this regardless of the validation crash. +function stashedUrl(input: "db" | "streams"): string { + const key = `COMPOSER_${input.toUpperCase()}_URL`; + const value = process.env[key]; + if (!value) { + throw new Error(`${key} is unset — the "${input}" dependency did not stash a URL before boot.`); + } + return value; +} + +const { + openrouterApiKey, + betterAuthSecret, + streamsKey, + stripeSecretKey, + stripeWebhookSecret, +} = service.secrets(); +const { appOrigin, openrouterAppName, openrouterSiteUrl } = service.config(); + +process.env["DATABASE_URL"] = stashedUrl("db"); +process.env["STREAMS_URL"] = stashedUrl("streams"); +process.env["STREAMS_API_KEY"] = streamsKey.expose(); +process.env["OPENROUTER_API_KEY"] = openrouterApiKey.expose(); +process.env["BETTER_AUTH_SECRET"] = betterAuthSecret.expose(); +process.env["STRIPE_SECRET_KEY"] = stripeSecretKey.expose(); +process.env["STRIPE_WEBHOOK_SECRET"] = stripeWebhookSecret.expose(); +process.env["APP_ORIGIN"] = appOrigin; +process.env["OPENROUTER_APP_NAME"] = openrouterAppName; +process.env["OPENROUTER_SITE_URL"] = openrouterSiteUrl; + +// compute()'s own run() already exports the resolved `port` param as PORT +// (the near-universal convention), which the app's Bun.serve listener reads +// via src/server/env.ts — nothing to do here. + +// @ts-expect-error — the app's built server entry ships no declaration file +// (a Bun bundle, not a TS build); imported for its side effect only. +await import("../../dist/server/start.js"); diff --git a/tsconfig.json b/tsconfig.json index ad1bc84..733acfa 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -27,7 +27,14 @@ ], "resolveJsonModule": true }, - "include": ["src", "prisma-next.config.ts", "prisma.compute.ts", "tests"], + "include": [ + "src", + "prisma-next.config.ts", + "prisma.compute.ts", + "tests", + "module.ts", + "prisma-composer.config.ts" + ], // The streams app imports @prisma/streams-server, which ships raw .ts // sources that don't pass this project's compiler settings. The entry is // a ~20-line env bootstrap; it is verified at runtime instead. From 88d2a3cb9514c47429fb5270d8b3560c785a333a Mon Sep 17 00:00:00 2001 From: willbot Date: Fri, 17 Jul 2026 09:53:30 +0200 Subject: [PATCH 2/5] feat(composer): drop pnPostgres for plain postgres() (D1b) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The operator revised the 2026-07-15 pnPostgres decision after D1 hit two blocking findings: hydrate() discards the raw URL open-chat needs for its own pg.Pool, and the frameworks bundled @prisma-next 0.15.0 rejects open-chat 0.13.0-emitted contract.json at runtime. postgres()s binding IS { url } — exactly what open-chat needs, read through the public load(). open-chat keeps running its own db:init/db:push (ADR-0022: the contract hash is the thing, migrations are only the means). module.ts provisions postgres({ name: "database" }) instead of pnPostgres(...); service.ts declares db: postgres() instead of pnPostgres(contract); contract.ts (the AnyPnContract wrapper) is deleted, nothing else needed it. start.ts now calls service.load() for both db and streams and reads db.url/streams.url directly — the COMPOSER_*_URL env-var reach-around and its @ts-expect-error widening are gone; load() is now entirely public API. Verified: bun run typecheck and bun run build both green; a boot simulation (fabricated COMPOSER_* env, service.run() driving the real built launcher) starts the real open-chat server end-to-end through load(). FRICTION.md rewrites the pnPostgres entries: the workaround is gone but the finding is sharper for having tried the fix. A pnPostgres resource cannot satisfy a plain postgres() dependency (framework migrations + my own client is inexpressible), and the converse (typed resource + my own migrations) is blocked too, since the resource config field is required and the descriptor always runs PnMigration. Root cause: Contract welds kind-equality into both the provision-site assignability check and satisfies()s signature, so a cross-kind subtype relation cant be expressed. The version-skew finding is kept, marked not currently hit. Signed-off-by: willbot Signed-off-by: Will Madden --- FRICTION.md | 190 ++++++++++++++++++++------------------- module.ts | 21 ++--- src/composer/contract.ts | 21 ----- src/composer/service.ts | 15 ++-- src/composer/start.ts | 31 ++----- 5 files changed, 122 insertions(+), 156 deletions(-) delete mode 100644 src/composer/contract.ts diff --git a/FRICTION.md b/FRICTION.md index 8e9154f..400de06 100644 --- a/FRICTION.md +++ b/FRICTION.md @@ -8,59 +8,75 @@ preview of `prisma/composer`'s `main` at `ac1e7b1` (`@prisma/composer` + ## D1 — Topology scaffold -### 1. `pnPostgres(contract)` has no raw connection-URL accessor - -**Where hit:** writing the launcher (`src/composer/start.ts`), which needs to -set `DATABASE_URL` for open-chat's own `src/prisma/db.ts` (`new -Pool({ connectionString: env.DATABASE_URL })` + its own -`@prisma-next/postgres/runtime` client — built by app code, not the -framework). - -**Symptom:** `service.load()`'s `db` binding is a fully-typed Prisma Next -client (`Client`); nothing on it, or on `service.load()`/`config()`/ -`secrets()`, exposes the connection string that produced it. - -**Cause:** `pnPostgres(contract)`'s dependency declaration -(`packages/1-prisma-cloud/1-extensions/target/src/prisma-next.ts`) is: - -```ts -dependency({ - type: 'prisma-next', - connection: { params: { url: string() }, hydrate: ({ url }) => buildClient(contract, url) }, - required: contract, -}); -``` - -`hydrate` receives `url` but returns only the built client — the raw string -is discarded. This is deliberate for the common case (ADR-0022: the framework -constructs the typed client so the app never handles a bare connection -string), but open-chat's `db.ts` predates Composer and builds its own -`pg.Pool` + its own separate `@prisma-next/postgres/runtime` client from -`DATABASE_URL` directly — it does not accept a pre-built client object, and -changing that is app business logic (out of scope for this port). - -**Workaround used:** the raw URL does still land in `process.env` — the -target's serializer (`serializer.ts`'s `stash()`) writes every dependency -connection param to an address-free env var -(`COMPOSER__`, here `COMPOSER_DB_URL`) *before* `boot()` runs, -independently of whether anything ever calls `load()`. The launcher reads -`process.env.COMPOSER_DB_URL` directly. This is an internal, undocumented key -convention (not a public accessor) — grep-visible in `serializer.ts`'s -`configKey()`, not in any public type or doc. - -**Recommendation:** either (a) add a public accessor for a `pnPostgres` -dependency's raw connection string (e.g. `pnPostgres.url(contract)` returning -a `postgres()`-shaped `{ url }` binding alongside the typed-client one), for -apps that need to build their own client, or (b) document -`COMPOSER__` as a supported (if discouraged) escape hatch. - -### 2. `pnPostgres(contract)`'s `load()` throws — contract-validation failure against the preview's bundled `@prisma-next` toolchain - -**Where hit:** a boot-time smoke test of the launcher (`chatService.run()` -with fabricated `COMPOSER_*` env vars, see D1 verification), and would have -hit it for real on first deploy had it not been caught here. - -**Symptom:** +*Entries #1 and #2 below were rewritten in D1b (2026-07-16) after the +operator dropped `pnPostgres` for plain `postgres()` on both ends (spec: +open-chat-port Chosen design #7). Both workarounds they originally described +are gone from the code; the underlying framework gaps are not fixed, so the +findings stay, sharpened by having tried the fix.* + +### 1. A `pnPostgres` resource cannot satisfy a plain `postgres()` dependency — and the converse is blocked too + +**Where hit:** D1 wired `pnPostgres({ name, contract, config })` provisioning +a `pnPostgres(contract)` dependency. D1b then tried the shape this port +actually wants: provision a `pnPostgres` resource (framework-run migrations, +ADR-0022) but consume it through open-chat's own `pg.Pool` — i.e. a plain +`postgres()` dependency, since open-chat's `src/prisma/db.ts` builds its own +client from `{ url }` and does not accept a framework-built typed client. + +**Symptom:** TypeScript rejects it at the `provision()` call site. +`pnPostgres({ ... })` returns a `ResourceNode>`; +`postgres()`'s dependency end requires a `Contract<'postgres', PostgresConfig>`. +The two contracts' `kind` literals (`'prisma-next'` vs `'postgres'`) don't +match, so assignability fails before `satisfies` is ever reached at Load — +"framework migrations + my own client" is inexpressible. + +**Cause:** `Contract` +(`packages/0-framework/1-core/core/src/contract.ts`) welds `Kind` into two +places at once, both using the SAME type parameter as the contract they're +declared on: the provision-site TypeScript assignability check +(`ResourceNode` against a dependency's required contract, in `node.ts`), +and `satisfies(required: Contract)`'s own signature. A +`prisma-next` database genuinely IS a Postgres database — its `PnCmp` carries +a `{ url }`-shaped connection underneath the typed client — but nothing in +`Contract`'s shape lets a `'prisma-next'`-kinded contract declare "I also +satisfy `'postgres'`". Kind equality is baked into the type itself, not a +policy `satisfies` chooses, so a cross-kind subtype relation can't be +expressed at all. + +**Also tried, also blocked — the converse:** "provision a `pnPostgres` +resource but run my own migrations" (skip ADR-0022's framework-run migration) +is equally inexpressible. `PnPostgresResourceNode`'s `config` field (the +`prisma-next.config.ts` path) is required on the resource overload's argument +type — there is no `pnPostgres({ name, contract })` without it. And given a +`config` anyway, `prismaNextDescriptor`'s lowering +(`packages/1-prisma-cloud/1-extensions/target/src/descriptors/prisma-next.ts`) +unconditionally runs `PnMigration(...)` — no flag or resource variant +provisions the database and connection without migrating it. + +**Workaround used:** neither direction — this port uses plain `postgres()` +on both ends (`module.ts`'s resource, `service.ts`'s dependency) and keeps +running open-chat's own `db:init`/`db:push` as an operator step (D3). Per +ADR-0022 the contract hash is the thing and migrations are only the means, so +this doesn't need the framework to run them; open-chat gets neither +framework-run migrations nor the typed client, by design (Chosen design #7) +— it only ever needed the URL. + +**Recommendation:** let a `prisma-next` contract's `satisfies` accept a +`Contract<'postgres', unknown>` too, not just its own kind, when its +underlying storage genuinely is Postgres — which needs `Kind` widened off +`satisfies`'s parameter type, not just the value returned. Caution: a naive +"no required hash → satisfied" rule is wrong — it would let a `pnPostgres` +resource satisfy an unrelated `s3()`/`streams()` dependency too, since those +also have no required-hash concept. Any fix has to compare kind-compatibility +explicitly, not merely "hash present or absent". Not attempted here — a +`Contract` type change, out of scope for an app port. + +### 2. Version skew: framework's bundled `@prisma-next` 0.15.0 vs open-chat's 0.13.0-emitted `contract.json` + +**Where hit:** D1's boot-time smoke test of the launcher (`chatService.run()` +with fabricated `COMPOSER_*` env vars) when it still used `pnPostgres`. + +**Symptom (as hit under `pnPostgres`, before D1b removed it):** ``` ContractValidationError: Contract structural validation failed: @@ -74,56 +90,50 @@ execution.mutations.defaults[0].ref.namespace must be a string (was missing); thrown from inside `service.load()`. -**Cause:** version skew. The pkg.pr.new preview's `@prisma/composer-prisma-cloud` -declares its own `@prisma-next/*` dependencies at `0.15.0`; open-chat is -pinned to `@prisma-next/postgres@^0.13.0`, and `src/prisma/contract.json` was -emitted by that 0.13-vintage `prisma-next` CLI. Bun installs both — the -top-level hoisted `@prisma-next/postgres@0.13.0` (open-chat's own) and a -*nested* `node_modules/@prisma/composer-prisma-cloud/node_modules/@prisma-next/*@0.15.0` +**Cause:** the pkg.pr.new preview's `@prisma/composer-prisma-cloud` declares +its own `@prisma-next/*` dependencies at `0.15.0`; open-chat is pinned to +`@prisma-next/postgres@^0.13.0`, and `src/prisma/contract.json` was emitted +by that 0.13-vintage `prisma-next` CLI. Bun installs both — the top-level +hoisted `@prisma-next/postgres@0.13.0` (open-chat's own) and a *nested* +`node_modules/@prisma/composer-prisma-cloud/node_modules/@prisma-next/*@0.15.0` (composer's own) — because the version ranges don't overlap. When -`pnPostgres(contract)`'s `hydrate` calls into the *0.15.0* runtime with +`pnPostgres(contract)`'s `hydrate` called into the *0.15.0* runtime with open-chat's *0.13-emitted* `contractJson`, the newer runtime's structural -validator rejects it: `execution.mutations.defaults[].ref.namespace` is a -field the 0.13 emitter didn't write. - -This is not just a TypeScript nominal-branding annoyance (see the comment in -`src/composer/contract.ts` about `AnyPnContract` vs. open-chat's own -`Contract` type) — it is a genuine data-format incompatibility that crashes -at runtime. +validator rejected it: `execution.mutations.defaults[].ref.namespace` is a +field the 0.13 emitter didn't write. A genuine data-format incompatibility, +not just a TypeScript nominal-branding annoyance. -**Compounding effect:** `hydrateSync` (`packages/0-framework/1-core/core/src/hydrate.ts`) -hydrates *every* declared dependency in one synchronous pass with no -per-key laziness or isolation: +**Compounding effect (also no longer hit, same reason):** `hydrateSync` +(`packages/0-framework/1-core/core/src/hydrate.ts`) hydrates *every* declared +dependency in one synchronous pass with no per-key laziness or isolation: ```ts for (const [name, inputNode] of Object.entries(root.inputs)) { - deps[name] = inputNode.connection.hydrate(values as never); // throws here for "db" + deps[name] = inputNode.connection.hydrate(values as never); // threw here for "db" } ``` -So `db`'s failure poisons the *entire* `load()` call — the launcher cannot -call `service.load()` even just to read the harmless, trivially-hydrated -`streams.url` (`durableStreams()`'s hydrate is the identity function). +So `db`'s failure would have poisoned the *entire* `load()` call — the +launcher could not have called `service.load()` even just to read the +harmless, trivially-hydrated `streams.url`. -**Workaround used:** the launcher never calls `service.load()`. Both -dependency URLs (`db`, `streams`) are read via the same private -`COMPOSER__URL` env vars as finding #1 — `stash()` writes them -regardless of whether `load()` is ever called, so this sidesteps the crash -entirely. `service.secrets()`/`service.config()` are unaffected (they never -touch `root.inputs`) and are used normally. +**Status:** not hit anymore — D1b dropped `pnPostgres` entirely (Chosen +design #7), so this port never calls into the 0.15.0 runtime with open-chat's +0.13-emitted contract. Recorded so the incompatibility isn't lost: any future +port or app that DOES need `pnPostgres`'s typed client will still hit it. **Recommendation:** (a) real fix — align open-chat's `@prisma-next/*` pins with whatever version `@prisma/composer-prisma-cloud` depends on (or vice -versa) and regenerate `contract.json`/`contract.d.ts`; deferred here as an -operator-level, whole-app dependency decision, not a topology-wiring one. (b) -framework-side — `hydrateSync`/`hydrate` failing one input shouldn't prevent -reading any other already-hydratable input; consider per-key error -attribution at minimum (the current error gives no indication *which* -dependency failed without reading the stack). (c) `@prisma-next/postgres`'s -runtime validator rejecting a same-`schemaVersion` (`"1"`) contract emitted -two minor versions back is itself worth a `@prisma-next` compat note — -`contract.json`'s own `schemaVersion` field implies forward compatibility -within a schema version that didn't hold here. +versa) and regenerate `contract.json`/`contract.d.ts`; an operator-level, +whole-app dependency decision, not a topology-wiring one. (b) framework-side +— `hydrateSync`/`hydrate` failing one input shouldn't prevent reading any +other already-hydratable input; consider per-key error attribution at +minimum (the current error gives no indication *which* dependency failed +without reading the stack). (c) `@prisma-next/postgres`'s runtime validator +rejecting a same-`schemaVersion` (`"1"`) contract emitted two minor versions +back is itself worth a `@prisma-next` compat note — `contract.json`'s own +`schemaVersion` field implies forward compatibility within a schema version +that didn't hold here. ### 3. `node()` build adapter's `assemble()` copies a single file — incompatible with a multi-file Bun static-asset build diff --git a/module.ts b/module.ts index 435d96d..c389e94 100644 --- a/module.ts +++ b/module.ts @@ -1,16 +1,14 @@ // The open-chat Composer topology: storage's durable tier feeds the streams -// module (S6), a Prisma Next-typed Postgres carries the app's own schema and -// runs its migrations at deploy, and the chat compute service depends on -// both. `streamsKey` binds to the SAME platform variable as the streams -// module's own `apiKey` — one bearer key, two consumers of its name (spec: -// open-chat-port Chosen design #1). A closed root: no boundary argument, no -// return — it only provisions. +// module (S6), a plain Postgres resource carries the app's own schema (the +// app runs its own migrations — see service.ts), and the chat compute +// service depends on both. `streamsKey` binds to the SAME platform variable +// as the streams module's own `apiKey` — one bearer key, two consumers of +// its name (spec: open-chat-port Chosen design #1). A closed root: no +// boundary argument, no return — it only provisions. import { module } from "@prisma/composer"; -import { envParam, envSecret } from "@prisma/composer-prisma-cloud"; -import { pnPostgres } from "@prisma/composer-prisma-cloud/prisma-next"; +import { envParam, envSecret, postgres } from "@prisma/composer-prisma-cloud"; import { storage } from "@prisma/composer-prisma-cloud/storage"; import { streams } from "@prisma/composer-prisma-cloud/streams"; -import { openChatContract } from "./src/composer/contract"; import chatService from "./src/composer/service"; export default module("open-chat", ({ provision }) => { @@ -20,10 +18,7 @@ export default module("open-chat", ({ provision }) => { secrets: { apiKey: envSecret("STREAMS_API_KEY") }, }); - const db = provision( - pnPostgres({ name: "database", contract: openChatContract, config: "./prisma-next.config.ts" }), - { id: "database" }, - ); + const db = provision(postgres({ name: "database" }), { id: "database" }); provision(chatService, { id: "chat", diff --git a/src/composer/contract.ts b/src/composer/contract.ts deleted file mode 100644 index 73a4947..0000000 --- a/src/composer/contract.ts +++ /dev/null @@ -1,21 +0,0 @@ -// open-chat's Prisma Next data contract wrapped into the framework's -// `prisma-next` kind — the ONE value both ends reference: the resource end -// (`pnPostgres({ name, contract, config })` in module.ts) and the dependency -// end (`pnPostgres(openChatContract)` in service.ts). Emitted from -// contract.prisma by `prisma-next contract emit`. -// -// Typed as the framework's own AnyPnContract, not open-chat's generated -// Contract: the pkg.pr.new preview's @prisma/composer-prisma-cloud pins -// @prisma-next/*@0.15.0, while open-chat (and this contract.json) is on -// @prisma-next/postgres@^0.13.0 — the two versions' branded Contract types -// are nominally incompatible (FRICTION.md: "pnPostgres contract type version -// skew"), so the generated Contract type fails AnyPnContract's constraint. -// Nothing downstream reads the contract through its field types here — the -// framework only reads contractJson.storage.storageHash at runtime — so -// widening costs nothing for this port; open-chat's own src/prisma/db.ts -// keeps building its fully field-typed client straight from contract.json. -import type { AnyPnContract } from "@prisma/composer-prisma-cloud/prisma-next"; -import { pnContract } from "@prisma/composer-prisma-cloud/prisma-next"; -import contractJson from "../prisma/contract.json" with { type: "json" }; - -export const openChatContract = pnContract(contractJson); diff --git a/src/composer/service.ts b/src/composer/service.ts index 2f93eaf..c04e350 100644 --- a/src/composer/service.ts +++ b/src/composer/service.ts @@ -1,19 +1,22 @@ -// The open-chat compute service: a Prisma Next-typed Postgres and a durable -// streams server as dependencies, plus the secrets and params the app's own +// The open-chat compute service: a plain Postgres and a durable streams +// server as dependencies, plus the secrets and params the app's own // process.env surface needs (see start.ts, the launcher that maps these onto // it). GitHub/Google OAuth are intentionally not declared here — social // sign-in is off in the port topology (spec: open-chat-port Chosen design #8). +// +// Postgres is a plain `postgres()` dep, not `pnPostgres()`: its binding is +// `{ url }`, which is exactly what open-chat's own `src/prisma/db.ts` needs +// to build its `pg.Pool` (Better Auth shares that pool) — open-chat keeps +// running its own migrations (spec: open-chat-port Chosen design #7). import { secret, string } from "@prisma/composer"; import node from "@prisma/composer/node"; -import { compute } from "@prisma/composer-prisma-cloud"; -import { pnPostgres } from "@prisma/composer-prisma-cloud/prisma-next"; +import { compute, postgres } from "@prisma/composer-prisma-cloud"; import { durableStreams } from "@prisma/composer-prisma-cloud/streams"; -import { openChatContract } from "./contract"; export default compute({ name: "chat", deps: { - db: pnPostgres(openChatContract), + db: postgres(), streams: durableStreams(), }, params: { diff --git a/src/composer/start.ts b/src/composer/start.ts index 47771a0..c9846af 100644 --- a/src/composer/start.ts +++ b/src/composer/start.ts @@ -1,8 +1,8 @@ // The launcher: the `node()` build adapter's `entry` (see service.ts). The // pack-printed bootstrap dynamically imports this build's output AFTER // main.run(address, boot) has re-keyed the platform environment -// address-free, so service.config()/secrets() read it here with no address — -// the same shape as the streams module's own entrypoint +// address-free, so service.load()/config()/secrets() read it here with no +// address — the same shape as the streams module's own entrypoint // (packages/1-prisma-cloud/2-shared-modules/streams/src/streams-entrypoint.ts // in the framework repo), the precedent for this file. // @@ -12,28 +12,7 @@ // modifying it). import service from "./service"; -// Deliberately not calling service.load(): it hydrates every declared -// dependency eagerly, including "db" — and hydrating "db" throws. The -// pkg.pr.new preview's @prisma/composer-prisma-cloud bundles -// @prisma-next/sql-contract@0.15.0, whose runtime structural validator -// rejects open-chat's committed contract.json (emitted by prisma-next -// 0.13.0): "execution.mutations.defaults[N].ref.namespace must be a string -// (was missing)". FRICTION.md: "pnPostgres contract validation fails against -// the composer preview's bundled @prisma-next toolchain". Both dependency -// values are read the same way instead: the address-free env var the -// target's serializer stashes into process.env before boot() runs — an -// internal, undocumented key convention (COMPOSER__), not a -// public accessor. FRICTION.md: "pnPostgres has no raw connection-URL -// accessor" covers why "db" needs this regardless of the validation crash. -function stashedUrl(input: "db" | "streams"): string { - const key = `COMPOSER_${input.toUpperCase()}_URL`; - const value = process.env[key]; - if (!value) { - throw new Error(`${key} is unset — the "${input}" dependency did not stash a URL before boot.`); - } - return value; -} - +const { db, streams } = service.load(); const { openrouterApiKey, betterAuthSecret, @@ -43,8 +22,8 @@ const { } = service.secrets(); const { appOrigin, openrouterAppName, openrouterSiteUrl } = service.config(); -process.env["DATABASE_URL"] = stashedUrl("db"); -process.env["STREAMS_URL"] = stashedUrl("streams"); +process.env["DATABASE_URL"] = db.url; +process.env["STREAMS_URL"] = streams.url; process.env["STREAMS_API_KEY"] = streamsKey.expose(); process.env["OPENROUTER_API_KEY"] = openrouterApiKey.expose(); process.env["BETTER_AUTH_SECRET"] = betterAuthSecret.expose(); From 0a563e02a9c628624fbbcbc3cbb94d85796ae710 Mon Sep 17 00:00:00 2001 From: willbot Date: Fri, 17 Jul 2026 10:13:44 +0200 Subject: [PATCH 3/5] feat(composer): local dev loop through the launcher path (D2) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit scripts/dev.ts boots open-chat through src/composer/service.ts and start.ts — the same code path a deploy uses — against local stand-ins only: prisma dev for Postgres, the streams module's own local stand-in (startLocalStreamsServer), and a rebuilt dist/server bundle. No cloud credentials required; OPENROUTER_API_KEY gets a local placeholder when unset so sign-in, history, and the live-tail SSE path still work (chat generation fails cleanly at OpenRouter instead). Wired as `dev:composer`, independent of the existing `dev`/`db:dev` scripts. Verified end to end: guest sign-in, chat creation, and GET /api/chats/:id/events all work against the local stand-ins; a message send durably records the user message and fails the assistant turn with OpenRouter's own auth error, not a wiring failure. FRICTION.md gained three D2 findings: no local-dev harness exists for a compute() node with real deps (the deploy env-var wire protocol has to be hand-replicated), a node's real deployment address is only derivable from load-module.ts internals, and service.secrets()'s all-or-nothing resolution forces a placeholder for the one real external credential. Signed-off-by: willbot Signed-off-by: Will Madden --- FRICTION.md | 122 +++++++++++++++++++++++++++++++++++ package.json | 1 + scripts/dev.ts | 169 +++++++++++++++++++++++++++++++++++++++++++++++++ tsconfig.json | 3 +- 4 files changed, 294 insertions(+), 1 deletion(-) create mode 100644 scripts/dev.ts diff --git a/FRICTION.md b/FRICTION.md index 400de06..b0083f5 100644 --- a/FRICTION.md +++ b/FRICTION.md @@ -211,6 +211,128 @@ specifier as written relative to the importing file. `*/dist/server/start.js'` glob) — either matches; documented in `package.json`'s `build:launcher` script. +## D2 — Local dev loop + +### 5. No local-dev harness for a `compute()` node with real dependencies — the deploy env-var wire protocol has to be hand-replicated + +**Where hit:** writing `scripts/dev.ts` to run the app through the launcher +path (`src/composer/start.ts`), which reads `service.load()`/`config()`/`secrets()`. + +**Symptom:** those three accessors read a process-local "stash" that only +`run(address, boot)` populates — and `run()` itself only exists to be called +by the bootstrap.js a deploy prints +(`packages/1-prisma-cloud/0-lowering/lowering/src/compute/artifact.ts`: +`` `import main from "./main.mjs"; await main.run(${address}, () => import("./${appEntry}"));` ``). +There is no local-dev equivalent of that bootstrap anywhere in the framework +or its examples. Grepping the whole framework repo for a working call to +`.run()` on a node with real deps/params turns up nothing — every example's +entry file only calls `.config()`/`.load()`, and the one example whose +`scripts/dev.ts` boots a `compute()` node locally +(`examples/store/scripts/dev.ts`) sidesteps the whole problem: that node +declares `deps: {}` and is driven through `@prisma/composer/rpc`'s `serve()`, +which never needs a real env var to be set. + +**Cause:** `run()`'s job — deserialize the platform env keyed by the real +deployment address, then re-stash it address-free — is deploy machinery with +no local-dev-shaped door into it. To drive a real `compute()` node (deps, +params, secrets) outside a deploy, the only path is to write the exact env +vars `target/src/serializer.ts` expects and call `.run()` yourself: one write +per dependency's connection param (`COMPOSER___`, the raw +resolved value), one per service param (same key shape minus the input +segment, JSON-encoded), and *two* per secret slot (a pointer row +`COMPOSER__` naming a platform var, plus that platform var itself +holding the real value — never the value in the pointer row). + +**Workaround used:** `scripts/dev.ts` does exactly that by hand, but built on +the extension's own exported `configKey()` (`@prisma/composer-prisma-cloud`) +rather than a re-derived uppercase transform, so the key format can't +silently drift from whatever `serializer.ts` actually does. Cross-checked +against `packages/1-prisma-cloud/1-extensions/target/src/__tests__/control-lowering.test.ts`'s +literal expected keys (e.g. `COMPOSER_INGEST_STRIPEKEY`, +`COMPOSER_WEB_APPORIGIN`) to confirm the format before trusting it. + +**Compounding find:** the address to write these keys under isn't derivable +from the service declaration (`service.ts`) at all — it's assigned by +`provision()` in `load-module.ts` (`fullAddress = address === undefined ? id +: \`${address}.${id}\``), so a root-scope provision's address is its bare +`id`. `module.ts` provisions the chat service with `id: "chat"`, so the real +deploy address is `"chat"`, not `""` — nothing in `service.ts`, `start.ts`, +or any doc comment says so; it only falls out of reading the module-graph +builder. Using the wrong address (e.g. `""`) would still have worked for this +script, since it controls both the write side and the `run()` call — but it +would silently stop mirroring what a real deploy does, and wouldn't have +caught an address-handling bug if one existed. + +**Recommendation:** ship a local-dev entry point for a `compute()` node with +real deps — something like `service.runLocal(values)` that takes hydrated +dependency bindings and param/secret values directly (mirroring how +`serve()` in `@prisma/composer/rpc` sidesteps the env-var channel entirely +for RPC services) instead of requiring a caller to reconstruct +`run()`'s deploy-shaped env-var protocol by hand. Short of that, exporting +the node's real deployment address (or a helper to compute it from a +module + provision id, matching `load-module.ts`'s logic) so a hand-written +dev script doesn't have to reverse-engineer it from `load-module.ts`. + +### 6. `service.secrets()`'s eager, all-or-nothing resolution forces a placeholder for the one genuine external credential + +**Where hit:** wiring `openrouterApiKey` for local dev with "no cloud +credentials" as a hard requirement. + +**Symptom:** `service.secrets()` throws if *any* declared secret slot's +platform var is unset or empty (`deserializeSecrets` in `serializer.ts`) — +there's no way to leave one slot unbound and read the rest, and no +optional-secret declaration. Since `start.ts` calls `service.secrets()` +before doing anything else, an unset `OPENROUTER_API_KEY` doesn't just break +chat generation — it would crash the whole process before the HTTP server +ever starts, taking sign-in and the live-tail SSE path down too, neither of +which touches OpenRouter. + +**Cause:** by design (ADR-0029/Chosen design #8) — a required secret slot +is meant to fail loudly rather than silently run with a missing credential in +a *deployed* environment, which is the right default there. Local dev has a +different, legitimate need this doesn't distinguish: "let me run everything +that doesn't need this one credential." + +**Workaround used:** `scripts/dev.ts` generates a harmless local placeholder +string for `OPENROUTER_API_KEY` (and prints a warning) when the shell doesn't +already have one set, so `secrets()` resolves and the app boots. The +placeholder reaches OpenRouter's real API and fails there +(`"Missing Authentication header"`, confirmed by driving a message send +end-to-end) — chat generation fails exactly as expected, while sign-in, +history, and live tail all work, because none of them read that secret. +Exporting a real `OPENROUTER_API_KEY` before running the script uses it +instead (`scripts/dev.ts` prefers whatever's already in the shell's env over +generating a placeholder). + +**Recommendation:** no framework change proposed here — the workaround is +adequate and the strict-by-default behavior is correct for deploys. Worth +noting in local-dev-facing docs (the framework's, not just this port's) that +"missing secret" and "missing *this* secret, on purpose, for local dev" are +different needs the API doesn't distinguish. + +### 7. The `node()` build adapter's static entry means the launcher path can't hot-reload + +**Where hit:** `scripts/dev.ts` boots through `src/composer/start.ts`, whose +last line unconditionally does `await import("../../dist/server/start.js")` +— the app's own *built* production bundle, not its source. + +**Symptom:** `dev:composer` cannot be a fast edit-refresh loop the way `bun +run dev` (`bun --hot src/server/index.ts`) is — a code change requires +rerunning `bun run build:chat` (which `scripts/dev.ts` does unconditionally +on every invocation) before it's reflected. + +**Cause:** not really a bug — `start.ts`'s whole point (per its own comment) +is to import "the app's existing, already-built server entry unchanged," so +that the dev loop exercises the same artifact a deploy would build, not a +bypass. A static, pre-built entry point is inherent to that goal; hot reload +and "prove the deploy-shaped wiring" are different things to optimize for. + +**Workaround used:** none needed — `bun run dev` remains the fast loop for +business-logic iteration (untouched by this dispatch); `dev:composer` is a +separate, slower loop for proving the topology, rebuilding on every run. +Recorded because "why doesn't my composer dev loop hot-reload" is a +predictable point of confusion without this being written down somewhere. + ## Referenced elsewhere The following are recorded in the slice spec's "Chosen design" and diff --git a/package.json b/package.json index 56c8912..3f645b9 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "type": "module", "scripts": { "dev": "bun --hot src/server/index.ts", + "dev:composer": "bun scripts/dev.ts", "start": "bun src/server/index.ts", "build": "bun run build:chat && bun run build:streams && bun run build:launcher", "build:chat": "rm -rf dist/server && bun build --target=bun --production --outdir=dist/server src/start.ts", diff --git a/scripts/dev.ts b/scripts/dev.ts new file mode 100644 index 0000000..e656cdd --- /dev/null +++ b/scripts/dev.ts @@ -0,0 +1,169 @@ +#!/usr/bin/env bun +// Local dev loop for open-chat's Composer topology (S7/D2) — no cloud +// credentials. Unlike `bun run dev` (which runs src/server/index.ts +// directly, with hot reload), this boots the app through the exact same +// launcher path a deploy uses: src/composer/service.ts's compute() node, +// run() the way the deploy-printed bootstrap runs it, dynamically importing +// src/composer/start.ts once run() has resolved config/secrets. That's the +// point of this script — proving the topology's wiring locally, not fast +// iteration. `bun run dev` is untouched and remains the fast loop. +// +// Standing in for a deploy's provisioning + platform env vars: +// - Postgres: local, via open-chat's own `db:dev` (`prisma dev --detach`), +// then `prisma-next db init` (additive-only, safe to rerun). +// - Streams: the streams module's own local stand-in +// (startLocalStreamsServer from @prisma/composer-prisma-cloud/streams/testing) +// — SQLite, loopback, no auth — NOT open-chat's embedded +// @prisma/streams-local fallback (src/server/streams.ts's STREAMS_URL-unset +// path). Using the module's stand-in, and feeding its URL through the same +// COMPOSER_* config channel a deploy would, is what proves the topology's +// streams *dependency* resolves locally, not just that the app can start +// an embedded server on its own. +// - Secrets/params: written directly onto process.env in the wire format +// target/src/serializer.ts defines (COMPOSER_
_, uppercased; +// a secret slot is a pointer row naming a second env var that holds the +// real value) — the same protocol the deploy-printed bootstrap.js and +// platform env injection produce, reproduced by hand because there is no +// local-dev harness for a compute() node with real deps (see FRICTION.md). +// Built with this package's own configKey() rather than a hand-rolled +// uppercase transform, so this script cannot silently drift from the +// framework's actual key format. +// +// OPENROUTER_API_KEY is the one genuine external credential in this graph. +// This script runs without it: the secret slot still needs a non-empty value +// (service.secrets() resolves every slot eagerly — one missing/empty slot +// fails the whole call, taking sign-in and the live-tail path down with it), +// so an unset OPENROUTER_API_KEY gets a harmless local placeholder. Chat +// generation will fail against OpenRouter with that placeholder; sign-in, +// history, and the live-tail SSE path do not depend on it and still work. +// Export a real OPENROUTER_API_KEY before running this script to also +// exercise generation. +// +// Binds to 3000 by default (open-chat's own default); PORT=3100 bun run +// dev:composer picks a different one if something else already holds it. +import { randomBytes } from "node:crypto"; +import { configKey } from "@prisma/composer-prisma-cloud"; +import { startLocalStreamsServer } from "@prisma/composer-prisma-cloud/streams/testing"; +import chatService from "../src/composer/service"; + +// module.ts provisions the chat service at the module root with id "chat"; +// Load derives a root-scope provision's address as its bare id (no dotted +// prefix), so "chat" is the real deployment address — using it here (rather +// than "") means the env vars this script writes are exactly what a real +// deploy would write, not a look-alike local shortcut. +const ADDRESS = "chat"; + +// 3000 matches the app's own default (env.ts, README) — but it's only a +// default. A previous dev.ts run, another local server, or (as found while +// testing this script) an unrelated process on the operator's machine can +// already hold 3000, so this must stay overridable: PORT=3100 bun run +// dev:composer. +const DEFAULT_PORT = 3000; + +function resolvePort(): number { + const override = process.env["PORT"]; + if (override === undefined || override === "") return DEFAULT_PORT; + const parsed = Number(override); + if (!Number.isInteger(parsed) || parsed <= 0) { + throw new Error(`[dev:composer] PORT="${override}" is not a positive integer.`); + } + return parsed; +} + +function randomHex(bytes: number) { + return randomBytes(bytes).toString("hex"); +} + +async function run(cmd: string[]) { + const proc = Bun.spawn(cmd, { stdout: "pipe", stderr: "inherit" }); + const output = await new Response(proc.stdout).text(); + const code = await proc.exited; + if (code !== 0) { + throw new Error(`${cmd.join(" ")} exited with code ${code}`); + } + return output.trim(); +} + +console.log("[dev:composer] starting local Postgres (prisma dev)..."); +const dbUrlOutput = await run([ + "bunx", + "prisma", + "dev", + "--name", + "open-chat", + "--detach", +]); +const databaseUrl = dbUrlOutput.split("\n").at(-1)?.trim(); +if (!databaseUrl) { + throw new Error( + `[dev:composer] could not read the database URL from "prisma dev --detach"; got:\n${dbUrlOutput}`, + ); +} +console.log(`[dev:composer] Postgres ready: ${databaseUrl.replace(/:[^/:@]*@/, ":***@")}`); + +console.log("[dev:composer] ensuring tables exist (prisma-next db init)..."); +await run(["bunx", "prisma-next", "db", "init", "--db", databaseUrl, "-y"]); + +console.log("[dev:composer] starting the streams module's local stand-in..."); +const streams = await startLocalStreamsServer({ name: "open-chat-composer-dev" }); +console.log(`[dev:composer] streams stand-in ready: ${streams.exports.http.url}`); + +console.log("[dev:composer] building the app (bun run build:chat)..."); +await run(["bun", "run", "build:chat"]); + +function bindDependencyUrl(input: string, url: string) { + process.env[configKey(ADDRESS, { owner: { input }, name: "url" })] = url; +} + +function bindLiteralParam(name: string, value: unknown) { + process.env[configKey(ADDRESS, { owner: "service", name })] = JSON.stringify(value); +} + +/** + * Writes a secret slot's pointer row plus the platform var it points to — + * the same two-write shape deploy-time secret binding produces, just with a + * literal value here instead of a provisioned platform secret. Prefers a + * value already in this shell's env (so a developer who exports a real + * OPENROUTER_API_KEY, say, gets it used); otherwise falls back to a + * generated placeholder and warns. + */ +function bindSecret(slot: string, platformVar: string, fallback: () => string) { + const existing = process.env[platformVar]; + const value = existing && existing.length > 0 ? existing : fallback(); + if (!existing) { + console.warn( + `[dev:composer] ${platformVar} not set in this shell — using a local placeholder.`, + ); + } + process.env[configKey(ADDRESS, { owner: "service", name: slot })] = platformVar; + process.env[platformVar] = value; +} + +const port = resolvePort(); +const appOrigin = `http://localhost:${port}`; + +bindDependencyUrl("db", databaseUrl); +bindDependencyUrl("streams", streams.exports.http.url); +bindLiteralParam("appOrigin", appOrigin); +// The reserved `port` param — run() re-exports whatever it resolves to as +// PORT (the convention Bun.serve reads), so this is the one write that +// actually chooses which port the app binds to. +bindLiteralParam("port", port); + +bindSecret("openrouterApiKey", "OPENROUTER_API_KEY", () => `local-placeholder-${randomHex(8)}`); +bindSecret("betterAuthSecret", "BETTER_AUTH_SECRET", () => randomHex(32)); +bindSecret("streamsKey", "STREAMS_API_KEY", () => randomHex(16)); +bindSecret("stripeSecretKey", "STRIPE_SECRET_KEY", () => `sk_test_local_${randomHex(16)}`); +bindSecret( + "stripeWebhookSecret", + "STRIPE_WEBHOOK_SECRET", + () => `whsec_local_${randomHex(16)}`, +); + +process.on("SIGINT", async () => { + await streams.close(); + process.exit(0); +}); + +console.log("[dev:composer] booting open-chat through the Composer launcher..."); +await chatService.run(ADDRESS, () => import("../src/composer/start")); diff --git a/tsconfig.json b/tsconfig.json index 733acfa..ae7089a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -33,7 +33,8 @@ "prisma.compute.ts", "tests", "module.ts", - "prisma-composer.config.ts" + "prisma-composer.config.ts", + "scripts" ], // The streams app imports @prisma/streams-server, which ships raw .ts // sources that don't pass this project's compiler settings. The entry is From 9779afb60194071ffe08d75b6ca2066c851bc6ce Mon Sep 17 00:00:00 2001 From: willbot Date: Fri, 17 Jul 2026 14:30:37 +0200 Subject: [PATCH 4/5] feat(composer): real cloud deploy via the node() directory form (D3) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump @prisma/composer and @prisma/composer-prisma-cloud to the pkg.pr.new preview of prisma/composer main at 668c8b0, which adds node()s directory form. Switch the chat services build() to it, so the deploy artifact ships dist/server/ (the app server plus the client JS/CSS/image siblings its HTML import emits) alongside the composer launcher, not just the launcher alone. The launchers existing dynamic import of dist/server/start.js has to keep resolving both at build time (against src/composer/, where bun actually checks the specifier exists on disk) and at runtime (against wherever dir lands once copied into bundle/) — those are two different physical locations. Rather than edit the import (which would break the identical resolution scripts/dev.ts relies on for local dev), a new build:pack step copies dist/composer/ and dist/server/ into dist/pack/dist/{composer,server}/, reproducing the same nesting the original import string already assumes, and node()s dir/entry point at that tree. Deployed to real Prisma Cloud (workspace project open-chat) and verified end to end: the deployed URL serves the app shell and a client static asset (the proof the whole directory arrived); guest sign-in and chat creation write to Postgres; GET /api/chats//events returns 200 text/event-stream with the ready event; message generation fails at OpenRouters auth error with the placeholder key, as expected. No cron module exists in this ports topology (FRICTION.md already records this as not applicable), so there is nothing to verify registered there. Added FRICTION.md #8: the directory forms dir/entry has to reproduce the exact on-disk nesting a pre-existing dynamic import specifier assumed — shipping referenced files as dir siblings is not sufficient on its own. Signed-off-by: Will Madden Signed-off-by: willbot Signed-off-by: Will Madden --- FRICTION.md | 62 +++++++++++++++++++++++++++++++++++++++++ bun.lock | 62 ++++++++++++++++++++++++++++++++++++++--- package.json | 11 +++++--- src/composer/service.ts | 9 +++++- src/composer/start.ts | 13 +++++++++ 5 files changed, 148 insertions(+), 9 deletions(-) diff --git a/FRICTION.md b/FRICTION.md index b0083f5..34f0fd0 100644 --- a/FRICTION.md +++ b/FRICTION.md @@ -333,6 +333,68 @@ separate, slower loop for proving the topology, rebuilding on every run. Recorded because "why doesn't my composer dev loop hot-reload" is a predictable point of confusion without this being written down somewhere. +## D3 — Real cloud deploy + +Framework version under test for this dispatch: the pkg.pr.new preview of +`prisma/composer`'s `main` at `668c8b0` (adds `node()`'s directory form, +entries #3 and #4 above's blocker). + +### 8. The directory form's `dir`/`entry` has to reproduce the exact on-disk nesting a pre-existing dynamic import specifier assumed — "put the referenced files inside dir" isn't enough + +**Where hit:** switching `service.ts`'s `build: node(...)` to the directory +form so the deploy artifact carries `dist/server/` (the app's built server +plus the client JS/CSS/image siblings its HTML import emits) alongside the +composer launcher (`dist/composer/start.js`, entry #3's blocker). + +**Symptom:** the natural-looking config — +`node({ module: import.meta.url, dir: "../../dist", entry: "composer/start.js" })`, +with `dist/` containing `composer/` and `dist/server/` as siblings — fails at +`bun build` time, not deploy time: changing `start.ts`'s dynamic import from +`"../../dist/server/start.js"` to the sibling-relative `"../server/start.js"` +(matching that layout) makes bun's bundler report +`error: Could not resolve: "../server/start.js"` for a file that plainly +exists on disk one level up from `dist/composer/`. + +**Cause:** bun resolves a dynamic `import()`'s specifier against the +*source* file's on-disk location at build time (confirmed dist/server does +exist relative to `dist/composer/`... but the resolution happens against +`src/composer/start.ts`'s own directory, where no `server/` sibling exists — +only `dist/server/` two levels up, at the repo root). Having resolved it, +bun leaves the specifier string untouched in the bundled output — so the +*same* string then has to resolve correctly again at runtime, relative to +wherever the entry lands once `dir` is copied into `bundle/`. Entry #4 above +already found half of this (build-time resolution happens against the +specifier as written); the other half — that the resolved specifier is +frozen into the bundle unchanged, so its literal relative-path depth has to +match in two unrelated locations (the source tree at build time, the copied +`bundle/` tree at runtime) — only bites once a directory of siblings is +actually shipped, which single-file `node()` never triggered. + +**Workaround used:** left `start.ts`'s import as the original +`"../../dist/server/start.js"` (unchanged — it already resolves correctly +against `src/composer/` at build time, two levels up to the repo root and +back down). Added a `build:pack` script +(`rm -rf dist/pack && mkdir -p dist/pack/dist && cp -R dist/composer dist/pack/dist/composer && cp -R dist/server dist/pack/dist/server`) +that reproduces that same two-levels-deep nesting inside a dedicated tree, +and pointed `dir` at it: `node({ module: import.meta.url, dir: "../../dist/pack", entry: "dist/composer/start.js" })`. +Verified by resolving the exact specifier against the built `dist/pack` tree +with `path.resolve` before deploying, and by the live deploy in this +dispatch: the deployed URL serves both the app shell and a client asset +fetched from it (`index-.js`/`.css`, 200, correct content-type), which +only happens if the whole copied tree — launcher, server, and client +siblings — arrived and resolves. + +**Recommendation:** the building-an-app.md guide's directory-form section +says to resolve siblings "against `import.meta.url`, not the working +directory," which is necessary but not sufficient advice for a dynamic +`import()` specifically — it doesn't warn that the specifier is resolved +once, at build time, against the *source* module's location, then reused +unchanged at the *copied* location. A worked example with a dynamic import +inside the entry (not just static sibling reads, as `examples/env-param`'s +`Bun.file(new URL(...))` case shows) would have surfaced this faster; today +nothing in the docs or the `prisma-composer` skill mentions dynamic imports +inside a directory-form entry at all. + ## Referenced elsewhere The following are recorded in the slice spec's "Chosen design" and diff --git a/bun.lock b/bun.lock index a9cca43..8957b06 100644 --- a/bun.lock +++ b/bun.lock @@ -6,8 +6,8 @@ "name": "open-chat", "dependencies": { "@prisma-next/postgres": "^0.13.0", - "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", - "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", + "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@668c8b0", + "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@668c8b0", "@prisma/streams-local": "0.1.11", "@prisma/streams-server": "0.1.11", "@tanstack/db": "0.6.8", @@ -379,9 +379,9 @@ "@prisma/client-runtime-utils": ["@prisma/client-runtime-utils@7.8.0", "", {}, "sha512-5NQZztQ0oY/ADFkmd9gPuweH5A1/CCY8YQPorLLO0Mu6a87mY5gsnDkzmFmIHs9NFaLnZojzgddFVN4RpKYrdw=="], - "@prisma/composer": ["@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", { "dependencies": { "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "c12": "^3.3.4", "clipanion": "^3.2.1", "effect": "4.0.0-beta.93", "postgres": "^3.4.9", "tsdown": "^0.22.4" }, "bin": { "prisma-composer": "./dist/bin.mjs" } }, "sha512-vI0uLSZyEAsCEji02OznXyE6gwXEML2G+anG7BK4ZaVeFJLnZOuQ62x4jaNYQvnJ9Z+KcMoFDpzQc/lcv/nPTQ=="], + "@prisma/composer": ["@prisma/composer@https://pkg.pr.new/prisma/composer/@prisma/composer@668c8b0", { "dependencies": { "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "c12": "^3.3.4", "clipanion": "^3.2.1", "effect": "4.0.0-beta.93", "esbuild": "^0.28.1", "postgres": "^3.4.9" }, "bin": { "prisma-composer": "./dist/bin.mjs" } }, "sha512-3rQl01xzMH48po4gW8tK/ODS2QC5gtCw8MgbXjYrbQFDPT5+GargzwkO82ytabcHBjlc4cJ64XKCO6/42BqDBQ=="], - "@prisma/composer-prisma-cloud": ["@prisma/composer-prisma-cloud@https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", { "dependencies": { "@prisma-next/cli": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/postgres": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "effect": "4.0.0-beta.93", "pathe": "^2.0.3", "pg": "8.22.0", "postgres": "^3.4.9", "tsdown": "^0.22.4" } }, "sha512-gWtYT3P/FcXpdvgXpf0+OOHbAY8tP+1MCg7Z+JCucx7GwecYUvDCuzNV8uxolW8I9kx2PDD09W6/kPyAordefg=="], + "@prisma/composer-prisma-cloud": ["@prisma/composer-prisma-cloud@https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@668c8b0", { "dependencies": { "@prisma-next/cli": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/postgres": "0.15.0", "@prisma-next/sql-contract": "0.15.0", "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@668c8b0", "@prisma/management-api-sdk": "^1.47.0", "@standard-schema/spec": "^1.1.0", "alchemy": "2.0.0-beta.59", "arktype": "^2.2.3", "effect": "4.0.0-beta.93", "pathe": "^2.0.3", "pg": "8.22.0", "postgres": "^3.4.9", "tsdown": "^0.22.4" } }, "sha512-Sdifg2gb5ThXaaOYT4AKyGGr8/XvpNPF8b0HaheNLysG+GKqPPYCni6cQcWsdbdrZeDsCw6WXirpVSm08O3LJQ=="], "@prisma/compute-sdk": ["@prisma/compute-sdk@0.26.0", "", { "dependencies": { "better-result": "^2.7.0", "jiti": "^2.7.0", "tar-stream": "^3.1.8", "tiny-invariant": "1.3.3", "ws": "^8.20.0" }, "peerDependencies": { "@prisma/management-api-sdk": ">=1.36.0" } }, "sha512-wNESYAyjgiCPj+Ib8xRSldbmra5kdOKeN4GFV3adADOnc0X7vwqyvx3V+5JB6epuTQcpfi7jHXRwS5EKc4+/pQ=="], @@ -1377,6 +1377,8 @@ "@prisma/composer/clipanion": ["clipanion@3.2.1", "", { "dependencies": { "typanion": "^3.8.0" } }, "sha512-dYFdjLb7y1ajfxQopN05mylEpK9ZX0sO1/RfMXdfmwjlIsPkbh4p7A682x++zFPLDCo1x3p82dtljHf5cW2LKA=="], + "@prisma/composer/esbuild": ["esbuild@0.28.1", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.28.1", "@esbuild/android-arm": "0.28.1", "@esbuild/android-arm64": "0.28.1", "@esbuild/android-x64": "0.28.1", "@esbuild/darwin-arm64": "0.28.1", "@esbuild/darwin-x64": "0.28.1", "@esbuild/freebsd-arm64": "0.28.1", "@esbuild/freebsd-x64": "0.28.1", "@esbuild/linux-arm": "0.28.1", "@esbuild/linux-arm64": "0.28.1", "@esbuild/linux-ia32": "0.28.1", "@esbuild/linux-loong64": "0.28.1", "@esbuild/linux-mips64el": "0.28.1", "@esbuild/linux-ppc64": "0.28.1", "@esbuild/linux-riscv64": "0.28.1", "@esbuild/linux-s390x": "0.28.1", "@esbuild/linux-x64": "0.28.1", "@esbuild/netbsd-arm64": "0.28.1", "@esbuild/netbsd-x64": "0.28.1", "@esbuild/openbsd-arm64": "0.28.1", "@esbuild/openbsd-x64": "0.28.1", "@esbuild/openharmony-arm64": "0.28.1", "@esbuild/sunos-x64": "0.28.1", "@esbuild/win32-arm64": "0.28.1", "@esbuild/win32-ia32": "0.28.1", "@esbuild/win32-x64": "0.28.1" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw=="], + "@prisma/composer/postgres": ["postgres@3.4.9", "", {}, "sha512-GD3qdB0x1z9xgFI6cdRD6xu2Sp2WCOEoe3mtnyB5Ee0XrrL5Pe+e4CCnJrRMnL1zYtRDZmQQVbvOttLnKDLnaw=="], "@prisma/composer-prisma-cloud/@prisma-next/cli": ["@prisma-next/cli@0.15.0", "", { "dependencies": { "@clack/prompts": "^1.6.0", "@prisma-next/cli-telemetry": "0.15.0", "@prisma-next/config": "0.15.0", "@prisma-next/config-loader": "0.15.0", "@prisma-next/contract": "0.15.0", "@prisma-next/emitter": "0.15.0", "@prisma-next/errors": "0.15.0", "@prisma-next/framework-components": "0.15.0", "@prisma-next/language-server": "0.15.0", "@prisma-next/migration-tools": "0.15.0", "@prisma-next/psl-parser": "0.15.0", "@prisma-next/psl-printer": "0.15.0", "@prisma-next/utils": "0.15.0", "arktype": "^2.2.2", "ci-info": "^4.3.1", "clipanion": "4.0.0-rc.4", "closest-match": "^1.3.3", "colorette": "^2.0.20", "commander": "^14.0.3", "esbuild": "^0.28.1", "jsonc-parser": "^3.3.1", "package-manager-detector": "^1.7.0", "pathe": "^2.0.3", "string-width": "^8.2.1", "strip-ansi": "^7.2.0", "wrap-ansi": "^10.0.0" }, "peerDependencies": { "typescript": ">=5.9" }, "optionalPeers": ["typescript"], "bin": { "prisma-next": "dist/cli.js" } }, "sha512-TJ9lMiyfC5Sdw5C7+LNzXmn5kX1ZQAFcxHffUgt8kvAo1yfXV9QRviibOUXsYAm8ZlMyVvvLBpmThP4M62MBCA=="], @@ -1553,6 +1555,58 @@ "@prisma/composer/arktype/arkregex": ["arkregex@0.0.8", "", { "dependencies": { "@ark/util": "0.56.2" } }, "sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ=="], + "@prisma/composer/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.28.1", "", { "os": "aix", "cpu": "ppc64" }, "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ=="], + + "@prisma/composer/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.28.1", "", { "os": "android", "cpu": "arm" }, "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ=="], + + "@prisma/composer/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.28.1", "", { "os": "android", "cpu": "arm64" }, "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg=="], + + "@prisma/composer/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.28.1", "", { "os": "android", "cpu": "x64" }, "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng=="], + + "@prisma/composer/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.28.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q=="], + + "@prisma/composer/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.28.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ=="], + + "@prisma/composer/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.28.1", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw=="], + + "@prisma/composer/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.28.1", "", { "os": "freebsd", "cpu": "x64" }, "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ=="], + + "@prisma/composer/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.28.1", "", { "os": "linux", "cpu": "arm" }, "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ=="], + + "@prisma/composer/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.28.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g=="], + + "@prisma/composer/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.28.1", "", { "os": "linux", "cpu": "ia32" }, "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w=="], + + "@prisma/composer/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg=="], + + "@prisma/composer/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ=="], + + "@prisma/composer/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.28.1", "", { "os": "linux", "cpu": "ppc64" }, "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ=="], + + "@prisma/composer/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.28.1", "", { "os": "linux", "cpu": "none" }, "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ=="], + + "@prisma/composer/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.28.1", "", { "os": "linux", "cpu": "s390x" }, "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag=="], + + "@prisma/composer/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.28.1", "", { "os": "linux", "cpu": "x64" }, "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA=="], + + "@prisma/composer/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw=="], + + "@prisma/composer/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.28.1", "", { "os": "none", "cpu": "x64" }, "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg=="], + + "@prisma/composer/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.28.1", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q=="], + + "@prisma/composer/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.28.1", "", { "os": "openbsd", "cpu": "x64" }, "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw=="], + + "@prisma/composer/esbuild/@esbuild/openharmony-arm64": ["@esbuild/openharmony-arm64@0.28.1", "", { "os": "none", "cpu": "arm64" }, "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg=="], + + "@prisma/composer/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.28.1", "", { "os": "sunos", "cpu": "x64" }, "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ=="], + + "@prisma/composer/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.28.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA=="], + + "@prisma/composer/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.28.1", "", { "os": "win32", "cpu": "ia32" }, "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg=="], + + "@prisma/composer/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.28.1", "", { "os": "win32", "cpu": "x64" }, "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A=="], + "@prisma/config/effect/fast-check": ["fast-check@3.23.2", "", { "dependencies": { "pure-rand": "^6.1.0" } }, "sha512-h5+1OzzfCC3Ef7VbtKdcv7zsstUQwUDlYpUTvjeUsJAssPgLn7QzbboPtL5ro04Mq0rPOsMzl7q5hIbRs2wD1A=="], "alchemy/@clack/prompts/@clack/core": ["@clack/core@0.5.0", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-p3y0FIOwaYRUPRcMO7+dlmLh8PSRcrjuTndsiA0WAFbWES0mLZlrjVoBRZ9DzkPFJZG6KGkJmoEAY0ZcVWTkow=="], diff --git a/package.json b/package.json index 3f645b9..479bbda 100644 --- a/package.json +++ b/package.json @@ -7,21 +7,24 @@ "dev": "bun --hot src/server/index.ts", "dev:composer": "bun scripts/dev.ts", "start": "bun src/server/index.ts", - "build": "bun run build:chat && bun run build:streams && bun run build:launcher", + "build": "bun run build:chat && bun run build:streams && bun run build:launcher && bun run build:pack", "build:chat": "rm -rf dist/server && bun build --target=bun --production --outdir=dist/server src/start.ts", "build:streams": "rm -rf dist/streams && bun build --target=bun --production --outdir=dist/streams src/streams-app/index.ts", "build:launcher": "rm -rf dist/composer && bun build --target=bun --production --outdir=dist/composer --external './dist/server/start.js' src/composer/start.ts", + "build:pack": "rm -rf dist/pack && mkdir -p dist/pack/dist && cp -R dist/composer dist/pack/dist/composer && cp -R dist/server dist/pack/dist/server", "typecheck": "tsc --noEmit", "test": "bun test", "db:generate": "prisma-next contract emit", "db:push": "prisma-next db update", "db:init": "prisma-next db init", - "db:dev": "prisma dev --name open-chat --detach" + "db:dev": "prisma dev --name open-chat --detach", + "deploy": "bun run build && ( set -a; . ./.env; . \"${PRISMA_DEPLOY_ENV:?PRISMA_DEPLOY_ENV is required}\"; set +a; bun node_modules/.bin/prisma-composer deploy module.ts )", + "destroy": "( set -a; . ./.env; . \"${PRISMA_DEPLOY_ENV:?PRISMA_DEPLOY_ENV is required}\"; set +a; bun node_modules/.bin/prisma-composer destroy module.ts --production )" }, "dependencies": { "@prisma-next/postgres": "^0.13.0", - "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@ac1e7b1", - "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@ac1e7b1", + "@prisma/composer": "https://pkg.pr.new/prisma/composer/@prisma/composer@668c8b0", + "@prisma/composer-prisma-cloud": "https://pkg.pr.new/prisma/composer/@prisma/composer-prisma-cloud@668c8b0", "@prisma/streams-local": "0.1.11", "@prisma/streams-server": "0.1.11", "@tanstack/db": "0.6.8", diff --git a/src/composer/service.ts b/src/composer/service.ts index c04e350..1a28441 100644 --- a/src/composer/service.ts +++ b/src/composer/service.ts @@ -31,5 +31,12 @@ export default compute({ stripeSecretKey: secret(), stripeWebhookSecret: secret(), }, - build: node({ module: import.meta.url, entry: "../../dist/composer/start.js" }), + // The directory form (node()'s dir/entry pair): `bun run build:pack` + // reproduces dist/composer/ and dist/server/ inside dist/pack/dist/, so + // dir ships both the launcher and the app's built server (plus the client + // JS/CSS/image siblings its HTML import emits) as one tree, at the same + // nesting depth start.ts's dynamic import already expects (see start.ts). + // The single-file form couldn't express "ship the launcher AND the + // server tree it imports" at all. + build: node({ module: import.meta.url, dir: "../../dist/pack", entry: "dist/composer/start.js" }), }); diff --git a/src/composer/start.ts b/src/composer/start.ts index c9846af..24a1a3d 100644 --- a/src/composer/start.ts +++ b/src/composer/start.ts @@ -10,6 +10,19 @@ // then imports the app's existing, already-built server entry unchanged — // business logic is not touched (mission: lift the app into Composer without // modifying it). +// +// The `node()` build adapter's directory form (service.ts) ships this +// launcher and the built server together as one copied tree. Bun resolves a +// dynamic import()'s specifier against the SOURCE file's on-disk location at +// build time (then leaves the string untouched in the bundle) — so the +// specifier below must exist on disk relative to this file both at build +// time and, unchanged, relative to wherever the bundle lands at runtime. +// "../../dist/server/start.js" satisfies both: two levels up from +// src/composer/ lands at the repo root, matching two levels up from +// dist/composer/ once built — and `bun run build:pack` (package.json) +// reproduces that exact nesting (dist/pack/dist/{composer,server}/) inside +// the tree `dir` ships, so the same string still resolves after deploy +// copies it verbatim into `bundle/`. import service from "./service"; const { db, streams } = service.load(); From 3f6215ab776edd5ebc6dbf3d399c71d464991dc4 Mon Sep 17 00:00:00 2001 From: willbot Date: Fri, 17 Jul 2026 15:27:43 +0200 Subject: [PATCH 5/5] feat(composer): preview-stage deploy proves branch-scoped isolation (D4) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Deploy the same open-chat topology a second time to an isolated preview stage (prisma-composer deploy module.ts --stage preview-d4), then verify and tear it down. The stage mechanism is a Branch of the same open-chat Project (ADR-0023/0024): the CLI classifies preview-d4 as role "preview" on its own, with its own compute services, its own database resource, and its own branch-scoped APP_ORIGIN — none of it shared with production. APP_ORIGIN needs a real two-step deploy: the preview URL isn't known until the first deploy assigns it, so deploy #1 runs with a placeholder, then the platform variable is corrected via a direct Management API PATCH once the real URL is known. That correction alone doesn't survive a redeploy — Alchemy diffs the envParam pointer's NAME, which never changes, not the value, which it can't even read back — so picking up the correction needs a genuinely different artifact hash, not just a rerun. Verified end to end on the preview URL: app shell and a client asset both 200, guest sign-in, chat creation, and the SSE ready event. Verified isolation in both directions by querying each stage's database directly: the preview chat exists only in the preview database, D3's two production chats exist only in the production database, and the preview and production APP_ORIGIN rows are separate platform-variable records (one project-level "production" class, one branch-scoped "preview" class). Tore the preview stage down (destroy module.ts --stage preview-d4) and confirmed the branch, its apps, and its database are gone from the Management API, and that production still serves 200 throughout and after. Added FRICTION.md #9 (the APP_ORIGIN correction/redeploy gap above) and #10 (a clean isolation-verification writeup, plus a near-miss: the project's auto-provisioned default database — same name as the project — is a decoy; this port's schema lives in the separately-named "database" resource on each branch). Also gitignores .alchemy/ and .prisma-composer/, the CLI's own generated, overwritten-every-run local build cache — same treatment as dist/. Signed-off-by: Will Madden Signed-off-by: willbot Signed-off-by: Will Madden --- .gitignore | 2 + FRICTION.md | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 114 insertions(+) diff --git a/.gitignore b/.gitignore index 5c9d22a..7324c7c 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ output/ *.log .prisma/ var/ +.alchemy/ +.prisma-composer/ diff --git a/FRICTION.md b/FRICTION.md index 34f0fd0..7f55384 100644 --- a/FRICTION.md +++ b/FRICTION.md @@ -395,6 +395,118 @@ inside the entry (not just static sibling reads, as `examples/env-param`'s nothing in the docs or the `prisma-composer` skill mentions dynamic imports inside a directory-form entry at all. +## D4 — Preview-stage deploy and stage isolation + +Framework version under test for this dispatch: same pkg.pr.new preview of +`prisma/composer`'s `main` at `668c8b0` D3 used — no framework version bump. +Date: 2026-07-17. + +### 9. Correcting an `envParam`'s value after the URL it depends on is known doesn't survive a redeploy — Alchemy sees no diff, so the correction never reaches a running instance + +**Where hit:** setting `APP_ORIGIN` on the `preview-d4` stage. The real +preview URL (`https://iyhpiotsvrlr10zce97gifph.ewr.prisma.build`) isn't known +until after the chat service's first deploy assigns it — the same +chicken-and-egg `deploying.md` § CI already documents for a fresh stage's +first deploy ("CI must export the values... preflight copies missing ones up +on that first deploy"). What the guide doesn't cover is *correcting* that +value once you know it. + +**Symptom:** deploy #1 (with a placeholder `APP_ORIGIN` in the deploy shell) +succeeds, preflight fills the platform variable from the placeholder since +the branch had none yet, and the app is reachable at its real URL. Directly +`PATCH`ing the platform variable's value via the Management API +(`/v1/environment-variables/{id}`) to the real URL succeeds (200). Redeploying +immediately after — same command, same shell env, now with the corrected +`APP_ORIGIN` — reports `Plan: 39 to noop` and creates nothing. The running +instance keeps serving the placeholder value; guest sign-in fails with a +`Set-Cookie` whose `Secure`/origin checks quietly don't match the placeholder +host. + +**Cause.** Two facts compound. First (already known, PRO-211/FT-5227's +family): a compute deployment's env map is materialized once at +deployment-create and never re-resolved — confirmed reading +`packages/1-prisma-cloud/0-lowering/lowering/src/compute/Deployment.ts`'s +comment on `DeploymentProps.environment`: "the provider never reads this... +its only job is the Alchemy dependency edge... force a new deployment when +any upstream value changes." Second, and the actual new finding: **an +`envParam`'s stored row is a pointer to the platform variable's NAME +(`APP_ORIGIN`), not its value** (`config-params.md` § Binding a param at +provision) — and that pointer's *value* (the string `"APP_ORIGIN"`) never +changes across deploys, regardless of what the real platform value is. Since +`EnvironmentVariable`'s own value field is "stored encrypted; not readable +back" (`EnvironmentVariable.ts`), Alchemy has nothing to diff against and +correctly reports no change — from its point of view nothing about the +declared graph changed. The one thing that *does* force a new deployment is +`artifactHash` (a comment on `DeploymentProps` says so explicitly: "part of +the props so a new build... forces a fresh deployment; a byte-identical +`artifactPath` alone would diff as a no-op") — but an unmodified rebuild is +byte-identical (`build:pack`'s tar is deterministic, fixed mtimes, per +`compute.ts`'s own comment), so even re-running `bun run build && deploy` +doesn't help. + +**Workaround used:** after the `PATCH`, force a genuinely different artifact: +add a one-line, clearly-marked temporary side-effecting statement to +`src/composer/start.ts` (a `console.error` — a bare comment risks +minification stripping it), rebuild, redeploy (this time `chat-deploy` +correctly shows `updating`/`updated`), then `git checkout -- +src/composer/start.ts` to drop the marker before committing. Verified: guest +sign-in against the redeployed preview URL returns a `__Secure-` cookie +scoped to that URL, and chat creation + the SSE `ready` event both work. + +**Recommendation:** this is a real gap, not just an inconvenient CLI surface +— `deploying.md`'s CI section documents the *first*-deploy fill-from-shell +path but says nothing about correcting a value afterward, and there's no CLI +affordance for it (no `--force`, no "touch this deployment" command). Two +independent fixes would close it: (a) let `prisma-composer deploy` accept an +explicit "redeploy anyway" flag that bypasses the no-op short-circuit for a +named target, sidestepping the need for a fake artifact change; (b) since the +whole reason `APP_ORIGIN` needs a second pass is "the value isn't known until +the first deploy assigns the URL," consider whether the framework could +resolve and inject the app's own assigned URL as a well-known dependency +input (the way a database's connection string already flows in) rather than +requiring the operator to round-trip it through a platform env var by hand. + +### 10. Direct-write env var mutations show up correctly in the platform's own class/branch scoping, confirming stage isolation is real, not just believed + +**Where hit:** verifying `APP_ORIGIN` and the database were actually isolated +per stage, per this dispatch's mandate to verify rather than assume. + +**Not friction — a clean result worth recording.** Every check came back +exactly as ADR-0023/0024 predict, with no surprises: + +- `GET /v1/projects/{id}/branches` classified `preview-d4` as + `"role": "preview"` on its own — the framework never asserts this + (`ADR-0024` § Rationale: "the platform's classification... derived from + Branch presence, never from a role lookup"), and the platform result + matched. +- The chat service's `database` resource minted a *separate* database row + per branch (`db_cmrowto9509yj1adz03twh7bw` on `main`, + `db_cmroyr1g80dyw1adzfm3lljef` on `preview-d4`) — confirmed by listing + `GET /v1/projects/{id}/databases` and cross-checking `branchId`. +- `APP_ORIGIN` lives as two entirely separate `environment-variables` rows — + one `class: "production"` at the project level (`branchId: null`), one + `class: "preview"` scoped to the branch id — and `PATCH`ing the preview row + provably left the production row's `updatedAt` untouched. +- A chat created on the preview URL (`chat_7c6c4442-...`) exists only in the + preview database (`psql`, direct connection, confirmed by row count and by + id lookup); the two chats already in the production database from D3 + (`chat_08616685-...`, `chat_dd7c47ca-...`) are absent from the preview + database and vice versa. + +**One easy way to get this wrong:** the project holds *three* databases per +branch — the resource named `database` (this port's own schema, what +`module.ts` provisions), the auto-provisioned default database named after +the project (`open-chat`, always empty — this port never uses it, see +gotchas.md "Creating a database with isDefault:true fails"), and +`storage.db` (the storage module's own). A first attempt at this isolation +check queried the project's *default* database by mistake (same name as the +project, easy to reach for) and found it completely empty on both stages — +which briefly looked like a real bug before re-reading `module.ts` and +querying the correctly-named `database` resource instead. Recorded because +"three databases per branch, only one of which your app's migrations ever +touch" is exactly the kind of thing an operator debugging a "why is +production empty" alarm would want written down. + ## Referenced elsewhere The following are recorded in the slice spec's "Chosen design" and