@prisma/composer-cli 0.29.1 → 0.30.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. package/dist/{composer-config-CY9fET8H-5-aHaW5A.mjs → composer-config-CY9fET8H-CgnpfWc2.mjs} +3 -3
  2. package/dist/composer-config-CY9fET8H-CgnpfWc2.mjs.map +1 -0
  3. package/dist/{container-transport-HcvNOGZL-5E1tAWgm.mjs → container-transport-HcvNOGZL-ClGmzBIO.mjs} +2 -2
  4. package/dist/{container-transport-HcvNOGZL-5E1tAWgm.mjs.map → container-transport-HcvNOGZL-ClGmzBIO.mjs.map} +1 -1
  5. package/dist/{dev-B512jpX2-B5iaXikT.mjs → dev-CqS1W82b-BF0YJc6a.mjs} +5 -5
  6. package/dist/{dev-B512jpX2-B5iaXikT.mjs.map → dev-CqS1W82b-BF0YJc6a.mjs.map} +1 -1
  7. package/dist/{execute-deploy-destroy-Bdzq1chG-p7jPAgXq.mjs → execute-deploy-destroy-D4UdieU1-C1P6X7uK.mjs} +5 -5
  8. package/dist/{execute-deploy-destroy-Bdzq1chG-p7jPAgXq.mjs.map → execute-deploy-destroy-D4UdieU1-C1P6X7uK.mjs.map} +1 -1
  9. package/dist/{execute-dev-6Peq7g1_-Czch93PM.mjs → execute-dev-BSPnsEv--SNELmzE_.mjs} +6 -6
  10. package/dist/{execute-dev-6Peq7g1_-Czch93PM.mjs.map → execute-dev-BSPnsEv--SNELmzE_.mjs.map} +1 -1
  11. package/dist/{family-Dt7BgpVf-BBU5ZToI.d.mts → family-Dt7BgpVf-YyjGLli3.d.mts} +3 -3
  12. package/dist/{family-Dt7BgpVf-BBU5ZToI.d.mts.map → family-Dt7BgpVf-YyjGLli3.d.mts.map} +1 -1
  13. package/dist/family.d.mts +1 -1
  14. package/dist/family.mjs +2 -2
  15. package/dist/family.mjs.map +1 -1
  16. package/dist/{generate-dev-stack-DSBhURJV-CuJs4-ZW.mjs → generate-dev-stack-DSBhURJV-Gv1jakWP.mjs} +2 -2
  17. package/dist/{generate-dev-stack-DSBhURJV-CuJs4-ZW.mjs.map → generate-dev-stack-DSBhURJV-Gv1jakWP.mjs.map} +1 -1
  18. package/dist/testing.d.mts +1 -1
  19. package/dist/testing.mjs +2 -2
  20. package/dist/testing.mjs.map +1 -1
  21. package/package.json +7 -7
  22. package/dist/composer-config-CY9fET8H-5-aHaW5A.mjs.map +0 -1
@@ -589,7 +589,7 @@ interface Graph {
589
589
  readonly params: readonly ParamBinding[];
590
590
  }
591
591
  //#endregion
592
- //#region ../../0-framework/1-core/core/dist/app-config-3CswwwoZ.d.mts
592
+ //#region ../../0-framework/1-core/core/dist/app-config-BqBRS3nH.d.mts
593
593
  //#region src/container-transport.d.ts
594
594
  /**
595
595
  * Carries resolved containers from the CLI process into the alchemy process
@@ -1068,7 +1068,7 @@ interface LocalTargetDescriptor {
1068
1068
  readonly container: ContainerDescriptor;
1069
1069
  /** Value sourcing (secrets/env-params) — runs where deploy's preflight runs. */
1070
1070
  preflight?(input: PreflightInput): Promise<void>;
1071
- /** Ensure the emulator daemons this topology's node kinds need are running (idempotent; they persist across sessions). */
1071
+ /** Ensure the emulator daemons this topology's node kinds need are running, plus any per-node emulator state that must exist before converge (idempotent; daemons persist across sessions). */
1072
1072
  emulators?(input: LocalTargetEmulatorsInput): Promise<void>;
1073
1073
  /** The dev session's view of the running app. Core renders it and never learns an emulator's API. */
1074
1074
  attach(input: LocalTargetAttachInput): Promise<LocalTargetAttachment>;
@@ -1456,4 +1456,4 @@ interface CreateComposerFamilyOptions {
1456
1456
  declare function createComposerFamily(options?: CreateComposerFamilyOptions): CommandFamily;
1457
1457
  //#endregion
1458
1458
  export { ComposerConfigSource as a, DeploySuccess as c, OperationDeps as d, ServiceEndpoint as f, CliStructuredError as h, realOperations as i, DevInput as l, Result$1 as m, CreateComposerFamilyOptions as n, DeployEvent as o, AssembledServices as p, createComposerFamily as r, DeployInput as s, ComposerOperations as t, DevSession as u };
1459
- //# sourceMappingURL=family-Dt7BgpVf-BBU5ZToI.d.mts.map
1459
+ //# sourceMappingURL=family-Dt7BgpVf-YyjGLli3.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"family-Dt7BgpVf-BBU5ZToI.d.mts","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/errors.d.mts","../../../../node_modules/@standard-schema/spec/dist/index.d.ts","../../../0-framework/1-core/core/dist/graph-types-BTTaRnih.d.mts","../../../0-framework/1-core/core/dist/app-config-3CswwwoZ.d.mts","../../../0-framework/3-tooling/cli/dist/deployment-summary-CU-eVvJM.d.mts","../../../0-framework/0-foundation/foundation/dist/result.d.mts","../../../0-framework/3-tooling/assemble/dist/index.d.mts","../../../0-framework/3-tooling/cli/dist/dev-BoBrmouf.d.mts","../../../0-framework/3-tooling/cli/dist/family-Dt7BgpVf.d.mts"],"x_google_ignoreList":[1],"mappings":"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"}
1
+ {"version":3,"file":"family-Dt7BgpVf-YyjGLli3.d.mts","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/errors.d.mts","../../../../node_modules/@standard-schema/spec/dist/index.d.ts","../../../0-framework/1-core/core/dist/graph-types-BTTaRnih.d.mts","../../../0-framework/1-core/core/dist/app-config-BqBRS3nH.d.mts","../../../0-framework/3-tooling/cli/dist/deployment-summary-CU-eVvJM.d.mts","../../../0-framework/0-foundation/foundation/dist/result.d.mts","../../../0-framework/3-tooling/assemble/dist/index.d.mts","../../../0-framework/3-tooling/cli/dist/dev-BoBrmouf.d.mts","../../../0-framework/3-tooling/cli/dist/family-Dt7BgpVf.d.mts"],"x_google_ignoreList":[1],"mappings":"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"}
package/dist/family.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { a as ComposerConfigSource, h as CliStructuredError$1, i as realOperations, n as CreateComposerFamilyOptions, r as createComposerFamily, t as ComposerOperations } from "./family-Dt7BgpVf-BBU5ZToI.mjs";
1
+ import { a as ComposerConfigSource, h as CliStructuredError$1, i as realOperations, n as CreateComposerFamilyOptions, r as createComposerFamily, t as ComposerOperations } from "./family-Dt7BgpVf-YyjGLli3.mjs";
2
2
  import { ConfigSection } from "@prisma/cli-engine";
3
3
  import { CliStructuredError } from "@prisma/cli-engine/protocol";
4
4
  //#region ../../0-framework/3-tooling/cli/dist/family.d.mts
package/dist/family.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { a as alchemyCommandLine, i as sectionMissing, t as checkComposerConfig } from "./composer-config-CY9fET8H-5-aHaW5A.mjs";
2
- import { n as devWithDeps, r as executionDiagnostics, t as deployWithDeps } from "./dev-B512jpX2-B5iaXikT.mjs";
1
+ import { a as alchemyCommandLine, i as sectionMissing, t as checkComposerConfig } from "./composer-config-CY9fET8H-CgnpfWc2.mjs";
2
+ import { n as devWithDeps, r as executionDiagnostics, t as deployWithDeps } from "./dev-CqS1W82b-BF0YJc6a.mjs";
3
3
  import { defineCommand, defineCommandFamily, defineConfigSection, defineSessionCommand, exitWithChildStatus, flag, positional } from "@prisma/cli-engine";
4
4
  import { CliStructuredError, notOk, ok } from "@prisma/cli-engine/protocol";
5
5
  //#region ../../0-framework/3-tooling/cli/dist/family.mjs
@@ -1 +1 @@
1
- {"version":3,"file":"family.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/family.mjs"],"sourcesContent":["import { a as executionDiagnostics, i as deployWithDeps, n as devWithDeps } from \"./dev-B512jpX2.mjs\";\nimport { t as alchemyCommandLine } from \"./run-alchemy-CTw3BXKq.mjs\";\nimport { i as sectionMissing, t as checkComposerConfig } from \"./composer-config-CY9fET8H.mjs\";\nimport { defineCommand, defineCommandFamily, defineConfigSection, defineSessionCommand, exitWithChildStatus, flag, positional } from \"@prisma/cli-engine\";\nimport { CliStructuredError, notOk, ok } from \"@prisma/cli-engine/protocol\";\n//#region src/family/translate-error.ts\n/**\n* The family boundary's error translation.\n*\n* Composer and the engine each carry a class called `CliStructuredError`, both\n* descended from the same prisma/prisma foundation, and both recognize errors\n* by duck-typing on `name === 'CliStructuredError'`. That means a composer\n* error handed to the engine untranslated is ACCEPTED — it does not fail\n* loudly, it renders. What it loses is its `fix`: composer's foundation\n* carries remediation as one prose string on that field, the engine carries it\n* as a `nextActions` list and has no `fix` at all, so the fix text is dropped\n* silently and the user is told what broke with no word on what to do about\n* it. Nothing about that failure is visible without a test that looks for the\n* fix on the other side, which is why there is one.\n*\n* Everything else on the envelope survives as-is; only remediation changes\n* representation.\n*/\n/**\n* Composer's `fix` is free prose — \"add this overrides block and reinstall\",\n* \"run the build, then retry\" — with no machine-readable command inside it.\n* `user-choice` is the engine's own kind for exactly that (it is what the\n* engine uses for its own config and prompt failures), so the text carries\n* over verbatim as one action rather than being parsed into a command the\n* author never wrote.\n*/\nfunction fixAsNextActions(fix) {\n\treturn fix === void 0 ? [] : [{\n\t\tkind: \"user-choice\",\n\t\tlabel: fix\n\t}];\n}\n/** Translates a composer failure into the engine's error type. Composer-side detail — `meta`, `where`, `docsUrl` — rides along untouched. */\nfunction toEngineError(error) {\n\treturn new CliStructuredError(error.code, error.message, {\n\t\tseverity: error.severity,\n\t\tnextActions: fixAsNextActions(error.fix),\n\t\t...error.why === void 0 ? {} : { why: error.why },\n\t\t...error.where === void 0 ? {} : { where: error.where },\n\t\t...error.meta === void 0 ? {} : { meta: error.meta },\n\t\t...error.docsUrl === void 0 ? {} : { docsUrl: error.docsUrl },\n\t\tcause: error\n\t});\n}\n//#endregion\n//#region src/family/converge.ts\n/** The adapter the operations call, backed by the engine's `ctx.spawn` so the\n* terminal reaches alchemy natively and the engine owns signal policy. */\nfunction convergeSpawn(ctx) {\n\treturn async (invocation) => {\n\t\tconst commandLine = alchemyCommandLine(invocation);\n\t\treturn {\n\t\t\t...await ctx.spawn({\n\t\t\t\tcommand: commandLine.command,\n\t\t\t\targs: commandLine.args,\n\t\t\t\tcwd: commandLine.cwd,\n\t\t\t\tenv: commandLine.env\n\t\t\t}),\n\t\t\tcommandLine\n\t\t};\n\t};\n}\n/** The in-process leg's deps: composer's existing seam, carrying the engine's\n* own client and workspace id rather than anything read from the env. */\nfunction operationDeps(spec) {\n\treturn {\n\t\talchemy: spec.alchemy,\n\t\tcredentials: {\n\t\t\tworkspaceId: spec.workspaceId,\n\t\t\tclient: spec.client\n\t\t}\n\t};\n}\n/**\n* The reproduce hint a failed converge carries. Deliberately absent for an\n* aborted one: the user stopped it, so there is nothing to reproduce.\n*/\nfunction reproduceHint(failure) {\n\tconst diagnostics = executionDiagnostics(failure);\n\tif (diagnostics === void 0) return [];\n\treturn [{\n\t\tkind: \"run-command\",\n\t\tlabel: `Run the converge directly from ${diagnostics.cwd} to reproduce this`,\n\t\tcommand: diagnostics.reproduceCommand,\n\t\treason: `Generated stack file: ${diagnostics.stackFilePath}`\n\t}];\n}\n/**\n* How a FAILED converge settles. `deploy` and `dev` both end this\n* way and must not drift apart, so the decision lives here once rather than\n* inline in each handler.\n*\n* A failure that reached the child exits with the child's status verbatim and\n* carries the reproduce hint; a failure that never reached the child is an\n* ordinary structured error and gets the normal envelope. Nothing here reads\n* `signal` — see settleConverge.\n*/\nfunction settleConvergeFailure(failure, ctx) {\n\tconst child = ctx.lastChild();\n\tif (child !== void 0 && child.exitCode !== 0) return ok(exitWithChildStatus({ nextActions: reproduceHint(failure) }));\n\treturn notOk(toEngineError(failure));\n}\n/**\n* How a converge settles, now that the engine owns the child's status.\n*\n* Nothing here reads `signal`. `exitWithChildStatus` settles from the engine's\n* own record of the child, and a signal-killed one overrules whatever this\n* function asked for: 128 + the signal, no failure envelope, and the reproduce\n* hint dropped, because the user stopped the run and there is nothing to\n* reproduce.\n*\n* What is left is the operation's own verdict. A failure that reached the\n* child exits with the child's status verbatim and carries the reproduce hint;\n* a failure that never reached the child is an ordinary structured error and\n* gets the normal envelope.\n*\n* A SUCCESS presents its result even when the child was signal-killed. No\n* composer operation produces that pair today — each one reports a\n* signal-killed converge as a failure — and an operation that ever did would\n* have a real result worth showing. The run still exits 130, because the\n* engine settles a signal-terminated run from its own record of the signal\n* whatever the handler returns.\n*/\nfunction settleConverge(result, ctx, present) {\n\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\treturn ok(present(result.value));\n}\n//#endregion\n//#region src/family/section.ts\nfunction diagnostic(finding, file) {\n\tconst where = finding.where ?? file;\n\treturn {\n\t\tcode: finding.code,\n\t\tseverity: \"error\",\n\t\tsummary: finding.summary,\n\t\t...finding.why === void 0 ? {} : { why: finding.why },\n\t\tnextActions: [{\n\t\t\tkind: \"edit-file\",\n\t\t\tlabel: finding.fix\n\t\t}],\n\t\t...where === void 0 ? {} : { where: { path: where } },\n\t\t...finding.field === void 0 ? {} : { meta: { field: finding.field } }\n\t};\n}\nfunction refuse(findings, file) {\n\treturn {\n\t\tok: false,\n\t\tdiagnostics: findings.map((finding) => diagnostic(finding, file))\n\t};\n}\nfunction validate(raw, provenance) {\n\tconst file = provenance.files[0];\n\tif (raw === void 0 || file === void 0) return refuse([sectionMissing], void 0);\n\tconst checked = checkComposerConfig(raw, file);\n\tif (!checked.ok) return refuse(checked.findings, file);\n\treturn {\n\t\tok: true,\n\t\tvalue: {\n\t\t\tvalue: checked.value,\n\t\t\tfile\n\t\t},\n\t\tdiagnostics: []\n\t};\n}\nconst composerSection = defineConfigSection({\n\tname: \"composer\",\n\tvalidate,\n\tmerge: (_parent, child) => child\n});\n//#endregion\n//#region src/family/workspace.ts\n/**\n* The workspace the in-process leg acts in, from the engine's credential\n* read. Handlers never decode a token and never read PRISMA_WORKSPACE_ID:\n* whether the credential came from a stored session or the environment, the\n* engine has already resolved it, and branching on where it came from is a\n* defect by the credential-manager design.\n*\n* Undefined when the active credential names no workspace — an environment\n* token whose claims carry none. The container descriptors raise their own\n* \"workspace required\" error in that case, which is the error the user needs.\n*/\nasync function workspaceIdOf(ctx) {\n\treturn (await ctx.activeCredential())?.workspaceId;\n}\n//#endregion\n//#region src/family/commands/deploy.ts\nconst STEP_LABELS = {\n\tprepare: \"load config and app\",\n\tassemble: \"assemble services\",\n\tconnect: \"connect to project and branch\",\n\tpreflight: \"check environment variables\",\n\tapply: \"plan and apply\",\n\trecord: \"record result\"\n};\nfunction stepLabel(step) {\n\treturn step.name === \"assemble-service\" ? `assemble ${step.address}` : STEP_LABELS[step.name];\n}\nfunction stepId(step) {\n\treturn step.name === \"assemble-service\" ? `deploy.assemble.${step.address}` : `deploy.${step.name}`;\n}\n/** `850ms`, `12.3s`, `9m 35s`. */\nfunction formatDuration(ms) {\n\tif (ms < 1e3) return `${String(Math.round(ms))}ms`;\n\tif (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;\n\tconst seconds = Math.round(ms / 1e3);\n\treturn `${String(Math.floor(seconds / 60))}m ${String(seconds % 60)}s`;\n}\n/** The operation's step events as engine events. The engine prints only `step`, so a finished step carries its duration in the text too. */\nfunction toEngineEvent(event) {\n\tconst id = stepId(event.step);\n\tif (event.kind === \"step-started\") return {\n\t\tkind: \"step-started\",\n\t\tstep: stepLabel(event.step),\n\t\tid,\n\t\t...event.step.name === \"assemble-service\" ? { parentId: \"deploy.assemble\" } : {}\n\t};\n\treturn {\n\t\tkind: \"step-finished\",\n\t\tstep: `${stepLabel(event.step)} (${formatDuration(event.durationMs)})`,\n\t\tid,\n\t\toutcome: event.outcome,\n\t\tdata: {\n\t\t\t...event.data,\n\t\t\tdurationMs: event.durationMs\n\t\t}\n\t};\n}\nconst createDeployCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Deploy the application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} deploy module.ts\", \"{bin} deploy module.ts --stage feat-auth\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The file whose default export is the application root module, built with module(...).\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the deploy's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Deploy scope to target; omit for production.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t}),\n\t\t\treport: flag.string({\n\t\t\t\tbrief: \"Write the deploy's outcome as JSON to this path — resources, preview URLs, and the failure cause. Also settable as PRISMA_COMPOSER_REPORT_FILE.\",\n\t\t\t\tplaceholder: \"path\"\n\t\t\t}),\n\t\t\tbuildId: flag.string({\n\t\t\t\tbrief: \"Join the deploy record your CI already created rather than letting the target create one. Each target also reads its own environment variable for this; the flag wins.\",\n\t\t\t\tplaceholder: \"id\"\n\t\t\t})\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.deploy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tconfig: ctx.config,\n\t\t\tname: args.flags.name,\n\t\t\tstage: args.flags.stage,\n\t\t\tcwd: ctx.cwd,\n\t\t\treportPath: args.flags.report,\n\t\t\treportId: args.flags.buildId,\n\t\t\tonEvent: (event) => ctx.report(toEngineEvent(event))\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, ({ summary, durationMs }) => {\n\t\t\tconst target = `to ${args.flags.stage ?? \"production\"} in ${formatDuration(durationMs)}`;\n\t\t\tfor (const node of summary?.nodes ?? []) for (const entity of node.entities) if (entity.url !== void 0) ctx.report({\n\t\t\t\tkind: \"endpoint\",\n\t\t\t\tname: node.address,\n\t\t\t\turl: entity.url\n\t\t\t});\n\t\t\treturn ctx.present({ data: {\n\t\t\t\tsummary: summary ?? null,\n\t\t\t\tdurationMs\n\t\t\t} }, {\n\t\t\t\thuman: (ui) => summary === void 0 ? [{\n\t\t\t\t\tkind: \"summary\",\n\t\t\t\t\tstatus: \"ok\",\n\t\t\t\t\ttext: `Deployed ${target}.`\n\t\t\t\t}] : [{\n\t\t\t\t\tkind: \"summary\",\n\t\t\t\t\tstatus: \"ok\",\n\t\t\t\t\ttext: `Deployed ${ui.emphasize(summary.app)} ${target}.`\n\t\t\t\t}, {\n\t\t\t\t\tkind: \"table\",\n\t\t\t\t\tcolumns: [\"Address\", \"Deployed\"],\n\t\t\t\t\trows: summary.nodes.map((node) => [node.address, node.entities.map((entity) => `${entity.kind} ${entity.id}`).join(\", \")])\n\t\t\t\t}],\n\t\t\t\tstdout: () => [],\n\t\t\t\tjson: () => ({\n\t\t\t\t\tsummary: summary ?? null,\n\t\t\t\t\tdurationMs\n\t\t\t\t}),\n\t\t\t\tnext: () => []\n\t\t\t});\n\t\t});\n\t}\n});\n//#endregion\n//#region src/family/commands/dev.ts\nconst STOP_STEP = \"Stopping the app's services — emulators and data stay up\";\n/** Resolves when the run is asked to stop. */\nfunction stopRequested(signal) {\n\tif (signal.aborted) return Promise.resolve();\n\treturn new Promise((resolve) => {\n\t\tsignal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t});\n}\n/**\n* One converge at a time. `ctx.spawn` refuses a second live child, and the\n* watch loop can well fire a rebuild while the previous converge is still\n* running — so a request that arrives during a live converge joins the single\n* queued follow-up instead of starting its own. That extends the coalescing\n* the watcher already does across a burst of edits to cover the converge\n* itself, and it is sound because every dev converge is the SAME invocation:\n* one stack file at one fixed path, rewritten in place before each request.\n*/\nfunction coalescedConverge(run) {\n\tlet live;\n\tlet queued;\n\tconst start = (invocation) => {\n\t\tconst outcome = run(invocation);\n\t\tconst settled = outcome.then(() => void 0, () => void 0);\n\t\tlive = settled;\n\t\tsettled.then(() => {\n\t\t\tif (live === settled) live = void 0;\n\t\t});\n\t\treturn outcome;\n\t};\n\treturn (invocation) => {\n\t\tconst running = live;\n\t\tif (running === void 0) return start(invocation);\n\t\tqueued ??= running.then(() => {\n\t\t\tqueued = void 0;\n\t\t\treturn start(invocation);\n\t\t});\n\t\treturn queued;\n\t};\n}\n/** The front door, ordered by address depth (fewest dots first) then lexicographically. */\nfunction frontDoorOrder(endpoints) {\n\treturn [...endpoints].sort((a, b) => {\n\t\tconst depth = a.address.split(\".\").length - b.address.split(\".\").length;\n\t\tif (depth !== 0) return depth;\n\t\treturn a.address < b.address ? -1 : a.address > b.address ? 1 : 0;\n\t});\n}\n/**\n* The operation's events as engine events. The legacy `[dev]` console prefix\n* is gone: these are commentary the engine renders and frames.\n*/\nfunction reportDevEvent(report, lastChild) {\n\tlet stopFailed = false;\n\treturn (event) => {\n\t\tswitch (event.kind) {\n\t\t\tcase \"ready\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"status\",\n\t\t\t\t\tsubject: \"dev\",\n\t\t\t\t\tstatus: \"ready\"\n\t\t\t\t});\n\t\t\t\tfor (const endpoint of frontDoorOrder(event.endpoints)) report({\n\t\t\t\t\tkind: \"endpoint\",\n\t\t\t\t\tname: endpoint.address,\n\t\t\t\t\turl: endpoint.url\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"unwatchable\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.address} has no watchable inputs.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"rebuild-failed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Rebuild failed: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"config-changed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.file} changed. Restart dev to apply it; rebuilds are paused until then.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"watch-error\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Watch error: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"converge-failed\": {\n\t\t\t\tconst child = lastChild();\n\t\t\t\tif (child !== void 0 && child.signal !== null) return;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Converge failed — the running app is untouched; still watching.\nGenerated stack file: ${event.stackFilePath}\\nRun \\`${event.reproduceCommand}\\` from ${event.cwd} to reproduce this directly.`\n\t\t\t\t});\n\t\t\t\treport({\n\t\t\t\t\tkind: \"remediation\",\n\t\t\t\t\taction: {\n\t\t\t\t\t\tkind: \"run-command\",\n\t\t\t\t\t\tlabel: `Run the converge directly from ${event.cwd} to reproduce this`,\n\t\t\t\t\t\tcommand: event.reproduceCommand,\n\t\t\t\t\t\treason: `Generated stack file: ${event.stackFilePath}`\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"stopping\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-started\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stop-error\":\n\t\t\t\tstopFailed = true;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `A service refused to stop: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-finished\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\",\n\t\t\t\t\toutcome: stopFailed ? \"warning\" : \"ok\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t};\n}\nconst createDevCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Bring up the application whose root node is <entry>'s default export, entirely on this machine.\",\n\t\tdescription: \"Runs credential-free and watches the app for changes, reconverging on every edit.\",\n\t\texamples: [\"{bin} dev module.ts\", \"{bin} dev module.ts --fresh\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The file whose default export is the application root module, built with module(...).\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tfresh: flag.boolean({ brief: \"Destroy the dev stack and wipe the dev state directory before starting.\" })\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\tconst result = await operations.dev({\n\t\t\tentry: args.positionals.entry,\n\t\t\tconfig: ctx.config,\n\t\t\tname: args.flags.name,\n\t\t\tfresh: args.flags.fresh,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: reportDevEvent(ctx.report, ctx.lastChild)\n\t\t}, { alchemy: coalescedConverge(alchemy) });\n\t\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\t\tawait stopRequested(ctx.signal);\n\t\tawait result.value.stop();\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/family.ts\n/**\n* Composer's `CommandFamily`: the unit the `prisma` bin mounts.\n*\n* This module and everything it reaches statically must stay free of alchemy\n* and of effect VALUE imports: the `prisma` bin imports the family directly,\n* so anything in this static graph loads on `prisma --version`. The mechanism\n* that holds it is the existing lazy boundary inside the operation modules —\n* `operations/deploy.ts` and `dev.ts` each `await import()` their executor,\n* and it is the executors that reach the provider tree. Importing the operations here is therefore free; importing an\n* executor, or flattening one of those dynamic imports, is not.\n* scripts/check-family-static-graph.mjs enforces this against BUILT output,\n* where type-only imports have already been erased.\n*\n* The commands close over the operations they are given, so a host can\n* mount this family against the test double and exercise real grammar, real\n* arg validation and real handlers with no alchemy behind them.\n*\n* The family ships `deploy` and `dev` only. `destroy` and `log` are\n* programmatic operations in `@prisma/composer/control`, not commands.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdev: devWithDeps\n};\n/** The `prisma` CLI's error reference; the engine appends `/<CODE>` to it for every error envelope. */\nconst CLI_DOCS_BASE = \"https://www.prisma.io/docs/cli/error-reference/\";\nfunction createComposerFamily(options = {}) {\n\tconst operations = options.operations ?? realOperations;\n\treturn defineCommandFamily({\n\t\tconfigSection: composerSection,\n\t\tcommands: {\n\t\t\tdeploy: createDeployCommand(operations),\n\t\t\tdev: createDevCommand(operations)\n\t\t},\n\t\tdocsBaseUrl: CLI_DOCS_BASE\n\t});\n}\n//#endregion\nexport { composerSection, createComposerFamily, realOperations, toEngineError };\n\n//# sourceMappingURL=family.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"family.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/family.mjs"],"sourcesContent":["import { a as executionDiagnostics, i as deployWithDeps, n as devWithDeps } from \"./dev-CqS1W82b.mjs\";\nimport { t as alchemyCommandLine } from \"./run-alchemy-BqHpStQn.mjs\";\nimport { i as sectionMissing, t as checkComposerConfig } from \"./composer-config-CY9fET8H.mjs\";\nimport { defineCommand, defineCommandFamily, defineConfigSection, defineSessionCommand, exitWithChildStatus, flag, positional } from \"@prisma/cli-engine\";\nimport { CliStructuredError, notOk, ok } from \"@prisma/cli-engine/protocol\";\n//#region src/family/translate-error.ts\n/**\n* The family boundary's error translation.\n*\n* Composer and the engine each carry a class called `CliStructuredError`, both\n* descended from the same prisma/prisma foundation, and both recognize errors\n* by duck-typing on `name === 'CliStructuredError'`. That means a composer\n* error handed to the engine untranslated is ACCEPTED — it does not fail\n* loudly, it renders. What it loses is its `fix`: composer's foundation\n* carries remediation as one prose string on that field, the engine carries it\n* as a `nextActions` list and has no `fix` at all, so the fix text is dropped\n* silently and the user is told what broke with no word on what to do about\n* it. Nothing about that failure is visible without a test that looks for the\n* fix on the other side, which is why there is one.\n*\n* Everything else on the envelope survives as-is; only remediation changes\n* representation.\n*/\n/**\n* Composer's `fix` is free prose — \"add this overrides block and reinstall\",\n* \"run the build, then retry\" — with no machine-readable command inside it.\n* `user-choice` is the engine's own kind for exactly that (it is what the\n* engine uses for its own config and prompt failures), so the text carries\n* over verbatim as one action rather than being parsed into a command the\n* author never wrote.\n*/\nfunction fixAsNextActions(fix) {\n\treturn fix === void 0 ? [] : [{\n\t\tkind: \"user-choice\",\n\t\tlabel: fix\n\t}];\n}\n/** Translates a composer failure into the engine's error type. Composer-side detail — `meta`, `where`, `docsUrl` — rides along untouched. */\nfunction toEngineError(error) {\n\treturn new CliStructuredError(error.code, error.message, {\n\t\tseverity: error.severity,\n\t\tnextActions: fixAsNextActions(error.fix),\n\t\t...error.why === void 0 ? {} : { why: error.why },\n\t\t...error.where === void 0 ? {} : { where: error.where },\n\t\t...error.meta === void 0 ? {} : { meta: error.meta },\n\t\t...error.docsUrl === void 0 ? {} : { docsUrl: error.docsUrl },\n\t\tcause: error\n\t});\n}\n//#endregion\n//#region src/family/converge.ts\n/** The adapter the operations call, backed by the engine's `ctx.spawn` so the\n* terminal reaches alchemy natively and the engine owns signal policy. */\nfunction convergeSpawn(ctx) {\n\treturn async (invocation) => {\n\t\tconst commandLine = alchemyCommandLine(invocation);\n\t\treturn {\n\t\t\t...await ctx.spawn({\n\t\t\t\tcommand: commandLine.command,\n\t\t\t\targs: commandLine.args,\n\t\t\t\tcwd: commandLine.cwd,\n\t\t\t\tenv: commandLine.env\n\t\t\t}),\n\t\t\tcommandLine\n\t\t};\n\t};\n}\n/** The in-process leg's deps: composer's existing seam, carrying the engine's\n* own client and workspace id rather than anything read from the env. */\nfunction operationDeps(spec) {\n\treturn {\n\t\talchemy: spec.alchemy,\n\t\tcredentials: {\n\t\t\tworkspaceId: spec.workspaceId,\n\t\t\tclient: spec.client\n\t\t}\n\t};\n}\n/**\n* The reproduce hint a failed converge carries. Deliberately absent for an\n* aborted one: the user stopped it, so there is nothing to reproduce.\n*/\nfunction reproduceHint(failure) {\n\tconst diagnostics = executionDiagnostics(failure);\n\tif (diagnostics === void 0) return [];\n\treturn [{\n\t\tkind: \"run-command\",\n\t\tlabel: `Run the converge directly from ${diagnostics.cwd} to reproduce this`,\n\t\tcommand: diagnostics.reproduceCommand,\n\t\treason: `Generated stack file: ${diagnostics.stackFilePath}`\n\t}];\n}\n/**\n* How a FAILED converge settles. `deploy` and `dev` both end this\n* way and must not drift apart, so the decision lives here once rather than\n* inline in each handler.\n*\n* A failure that reached the child exits with the child's status verbatim and\n* carries the reproduce hint; a failure that never reached the child is an\n* ordinary structured error and gets the normal envelope. Nothing here reads\n* `signal` — see settleConverge.\n*/\nfunction settleConvergeFailure(failure, ctx) {\n\tconst child = ctx.lastChild();\n\tif (child !== void 0 && child.exitCode !== 0) return ok(exitWithChildStatus({ nextActions: reproduceHint(failure) }));\n\treturn notOk(toEngineError(failure));\n}\n/**\n* How a converge settles, now that the engine owns the child's status.\n*\n* Nothing here reads `signal`. `exitWithChildStatus` settles from the engine's\n* own record of the child, and a signal-killed one overrules whatever this\n* function asked for: 128 + the signal, no failure envelope, and the reproduce\n* hint dropped, because the user stopped the run and there is nothing to\n* reproduce.\n*\n* What is left is the operation's own verdict. A failure that reached the\n* child exits with the child's status verbatim and carries the reproduce hint;\n* a failure that never reached the child is an ordinary structured error and\n* gets the normal envelope.\n*\n* A SUCCESS presents its result even when the child was signal-killed. No\n* composer operation produces that pair today — each one reports a\n* signal-killed converge as a failure — and an operation that ever did would\n* have a real result worth showing. The run still exits 130, because the\n* engine settles a signal-terminated run from its own record of the signal\n* whatever the handler returns.\n*/\nfunction settleConverge(result, ctx, present) {\n\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\treturn ok(present(result.value));\n}\n//#endregion\n//#region src/family/section.ts\nfunction diagnostic(finding, file) {\n\tconst where = finding.where ?? file;\n\treturn {\n\t\tcode: finding.code,\n\t\tseverity: \"error\",\n\t\tsummary: finding.summary,\n\t\t...finding.why === void 0 ? {} : { why: finding.why },\n\t\tnextActions: [{\n\t\t\tkind: \"edit-file\",\n\t\t\tlabel: finding.fix\n\t\t}],\n\t\t...where === void 0 ? {} : { where: { path: where } },\n\t\t...finding.field === void 0 ? {} : { meta: { field: finding.field } }\n\t};\n}\nfunction refuse(findings, file) {\n\treturn {\n\t\tok: false,\n\t\tdiagnostics: findings.map((finding) => diagnostic(finding, file))\n\t};\n}\nfunction validate(raw, provenance) {\n\tconst file = provenance.files[0];\n\tif (raw === void 0 || file === void 0) return refuse([sectionMissing], void 0);\n\tconst checked = checkComposerConfig(raw, file);\n\tif (!checked.ok) return refuse(checked.findings, file);\n\treturn {\n\t\tok: true,\n\t\tvalue: {\n\t\t\tvalue: checked.value,\n\t\t\tfile\n\t\t},\n\t\tdiagnostics: []\n\t};\n}\nconst composerSection = defineConfigSection({\n\tname: \"composer\",\n\tvalidate,\n\tmerge: (_parent, child) => child\n});\n//#endregion\n//#region src/family/workspace.ts\n/**\n* The workspace the in-process leg acts in, from the engine's credential\n* read. Handlers never decode a token and never read PRISMA_WORKSPACE_ID:\n* whether the credential came from a stored session or the environment, the\n* engine has already resolved it, and branching on where it came from is a\n* defect by the credential-manager design.\n*\n* Undefined when the active credential names no workspace — an environment\n* token whose claims carry none. The container descriptors raise their own\n* \"workspace required\" error in that case, which is the error the user needs.\n*/\nasync function workspaceIdOf(ctx) {\n\treturn (await ctx.activeCredential())?.workspaceId;\n}\n//#endregion\n//#region src/family/commands/deploy.ts\nconst STEP_LABELS = {\n\tprepare: \"load config and app\",\n\tassemble: \"assemble services\",\n\tconnect: \"connect to project and branch\",\n\tpreflight: \"check environment variables\",\n\tapply: \"plan and apply\",\n\trecord: \"record result\"\n};\nfunction stepLabel(step) {\n\treturn step.name === \"assemble-service\" ? `assemble ${step.address}` : STEP_LABELS[step.name];\n}\nfunction stepId(step) {\n\treturn step.name === \"assemble-service\" ? `deploy.assemble.${step.address}` : `deploy.${step.name}`;\n}\n/** `850ms`, `12.3s`, `9m 35s`. */\nfunction formatDuration(ms) {\n\tif (ms < 1e3) return `${String(Math.round(ms))}ms`;\n\tif (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;\n\tconst seconds = Math.round(ms / 1e3);\n\treturn `${String(Math.floor(seconds / 60))}m ${String(seconds % 60)}s`;\n}\n/** The operation's step events as engine events. The engine prints only `step`, so a finished step carries its duration in the text too. */\nfunction toEngineEvent(event) {\n\tconst id = stepId(event.step);\n\tif (event.kind === \"step-started\") return {\n\t\tkind: \"step-started\",\n\t\tstep: stepLabel(event.step),\n\t\tid,\n\t\t...event.step.name === \"assemble-service\" ? { parentId: \"deploy.assemble\" } : {}\n\t};\n\treturn {\n\t\tkind: \"step-finished\",\n\t\tstep: `${stepLabel(event.step)} (${formatDuration(event.durationMs)})`,\n\t\tid,\n\t\toutcome: event.outcome,\n\t\tdata: {\n\t\t\t...event.data,\n\t\t\tdurationMs: event.durationMs\n\t\t}\n\t};\n}\nconst createDeployCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Deploy the application whose root node is <entry>'s default export.\",\n\t\texamples: [\"{bin} deploy module.ts\", \"{bin} deploy module.ts --stage feat-auth\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The file whose default export is the application root module, built with module(...).\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the deploy's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tstage: flag.string({\n\t\t\t\tbrief: \"Deploy scope to target; omit for production.\",\n\t\t\t\tplaceholder: \"stage\"\n\t\t\t}),\n\t\t\treport: flag.string({\n\t\t\t\tbrief: \"Write the deploy's outcome as JSON to this path — resources, preview URLs, and the failure cause. Also settable as PRISMA_COMPOSER_REPORT_FILE.\",\n\t\t\t\tplaceholder: \"path\"\n\t\t\t}),\n\t\t\tbuildId: flag.string({\n\t\t\t\tbrief: \"Join the deploy record your CI already created rather than letting the target create one. Each target also reads its own environment variable for this; the flag wins.\",\n\t\t\t\tplaceholder: \"id\"\n\t\t\t})\n\t\t}\n\t},\n\tneeds: {\n\t\tconfig: composerSection,\n\t\tcredentials: \"child\"\n\t},\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\treturn settleConverge(await operations.deploy({\n\t\t\tentry: args.positionals.entry,\n\t\t\tconfig: ctx.config,\n\t\t\tname: args.flags.name,\n\t\t\tstage: args.flags.stage,\n\t\t\tcwd: ctx.cwd,\n\t\t\treportPath: args.flags.report,\n\t\t\treportId: args.flags.buildId,\n\t\t\tonEvent: (event) => ctx.report(toEngineEvent(event))\n\t\t}, operationDeps({\n\t\t\talchemy,\n\t\t\tworkspaceId: await workspaceIdOf(ctx),\n\t\t\tclient: ctx.api\n\t\t})), ctx, ({ summary, durationMs }) => {\n\t\t\tconst target = `to ${args.flags.stage ?? \"production\"} in ${formatDuration(durationMs)}`;\n\t\t\tfor (const node of summary?.nodes ?? []) for (const entity of node.entities) if (entity.url !== void 0) ctx.report({\n\t\t\t\tkind: \"endpoint\",\n\t\t\t\tname: node.address,\n\t\t\t\turl: entity.url\n\t\t\t});\n\t\t\treturn ctx.present({ data: {\n\t\t\t\tsummary: summary ?? null,\n\t\t\t\tdurationMs\n\t\t\t} }, {\n\t\t\t\thuman: (ui) => summary === void 0 ? [{\n\t\t\t\t\tkind: \"summary\",\n\t\t\t\t\tstatus: \"ok\",\n\t\t\t\t\ttext: `Deployed ${target}.`\n\t\t\t\t}] : [{\n\t\t\t\t\tkind: \"summary\",\n\t\t\t\t\tstatus: \"ok\",\n\t\t\t\t\ttext: `Deployed ${ui.emphasize(summary.app)} ${target}.`\n\t\t\t\t}, {\n\t\t\t\t\tkind: \"table\",\n\t\t\t\t\tcolumns: [\"Address\", \"Deployed\"],\n\t\t\t\t\trows: summary.nodes.map((node) => [node.address, node.entities.map((entity) => `${entity.kind} ${entity.id}`).join(\", \")])\n\t\t\t\t}],\n\t\t\t\tstdout: () => [],\n\t\t\t\tjson: () => ({\n\t\t\t\t\tsummary: summary ?? null,\n\t\t\t\t\tdurationMs\n\t\t\t\t}),\n\t\t\t\tnext: () => []\n\t\t\t});\n\t\t});\n\t}\n});\n//#endregion\n//#region src/family/commands/dev.ts\nconst STOP_STEP = \"Stopping the app's services — emulators and data stay up\";\n/** Resolves when the run is asked to stop. */\nfunction stopRequested(signal) {\n\tif (signal.aborted) return Promise.resolve();\n\treturn new Promise((resolve) => {\n\t\tsignal.addEventListener(\"abort\", () => resolve(), { once: true });\n\t});\n}\n/**\n* One converge at a time. `ctx.spawn` refuses a second live child, and the\n* watch loop can well fire a rebuild while the previous converge is still\n* running — so a request that arrives during a live converge joins the single\n* queued follow-up instead of starting its own. That extends the coalescing\n* the watcher already does across a burst of edits to cover the converge\n* itself, and it is sound because every dev converge is the SAME invocation:\n* one stack file at one fixed path, rewritten in place before each request.\n*/\nfunction coalescedConverge(run) {\n\tlet live;\n\tlet queued;\n\tconst start = (invocation) => {\n\t\tconst outcome = run(invocation);\n\t\tconst settled = outcome.then(() => void 0, () => void 0);\n\t\tlive = settled;\n\t\tsettled.then(() => {\n\t\t\tif (live === settled) live = void 0;\n\t\t});\n\t\treturn outcome;\n\t};\n\treturn (invocation) => {\n\t\tconst running = live;\n\t\tif (running === void 0) return start(invocation);\n\t\tqueued ??= running.then(() => {\n\t\t\tqueued = void 0;\n\t\t\treturn start(invocation);\n\t\t});\n\t\treturn queued;\n\t};\n}\n/** The front door, ordered by address depth (fewest dots first) then lexicographically. */\nfunction frontDoorOrder(endpoints) {\n\treturn [...endpoints].sort((a, b) => {\n\t\tconst depth = a.address.split(\".\").length - b.address.split(\".\").length;\n\t\tif (depth !== 0) return depth;\n\t\treturn a.address < b.address ? -1 : a.address > b.address ? 1 : 0;\n\t});\n}\n/**\n* The operation's events as engine events. The legacy `[dev]` console prefix\n* is gone: these are commentary the engine renders and frames.\n*/\nfunction reportDevEvent(report, lastChild) {\n\tlet stopFailed = false;\n\treturn (event) => {\n\t\tswitch (event.kind) {\n\t\t\tcase \"ready\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"status\",\n\t\t\t\t\tsubject: \"dev\",\n\t\t\t\t\tstatus: \"ready\"\n\t\t\t\t});\n\t\t\t\tfor (const endpoint of frontDoorOrder(event.endpoints)) report({\n\t\t\t\t\tkind: \"endpoint\",\n\t\t\t\t\tname: endpoint.address,\n\t\t\t\t\turl: endpoint.url\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"unwatchable\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.address} has no watchable inputs.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"rebuild-failed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Rebuild failed: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"config-changed\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `${event.file} changed. Restart dev to apply it; rebuilds are paused until then.`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"watch-error\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Watch error: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"converge-failed\": {\n\t\t\t\tconst child = lastChild();\n\t\t\t\tif (child !== void 0 && child.signal !== null) return;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `Converge failed — the running app is untouched; still watching.\nGenerated stack file: ${event.stackFilePath}\\nRun \\`${event.reproduceCommand}\\` from ${event.cwd} to reproduce this directly.`\n\t\t\t\t});\n\t\t\t\treport({\n\t\t\t\t\tkind: \"remediation\",\n\t\t\t\t\taction: {\n\t\t\t\t\t\tkind: \"run-command\",\n\t\t\t\t\t\tlabel: `Run the converge directly from ${event.cwd} to reproduce this`,\n\t\t\t\t\t\tcommand: event.reproduceCommand,\n\t\t\t\t\t\treason: `Generated stack file: ${event.stackFilePath}`\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase \"stopping\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-started\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stop-error\":\n\t\t\t\tstopFailed = true;\n\t\t\t\treport({\n\t\t\t\t\tkind: \"message\",\n\t\t\t\t\tseverity: \"warn\",\n\t\t\t\t\ttext: `A service refused to stop: ${event.message}`\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\tcase \"stopped\":\n\t\t\t\treport({\n\t\t\t\t\tkind: \"step-finished\",\n\t\t\t\t\tstep: STOP_STEP,\n\t\t\t\t\tid: \"dev-stop\",\n\t\t\t\t\toutcome: stopFailed ? \"warning\" : \"ok\"\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t}\n\t};\n}\nconst createDevCommand = (operations) => defineSessionCommand({\n\thelp: {\n\t\tsummary: \"Bring up the application whose root node is <entry>'s default export, entirely on this machine.\",\n\t\tdescription: \"Runs credential-free and watches the app for changes, reconverging on every edit.\",\n\t\texamples: [\"{bin} dev module.ts\", \"{bin} dev module.ts --fresh\"]\n\t},\n\targs: {\n\t\tpositionals: { entry: positional.string({\n\t\t\tbrief: \"The file whose default export is the application root module, built with module(...).\",\n\t\t\tplaceholder: \"entry\"\n\t\t}) },\n\t\tflags: {\n\t\t\tname: flag.string({\n\t\t\t\tbrief: \"Override the root node's name — the dev instance's application name.\",\n\t\t\t\tplaceholder: \"name\"\n\t\t\t}),\n\t\t\tfresh: flag.boolean({ brief: \"Destroy the dev stack and wipe the dev state directory before starting.\" })\n\t\t}\n\t},\n\tneeds: { config: composerSection },\n\tmaySpawn: true,\n\thandler: async (args, ctx) => {\n\t\tconst alchemy = convergeSpawn(ctx);\n\t\tconst result = await operations.dev({\n\t\t\tentry: args.positionals.entry,\n\t\t\tconfig: ctx.config,\n\t\t\tname: args.flags.name,\n\t\t\tfresh: args.flags.fresh,\n\t\t\tcwd: ctx.cwd,\n\t\t\tonEvent: reportDevEvent(ctx.report, ctx.lastChild)\n\t\t}, { alchemy: coalescedConverge(alchemy) });\n\t\tif (!result.ok) return settleConvergeFailure(result.failure, ctx);\n\t\tawait stopRequested(ctx.signal);\n\t\tawait result.value.stop();\n\t\treturn ok(void 0);\n\t}\n});\n//#endregion\n//#region src/family/family.ts\n/**\n* Composer's `CommandFamily`: the unit the `prisma` bin mounts.\n*\n* This module and everything it reaches statically must stay free of alchemy\n* and of effect VALUE imports: the `prisma` bin imports the family directly,\n* so anything in this static graph loads on `prisma --version`. The mechanism\n* that holds it is the existing lazy boundary inside the operation modules —\n* `operations/deploy.ts` and `dev.ts` each `await import()` their executor,\n* and it is the executors that reach the provider tree. Importing the operations here is therefore free; importing an\n* executor, or flattening one of those dynamic imports, is not.\n* scripts/check-family-static-graph.mjs enforces this against BUILT output,\n* where type-only imports have already been erased.\n*\n* The commands close over the operations they are given, so a host can\n* mount this family against the test double and exercise real grammar, real\n* arg validation and real handlers with no alchemy behind them.\n*\n* The family ships `deploy` and `dev` only. `destroy` and `log` are\n* programmatic operations in `@prisma/composer/control`, not commands.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdev: devWithDeps\n};\n/** The `prisma` CLI's error reference; the engine appends `/<CODE>` to it for every error envelope. */\nconst CLI_DOCS_BASE = \"https://www.prisma.io/docs/cli/error-reference/\";\nfunction createComposerFamily(options = {}) {\n\tconst operations = options.operations ?? realOperations;\n\treturn defineCommandFamily({\n\t\tconfigSection: composerSection,\n\t\tcommands: {\n\t\t\tdeploy: createDeployCommand(operations),\n\t\t\tdev: createDevCommand(operations)\n\t\t},\n\t\tdocsBaseUrl: CLI_DOCS_BASE\n\t});\n}\n//#endregion\nexport { composerSection, createComposerFamily, realOperations, toEngineError };\n\n//# sourceMappingURL=family.mjs.map"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { r as noComposerExportMessage } from "./composer-config-CY9fET8H-5-aHaW5A.mjs";
1
+ import { r as noComposerExportMessage } from "./composer-config-CY9fET8H-CgnpfWc2.mjs";
2
2
  import * as fs from "node:fs";
3
3
  import * as path from "node:path";
4
4
  //#region ../../0-framework/3-tooling/cli/dist/generate-dev-stack-DSBhURJV.mjs
@@ -84,4 +84,4 @@ const DEV_STACK_RELATIVE_PATH = path.join(DEV_GENERATED_DIR, DEV_GENERATED_FILE)
84
84
  //#endregion
85
85
  export { renderDevStackFile as n, writeDevStackFile as r, DEV_STACK_RELATIVE_PATH as t };
86
86
 
87
- //# sourceMappingURL=generate-dev-stack-DSBhURJV-CuJs4-ZW.mjs.map
87
+ //# sourceMappingURL=generate-dev-stack-DSBhURJV-Gv1jakWP.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-dev-stack-DSBhURJV-CuJs4-ZW.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/generate-dev-stack-DSBhURJV.mjs"],"sourcesContent":["import { r as noComposerExportMessage } from \"./composer-config-CY9fET8H.mjs\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n//#region src/dev/generate-dev-stack.ts\n/**\n* Local-dev spec § 6 `generate-dev-stack.ts`: like generate-stack.ts but at\n* `.prisma-composer/dev/alchemy.run.ts`, always Alchemy stage `dev`, using\n* Composer's `devState()` (Alchemy's file store) and no `report` — dev prints its own front\n* door (run-dev.ts), so core's presentation-free lower() gets nothing to\n* call back into. The generated module IS the one orchestration point where\n* dev provenance is resolved (spec § 3 REVISED): it deserializes the\n* containers, top-level-awaits `resolveLocalTargets(config)` (the lazy\n* `localTarget` thunks, ADR-0041), and passes\n* `providers: localTargetProviders(...)` + `state: devState()` explicitly\n* — `lower()` learns nothing about dev.\n*/\nconst DEV_GENERATED_DIR = \".prisma-composer/dev\";\nconst DEV_GENERATED_FILE = \"alchemy.run.ts\";\n/** A relative import specifier from `.prisma-composer/dev/alchemy.run.ts` to `target` (posix separators). */\nfunction relativeImportSpecifier(generatedDir, target) {\n\tconst rel = path.relative(generatedDir, target).split(path.sep).join(\"/\");\n\treturn rel.startsWith(\".\") ? rel : `./${rel}`;\n}\nfunction quote(value) {\n\treturn JSON.stringify(value);\n}\nfunction renderBundle(bundle) {\n\treturn `{ dir: ${quote(bundle.dir)}, entry: ${quote(bundle.entry)} }`;\n}\nfunction renderOptions(input) {\n\tconst lines = [];\n\tlines.push(` name: ${quote(input.name)},`);\n\tlines.push(\" bundles: {\");\n\tfor (const [id, bundle] of Object.entries(input.assembled.bundles)) lines.push(` ${quote(id)}: ${renderBundle(bundle)},`);\n\tlines.push(\" },\");\n\tlines.push(\" providers: localTargetProviders(resolved, containers, devDir),\");\n\tlines.push(\" state: devState(),\");\n\treturn lines.join(\"\\n\");\n}\n/** Renders the dev stack module's source (tests assert on it without touching disk). */\nfunction renderDevStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, DEV_GENERATED_DIR);\n\tconst appImport = relativeImportSpecifier(generatedDir, input.entryPath);\n\tconst imports = [\n\t\t\"import * as path from 'node:path';\",\n\t\t\"import { deserializeContainers } from '@prisma/composer/config';\",\n\t\t\"import { lower } from '@prisma/composer/deploy';\",\n\t\t\"import { DEV_DIR, devState, localTargetProviders, resolveLocalTargets } from '@prisma/composer/local-target';\",\n\t\t`import prismaConfig from ${quote(relativeImportSpecifier(generatedDir, input.configFile))};`,\n\t\t`import app from ${quote(appImport)};`\n\t].join(\"\\n\");\n\treturn `// Generated by \\`prisma dev\\` — overwritten on every run; do not\n// edit by hand. Independently runnable from ${quote(input.cwd)} by the\n// command Composer starts, which a failed run prints:\n//\n// <node> <bin of the alchemy @prisma/composer depends on> deploy ${DEV_GENERATED_DIR}/${DEV_GENERATED_FILE} --yes --stage dev\n//\n// bisects a CLI bug from an Alchemy bug (deploy-cli.md § Implementation decisions).\n${imports}\n\nconst config = prismaConfig.composer;\nif (config === undefined) {\n throw new Error(${quote(noComposerExportMessage(input.configFile))});\n}\n\nconst containers = deserializeContainers(config.extensions, process.env);\nconst resolved = await resolveLocalTargets(config);\nconst devDir = path.join(process.cwd(), DEV_DIR);\n\nexport default lower(app, config, {\n${renderOptions(input)}\n});\n`;\n}\n/** Writes the dev stack file, returning its absolute path. */\nfunction writeDevStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, DEV_GENERATED_DIR);\n\tfs.mkdirSync(generatedDir, { recursive: true });\n\tconst filePath = path.join(generatedDir, DEV_GENERATED_FILE);\n\tfs.writeFileSync(filePath, renderDevStackFile(input));\n\treturn filePath;\n}\nconst DEV_STACK_RELATIVE_PATH = path.join(DEV_GENERATED_DIR, DEV_GENERATED_FILE);\n//#endregion\nexport { renderDevStackFile as n, writeDevStackFile as r, DEV_STACK_RELATIVE_PATH as t };\n\n//# sourceMappingURL=generate-dev-stack-DSBhURJV.mjs.map"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;;AAE3B,SAAS,wBAAwB,cAAc,QAAQ;CACtD,MAAM,MAAM,KAAK,SAAS,cAAc,MAAM,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;CACxE,OAAO,IAAI,WAAW,GAAG,IAAI,MAAM,KAAK;AACzC;AACA,SAAS,MAAM,OAAO;CACrB,OAAO,KAAK,UAAU,KAAK;AAC5B;AACA,SAAS,aAAa,QAAQ;CAC7B,OAAO,UAAU,MAAM,OAAO,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,EAAE;AACnE;AACA,SAAS,cAAc,OAAO;CAC7B,MAAM,QAAQ,CAAC;CACf,MAAM,KAAK,WAAW,MAAM,MAAM,IAAI,EAAE,EAAE;CAC1C,MAAM,KAAK,cAAc;CACzB,KAAK,MAAM,CAAC,IAAI,WAAW,OAAO,QAAQ,MAAM,UAAU,OAAO,GAAG,MAAM,KAAK,OAAO,MAAM,EAAE,EAAE,IAAI,aAAa,MAAM,EAAE,EAAE;CAC3H,MAAM,KAAK,MAAM;CACjB,MAAM,KAAK,kEAAkE;CAC7E,MAAM,KAAK,sBAAsB;CACjC,OAAO,MAAM,KAAK,IAAI;AACvB;;AAEA,SAAS,mBAAmB,OAAO;CAClC,MAAM,eAAe,KAAK,KAAK,MAAM,KAAK,iBAAiB;CAC3D,MAAM,YAAY,wBAAwB,cAAc,MAAM,SAAS;CACvE,MAAM,UAAU;EACf;EACA;EACA;EACA;EACA,4BAA4B,MAAM,wBAAwB,cAAc,MAAM,UAAU,CAAC,EAAE;EAC3F,mBAAmB,MAAM,SAAS,EAAE;CACrC,CAAC,CAAC,KAAK,IAAI;CACX,OAAO;+CACuC,MAAM,MAAM,GAAG,EAAE;;;sEAGM,kBAAkB,GAAG,mBAAmB;;;EAG5G,QAAQ;;;;oBAIU,MAAM,wBAAwB,MAAM,UAAU,CAAC,EAAE;;;;;;;;EAQnE,cAAc,KAAK,EAAE;;;AAGvB;;AAEA,SAAS,kBAAkB,OAAO;CACjC,MAAM,eAAe,KAAK,KAAK,MAAM,KAAK,iBAAiB;CAC3D,GAAG,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;CAC9C,MAAM,WAAW,KAAK,KAAK,cAAc,kBAAkB;CAC3D,GAAG,cAAc,UAAU,mBAAmB,KAAK,CAAC;CACpD,OAAO;AACR;AACA,MAAM,0BAA0B,KAAK,KAAK,mBAAmB,kBAAkB"}
1
+ {"version":3,"file":"generate-dev-stack-DSBhURJV-Gv1jakWP.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/generate-dev-stack-DSBhURJV.mjs"],"sourcesContent":["import { r as noComposerExportMessage } from \"./composer-config-CY9fET8H.mjs\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n//#region src/dev/generate-dev-stack.ts\n/**\n* Local-dev spec § 6 `generate-dev-stack.ts`: like generate-stack.ts but at\n* `.prisma-composer/dev/alchemy.run.ts`, always Alchemy stage `dev`, using\n* Composer's `devState()` (Alchemy's file store) and no `report` — dev prints its own front\n* door (run-dev.ts), so core's presentation-free lower() gets nothing to\n* call back into. The generated module IS the one orchestration point where\n* dev provenance is resolved (spec § 3 REVISED): it deserializes the\n* containers, top-level-awaits `resolveLocalTargets(config)` (the lazy\n* `localTarget` thunks, ADR-0041), and passes\n* `providers: localTargetProviders(...)` + `state: devState()` explicitly\n* — `lower()` learns nothing about dev.\n*/\nconst DEV_GENERATED_DIR = \".prisma-composer/dev\";\nconst DEV_GENERATED_FILE = \"alchemy.run.ts\";\n/** A relative import specifier from `.prisma-composer/dev/alchemy.run.ts` to `target` (posix separators). */\nfunction relativeImportSpecifier(generatedDir, target) {\n\tconst rel = path.relative(generatedDir, target).split(path.sep).join(\"/\");\n\treturn rel.startsWith(\".\") ? rel : `./${rel}`;\n}\nfunction quote(value) {\n\treturn JSON.stringify(value);\n}\nfunction renderBundle(bundle) {\n\treturn `{ dir: ${quote(bundle.dir)}, entry: ${quote(bundle.entry)} }`;\n}\nfunction renderOptions(input) {\n\tconst lines = [];\n\tlines.push(` name: ${quote(input.name)},`);\n\tlines.push(\" bundles: {\");\n\tfor (const [id, bundle] of Object.entries(input.assembled.bundles)) lines.push(` ${quote(id)}: ${renderBundle(bundle)},`);\n\tlines.push(\" },\");\n\tlines.push(\" providers: localTargetProviders(resolved, containers, devDir),\");\n\tlines.push(\" state: devState(),\");\n\treturn lines.join(\"\\n\");\n}\n/** Renders the dev stack module's source (tests assert on it without touching disk). */\nfunction renderDevStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, DEV_GENERATED_DIR);\n\tconst appImport = relativeImportSpecifier(generatedDir, input.entryPath);\n\tconst imports = [\n\t\t\"import * as path from 'node:path';\",\n\t\t\"import { deserializeContainers } from '@prisma/composer/config';\",\n\t\t\"import { lower } from '@prisma/composer/deploy';\",\n\t\t\"import { DEV_DIR, devState, localTargetProviders, resolveLocalTargets } from '@prisma/composer/local-target';\",\n\t\t`import prismaConfig from ${quote(relativeImportSpecifier(generatedDir, input.configFile))};`,\n\t\t`import app from ${quote(appImport)};`\n\t].join(\"\\n\");\n\treturn `// Generated by \\`prisma dev\\` — overwritten on every run; do not\n// edit by hand. Independently runnable from ${quote(input.cwd)} by the\n// command Composer starts, which a failed run prints:\n//\n// <node> <bin of the alchemy @prisma/composer depends on> deploy ${DEV_GENERATED_DIR}/${DEV_GENERATED_FILE} --yes --stage dev\n//\n// bisects a CLI bug from an Alchemy bug (deploy-cli.md § Implementation decisions).\n${imports}\n\nconst config = prismaConfig.composer;\nif (config === undefined) {\n throw new Error(${quote(noComposerExportMessage(input.configFile))});\n}\n\nconst containers = deserializeContainers(config.extensions, process.env);\nconst resolved = await resolveLocalTargets(config);\nconst devDir = path.join(process.cwd(), DEV_DIR);\n\nexport default lower(app, config, {\n${renderOptions(input)}\n});\n`;\n}\n/** Writes the dev stack file, returning its absolute path. */\nfunction writeDevStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, DEV_GENERATED_DIR);\n\tfs.mkdirSync(generatedDir, { recursive: true });\n\tconst filePath = path.join(generatedDir, DEV_GENERATED_FILE);\n\tfs.writeFileSync(filePath, renderDevStackFile(input));\n\treturn filePath;\n}\nconst DEV_STACK_RELATIVE_PATH = path.join(DEV_GENERATED_DIR, DEV_GENERATED_FILE);\n//#endregion\nexport { renderDevStackFile as n, writeDevStackFile as r, DEV_STACK_RELATIVE_PATH as t };\n\n//# sourceMappingURL=generate-dev-stack-DSBhURJV.mjs.map"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,oBAAoB;AAC1B,MAAM,qBAAqB;;AAE3B,SAAS,wBAAwB,cAAc,QAAQ;CACtD,MAAM,MAAM,KAAK,SAAS,cAAc,MAAM,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG;CACxE,OAAO,IAAI,WAAW,GAAG,IAAI,MAAM,KAAK;AACzC;AACA,SAAS,MAAM,OAAO;CACrB,OAAO,KAAK,UAAU,KAAK;AAC5B;AACA,SAAS,aAAa,QAAQ;CAC7B,OAAO,UAAU,MAAM,OAAO,GAAG,EAAE,WAAW,MAAM,OAAO,KAAK,EAAE;AACnE;AACA,SAAS,cAAc,OAAO;CAC7B,MAAM,QAAQ,CAAC;CACf,MAAM,KAAK,WAAW,MAAM,MAAM,IAAI,EAAE,EAAE;CAC1C,MAAM,KAAK,cAAc;CACzB,KAAK,MAAM,CAAC,IAAI,WAAW,OAAO,QAAQ,MAAM,UAAU,OAAO,GAAG,MAAM,KAAK,OAAO,MAAM,EAAE,EAAE,IAAI,aAAa,MAAM,EAAE,EAAE;CAC3H,MAAM,KAAK,MAAM;CACjB,MAAM,KAAK,kEAAkE;CAC7E,MAAM,KAAK,sBAAsB;CACjC,OAAO,MAAM,KAAK,IAAI;AACvB;;AAEA,SAAS,mBAAmB,OAAO;CAClC,MAAM,eAAe,KAAK,KAAK,MAAM,KAAK,iBAAiB;CAC3D,MAAM,YAAY,wBAAwB,cAAc,MAAM,SAAS;CACvE,MAAM,UAAU;EACf;EACA;EACA;EACA;EACA,4BAA4B,MAAM,wBAAwB,cAAc,MAAM,UAAU,CAAC,EAAE;EAC3F,mBAAmB,MAAM,SAAS,EAAE;CACrC,CAAC,CAAC,KAAK,IAAI;CACX,OAAO;+CACuC,MAAM,MAAM,GAAG,EAAE;;;sEAGM,kBAAkB,GAAG,mBAAmB;;;EAG5G,QAAQ;;;;oBAIU,MAAM,wBAAwB,MAAM,UAAU,CAAC,EAAE;;;;;;;;EAQnE,cAAc,KAAK,EAAE;;;AAGvB;;AAEA,SAAS,kBAAkB,OAAO;CACjC,MAAM,eAAe,KAAK,KAAK,MAAM,KAAK,iBAAiB;CAC3D,GAAG,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;CAC9C,MAAM,WAAW,KAAK,KAAK,cAAc,kBAAkB;CAC3D,GAAG,cAAc,UAAU,mBAAmB,KAAK,CAAC;CACpD,OAAO;AACR;AACA,MAAM,0BAA0B,KAAK,KAAK,mBAAmB,kBAAkB"}
@@ -1,4 +1,4 @@
1
- import { c as DeploySuccess, d as OperationDeps, f as ServiceEndpoint, h as CliStructuredError, l as DevInput, m as Result, o as DeployEvent, p as AssembledServices, s as DeployInput, t as ComposerOperations, u as DevSession } from "./family-Dt7BgpVf-BBU5ZToI.mjs";
1
+ import { c as DeploySuccess, d as OperationDeps, f as ServiceEndpoint, h as CliStructuredError, l as DevInput, m as Result, o as DeployEvent, p as AssembledServices, s as DeployInput, t as ComposerOperations, u as DevSession } from "./family-Dt7BgpVf-YyjGLli3.mjs";
2
2
  //#region ../../0-framework/3-tooling/cli/dist/testing.d.mts
3
3
  //#region src/dev/generate-dev-stack.d.ts
4
4
  interface DevStackFileInput {
package/dist/testing.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { d as ok, l as CliStructuredError, s as reproduceCommand, u as notOk } from "./composer-config-CY9fET8H-5-aHaW5A.mjs";
2
- import { n as renderDevStackFile } from "./generate-dev-stack-DSBhURJV-CuJs4-ZW.mjs";
1
+ import { d as ok, l as CliStructuredError, s as reproduceCommand, u as notOk } from "./composer-config-CY9fET8H-CgnpfWc2.mjs";
2
+ import { n as renderDevStackFile } from "./generate-dev-stack-DSBhURJV-Gv1jakWP.mjs";
3
3
  //#region ../../0-framework/3-tooling/cli/dist/testing.mjs
4
4
  /**
5
5
  * The published operations double (`@prisma/composer-cli/testing`): the two
@@ -1 +1 @@
1
- {"version":3,"file":"testing.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/testing.mjs"],"sourcesContent":["import { r as reproduceCommand } from \"./run-alchemy-CTw3BXKq.mjs\";\nimport { n as renderDevStackFile } from \"./generate-dev-stack-DSBhURJV.mjs\";\nimport { notOk, ok } from \"@internal/foundation/result\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\n//#region src/testing/operations-double.ts\n/**\n* The published operations double (`@prisma/composer-cli/testing`): the two\n* operations the command family calls, `deploy` and `dev`, with their real\n* signatures and Result shapes, backed by fixtures instead of alchemy,\n* containers, or a network. It does not cover `destroy` and `log`, which no\n* command calls.\n*\n* Hosts that mount composer's command family — prisma-cli above all — test\n* against this instead of the real operations, so their suites never spawn a\n* converge and their typecheck never needs the alchemy/effect constellation.\n* The conformance guarantee is carried by the types: `ComposerOperations` is\n* defined as `typeof deployWithDeps` (etc.) of the REAL operations, and the\n* double is declared against it, so a drift in any real signature fails\n* `tsc --noEmit` right here. Every import of implementation modules is\n* type-only and erases at build — the built `testing` chunk must contain no path to the real\n* control implementation, which scripts/check-family-static-graph.mjs proves\n* against the packed tarball.\n*/\nfunction devSessionDouble(input, endpoints) {\n\tlet resolveClosed;\n\tconst closed = new Promise((resolve) => {\n\t\tresolveClosed = resolve;\n\t});\n\tlet stopped = false;\n\tinput.onEvent?.({\n\t\tkind: \"ready\",\n\t\tendpoints\n\t});\n\treturn {\n\t\tendpoints,\n\t\tclosed,\n\t\tstop: async () => {\n\t\t\tif (stopped) return;\n\t\t\tstopped = true;\n\t\t\tinput.onEvent?.({ kind: \"stopping\" });\n\t\t\tinput.onEvent?.({ kind: \"stopped\" });\n\t\t\tresolveClosed();\n\t\t}\n\t};\n}\n/**\n* Runs the caller's converge adapter, when it supplied one, against a\n* synthetic invocation — no alchemy bin is resolved and no real child is\n* started; the adapter decides what the child does.\n*\n* This is what makes a host's tests cover the settlement rules rather than\n* just the grammar: a scripted fake child that exits non-zero, or is killed\n* by a signal, produces the same failure shape the real executor produces, so\n* the handler's settlement — and the engine's own child-status settlement\n* behind it — is genuinely exercised. Returns undefined when no adapter was\n* injected, leaving the fixture result untouched.\n*/\nasync function runConverge(deps, cwd) {\n\tif (deps.alchemy === void 0) return void 0;\n\tconst stackFilePath = \".prisma-composer/alchemy.run.ts\";\n\tconst workingDirectory = cwd ?? \".\";\n\tconst invocation = {\n\t\taction: \"deploy\",\n\t\tstackFileRelativePath: stackFilePath,\n\t\tcwd: workingDirectory,\n\t\tstage: \"test\",\n\t\tenv: {}\n\t};\n\tconst outcome = await deps.alchemy(invocation);\n\tconst reproduce = reproduceCommand(invocation, outcome);\n\tif (outcome.signal !== null) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy deploy was interrupted by ${outcome.signal}.`, { meta: {\n\t\tsignal: outcome.signal,\n\t\tdiagnostics: {\n\t\t\texitCode: void 0,\n\t\t\tsignal: outcome.signal,\n\t\t\tstackFilePath,\n\t\t\treproduceCommand: reproduce,\n\t\t\tcwd: workingDirectory\n\t\t}\n\t} }));\n\tconst status = outcome.exitCode ?? 1;\n\tif (status === 0) return void 0;\n\treturn notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy deploy exited with status ${status}.`, { meta: {\n\t\texitCode: status,\n\t\tdiagnostics: {\n\t\t\texitCode: status,\n\t\t\tstackFilePath,\n\t\t\treproduceCommand: reproduce,\n\t\t\tcwd: workingDirectory\n\t\t}\n\t} }));\n}\nfunction createOperationsDouble(fixtures = {}) {\n\tconst deployCalls = [];\n\tconst devCalls = [];\n\tconst deps = {\n\t\tdeploy: [],\n\t\tdev: []\n\t};\n\tconst calls = {\n\t\tdeploy: deployCalls,\n\t\tdev: devCalls,\n\t\tdeps\n\t};\n\treturn {\n\t\toperations: {\n\t\t\tdeploy: async (input, operationDeps) => {\n\t\t\t\tcalls.deploy.push(input);\n\t\t\t\tdeps.deploy.push(operationDeps);\n\t\t\t\tfor (const event of fixtures.deployEvents ?? []) try {\n\t\t\t\t\tinput.onEvent?.(event);\n\t\t\t\t} catch {}\n\t\t\t\tconst converge = await runConverge(operationDeps, input.cwd);\n\t\t\t\tif (converge !== void 0) return converge;\n\t\t\t\treturn fixtures.deploy ?? ok({\n\t\t\t\t\tsummary: void 0,\n\t\t\t\t\tdurationMs: 0\n\t\t\t\t});\n\t\t\t},\n\t\t\tdev: async (input, operationDeps) => {\n\t\t\t\tcalls.dev.push(input);\n\t\t\t\tdeps.dev.push(operationDeps);\n\t\t\t\treturn fixtures.dev ?? ok(devSessionDouble(input, fixtures.devEndpoints ?? []));\n\t\t\t}\n\t\t},\n\t\tcalls\n\t};\n}\n//#endregion\nexport { createOperationsDouble, renderDevStackFile };\n\n//# sourceMappingURL=testing.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,SAAS,iBAAiB,OAAO,WAAW;CAC3C,IAAI;CACJ,MAAM,SAAS,IAAI,SAAS,YAAY;EACvC,gBAAgB;CACjB,CAAC;CACD,IAAI,UAAU;CACd,MAAM,UAAU;EACf,MAAM;EACN;CACD,CAAC;CACD,OAAO;EACN;EACA;EACA,MAAM,YAAY;GACjB,IAAI,SAAS;GACb,UAAU;GACV,MAAM,UAAU,EAAE,MAAM,WAAW,CAAC;GACpC,MAAM,UAAU,EAAE,MAAM,UAAU,CAAC;GACnC,cAAc;EACf;CACD;AACD;;;;;;;;;;;;;AAaA,eAAe,YAAY,MAAM,KAAK;CACrC,IAAI,KAAK,YAAY,KAAK,GAAG,OAAO,KAAK;CACzC,MAAM,gBAAgB;CACtB,MAAM,mBAAmB,OAAO;CAChC,MAAM,aAAa;EAClB,QAAQ;EACR,uBAAuB;EACvB,KAAK;EACL,OAAO;EACP,KAAK,CAAC;CACP;CACA,MAAM,UAAU,MAAM,KAAK,QAAQ,UAAU;CAC7C,MAAM,YAAY,iBAAiB,YAAY,OAAO;CACtD,IAAI,QAAQ,WAAW,MAAM,OAAO,MAAM,IAAI,mBAAmB,wBAAwB,qCAAqC,QAAQ,OAAO,IAAI,EAAE,MAAM;EACxJ,QAAQ,QAAQ;EAChB,aAAa;GACZ,UAAU,KAAK;GACf,QAAQ,QAAQ;GAChB;GACA,kBAAkB;GAClB,KAAK;EACN;CACD,EAAE,CAAC,CAAC;CACJ,MAAM,SAAS,QAAQ,YAAY;CACnC,IAAI,WAAW,GAAG,OAAO,KAAK;CAC9B,OAAO,MAAM,IAAI,mBAAmB,wBAAwB,qCAAqC,OAAO,IAAI,EAAE,MAAM;EACnH,UAAU;EACV,aAAa;GACZ,UAAU;GACV;GACA,kBAAkB;GAClB,KAAK;EACN;CACD,EAAE,CAAC,CAAC;AACL;AACA,SAAS,uBAAuB,WAAW,CAAC,GAAG;CAC9C,MAAM,cAAc,CAAC;CACrB,MAAM,WAAW,CAAC;CAClB,MAAM,OAAO;EACZ,QAAQ,CAAC;EACT,KAAK,CAAC;CACP;CACA,MAAM,QAAQ;EACb,QAAQ;EACR,KAAK;EACL;CACD;CACA,OAAO;EACN,YAAY;GACX,QAAQ,OAAO,OAAO,kBAAkB;IACvC,MAAM,OAAO,KAAK,KAAK;IACvB,KAAK,OAAO,KAAK,aAAa;IAC9B,KAAK,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,IAAI;KACpD,MAAM,UAAU,KAAK;IACtB,QAAQ,CAAC;IACT,MAAM,WAAW,MAAM,YAAY,eAAe,MAAM,GAAG;IAC3D,IAAI,aAAa,KAAK,GAAG,OAAO;IAChC,OAAO,SAAS,UAAU,GAAG;KAC5B,SAAS,KAAK;KACd,YAAY;IACb,CAAC;GACF;GACA,KAAK,OAAO,OAAO,kBAAkB;IACpC,MAAM,IAAI,KAAK,KAAK;IACpB,KAAK,IAAI,KAAK,aAAa;IAC3B,OAAO,SAAS,OAAO,GAAG,iBAAiB,OAAO,SAAS,gBAAgB,CAAC,CAAC,CAAC;GAC/E;EACD;EACA;CACD;AACD"}
1
+ {"version":3,"file":"testing.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/testing.mjs"],"sourcesContent":["import { r as reproduceCommand } from \"./run-alchemy-BqHpStQn.mjs\";\nimport { n as renderDevStackFile } from \"./generate-dev-stack-DSBhURJV.mjs\";\nimport { notOk, ok } from \"@internal/foundation/result\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\n//#region src/testing/operations-double.ts\n/**\n* The published operations double (`@prisma/composer-cli/testing`): the two\n* operations the command family calls, `deploy` and `dev`, with their real\n* signatures and Result shapes, backed by fixtures instead of alchemy,\n* containers, or a network. It does not cover `destroy` and `log`, which no\n* command calls.\n*\n* Hosts that mount composer's command family — prisma-cli above all — test\n* against this instead of the real operations, so their suites never spawn a\n* converge and their typecheck never needs the alchemy/effect constellation.\n* The conformance guarantee is carried by the types: `ComposerOperations` is\n* defined as `typeof deployWithDeps` (etc.) of the REAL operations, and the\n* double is declared against it, so a drift in any real signature fails\n* `tsc --noEmit` right here. Every import of implementation modules is\n* type-only and erases at build — the built `testing` chunk must contain no path to the real\n* control implementation, which scripts/check-family-static-graph.mjs proves\n* against the packed tarball.\n*/\nfunction devSessionDouble(input, endpoints) {\n\tlet resolveClosed;\n\tconst closed = new Promise((resolve) => {\n\t\tresolveClosed = resolve;\n\t});\n\tlet stopped = false;\n\tinput.onEvent?.({\n\t\tkind: \"ready\",\n\t\tendpoints\n\t});\n\treturn {\n\t\tendpoints,\n\t\tclosed,\n\t\tstop: async () => {\n\t\t\tif (stopped) return;\n\t\t\tstopped = true;\n\t\t\tinput.onEvent?.({ kind: \"stopping\" });\n\t\t\tinput.onEvent?.({ kind: \"stopped\" });\n\t\t\tresolveClosed();\n\t\t}\n\t};\n}\n/**\n* Runs the caller's converge adapter, when it supplied one, against a\n* synthetic invocation — no alchemy bin is resolved and no real child is\n* started; the adapter decides what the child does.\n*\n* This is what makes a host's tests cover the settlement rules rather than\n* just the grammar: a scripted fake child that exits non-zero, or is killed\n* by a signal, produces the same failure shape the real executor produces, so\n* the handler's settlement — and the engine's own child-status settlement\n* behind it — is genuinely exercised. Returns undefined when no adapter was\n* injected, leaving the fixture result untouched.\n*/\nasync function runConverge(deps, cwd) {\n\tif (deps.alchemy === void 0) return void 0;\n\tconst stackFilePath = \".prisma-composer/alchemy.run.ts\";\n\tconst workingDirectory = cwd ?? \".\";\n\tconst invocation = {\n\t\taction: \"deploy\",\n\t\tstackFileRelativePath: stackFilePath,\n\t\tcwd: workingDirectory,\n\t\tstage: \"test\",\n\t\tenv: {}\n\t};\n\tconst outcome = await deps.alchemy(invocation);\n\tconst reproduce = reproduceCommand(invocation, outcome);\n\tif (outcome.signal !== null) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy deploy was interrupted by ${outcome.signal}.`, { meta: {\n\t\tsignal: outcome.signal,\n\t\tdiagnostics: {\n\t\t\texitCode: void 0,\n\t\t\tsignal: outcome.signal,\n\t\t\tstackFilePath,\n\t\t\treproduceCommand: reproduce,\n\t\t\tcwd: workingDirectory\n\t\t}\n\t} }));\n\tconst status = outcome.exitCode ?? 1;\n\tif (status === 0) return void 0;\n\treturn notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy deploy exited with status ${status}.`, { meta: {\n\t\texitCode: status,\n\t\tdiagnostics: {\n\t\t\texitCode: status,\n\t\t\tstackFilePath,\n\t\t\treproduceCommand: reproduce,\n\t\t\tcwd: workingDirectory\n\t\t}\n\t} }));\n}\nfunction createOperationsDouble(fixtures = {}) {\n\tconst deployCalls = [];\n\tconst devCalls = [];\n\tconst deps = {\n\t\tdeploy: [],\n\t\tdev: []\n\t};\n\tconst calls = {\n\t\tdeploy: deployCalls,\n\t\tdev: devCalls,\n\t\tdeps\n\t};\n\treturn {\n\t\toperations: {\n\t\t\tdeploy: async (input, operationDeps) => {\n\t\t\t\tcalls.deploy.push(input);\n\t\t\t\tdeps.deploy.push(operationDeps);\n\t\t\t\tfor (const event of fixtures.deployEvents ?? []) try {\n\t\t\t\t\tinput.onEvent?.(event);\n\t\t\t\t} catch {}\n\t\t\t\tconst converge = await runConverge(operationDeps, input.cwd);\n\t\t\t\tif (converge !== void 0) return converge;\n\t\t\t\treturn fixtures.deploy ?? ok({\n\t\t\t\t\tsummary: void 0,\n\t\t\t\t\tdurationMs: 0\n\t\t\t\t});\n\t\t\t},\n\t\t\tdev: async (input, operationDeps) => {\n\t\t\t\tcalls.dev.push(input);\n\t\t\t\tdeps.dev.push(operationDeps);\n\t\t\t\treturn fixtures.dev ?? ok(devSessionDouble(input, fixtures.devEndpoints ?? []));\n\t\t\t}\n\t\t},\n\t\tcalls\n\t};\n}\n//#endregion\nexport { createOperationsDouble, renderDevStackFile };\n\n//# sourceMappingURL=testing.mjs.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAuBA,SAAS,iBAAiB,OAAO,WAAW;CAC3C,IAAI;CACJ,MAAM,SAAS,IAAI,SAAS,YAAY;EACvC,gBAAgB;CACjB,CAAC;CACD,IAAI,UAAU;CACd,MAAM,UAAU;EACf,MAAM;EACN;CACD,CAAC;CACD,OAAO;EACN;EACA;EACA,MAAM,YAAY;GACjB,IAAI,SAAS;GACb,UAAU;GACV,MAAM,UAAU,EAAE,MAAM,WAAW,CAAC;GACpC,MAAM,UAAU,EAAE,MAAM,UAAU,CAAC;GACnC,cAAc;EACf;CACD;AACD;;;;;;;;;;;;;AAaA,eAAe,YAAY,MAAM,KAAK;CACrC,IAAI,KAAK,YAAY,KAAK,GAAG,OAAO,KAAK;CACzC,MAAM,gBAAgB;CACtB,MAAM,mBAAmB,OAAO;CAChC,MAAM,aAAa;EAClB,QAAQ;EACR,uBAAuB;EACvB,KAAK;EACL,OAAO;EACP,KAAK,CAAC;CACP;CACA,MAAM,UAAU,MAAM,KAAK,QAAQ,UAAU;CAC7C,MAAM,YAAY,iBAAiB,YAAY,OAAO;CACtD,IAAI,QAAQ,WAAW,MAAM,OAAO,MAAM,IAAI,mBAAmB,wBAAwB,qCAAqC,QAAQ,OAAO,IAAI,EAAE,MAAM;EACxJ,QAAQ,QAAQ;EAChB,aAAa;GACZ,UAAU,KAAK;GACf,QAAQ,QAAQ;GAChB;GACA,kBAAkB;GAClB,KAAK;EACN;CACD,EAAE,CAAC,CAAC;CACJ,MAAM,SAAS,QAAQ,YAAY;CACnC,IAAI,WAAW,GAAG,OAAO,KAAK;CAC9B,OAAO,MAAM,IAAI,mBAAmB,wBAAwB,qCAAqC,OAAO,IAAI,EAAE,MAAM;EACnH,UAAU;EACV,aAAa;GACZ,UAAU;GACV;GACA,kBAAkB;GAClB,KAAK;EACN;CACD,EAAE,CAAC,CAAC;AACL;AACA,SAAS,uBAAuB,WAAW,CAAC,GAAG;CAC9C,MAAM,cAAc,CAAC;CACrB,MAAM,WAAW,CAAC;CAClB,MAAM,OAAO;EACZ,QAAQ,CAAC;EACT,KAAK,CAAC;CACP;CACA,MAAM,QAAQ;EACb,QAAQ;EACR,KAAK;EACL;CACD;CACA,OAAO;EACN,YAAY;GACX,QAAQ,OAAO,OAAO,kBAAkB;IACvC,MAAM,OAAO,KAAK,KAAK;IACvB,KAAK,OAAO,KAAK,aAAa;IAC9B,KAAK,MAAM,SAAS,SAAS,gBAAgB,CAAC,GAAG,IAAI;KACpD,MAAM,UAAU,KAAK;IACtB,QAAQ,CAAC;IACT,MAAM,WAAW,MAAM,YAAY,eAAe,MAAM,GAAG;IAC3D,IAAI,aAAa,KAAK,GAAG,OAAO;IAChC,OAAO,SAAS,UAAU,GAAG;KAC5B,SAAS,KAAK;KACd,YAAY;IACb,CAAC;GACF;GACA,KAAK,OAAO,OAAO,kBAAkB;IACpC,MAAM,IAAI,KAAK,KAAK;IACpB,KAAK,IAAI,KAAK,aAAa;IAC3B,OAAO,SAAS,OAAO,GAAG,iBAAiB,OAAO,SAAS,gBAAgB,CAAC,CAAC,CAAC;GAC/E;EACD;EACA;CACD;AACD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prisma/composer-cli",
3
- "version": "0.29.1",
3
+ "version": "0.30.0-dev.1",
4
4
  "type": "module",
5
5
  "description": "Prisma Composer's command family, which the `prisma` CLI mounts as `deploy` and `dev`.",
6
6
  "exports": {
@@ -13,18 +13,18 @@
13
13
  "src"
14
14
  ],
15
15
  "dependencies": {
16
- "@prisma/composer": "0.29.1",
17
- "alchemy": "2.0.0-beta.78",
16
+ "@prisma/composer": "0.30.0-dev.1",
17
+ "alchemy": "2.0.0-beta.83",
18
18
  "cross-spawn": "^7.0.6",
19
- "effect": "4.0.0-rc.115",
19
+ "effect": "4.0.3",
20
20
  "esbuild": "^0.28.1"
21
21
  },
22
22
  "peerDependencies": {
23
23
  "@prisma/cli-engine": "0.7.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@internal/cli": "0.29.1",
27
- "@internal/tsdown-config": "0.29.1",
26
+ "@internal/cli": "0.30.0-dev.1",
27
+ "@internal/tsdown-config": "0.30.0-dev.1",
28
28
  "@prisma/cli-engine": "0.7.0",
29
29
  "@types/node": "^26.0.1",
30
30
  "tsdown": "^0.22.7",
@@ -37,7 +37,7 @@
37
37
  "directory": "packages/9-public/composer-cli"
38
38
  },
39
39
  "engines": {
40
- "node": ">=22.18.0"
40
+ "node": "^22.18.0 || ^24.11.0 || >=26.0.0"
41
41
  },
42
42
  "publishConfig": {
43
43
  "access": "public"
@@ -1 +0,0 @@
1
- {"version":3,"file":"composer-config-CY9fET8H-5-aHaW5A.mjs","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/casts-DpaahrlC.mjs","../../../0-framework/0-foundation/foundation/dist/internal-error-Dfur7Zqt.mjs","../../../0-framework/0-foundation/foundation/dist/result.mjs","../../../0-framework/0-foundation/foundation/dist/errors.mjs","../../../0-framework/3-tooling/cli/dist/run-alchemy-CTw3BXKq.mjs","../../../0-framework/3-tooling/cli/dist/composer-config-CY9fET8H.mjs"],"sourcesContent":["//#region src/casts.ts\n/**\n* **Last-resort escape hatch for unsafe type assertions. Not a sanctioned tool to reach for.**\n*\n* Before reaching for `blindCast`, **rewrite the surrounding code so the cast becomes\n* unnecessary**: tighten an input type, add a runtime check that narrows via a type\n* predicate, restructure a generic so the compiler can see the relationship you're\n* asserting, or use {@link castAs} when the value already satisfies the target type.\n* Only when no rewrite is feasible does `blindCast` become the right answer — and at\n* that point, the `Reason` literal you supply must articulate the compromise in\n* language a reviewer can evaluate.\n*\n* The reviewer **will** validate the `Reason`. If it doesn't hold up under scrutiny,\n* that is not a signal to soften the reason; it is a signal to go back and solve the\n* underlying type-system problem properly. An unconvincing justification is rework,\n* not a free pass.\n*\n* `blindCast` is the auditable form of `as Foo` / `as unknown as Foo`: it bypasses\n* the compiler's checks (the input type is `unknown`, the output type is whatever the\n* caller asks for), but it forces the unsafety to be named at the call site instead of\n* smuggled in via a bare `as`. The `Reason` type parameter exists only at compile\n* time — it is not present in the emitted JavaScript — but it is grep-able and\n* visible to future readers.\n*\n* @example\n* ```typescript\n* const stringValue = blindCast<\n* string,\n* \"JSON.parse returns `unknown`; this field is documented to be a string in the API contract\"\n* >(parsed[key]);\n* ```\n*\n* @typeParam TargetType - The type the caller is asserting the input has.\n* @typeParam _Reason - A string literal describing why bypassing the type system is necessary here.\n* Only meaningful at compile time. The reviewer evaluates whether it justifies the unsafety.\n*/\nfunction blindCast(input) {\n\treturn input;\n}\n/**\n* Type-checked, runtime pass-through alternative to a bare `as Type` cast.\n*\n* Use `castAs` when the value already satisfies the target type but you want to make\n* the type assertion explicit at the call site — for example, when an inferred type is\n* wider than the type you want to publish, or when a literal object should be tagged\n* with its nominal interface. Unlike {@link blindCast}, the compiler still checks that\n* the value is assignable to the target type, so this helper cannot smuggle in an\n* unsafe assertion.\n*\n* `castAs` exists alongside `blindCast` so authors pick the right name at the call\n* site: a `castAs` is type-checked and benign; a `blindCast` is the unsafe escape\n* hatch. The split makes review faster — readers know which casts to scrutinize and\n* which are pure annotations.\n*\n* @example\n* ```typescript\n* interface FancyObject {\n* key: string;\n* keyTwo: {\n* subKey: string;\n* subKeyTwo: number;\n* };\n* }\n*\n* const typedObject = castAs<FancyObject>({\n* key: 'Chookede',\n* keyTwo: {\n* subKey: 'Choookeeeee',\n* subKeyTwo: 2,\n* },\n* });\n* ```\n*\n* @typeParam Type - The type to constrain and tag the value with. The value must be assignable to `Type`.\n*/\nfunction castAs(value) {\n\treturn value;\n}\n//#endregion\nexport { castAs as n, blindCast as t };\n\n//# sourceMappingURL=casts-DpaahrlC.mjs.map","//#region src/internal-error.ts\n/**\n* A bug in Prisma ORM, not a user error. Never catch this except at the\n* outermost boundary for crash reporting — an InternalError means an invariant\n* broke and the process cannot reliably continue. User-facing failures use\n* `structuredError` with a dotted code instead.\n*/\nvar InternalError = class extends Error {\n\tisPrismaInternalError = true;\n\tconstructor(message, options) {\n\t\tsuper(message, options?.cause !== void 0 ? { cause: options.cause } : void 0);\n\t\tthis.name = \"InternalError\";\n\t}\n};\nfunction isInternalError(e) {\n\treturn typeof e === \"object\" && e !== null && \"isPrismaInternalError\" in e && e.isPrismaInternalError === true;\n}\nfunction assertNever(value, message) {\n\tthrow new InternalError(message ?? `Unreachable: unexpected value ${String(value)}`);\n}\n//#endregion\nexport { assertNever as n, isInternalError as r, InternalError as t };\n\n//# sourceMappingURL=internal-error-Dfur7Zqt.mjs.map","import { t as blindCast } from \"./casts-DpaahrlC.mjs\";\nimport { t as InternalError } from \"./internal-error-Dfur7Zqt.mjs\";\n//#region src/result.ts\n/**\n* Generic Result type for representing success or failure outcomes.\n*\n* This is the standard way to return \"expected failures\" as values rather than\n* throwing exceptions. See docs/Error Handling.md for the full taxonomy.\n*\n* Naming rationale:\n* - `Ok<T>` / `NotOk<F>` mirror the `ok: true/false` discriminator\n* - `NotOk` avoids collision with domain types like \"Failure\" or \"Error\"\n* - `failure` property distinguishes from JS Error semantics\n*/\n/**\n* Result class that implements both Ok and NotOk variants.\n*/\nvar ResultImpl = class ResultImpl {\n\tok;\n\t_value;\n\t_failure;\n\tconstructor(ok, valueOrFailure) {\n\t\tthis.ok = ok;\n\t\tif (ok) this._value = blindCast(valueOrFailure);\n\t\telse this._failure = blindCast(valueOrFailure);\n\t\tObject.freeze(this);\n\t}\n\tget value() {\n\t\tif (!this.ok) throw new InternalError(\"Cannot access value on NotOk result\");\n\t\treturn this._value;\n\t}\n\tget failure() {\n\t\tif (this.ok) throw new InternalError(\"Cannot access failure on Ok result\");\n\t\treturn this._failure;\n\t}\n\t/**\n\t* Creates a successful result.\n\t*/\n\tstatic ok(value) {\n\t\treturn blindCast(new ResultImpl(true, value));\n\t}\n\t/**\n\t* Creates an unsuccessful result.\n\t*/\n\tstatic notOk(failure) {\n\t\treturn blindCast(new ResultImpl(false, failure));\n\t}\n\t/**\n\t* Asserts that this result is Ok and returns the value.\n\t* Throws if the result is NotOk.\n\t*/\n\tassertOk() {\n\t\tif (!this.ok) throw new InternalError(\"Expected Ok result but got NotOk\");\n\t\treturn this.value;\n\t}\n\t/**\n\t* Asserts that this result is NotOk and returns the failure.\n\t* Throws if the result is Ok.\n\t*/\n\tassertNotOk() {\n\t\tif (this.ok) throw new InternalError(\"Expected NotOk result but got Ok\");\n\t\treturn this.failure;\n\t}\n};\n/**\n* Creates a successful result.\n*/\nfunction ok(value) {\n\treturn ResultImpl.ok(value);\n}\n/**\n* Creates an unsuccessful result.\n*/\nfunction notOk(failure) {\n\treturn ResultImpl.notOk(failure);\n}\n/**\n* Singleton for void success results.\n* Use this for validation checks that don't produce a value.\n*/\nconst OK_VOID = ResultImpl.ok(void 0);\n/**\n* Returns a successful void result.\n* Use this for validation checks that don't produce a value.\n*/\nfunction okVoid() {\n\treturn OK_VOID;\n}\n//#endregion\nexport { notOk, ok, okVoid };\n\n//# sourceMappingURL=result.mjs.map","import { t as blindCast } from \"./casts-DpaahrlC.mjs\";\nimport { n as assertNever, r as isInternalError, t as InternalError } from \"./internal-error-Dfur7Zqt.mjs\";\n//#region src/defined.ts\n/**\n* Returns an object with the key/value if value is defined, otherwise an empty object.\n*\n* Use with spread to conditionally include optional properties while satisfying\n* exactOptionalPropertyTypes. This is explicit about which properties are optional\n* and won't inadvertently strip other undefined values.\n*\n* @example\n* ```typescript\n* // Instead of:\n* const obj = {\n* required: 'value',\n* ...(optional ? { optional } : {}),\n* };\n*\n* // Use:\n* const obj = {\n* required: 'value',\n* ...ifDefined('optional', optional),\n* };\n* ```\n*/\nfunction ifDefined(key, value) {\n\treturn value !== void 0 ? blindCast({ [key]: value }) : {};\n}\n//#endregion\n//#region src/cli-structured-error.ts\n/**\n* Structured CLI error that contains all information needed for error envelopes.\n* Call sites throw these errors with full context.\n*\n* A `CliStructuredError` is a `StructuredError` (see\n* `./structured-error.ts`): `code` is a dotted\n* `NAMESPACE.SUBCODE` string, and the namespace prefix is the error's\n* category — there is no separate `domain` field. See ADR 239 in\n* prisma/prisma and composer's ADR-0044 for the namespace taxonomy.\n*/\nvar CliStructuredError = class extends Error {\n\tcode;\n\tseverity;\n\tconstructor(code, summary, options) {\n\t\tsuper(summary, options?.cause !== void 0 ? { cause: options.cause } : void 0);\n\t\tthis.name = \"CliStructuredError\";\n\t\tthis.code = code;\n\t\tthis.severity = options?.severity ?? \"error\";\n\t\tconst fix = options?.fix === options?.why ? void 0 : options?.fix;\n\t\tconst where = options?.where ? {\n\t\t\t...ifDefined(\"path\", options.where.path),\n\t\t\t...ifDefined(\"line\", options.where.line)\n\t\t} : void 0;\n\t\tObject.assign(this, {\n\t\t\t...ifDefined(\"why\", options?.why),\n\t\t\t...ifDefined(\"fix\", fix),\n\t\t\t...ifDefined(\"where\", where),\n\t\t\t...ifDefined(\"meta\", options?.meta),\n\t\t\t...ifDefined(\"docsUrl\", options?.docsUrl)\n\t\t});\n\t}\n\t/**\n\t* Converts this error to a CLI error envelope for output formatting.\n\t*/\n\ttoEnvelope() {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tcode: this.code,\n\t\t\tseverity: this.severity,\n\t\t\tsummary: this.message,\n\t\t\t...ifDefined(\"why\", this.why),\n\t\t\t...ifDefined(\"fix\", this.fix),\n\t\t\t...ifDefined(\"where\", this.where),\n\t\t\t...ifDefined(\"meta\", this.meta),\n\t\t\t...ifDefined(\"docsUrl\", this.docsUrl)\n\t\t};\n\t}\n\t/**\n\t* Type guard to check if an error is a CliStructuredError.\n\t* Uses duck-typing to work across module boundaries where instanceof may fail.\n\t*/\n\tstatic is(error) {\n\t\tif (!(error instanceof Error)) return false;\n\t\tconst candidate = blindCast(error);\n\t\treturn candidate.name === \"CliStructuredError\" && typeof candidate.code === \"string\" && typeof candidate.toEnvelope === \"function\";\n\t}\n};\n//#endregion\n//#region src/structured-error.ts\nconst STRUCTURED_CODE_RE = /^[A-Z][A-Z0-9]*\\.[A-Z][A-Z0-9_]*$/;\nfunction isStructuredError(e) {\n\treturn typeof e === \"object\" && e !== null && \"code\" in e && typeof e.code === \"string\" && STRUCTURED_CODE_RE.test(e.code) && \"message\" in e && typeof e.message === \"string\";\n}\nfunction structuredError(code, message, options) {\n\tconst error = options?.cause !== void 0 ? new Error(message, { cause: options.cause }) : new Error(message);\n\tObject.defineProperty(error, \"name\", {\n\t\tvalue: \"StructuredError\",\n\t\tconfigurable: true\n\t});\n\treturn Object.assign(error, {\n\t\tcode,\n\t\t...ifDefined(\"why\", options?.why),\n\t\t...ifDefined(\"fix\", options?.fix),\n\t\t...ifDefined(\"where\", options?.where),\n\t\t...ifDefined(\"severity\", options?.severity),\n\t\t...ifDefined(\"meta\", options?.meta),\n\t\t...ifDefined(\"docsUrl\", options?.docsUrl)\n\t});\n}\nconst DOCS_BASE = `https://docs.prisma.io/docs/orm/next/reference/error-reference`;\nfunction docsUrlFor(code) {\n\treturn `${DOCS_BASE}#${code}`;\n}\n//#endregion\nexport { CliStructuredError, DOCS_BASE, InternalError, assertNever, docsUrlFor, isInternalError, isStructuredError, structuredError };\n\n//# sourceMappingURL=errors.mjs.map","import { createRequire } from \"node:module\";\nimport * as fs from \"node:fs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as path from \"node:path\";\nimport spawn from \"cross-spawn\";\n//#region src/alchemy-bin.ts\n/**\n* Which Alchemy CLI runs a generated stack file: the `alchemy` that\n* `@prisma/composer` depends on, found from the app the way the stack file's\n* own `@prisma/composer/...` imports are. The CLI and the stack code then\n* come from one install, so the child loads one copy of `alchemy`.\n*\n* Node's resolver finds `@prisma/composer` from the app. It cannot find\n* `alchemy` from there: alchemy exports neither its `package.json` nor its\n* bin, and has no `require` condition. Bun has no `module.findPackageJSON`.\n* So the last step is Node's own lookup written out: each `node_modules`\n* above `@prisma/composer`'s real location, nearest first.\n*/\nconst FIX = \"Check that the app depends on @prisma/composer and that `alchemy`, which @prisma/composer depends on, is installed in a node_modules directory. Layouts without one, such as Yarn Plug'n'Play, are not supported.\";\nfunction binMissing(message) {\n\treturn new CliStructuredError(\"DEPLOY.ALCHEMY_BIN_MISSING\", message, { fix: FIX });\n}\nfunction composerPackageDir(appDir) {\n\ttry {\n\t\tconst manifest = createRequire(path.join(appDir, \"package.json\")).resolve(\"@prisma/composer/package.json\");\n\t\treturn path.dirname(fs.realpathSync(manifest));\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction alchemyPackageDirAbove(dir) {\n\tfor (let current = dir;; current = path.dirname(current)) {\n\t\tconst candidate = path.join(current, \"node_modules\", \"alchemy\");\n\t\tif (fs.existsSync(path.join(candidate, \"package.json\"))) return candidate;\n\t\tif (path.dirname(current) === current) return void 0;\n\t}\n}\nfunction readPackageJson(packageDir) {\n\ttry {\n\t\treturn JSON.parse(fs.readFileSync(path.join(packageDir, \"package.json\"), \"utf8\"));\n\t} catch {\n\t\treturn;\n\t}\n}\nfunction binOf(packageDir) {\n\tconst manifest = readPackageJson(packageDir);\n\tif (typeof manifest !== \"object\" || manifest === null || !(\"bin\" in manifest)) return void 0;\n\tconst bin = manifest.bin;\n\tconst relative = typeof bin === \"string\" ? bin : typeof bin === \"object\" && bin !== null && \"alchemy\" in bin ? bin.alchemy : void 0;\n\tif (typeof relative !== \"string\") return void 0;\n\tconst entry = path.join(packageDir, relative);\n\treturn fs.existsSync(entry) ? entry : void 0;\n}\n/**\n* The JavaScript file `alchemy`'s `bin` names, for the app in `appDir`.\n* Raises DEPLOY.ALCHEMY_BIN_MISSING when the app does not resolve\n* `@prisma/composer` or no usable `alchemy` is installed beside it.\n*/\nfunction resolveAlchemyBin(appDir) {\n\tconst composerDir = composerPackageDir(appDir);\n\tif (composerDir === void 0) throw binMissing(`Could not resolve @prisma/composer from \"${appDir}\".`);\n\tconst alchemyDir = alchemyPackageDirAbove(composerDir);\n\tconst entry = alchemyDir === void 0 ? void 0 : binOf(alchemyDir);\n\tif (entry === void 0) throw binMissing(`Could not resolve the bin of the \\`alchemy\\` package @prisma/composer depends on, from \"${composerDir}\".`);\n\treturn entry;\n}\n//#endregion\n//#region src/run-alchemy.ts\n/**\n* Pipeline step 7 (deploy-cli.md § The pipeline; design-notes.md's \"Driving\n* Alchemy\" call): hand the terminal to the generated stack file.\n*\n* Runs the bin of the `alchemy` the app's `@prisma/composer` depends on\n* (`resolveAlchemyBin`), started with Node (`nodeExecutable`). Never a\n* `node_modules/.bin` link, which pnpm creates only for an app's direct\n* dependencies.\n*\n* This module composes the invocation; it does not decide how the child is\n* started. Under the CLI the engine starts it (`ctx.spawn`), which is what\n* makes Ctrl-C reach the child natively and keeps signal policy in one place.\n* `spawnAlchemy` is the default for programmatic hosts driving\n* `@prisma/composer/control`, which have no engine to borrow.\n*/\nfunction currentRuntime() {\n\treturn {\n\t\tbun: process.versions.bun !== void 0,\n\t\texecPath: process.execPath,\n\t\tenv: process.env,\n\t\tplatform: process.platform,\n\t\texists: fs.existsSync\n\t};\n}\nfunction envValue(env, name) {\n\treturn Object.entries(env).find(([key]) => key.toLowerCase() === name.toLowerCase())?.[1];\n}\n/** The file names `node` may have in a PATH directory: PATHEXT's extensions on Windows. */\nfunction nodeFileNames(runtime) {\n\tif (runtime.platform !== \"win32\") return [\"node\"];\n\treturn (envValue(runtime.env, \"PATHEXT\") ?? \".COM;.EXE;.BAT;.CMD\").split(\";\").filter((extension) => extension.length > 0).map((extension) => `node${extension}`);\n}\n/**\n* The Node that starts Alchemy's launcher: this process's own runtime under\n* Node, and the first `node` on PATH under Bun. Alchemy's launcher may still\n* move itself to Bun when the package-manager environment says Bun invoked\n* it (`bunx`, `bun run`), so the runtime Alchemy ends up on follows how\n* `prisma` was invoked.\n*/\nfunction nodeExecutable(runtime = currentRuntime()) {\n\tif (!runtime.bun) return runtime.execPath;\n\tconst paths = runtime.platform === \"win32\" ? path.win32 : path.posix;\n\tconst names = nodeFileNames(runtime);\n\tfor (const rawDir of (envValue(runtime.env, \"PATH\") ?? \"\").split(paths.delimiter)) {\n\t\tconst dir = rawDir.replace(/^\"(.*)\"$/, \"$1\");\n\t\tif (dir.length === 0) continue;\n\t\tfor (const name of names) {\n\t\t\tconst candidate = paths.join(dir, name);\n\t\t\tif (runtime.exists(candidate)) return candidate;\n\t\t}\n\t}\n\tthrow new CliStructuredError(\"DEPLOY.NODE_MISSING\", \"Composer starts Alchemy with Node, and no `node` was found on PATH.\", { fix: \"Install Node 22.18 or newer and put it on PATH, or run `prisma` under Node.\" });\n}\n/**\n* Resolves the invocation against this machine — the step every adapter takes\n* and no caller should. Runs alchemy's JavaScript entry with Node, so no shell\n* shim is involved on any platform. Raises DEPLOY.ALCHEMY_BIN_MISSING when\n* Composer's alchemy cannot be resolved, and DEPLOY.NODE_MISSING when no Node\n* can run it.\n*/\nfunction alchemyCommandLine(invocation, alchemyBin = resolveAlchemyBin(invocation.cwd), node = nodeExecutable()) {\n\treturn {\n\t\tcommand: node,\n\t\targs: [\n\t\t\talchemyBin,\n\t\t\tinvocation.action,\n\t\t\tinvocation.stackFileRelativePath,\n\t\t\t\"--yes\",\n\t\t\t\"--stage\",\n\t\t\tinvocation.stage\n\t\t],\n\t\tcwd: invocation.cwd,\n\t\tenv: invocation.env\n\t};\n}\n/** What becomes `alchemy deploy|destroy <stack file> --yes --stage <stage>`. */\nfunction alchemyInvocation(input) {\n\treturn {\n\t\taction: input.command,\n\t\tstackFileRelativePath: input.stackFileRelativePath,\n\t\tcwd: input.cwd,\n\t\tstage: input.stage,\n\t\tenv: {\n\t\t\t...input.containerEnv,\n\t\t\t...input.preflightEnv,\n\t\t\t...input.env\n\t\t}\n\t};\n}\n/**\n* The default runner for hosts with no engine: inherited stdio, the caller's\n* own process group, and the child's status returned verbatim. It does not\n* collapse a signal into an exit code — that collapse is what made a\n* Ctrl-C'd deploy report itself as a failure.\n*/\nconst spawnAlchemy = async (invocation) => {\n\tconst commandLine = alchemyCommandLine(invocation);\n\treturn {\n\t\t...await spawnCommandLine(commandLine),\n\t\tcommandLine\n\t};\n};\n/**\n* One argument as the platform's shell reads it literally: single quotes for\n* POSIX shells, double quotes for cmd.exe. cmd.exe expands `%VAR%` inside\n* double quotes, and strips or expands `!` when delayed expansion is on; no\n* quoting prevents either, so an argument containing them is not fully\n* literal there.\n*/\nfunction shellArg(arg, platform) {\n\tif (platform === \"win32\") return /^[\\w@+=:,./\\\\~-]+$/.test(arg) ? arg : `\"${arg.replaceAll(\"\\\"\", \"\\\"\\\"\")}\"`;\n\treturn /^[\\w@%+=:,./-]+$/.test(arg) ? arg : `'${arg.replaceAll(\"'\", \"'\\\\''\")}'`;\n}\n/**\n* The command a user runs from the invocation's directory to repeat a\n* converge: the command line the adapter started, or, from an adapter that\n* does not report one, `alchemy` with the same arguments.\n*/\nfunction reproduceCommand(invocation, outcome, platform = process.platform) {\n\treturn (outcome?.commandLine === void 0 ? [\n\t\t\"alchemy\",\n\t\tinvocation.action,\n\t\tinvocation.stackFileRelativePath,\n\t\t\"--yes\",\n\t\t\"--stage\",\n\t\tinvocation.stage\n\t] : [outcome.commandLine.command, ...outcome.commandLine.args]).map((arg) => shellArg(arg, platform)).join(\" \");\n}\n/** Starts a resolved command line with inherited stdio and returns how it ended. */\nfunction spawnCommandLine(line) {\n\treturn new Promise((resolve, reject) => {\n\t\tconst child = spawn(line.command, [...line.args], {\n\t\t\tcwd: line.cwd,\n\t\t\tstdio: \"inherit\",\n\t\t\tenv: {\n\t\t\t\t...process.env,\n\t\t\t\t...line.env\n\t\t\t}\n\t\t});\n\t\tchild.on(\"error\", reject);\n\t\tchild.on(\"close\", (exitCode, signal) => {\n\t\t\tresolve({\n\t\t\t\texitCode,\n\t\t\t\tsignal\n\t\t\t});\n\t\t});\n\t});\n}\n//#endregion\nexport { spawnAlchemy as i, alchemyInvocation as n, reproduceCommand as r, alchemyCommandLine as t };\n\n//# sourceMappingURL=run-alchemy-CTw3BXKq.mjs.map","import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n//#region src/composer-config.ts\n/**\n* What makes a `composer` section valid, shared by the CLI's section validator and the programmatic operations.\n* It imports nothing from the CLI engine, because `@prisma/composer` must not depend on it.\n*/\nconst SECTION_FIX = \"Write `composer: composer({ extensions: [...], state: ... })` in prisma.config.ts, with `import { defineConfig as composer } from '@prisma/composer/config'`.\";\nconst MOVE_TO_SECTION_FIX = `${SECTION_FIX} If the project has a prisma-composer.config.ts, move its extensions and state into that section and delete the file.`;\nconst SECTION_IS_THE_ONLY_SOURCE = \"Composer reads its configuration only from the `composer` section of prisma.config.ts.\";\nconst DESCRIPTOR_FIX = \"Use the descriptor the extension factory returns, unchanged, instead of building one by hand.\";\nconst RETIRED_FILE_NAMES = [\n\t\"ts\",\n\t\"mts\",\n\t\"mjs\",\n\t\"js\"\n].map((extension) => `prisma-composer.config.${extension}`);\nconst sectionMissing = {\n\tcode: \"CONFIG.SECTION_MISSING\",\n\tsummary: \"No loaded prisma.config.ts declares a `composer` section.\",\n\twhy: `${SECTION_IS_THE_ONLY_SOURCE} A prisma-composer.config.ts file is no longer read.`,\n\tfix: MOVE_TO_SECTION_FIX\n};\n/** What the generated stack file throws when the file it imports has no `composer` export. */\nfunction noComposerExportMessage(configFile) {\n\treturn `${configFile} declares no \\`composer\\` section. Pass the prisma.config.ts that declares it.`;\n}\nfunction configFileMissing(file) {\n\treturn {\n\t\tcode: \"CONFIG.FILE_MISSING\",\n\t\tsummary: `${file} does not exist.`,\n\t\tfix: \"Pass the path of the prisma.config.ts that declares the `composer` section.\",\n\t\twhere: file\n\t};\n}\n/** A prisma-composer.config.* beside the declaring file would otherwise be silently ignored. */\n/** The path with symlinks resolved; the path itself when it cannot be resolved, so the check never throws. */\nfunction realPath(file) {\n\ttry {\n\t\treturn fs.realpathSync(file);\n\t} catch {\n\t\treturn file;\n\t}\n}\nfunction retiredFileFinding(configFile) {\n\tconst directory = path.dirname(realPath(configFile));\n\tconst found = RETIRED_FILE_NAMES.map((name) => path.join(directory, name)).find((file) => fs.existsSync(file));\n\tif (found === void 0) return void 0;\n\treturn {\n\t\tcode: \"CONFIG.FILE_RETIRED\",\n\t\tsummary: `${found} is no longer read.`,\n\t\twhy: SECTION_IS_THE_ONLY_SOURCE,\n\t\tfix: MOVE_TO_SECTION_FIX,\n\t\twhere: found\n\t};\n}\nfunction isObject(value) {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction isExtensionDescriptor(value) {\n\treturn isObject(value) && typeof value[\"id\"] === \"string\" && value[\"id\"].length > 0 && isObject(value[\"nodes\"]);\n}\nfunction isStateDescriptor(value) {\n\treturn isObject(value) && typeof value[\"extension\"] === \"string\" && typeof value[\"create\"] === \"function\";\n}\nconst stateInvalid = {\n\tcode: \"CONFIG.FIELD_INVALID\",\n\tsummary: \"`composer.state` must be a state descriptor with a string `extension` and a `create` function.\",\n\tfix: \"Set `state` to the state descriptor an extension provides, e.g. `state: prismaState()`.\",\n\tfield: \"state\"\n};\nfunction unknownField(key) {\n\treturn {\n\t\tcode: \"CONFIG.FIELD_UNKNOWN\",\n\t\tsummary: `The \\`composer\\` section has no field \\`${key}\\`.`,\n\t\tfix: key === \"composer\" ? \"Pass the `composer` property of the prisma.config.ts export, not the whole export. The section takes only `extensions` and `state`.\" : `Remove \\`${key}\\`. The section takes only \\`extensions\\` and \\`state\\`.`,\n\t\tfield: key\n\t};\n}\nfunction checkExtensions(value) {\n\tif (!Array.isArray(value)) return {\n\t\textensions: [],\n\t\tfindings: [{\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tsummary: \"`composer.extensions` must be an array of extension descriptors.\",\n\t\t\tfix: \"Set `extensions` to the descriptors your extensions provide, e.g. `extensions: [nodeBuild()]`.\",\n\t\t\tfield: \"extensions\"\n\t\t}]\n\t};\n\tconst findings = [];\n\tconst extensions = [];\n\tconst seen = /* @__PURE__ */ new Set();\n\tfor (const [index, entry] of value.entries()) {\n\t\tconst field = `extensions[${index}]`;\n\t\tif (!isObject(entry)) {\n\t\t\tfindings.push({\n\t\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\t\tsummary: `\\`composer.${field}\\` must be an extension descriptor object.`,\n\t\t\t\tfix: \"Put the descriptor an extension factory returns here, e.g. `nodeBuild()`, not the factory itself.\",\n\t\t\t\tfield\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tconst id = entry[\"id\"];\n\t\tif (typeof id !== \"string\" || id.length === 0) findings.push({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tsummary: `\\`composer.${field}.id\\` must be a non-empty string (the extension package name).`,\n\t\t\tfix: DESCRIPTOR_FIX,\n\t\t\tfield: `${field}.id`\n\t\t});\n\t\telse if (seen.has(id)) findings.push({\n\t\t\tcode: \"CONFIG.EXTENSION_DUPLICATE\",\n\t\t\tsummary: `Extension \"${id}\" is listed more than once in \\`composer.extensions\\`.`,\n\t\t\tfix: `Remove the repeated \"${id}\" entry from \\`extensions\\`.`,\n\t\t\tfield: `${field}.id`\n\t\t});\n\t\telse seen.add(id);\n\t\tif (!isObject(entry[\"nodes\"])) findings.push({\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tsummary: `\\`composer.${field}.nodes\\` must be an object (the node-ID → control registry).`,\n\t\t\tfix: DESCRIPTOR_FIX,\n\t\t\tfield: `${field}.nodes`\n\t\t});\n\t\tif (isExtensionDescriptor(entry)) extensions.push(entry);\n\t}\n\treturn {\n\t\tfindings,\n\t\textensions\n\t};\n}\nfunction checkFields(section) {\n\tif (Object.hasOwn(section, \"configPath\")) return {\n\t\tok: false,\n\t\tfindings: [{\n\t\t\tcode: \"CONFIG.FIELD_RETIRED\",\n\t\t\tsummary: \"`composer.configPath` is no longer supported: prisma-composer.config.ts is no longer read.\",\n\t\t\twhy: SECTION_IS_THE_ONLY_SOURCE,\n\t\t\tfix: `Replace \\`configPath\\` with the section itself. ${MOVE_TO_SECTION_FIX}`,\n\t\t\tfield: \"configPath\"\n\t\t}]\n\t};\n\tif (Object.hasOwn(section, \"composer\")) return {\n\t\tok: false,\n\t\tfindings: [unknownField(\"composer\")]\n\t};\n\tconst findings = Object.keys(section).filter((key) => key !== \"extensions\" && key !== \"state\").map(unknownField);\n\tconst checked = checkExtensions(section[\"extensions\"]);\n\tfindings.push(...checked.findings);\n\tconst state = section[\"state\"];\n\tif (!isStateDescriptor(state)) findings.push(stateInvalid);\n\tconst [first, ...rest] = findings;\n\tif (first === void 0 && isStateDescriptor(state)) return {\n\t\tok: true,\n\t\tvalue: {\n\t\t\textensions: checked.extensions,\n\t\t\tstate\n\t\t}\n\t};\n\treturn {\n\t\tok: false,\n\t\tfindings: [first ?? stateInvalid, ...rest]\n\t};\n}\n/**\n* Checks the fields that identify each descriptor and returns the descriptors as the config file's own objects.\n* Never throws: a section's values are user code, and a throwing getter or Proxy trap becomes a finding.\n*/\nfunction checkComposerSection(raw) {\n\tif (!isObject(raw)) return {\n\t\tok: false,\n\t\tfindings: [{\n\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\tsummary: \"The `composer` section of prisma.config.ts must be an object.\",\n\t\t\tfix: SECTION_FIX\n\t\t}]\n\t};\n\ttry {\n\t\treturn checkFields({ ...raw });\n\t} catch (cause) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\tfindings: [{\n\t\t\t\tcode: \"CONFIG.FIELD_INVALID\",\n\t\t\t\tsummary: \"The `composer` section of prisma.config.ts could not be read.\",\n\t\t\t\twhy: `Reading it threw: ${cause instanceof Error ? cause.message : String(cause)}`,\n\t\t\t\tfix: SECTION_FIX\n\t\t\t}]\n\t\t};\n\t}\n}\n/**\n* The whole check, shared by the section validator and the programmatic operations so both report the same findings in the same order: the retired file beside the declaring `configFile` (resolved through symlinks), then every field finding.\n*/\nfunction checkComposerConfig(raw, configFile) {\n\tconst retired = retiredFileFinding(configFile);\n\tconst checked = checkComposerSection(raw);\n\tif (retired === void 0) return checked;\n\treturn {\n\t\tok: false,\n\t\tfindings: checked.ok ? [retired] : [retired, ...checked.findings]\n\t};\n}\n//#endregion\nexport { sectionMissing as i, configFileMissing as n, noComposerExportMessage as r, checkComposerConfig as t };\n\n//# sourceMappingURL=composer-config-CY9fET8H.mjs.map"],"mappings":"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"}