From d5e8e28e58250c6b12f6d75841c1523fc89bba7f Mon Sep 17 00:00:00 2001 From: willbot Date: Tue, 11 Aug 2026 18:49:13 +0200 Subject: [PATCH 1/6] feat(cli): mount the composer command family in the v8 bin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The prisma bin imports composer's family directly (contract S3, "The prisma bin imports the family directly"), so `prisma composer deploy | destroy | dev | log` run composer's own handlers in the prisma process. The family arrives from @prisma/composer's dedicated ./family entrypoint, as a production dependency of the published CLI, pinned to the pkg.pr.new preview of composer#220 until the tandem release. Everything the family needs was already on the Runtime the bin assembles: streams, env, cwd, exit, signal subscription, the node:child_process spawn adapter, the credential manager and the disk config loader. The one junction worth a test of its own is the config section, which is the only piece where a mount can be wrong without anything failing to construct: a test drives the real tree with a prisma.config.ts whose `composer` section names a path, and asserts the path reaches composer's handler. The published package's node floor moves to >= 24, composer's floor, because it now depends on composer. @prisma/cli-engine's floor does not move: composer consumes the engine and must not re-inherit its own floor through it. The repo's own toolchain moves with the package, since its tests import the family. The mount's price is measured rather than asserted. A fresh process runs `--version` through the real bin with a module loader hook recording every module it evaluates: composer's family module loads, nothing from alchemy or effect does, and no signal listener survives the run. The canary is the same probe plus the one dynamic import a composer command makes, which loads 468 constellation modules and installs alchemy's import-time SIGINT and SIGTERM handlers — the detector is not vacuous, and what it is detecting is real. Records: the S3 divergence file enumerates what a prisma-composer user sees change; the 1c brief is closed with a disposition per deliverable; ledger Q2 and two coverage-ledger rows are corrected where S3 falsified them. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- .../assets/briefs/1c-leftovers-composer.md | 54 + .../assets/s2/parity-divergences-s2c.md | 11 +- .../assets/s2/parity-divergences-s3.md | 268 ++ .drive/projects/prisma-cli-v8/deferred.md | 62 +- .drive/projects/prisma-cli-v8/plan.md | 5 +- .../prisma-cli-v8/specs/s2-overview.md | 11 +- .node-version | 2 +- CONTRIBUTING.md | 2 +- README.md | 2 +- docs/onboarding/getting-started.md | 2 +- package.json | 2 +- packages/cli/README.md | 2 +- packages/cli/package.json | 3 +- packages/cli/src/v8/cli.ts | 25 +- .../v8-config/composer-section.config.ts | 5 + .../cli/tests/fixtures/v8-startup-probe.mjs | 47 + packages/cli/tests/v8-bin.test.ts | 33 + .../cli/tests/v8-composer-isolation.test.ts | 87 + packages/cli/tests/v8-mount-coverage.test.ts | 24 +- packages/cli/tests/v8-spawn-adapter.test.ts | 5 +- pnpm-lock.yaml | 3046 ++++++++++++++++- pnpm-workspace.yaml | 8 + 22 files changed, 3581 insertions(+), 125 deletions(-) create mode 100644 .drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md create mode 100644 packages/cli/tests/fixtures/v8-config/composer-section.config.ts create mode 100644 packages/cli/tests/fixtures/v8-startup-probe.mjs create mode 100644 packages/cli/tests/v8-composer-isolation.test.ts diff --git a/.drive/projects/prisma-cli-v8/assets/briefs/1c-leftovers-composer.md b/.drive/projects/prisma-cli-v8/assets/briefs/1c-leftovers-composer.md index 8fe87a84..3ba7b533 100644 --- a/.drive/projects/prisma-cli-v8/assets/briefs/1c-leftovers-composer.md +++ b/.drive/projects/prisma-cli-v8/assets/briefs/1c-leftovers-composer.md @@ -1,5 +1,13 @@ # Brief: composer config-contract compliance and control-API test double +> **CLOSED at S3 closure (D4, 2026-08-11).** This brief was paused, and +> S3 has now settled all three deliverables — two of them by doing the +> work under a different contract, one by handing the remainder back. +> The dispositions are recorded at the end of this file. The brief is +> kept, not deleted: it is the statement of the problem each disposition +> answers, and the paused-work record in +> `../s3/composer-inventory.md` §6 points here. + Repo: prisma/composer (main). Three deliverables. Operator: Will Madden. Process: verify every claim against current code first; stop and report numbered questions with options and a recommendation on anything this brief doesn't settle. ## Context @@ -36,3 +44,49 @@ Hosts driving `@prisma/composer/control` (deploy/destroy/dev/log) need a double ## Commit discipline Explicit staging only. `git commit -s --trailer "Signed-off-by: Will Madden "`, body ends with `Co-Authored-By: `. Composer's `origin` in the operator's clones is the bot SSH alias; verify the target PR is open before pushing to an existing PR branch. + +## Dispositions (S3 closure, D4) + +**Deliverable 1 — config validation returns diagnostics: SUPERSEDED, and +done.** S3's contract rule R-S3-2 asked for the same semantics from a +different starting point — the engine's `ConfigSection.validate` must +return `SectionValidation` and must never throw — so composer's +throwing loader was rewritten to value-plus-diagnostics under that rule +in D2 rather than under this brief. What the brief asked for is what +shipped: a loaded config carries structured diagnostics tagged with the +section they concern, commands fail only on a section they need, an +unevaluable module yields one evaluation diagnostic, and nothing throws +from construction. The rendering is the engine's rather than composer's +own. One thing the brief listed is not S3's to claim: the +before/after pinning of rendered output for currently-failing configs. +The rendering surface changed wholesale with the engine port, so the +guarantee "user-visible behaviour may only change in framing" was +overtaken; the change is enumerated in +`../s2/parity-divergences-s3.md` instead. + +**Deliverable 2 — effect-resolution preflight becomes a diagnostic: +SPLIT.** The part S3 had to own is the part with nowhere else to live: +the prisma bin has no composer `bin.ts` to run an import-time check in, +so the check moved INTO the shared config-load machinery (R-S3-2), +where it surfaces as the already-registered +`DEPS.EFFECT_VERSION_CONFLICT` diagnostic. The user-visible consequence +— commands that need no config, `--help` included, now survive a +mismatched `effect` in the consumer's tree — is recorded in the +divergence file. **The rest stays with the composer team**: the +`DEPS.EXECUTOR_UNLOADABLE` backstop is untouched by S3 and was never +verified against the new path, and the two checks the brief names +(`check:npm-effect-resolution`, the effect CI probe) were updated in D3 +but not run, because they perform real npm installs and need network — +tracked in `../../deferred.md`. Whoever runs them owns any fallout. + +**Deliverable 3 — published control-API test double: DELIVERED**, as +S3's R-S3-5 test surface (2). It is exported from composer's `./testing` +entrypoint, fixture-backed with the same operation signatures and a +working `DevSession` double, with the compile-time conformance check the +brief asked for, plus one requirement the brief did not state and S3 +does: its built chunk must contain no import path to the real +implementation, verified by building the tarball and grepping the chunk +for alchemy and effect. The family export takes an optional operations +argument (`createComposerFamily({ operations })`) so a host can mount +the real grammar against the double, which is how prisma-cli's family +tests stay free of alchemy and containers. diff --git a/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s2c.md b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s2c.md index ddb7fc3b..254ef421 100644 --- a/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s2c.md +++ b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s2c.md @@ -593,11 +593,14 @@ and the default endpoint are all unchanged. `prisma-cli app run` has no v8 counterpart and is not coming back: Composer's commands supersede it. This is a ruled drop, not a -deferral. There is no `service run` port, no engine mechanism for -passing a child process's exit code through (which is what ledger Q2 -asked about — the question closes with the drop), and S2d needs no +deferral. There is no `service run` port, and S2d needs no legacy carve-out, because deleting the commander shell deletes the -command with it. Anyone running a local dev server through +command with it. (This entry also said there was no engine mechanism +for passing a child process's exit code through, which is what ledger +Q2 asked about. True when written; S3 built one for composer's +converge — `ctx.spawn` and the `exitWithChildStatus` settlement. The +drop stands, and Q2 stays closed by it: the mechanism now exists and +the command still does not.) Anyone running a local dev server through `prisma-cli app run` moves to Composer. ### `app deploy` and `app build` are dropped (operator ruling, 2026-08-10) diff --git a/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md new file mode 100644 index 00000000..acfe8e15 --- /dev/null +++ b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md @@ -0,0 +1,268 @@ +# S3 parity divergences — the composer family + +Every known place where the composer family as it now ships differs +from the `prisma-composer` CLI it replaces. Same entry format as +`parity-divergences.md`, and the same standing ruling behind it (S2 +ruling 10: divergences are enumerated, not discovered). + +**The baseline here is not `prisma-cli`.** The other files in this +directory compare a ported command against the shipping platform CLI. +Composer's four commands have no platform predecessor: what changes is +what a `prisma-composer` user sees, so every entry below is written +against composer's own CLI as inventoried in +[`../s3/composer-inventory.md`](../s3/composer-inventory.md). + +Two engine-global records apply wholesale and are not repeated per +command: the S1 whoami-scoped record +([`../engine/whoami-parity-divergences.md`](../engine/whoami-parity-divergences.md)) +for json framing, format auto-selection, channel discipline, rendering +style and the shared flag family; and this directory's `parity-divergences.md` +preamble. Composer's users have seen none of it before, so the engine's +shared flags (`--format`, `--log-level`, `--verbose`, `--quiet`, `--yes`, +`--confirm`, `--interactive`, `--color`, `--config`) are all new on these +four commands, and so is the fact that human output is chosen only when +stdout is a TTY. + +## The invocation + +`prisma-composer ` becomes `prisma composer `: the +family mounts under a `composer` root in the prisma bin (S2 standing +ruling 1; TML-3189 holds the final grammar). Composer's own thin CLI +survives and keeps the unprefixed spellings, so both invocations exist +and run the same handlers in the same way — the prefix is the whole +difference. + +**Help examples name the wrong invocation under the prisma bin.** +Composer writes its examples as `{bin} deploy src/service.ts`, which is +right for `prisma-composer` and wrong for `prisma`, where the command is +`prisma composer deploy`. The engine substitutes `{bin}` with the CLI +name and nothing else (operator ruling, 2026-08-09: examples never +contain the binary name), and composer cannot know where a host mounted +it. So `prisma composer deploy --help` currently shows +`prisma deploy src/service.ts` in its Examples block. Nothing else in +the help is wrong, and the same defect is unreachable from composer's +own CLI. Fixing it needs a mount-aware placeholder in the engine +(`{command}` substituted with the command's mounted path) and composer +rewriting its four example strings to use it — a coordinated change +across both repos, recorded in `deferred.md`. + +## `deploy --production` is dropped + +Legacy declared `--production` on the shared abstract command class, so +clipanion listed it in `deploy --help`, and passing it always failed +with `DEPLOY.FLAG_INVALID` (exit 2) — the flag was accepted by the +parser and rejected by the command (inventory D1). The v8 `deploy` +declares only the flags it honours, so `--production` is gone from its +help and `prisma composer deploy --production ` settles +`CLI.INVALID_ARGUMENTS` ("No flag registered for --production"), exit 2. + +The exit code does not move; the error code and message do, and the +help no longer advertises a flag that cannot work. `destroy` keeps +`--production`, where it is genuinely valid. + +## The reproduce hint is a next action, and the failure envelope is gone + +When the alchemy child failed, legacy printed the `DEPLOY.ENGINE_FAILED` +envelope and then two bare `console.error` lines to stderr +(`render-error.ts:27-37`): + +``` +Generated stack file: +Run `` from to reproduce this directly. +``` + +The v8 handler settles through `exitWithChildStatus({ nextActions })` +instead. Three things change for the user: + +- **The hint is a typed `run-command` next action**, rendered in the + engine's next-action style: label "Run the converge directly from + `` to reproduce this", the command as its `command`, and + "Generated stack file: ``" as its `reason`. Same three facts, + now machine-readable. +- **No failure envelope is printed.** The child owned the terminal and + already said what went wrong; the run exits with the child's status + verbatim and prints only the next action. `DEPLOY.ENGINE_FAILED` is + therefore no longer a code a user sees on this path — it survives + only for a failure that never reached a child. +- **The hint is dropped when a signal killed the child.** The user + pressed Ctrl-C: there is nothing to reproduce, so the run settles + 128 + the signal number with no envelope and no actions, whatever the + handler asked for. Legacy collapsed a signalled child's status + (`run-alchemy.ts:61`) and printed the hint anyway. + +## `--json` is refused on `deploy`, `destroy` and `dev`; `log` gains it + +No composer command had a json mode at all. The engine gives every +command one, and these three give it back: they hand the terminal to a +child process whose output cannot be framed, so `--json` (and +`--format json`) is rejected **at parse time**, before the command does +any work — `CLI.JSON_UNSUPPORTED`, exit 2, with the reason stated in the +command's own help ("This command hands the terminal to another program +and does not support --json."). + +`log` never spawns and keeps json: its lines are its payload. So a +composer user gains a machine-readable `log` and gains an explicit, +early refusal on the other three, where before there was no flag to +pass. + +Note the interaction with format auto-selection: a piped +`prisma composer deploy ` does not silently become a json run — +it stays human, because json is refused rather than auto-selected. + +## Usage, parse errors and bare invocation + +- **A parse failure now says what was wrong.** Any clipanion parse error + — unknown flag, missing ``, a dangling `--name` — was replaced + by the full detailed usage text with the reason discarded (inventory + D6). The engine reports the specific failure: `CLI.INVALID_ARGUMENTS` + naming the flag and the value it could not read, or + `CLI.UNKNOWN_COMMAND` with a suggestion (`prisma composer nope` → + "No command registered for `nope`, did you mean `log`?"). Both exit 2, + as the usage wall did. +- **A bare group invocation exits 0, not 2.** `prisma-composer` with no + arguments printed usage to stderr and exited **2** (inventory D7). + `prisma composer` prints the group's usage and exits **0**. A script + that used the exit code to tell "no arguments" from "ran successfully" + can no longer. +- **Help output shape.** The engine's `USAGE` / `FLAGS` / `ARGUMENTS` + blocks replace clipanion's, every command gains the shared flag family + in its usage line, and the group gains a `COMMANDS` list. `--help` + still exits 0. Which stream it lands on is now the engine's global + format rule rather than a constant: human format writes help to + stdout, json format to stderr, and format is auto-selected from + whether stdout is a TTY — so a piped `--help` writes to stderr, where + legacy always wrote to stdout. + +## `--tail` becomes a typed number flag, and its validation widens + +Legacy took `--tail` as a string and ran `Number.parseInt(value, 10)` +over it, so `--tail 5abc` silently became `5` (inventory D5), and a +hand-written check rejected `NaN` and negatives with a `UsageError` +("`--tail` must be a non-negative integer."), exit 2. + +The v8 `log` declares `flag.number`, which changes the answer in both +directions: + +| input | legacy | v8 | +| --- | --- | --- | +| `--tail 5abc` | silently `5` | `CLI.INVALID_ARGUMENTS`, exit 2, naming the value | +| `--tail abc` | usage error, exit 2 | `CLI.INVALID_ARGUMENTS`, exit 2 | +| `--tail 1.5` | silently `1` | **accepted** as `1.5` | +| `--tail -1` | usage error, exit 2 | **accepted** as `-1` | + +The first two rows are the fix the port was for. The last two are a +real widening: the engine's number flag validates only that the value is +a number, so "non-negative integer" is enforced nowhere, and a negative +or fractional tail reaches the attachment's `logs(signal, { tail })` for +it to interpret. Recorded here rather than silently narrowed, per the +deferred item this closes. One correction to that item while closing it: +it said legacy rejected negatives *and* non-integers, and legacy +rejected only negatives — `parseInt` truncated `1.5` to `1` and the +check saw nothing wrong. If the constraint is wanted back it belongs on +the flag (a validated number flag in the engine), not in the handler. + +## `[dev]` and `[log]` prefixes become engine events + +Legacy wrote its own notices with a literal source prefix: `[dev] +converge failed — …`, `[dev] stopped.`, `[log] stream failed: …`, +`[log] falling behind — dropped the N oldest lines.` — all +`console.error` straight to stderr, unconditionally. + +Those become engine events (`message` at warn/error, `status`, +`endpoint`), which means they are rendered by the engine, filtered by +`--log-level`, hidden by `--quiet`, and framed in json for `log`. The +`[dev]` / `[log]` prefixes are gone: the engine's own rendering +identifies what it is showing. + +What does **not** change: a log line still reads `[] ` +and still goes to stdout, because the service prefix is part of the line +the handler emits rather than a rendering decision. And the empty case +still exits 0 — no running services is a warn event and a clean +shutdown, as legacy's single stderr line and exit 0 were. + +## `CONFIG.PATH_MISMATCH` retires for the explicit-path case only + +Legacy loaded the config through c12 and then compared the file c12 +reported against the file its own discovery walk had found; a mismatch +failed with `CONFIG.PATH_MISMATCH` — "Refusing to deploy against a +different file." (`load-config.ts:156-169`). + +With the engine's `composer` section in `prisma.config.ts`, an explicit +`configPath` wins and the walk is skipped, so there is no second opinion +to disagree with and the check cannot fire. In its place a path that +does not exist is `CONFIG.FILE_MISSING`, naming the section's path and +saying why there is no fallback ("An explicit configPath is used as +given — there is no walk to fall back on"). + +The common case is unchanged: with no `composer` section, composer's +entry-anchored walk runs exactly as before and `CONFIG.PATH_MISMATCH` +survives with it. The code is retired for one branch, not deleted. + +## `dev` settles 130 on Ctrl-C, where legacy exited 0 + +Legacy's watch loop treated Ctrl-C as a clean shutdown and returned 0 +(`run-dev.ts:132`), so `prisma-composer dev` ended a successful session +and an interrupted one identically. The handler still cleans up and +still returns success; the ENGINE now settles the run at 128 + the +signal number from its own record of the signal — 130 for SIGINT, 143 +for SIGTERM — because a run a delivered signal ended is an abort +whatever the handler concluded (operator ruling, 2026-08-11). + +This is the divergence most likely to be noticed: a wrapper script, +Makefile or supervisor that runs `dev` in the foreground and treats a +non-zero exit as failure now reports failure every time a developer +stops the session. `dev` itself documents no exit code of its own, and +a converge failure before the session is live still exits with the +child's status. + +`log` is unaffected in principle but changes the same way in practice: +it also returned 0 on Ctrl-C and now settles 130 through the same rule. + +## Exit-code unifications on the engine-side error paths + +Legacy's top-level mapping was: a number returned by `run()` passes +through; a clipanion `UsageError` prints its raw message to stderr and +exits 2; a `CliStructuredError` renders its envelope and exits 2; +anything else prints `Error: …` plus "this is a bug, please report it" +naming composer's issue tracker, and exits 1. + +What the engine does with each: + +| legacy path | legacy | v8 | +| --- | --- | --- | +| structured composer error | rendered envelope, exit 2 | engine envelope, exit 2 — the code and `meta` survive, and the `fix` prose becomes one `user-choice` next action (untranslated it would be dropped silently: the engine has no `fix` field) | +| clipanion `UsageError` | raw message, exit 2 | `CLI.INVALID_ARGUMENTS` / `CLI.UNKNOWN_COMMAND`, exit 2 | +| unexpected throw | `Error: …` + report-a-bug line naming composer's issues, exit 1 | engine `CLI.INTERNAL_ERROR`, exit 1 — same code, engine envelope, and no composer issue URL | +| alchemy child failed | child's status verbatim, plus an envelope and two hint lines | child's status verbatim, no envelope, hint as a next action (above) | +| alchemy child signalled | collapsed status | 128 + signal, no envelope, no hint (above) | + +Three refusals are new, and all three move work earlier in the run: + +- **Unauthenticated `deploy` / `destroy` fail before anything happens.** + They declare `needs.credentials`, so a signed-out run settles + `CLI.CREDENTIALS_REQUIRED` (exit 2) before the config is read, let + alone before a container is ensured. Legacy never checked: the + credential env vars were read by provider code inside the alchemy + child, so an unauthenticated deploy failed deep in the child, after + the platform work the parent had already done. +- **A session close to expiry is refused up front.** `deploy` and + `destroy` refuse before the in-process leg when the credential expires + within the threshold, rather than creating platform resources and + then failing. New; legacy had no expiry concept. +- **The effect-resolution preflight no longer takes out every command.** + Legacy ran `checkEffectResolution` at import time in `bin.ts`, before + anything else, and exited 2 on a mismatched `effect` — including for + `--help`. It now runs inside config loading and surfaces as the + `DEPS.EFFECT_VERSION_CONFLICT` diagnostic, so commands that need no + config still work on a broken dependency tree, and `prisma --help`, + `prisma composer --help` and every platform command are unaffected by + composer's dependency resolution. + +## Not a divergence, recorded because it looks like one + +`destroy` still asks nothing before tearing down. The front door cannot +know what the child will destroy, so no engine-side confirmation was +added; the guard remains the required explicit `--stage` / +`--production` target, exactly as legacy. If destroy deserves a +confirmation it is a composer product decision, raised upstream rather +than built at the mount. diff --git a/.drive/projects/prisma-cli-v8/deferred.md b/.drive/projects/prisma-cli-v8/deferred.md index 1e53fab4..4efe8e87 100644 --- a/.drive/projects/prisma-cli-v8/deferred.md +++ b/.drive/projects/prisma-cli-v8/deferred.md @@ -4,7 +4,11 @@ Work identified during a slice that is not part of that slice's contract. Each entry: what, why it was deferred, where it lands. Nothing here is tracked outside this file. -## Owned by S3/D4 (the slice's closing dispatch) +## Still open after S3/D4 — all of it in the composer repo + +D4 landed the prisma-cli half (the mount, the node floor, the divergence +file, the ledger corrections, the 1c closure). What is left needs a +composer checkout. - **`loadAppConfigDiagnostics()` is called by nothing.** D2 rewrote composer's config loading to return diagnostics instead of @@ -18,12 +22,20 @@ Nothing here is tracked outside this file. tree because the family's static graph is alchemy-free). The check performs real npm installs, so it needs network to run. - **The engine pin moves off `0.0.3`** to whatever the tandem release - publishes, in both composer manifests. -- **Contract corrections at closure**: ledger Q2 (main's #135 dropped - `service run` outright, so S3 no longer "closes" it by building the - mechanism — the mechanism exists, the command does not), and the - coverage-ledger rows for "refresh under long runs" and "config - sections" (see contract §10). + publishes, in both composer manifests — and it must be the SAME + version prisma-cli depends on. They disagree today: prisma-cli builds + against the workspace engine and the preview composer pins + `@prisma/cli-engine@0.0.7`, so an install of `@prisma/cli` carries two + copies of the engine. It works (the settlement markers are + `Symbol.for`, so they cross copies), but the tandem release is where + it should stop being true. +- **The prisma bin's mount makes composer's help examples wrong.** + Composer writes them as `{bin} deploy src/service.ts`; mounted under + the `composer` root the invocation is `prisma composer deploy`, and + the engine substitutes only `{bin}`. Fix needs both repos: a + mount-aware placeholder in the engine (`{command}` → the command's + mounted path) and composer's four example strings rewritten to use it. + Recorded in `assets/s2/parity-divergences-s3.md`. ## Owned by whoever lands the next engine change @@ -33,22 +45,13 @@ Nothing here is tracked outside this file. If rev 6's storage surface reshapes again, the single named consumer (`packages/cli-engine/src/execution/spawn.ts`) moves with it. Recorded in `assets/engine/credential-manager-design.md`. -- **`--tail` validation is wider than the recorded divergence.** The - engine's `flag.number` accepts negatives and non-integers; legacy - `composer log --tail` rejected both. Either the flag gains - validation or the divergence entry widens. -- **`v8-spawn-adapter.test.ts` has a race that fails under load.** - In `packages/cli/tests/v8-spawn-adapter.test.ts`, the "kill - delivers the signal to the live child" case runs an inline child - that writes its `ready` marker BEFORE calling - `process.on('SIGTERM', ...)`. The test waits on that marker and - then kills, so a kill landing in the gap hits the default SIGTERM - disposition: the child dies by signal instead of exiting 42, and - the assertion fails. Reproduced on a loaded machine (2 of 4 runs) - while verifying the child-record change, which does not touch - `packages/cli`. Fix: have the child write `ready` only after the - handler is installed — the same ordering the engine's own - `tests/fixtures/child.mjs` `trap-term` fixture already uses. +- **A validated number flag**, if `--tail`'s old constraint is wanted + back. `flag.number` accepts negatives and fractions, so "non-negative + integer" is enforced nowhere. D4 took the other branch this item + offered and widened the divergence entry instead + (`assets/s2/parity-divergences-s3.md`), which also corrects this + item's claim that legacy rejected non-integers — legacy truncated + them silently, and rejected only negatives and `NaN`. ## Upstream, not ours to land @@ -61,6 +64,19 @@ Nothing here is tracked outside this file. composer's alchemy bump. Exit condition recorded in `skills-contrib/upgrade-alchemy-effect/SKILL.md` in the composer repo. + **The patch does not reach the prisma bin, and D4 measured what that + costs.** A pnpm patch applies in the repo that declares it, so a + `prisma` install resolves the unpatched `@alchemy.run/node-utils`. + D4's canary (`packages/cli/tests/v8-composer-isolation.test.ts`) + imports one composer executor in a fresh prisma bin process and finds + one SIGINT and one SIGTERM listener registered by the import alone — + the exact condition the contract's design consequence 4 says nothing + ships with. It does not fire on a normal run: the same process running + `--version` loads no alchemy at all and holds no listener, which is + what the test asserts. It fires once a composer command evaluates its + config. Until the release chain delivers, composer's own + sole-listener detector passes on the patch and the prisma bin has no + such protection. - **Alchemy's `sync` reports permanent drift on Composer resources.** `Deployment.read` returns `previewDomain` while `reconcile` persists `appEndpointDomain`; `Sync.ts` deep-equals live against diff --git a/.drive/projects/prisma-cli-v8/plan.md b/.drive/projects/prisma-cli-v8/plan.md index 248595ae..4fa18ae9 100644 --- a/.drive/projects/prisma-cli-v8/plan.md +++ b/.drive/projects/prisma-cli-v8/plan.md @@ -146,8 +146,9 @@ Recorded so they are not lost between slices. | Sync commands, presenters, envelopes, exit codes | S1, S2 | | Prompts (defaults, consent, wizard) | S2 (init) | | Poll + status events; output streams | S2 (domain wait; `build logs` — `service logs` moved to S8) | -| Auth via context, refresh under long runs | S2, S3 (deploy) | -| Config sections, command families, validator absence | S3, S5 | +| Auth via context | S2, S3 (deploy, destroy) | +| Refresh under long runs | **Still unproven** (corrected at S3 closure). S3 proves the STATIC-token handoff instead: the child is given a snapshot that never refreshes, and the refresh token is never injected, so a long converge runs on a token that can expire mid-run. The contract accepts that and refuses up front when the session is near expiry. The in-process leg uses the engine's refreshing client, but nothing in S3 runs long enough to make it refresh. | +| Config sections, command families, validator absence | S3 proves ONE section — composer's, a single optional string field — declared by one family and read through the real disk loader in the prisma bin: its total validator including absence, its unknown-key warning diagnostic, and the engine's own unknown-section check. The platform family declares no section, so two families contributing to one config file is unproven, and so is any section with required or structured fields. Both wait for S5. | | Session commands, signal lifetime | S3 (dev, log) | | Cross-repo/published consumption, pins, tandem releases | S3 | | Child-status passthrough exception | S3 | diff --git a/.drive/projects/prisma-cli-v8/specs/s2-overview.md b/.drive/projects/prisma-cli-v8/specs/s2-overview.md index fd15c240..503c86d7 100644 --- a/.drive/projects/prisma-cli-v8/specs/s2-overview.md +++ b/.drive/projects/prisma-cli-v8/specs/s2-overview.md @@ -80,11 +80,18 @@ can overrule before the affected dispatch runs. `auth login` nextAction (consistent, agent-friendly). Ratify or reinstate auto-login as an engine feature. - **Q2 — `service run`. RULED (operator, 2026-08-11): dropped.** It does - not port, and the engine does not grow a child-exit-code passthrough - for it. The command started a local dev server and passed its exit + not port. The command started a local dev server and passed its exit code through, which is Composer's `dev`. Nothing of the commander shell survives S2d on its account, and the removal joins the divergence list alongside `service build` and `service deploy`. + **Corrected at S3 closure (D4):** this row used to add that the engine + does not grow a child-exit-code passthrough, and S3 built one — + `ctx.spawn` plus the `exitWithChildStatus` settlement, for composer's + converge. So the mechanism exists and the command does not, which is + the opposite of the reading S3 was once planned around ("S3 closes Q2 + by building the mechanism"). Q2 stays closed by main's #135, which + dropped the command outright; anything that ever revives it rides the + mechanism that is now there. - **Q3 — `project env remove`'s `rm` alias** (the only alias in the tree) does not port. Ratify the drop or rule alias support. - **Q4 — reading the config file from the shipped binary. RULED (operator, 2026-08-11): copy prisma/prisma and prisma/composer, which both use `c12`.** Our loader does a plain dynamic `import()` of `prisma.config.ts`, which only works under a TypeScript-capable runtime; the shipped binary runs on ordinary Node. Both reference repositories solved this already and identically, so there is nothing to design. `c12` is a dependency, imported dynamically at the call site, invoked as `loadConfig({ name, cwd, configFile? })`. See `packages/1-framework/3-tooling/config-loader/src/load.ts` in prisma/prisma, and the `cli` and `composer` packages in prisma/composer. One ordinary `dependencies` entry is the whole contract: `c12` evaluates TypeScript through `jiti`, which `c12@3.3.4` depends on directly, so installing `c12` installs the part that makes it work on plain Node. `c12`'s only peer dependency is `magicast`, and that one is optional. diff --git a/.node-version b/.node-version index 941d7c07..60ade1ae 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -22.22.3 +24.19.0 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index bf408878..a70e6257 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ is unclear, update the relevant product doc before changing the command surface. Requirements: -- Node.js 22.12 or newer +- Node.js 24 or newer - pnpm 10 Install dependencies: diff --git a/README.md b/README.md index 3371e8dd..ebd099da 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ pnpm prisma app deploy Requirements: -- Node.js 22.12 or newer +- Node.js 24 or newer - pnpm 10+ Install dependencies: diff --git a/docs/onboarding/getting-started.md b/docs/onboarding/getting-started.md index 7dfaa860..c6f6f958 100644 --- a/docs/onboarding/getting-started.md +++ b/docs/onboarding/getting-started.md @@ -4,7 +4,7 @@ This guide gets a local checkout ready for CLI development. ## Requirements -- Node.js 22.12 or newer +- Node.js 24 or newer - pnpm 10 ## Install diff --git a/package.json b/package.json index 36afd24a..e11e2964 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "8.0.0-rc.1", "private": true, "engines": { - "node": ">=22.13.0" + "node": ">=24" }, "packageManager": "pnpm@11.6.0", "scripts": { diff --git a/packages/cli/README.md b/packages/cli/README.md index 3a66740a..954791cf 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -104,7 +104,7 @@ npx prisma-cli app promote ## Beta notes -- Requires Node.js 22.12 or newer. +- Requires Node.js 24 or newer. - This is a beta package and may change quickly. - Official beta releases publish as `@prisma/cli`. - The package binary is `prisma-cli`, not `prisma`, during beta. diff --git a/packages/cli/package.json b/packages/cli/package.json index a38e2e2a..ca340275 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -18,7 +18,7 @@ "access": "public" }, "engines": { - "node": ">=22.12.0" + "node": ">=24" }, "keywords": [ "prisma", @@ -46,6 +46,7 @@ "dependencies": { "@clack/prompts": "1.5.0", "@prisma/cli-engine": "workspace:8.0.0-rc.1", + "@prisma/composer": "https://pkg.pr.new/@prisma/composer@220", "@prisma/compute-sdk": "0.39.0", "@prisma/credentials-store": "^7.8.0", "@prisma/management-api-sdk": "1.55.0", diff --git a/packages/cli/src/v8/cli.ts b/packages/cli/src/v8/cli.ts index 1f7ab0ab..36eb15bc 100644 --- a/packages/cli/src/v8/cli.ts +++ b/packages/cli/src/v8/cli.ts @@ -5,6 +5,13 @@ import { createCli, defineCommandFamily, } from "@prisma/cli-engine"; +// TODO(release): @prisma/composer is pinned in package.json to the +// pkg.pr.new preview build of composer#220. The tandem release +// (contract R-S3-6, order engine → composer → prisma-cli) replaces it +// with the exact published version, which must also be the version +// composer itself pins @prisma/cli-engine to — until those agree, an +// install of this package carries two copies of the engine. +import { createComposerFamily } from "@prisma/composer/family"; import { CLI_DOCS_URL } from "../cli-name"; import { getCliVersion } from "../lib/version"; import { agentInstallCommand } from "./agent/install"; @@ -120,6 +127,15 @@ export const platformCommandFamily: CommandFamily = defineCommandFamily({ }, }); +/** + * Composer's commands, contributed by composer's own package and run by + * this process. Only the command definitions and their handler entry + * functions load here; the alchemy and effect constellation stays behind + * composer's dynamic executor imports, so mounting costs an unrelated + * command nothing. + */ +export const composerCommandFamily: CommandFamily = createComposerFamily(); + export const cliGroups: Readonly< Record > = { @@ -140,6 +156,9 @@ export const cliGroups: Readonly< service: { brief: "Manage services and deployments for a project" }, "service domain": { brief: "Manage custom domains for a service" }, build: { brief: "Inspect builds created by a git push or Console" }, + composer: { + brief: "Run and deploy applications composed from Prisma modules", + }, agent: { brief: "Manage Prisma skills for AI coding agents" }, "auth workspace": { brief: "Manage local workspace sessions" }, telemetry: { @@ -203,6 +222,10 @@ export const mountedCommands: Readonly> = { "service domain wait": serviceDomainWaitCommand, // Platform builds are their own group; there is no local build verb. "build logs": buildLogsCommand, + "composer deploy": composerCommandFamily.commands.deploy, + "composer destroy": composerCommandFamily.commands.destroy, + "composer dev": composerCommandFamily.commands.dev, + "composer log": composerCommandFamily.commands.log, // Local utilities: no owning package, no config section, no API. "agent install": agentInstallCommand, "agent update": agentUpdateCommand, @@ -218,7 +241,7 @@ export function buildCli(): Cli { return createCli({ name: "prisma-v8", version: getCliVersion(), - commandFamilies: [platformCommandFamily], + commandFamilies: [platformCommandFamily, composerCommandFamily], groups: cliGroups, commands: mountedCommands, }); diff --git a/packages/cli/tests/fixtures/v8-config/composer-section.config.ts b/packages/cli/tests/fixtures/v8-config/composer-section.config.ts new file mode 100644 index 00000000..be75b4c6 --- /dev/null +++ b/packages/cli/tests/fixtures/v8-config/composer-section.config.ts @@ -0,0 +1,5 @@ +import { defineConfig } from "@prisma/cli-engine"; + +export default defineConfig({ + composer: { configPath: "./named-by-the-section.config.ts" }, +}); diff --git a/packages/cli/tests/fixtures/v8-startup-probe.mjs b/packages/cli/tests/fixtures/v8-startup-probe.mjs new file mode 100644 index 00000000..87425a2a --- /dev/null +++ b/packages/cli/tests/fixtures/v8-startup-probe.mjs @@ -0,0 +1,47 @@ +// Runs the v8 bin body in a process of its own and reports what the run +// left behind: which of composer's constellation modules were evaluated, +// and how many signal listeners are still attached. A module loader hook +// records every evaluated module, so the answer covers the whole graph +// rather than the specifiers this file can see. +import { writeFileSync } from "node:fs"; +import { registerHooks } from "node:module"; + +const [scenario, reportPath] = process.argv.slice(2); + +const evaluated = []; +registerHooks({ + load(url, context, nextLoad) { + evaluated.push(url); + return nextLoad(url, context); + }, +}); + +const CONSTELLATION = /\/node_modules\/(\.pnpm\/)?(@?alchemy|@?effect)[.@/]/; +const UP_TO_NODE_MODULES = /^.*\/node_modules\//; + +process.argv = [process.argv[0], "prisma-v8", "--version"]; +const { main } = await import("../../src/v8/main.ts"); +const exitCode = await main(process); + +// The detector's own canary: this import is what a composer command +// reaches through its dynamic executor boundary, and it must show up. +if (scenario === "canary") { + await import("@prisma/composer/deploy"); +} + +writeFileSync( + reportPath, + JSON.stringify({ + exitCode, + familyEvaluated: evaluated.some((url) => + url.includes("@prisma/composer/dist/family.mjs"), + ), + constellation: evaluated + .filter((url) => CONSTELLATION.test(url)) + .map((url) => url.replace(UP_TO_NODE_MODULES, "")), + signalListeners: { + SIGINT: process.listenerCount("SIGINT"), + SIGTERM: process.listenerCount("SIGTERM"), + }, + }), +); diff --git a/packages/cli/tests/v8-bin.test.ts b/packages/cli/tests/v8-bin.test.ts index 9b9e27cb..905aa3d2 100644 --- a/packages/cli/tests/v8-bin.test.ts +++ b/packages/cli/tests/v8-bin.test.ts @@ -22,6 +22,14 @@ const NAMED_CONFIG_PATH = join( "elsewhere.config.ts", ); +/** A prisma.config.ts whose only section is composer's. */ +const COMPOSER_SECTION_CONFIG_PATH = join( + dirname(fileURLToPath(import.meta.url)), + "fixtures", + "v8-config", + "composer-section.config.ts", +); + const SEMVER_PREFIX = /^\d+\.\d+\.\d+/; function makeProcess(overrides?: { @@ -350,6 +358,31 @@ describe("buildCli", () => { ); }); + /** The mount's config wiring, end to end: the section name composer's + * family declares, read by the bin's real disk loader, reaching + * composer's own handler as the path it acts on. */ + it("hands the composer section of prisma.config.ts to the composer family", async () => { + const proc = makeProcess({ + argv: [ + "node", + "bin.js", + "composer", + "log", + "--config", + COMPOSER_SECTION_CONFIG_PATH, + "src/service.ts", + ], + }); + + const exitCode = await main(proc); + + expect(exitCode).toBe(2); + expect(proc.stdoutText).toContain( + join("/tmp/v8-bin-test-cwd", "named-by-the-section.config.ts"), + ); + expect(proc.stdoutText).toContain("there is no walk to fall back on"); + }); + it("runs --version through the real tree, printing the version with exit 0", async () => { const proc = makeProcess({ argv: ["node", "bin.js", "--version"], diff --git a/packages/cli/tests/v8-composer-isolation.test.ts b/packages/cli/tests/v8-composer-isolation.test.ts new file mode 100644 index 00000000..47dfc01f --- /dev/null +++ b/packages/cli/tests/v8-composer-isolation.test.ts @@ -0,0 +1,87 @@ +/** + * The mount's price, measured: the prisma bin imports composer's command + * family statically, so the family module loads on every invocation — + * but composer keeps its executors behind dynamic imports, so alchemy + * and effect must not load with it, and alchemy's import-time exit hooks + * must not end up in this process. A command with nothing to do with + * composer is where that is worth proving, and it takes a process of its + * own: a module loader hook in a fresh run records every module the run + * evaluates, and the signal listeners are counted after it settles. + * + * The canary is what makes the empty result mean something: the same + * probe, plus the one dynamic import a composer command would make, + * loads the constellation the plain run reports none of. + */ +import { spawn } from "node:child_process"; +import { mkdtempSync, readFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, test } from "vitest"; + +const PROBE = fileURLToPath( + new URL("./fixtures/v8-startup-probe.mjs", import.meta.url), +); + +interface ProbeReport { + readonly exitCode: number; + readonly familyEvaluated: boolean; + readonly constellation: readonly string[]; + readonly signalListeners: { + readonly SIGINT: number; + readonly SIGTERM: number; + }; +} + +async function runProbe(scenario: "plain" | "canary"): Promise { + const reportPath = join( + mkdtempSync(join(tmpdir(), "v8-startup-probe-")), + "report.json", + ); + await new Promise((resolve, reject) => { + const child = spawn( + process.execPath, + ["--import", "tsx", PROBE, scenario, reportPath], + { + env: { + ...process.env, + NO_UPDATE_NOTIFIER: "1", + PRISMA_NEXT_DISABLE_TELEMETRY: "1", + }, + stdio: "ignore", + }, + ); + child.on("error", reject); + child.on("close", (code) => { + if (code === 0) { + resolve(); + return; + } + reject(new Error(`the startup probe exited ${code}`)); + }); + }); + return JSON.parse(readFileSync(reportPath, "utf8")) as ProbeReport; +} + +describe("composer's family costs an unrelated command nothing", () => { + test("a version run evaluates the family and none of alchemy or effect, and leaves no signal listener", async () => { + const report = await runProbe("plain"); + + expect(report.exitCode).toBe(0); + expect(report.familyEvaluated).toBe(true); + expect(report.constellation).toEqual([]); + expect(report.signalListeners).toEqual({ SIGINT: 0, SIGTERM: 0 }); + }, 120_000); + + test("canary: the executor import a composer command makes does load the constellation", async () => { + const report = await runProbe("canary"); + + expect(report.constellation.length).toBeGreaterThan(0); + expect(report.constellation.some((id) => id.startsWith("alchemy/"))).toBe( + true, + ); + expect(report.constellation.some((id) => id.startsWith("effect/"))).toBe( + true, + ); + }, 120_000); +}); diff --git a/packages/cli/tests/v8-mount-coverage.test.ts b/packages/cli/tests/v8-mount-coverage.test.ts index 2520a72d..2dd021ac 100644 --- a/packages/cli/tests/v8-mount-coverage.test.ts +++ b/packages/cli/tests/v8-mount-coverage.test.ts @@ -4,6 +4,7 @@ import { agentStatusCommand } from "../src/v8/agent/status"; import { agentUpdateCommand } from "../src/v8/agent/update"; import { cliGroups, + composerCommandFamily, mountedCommands, platformCommandFamily, } from "../src/v8/cli"; @@ -52,6 +53,10 @@ const EXPECTED_MOUNT_PATHS: readonly string[] = [ "bucket key list", "bucket list", "build logs", + "composer deploy", + "composer destroy", + "composer dev", + "composer log", "feedback", "git connect", "git disconnect", @@ -94,14 +99,21 @@ const EXPECTED_MOUNT_PATHS: readonly string[] = [ "telemetry status", ]; +const MOUNTED_FAMILIES = { + platform: platformCommandFamily, + composer: composerCommandFamily, +}; + describe("prisma-v8 mount coverage", () => { it("mounts exactly the expected command paths", () => { expect(Object.keys(mountedCommands).sort()).toEqual(EXPECTED_MOUNT_PATHS); }); - it("mounts every command in the platform family", () => { + it.each( + Object.entries(MOUNTED_FAMILIES), + )("mounts every command in the %s family", (_name, commandFamily) => { const mounted = new Set(Object.values(mountedCommands)); - const unmounted = Object.entries(platformCommandFamily.commands) + const unmounted = Object.entries(commandFamily.commands) .filter(([, command]) => !mounted.has(command)) .map(([key]) => key); @@ -109,9 +121,13 @@ describe("prisma-v8 mount coverage", () => { }); it("gives every mounted command a family, except the deliberately familyless ones", () => { - const family = new Set(Object.values(platformCommandFamily.commands)); + const owned = new Set( + Object.values(MOUNTED_FAMILIES).flatMap((commandFamily) => + Object.values(commandFamily.commands), + ), + ); const unowned = Object.entries(mountedCommands) - .filter(([, command]) => !family.has(command) && !FAMILYLESS.has(command)) + .filter(([, command]) => !owned.has(command) && !FAMILYLESS.has(command)) .map(([path]) => path); expect(unowned).toEqual([]); diff --git a/packages/cli/tests/v8-spawn-adapter.test.ts b/packages/cli/tests/v8-spawn-adapter.test.ts index 15fcb184..6cadf9aa 100644 --- a/packages/cli/tests/v8-spawn-adapter.test.ts +++ b/packages/cli/tests/v8-spawn-adapter.test.ts @@ -91,7 +91,10 @@ describe("the shipped spawn adapter", () => { command: NODE, args: [ "-e", - "require('node:fs').writeFileSync(process.argv[1], 'r'); process.on('SIGTERM', () => process.exit(42)); setInterval(() => {}, 60_000);", + // The handler is installed before the ready marker is written, + // so a kill that lands the instant the test sees the marker + // cannot hit the default SIGTERM disposition instead. + "process.on('SIGTERM', () => process.exit(42)); require('node:fs').writeFileSync(process.argv[1], 'r'); setInterval(() => {}, 60_000);", ready, ], cwd: process.cwd(), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 45bddd40..7f9e6778 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,6 +29,9 @@ importers: '@prisma/cli-engine': specifier: workspace:8.0.0-rc.1 version: link:../cli-engine + '@prisma/composer': + specifier: https://pkg.pr.new/@prisma/composer@220 + version: https://pkg.pr.new/@prisma/composer@220(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.39.0 version: 0.39.0(@prisma/management-api-sdk@1.55.0)(rollup@4.62.2) @@ -169,6 +172,94 @@ importers: packages: + '@alcalzone/ansi-tokenize@0.2.5': + resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==} + engines: {node: '>=18'} + + '@alchemy.run/node-utils@0.0.5': + resolution: {integrity: sha512-5agdhQxWBodxa5hDRyjnpx91RTU3g+qd5fxYB7uNDCaOzB0XC47UU/KHR6zf6jhz/NXf61gJS+vhYwn8NHeRoQ==} + + '@ark/schema@0.56.2': + resolution: {integrity: sha512-Qx4D2JFbBWpntiHZaTv7bGG4H/M2rigiknezKg/WVyDSaLdE4YCcWAOoFB7pjjDqHbbV2OqRfntm1nnXvwMexg==} + + '@ark/util@0.56.2': + resolution: {integrity: sha512-9kU2sUE38FZEGG7l3hamYMBieLYEJh2L1mrYD2eXpT+78EnQSV1bhjxJhnxGBMSTbtwpBSDNSK+K60WvaI/DTQ==} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/core@3.977.6': + resolution: {integrity: sha512-QiaJV4/zDrB4ZY2mfeSXSzSTc36W16sZXcGz+SPFk0CJ26gziO0cS+4LjJUMAbdeeBOvS0k0Aq1cZpfGdUXxSw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-cognito-identity@3.972.66': + resolution: {integrity: sha512-i4HTkP21eHaXA+XKoc6dYxlKPvYUqbusGGIsFRcSGTF8ln/q6RrWoRdVJ6UVODTCW59Ot1mVcbJXRAEf6kxa3w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.67': + resolution: {integrity: sha512-rcIpk5kxUqDaaNa6Xk23pQ6ViY7jlqzmfFWCahQcBT97ddXaXYYwzCen9Tz1Jvo6aJft6wDl5bN44/Jw5B4oLA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.69': + resolution: {integrity: sha512-nggwJtZ4eeNsUw5IeWBMXsi1ryct5idi0K+/SCRF3kybLubOMaNTb3XCihXpWMiVpyzyPeIrl0zTkzhBH9porA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.973.12': + resolution: {integrity: sha512-pNEf/OeyN5X3VmLKlgSO6TqaWmW10CvI3TfwL1XhsuhYjSLT2VDaxFnCPHnOeQXSaFisMX4jNhpETriqN8DOmg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.74': + resolution: {integrity: sha512-0AQfDcf99TNmqVKv0owHrw/TQs6i4ZE5t9qmz6NvO53bE/sA/tpXhXL9AAcEP1qHc6Zzjd1UMb69+/9zdhvY3g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.78': + resolution: {integrity: sha512-OgPAnfvbGAMWac6yvxJ1ihslrvDpPVwR68D2csospdNCCyPvHk9JLzYKwz48SNiS1T2znDwHauywRKRFfpyYng==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.67': + resolution: {integrity: sha512-IlUEejorGTWKb4/Dm7K5Yw4QxUmXLThLhrvBmzVBqZFTbW72cv9LTcITmo1dsnYriALE4h68mOq4LB99x6sQ7Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.973.11': + resolution: {integrity: sha512-gAQBkBZxUB84d71+pPcI9L+jh2ujhuAVxc/4FgGiWFDjkPBlMKxzd5XDtkSXTFX8Ro7ansnT88+XadasxMeCRw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.73': + resolution: {integrity: sha512-SnlEmQa6SjOgs6iOPLUQl1Eyq4AKiAdPQlkOhFhqNfDtDCwibMGvL6QlkSmf3o6vAUSImzdPCxowT5dfQUZP1A==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-providers@3.1106.0': + resolution: {integrity: sha512-76a6HXmWZXgpQZRU3rnolfeMPPXrMvOfsQYlh7tkPXEgFrfdR6Hvo72uIQo57YVOBiOmVrwkTLA8NDNKbywTRQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.997.41': + resolution: {integrity: sha512-RDHqPGQWlF6tatA/Tp3rg6oIwtgN9IVderxE+9av2Y93Dfyu+mO1hZ5Bu2jpfZg2rwdNbsssnwM+sLafIczMlQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.43': + resolution: {integrity: sha512-lKekx8bLBXSv4O+cslk9Zfnw2XKSkWBs3uWL5QGhH2ZAQfNS7FE0vcSSN2vD/AhxX54ZTywWxR4STThoeOXlBA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1103.0': + resolution: {integrity: sha512-N4wy26MNn31ItGVHYHPrEuCIFY4MBBjC+C5v1lJKqIUSA7OZBdhleCY53zCCrXn27hsk7YNOaTuhQu807S4AfQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.974.2': + resolution: {integrity: sha512-3W6IUtSxFbH6X7Wb7DzGCV5QiFQsd0g8bOfntpmDxQlzBoKWUMBu/JPQR0DwkE+Hpnxd6db1tXbOwdeHddG6cA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/xml-builder@3.972.37': + resolution: {integrity: sha512-zKq4HQum8JwDyEuyfuI4bbiAcU0KxP6qy+9PR/IsR92IyE/DaBAikzAS50tjxip4bqIIANpCcG+Yyj6CVhXupg==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.3.0': + resolution: {integrity: sha512-sl4Bm6yiMNYrZKkqqDFWN0UfnWhlS8ivKxrYl+6t0gCLrqr8y3B2IqZZbFRkfaVVp7C/baApyh71P+LeE1A2sQ==} + engines: {node: '>=18.0.0'} + '@babel/generator@8.0.0-rc.3': resolution: {integrity: sha512-em37/13/nR320G4jab/nIIHZgc2Wz2y/D39lxnTyxB4/D/omPQncl/lSdlnJY1OhQcRGugTSIF2l/69o31C9dA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -264,23 +355,188 @@ packages: cpu: [x64] os: [win32] + '@chevrotain/cst-dts-gen@10.5.0': + resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} + + '@chevrotain/gast@10.5.0': + resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} + + '@chevrotain/types@10.5.0': + resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} + + '@chevrotain/utils@10.5.0': + resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} + '@clack/core@1.4.0': resolution: {integrity: sha512-7Wctjq6f7c1CPz8sPpkwUnz8yRgVANkpNupb81q432FjcJg4l+Sw7XANdNSdWfAKq0IHI0JTcUeK5dxs/HrGPw==} engines: {node: '>= 20.12.0'} + '@clack/core@1.4.3': + resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + engines: {node: '>= 20.12.0'} + '@clack/prompts@1.5.0': resolution: {integrity: sha512-wKh+wTjmrUoUdkZg8KpJO5X+p9PWV+KE9mePseq9UYWkukgTKsGS47RRL2HstwVcvDQH+PenrPJWII8+MfiiyA==} engines: {node: '>= 20.12.0'} + '@clack/prompts@1.7.0': + resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + engines: {node: '>= 20.12.0'} + + '@cloudflare/unenv-preset@2.16.1': + resolution: {integrity: sha512-ECxObrMfyTl5bhQf/lZCXwo5G6xX9IAUo+nDMKK4SZ8m4Jvvxp52vilxyySSWh2YTZz8+HQ07qGH/2rEom1vDw==} + peerDependencies: + unenv: 2.0.0-rc.24 + workerd: '>1.20260305.0 <2.0.0-0' + peerDependenciesMeta: + workerd: + optional: true + + '@cloudflare/workerd-darwin-64@1.20260704.1': + resolution: {integrity: sha512-XO+vvdhhTNZSsIWCkZ+JaE/JrFUmQAB0H0y/sVkAf32xa2TYBRvFUMwjSqf6WxtlxcKPQvmbLfpO/UQ0l/q4eQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [darwin] + + '@cloudflare/workerd-darwin-arm64@1.20260704.1': + resolution: {integrity: sha512-6iI7nbOOO8PzEQ6UZVBZB/hv95m8jl0yvyjMuWrF5cJbiLb5zPw3KnpqvGi+aeOs2ZmUkc81i1FWKfXwLXzPRA==} + engines: {node: '>=16'} + cpu: [arm64] + os: [darwin] + + '@cloudflare/workerd-linux-64@1.20260704.1': + resolution: {integrity: sha512-3mT0YHtxT7eLjghu3hKSJDUQoz+AYv8FM43nLPYhM0YiHOxr8OlmvnCb2Lp7v/U3bwd3Gnx7WEqjSppR583mGg==} + engines: {node: '>=16'} + cpu: [x64] + os: [linux] + + '@cloudflare/workerd-linux-arm64@1.20260704.1': + resolution: {integrity: sha512-Opo7cPTPg4x0WwK+eZSDszCyFLKQkOGNCWxF005HRTJ5SJH8h0K9KyrC1k4LBwx3haXSVi+E1eGqo1gZ1Hmhkg==} + engines: {node: '>=16'} + cpu: [arm64] + os: [linux] + + '@cloudflare/workerd-windows-64@1.20260704.1': + resolution: {integrity: sha512-a97Ecnzhy04x3U052VKPCNp863F7Wf00WY7Ga5P0SbtYvaO1PDzylsHrvFMPKeiDFcOwqiredawmJ+v6bhIgeQ==} + engines: {node: '>=16'} + cpu: [x64] + os: [win32] + + '@cloudflare/workers-types@5.20260810.1': + resolution: {integrity: sha512-aD0hEU6HaiG4wy4hDoPoLXMH963nHD4MsIY566pGkWO2dL/yeYEiMN7SeJ24t+wBmLDnh16yQ7IPos5opGkIoA==} + + '@distilled.cloud/aws@0.30.3': + resolution: {integrity: sha512-6U/wO+fLNnqBlRnqFpF79edS5t6njDl/6UmnCVUfWpIQ4n23X0VY1ft0lzsaBa506xRtF4vRhMELR9FIp5DKUA==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@distilled.cloud/axiom@0.30.3': + resolution: {integrity: sha512-U4YvXsvz/TDYfIbZNRVAv8Yx1mnbms/rBQ/RHnRQWhL0JzxZOZOQvToxkB4kh/oa8KT+QbjTkDxRJP/f6P0M1g==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@distilled.cloud/cloudflare-rolldown-plugin@0.15.0': + resolution: {integrity: sha512-cBVl4Ck4Prf9/dPSvyQeGW+2CDLIKs+xbyUm/MgNOSyYDZYOLbsCnDePO4YwdvaxsT0oOZZIkSDDki2ve9DCHA==} + peerDependencies: + rolldown: ^1.1.5 + vite: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + rolldown: + optional: true + vite: + optional: true + + '@distilled.cloud/cloudflare-runtime@0.15.0': + resolution: {integrity: sha512-0xx+LCiBzNwmMPN1SnnD4GixVl8WZET3zaMPU51LYRU+VQQrxtetDjcjnI5q83UComjBmbS0c0Bp4j/7hgobyg==} + peerDependencies: + '@distilled.cloud/cloudflare': ^0.29.0 + '@effect/platform-bun': '>=4.0.0-beta.100 || >=4.0.0' + '@effect/platform-node': '>=4.0.0-beta.100 || >=4.0.0' + effect: '>=4.0.0-beta.100 || >=4.0.0' + peerDependenciesMeta: + '@effect/platform-bun': + optional: true + '@effect/platform-node': + optional: true + + '@distilled.cloud/cloudflare-vite-plugin@0.15.0': + resolution: {integrity: sha512-+JYCTv/1Bqk3GRSb6e+UW61Pn2DFF68EAVvAbTYg5Z6tlztc2E7sd/pC4E2fsnAxtSMjwpFdrzlPqwQUq2HUQA==} + peerDependencies: + '@distilled.cloud/cloudflare': ^0.29.0 + '@distilled.cloud/cloudflare-runtime': 0.15.0 + '@effect/platform-bun': '>=4.0.0-beta.100 || >=4.0.0' + '@effect/platform-node': '>=4.0.0-beta.100 || >=4.0.0' + effect: '>=4.0.0-beta.100 || >=4.0.0' + vite: ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@effect/platform-bun': + optional: true + '@effect/platform-node': + optional: true + + '@distilled.cloud/cloudflare@0.30.3': + resolution: {integrity: sha512-IwQyIZrfzRJ7Dn9Plsk5pMlr50CT72fMnD5YCFy31MKAthh906ewcO3NuJOKHGA8AF9u6SKTlebsQx4Jnj8uwA==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@distilled.cloud/core@0.30.3': + resolution: {integrity: sha512-RupX597cPmceEiOY6csihFbzH2WhDkfbwGCMk+Izx8+f16u+aLm4mgyrYoxj1/dzIHsyIfw8sFKgNPzAg0Rx2Q==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@distilled.cloud/neon@0.30.3': + resolution: {integrity: sha512-4iW6lNvrJ/BuraKQ572bTQPNNtK/pFMqALoKjgozXR5jAZXbohRrD8/3QHLZW9cOAPenaHugwk4YIm0/+u4j5Q==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@distilled.cloud/planetscale@0.30.3': + resolution: {integrity: sha512-0ZcPqoXKl5uhJ6Ytw9UpgHa2t2pjwsuQFZn4OlnjZl0F/lToO/8TdXp4iKyw7Wog5tKTkfRYrQXVzRbaPKP3QQ==} + peerDependencies: + effect: '>=4.0.0-beta.100 || >=4.0.0' + + '@effect/sql-d1@4.0.0-beta.107': + resolution: {integrity: sha512-GN0RMZRQ+Kc6t4hiIbGBFMdYj2UssX27w0n1oyV+s9OZcWOdD42C2vDxUwnnKLstPDdeOMBAFX7dMekOiF2rUQ==} + peerDependencies: + effect: ^4.0.0-beta.107 + + '@effect/vitest@4.0.0-beta.103': + resolution: {integrity: sha512-Kz3gemVuJNAZ3e4V6A7BwAP87x2Av8LyHOlCjy9jbZzlncwJXO7Olk1Sje3hdKaet3wEl51A/0/89xJ2IYSgNg==} + peerDependencies: + effect: ^4.0.0-beta.103 + vitest: ^4.1.0 + + '@electric-sql/pglite-socket@0.0.20': + resolution: {integrity: sha512-J5nLGsicnD9wJHnno9r+DGxfcZWh+YJMCe0q/aCgtG6XOm9Z7fKeite8IZSNXgZeGltSigM9U/vAWZQWdgcSFg==} + hasBin: true + peerDependencies: + '@electric-sql/pglite': 0.3.15 + + '@electric-sql/pglite-tools@0.2.20': + resolution: {integrity: sha512-BK50ZnYa3IG7ztXhtgYf0Q7zijV32Iw1cYS8C+ThdQlwx12V5VZ9KRJ42y82Hyb4PkTxZQklVQA9JHyUlex33A==} + peerDependencies: + '@electric-sql/pglite': 0.3.15 + + '@electric-sql/pglite@0.3.15': + resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==} + '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.11.1': + resolution: {integrity: sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==} + '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.11.1': + resolution: {integrity: sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} + '@emnapi/wasi-threads@1.2.2': + resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==} + '@esbuild/aix-ppc64@0.27.7': resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} @@ -293,6 +549,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.28.2': + resolution: {integrity: sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.27.7': resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} @@ -305,6 +567,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.28.2': + resolution: {integrity: sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.27.7': resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} @@ -317,6 +585,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.28.2': + resolution: {integrity: sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.27.7': resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} @@ -329,6 +603,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.28.2': + resolution: {integrity: sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.27.7': resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} @@ -341,6 +621,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.28.2': + resolution: {integrity: sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.27.7': resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} @@ -353,6 +639,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.28.2': + resolution: {integrity: sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.27.7': resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} @@ -365,6 +657,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.28.2': + resolution: {integrity: sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} @@ -377,6 +675,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.28.2': + resolution: {integrity: sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.27.7': resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} @@ -389,6 +693,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.28.2': + resolution: {integrity: sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.27.7': resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} @@ -401,6 +711,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.28.2': + resolution: {integrity: sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.27.7': resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} @@ -413,6 +729,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.28.2': + resolution: {integrity: sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.27.7': resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} @@ -425,6 +747,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.28.2': + resolution: {integrity: sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.27.7': resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} @@ -437,6 +765,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.28.2': + resolution: {integrity: sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.27.7': resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} @@ -449,6 +783,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.28.2': + resolution: {integrity: sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.27.7': resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} @@ -461,6 +801,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.28.2': + resolution: {integrity: sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.27.7': resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} @@ -473,6 +819,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.28.2': + resolution: {integrity: sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.27.7': resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} @@ -485,6 +837,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.28.2': + resolution: {integrity: sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.27.7': resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} @@ -497,6 +855,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.28.2': + resolution: {integrity: sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} @@ -509,6 +873,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.28.2': + resolution: {integrity: sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.27.7': resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} @@ -521,6 +891,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.28.2': + resolution: {integrity: sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} @@ -533,6 +909,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.28.2': + resolution: {integrity: sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.27.7': resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} @@ -545,6 +927,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.28.2': + resolution: {integrity: sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.27.7': resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} @@ -557,6 +945,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.28.2': + resolution: {integrity: sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.27.7': resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} @@ -569,6 +963,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.28.2': + resolution: {integrity: sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.27.7': resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} @@ -581,6 +981,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.28.2': + resolution: {integrity: sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.27.7': resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} @@ -593,6 +999,18 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.28.2': + resolution: {integrity: sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@hono/node-server@1.19.9': + resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} + engines: {node: '>=18.14.1'} + peerDependencies: + hono: ^4 + '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -610,58 +1028,298 @@ packages: '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - '@mapbox/node-pre-gyp@2.0.3': - resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} - engines: {node: '>=18'} - hasBin: true + '@libsql/client@0.17.4': + resolution: {integrity: sha512-lYayFWasDV78A+TjlEhr6ubb3odBV6OHjb+wdp8VQcyWWAEIjuwbCHaraEUS4m4yWoo0BvZo96It4VdzZRmRWw==} - '@napi-rs/wasm-runtime@1.1.4': - resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 + '@libsql/core@0.17.4': + resolution: {integrity: sha512-LqF9gIvnJ38nmAH1y/ChizHqDO/MO1wLgA96XrraulEEbqXxLjleSH92YWTolbuJKgPUmGu4aJk9W3UnAcxLOQ==} - '@oxc-project/types@0.127.0': - resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + '@libsql/darwin-arm64@0.5.29': + resolution: {integrity: sha512-K+2RIB1OGFPYQbfay48GakLhqf3ArcbHqPFu7EZiaUcRgFcdw8RoltsMyvbj5ix2fY0HV3Q3Ioa/ByvQdaSM0A==} + cpu: [arm64] + os: [darwin] - '@prisma/compute-sdk@0.39.0': - resolution: {integrity: sha512-Ir4yuCiqyv7XjhqsqolKZjXzzMCFiZJ4vvk1jl0dn6MjZx1j6puojD+1BLbCE8ty0NakaOyhWmXWyO63YeUf/Q==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@prisma/management-api-sdk': ^1.44.0 + '@libsql/darwin-x64@0.5.29': + resolution: {integrity: sha512-OtT+KFHsKFy1R5FVadr8FJ2Bb1mghtXTyJkxv0trocq7NuHntSki1eUbxpO5ezJesDvBlqFjnWaYYY516QNLhQ==} + cpu: [x64] + os: [darwin] - '@prisma/credentials-store@7.8.0': - resolution: {integrity: sha512-T9yp5uYSowV2ZRkBeCZrqWFP4REUlxd5WEYgOFJDjZBRRV+zx3VFCBf0zJI7Z3/PYFF9o3+ZzLwokQ9nY5EbqA==} + '@libsql/hrana-client@0.10.0': + resolution: {integrity: sha512-OoA4EMqRAC7kn7V2P6EQqRcpZf2W+AjsNIyCizBg339Tq/aMC7sRnzs3SklderhmQWAqEzvv8A2vhxVmWpkVvw==} - '@prisma/management-api-sdk@1.55.0': - resolution: {integrity: sha512-WuDDOhxOHfROGY7QAU6wtlbWR0diNwfsQw1epQkhalvgOUe/JzIjxqpBpQzMA54zFVlMmcnT6OEiQfwCIKiRjA==} + '@libsql/isomorphic-ws@0.1.5': + resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} - '@quansync/fs@1.0.0': - resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + '@libsql/linux-arm-gnueabihf@0.5.29': + resolution: {integrity: sha512-CD4n4zj7SJTHso4nf5cuMoWoMSS7asn5hHygsDuhRl8jjjCTT3yE+xdUvI4J7zsyb53VO5ISh4cwwOtf6k2UhQ==} + cpu: [arm] + os: [linux] - '@rolldown/binding-android-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} - engines: {node: ^20.19.0 || >=22.12.0} + '@libsql/linux-arm-musleabihf@0.5.29': + resolution: {integrity: sha512-2Z9qBVpEJV7OeflzIR3+l5yAd4uTOLxklScYTwpZnkm2vDSGlC1PRlueLaufc4EFITkLKXK2MWBpexuNJfMVcg==} + cpu: [arm] + os: [linux] + + '@libsql/linux-arm64-gnu@0.5.29': + resolution: {integrity: sha512-gURBqaiXIGGwFNEaUj8Ldk7Hps4STtG+31aEidCk5evMMdtsdfL3HPCpvys+ZF/tkOs2MWlRWoSq7SOuCE9k3w==} cpu: [arm64] - os: [android] + os: [linux] - '@rolldown/binding-darwin-arm64@1.0.0-rc.17': - resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} - engines: {node: ^20.19.0 || >=22.12.0} + '@libsql/linux-arm64-musl@0.5.29': + resolution: {integrity: sha512-fwgYZ0H8mUkyVqXZHF3mT/92iIh1N94Owi/f66cPVNsk9BdGKq5gVpoKO+7UxaNzuEH1roJp2QEwsCZMvBLpqg==} cpu: [arm64] - os: [darwin] + os: [linux] - '@rolldown/binding-darwin-x64@1.0.0-rc.17': - resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} - engines: {node: ^20.19.0 || >=22.12.0} + '@libsql/linux-x64-gnu@0.5.29': + resolution: {integrity: sha512-y14V0vY0nmMC6G0pHeJcEarcnGU2H6cm21ZceRkacWHvQAEhAG0latQkCtoS2njFOXiYIg+JYPfAoWKbi82rkg==} cpu: [x64] - os: [darwin] + os: [linux] - '@rolldown/binding-freebsd-x64@1.0.0-rc.17': - resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} - engines: {node: ^20.19.0 || >=22.12.0} + '@libsql/linux-x64-musl@0.5.29': + resolution: {integrity: sha512-gquqwA/39tH4pFl+J9n3SOMSymjX+6kZ3kWgY3b94nXFTwac9bnFNMffIomgvlFaC4ArVqMnOZD3nuJ3H3VO1w==} cpu: [x64] - os: [freebsd] + os: [linux] + + '@libsql/win32-x64-msvc@0.5.29': + resolution: {integrity: sha512-4/0CvEdhi6+KjMxMaVbFM2n2Z44escBRoEYpR+gZg64DdetzGnYm8mcNLcoySaDJZNaBd6wz5DNdgRmcI4hXcg==} + cpu: [x64] + os: [win32] + + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + + '@mongodb-js/saslprep@1.4.13': + resolution: {integrity: sha512-E3Sv4eCYAlKYUTx8S3ioQcDUscOif+8zZ5OnW1IzJ+Tt+EO+ke8mn+Y3FX6N1H79picwbdOavVOb1jPi2EOyrg==} + + '@mrleebo/prisma-ast@0.13.1': + resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==} + engines: {node: '>=16'} + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} + cpu: [arm64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': + resolution: {integrity: sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==} + cpu: [x64] + os: [darwin] + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + resolution: {integrity: sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==} + cpu: [arm64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + resolution: {integrity: sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==} + cpu: [arm] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + resolution: {integrity: sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==} + cpu: [x64] + os: [linux] + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': + resolution: {integrity: sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==} + cpu: [x64] + os: [win32] + + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 + + '@napi-rs/wasm-runtime@1.2.2': + resolution: {integrity: sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} + peerDependencies: + '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.3 + '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.3 + + '@neon-rs/load@0.0.4': + resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} + + '@nodable/entities@3.0.0': + resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@octokit/auth-token@6.0.0': + resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} + engines: {node: '>= 20'} + + '@octokit/core@7.0.7': + resolution: {integrity: sha512-DcB0M3KFgr9ECI328lhBMVsyFT2DnmNucSBTqEN3exyNKUzkkpUSCHmTRcunF41Eou2TIQKW4seewri8ON9bSA==} + engines: {node: '>= 20'} + + '@octokit/endpoint@11.0.4': + resolution: {integrity: sha512-f1cOWoHPmxryJFknxbtDdjODWfV8A9tc8Aae6ermXPNgHFZ/x91AtHIz4gicEjL8hkJiip+u21QHJORfBv/qiA==} + engines: {node: '>= 20'} + + '@octokit/graphql@9.0.4': + resolution: {integrity: sha512-5s15CCiY8XXQ+FG+b1YQcl6Z2FA++nwAz/tg2VUrTmnMncP+2nnGUEYANImdnxsA2Fnq+Mbl7hDjUTw7cFAwcg==} + engines: {node: '>= 20'} + + '@octokit/openapi-types@27.0.0': + resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} + + '@octokit/openapi-types@28.0.0': + resolution: {integrity: sha512-0rFyLuyHvIj6uuZWuDslxkowFYdPXoNIkeAv4b27dzm2Tf4vGWXnPsMcxs7d65kLdMERgP3wc1AEPlqMz8e1cQ==} + + '@octokit/openapi-webhooks-types@12.1.0': + resolution: {integrity: sha512-WiuzhOsiOvb7W3Pvmhf8d2C6qaLHXrWiLBP4nJ/4kydu+wpagV5Fkz9RfQwV2afYzv3PB+3xYgp4mAdNGjDprA==} + + '@octokit/plugin-paginate-rest@14.0.0': + resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-request-log@6.0.0': + resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/plugin-rest-endpoint-methods@17.0.0': + resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} + engines: {node: '>= 20'} + peerDependencies: + '@octokit/core': '>=6' + + '@octokit/request-error@7.1.1': + resolution: {integrity: sha512-+eaY7G2VVpSf2pc5Gn1+mph837V/d/TYTJAgWL9Tb0ogGYcpN3IlAVFgjL+Vv93F/sevrxkvsYCedtpLdcFLzA==} + engines: {node: '>= 20'} + + '@octokit/request@10.0.13': + resolution: {integrity: sha512-v2269YxL9Yf+x3d+gRI63FP0vFQEiWgLyBzxe/Y+0yFDg2B/Tzf5dhh9VNfccVAQnfcfwQWyk/y6Bn7rUXXs7A==} + engines: {node: '>= 20'} + + '@octokit/rest@22.0.1': + resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} + engines: {node: '>= 20'} + + '@octokit/types@16.0.0': + resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} + + '@octokit/types@17.0.0': + resolution: {integrity: sha512-ByP1v7YL5SMveFPP7+sj0/ZuWCOOg/Chs4NafOMpq6WNIM/hdGY0S7C0TCGDBWu1aGmOxmUIhMx3cO+IdwYZ1Q==} + + '@octokit/webhooks-methods@6.0.0': + resolution: {integrity: sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ==} + engines: {node: '>= 20'} + + '@octokit/webhooks@14.2.0': + resolution: {integrity: sha512-da6KbdNCV5sr1/txD896V+6W0iamFWrvVl8cHkBSPT+YlvmT3DwXa4jxZnQc+gnuTEqSWbBeoSZYTayXH9wXcw==} + engines: {node: '>= 20'} + + '@oxc-project/types@0.127.0': + resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} + + '@oxc-project/types@0.139.0': + resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} + + '@prisma/cli-engine@0.0.7': + resolution: {integrity: sha512-at7M9hqN9eE0CkAj+U7Ey0ZSqTTSmI1r5Uk9rCc7hbAJgEk3keyQ/ObeXtd0BMu6G9rcb7zGGMQyumKH1gEolQ==} + engines: {node: '>=22.12.0'} + + '@prisma/composer@https://pkg.pr.new/@prisma/composer@220': + resolution: {integrity: sha512-thbBzor5ryiLgBAkUN41mWco/liK8avqPG0U0FkDFR9sqUfgPmEJNEFVsoFlFEmhSK02mP8HFARiOjqzS0ywFQ==, tarball: https://pkg.pr.new/@prisma/composer@220} + version: 0.6.0 + engines: {node: '>=24'} + hasBin: true + + '@prisma/compute-sdk@0.39.0': + resolution: {integrity: sha512-Ir4yuCiqyv7XjhqsqolKZjXzzMCFiZJ4vvk1jl0dn6MjZx1j6puojD+1BLbCE8ty0NakaOyhWmXWyO63YeUf/Q==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@prisma/management-api-sdk': ^1.44.0 + + '@prisma/credentials-store@7.8.0': + resolution: {integrity: sha512-T9yp5uYSowV2ZRkBeCZrqWFP4REUlxd5WEYgOFJDjZBRRV+zx3VFCBf0zJI7Z3/PYFF9o3+ZzLwokQ9nY5EbqA==} + + '@prisma/debug@7.2.0': + resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} + + '@prisma/dev@0.20.0': + resolution: {integrity: sha512-ovlBYwWor0OzG+yH4J3Ot+AneD818BttLA+Ii7wjbcLHUrnC4tbUPVGyNd3c/+71KETPKZfjhkTSpdS15dmXNQ==} + + '@prisma/get-platform@7.2.0': + resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} + + '@prisma/management-api-sdk@1.55.0': + resolution: {integrity: sha512-WuDDOhxOHfROGY7QAU6wtlbWR0diNwfsQw1epQkhalvgOUe/JzIjxqpBpQzMA54zFVlMmcnT6OEiQfwCIKiRjA==} + + '@prisma/management-api-sdk@1.59.0': + resolution: {integrity: sha512-MV5Osk7Ie6dBmehzjXz18oLOhJuDMwuKNzb1zsrq5rfPRpKGGmr3EcFfreIMBgrvM4JvKN1MyUUmwDPyS/Mssw==} + + '@prisma/query-plan-executor@7.2.0': + resolution: {integrity: sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==} + + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} + + '@rolldown/binding-android-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-s70pVGhw4zqGeFnXWvAzJDlvxhlRollagdCCKRgOsgUOH3N1l0LIxf83AtGzmb5SiVM4Hjl5HyarMRfdfj3DaQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-android-arm64@1.1.5': + resolution: {integrity: sha512-lZg8fqIv2v7FF237bwMgzGZEJvGL79/s5knJ/i6FmsGF4XXlzccZ4jb+TrFIxtSSxFtIpdsgrPZeMk1I9AFcyQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': + resolution: {integrity: sha512-4ksWc9n0mhlZpZ9PMZgTGjeOPRu8MB1Z3Tz0Mo02eWfWCHMW1zN82Qz/pL/rC+yQa+8ZnutMF0JjJe7PjwasYw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-arm64@1.1.5': + resolution: {integrity: sha512-51Bnx9pNiMRKSUNtBfySkNJ9vMU9Hh3I1ozDd6gyPPYzaXCfnptUcEZxXGYFn+ul2dtcMUiqGR1Yai2K10uoTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.0.0-rc.17': + resolution: {integrity: sha512-SUSDOI6WwUVNcWxd02QEBjLdY1VPHvlEkw6T/8nYG322iYWCTxRb1vzk4E+mWWYehTp7ERibq54LSJGjmouOsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.1.5': + resolution: {integrity: sha512-Tm+gbfC0aHu1tBA/JvKQh32S0K6YgCHkiAF4/W6xX0K0RmNuc94VeK419dJoE65R5aRxmo+noZQSWrAMF6yb6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': + resolution: {integrity: sha512-hwnz3nw9dbJ05EDO/PvcjaaewqqDy7Y1rn1UO81l8iIK1GjenME75dl16ajbvSSMfv66WXSRCYKIqfgq2KCfxw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-freebsd-x64@1.1.5': + resolution: {integrity: sha512-JMzDKCCXq93YccG5gz3hvOs1oXRKAf0XYpfOS88e+wZrC8Iugj6j68867vrYZkvpDDpKn/KoKORThmchMpF6TA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': resolution: {integrity: sha512-IS+W7epTcwANmFSQFrS1SivEXHtl1JtuQA9wlxrZTcNi6mx+FDOYrakGevvvTwgj2JvWiK8B29/qD9BELZPyXQ==} @@ -669,6 +1327,12 @@ packages: cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + resolution: {integrity: sha512-uML21j2K5TfPGutKxub+M+nLjZIrWjXQ5Grx4lCe/nimTj9B4L63zHpjXLl4y0L3mcm2htEQIb06oCG/szerNw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': resolution: {integrity: sha512-e6usGaHKW5BMNZOymS1UcEYGowQMWcgZ71Z17Sl/h2+ZziNJ1a9n3Zvcz6LdRyIW5572wBCTH/Z+bKuZouGk9Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -676,6 +1340,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.1.5': + resolution: {integrity: sha512-navSiuTMogvnQoZoM/v+l3ZWo50/NTwSHSzheABx/RCnmUPaKwq9qSo4Br2OYRs21+Fz8uFqITZM3H4opOB0/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': resolution: {integrity: sha512-b/CgbwAJpmrRLp02RPfhbudf5tZnN9nsPWK82znefso832etkem8H7FSZwxrOI9djcdTP7U6YfNhbRnh7djErg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -683,6 +1354,13 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.1.5': + resolution: {integrity: sha512-lAryqH7IteztmCXQXk0etKj4wBQ7Gx5S6LjKhsgp9zb8I5bsuvU/2llH1hDQcjsFeqIsovMVN339/8pUDDBXxA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': resolution: {integrity: sha512-4EII1iNGRUN5WwGbF/kOh/EIkoDN9HsupgLQoXfY+D1oyJm7/F4t5PYU5n8SWZgG0FEwakyM8pGgwcBYruGTlA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -690,6 +1368,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + resolution: {integrity: sha512-fsK/sNBnxzBlL4O1JNrZakVQxPspqpED5dLtNsZS9oOKmtSpdNIzxH2kkol5HYTWJN47sE20ztMJPxfZ89qGOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': resolution: {integrity: sha512-AH8oq3XqQo4IibpVXvPeLDI5pzkpYn0WiZAfT05kFzoJ6tQNzwRdDYQ45M8I/gslbodRZwW8uxLhbSBbkv96rA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -697,6 +1382,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-s390x-gnu@1.1.5': + resolution: {integrity: sha512-gLYb4BIadlfTOYT5gO503n8zQjXflgzpD0FcyKh0Mzx3rqCZKnHoJWV9xe1KXUJ5lx2JfcSHr/mhzS0PC/McAA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': resolution: {integrity: sha512-cLnjV3xfo7KslbU41Z7z8BH/E1y5mzUYzAqih1d1MDaIGZRCMqTijqLv76/P7fyHuvUcfGsIpqCdddbxLLK9rA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -704,6 +1396,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.1.5': + resolution: {integrity: sha512-FjcpEKUyJygHgs1o50VYNvkt5+7Le/VEdYt0AkRpkL33MnyQfwr8l5mXwMmfmTbyMPr5vJLC+8/Gd9gXnwU1QQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': resolution: {integrity: sha512-0phclDw1spsL7dUB37sIARuis2tAgomCJXAHZlpt8PXZ4Ba0dRP1e+66lsRqrfhISeN9bEGNjQs+T/Fbd7oYGw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -711,32 +1410,65 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.1.5': + resolution: {integrity: sha512-Me+PfPI2TMeOQk0gYWfLQZtTktrmzbr8cDboqX83XKc7UrgAi55gF+2dUkWdxd19n55Essp2yeca+O9N5rBxHg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': resolution: {integrity: sha512-0ag/hEgXOwgw4t8QyQvUCxvEg+V0KBcA6YuOx9g0r02MprutRF5dyljgm3EmR02O292UX7UeS6HzWHAl6KgyhA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.1.5': + resolution: {integrity: sha512-yc5WrLzXks6zCQfn9Oxr8pORKyl/pF+QjHmW/Qx3qu0oyrrNC+y2JLTU1E2rcWYAmzlnqngWXHQjy51VzW70Vw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': resolution: {integrity: sha512-LEXei6vo0E5wTGwpkJ4KoT3OZJRnglwldt5ziLzOlc6qqb55z4tWNq2A+PFqCJuvWWdP53CVhG1Z9NtToDPJrA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.1.5': + resolution: {integrity: sha512-VbQGPX2b4r48TAMIM2cjgluIM1HYutm4pcTEJsle7iEP7sB1dFqtPLBVbdLAZCxy1txCcPxf4QFf4v8uvltPqA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': resolution: {integrity: sha512-gUmyzBl3SPMa6hrqFUth9sVfcLBlYsbMzBx5PlexMroZStgzGqlZ26pYG89rBb45Mnia+oil6YAIFeEWGWhoZA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.1.5': + resolution: {integrity: sha512-gHv82k63z4qpV5+Q1y/12KrK0ltWBukVDI8nZcbT7Tt/ZlOIVwppazneq0F93oDxTo3IgAMEDIoQh3E2n6mVsw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': resolution: {integrity: sha512-3hkiolcUAvPB9FLb3UZdfjVVNWherN1f/skkGWJP/fgSQhYUZpSIRr0/I8ZK9TkF3F7kxvJAk0+IcKvPHk9qQg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.1.5': + resolution: {integrity: sha512-tTZuDBPw85tEN5PQi1pnEBzDy0Z49HtScLAbD5t6hyeU92A95pRWaSMw1GZZi/RwgSgUIl0xrSlXIT/9QzvYSA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-rc.17': resolution: {integrity: sha512-n8iosDOt6Ig1UhJ2AYqoIhHWh/isz0xpicHTzpKBeotdVsTEcxsSA/i3EVM7gQAj0rU27OLAxCjzlj15IWY7bg==} + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + '@rollup/pluginutils@5.4.0': resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} engines: {node: '>=14.0.0'} @@ -891,6 +1623,54 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} + '@smithy/core@3.31.1': + resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.4.16': + resolution: {integrity: sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.6.13': + resolution: {integrity: sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/node-config-provider@4.5.16': + resolution: {integrity: sha512-N4XTMCO77u8jXq9Ms1pbFM3M9zD+ScKnvB+M7//VyawM8L6xW3/mqAPp/uMOYprW+q/b1Qen6qUKVwxTb2ymiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.9.13': + resolution: {integrity: sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.6.16': + resolution: {integrity: sha512-apuIuit7x6ZM0nJxuKf24MCkflwnSyD6wePOPGkhntEl0gLaIYLlZTQtzCB+j3kWOTpqx0D1o6JZ15NTk4f8xQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.6.12': + resolution: {integrity: sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.16.1': + resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.5.16': + resolution: {integrity: sha512-80e25qWKD6hJh5BenAutni2Z6dj2AiZKmht21pcROmzWzQja8yl+KqsuDSia++hwk1Ne6RrDEBwP6I+A4R0XAg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + '@standard-schema/spec@1.1.0': resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} @@ -930,6 +1710,12 @@ packages: '@tybys/wasm-util@0.10.2': resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} + '@tybys/wasm-util@0.10.3': + resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} + + '@types/aws-lambda@8.10.162': + resolution: {integrity: sha512-Fn658grtLOci1oxi1391vvDWJRKNGWRSqfxRkmN/Iy3c0tQH1USMKEXcPYHLvope+ZgTFocx9FRQJx1muBL6qw==} + '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} @@ -945,6 +1731,15 @@ packages: '@types/node@22.19.19': resolution: {integrity: sha512-dyh/xO2Fh5bYrfWaaqGrRQQGkNdmYw6AmaAUvYeUMNTWQtvb796ikLdmTchRmOlOiIJ1TDXfWgVx1QkUlQ6Hew==} + '@types/webidl-conversions@7.0.3': + resolution: {integrity: sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==} + + '@types/whatwg-url@11.0.5': + resolution: {integrity: sha512-coYR071JRaHa+xoEvvYqvnIHaVqaYrLPbsufM9BF63HkwI5Lgmy2QR8Q5K/lYDYo5AK82wOvSOS0UsLTpTG7uQ==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + '@vercel/detect-agent@1.2.4': resolution: {integrity: sha512-euARTdvCVoi2k7/mqRUGyareO98jiVjwUyfJ8VFpN53aUv3R6ZgwSpU3ErOwFQKT6Fq8dOplEsy+DSmEoJPQdQ==} engines: {node: '>=14'} @@ -1001,6 +1796,41 @@ packages: resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} engines: {node: '>= 14'} + alchemy@2.0.0-beta.67: + resolution: {integrity: sha512-kFEKEXtRdf781lRzGyYinPRVgrMKJFs5MNQTxF2Y5RIxyA2qCsK0NOOBBoOzYmGOln8e3CIYF/oEASFQjffXJA==} + hasBin: true + peerDependencies: + '@aws/durable-execution-sdk-js': ^2.1.0 + '@effect/platform-bun': '>=4.0.0-beta.100 || >=4.0.0' + '@effect/platform-node': '>=4.0.0-beta.100 || >=4.0.0' + '@effect/sql-pg': '>=4.0.0-beta.100 || >=4.0.0' + drizzle-kit: 1.0.0-rc.4 + drizzle-orm: 1.0.0-rc.4 + effect: '>=4.0.0-beta.100 || >=4.0.0' + vite: ^8.0.7 + ws: ^8.20.0 + peerDependenciesMeta: + '@aws/durable-execution-sdk-js': + optional: true + '@effect/platform-bun': + optional: true + '@effect/platform-node': + optional: true + '@effect/sql-pg': + optional: true + drizzle-kit: + optional: true + drizzle-orm: + optional: true + vite: + optional: true + ws: + optional: true + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + ansi-regex@6.2.2: resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} engines: {node: '>=12'} @@ -1013,6 +1843,15 @@ packages: resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} engines: {node: '>=14'} + anynum@1.0.1: + resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==} + + arkregex@0.0.8: + resolution: {integrity: sha512-PJcx6G1kQTgLKPUbeYlYecDRaKq15AMSGVajlKFYWlPeJRQL+j3dKE6tyMs40HZ99djS1l9Vhl3ezAHy9JBIqQ==} + + arktype@2.2.3: + resolution: {integrity: sha512-7W+0RLTUNJiBFIIZXwOQxSR8Z273IAd6IvqBeG9+gHnQKFsIx2C0iOtGTmMrPnlX4qLXyc5+ll7A0BIj9WrbTg==} + assertion-error@2.0.1: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} @@ -1024,6 +1863,17 @@ packages: async-sema@3.1.1: resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==} + auto-bind@5.0.1: + resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + aws-ssl-profiles@1.1.2: + resolution: {integrity: sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==} + engines: {node: '>= 6.0.0'} + + aws4fetch@1.0.20: + resolution: {integrity: sha512-/djoAN709iY65ETD6LKCtyyEI04XIBP5xVvfmNxsEP0uJB5tyaGBztSryRr4HqMStr9R06PisQE7m9zDTXKu6g==} + b4a@1.8.1: resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} peerDependencies: @@ -1077,6 +1927,9 @@ packages: bare-url@2.4.5: resolution: {integrity: sha512-K+y9xF1tN+CdPu4qWwr0QiK1Al07eFPGYK5M2pDXcmHdMdgC/tT/bpmMe1hrmRHaidKLkXrC+cRNYf3XVDUhSQ==} + before-after-hook@4.0.0: + resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} + better-result@2.9.2: resolution: {integrity: sha512-WIFoBPCdnTOdk9inkE1ZRvCZ4P0CpSkAiLlchC65N7n9DcjZ3NhqkBOlafzpOVnO8ixyi37kicmSJ3ENhPZl7Q==} @@ -1086,10 +1939,21 @@ packages: birpc@4.0.0: resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + brace-expansion@5.0.7: resolution: {integrity: sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==} engines: {node: 18 || 20 || >=22} + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + bson@6.10.4: + resolution: {integrity: sha512-WIsKqkSC0ABoBJuT1LEX+2HEvNmNKKgnTAyd0fL8qzK4SH2i9NXg+t08YtdZp/V9IZ33cxe3iV4yM0qg8lMQng==} + engines: {node: '>=16.20.1'} + bundle-name@4.1.0: resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} engines: {node: '>=18'} @@ -1106,10 +1970,20 @@ packages: resolution: {integrity: sha512-tixWYgm5ZoOD+3g6UTea91eow5z6AAHaho3g0V9CNSNb45gM8SmflpAc+GRd1InC4AqN/07Unrgp56Y94N9hJQ==} engines: {node: '>=20.19.0'} + capnweb@0.6.1: + resolution: {integrity: sha512-fmhV26QPd1ewf5R74h55oVZnGwIcSaRMzbfLQUy8+zOBjuTmT3KXoT8wxHvnp1m9Ht9BoUUS5ZwNLoVLfQTyBg==} + chai@6.2.2: resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} engines: {node: '>=18'} + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chevrotain@10.5.0: + resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -1122,6 +1996,22 @@ packages: resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} engines: {node: '>=8'} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + code-excerpt@4.0.0: + resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + colorette@2.0.20: resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} @@ -1136,9 +2026,20 @@ packages: resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} engines: {node: ^14.18.0 || >=16.10.0} + content-type@2.0.0: + resolution: {integrity: sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==} + engines: {node: '>=18'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + convert-to-spaces@2.0.1: + resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -1170,6 +2071,10 @@ packages: destr@2.0.5: resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + detect-libc@2.0.2: + resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} + engines: {node: '>=8'} + detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -1187,13 +2092,26 @@ packages: oxc-resolver: optional: true + effect@4.0.0-beta.103: + resolution: {integrity: sha512-pE8TxF4m2tQzVI+77dIlm3s+81TACV1AiX1JEkvY+zVuxgQQ8aGSkqXNJF6b/ST+coCSk5cUdbULpQ7sm4oHyw==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + empathic@2.0.1: resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} engines: {node: '>=14'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + es-module-lexer@2.1.0: resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-toolkit@1.50.0: + resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} + esbuild@0.27.7: resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} @@ -1204,6 +2122,15 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.28.2: + resolution: {integrity: sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==} + engines: {node: '>=18'} + hasBin: true + + escape-string-regexp@2.0.0: + resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} + engines: {node: '>=8'} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} @@ -1224,9 +2151,17 @@ packages: exsolve@1.1.1: resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} + fast-check@4.9.0: + resolution: {integrity: sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg==} + engines: {node: '>=12.17.0'} + fast-fifo@1.3.2: resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + fast-string-truncated-width@3.0.3: resolution: {integrity: sha512-0jjjIEL6+0jag3l2XWWizO64/aZVtpiGE3t0Zgqxv0DPuxiMjvB3M24fCyhZUO4KomJQPj3LTSUnDP3GpdwC0g==} @@ -1236,6 +2171,16 @@ packages: fast-wrap-ansi@0.2.2: resolution: {integrity: sha512-7F2Fl+TjRSenLqlU3UjSH0iyqopqoZIu7eZVpEirP2g1GtWa2G/ecEmBdgz31+Mxr+ELclgg6sokpSFIQiZ02Q==} + fast-xml-builder@1.3.0: + resolution: {integrity: sha512-F74cZEdCvuw9P41GAC3rod4X04jjWGM1JPEv/GWSqFTWLsdyMSBMBMlm9Hk3GLBgLBbdBNY8yee0pQh2RBVESQ==} + + fast-xml-parser@5.10.1: + resolution: {integrity: sha512-IEMIf7298kXuZSRFoGfMYrl7is8LpavODgbNz1cwIudv7KwVFnuU+UsMporfq6PD6aXSlawZlARiA3UywCTfMw==} + hasBin: true + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} @@ -1252,15 +2197,32 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-my-way-ts@0.1.6: + resolution: {integrity: sha512-a85L9ZoXtNAey3Y6Z+eBWW658kO/MwR7zIafkIUPUMf3isZG0NCs2pjW2wtjxAKuJPxMAsHUIP4ZPGv0o5gyTA==} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + generate-function@2.3.1: + resolution: {integrity: sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==} + get-east-asian-width@1.6.0: resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} + get-port-please@3.2.0: + resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} + get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -1272,6 +2234,10 @@ packages: resolution: {integrity: sha512-r+mvuDjrjMpsdw46Kmeydb8bdHm7wOKw8wNBtTndkjbPjgAp5oUJUxRE76wZFknxIPokfWvep2qSXK37aXE6zg==} hasBin: true + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -1279,9 +2245,22 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + grammex@3.1.13: + resolution: {integrity: sha512-LnPnhOBLEJEVKS8WFDVaA397L9Kq55Q9oSITJiVLHVdhAclfUkWzQv74KhvZHKL2Q09Pb1XdsrOsZ4LfTFFTEg==} + + graphmatch@1.1.1: + resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==} + + hono@4.11.4: + resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} + engines: {node: '>=16.9.0'} + hookable@6.1.1: resolution: {integrity: sha512-U9LYDy1CwhMCnprUfeAZWZGByVbhd54hwepegYTK7Pi5NvqEj63ifz5z+xukznehT7i6NIZRu89Ay1AZmRsLEQ==} + http-status-codes@2.3.0: + resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} + https-proxy-agent@7.0.6: resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} engines: {node: '>= 14'} @@ -1290,15 +2269,63 @@ packages: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + + immediate@3.0.6: + resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} + import-without-cache@0.3.3: resolution: {integrity: sha512-bDxwDdF04gm550DfZHgffvlX+9kUlcz32UD0AeBTmVPFiWkrexF2XVmiuFFbDhiFuP8fQkrkvI2KdSNPYWAXkQ==} engines: {node: '>=20.19.0'} + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@7.0.0: + resolution: {integrity: sha512-ifK0CgjALofS5bkrcTy4RaQ9Vx2Knf/eLeIO+NaswQEpH1UblrtTSCIvN71qQDMq0PeQ/SSPojvEJp9vvvfr+w==} + engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} + + ink@6.8.0: + resolution: {integrity: sha512-sbl1RdLOgkO9isK42WCZlJCFN9hb++sX9dsklOvfd1YQ3bQ2AiFu12Q6tFlr0HvEUvzraJntQCCpfEoUe9DSzA==} + engines: {node: '>=20'} + peerDependencies: + '@types/react': '>=19.0.0' + react: '>=19.0.0' + react-devtools-core: '>=6.1.2' + peerDependenciesMeta: + '@types/react': + optional: true + react-devtools-core: + optional: true + is-docker@3.0.0: resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} hasBin: true + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ci@2.0.0: + resolution: {integrity: sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==} + engines: {node: '>=20'} + hasBin: true + is-in-ssh@1.0.0: resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} engines: {node: '>=20'} @@ -1308,10 +2335,17 @@ packages: engines: {node: '>=14.16'} hasBin: true + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + is-plain-obj@4.1.0: resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} engines: {node: '>=12'} + is-property@1.0.2: + resolution: {integrity: sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==} + is-stream@4.0.1: resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} engines: {node: '>=18'} @@ -1320,10 +2354,16 @@ packages: resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} engines: {node: '>=18'} + is-unsafe@2.0.0: + resolution: {integrity: sha512-2LdV822R+wmI86unXA93WCFpL6g+av8ynWk0nrHyJqGop5VoocYsSLFgN8jrfalT6iGeLNM4KXuVSsULP53kEA==} + is-wsl@3.1.1: resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} engines: {node: '>=16'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1331,21 +2371,76 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true + js-base64@3.9.2: + resolution: {integrity: sha512-6zayE8QlUdiweYI6cETD/XBSqFcoCUlufn/29PJR99r82x1yDnIprRca0YvAYpAW+ez0GuQkVBC6xG5QkD7OjA==} + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} hasBin: true + json-with-bigint@3.5.10: + resolution: {integrity: sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==} + + jszip@3.10.1: + resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} + + kubernetes-types@1.30.0: + resolution: {integrity: sha512-Dew1okvhM/SQcIa2rcgujNndZwU8VnSapDgdxlYoB84ZlpAD43U6KLAFqYo17ykSFGHNPrg0qry0bP+GJd9v7Q==} + + libsodium-wrappers@0.8.4: + resolution: {integrity: sha512-mu8aAWucZjTB5O/BtGXtW4e1agy7uHxNYG7zPthmmD1jU43LCDmSWZLN4JhflbdPXj3yDO4lxM1O9hLDgIOXDw==} + + libsodium@0.8.4: + resolution: {integrity: sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw==} + + libsql@0.5.29: + resolution: {integrity: sha512-8lMP8iMgiBzzoNbAPQ59qdVcj6UaE/Vnm+fiwX4doX4Narook0a4GPKWBEv+CR8a1OwbfkgL18uBfBjWdF0Fzg==} + cpu: [x64, arm64, wasm32, arm] + os: [darwin, linux, win32] + + lie@3.3.0: + resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + lru-cache@11.5.1: resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} engines: {node: 20 || >=22} + lru.min@1.1.4: + resolution: {integrity: sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==} + engines: {bun: '>=1.0.0', deno: '>=1.30.0', node: '>=8.0.0'} + magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} magicast@0.5.3: resolution: {integrity: sha512-pVKE4UdSQ7DvHzivsCIFx2BJn1mHG6KsyrFcaxFx6tONdneEuThrDx0Cj3AMg58KyN4pzYT+LHOotxDQDjNvkw==} + memory-pager@1.5.0: + resolution: {integrity: sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + minimatch@10.2.5: resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} @@ -1358,9 +2453,59 @@ packages: resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} engines: {node: '>= 18'} + mongodb-connection-string-url@3.0.2: + resolution: {integrity: sha512-rMO7CGo/9BFwyZABcKAWL8UJwH/Kc2x0g72uhDWzG48URRax5TCIcJ7Rc3RZqffZzO/Gwff/jyKwCU9TN8gehA==} + + mongodb@6.21.0: + resolution: {integrity: sha512-URyb/VXMjJ4da46OeSXg+puO39XH9DeQpWCslifrRn9JWugy0D+DvvBvkm2WxmHe61O/H19JM66p1z7RHVkZ6A==} + engines: {node: '>=16.20.1'} + peerDependencies: + '@aws-sdk/credential-providers': ^3.188.0 + '@mongodb-js/zstd': ^1.1.0 || ^2.0.0 + gcp-metadata: ^5.2.0 + kerberos: ^2.0.1 + mongodb-client-encryption: '>=6.0.0 <7' + snappy: ^7.3.2 + socks: ^2.7.1 + peerDependenciesMeta: + '@aws-sdk/credential-providers': + optional: true + '@mongodb-js/zstd': + optional: true + gcp-metadata: + optional: true + kerberos: + optional: true + mongodb-client-encryption: + optional: true + snappy: + optional: true + socks: + optional: true + ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + msgpackr-extract@3.0.4: + resolution: {integrity: sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==} + hasBin: true + + msgpackr@2.0.5: + resolution: {integrity: sha512-cef05H/dSYpLpqp3sj/qyZh5vhUYCalnaLO7j1yOmpsR0y/XwLVtK7r5gn+U/F7CTEfMowcGhlUQJDLcLf7jcA==} + + multipasta@0.2.8: + resolution: {integrity: sha512-ZPWuMKyv0cSO29f7hozp+k6+crZbQijV8ipMvxNxRf2SwtYGTX1ZX89Kd20VV4H9Znonx+EQn+iy1wGQsJ+b+Q==} + + mysql2@3.23.3: + resolution: {integrity: sha512-ehp9HEKr4wVJaBOUVxNFa+CNrsCCCZ6363/jbGhb7WpEmSRNIXjHBjFs5K2s2cXn7j/RhDieejsQJ6nfUwD6vQ==} + engines: {node: '>= 8.0'} + peerDependencies: + '@types/node': '>= 8' + + named-placeholders@1.1.6: + resolution: {integrity: sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==} + engines: {node: '>=8.0.0'} + nanoid@3.3.15: resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -1375,6 +2520,10 @@ packages: encoding: optional: true + node-gyp-build-optional-packages@5.2.2: + resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} + hasBin: true + node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -1394,6 +2543,10 @@ packages: ohash@2.0.11: resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + open@11.0.0: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} @@ -1408,10 +2561,21 @@ packages: resolution: {integrity: sha512-Ux1J4NUqC6tZayBqLN1kUlDAEvLiQlli/53sSddU4IN+h+3xxnv2HmRSMpVSvr1hvJzotfMs3ERvETGK+f4OwA==} engines: {node: '>= 4.0'} + pako@1.0.11: + resolution: {integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==} + parse-ms@4.0.0: resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} engines: {node: '>=18'} + patch-console@2.0.0: + resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-expression-matcher@1.6.2: + resolution: {integrity: sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==} + engines: {node: '>=14.0.0'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -1430,9 +2594,47 @@ packages: perfect-debounce@2.1.0: resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + pg-cloudflare@1.4.0: + resolution: {integrity: sha512-Vo7z/6rrQYxpNRylp4Tlob2elzbh+N/MOQbxFVWCxS7oEx6jF53GTJFxK2WWpKuBRkmiin4Mt+xofFDjx09R0A==} + + pg-connection-string@2.14.0: + resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} + + pg-int8@1.0.1: + resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} + engines: {node: '>=4.0.0'} + + pg-pool@3.14.0: + resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} + peerDependencies: + pg: '>=8.0' + + pg-protocol@1.16.0: + resolution: {integrity: sha512-sILXutLVjCLjcDuOmvhX5e2Z4cS5qG/6Bu3VkpFwdf/633ElGLpEh9bgmuI5I4sqKqkifQiGyiCcx1HdtrK7tg==} + + pg-types@2.2.0: + resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} + engines: {node: '>=4'} + + pg@8.23.0: + resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==} + engines: {node: '>= 16.0.0'} + peerDependencies: + pg-native: '>=3.0.1' + peerDependenciesMeta: + pg-native: + optional: true + + pgpass@1.0.5: + resolution: {integrity: sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -1448,6 +2650,22 @@ packages: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} + postgres-array@2.0.0: + resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} + engines: {node: '>=4'} + + postgres-bytea@1.0.1: + resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} + engines: {node: '>=0.10.0'} + + postgres-date@1.0.7: + resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} + engines: {node: '>=0.10.0'} + + postgres-interval@1.2.0: + resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} + engines: {node: '>=0.10.0'} + powershell-utils@0.1.0: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} @@ -1456,16 +2674,54 @@ packages: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise-limit@2.7.0: + resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + pure-rand@8.4.2: + resolution: {integrity: sha512-vvuOGgcuPJAirlHvuQw1TrOiw7ptaIXXmIbNuiNOY6lNGJJH49PQ1Kj4nd783nPdQhQdicgOjVI2yI/9BD6/Ng==} + quansync@1.0.0: resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + rc9@3.0.1: resolution: {integrity: sha512-gMDyleLWVE+i6Sgtc0QbbY6pEKqYs97NGi6isHQPqYlLemPoO8dxQ3uGi0f4NiP98c+jMW6cG1Kx9dDwfvqARQ==} + react-reconciler@0.33.0: + resolution: {integrity: sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==} + engines: {node: '>=0.10.0'} + peerDependencies: + react: ^19.2.0 + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + readdirp@5.1.1: resolution: {integrity: sha512-Kko+Y5XQ6fM+Ce3dq3m9YGxnacYZYl9cA1wZjaF3Vbry2L3i1qVg8+CAgNPsXRArPMUMCaOR7oa9Nqntc43JKA==} engines: {node: '>= 20.19.0'} + regexp-to-ast@0.5.0: + resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} + + remeda@2.33.4: + resolution: {integrity: sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ==} + resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} @@ -1473,6 +2729,18 @@ packages: resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + rolldown-plugin-dts@0.23.2: resolution: {integrity: sha512-PbSqLawLgZBGcOGT3yqWBGn4cX+wh2nt5FuBGdcMHyOhoukmjbhYAl8NT9sE4U38Cm9tqLOIQeOrvzeayM0DLQ==} engines: {node: '>=20.19.0'} @@ -1497,6 +2765,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.1.5: + resolution: {integrity: sha512-t9z29cJjXf/vxQ8dyhCSpt6H6aSwHTk8cT5I3iy6SMXuFpk5mB6PL6XfC8PCwrPTx93udwKUm9HRteAlTGBLiA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.62.2: resolution: {integrity: sha512-RFnrW4lhXA3s3eqHDZvN654g8OTjzRfqpIRJYczCGB6HzphckVAi/Qh4tbPUbRuDi7s1Llv8g/NspLkttY3gTA==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -1506,11 +2779,26 @@ packages: resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} engines: {node: '>=18'} + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + semver@7.8.1: resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} engines: {node: '>=10'} hasBin: true + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1522,6 +2810,9 @@ packages: siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -1529,23 +2820,52 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} engines: {node: '>=0.10.0'} + sparse-bitfield@3.0.3: + resolution: {integrity: sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + sql-escaper@1.5.1: + resolution: {integrity: sha512-4toX5E1fQbBrpfXidaHnF0669nkAdETeIPTs2SUjxxD7RRIs9ICG4gtpmfc68JCEKehsdwLFqBu9VlQqZ1P1gg==} + engines: {bun: '>=1.0.0', deno: '>=2.0.0', node: '>=12.0.0'} + + stack-utils@2.0.6: + resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} + engines: {node: '>=10'} + stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.1.0: resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} streamx@2.28.0: resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string-width@8.2.1: resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + strip-ansi@7.2.0: resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} engines: {node: '>=12'} @@ -1554,6 +2874,13 @@ packages: resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} engines: {node: '>=18'} + strnum@2.4.1: + resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + tar-stream@3.2.0: resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} @@ -1564,6 +2891,10 @@ packages: teex@1.0.1: resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + terminal-size@4.0.1: + resolution: {integrity: sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==} + engines: {node: '>=18'} + text-decoder@1.2.7: resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} @@ -1585,9 +2916,21 @@ packages: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toml@4.3.0: + resolution: {integrity: sha512-lVb8X9BsPVuH0M4BKeS91tXAmJvCjQ5UIyAbQFaxkKGyUFK2RPkhwaFSQH8vbpl1d23eu/IBH+dwVMHWaq9A5A==} + engines: {node: '>=20'} + tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@5.1.1: + resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} + engines: {node: '>=18'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -1632,6 +2975,10 @@ packages: resolution: {integrity: sha512-Yl9+ukxH+UmPtKidpDkjn82tvPoEvFNb9UACd9vUomN1Ft0cwl3rx0P8yC1D93W9EOsWRMjllvIDG8y25sFOog==} hasBin: true + type-fest@5.8.0: + resolution: {integrity: sha512-YGYEVz3Fm5iy/AybuA0oyNFq7H4CgQNfRp/qfe8nurE1kuCeNm3/vfm9X4Mtl+qLyaKJUh5xrFZwogr41SMjYA==} + engines: {node: '>=20'} + typescript@6.0.3: resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} engines: {node: '>=14.17'} @@ -1643,10 +2990,20 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici@7.29.0: + resolution: {integrity: sha512-IDxfleLmmbSskfWSUATiN1nfn2rDuvnMOqb5CWR92iIfojA0Ud+ulOAAEQ57LPr9rWmsreUyf5lwyao+7GNNVw==} + engines: {node: '>=20.18.1'} + + unenv@2.0.0-rc.24: + resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==} + unicorn-magic@0.3.0: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} + universal-user-agent@7.0.3: + resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} + unrun@0.2.39: resolution: {integrity: sha512-h9FxYVpztY/wwq+bauLOh6Y3CWu2IVeRLq5lxzneBiIU9Tn86OGp9xiQrGhnYspAmg5dzdY0Cc8+Y70kuTARCg==} engines: {node: '>=20.19.0'} @@ -1657,6 +3014,21 @@ packages: synckit: optional: true + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@14.0.1: + resolution: {integrity: sha512-6ZxzVpzDXDa3bJWaHilVayA+BH/1zmxCJoVgvmqJnid/gPoKHxUrS/aC/T6LGQtNHT+XHG9fXPJB4d+IrU30Ew==} + hasBin: true + + valibot@1.2.0: + resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==} + peerDependencies: + typescript: '>=5' + peerDependenciesMeta: + typescript: + optional: true + vite@7.3.5: resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} engines: {node: ^20.19.0 || >=22.12.0} @@ -1741,6 +3113,14 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@7.0.0: + resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} + engines: {node: '>=12'} + + whatwg-url@14.2.0: + resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} + engines: {node: '>=18'} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -1754,10 +3134,23 @@ packages: engines: {node: '>=8'} hasBin: true + widest-line@6.0.0: + resolution: {integrity: sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA==} + engines: {node: '>=20'} + + workerd@1.20260704.1: + resolution: {integrity: sha512-GDZ0jzIYDYfN7rCt/oFJv4BG3QJ+4IS2kfRvxEMY9VKIfPhzo63PH69Ir7ug8LfORCgCtmfkiQVXrqbot7pZTQ==} + engines: {node: '>=16'} + hasBin: true + wrap-ansi@10.0.0: resolution: {integrity: sha512-SGcvg80f0wUy2/fXES19feHMz8E0JoXv2uNgHOu4Dgi2OrCy1lqwFYEJz1BLbDI0exjPMe/ZdzZ/YpGECBG/aQ==} engines: {node: '>=20'} + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + ws@8.21.0: resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} engines: {node: '>=10.0.0'} @@ -1782,6 +3175,14 @@ packages: resolution: {integrity: sha512-xrcqhWDvtZ7WLmt8G4f3hHy37iK7D2idtosRgkeiSPZEPmBShp0VfmRBLWAPC6zLF48APJ21yfea+RfQMF4/Aw==} engines: {node: '>= 4.0'} + xml-naming@0.3.0: + resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==} + engines: {node: '>=16.0.0'} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + yallist@5.0.0: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} @@ -1795,68 +3196,260 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} + yoga-layout@3.2.1: + resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} + + zeptomatch@2.1.0: + resolution: {integrity: sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==} + snapshots: - '@babel/generator@8.0.0-rc.3': + '@alcalzone/ansi-tokenize@0.2.5': dependencies: - '@babel/parser': 8.0.0-rc.3 - '@babel/types': 8.0.0-rc.3 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 - '@babel/helper-string-parser@7.29.7': {} + '@alchemy.run/node-utils@0.0.5': {} - '@babel/helper-string-parser@8.0.0-rc.6': {} + '@ark/schema@0.56.2': + dependencies: + '@ark/util': 0.56.2 - '@babel/helper-validator-identifier@7.29.7': {} + '@ark/util@0.56.2': {} - '@babel/helper-validator-identifier@8.0.0-rc.3': {} + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.974.2 + tslib: 2.8.1 - '@babel/parser@7.29.7': + '@aws-crypto/util@5.2.0': dependencies: - '@babel/types': 7.29.7 + '@aws-sdk/types': 3.974.2 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 - '@babel/parser@8.0.0-rc.3': + '@aws-sdk/core@3.977.6': dependencies: - '@babel/types': 8.0.0-rc.3 + '@aws-sdk/types': 3.974.2 + '@aws-sdk/xml-builder': 3.972.37 + '@aws/lambda-invoke-store': 0.3.0 + '@smithy/core': 3.31.1 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + bowser: 2.14.1 + tslib: 2.8.1 - '@babel/types@7.29.7': + '@aws-sdk/credential-provider-cognito-identity@3.972.66': dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@babel/types@8.0.0-rc.3': + '@aws-sdk/credential-provider-env@3.972.67': dependencies: - '@babel/helper-string-parser': 8.0.0-rc.6 - '@babel/helper-validator-identifier': 8.0.0-rc.3 + '@aws-sdk/core': 3.977.6 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/biome@2.4.16': - optionalDependencies: - '@biomejs/cli-darwin-arm64': 2.4.16 - '@biomejs/cli-darwin-x64': 2.4.16 - '@biomejs/cli-linux-arm64': 2.4.16 - '@biomejs/cli-linux-arm64-musl': 2.4.16 - '@biomejs/cli-linux-x64': 2.4.16 - '@biomejs/cli-linux-x64-musl': 2.4.16 - '@biomejs/cli-win32-arm64': 2.4.16 - '@biomejs/cli-win32-x64': 2.4.16 + '@aws-sdk/credential-provider-http@3.972.69': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/cli-darwin-arm64@2.4.16': - optional: true + '@aws-sdk/credential-provider-ini@3.973.12': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/credential-provider-env': 3.972.67 + '@aws-sdk/credential-provider-http': 3.972.69 + '@aws-sdk/credential-provider-login': 3.972.74 + '@aws-sdk/credential-provider-process': 3.972.67 + '@aws-sdk/credential-provider-sso': 3.973.11 + '@aws-sdk/credential-provider-web-identity': 3.972.73 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/cli-darwin-x64@2.4.16': - optional: true + '@aws-sdk/credential-provider-login@3.972.74': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/cli-linux-arm64-musl@2.4.16': - optional: true + '@aws-sdk/credential-provider-node@3.972.78': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.67 + '@aws-sdk/credential-provider-http': 3.972.69 + '@aws-sdk/credential-provider-ini': 3.973.12 + '@aws-sdk/credential-provider-process': 3.972.67 + '@aws-sdk/credential-provider-sso': 3.973.11 + '@aws-sdk/credential-provider-web-identity': 3.972.73 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/cli-linux-arm64@2.4.16': - optional: true + '@aws-sdk/credential-provider-process@3.972.67': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 - '@biomejs/cli-linux-x64-musl@2.4.16': - optional: true + '@aws-sdk/credential-provider-sso@3.973.11': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/token-providers': 3.1103.0 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-web-identity@3.972.73': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-providers@3.1106.0': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/credential-provider-cognito-identity': 3.972.66 + '@aws-sdk/credential-provider-env': 3.972.67 + '@aws-sdk/credential-provider-http': 3.972.69 + '@aws-sdk/credential-provider-ini': 3.973.12 + '@aws-sdk/credential-provider-login': 3.972.74 + '@aws-sdk/credential-provider-node': 3.972.78 + '@aws-sdk/credential-provider-process': 3.972.67 + '@aws-sdk/credential-provider-sso': 3.973.11 + '@aws-sdk/credential-provider-web-identity': 3.972.73 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.41': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/signature-v4-multi-region': 3.996.43 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.43': + dependencies: + '@aws-sdk/types': 3.974.2 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1103.0': + dependencies: + '@aws-sdk/core': 3.977.6 + '@aws-sdk/nested-clients': 3.997.41 + '@aws-sdk/types': 3.974.2 + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/types@3.974.2': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.37': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.3.0': {} + + '@babel/generator@8.0.0-rc.3': + dependencies: + '@babel/parser': 8.0.0-rc.3 + '@babel/types': 8.0.0-rc.3 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-string-parser@8.0.0-rc.6': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-identifier@8.0.0-rc.3': {} + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/parser@8.0.0-rc.3': + dependencies: + '@babel/types': 8.0.0-rc.3 + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@babel/types@8.0.0-rc.3': + dependencies: + '@babel/helper-string-parser': 8.0.0-rc.6 + '@babel/helper-validator-identifier': 8.0.0-rc.3 + + '@biomejs/biome@2.4.16': + optionalDependencies: + '@biomejs/cli-darwin-arm64': 2.4.16 + '@biomejs/cli-darwin-x64': 2.4.16 + '@biomejs/cli-linux-arm64': 2.4.16 + '@biomejs/cli-linux-arm64-musl': 2.4.16 + '@biomejs/cli-linux-x64': 2.4.16 + '@biomejs/cli-linux-x64-musl': 2.4.16 + '@biomejs/cli-win32-arm64': 2.4.16 + '@biomejs/cli-win32-x64': 2.4.16 + + '@biomejs/cli-darwin-arm64@2.4.16': + optional: true + + '@biomejs/cli-darwin-x64@2.4.16': + optional: true + + '@biomejs/cli-linux-arm64-musl@2.4.16': + optional: true + + '@biomejs/cli-linux-arm64@2.4.16': + optional: true + + '@biomejs/cli-linux-x64-musl@2.4.16': + optional: true '@biomejs/cli-linux-x64@2.4.16': optional: true @@ -1867,11 +3460,31 @@ snapshots: '@biomejs/cli-win32-x64@2.4.16': optional: true + '@chevrotain/cst-dts-gen@10.5.0': + dependencies: + '@chevrotain/gast': 10.5.0 + '@chevrotain/types': 10.5.0 + lodash: 4.17.21 + + '@chevrotain/gast@10.5.0': + dependencies: + '@chevrotain/types': 10.5.0 + lodash: 4.17.21 + + '@chevrotain/types@10.5.0': {} + + '@chevrotain/utils@10.5.0': {} + '@clack/core@1.4.0': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 + '@clack/core@1.4.3': + dependencies: + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + '@clack/prompts@1.5.0': dependencies: '@clack/core': 1.4.0 @@ -1879,178 +3492,393 @@ snapshots: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 + '@clack/prompts@1.7.0': + dependencies: + '@clack/core': 1.4.3 + fast-string-width: 3.0.2 + fast-wrap-ansi: 0.2.2 + sisteransi: 1.0.5 + + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)': + dependencies: + unenv: 2.0.0-rc.24 + optionalDependencies: + workerd: 1.20260704.1 + + '@cloudflare/workerd-darwin-64@1.20260704.1': + optional: true + + '@cloudflare/workerd-darwin-arm64@1.20260704.1': + optional: true + + '@cloudflare/workerd-linux-64@1.20260704.1': + optional: true + + '@cloudflare/workerd-linux-arm64@1.20260704.1': + optional: true + + '@cloudflare/workerd-windows-64@1.20260704.1': + optional: true + + '@cloudflare/workers-types@5.20260810.1': {} + + '@distilled.cloud/aws@0.30.3(effect@4.0.0-beta.103)': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/credential-providers': 3.1106.0 + '@aws-sdk/types': 3.974.2 + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + '@smithy/util-base64': 4.5.16 + aws4fetch: 1.0.20 + effect: 4.0.0-beta.103 + fast-xml-parser: 5.10.1 + + '@distilled.cloud/axiom@0.30.3(effect@4.0.0-beta.103)': + dependencies: + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + + '@distilled.cloud/cloudflare-rolldown-plugin@0.15.0(rolldown@1.1.5)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260704.1)': + dependencies: + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1) + magic-string: 0.30.21 + unenv: 2.0.0-rc.24 + optionalDependencies: + rolldown: 1.1.5 + vite: 7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + transitivePeerDependencies: + - workerd + + '@distilled.cloud/cloudflare-runtime@0.15.0(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103)': + dependencies: + '@alchemy.run/node-utils': 0.0.5 + '@distilled.cloud/cloudflare': 0.30.3(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + workerd: 1.20260704.1 + + '@distilled.cloud/cloudflare-vite-plugin@0.15.0(@distilled.cloud/cloudflare-runtime@0.15.0(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103))(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103)(rolldown@1.1.5)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260704.1)': + dependencies: + '@distilled.cloud/cloudflare': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/cloudflare-rolldown-plugin': 0.15.0(rolldown@1.1.5)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260704.1) + '@distilled.cloud/cloudflare-runtime': 0.15.0(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + vite: 7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + transitivePeerDependencies: + - rolldown + - workerd + + '@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103)': + dependencies: + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + + '@distilled.cloud/core@0.30.3(effect@4.0.0-beta.103)': + dependencies: + effect: 4.0.0-beta.103 + + '@distilled.cloud/neon@0.30.3(effect@4.0.0-beta.103)': + dependencies: + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + + '@distilled.cloud/planetscale@0.30.3(effect@4.0.0-beta.103)': + dependencies: + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + effect: 4.0.0-beta.103 + + '@effect/sql-d1@4.0.0-beta.107(effect@4.0.0-beta.103)': + dependencies: + '@cloudflare/workers-types': 5.20260810.1 + effect: 4.0.0-beta.103 + + '@effect/vitest@4.0.0-beta.103(effect@4.0.0-beta.103)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))': + dependencies: + effect: 4.0.0-beta.103 + vitest: 4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)) + + '@electric-sql/pglite-socket@0.0.20(@electric-sql/pglite@0.3.15)': + dependencies: + '@electric-sql/pglite': 0.3.15 + + '@electric-sql/pglite-tools@0.2.20(@electric-sql/pglite@0.3.15)': + dependencies: + '@electric-sql/pglite': 0.3.15 + + '@electric-sql/pglite@0.3.15': {} + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true + '@emnapi/core@1.11.1': + dependencies: + '@emnapi/wasi-threads': 1.2.2 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true + '@emnapi/runtime@1.11.1': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true + '@emnapi/wasi-threads@1.2.2': + dependencies: + tslib: 2.8.1 + optional: true + '@esbuild/aix-ppc64@0.27.7': optional: true '@esbuild/aix-ppc64@0.28.0': optional: true + '@esbuild/aix-ppc64@0.28.2': + optional: true + '@esbuild/android-arm64@0.27.7': optional: true '@esbuild/android-arm64@0.28.0': optional: true + '@esbuild/android-arm64@0.28.2': + optional: true + '@esbuild/android-arm@0.27.7': optional: true '@esbuild/android-arm@0.28.0': optional: true + '@esbuild/android-arm@0.28.2': + optional: true + '@esbuild/android-x64@0.27.7': optional: true '@esbuild/android-x64@0.28.0': optional: true + '@esbuild/android-x64@0.28.2': + optional: true + '@esbuild/darwin-arm64@0.27.7': optional: true '@esbuild/darwin-arm64@0.28.0': optional: true + '@esbuild/darwin-arm64@0.28.2': + optional: true + '@esbuild/darwin-x64@0.27.7': optional: true '@esbuild/darwin-x64@0.28.0': optional: true + '@esbuild/darwin-x64@0.28.2': + optional: true + '@esbuild/freebsd-arm64@0.27.7': optional: true '@esbuild/freebsd-arm64@0.28.0': optional: true + '@esbuild/freebsd-arm64@0.28.2': + optional: true + '@esbuild/freebsd-x64@0.27.7': optional: true '@esbuild/freebsd-x64@0.28.0': optional: true + '@esbuild/freebsd-x64@0.28.2': + optional: true + '@esbuild/linux-arm64@0.27.7': optional: true '@esbuild/linux-arm64@0.28.0': optional: true + '@esbuild/linux-arm64@0.28.2': + optional: true + '@esbuild/linux-arm@0.27.7': optional: true '@esbuild/linux-arm@0.28.0': optional: true + '@esbuild/linux-arm@0.28.2': + optional: true + '@esbuild/linux-ia32@0.27.7': optional: true '@esbuild/linux-ia32@0.28.0': optional: true + '@esbuild/linux-ia32@0.28.2': + optional: true + '@esbuild/linux-loong64@0.27.7': optional: true '@esbuild/linux-loong64@0.28.0': optional: true + '@esbuild/linux-loong64@0.28.2': + optional: true + '@esbuild/linux-mips64el@0.27.7': optional: true '@esbuild/linux-mips64el@0.28.0': optional: true + '@esbuild/linux-mips64el@0.28.2': + optional: true + '@esbuild/linux-ppc64@0.27.7': optional: true '@esbuild/linux-ppc64@0.28.0': optional: true + '@esbuild/linux-ppc64@0.28.2': + optional: true + '@esbuild/linux-riscv64@0.27.7': optional: true '@esbuild/linux-riscv64@0.28.0': optional: true + '@esbuild/linux-riscv64@0.28.2': + optional: true + '@esbuild/linux-s390x@0.27.7': optional: true '@esbuild/linux-s390x@0.28.0': optional: true + '@esbuild/linux-s390x@0.28.2': + optional: true + '@esbuild/linux-x64@0.27.7': optional: true '@esbuild/linux-x64@0.28.0': optional: true + '@esbuild/linux-x64@0.28.2': + optional: true + '@esbuild/netbsd-arm64@0.27.7': optional: true '@esbuild/netbsd-arm64@0.28.0': optional: true + '@esbuild/netbsd-arm64@0.28.2': + optional: true + '@esbuild/netbsd-x64@0.27.7': optional: true '@esbuild/netbsd-x64@0.28.0': optional: true + '@esbuild/netbsd-x64@0.28.2': + optional: true + '@esbuild/openbsd-arm64@0.27.7': optional: true '@esbuild/openbsd-arm64@0.28.0': optional: true + '@esbuild/openbsd-arm64@0.28.2': + optional: true + '@esbuild/openbsd-x64@0.27.7': optional: true '@esbuild/openbsd-x64@0.28.0': optional: true + '@esbuild/openbsd-x64@0.28.2': + optional: true + '@esbuild/openharmony-arm64@0.27.7': optional: true '@esbuild/openharmony-arm64@0.28.0': optional: true + '@esbuild/openharmony-arm64@0.28.2': + optional: true + '@esbuild/sunos-x64@0.27.7': optional: true '@esbuild/sunos-x64@0.28.0': optional: true + '@esbuild/sunos-x64@0.28.2': + optional: true + '@esbuild/win32-arm64@0.27.7': optional: true '@esbuild/win32-arm64@0.28.0': optional: true + '@esbuild/win32-arm64@0.28.2': + optional: true + '@esbuild/win32-ia32@0.27.7': optional: true '@esbuild/win32-ia32@0.28.0': optional: true + '@esbuild/win32-ia32@0.28.2': + optional: true + '@esbuild/win32-x64@0.27.7': optional: true '@esbuild/win32-x64@0.28.0': optional: true + '@esbuild/win32-x64@0.28.2': + optional: true + + '@hono/node-server@1.19.9(hono@4.11.4)': + dependencies: + hono: 4.11.4 + '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -2069,6 +3897,64 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.5 + '@libsql/client@0.17.4': + dependencies: + '@libsql/core': 0.17.4 + '@libsql/hrana-client': 0.10.0 + js-base64: 3.9.2 + libsql: 0.5.29 + promise-limit: 2.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@libsql/core@0.17.4': + dependencies: + js-base64: 3.9.2 + + '@libsql/darwin-arm64@0.5.29': + optional: true + + '@libsql/darwin-x64@0.5.29': + optional: true + + '@libsql/hrana-client@0.10.0': + dependencies: + '@libsql/isomorphic-ws': 0.1.5 + js-base64: 3.9.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@libsql/isomorphic-ws@0.1.5': + dependencies: + '@types/ws': 8.18.1 + ws: 8.21.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@libsql/linux-arm-gnueabihf@0.5.29': + optional: true + + '@libsql/linux-arm-musleabihf@0.5.29': + optional: true + + '@libsql/linux-arm64-gnu@0.5.29': + optional: true + + '@libsql/linux-arm64-musl@0.5.29': + optional: true + + '@libsql/linux-x64-gnu@0.5.29': + optional: true + + '@libsql/linux-x64-musl@0.5.29': + optional: true + + '@libsql/win32-x64-msvc@0.5.29': + optional: true + '@mapbox/node-pre-gyp@2.0.3': dependencies: consola: 3.4.2 @@ -2082,6 +3968,33 @@ snapshots: - encoding - supports-color + '@mongodb-js/saslprep@1.4.13': + dependencies: + sparse-bitfield: 3.0.3 + + '@mrleebo/prisma-ast@0.13.1': + dependencies: + chevrotain: 10.5.0 + lilconfig: 2.1.0 + + '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': + optional: true + + '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': + optional: true + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: '@emnapi/core': 1.10.0 @@ -2089,8 +4002,161 @@ snapshots: '@tybys/wasm-util': 0.10.2 optional: true + '@napi-rs/wasm-runtime@1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1)': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@tybys/wasm-util': 0.10.3 + optional: true + + '@neon-rs/load@0.0.4': {} + + '@nodable/entities@3.0.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@octokit/auth-token@6.0.0': {} + + '@octokit/core@7.0.7': + dependencies: + '@octokit/auth-token': 6.0.0 + '@octokit/graphql': 9.0.4 + '@octokit/request': 10.0.13 + '@octokit/request-error': 7.1.1 + '@octokit/types': 17.0.0 + before-after-hook: 4.0.0 + universal-user-agent: 7.0.3 + + '@octokit/endpoint@11.0.4': + dependencies: + '@octokit/types': 17.0.0 + universal-user-agent: 7.0.3 + + '@octokit/graphql@9.0.4': + dependencies: + '@octokit/request': 10.0.13 + '@octokit/types': 17.0.0 + universal-user-agent: 7.0.3 + + '@octokit/openapi-types@27.0.0': {} + + '@octokit/openapi-types@28.0.0': {} + + '@octokit/openapi-webhooks-types@12.1.0': {} + + '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.7)': + dependencies: + '@octokit/core': 7.0.7 + '@octokit/types': 16.0.0 + + '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.7)': + dependencies: + '@octokit/core': 7.0.7 + + '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.7)': + dependencies: + '@octokit/core': 7.0.7 + '@octokit/types': 16.0.0 + + '@octokit/request-error@7.1.1': + dependencies: + '@octokit/types': 17.0.0 + + '@octokit/request@10.0.13': + dependencies: + '@octokit/endpoint': 11.0.4 + '@octokit/request-error': 7.1.1 + '@octokit/types': 17.0.0 + content-type: 2.0.0 + json-with-bigint: 3.5.10 + universal-user-agent: 7.0.3 + + '@octokit/rest@22.0.1': + dependencies: + '@octokit/core': 7.0.7 + '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.7) + '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.7) + '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.7) + + '@octokit/types@16.0.0': + dependencies: + '@octokit/openapi-types': 27.0.0 + + '@octokit/types@17.0.0': + dependencies: + '@octokit/openapi-types': 28.0.0 + + '@octokit/webhooks-methods@6.0.0': {} + + '@octokit/webhooks@14.2.0': + dependencies: + '@octokit/openapi-webhooks-types': 12.1.0 + '@octokit/request-error': 7.1.1 + '@octokit/webhooks-methods': 6.0.0 + '@oxc-project/types@0.127.0': {} + '@oxc-project/types@0.139.0': {} + + '@prisma/cli-engine@0.0.7(magicast@0.5.3)': + dependencies: + '@clack/prompts': 1.5.0 + '@prisma/management-api-sdk': 1.55.0 + '@stricli/core': 1.3.0 + c12: 3.3.4(magicast@0.5.3) + transitivePeerDependencies: + - magicast + + '@prisma/composer@https://pkg.pr.new/@prisma/composer@220(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0)': + dependencies: + '@effect/vitest': 4.0.0-beta.103(effect@4.0.0-beta.103)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) + '@prisma/cli-engine': 0.0.7(magicast@0.5.3) + '@prisma/management-api-sdk': 1.59.0 + '@standard-schema/spec': 1.1.0 + alchemy: 2.0.0-beta.67(@types/node@22.19.19)(effect@4.0.0-beta.103)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) + arktype: 2.2.3 + c12: 3.3.4(magicast@0.5.3) + effect: 4.0.0-beta.103 + esbuild: 0.28.2 + transitivePeerDependencies: + - '@aws/durable-execution-sdk-js' + - '@effect/platform-bun' + - '@effect/platform-node' + - '@effect/sql-pg' + - '@mongodb-js/zstd' + - '@types/node' + - '@types/react' + - bufferutil + - drizzle-kit + - drizzle-orm + - encoding + - gcp-metadata + - kerberos + - magicast + - mongodb-client-encryption + - pg-native + - react-devtools-core + - rollup + - snappy + - socks + - supports-color + - typescript + - utf-8-validate + - vite + - vitest + - workerd + - ws + '@prisma/compute-sdk@0.39.0(@prisma/management-api-sdk@1.55.0)(rollup@4.62.2)': dependencies: '@prisma/management-api-sdk': 1.55.0 @@ -2117,10 +4183,44 @@ snapshots: dependencies: xdg-app-paths: 8.3.0 + '@prisma/debug@7.2.0': {} + + '@prisma/dev@0.20.0(typescript@6.0.3)': + dependencies: + '@electric-sql/pglite': 0.3.15 + '@electric-sql/pglite-socket': 0.0.20(@electric-sql/pglite@0.3.15) + '@electric-sql/pglite-tools': 0.2.20(@electric-sql/pglite@0.3.15) + '@hono/node-server': 1.19.9(hono@4.11.4) + '@mrleebo/prisma-ast': 0.13.1 + '@prisma/get-platform': 7.2.0 + '@prisma/query-plan-executor': 7.2.0 + foreground-child: 3.3.1 + get-port-please: 3.2.0 + hono: 4.11.4 + 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(typescript@6.0.3) + zeptomatch: 2.1.0 + transitivePeerDependencies: + - typescript + + '@prisma/get-platform@7.2.0': + dependencies: + '@prisma/debug': 7.2.0 + '@prisma/management-api-sdk@1.55.0': dependencies: openapi-fetch: 0.14.0 + '@prisma/management-api-sdk@1.59.0': + dependencies: + openapi-fetch: 0.14.0 + + '@prisma/query-plan-executor@7.2.0': {} + '@quansync/fs@1.0.0': dependencies: quansync: 1.0.0 @@ -2128,39 +4228,75 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-rc.17': optional: true + '@rolldown/binding-android-arm64@1.1.5': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.17': optional: true + '@rolldown/binding-darwin-arm64@1.1.5': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.17': optional: true + '@rolldown/binding-darwin-x64@1.1.5': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.17': optional: true + '@rolldown/binding-freebsd-x64@1.1.5': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.1.5': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-arm64-gnu@1.1.5': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-arm64-musl@1.1.5': + optional: true + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-ppc64-gnu@1.1.5': + optional: true + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-s390x-gnu@1.1.5': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-x64-gnu@1.1.5': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.17': optional: true + '@rolldown/binding-linux-x64-musl@1.1.5': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.17': optional: true + '@rolldown/binding-openharmony-arm64@1.1.5': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-rc.17': dependencies: '@emnapi/core': 1.10.0 @@ -2168,14 +4304,29 @@ snapshots: '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) optional: true + '@rolldown/binding-wasm32-wasi@1.1.5': + dependencies: + '@emnapi/core': 1.11.1 + '@emnapi/runtime': 1.11.1 + '@napi-rs/wasm-runtime': 1.2.2(@emnapi/core@1.11.1)(@emnapi/runtime@1.11.1) + optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.17': optional: true + '@rolldown/binding-win32-arm64-msvc@1.1.5': + optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.17': optional: true + '@rolldown/binding-win32-x64-msvc@1.1.5': + optional: true + '@rolldown/pluginutils@1.0.0-rc.17': {} + '@rolldown/pluginutils@1.0.1': {} + '@rollup/pluginutils@5.4.0(rollup@4.62.2)': dependencies: '@types/estree': 1.0.9 @@ -2263,6 +4414,68 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} + '@smithy/core@3.31.1': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.6.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/node-config-provider@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.9.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/shared-ini-file-loader@4.6.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/signature-v4@5.6.12': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/types@4.16.1': + dependencies: + tslib: 2.8.1 + + '@smithy/util-base64@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + '@standard-schema/spec@1.1.0': {} '@stricli/core@1.3.0': {} @@ -2290,6 +4503,13 @@ snapshots: tslib: 2.8.1 optional: true + '@tybys/wasm-util@0.10.3': + dependencies: + tslib: 2.8.1 + optional: true + + '@types/aws-lambda@8.10.162': {} + '@types/chai@5.2.3': dependencies: '@types/deep-eql': 4.0.2 @@ -2305,6 +4525,16 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/webidl-conversions@7.0.3': {} + + '@types/whatwg-url@11.0.5': + dependencies: + '@types/webidl-conversions': 7.0.3 + + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.19.19 + '@vercel/detect-agent@1.2.4': {} '@vercel/nft@1.10.2(rollup@4.62.2)': @@ -2377,12 +4607,93 @@ snapshots: agent-base@7.1.4: {} + alchemy@2.0.0-beta.67(@types/node@22.19.19)(effect@4.0.0-beta.103)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0): + dependencies: + '@alchemy.run/node-utils': 0.0.5 + '@aws-sdk/credential-providers': 3.1106.0 + '@clack/prompts': 1.7.0 + '@distilled.cloud/aws': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/axiom': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/cloudflare': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/cloudflare-rolldown-plugin': 0.15.0(rolldown@1.1.5)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260704.1) + '@distilled.cloud/cloudflare-runtime': 0.15.0(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103) + '@distilled.cloud/cloudflare-vite-plugin': 0.15.0(@distilled.cloud/cloudflare-runtime@0.15.0(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103))(@distilled.cloud/cloudflare@0.30.3(effect@4.0.0-beta.103))(effect@4.0.0-beta.103)(rolldown@1.1.5)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(workerd@1.20260704.1) + '@distilled.cloud/core': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/neon': 0.30.3(effect@4.0.0-beta.103) + '@distilled.cloud/planetscale': 0.30.3(effect@4.0.0-beta.103) + '@effect/sql-d1': 4.0.0-beta.107(effect@4.0.0-beta.103) + '@effect/vitest': 4.0.0-beta.103(effect@4.0.0-beta.103)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) + '@libsql/client': 0.17.4 + '@octokit/rest': 22.0.1 + '@octokit/webhooks': 14.2.0 + '@prisma/dev': 0.20.0(typescript@6.0.3) + '@smithy/node-config-provider': 4.5.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + '@types/aws-lambda': 8.10.162 + '@vercel/nft': 1.10.2(rollup@4.62.2) + aws4fetch: 1.0.20 + capnweb: 0.6.1 + effect: 4.0.0-beta.103 + fast-glob: 3.3.3 + fast-xml-parser: 5.10.1 + ink: 6.8.0(react@19.2.8) + jszip: 3.10.1 + libsodium-wrappers: 0.8.4 + mongodb: 6.21.0(@aws-sdk/credential-providers@3.1106.0) + mysql2: 3.23.3(@types/node@22.19.19) + pathe: 2.0.3 + pg: 8.23.0 + picomatch: 4.0.4 + react: 19.2.8 + rolldown: 1.1.5 + undici: 7.29.0 + yaml: 2.9.0 + optionalDependencies: + vite: 7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0) + ws: 8.21.0 + transitivePeerDependencies: + - '@mongodb-js/zstd' + - '@types/node' + - '@types/react' + - bufferutil + - encoding + - gcp-metadata + - kerberos + - mongodb-client-encryption + - pg-native + - react-devtools-core + - rollup + - snappy + - socks + - supports-color + - typescript + - utf-8-validate + - vitest + - workerd + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + ansi-regex@6.2.2: {} ansi-styles@6.2.3: {} ansis@4.3.1: {} + anynum@1.0.1: {} + + arkregex@0.0.8: + dependencies: + '@ark/util': 0.56.2 + + arktype@2.2.3: + dependencies: + '@ark/schema': 0.56.2 + '@ark/util': 0.56.2 + arkregex: 0.0.8 + assertion-error@2.0.1: {} ast-kit@3.0.0-beta.1: @@ -2393,6 +4704,12 @@ snapshots: async-sema@3.1.1: {} + auto-bind@5.0.1: {} + + aws-ssl-profiles@1.1.2: {} + + aws4fetch@1.0.20: {} + b4a@1.8.1: {} balanced-match@4.0.4: {} @@ -2430,6 +4747,8 @@ snapshots: dependencies: bare-path: 3.0.1 + before-after-hook@4.0.0: {} + better-result@2.9.2: {} bindings@1.5.0: @@ -2438,10 +4757,18 @@ snapshots: birpc@4.0.0: {} + bowser@2.14.1: {} + brace-expansion@5.0.7: dependencies: balanced-match: 4.0.4 + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + bson@6.10.4: {} + bundle-name@4.1.0: dependencies: run-applescript: 7.1.0 @@ -2465,8 +4792,21 @@ snapshots: cac@7.0.0: {} + capnweb@0.6.1: {} + chai@6.2.2: {} + chalk@5.6.2: {} + + chevrotain@10.5.0: + dependencies: + '@chevrotain/cst-dts-gen': 10.5.0 + '@chevrotain/gast': 10.5.0 + '@chevrotain/types': 10.5.0 + '@chevrotain/utils': 10.5.0 + lodash: 4.17.21 + regexp-to-ast: 0.5.0 + chokidar@5.0.0: dependencies: readdirp: 5.1.1 @@ -2475,6 +4815,21 @@ snapshots: ci-info@4.4.0: {} + cli-boxes@3.0.0: {} + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.1 + + code-excerpt@4.0.0: + dependencies: + convert-to-spaces: 2.0.1 + colorette@2.0.20: {} commander@14.0.3: {} @@ -2483,8 +4838,14 @@ snapshots: consola@3.4.2: {} + content-type@2.0.0: {} + convert-source-map@2.0.0: {} + convert-to-spaces@2.0.1: {} + + core-util-is@1.0.3: {} + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -2508,16 +4869,37 @@ snapshots: destr@2.0.5: {} + detect-libc@2.0.2: {} + detect-libc@2.1.2: {} dotenv@17.4.2: {} dts-resolver@2.1.3: {} + effect@4.0.0-beta.103: + dependencies: + '@standard-schema/spec': 1.1.0 + fast-check: 4.9.0 + find-my-way-ts: 0.1.6 + ini: 7.0.0 + kubernetes-types: 1.30.0 + msgpackr: 2.0.5 + multipasta: 0.2.8 + toml: 4.3.0 + uuid: 14.0.1 + yaml: 2.9.0 + + emoji-regex@10.6.0: {} + empathic@2.0.1: {} + environment@1.1.0: {} + es-module-lexer@2.1.0: {} + es-toolkit@1.50.0: {} + esbuild@0.27.7: optionalDependencies: '@esbuild/aix-ppc64': 0.27.7 @@ -2576,6 +4958,37 @@ snapshots: '@esbuild/win32-ia32': 0.28.0 '@esbuild/win32-x64': 0.28.0 + esbuild@0.28.2: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.2 + '@esbuild/android-arm': 0.28.2 + '@esbuild/android-arm64': 0.28.2 + '@esbuild/android-x64': 0.28.2 + '@esbuild/darwin-arm64': 0.28.2 + '@esbuild/darwin-x64': 0.28.2 + '@esbuild/freebsd-arm64': 0.28.2 + '@esbuild/freebsd-x64': 0.28.2 + '@esbuild/linux-arm': 0.28.2 + '@esbuild/linux-arm64': 0.28.2 + '@esbuild/linux-ia32': 0.28.2 + '@esbuild/linux-loong64': 0.28.2 + '@esbuild/linux-mips64el': 0.28.2 + '@esbuild/linux-ppc64': 0.28.2 + '@esbuild/linux-riscv64': 0.28.2 + '@esbuild/linux-s390x': 0.28.2 + '@esbuild/linux-x64': 0.28.2 + '@esbuild/netbsd-arm64': 0.28.2 + '@esbuild/netbsd-x64': 0.28.2 + '@esbuild/openbsd-arm64': 0.28.2 + '@esbuild/openbsd-x64': 0.28.2 + '@esbuild/openharmony-arm64': 0.28.2 + '@esbuild/sunos-x64': 0.28.2 + '@esbuild/win32-arm64': 0.28.2 + '@esbuild/win32-ia32': 0.28.2 + '@esbuild/win32-x64': 0.28.2 + + escape-string-regexp@2.0.0: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: @@ -2607,8 +5020,20 @@ snapshots: exsolve@1.1.1: {} + fast-check@4.9.0: + dependencies: + pure-rand: 8.4.2 + fast-fifo@1.3.2: {} + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + fast-string-truncated-width@3.0.3: {} fast-string-width@3.0.2: @@ -2619,6 +5044,24 @@ snapshots: dependencies: fast-string-width: 3.0.2 + fast-xml-builder@1.3.0: + dependencies: + path-expression-matcher: 1.6.2 + xml-naming: 0.3.0 + + fast-xml-parser@5.10.1: + dependencies: + '@nodable/entities': 3.0.0 + fast-xml-builder: 1.3.0 + is-unsafe: 2.0.0 + path-expression-matcher: 1.6.2 + strnum: 2.4.1 + xml-naming: 0.3.0 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: picomatch: 4.0.4 @@ -2629,11 +5072,28 @@ snapshots: file-uri-to-path@1.0.0: {} + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-my-way-ts@0.1.6: {} + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + fsevents@2.3.3: optional: true + generate-function@2.3.1: + dependencies: + is-property: 1.0.2 + get-east-asian-width@1.6.0: {} + get-port-please@3.2.0: {} + get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -2645,6 +5105,10 @@ snapshots: giget@3.3.1: {} + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + glob@13.0.6: dependencies: minimatch: 10.2.5 @@ -2653,8 +5117,16 @@ snapshots: graceful-fs@4.2.11: {} + grammex@3.1.13: {} + + graphmatch@1.1.1: {} + + hono@4.11.4: {} + hookable@6.1.1: {} + http-status-codes@2.3.0: {} + https-proxy-agent@7.0.6: dependencies: agent-base: 7.1.4 @@ -2664,34 +5136,144 @@ snapshots: human-signals@8.0.1: {} + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + immediate@3.0.6: {} + import-without-cache@0.3.3: {} + indent-string@5.0.0: {} + + inherits@2.0.4: {} + + ini@7.0.0: {} + + ink@6.8.0(react@19.2.8): + dependencies: + '@alcalzone/ansi-tokenize': 0.2.5 + ansi-escapes: 7.3.0 + ansi-styles: 6.2.3 + auto-bind: 5.0.1 + chalk: 5.6.2 + cli-boxes: 3.0.0 + cli-cursor: 4.0.0 + cli-truncate: 5.2.0 + code-excerpt: 4.0.0 + es-toolkit: 1.50.0 + indent-string: 5.0.0 + is-in-ci: 2.0.0 + patch-console: 2.0.0 + react: 19.2.8 + react-reconciler: 0.33.0(react@19.2.8) + scheduler: 0.27.0 + signal-exit: 3.0.7 + slice-ansi: 8.0.0 + stack-utils: 2.0.6 + string-width: 8.2.1 + terminal-size: 4.0.1 + type-fest: 5.8.0 + widest-line: 6.0.0 + wrap-ansi: 9.0.2 + ws: 8.21.0 + yoga-layout: 3.2.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + is-docker@3.0.0: {} + is-extglob@2.1.1: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.6.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ci@2.0.0: {} + is-in-ssh@1.0.0: {} is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 + is-number@7.0.0: {} + is-plain-obj@4.1.0: {} + is-property@1.0.2: {} + is-stream@4.0.1: {} is-unicode-supported@2.1.0: {} + is-unsafe@2.0.0: {} + is-wsl@3.1.1: dependencies: is-inside-container: 1.0.0 + isarray@1.0.0: {} + isexe@2.0.0: {} jiti@2.7.0: {} + js-base64@3.9.2: {} + jsesc@3.1.0: {} + json-with-bigint@3.5.10: {} + + jszip@3.10.1: + dependencies: + lie: 3.3.0 + pako: 1.0.11 + readable-stream: 2.3.8 + setimmediate: 1.0.5 + + kubernetes-types@1.30.0: {} + + libsodium-wrappers@0.8.4: + dependencies: + libsodium: 0.8.4 + + libsodium@0.8.4: {} + + 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 + + lie@3.3.0: + dependencies: + immediate: 3.0.6 + + lilconfig@2.1.0: {} + + lodash@4.17.21: {} + + long@5.3.2: {} + lru-cache@11.5.1: {} + lru.min@1.1.4: {} + magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -2702,6 +5284,17 @@ snapshots: '@babel/types': 7.29.7 source-map-js: 1.2.1 + memory-pager@1.5.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mimic-fn@2.1.0: {} + minimatch@10.2.5: dependencies: brace-expansion: 5.0.7 @@ -2712,14 +5305,65 @@ snapshots: dependencies: minipass: 7.1.3 + mongodb-connection-string-url@3.0.2: + dependencies: + '@types/whatwg-url': 11.0.5 + whatwg-url: 14.2.0 + + mongodb@6.21.0(@aws-sdk/credential-providers@3.1106.0): + dependencies: + '@mongodb-js/saslprep': 1.4.13 + bson: 6.10.4 + mongodb-connection-string-url: 3.0.2 + optionalDependencies: + '@aws-sdk/credential-providers': 3.1106.0 + ms@2.1.3: {} + 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 + optional: true + + msgpackr@2.0.5: + optionalDependencies: + msgpackr-extract: 3.0.4 + + multipasta@0.2.8: {} + + mysql2@3.23.3(@types/node@22.19.19): + dependencies: + '@types/node': 22.19.19 + aws-ssl-profiles: 1.1.2 + generate-function: 2.3.1 + iconv-lite: 0.7.3 + long: 5.3.2 + lru.min: 1.1.4 + named-placeholders: 1.1.6 + sql-escaper: 1.5.1 + + named-placeholders@1.1.6: + dependencies: + lru.min: 1.1.4 + nanoid@3.3.15: {} node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 + node-gyp-build-optional-packages@5.2.2: + dependencies: + detect-libc: 2.1.2 + optional: true + node-gyp-build@4.8.4: {} nopt@8.1.0: @@ -2735,6 +5379,10 @@ snapshots: ohash@2.0.11: {} + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + open@11.0.0: dependencies: default-browser: 5.5.0 @@ -2754,8 +5402,14 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + pako@1.0.11: {} + parse-ms@4.0.0: {} + patch-console@2.0.0: {} + + path-expression-matcher@1.6.2: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -2769,8 +5423,45 @@ snapshots: perfect-debounce@2.1.0: {} + pg-cloudflare@1.4.0: + optional: true + + pg-connection-string@2.14.0: {} + + pg-int8@1.0.1: {} + + pg-pool@3.14.0(pg@8.23.0): + dependencies: + pg: 8.23.0 + + pg-protocol@1.16.0: {} + + pg-types@2.2.0: + dependencies: + pg-int8: 1.0.1 + postgres-array: 2.0.0 + postgres-bytea: 1.0.1 + postgres-date: 1.0.7 + postgres-interval: 1.2.0 + + pg@8.23.0: + dependencies: + pg-connection-string: 2.14.0 + pg-pool: 3.14.0(pg@8.23.0) + pg-protocol: 1.16.0 + pg-types: 2.2.0 + pgpass: 1.0.5 + optionalDependencies: + pg-cloudflare: 1.4.0 + + pgpass@1.0.5: + dependencies: + split2: 4.2.0 + picocolors@1.1.1: {} + picomatch@2.3.2: {} + picomatch@4.0.4: {} pkg-pr-new@0.0.75: {} @@ -2787,25 +5478,81 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + postgres-array@2.0.0: {} + + postgres-bytea@1.0.1: {} + + postgres-date@1.0.7: {} + + postgres-interval@1.2.0: + dependencies: + xtend: 4.0.2 + powershell-utils@0.1.0: {} pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 + process-nextick-args@2.0.1: {} + + promise-limit@2.7.0: {} + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + + punycode@2.3.1: {} + + pure-rand@8.4.2: {} + quansync@1.0.0: {} + queue-microtask@1.2.3: {} + rc9@3.0.1: dependencies: defu: 6.1.7 destr: 2.0.5 + react-reconciler@0.33.0(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react@19.2.8: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + readdirp@5.1.1: {} + regexp-to-ast@0.5.0: {} + + remeda@2.33.4: {} + resolve-from@5.0.0: {} resolve-pkg-maps@1.0.0: {} + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + reusify@1.1.0: {} + rolldown-plugin-dts@0.23.2(rolldown@1.0.0-rc.17)(typescript@6.0.3): dependencies: '@babel/generator': 8.0.0-rc.3 @@ -2845,6 +5592,27 @@ snapshots: '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.17 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.17 + rolldown@1.1.5: + dependencies: + '@oxc-project/types': 0.139.0 + '@rolldown/pluginutils': 1.0.1 + 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 + rollup@4.62.2: dependencies: '@types/estree': 1.0.9 @@ -2878,8 +5646,20 @@ snapshots: run-applescript@7.1.0: {} + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + semver@7.8.1: {} + setimmediate@1.0.5: {} + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 @@ -2888,14 +5668,35 @@ snapshots: siginfo@2.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} sisteransi@1.0.5: {} + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + source-map-js@1.2.1: {} + sparse-bitfield@3.0.3: + dependencies: + memory-pager: 1.5.0 + + split2@4.2.0: {} + + sql-escaper@1.5.1: {} + + stack-utils@2.0.6: + dependencies: + escape-string-regexp: 2.0.0 + stackback@0.0.2: {} + std-env@3.10.0: {} + std-env@4.1.0: {} streamx@2.28.0: @@ -2907,17 +5708,33 @@ snapshots: - bare-abort-controller - react-native-b4a + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string-width@8.2.1: dependencies: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + strip-ansi@7.2.0: dependencies: ansi-regex: 6.2.2 strip-final-newline@4.0.0: {} + strnum@2.4.1: + dependencies: + anynum: 1.0.1 + + tagged-tag@1.0.0: {} + tar-stream@3.2.0: dependencies: b4a: 1.8.1 @@ -2944,6 +5761,8 @@ snapshots: - bare-abort-controller - react-native-b4a + terminal-size@4.0.1: {} + text-decoder@1.2.7: dependencies: b4a: 1.8.1 @@ -2963,8 +5782,18 @@ snapshots: tinyrainbow@3.1.0: {} + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toml@4.3.0: {} + tr46@0.0.3: {} + tr46@5.1.1: + dependencies: + punycode: 2.3.1 + tree-kill@1.2.2: {} tsdown@0.21.10(typescript@6.0.3): @@ -2994,8 +5823,7 @@ snapshots: - synckit - vue-tsc - tslib@2.8.1: - optional: true + tslib@2.8.1: {} tsx@4.22.4: dependencies: @@ -3012,6 +5840,10 @@ snapshots: '@turbo/windows-64': 2.10.9 '@turbo/windows-arm64': 2.10.9 + type-fest@5.8.0: + dependencies: + tagged-tag: 1.0.0 + typescript@6.0.3: {} unconfig-core@7.5.0: @@ -3021,12 +5853,28 @@ snapshots: undici-types@6.21.0: {} + undici@7.29.0: {} + + unenv@2.0.0-rc.24: + dependencies: + pathe: 2.0.3 + unicorn-magic@0.3.0: {} + universal-user-agent@7.0.3: {} + unrun@0.2.39: dependencies: rolldown: 1.0.0-rc.17 + util-deprecate@1.0.2: {} + + uuid@14.0.1: {} + + valibot@1.2.0(typescript@6.0.3): + optionalDependencies: + typescript: 6.0.3 + vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0): dependencies: esbuild: 0.27.7 @@ -3071,6 +5919,13 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@7.0.0: {} + + whatwg-url@14.2.0: + dependencies: + tr46: 5.1.1 + webidl-conversions: 7.0.0 + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -3085,12 +5940,30 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + widest-line@6.0.0: + dependencies: + string-width: 8.2.1 + + workerd@1.20260704.1: + optionalDependencies: + '@cloudflare/workerd-darwin-64': 1.20260704.1 + '@cloudflare/workerd-darwin-arm64': 1.20260704.1 + '@cloudflare/workerd-linux-64': 1.20260704.1 + '@cloudflare/workerd-linux-arm64': 1.20260704.1 + '@cloudflare/workerd-windows-64': 1.20260704.1 + wrap-ansi@10.0.0: dependencies: ansi-styles: 6.2.3 string-width: 8.2.1 strip-ansi: 7.2.0 + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + ws@8.21.0: {} wsl-utils@0.3.1: @@ -3110,8 +5983,19 @@ snapshots: optionalDependencies: fsevents: 2.3.3 + xml-naming@0.3.0: {} + + xtend@4.0.2: {} + yallist@5.0.0: {} yaml@2.9.0: {} yoctocolors@2.1.2: {} + + yoga-layout@3.2.1: {} + + zeptomatch@2.1.0: + dependencies: + grammex: 3.1.13 + graphmatch: 1.1.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index df422538..1a39a682 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -3,6 +3,12 @@ packages: allowBuilds: esbuild: true + # Transitive arrivals from composer's constellation. Neither build runs + # any code this repo executes: workerd's postinstall only links the + # platform binary from its own optional dependency, and msgpackr-extract + # compiles a native accelerator that falls back to JavaScript. + msgpackr-extract: false + workerd: false # First-party SDKs we publish from our own CI (with npm provenance) and consume # the same day. minimumReleaseAge is a quarantine for untrusted third-party @@ -12,3 +18,5 @@ allowBuilds: minimumReleaseAgeExclude: - '@prisma/compute-sdk' - '@prisma/management-api-sdk' + # Reached through @prisma/composer, which pins it exactly. + - '@prisma/cli-engine' From 7d1047cd4424dcb60473ee5006d7f3e1a47bcab1 Mon Sep 17 00:00:00 2001 From: willbot Date: Tue, 11 Aug 2026 23:49:14 +0200 Subject: [PATCH 2/6] deps(cli): the published composer, not a preview build @prisma/composer moves from the pkg.pr.new preview of composer#220 to the published 0.6.0-dev.15. The published package carries the family: ./family exports createComposerFamily, and the family it builds has all four commands plus the composer config section. The workspace entries the preview needed are still needed, for reasons that have nothing to do with previews: - msgpackr-extract and workerd still arrive through composer's own dependency graph (composer -> alchemy -> cloudflare/effect), so their allowBuilds entries stay. - @prisma/cli-engine is still reached through composer, which pins it exactly, and 0.0.7 is younger than the minimumReleaseAge cutoff, so its exclude entry stays. Removing it fails the install outright. The swap adds one entry rather than removing any: a registry version has a publish time, so composer itself now falls under minimumReleaseAge. pnpm wrote it version-pinned; it is recorded at the package level here, matching the policy the surrounding comment already states. Mounting the four composer commands trips the e2e coverage requirement main added, so each is recorded in EXCLUSIONS with why the real API cannot drive it: deploy and destroy provision and tear down real cloud infrastructure, and dev and log are session commands that run until a signal. The TODO(release) note now states what actually remains. It is no longer about the preview pin, which is gone; it is that composer pins engine 0.0.7 while this package ships the workspace engine at 8.0.0-rc.1, so an install resolves two copies. That is composer's move to make, not this repo's. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/package.json | 2 +- packages/cli/src/v8/cli.ts | 13 +++++++------ packages/cli/tests/e2e-coverage.test.ts | 8 ++++++++ pnpm-lock.yaml | 11 +++++------ pnpm-workspace.yaml | 1 + 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 834c3a8b..36e2c7c8 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -47,7 +47,7 @@ "dependencies": { "@clack/prompts": "1.5.0", "@prisma/cli-engine": "workspace:8.0.0-rc.1", - "@prisma/composer": "https://pkg.pr.new/@prisma/composer@220", + "@prisma/composer": "0.6.0-dev.15", "@prisma/compute-sdk": "0.39.0", "@prisma/credentials-store": "^7.8.0", "@prisma/management-api-sdk": "1.55.0", diff --git a/packages/cli/src/v8/cli.ts b/packages/cli/src/v8/cli.ts index 607cb9fc..a6fdca4f 100644 --- a/packages/cli/src/v8/cli.ts +++ b/packages/cli/src/v8/cli.ts @@ -6,12 +6,13 @@ import { defineCommandFamily, telemetryCommandGroup, } from "@prisma/cli-engine"; -// TODO(release): @prisma/composer is pinned in package.json to the -// pkg.pr.new preview build of composer#220. The tandem release -// (contract R-S3-6, order engine → composer → prisma-cli) replaces it -// with the exact published version, which must also be the version -// composer itself pins @prisma/cli-engine to — until those agree, an -// install of this package carries two copies of the engine. +// TODO(release): @prisma/composer@0.6.0-dev.15 pins +// @prisma/cli-engine@0.0.7, while this package ships the workspace +// engine at the lockstep version (8.0.0-rc.1). Those are different +// versions, so an install of @prisma/cli resolves two copies of the +// engine. Closing it is composer's move, not this repo's: composer +// must pin the same engine version prisma-cli publishes, per the +// tandem release order engine → composer → prisma-cli (R-S3-6). import { createComposerFamily } from "@prisma/composer/family"; import { CLI_DOCS_URL, CLI_NAME } from "../cli-name"; import { getCliVersion } from "../lib/version"; diff --git a/packages/cli/tests/e2e-coverage.test.ts b/packages/cli/tests/e2e-coverage.test.ts index 1489d392..c4b5b596 100644 --- a/packages/cli/tests/e2e-coverage.test.ts +++ b/packages/cli/tests/e2e-coverage.test.ts @@ -34,6 +34,14 @@ const EXCLUSIONS: Readonly> = { "Needs a GitHub App installation on the account under test, which CI cannot provision.", "git disconnect": "Needs a connected repository, which `git connect` cannot create here.", + "composer deploy": + "Provisions real cloud infrastructure for an app entry point, through a child `alchemy deploy`. Standing that up per CI run is neither cheap nor unattended-safe.", + "composer destroy": + "Tears down what `composer deploy` provisioned, which this suite cannot create.", + "composer dev": + "A session command: it runs until SIGINT or SIGTERM, redeploying on file change, so it has no happy path that terminates on its own.", + "composer log": + "A session command that streams until interrupted, against an app only `composer deploy` could have deployed.", }; /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 51f32b54..77964add 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: workspace:8.0.0-rc.1 version: link:../cli-engine '@prisma/composer': - specifier: https://pkg.pr.new/@prisma/composer@220 - version: https://pkg.pr.new/@prisma/composer@220(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) + specifier: 0.6.0-dev.15 + version: 0.6.0-dev.15(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.39.0 version: 0.39.0(@prisma/management-api-sdk@1.55.0)(rollup@4.62.2) @@ -1246,9 +1246,8 @@ packages: resolution: {integrity: sha512-at7M9hqN9eE0CkAj+U7Ey0ZSqTTSmI1r5Uk9rCc7hbAJgEk3keyQ/ObeXtd0BMu6G9rcb7zGGMQyumKH1gEolQ==} engines: {node: '>=22.12.0'} - '@prisma/composer@https://pkg.pr.new/@prisma/composer@220': - resolution: {integrity: sha512-thbBzor5ryiLgBAkUN41mWco/liK8avqPG0U0FkDFR9sqUfgPmEJNEFVsoFlFEmhSK02mP8HFARiOjqzS0ywFQ==, tarball: https://pkg.pr.new/@prisma/composer@220} - version: 0.6.0 + '@prisma/composer@0.6.0-dev.15': + resolution: {integrity: sha512-owbm3SziouQKyBXRA/8W1sAFs205tTUSscXX5eQidS2V/rTNlWBua3HnXdRdBElJYaSWJerBouL126f4qCc4OQ==} engines: {node: '>=24'} hasBin: true @@ -4129,7 +4128,7 @@ snapshots: transitivePeerDependencies: - magicast - '@prisma/composer@https://pkg.pr.new/@prisma/composer@220(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0)': + '@prisma/composer@0.6.0-dev.15(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0)': dependencies: '@effect/vitest': 4.0.0-beta.103(effect@4.0.0-beta.103)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) '@prisma/cli-engine': 0.0.7(magicast@0.5.3) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 1a39a682..14644379 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -18,5 +18,6 @@ allowBuilds: minimumReleaseAgeExclude: - '@prisma/compute-sdk' - '@prisma/management-api-sdk' + - '@prisma/composer' # Reached through @prisma/composer, which pins it exactly. - '@prisma/cli-engine' From c90e2bb9752bfcfad34acb75edbf1b96b06aaa0a Mon Sep 17 00:00:00 2001 From: willbot Date: Wed, 12 Aug 2026 08:32:14 +0200 Subject: [PATCH 3/6] fix(cli): the config-section test stops expecting a run composer refuses on Windows The test failed on windows-latest only, and not for the reason the truncated assertion suggested. The full job log shows what the run actually printed: LOG.PLATFORM_UNSUPPORTED, "local dev is not supported on Windows yet". composer's log operation refuses Windows on its first statement, before it looks at the config section it was handed, so the section never reaches config discovery there. dev refuses the same way, and deploy and destroy stop earlier still at the credential check, so no shipped composer command can show the section arriving on Windows. So the test now proves the whole path on every other platform, and on Windows proves what is left to prove: the bin evaluated the config file, the engine accepted its `composer` section, and the command reached composer's own operation. What Windows no longer proves is that the path inside the section is the one composer acts on. When composer supports Windows the second test fails and the two collapse back into one. The old assertion also had two faults that would have surfaced the moment composer ran there, both fixed by reading the terminal result frame instead of substring-matching raw stdout: the stream is JSON, which escapes every separator in a Windows path, and `join` on a rooted POSIX string drops the drive letter composer's own `resolve` adds. The file already used `resolve` for this 250 lines up. Verified by running the suite on POSIX. Both Windows halves can only be confirmed by CI; the Windows assertion was checked against the exact stdout the failing job produced. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- packages/cli/tests/v8-bin.test.ts | 87 +++++++++++++++++++++++++++---- 1 file changed, 76 insertions(+), 11 deletions(-) diff --git a/packages/cli/tests/v8-bin.test.ts b/packages/cli/tests/v8-bin.test.ts index b594e390..ec96b00a 100644 --- a/packages/cli/tests/v8-bin.test.ts +++ b/packages/cli/tests/v8-bin.test.ts @@ -1,7 +1,8 @@ import { tmpdir } from "node:os"; import { dirname, join, resolve } from "node:path"; import { fileURLToPath } from "node:url"; -import type { Runtime } from "@prisma/cli-engine"; +import type { Runtime, StreamEvent } from "@prisma/cli-engine"; +import type { Diagnostic } from "@prisma/cli-engine/protocol"; import { describe, expect, it } from "vitest"; import { CLIENT_ID, DEFAULT_REDIRECT_URI } from "../src/auth/client"; @@ -385,10 +386,29 @@ describe("buildCli", () => { ); }); - /** The mount's config wiring, end to end: the section name composer's - * family declares, read by the bin's real disk loader, reaching - * composer's own handler as the path it acts on. */ - it("hands the composer section of prisma.config.ts to the composer family", async () => { + /** The error the bin's stream settled on, read from the terminal + * result frame. Parsed rather than matched against the raw text: + * stdout is not a TTY here, so the stream is JSON, and JSON escapes + * every separator in a Windows path — no path the CLI printed is a + * substring of the stream that carried it. */ + function resultError(stdoutText: string): Diagnostic { + const frames = stdoutText + .split("\n") + .filter((line) => line !== "") + .map((line) => JSON.parse(line) as StreamEvent); + const last = frames.at(-1); + if (last?.kind !== "result" || last.envelope.ok) { + throw new Error(`expected a failed result frame, got: ${stdoutText}`); + } + return last.envelope.error; + } + + /** `composer log` through the real bin, against the fixture whose + * composer section names a config file that is not there. */ + async function runComposerLog(): Promise<{ + readonly exitCode: number; + readonly error: Diagnostic; + }> { const proc = makeProcess({ argv: [ "node", @@ -402,13 +422,58 @@ describe("buildCli", () => { }); const exitCode = await main(proc); + return { exitCode, error: resultError(proc.stdoutText) }; + } - expect(exitCode).toBe(2); - expect(proc.stdoutText).toContain( - join("/tmp/v8-bin-test-cwd", "named-by-the-section.config.ts"), - ); - expect(proc.stdoutText).toContain("there is no walk to fall back on"); - }); + /** + * The mount's config wiring, end to end: the section name composer's + * family declares, read by the bin's real disk loader, reaching + * composer's own handler as the path it acts on. + * + * Every platform but Windows. `dev` and `log` are the only composer + * commands that reach config discovery without credentials — deploy + * and destroy stop at the credential check — and both refuse Windows + * before they read the section they were handed, so no shipped + * command can show the section arriving there. The test after this + * one pins what Windows can still show. + */ + it.skipIf(process.platform === "win32")( + "hands the composer section of prisma.config.ts to the composer family", + async () => { + const { exitCode, error } = await runComposerLog(); + + expect(exitCode).toBe(2); + expect(error.code).toBe("CONFIG.FILE_MISSING"); + // resolve, not join: composer resolves the section's relative + // path against this cwd, and on Windows that puts a drive on it — + // written to stay right for the day this runs there again. + expect(error.where?.path).toBe( + join(resolve("/tmp/v8-bin-test-cwd"), "named-by-the-section.config.ts"), + ); + expect(error.why).toContain("there is no walk to fall back on"); + }, + ); + + /** + * What Windows still shows: the bin evaluated the config file, the + * engine accepted its `composer` section, and the command reached + * composer's own operation — which then refuses the platform. A + * mis-wired section would fail here as a config diagnostic instead. + * What it does not show is the section's path reaching composer's + * config discovery, since the refusal comes first. + * + * When composer supports Windows this test fails, and the pair + * collapses back into the one above. + */ + it.runIf(process.platform === "win32")( + "on Windows, composer's log refuses the platform before it reads the section", + async () => { + const { exitCode, error } = await runComposerLog(); + + expect(exitCode).toBe(2); + expect(error.code).toBe("LOG.PLATFORM_UNSUPPORTED"); + }, + ); it("runs --version through the real tree, printing the version with exit 0", async () => { const proc = makeProcess({ From 5d2c815e4bbc6665cf7e6797607305c409bed394 Mon Sep 17 00:00:00 2001 From: willbot Date: Wed, 12 Aug 2026 10:00:57 +0200 Subject: [PATCH 4/6] deps(cli): composer 0.6.0-dev.16, and the node floor follows it down MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit composer 0.6.0-dev.16 pins @prisma/cli-engine 0.0.9, the first published engine carrying `installsPackages` on CommandDefinition. That is what the mount in packages/cli/src/v8/cli.ts needs, so `pnpm typecheck` goes from failing to clean with no change to the mount itself. dev.16 also drops composer's own Node requirement from >=24 to >=22.18.0, so @prisma/cli's floor, raised to >=24 only because composer demanded it, comes back down to >=22.18.0 to match composer exactly. packages/cli's README follows it. The repo's own toolchain stays on Node 24, and that is not an oversight. Moving .node-version back to 22.22.3 turned two CI jobs red — the jobs that read it, Test in pr-quality and preview — while the jobs pinned to node-version: 24 stayed green on the same commit. Both failures were the same test: the canary in v8-composer-isolation, whose import of composer's deploy executor exits non-zero on Node 22.22.3. So composer's declared floor of 22.18.0 and what its executor actually loads on disagree, and until that is composer's to settle, this repo builds and tests on 24: .node-version, the root engines, and the three contributor docs all say 24, with CONTRIBUTING recording why the published floor is lower. @prisma/cli-engine keeps its own >=22.12.0. composer depends on the engine, so raising the engine's floor would push that floor back onto composer through the dependency. An install still resolves two engine copies, not one: the packed CLI depends on @prisma/cli-engine 8.0.0-rc.1, its own workspace build, while composer pins the published 0.0.9. Two exact pins on two release lines cannot dedupe, so dev.16's move from 0.0.7 to 0.0.9 does not change the count. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- CONTRIBUTING.md | 4 ++++ packages/cli/README.md | 2 +- packages/cli/package.json | 4 ++-- pnpm-lock.yaml | 23 +++++++++++++---------- 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a70e6257..4bb59928 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -13,6 +13,10 @@ Requirements: - Node.js 24 or newer - pnpm 10 +Published `@prisma/cli` declares a lower floor (Node 22.18, matching +`@prisma/composer`), but the test suite needs 24: composer's deploy executor +fails to load on Node 22, which the composer startup-isolation test catches. + Install dependencies: ```bash diff --git a/packages/cli/README.md b/packages/cli/README.md index 954791cf..96b492a1 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -104,7 +104,7 @@ npx prisma-cli app promote ## Beta notes -- Requires Node.js 24 or newer. +- Requires Node.js 22.18 or newer. - This is a beta package and may change quickly. - Official beta releases publish as `@prisma/cli`. - The package binary is `prisma-cli`, not `prisma`, during beta. diff --git a/packages/cli/package.json b/packages/cli/package.json index 36e2c7c8..979d079c 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -18,7 +18,7 @@ "access": "public" }, "engines": { - "node": ">=24" + "node": ">=22.18.0" }, "keywords": [ "prisma", @@ -47,7 +47,7 @@ "dependencies": { "@clack/prompts": "1.5.0", "@prisma/cli-engine": "workspace:8.0.0-rc.1", - "@prisma/composer": "0.6.0-dev.15", + "@prisma/composer": "0.6.0-dev.16", "@prisma/compute-sdk": "0.39.0", "@prisma/credentials-store": "^7.8.0", "@prisma/management-api-sdk": "1.55.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 77964add..cba6d22f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -30,8 +30,8 @@ importers: specifier: workspace:8.0.0-rc.1 version: link:../cli-engine '@prisma/composer': - specifier: 0.6.0-dev.15 - version: 0.6.0-dev.15(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) + specifier: 0.6.0-dev.16 + version: 0.6.0-dev.16(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) '@prisma/compute-sdk': specifier: 0.39.0 version: 0.39.0(@prisma/management-api-sdk@1.55.0)(rollup@4.62.2) @@ -1242,13 +1242,13 @@ packages: '@oxc-project/types@0.139.0': resolution: {integrity: sha512-r9gHphtCs+1M7J0pw6Sn/hh/Wpa/iQrOOkrNAlVLF/gHq+/CJmHIWKKUUhdWjcD6CIa8idarspCsASiXCXvFUw==} - '@prisma/cli-engine@0.0.7': - resolution: {integrity: sha512-at7M9hqN9eE0CkAj+U7Ey0ZSqTTSmI1r5Uk9rCc7hbAJgEk3keyQ/ObeXtd0BMu6G9rcb7zGGMQyumKH1gEolQ==} + '@prisma/cli-engine@0.0.9': + resolution: {integrity: sha512-OiAolWJBhgwVXJ+0aJ9uERplJkxXsKNaUSaUXNDYGvdEoq5c0365OZbGMH5fTmFpqPlPv7MwZga3WkN6ldQyjQ==} engines: {node: '>=22.12.0'} - '@prisma/composer@0.6.0-dev.15': - resolution: {integrity: sha512-owbm3SziouQKyBXRA/8W1sAFs205tTUSscXX5eQidS2V/rTNlWBua3HnXdRdBElJYaSWJerBouL126f4qCc4OQ==} - engines: {node: '>=24'} + '@prisma/composer@0.6.0-dev.16': + resolution: {integrity: sha512-Lh/bKwrc/DPGc8krMCw0DfK3PeAhdaliv+wtU/IQZV7Ipo62XQ8OKh+ehLwDYSsEzmTmlpi+/XhsjBmxWLmS+A==} + engines: {node: '>=22.18.0'} hasBin: true '@prisma/compute-sdk@0.39.0': @@ -4119,19 +4119,22 @@ snapshots: '@oxc-project/types@0.139.0': {} - '@prisma/cli-engine@0.0.7(magicast@0.5.3)': + '@prisma/cli-engine@0.0.9(magicast@0.5.3)': dependencies: '@clack/prompts': 1.5.0 '@prisma/management-api-sdk': 1.55.0 '@stricli/core': 1.3.0 c12: 3.3.4(magicast@0.5.3) + colorette: 2.0.20 + package-manager-detector: 1.8.0 + string-width: 8.2.1 transitivePeerDependencies: - magicast - '@prisma/composer@0.6.0-dev.15(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0)': + '@prisma/composer@0.6.0-dev.16(@types/node@22.19.19)(magicast@0.5.3)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0)': dependencies: '@effect/vitest': 4.0.0-beta.103(effect@4.0.0-beta.103)(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))) - '@prisma/cli-engine': 0.0.7(magicast@0.5.3) + '@prisma/cli-engine': 0.0.9(magicast@0.5.3) '@prisma/management-api-sdk': 1.59.0 '@standard-schema/spec': 1.1.0 alchemy: 2.0.0-beta.67(@types/node@22.19.19)(effect@4.0.0-beta.103)(rollup@4.62.2)(typescript@6.0.3)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0))(vitest@4.1.8(@types/node@22.19.19)(vite@7.3.5(@types/node@22.19.19)(jiti@2.7.0)(tsx@4.22.4)(yaml@2.9.0)))(workerd@1.20260704.1)(ws@8.21.0) From 69562d917f053f9c2cde688328aaeee03fa35837 Mon Sep 17 00:00:00 2001 From: willbot Date: Wed, 12 Aug 2026 11:02:43 +0200 Subject: [PATCH 5/6] =?UTF-8?q?docs:=20composer=20runs=20on=20Node=2022=20?= =?UTF-8?q?=E2=80=94=20the=20probe=20is=20what=20does=20not?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #152 recorded that composer's deploy executor fails to load on Node 22, and that composer's >=22.18.0 floor is therefore a false claim. It is not. All 16 published entrypoints of @prisma/composer 0.6.0-dev.16, deploy included, import cleanly in a fresh process on 22.18.0 and 22.22.3. What actually needs Node 24 is this repo's own startup-isolation probe. It spawns node with --import tsx, and tsx bypasses Node's module-syntax detection, so @alchemy.run/node-utils 0.0.5 — ESM in lib/*.js with no "type": "module", which that detection otherwise classifies correctly — stops loading. Separately, the probe's own registerHooks load hook cannot run on 22.18 at all: nextLoad returns source: undefined there, which fails with ERR_INVALID_RETURN_PROPERTY_VALUE. Neither cause is composer's. CONTRIBUTING now says composer runs fine on 22.18 and points at the isolation test, which carries the tsx and node-utils detail where a contributor running the suite on 22 will actually land. The floors are unchanged: @prisma/cli stays >=22.18.0, @prisma/cli-engine stays >=22.12.0, and .node-version stays 24. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- CONTRIBUTING.md | 5 +++-- packages/cli/tests/v8-composer-isolation.test.ts | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4bb59928..8f327219 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,8 +14,9 @@ Requirements: - pnpm 10 Published `@prisma/cli` declares a lower floor (Node 22.18, matching -`@prisma/composer`), but the test suite needs 24: composer's deploy executor -fails to load on Node 22, which the composer startup-isolation test catches. +`@prisma/composer`), and composer runs fine there. The repo develops and tests +on 24 because the startup-isolation probe cannot run on Node 22; the reason is +recorded in `packages/cli/tests/v8-composer-isolation.test.ts`. Install dependencies: diff --git a/packages/cli/tests/v8-composer-isolation.test.ts b/packages/cli/tests/v8-composer-isolation.test.ts index 47dfc01f..55ab35b4 100644 --- a/packages/cli/tests/v8-composer-isolation.test.ts +++ b/packages/cli/tests/v8-composer-isolation.test.ts @@ -39,6 +39,10 @@ async function runProbe(scenario: "plain" | "canary"): Promise { "report.json", ); await new Promise((resolve, reject) => { + // Node 24 only, and that limit is this probe's rather than composer's: + // tsx bypasses Node's module-syntax detection, so @alchemy.run/node-utils + // (ESM in lib/*.js with no "type": "module") stops loading on 22 — and + // the probe's own registerHooks load hook cannot run on 22.18 either. const child = spawn( process.execPath, ["--import", "tsx", PROBE, scenario, reportPath], From 6cc511966cdd2b771e61d53604c73ddc8dc00ea6 Mon Sep 17 00:00:00 2001 From: willbot Date: Wed, 12 Aug 2026 11:27:44 +0200 Subject: [PATCH 6/6] docs: correct the records CodeRabbit checked against the code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nine review threads on #152 checked claims in the project records against the shipping code. Where they disagreed, the code won. Corrected, having re-read the published `@prisma/composer@0.6.0-dev.16` and this repo's engine: - the help-example defect is eight strings, not four (two on each of the four commands), and the rendered `prisma deploy src/service.ts` settles CLI.UNKNOWN_COMMAND; - composer pins `@prisma/cli-engine@0.0.9`, not `0.0.7`, against prisma-cli's workspace `8.0.0-rc.1`, and the entry now names the one crossing that is tested and calls matching pins a release requirement; - the effect-resolution check does run on the shipped path — it sits in `configSource`, the front both loader shapes share — so the deferred entry saying it never runs was the wrong record, not the parity one; - the coverage ledger no longer claims the prisma bin proves composer's validator, its absence case, or its unknown-key warning: the engine's own suite proves that machinery against toy sections, and the bin proves one real section arriving at composer's handler; - the child's credential bound is stated: five minutes at spawn (CREDENTIAL_NEAR_EXPIRY_MS) and nothing limiting the run after it, recorded as a release limitation with the two ways out deferred; - the section heading no longer says all remaining work is composer's, because two of its four items need a change in each repo. The canary in v8-composer-isolation.test.ts now asserts the signal listener counts it was only recording, so the unpatched node-utils leaving one SIGINT and one SIGTERM listener is a fact the suite holds. Its Node-version comment says which failure belongs to which Node: 22.18 rejects the probe's own load hook return value (the registerHooks API itself has been there since 22.15), and 22.22 fails the canary's import under tsx. Co-Authored-By: Claude Fable 5 Signed-off-by: willbot Signed-off-by: Will Madden --- .../assets/s2/parity-divergences-s3.md | 36 ++++++--- .drive/projects/prisma-cli-v8/deferred.md | 74 ++++++++++++++----- .drive/projects/prisma-cli-v8/plan.md | 4 +- .../cli/tests/v8-composer-isolation.test.ts | 19 +++-- 4 files changed, 94 insertions(+), 39 deletions(-) diff --git a/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md index acfe8e15..6b2bde7f 100644 --- a/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md +++ b/.drive/projects/prisma-cli-v8/assets/s2/parity-divergences-s3.md @@ -35,16 +35,21 @@ difference. **Help examples name the wrong invocation under the prisma bin.** Composer writes its examples as `{bin} deploy src/service.ts`, which is right for `prisma-composer` and wrong for `prisma`, where the command is -`prisma composer deploy`. The engine substitutes `{bin}` with the CLI -name and nothing else (operator ruling, 2026-08-09: examples never -contain the binary name), and composer cannot know where a host mounted -it. So `prisma composer deploy --help` currently shows -`prisma deploy src/service.ts` in its Examples block. Nothing else in -the help is wrong, and the same defect is unreachable from composer's -own CLI. Fixing it needs a mount-aware placeholder in the engine -(`{command}` substituted with the command's mounted path) and composer -rewriting its four example strings to use it — a coordinated change -across both repos, recorded in `deferred.md`. +`prisma composer deploy`. The engine's `resolveExample` +(`packages/cli-engine/src/execution/stricli-adapter.ts`) substitutes +`{bin}` with the CLI name and nothing else (operator ruling, 2026-08-09: +examples never contain the binary name), and composer cannot know where +a host mounted it. So `prisma composer deploy --help` currently shows +`prisma deploy src/service.ts` in its Examples block — an invocation the +bin answers to with `CLI.UNKNOWN_COMMAND`, since there is no top-level +`deploy`. All eight examples are wrong the same way: two on each of the +four commands, verified in `@prisma/composer@0.6.0-dev.16`'s +`dist/family.mjs`. Nothing else in the help is wrong, and the same +defect is unreachable from composer's own CLI. Fixing it needs a +mount-aware placeholder in the engine (`{command}` substituted with the +command's mounted path) and composer rewriting those eight strings to +use it — a coordinated change across both repos, recorded in +`deferred.md`. ## `deploy --production` is dropped @@ -66,7 +71,7 @@ When the alchemy child failed, legacy printed the `DEPLOY.ENGINE_FAILED` envelope and then two bare `console.error` lines to stderr (`render-error.ts:27-37`): -``` +```text Generated stack file: Run `` from to reproduce this directly. ``` @@ -256,7 +261,14 @@ Three refusals are new, and all three move work earlier in the run: `DEPS.EFFECT_VERSION_CONFLICT` diagnostic, so commands that need no config still work on a broken dependency tree, and `prisma --help`, `prisma composer --help` and every platform command are unaffected by - composer's dependency resolution. + composer's dependency resolution. Where it moved to, in the published + `0.6.0-dev.16`: `configSource`, the front that the throwing loader and + the diagnostics-returning loader both go through, so every config load + runs it first whichever shape called. (That the diagnostics-returning + loader itself is still uncalled — the `deferred.md` item — does not + reach this check.) A failed executor import diagnoses the same + condition a second time, turning the load failure into + `DEPS.EFFECT_VERSION_CONFLICT` rather than `DEPS.EXECUTOR_UNLOADABLE`. ## Not a divergence, recorded because it looks like one diff --git a/.drive/projects/prisma-cli-v8/deferred.md b/.drive/projects/prisma-cli-v8/deferred.md index 21f0c1a5..0b7fa6ba 100644 --- a/.drive/projects/prisma-cli-v8/deferred.md +++ b/.drive/projects/prisma-cli-v8/deferred.md @@ -4,38 +4,52 @@ Work identified during a slice that is not part of that slice's contract. Each entry: what, why it was deferred, where it lands. Nothing here is tracked outside this file. -## Still open after S3/D4 — all of it in the composer repo +## Still open after S3/D4 — mostly the composer repo, two items need both D4 landed the prisma-cli half (the mount, the node floor, the divergence -file, the ledger corrections, the 1c closure). What is left needs a -composer checkout. +file, the ledger corrections, the 1c closure). The first two items below +need a composer checkout and nothing else. The last two need a change in +each repo: the engine pin has to match what prisma-cli depends on, and +the help-example fix needs a new placeholder in this repo's engine before +composer can use it. - **`loadAppConfigDiagnostics()` is called by nothing.** D2 rewrote composer's config loading to return diagnostics instead of throwing (contract R-S3-2), but `pipeline.ts` still calls the throwing `loadAppConfig`, so the rewrite is currently dead code — - and the effect-resolution check that moved into it never runs. + the name does not appear outside comments in the published + `0.6.0-dev.16` bundles. The effect-resolution check is unaffected and + does run: it sits in `configSource`, the front both loader shapes + share, so the throwing path the pipeline uses runs it first. - **`check:npm-effect-resolution` fixes are unverified.** D3 updated three assertions (help proves the family mounted; the adversarial `deploy` gets a service token because the credential check now precedes the tree check; `--help` must survive a broken dependency tree because the family's static graph is alchemy-free). The check performs real npm installs, so it needs network to run. -- **The engine pin moves off `0.0.3`** to whatever the tandem release - publishes, in both composer manifests — and it must be the SAME - version prisma-cli depends on. They disagree today: prisma-cli builds - against the workspace engine and the preview composer pins - `@prisma/cli-engine@0.0.7`, so an install of `@prisma/cli` carries two - copies of the engine. It works (the settlement markers are - `Symbol.for`, so they cross copies), but the tandem release is where - it should stop being true. +- **The engine pin moves to whatever the tandem release publishes**, in + both composer manifests — and it must be the SAME version prisma-cli + depends on. They disagree today: prisma-cli builds against the + workspace engine (`8.0.0-rc.1`) and composer `0.6.0-dev.16` pins + `@prisma/cli-engine@0.0.9` exactly, so an install of `@prisma/cli` + carries two copies of the engine. It works for the one crossing that + is tested: the engine's cross-copy markers are `Symbol.for`, and + `packages/cli-engine/tests/execution.test.ts` ("a structured error + built by another copy of the engine") and `tests/protocol.test.ts` + prove a structured error raised by one copy is recognised by the + other. Nothing tests execution or signal behaviour across two copies, + and the honest reason is that it is not worth writing: matching pins + is a **release requirement for the tandem release**, so the two-copy + install is a preview-only state to end rather than a configuration to + support. - **The prisma bin's mount makes composer's help examples wrong.** Composer writes them as `{bin} deploy src/service.ts`; mounted under the `composer` root the invocation is `prisma composer deploy`, and - the engine substitutes only `{bin}`. Fix needs both repos: a - mount-aware placeholder in the engine (`{command}` → the command's - mounted path) and composer's four example strings rewritten to use it. - Recorded in `assets/s2/parity-divergences-s3.md`. + the engine's `resolveExample` substitutes only `{bin}`. Fix needs both + repos: a mount-aware placeholder in the engine (`{command}` → the + command's mounted path) and composer's eight example strings — two on + each of the four commands — rewritten to use it. Recorded in + `assets/s2/parity-divergences-s3.md`. ## Owned by whoever lands the next engine change @@ -45,6 +59,18 @@ composer checkout. If rev 6's storage surface reshapes again, the single named consumer (`packages/cli-engine/src/execution/spawn.ts`) moves with it. Recorded in `assets/engine/credential-manager-design.md`. +- **Nothing bounds a child run to the token it was given.** A + `credentials: "child"` command hands the child a snapshot of the + access token and never the refresh token + (`packages/cli-engine/src/execution/spawn.ts`), and the only check is + the near-expiry refusal in `execution/needs.ts`: + `CREDENTIAL_NEAR_EXPIRY_MS` is 5 minutes, so the guarantee at spawn is + "more than five minutes left", not "enough for this run". A converge + that outlives the snapshot fails on an expired token, after the child + has already created resources. Two ways out, both unbuilt: hand the + child something that can refresh, or bound the child's run and refuse + when the remaining lifetime cannot cover it. Recorded as a release + limitation in `plan.md`'s coverage ledger. - **A validated number flag**, if `--tail`'s old constraint is wanted back. `flag.number` accepts negatives and fractions, so "non-negative integer" is enforced nowhere. D4 took the other branch this item @@ -127,10 +153,18 @@ composer checkout. costs.** A pnpm patch applies in the repo that declares it, so a `prisma` install resolves the unpatched `@alchemy.run/node-utils`. D4's canary (`packages/cli/tests/v8-composer-isolation.test.ts`) - imports one composer executor in a fresh prisma bin process and finds - one SIGINT and one SIGTERM listener registered by the import alone — - the exact condition the contract's design consequence 4 says nothing - ships with. It does not fire on a normal run: the same process running + imports one composer executor in a fresh prisma bin process and + asserts what the import alone leaves behind: one SIGINT and one + SIGTERM listener — the exact condition the contract's design + consequence 4 says nothing ships with. Both counts are assertions, not + observations, so the day the patch reaches us this test says so. + What those listeners do is the reason it matters: `lib/exit-hook.js` + calls `process.exit(128 + signal)` from inside them, which is a + synchronous exit the engine's abort, child teardown and settlement do + not get to finish behind. Whether they actually preempt the engine on + a real Ctrl-C during a composer command is untested — the listeners + are proven present, the race is not proven either way. + It does not fire on a normal run: the same process running `--version` loads no alchemy at all and holds no listener, which is what the test asserts. It fires once a composer command evaluates its config. Until the release chain delivers, composer's own diff --git a/.drive/projects/prisma-cli-v8/plan.md b/.drive/projects/prisma-cli-v8/plan.md index 01460e87..2f7973c2 100644 --- a/.drive/projects/prisma-cli-v8/plan.md +++ b/.drive/projects/prisma-cli-v8/plan.md @@ -172,8 +172,8 @@ Recorded so they are not lost between slices. | Prompts (defaults, consent, wizard) | S2 (init) | | Poll + status events; output streams | S2 (domain wait; `build logs` — `service logs` moved to S8) | | Auth via context | S2, S3 (deploy, destroy) | -| Refresh under long runs | **Still unproven** (corrected at S3 closure). S3 proves the STATIC-token handoff instead: the child is given a snapshot that never refreshes, and the refresh token is never injected, so a long converge runs on a token that can expire mid-run. The contract accepts that and refuses up front when the session is near expiry. The in-process leg uses the engine's refreshing client, but nothing in S3 runs long enough to make it refresh. | -| Config sections, command families, validator absence | S3 proves ONE section — composer's, a single optional string field — declared by one family and read through the real disk loader in the prisma bin: its total validator including absence, its unknown-key warning diagnostic, and the engine's own unknown-section check. The platform family declares no section, so two families contributing to one config file is unproven, and so is any section with required or structured fields. Both wait for S5. | +| Refresh under long runs | **Still unproven** (corrected at S3 closure). S3 proves the STATIC-token handoff instead: the child is given a snapshot that never refreshes, and the refresh token is never injected, so a long converge runs on a token that can expire mid-run. The contract accepts that and refuses up front when the session is near expiry. **The bound that refusal buys is five minutes** (`CREDENTIAL_NEAR_EXPIRY_MS` in `execution/needs.ts`): a run starts only when more than five minutes remain, and nothing limits how long the child then runs, so a converge outliving the snapshot fails on an expired token after it has created resources. That is a release limitation, recorded in `deferred.md`, not a solved problem. The in-process leg uses the engine's refreshing client, but nothing in S3 runs long enough to make it refresh. | +| Config sections, command families, validator absence | Two levels, and they are proven in different places. The section machinery — a total validator including absence, a validator's warning diagnostic, and the engine's unknown-section check — is proven by the engine's own suite (`packages/cli-engine/tests/config.test.ts`) against toy sections. What S3 adds is ONE real section end to end: composer's, a single optional string field, declared by one family, read from disk by the bin's real loader, accepted by composer's own validator, and arriving at composer's handler as the path it acts on (`v8-bin.test.ts`, "hands the composer section of prisma.config.ts to the composer family"). Only the accepting path is covered there: nothing in the bin shows composer's validator refusing a section, running on an absent one, or warning on an unknown key, because `log` against that one fixture is the only run a shipped composer command makes to config without credentials. The platform family declares no section, so two families contributing to one config file is unproven, and so is any section with required or structured fields. Both wait for S5. | | Session commands, signal lifetime | S3 (dev, log) | | Cross-repo/published consumption, pins, tandem releases | S3 | | Child-status passthrough exception | S3 | diff --git a/packages/cli/tests/v8-composer-isolation.test.ts b/packages/cli/tests/v8-composer-isolation.test.ts index 55ab35b4..fe9dfa67 100644 --- a/packages/cli/tests/v8-composer-isolation.test.ts +++ b/packages/cli/tests/v8-composer-isolation.test.ts @@ -39,10 +39,14 @@ async function runProbe(scenario: "plain" | "canary"): Promise { "report.json", ); await new Promise((resolve, reject) => { - // Node 24 only, and that limit is this probe's rather than composer's: - // tsx bypasses Node's module-syntax detection, so @alchemy.run/node-utils - // (ESM in lib/*.js with no "type": "module") stops loading on 22 — and - // the probe's own registerHooks load hook cannot run on 22.18 either. + // Node 24 only, and that limit is this probe's rather than composer's. + // Node 22 fails a scenario each way: 22.18 rejects the probe's own + // registerHooks load hook with ERR_INVALID_RETURN_PROPERTY_VALUE (the + // API is there from 22.15 — it is the value the hook returns that 22.18 + // will not take, and 22.22 takes it), and on 22.22 the canary's import + // fails because tsx bypasses Node's module-syntax detection, so + // @alchemy.run/node-utils (ESM in lib/*.js with no "type": "module") is + // read as CommonJS and provides none of the named exports. const child = spawn( process.execPath, ["--import", "tsx", PROBE, scenario, reportPath], @@ -77,7 +81,7 @@ describe("composer's family costs an unrelated command nothing", () => { expect(report.signalListeners).toEqual({ SIGINT: 0, SIGTERM: 0 }); }, 120_000); - test("canary: the executor import a composer command makes does load the constellation", async () => { + test("canary: the executor import a composer command makes loads the constellation, and one signal listener per signal comes with it", async () => { const report = await runProbe("canary"); expect(report.constellation.length).toBeGreaterThan(0); @@ -87,5 +91,10 @@ describe("composer's family costs an unrelated command nothing", () => { expect(report.constellation.some((id) => id.startsWith("effect/"))).toBe( true, ); + // The unpatched @alchemy.run/node-utils registers these at import time + // and never removes them; their handlers exit 130/143 themselves. The + // count is what the deferred entry on that patch reports, so it is + // asserted rather than only recorded. + expect(report.signalListeners).toEqual({ SIGINT: 1, SIGTERM: 1 }); }, 120_000); });