@prisma/composer-cli 0.30.0-dev.5 → 0.30.0-dev.6
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.
- package/dist/{dev-current-DbNTaH74-BL7iolgh.mjs → dev-current-Bm7Yrsmt-CEeCNPfn.mjs} +5 -5
- package/dist/{dev-current-DbNTaH74-BL7iolgh.mjs.map → dev-current-Bm7Yrsmt-CEeCNPfn.mjs.map} +1 -1
- package/dist/{execute-deploy-destroy-BoLqQxph-Dfwe30BC.mjs → execute-deploy-destroy-BK4R2qCX-DT6AspVB.mjs} +3 -3
- package/dist/{execute-deploy-destroy-BoLqQxph-Dfwe30BC.mjs.map → execute-deploy-destroy-BK4R2qCX-DT6AspVB.mjs.map} +1 -1
- package/dist/{execute-dev-current-DrJGgp7o-BMocQai0.mjs → execute-dev-current-nYH8EiKK-CDxBLKxl.mjs} +3 -3
- package/dist/{execute-dev-current-DrJGgp7o-BMocQai0.mjs.map → execute-dev-current-nYH8EiKK-CDxBLKxl.mjs.map} +1 -1
- package/dist/{execute-dev-Bu2zRpyB-DGxWpS93.mjs → execute-dev-qKlYePGn-CeIibwG6.mjs} +11 -3
- package/dist/{execute-dev-Bu2zRpyB-DGxWpS93.mjs.map → execute-dev-qKlYePGn-CeIibwG6.mjs.map} +1 -1
- package/dist/{family-OJj6biSq-FIvI5ENf.d.mts → family-BIyR33Uq-BDM09XC2.d.mts} +11 -5
- package/dist/{family-OJj6biSq-FIvI5ENf.d.mts.map → family-BIyR33Uq-BDM09XC2.d.mts.map} +1 -1
- package/dist/family.d.mts +1 -1
- package/dist/family.mjs +27 -4
- package/dist/family.mjs.map +1 -1
- package/dist/testing.d.mts +1 -1
- package/package.json +6 -6
|
@@ -1236,7 +1236,7 @@ type AssembleReport = (data: Readonly<Record<string, string | number>>) => void;
|
|
|
1236
1236
|
/** Assembles one service node — the seam tests substitute to avoid a real build. */
|
|
1237
1237
|
type RunAssembler = (node: ServiceNode, address: string, cwd: string, report?: AssembleReport) => Promise<Bundle>;
|
|
1238
1238
|
//#endregion
|
|
1239
|
-
//#region ../../0-framework/3-tooling/cli/dist/dev-current-
|
|
1239
|
+
//#region ../../0-framework/3-tooling/cli/dist/dev-current-ChYXqIRT.d.mts
|
|
1240
1240
|
//#region src/composer-config.d.ts
|
|
1241
1241
|
/** Composer's configuration and the `prisma.config.ts` that declares it. */
|
|
1242
1242
|
interface ComposerConfigSource {
|
|
@@ -1464,6 +1464,12 @@ interface DevInput {
|
|
|
1464
1464
|
readonly entry: string;
|
|
1465
1465
|
readonly name?: string | undefined;
|
|
1466
1466
|
readonly fresh?: boolean | undefined;
|
|
1467
|
+
/**
|
|
1468
|
+
* Return once every service answers and leave the app running, with no
|
|
1469
|
+
* watch loop: the session is already closed and stopping it stops nothing.
|
|
1470
|
+
* `devStop` stops the app later.
|
|
1471
|
+
*/
|
|
1472
|
+
readonly detach?: boolean | undefined;
|
|
1467
1473
|
readonly cwd?: string | undefined;
|
|
1468
1474
|
readonly onEvent?: ((event: DevEvent) => void) | undefined;
|
|
1469
1475
|
}
|
|
@@ -1474,9 +1480,9 @@ interface DevSession {
|
|
|
1474
1480
|
/** The initial front door, already merged across attachments. */
|
|
1475
1481
|
readonly endpoints: readonly ServiceEndpoint[];
|
|
1476
1482
|
/** Stop the watch loop and the app's services (emulators and data stay up).
|
|
1477
|
-
* Idempotent; emits 'stopping'/'stopped'; resolves `closed`. */
|
|
1483
|
+
* Idempotent; emits 'stopping'/'stopped'; resolves `closed`. A no-op for a detached session. */
|
|
1478
1484
|
stop(): Promise<void>;
|
|
1479
|
-
/** Settles when the session has fully stopped (via stop()). */
|
|
1485
|
+
/** Settles when the session has fully stopped (via stop()); already settled for a detached session. */
|
|
1480
1486
|
readonly closed: Promise<void>;
|
|
1481
1487
|
}
|
|
1482
1488
|
/** In-package variant threading the injection seam, which the family's
|
|
@@ -1521,7 +1527,7 @@ declare function devUrl(input: DevUrlInput): Promise<Result$1<DevUrl, CliStructu
|
|
|
1521
1527
|
/** Stops the directory's current app: its service processes and database servers. Data and ports stay. */
|
|
1522
1528
|
declare function devStop(input: DevStopInput): Promise<Result$1<DevStopped, CliStructuredError>>;
|
|
1523
1529
|
//#endregion
|
|
1524
|
-
//#region ../../0-framework/3-tooling/cli/dist/family-
|
|
1530
|
+
//#region ../../0-framework/3-tooling/cli/dist/family-BIyR33Uq.d.mts
|
|
1525
1531
|
//#region src/family/family.d.ts
|
|
1526
1532
|
/**
|
|
1527
1533
|
* The control-plane operations the family's handlers call. These are the
|
|
@@ -1546,4 +1552,4 @@ interface CreateComposerFamilyOptions {
|
|
|
1546
1552
|
}
|
|
1547
1553
|
//#endregion
|
|
1548
1554
|
export { Result$1 as _, DeployEvent as a, DevInput as c, DevStopped as d, DevUrl as f, AssembledServices as g, ServiceEndpoint as h, ComposerConfigSource as i, DevSession as l, OperationDeps as m, CreateComposerFamilyOptions as n, DeployInput as o, DevUrlInput as p, realOperations as r, DeploySuccess as s, ComposerOperations as t, DevStopInput as u, CliStructuredError as v };
|
|
1549
|
-
//# sourceMappingURL=family-
|
|
1555
|
+
//# sourceMappingURL=family-BIyR33Uq-BDM09XC2.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"family-
|
|
1
|
+
{"version":3,"file":"family-BIyR33Uq-BDM09XC2.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-C8hNl6eR.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-current-ChYXqIRT.d.mts","../../../0-framework/3-tooling/cli/dist/family-BIyR33Uq.d.mts"],"x_google_ignoreList":[1],"mappings":"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"}
|
package/dist/family.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as Result, i as ComposerConfigSource, n as CreateComposerFamilyOptions$1, r as realOperations, t as ComposerOperations, v as CliStructuredError$1 } from "./family-
|
|
1
|
+
import { _ as Result, i as ComposerConfigSource, n as CreateComposerFamilyOptions$1, r as realOperations, t as ComposerOperations, v as CliStructuredError$1 } from "./family-BIyR33Uq-BDM09XC2.mjs";
|
|
2
2
|
import { CommandFamily, 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
1
|
import { a as alchemyCommandLine, i as sectionMissing, t as checkComposerConfig } from "./composer-config-CY9fET8H-CgnpfWc2.mjs";
|
|
2
|
-
import { a as executionDiagnostics, i as devWithDeps, n as devStop, r as devUrl, t as deployWithDeps } from "./dev-current-
|
|
2
|
+
import { a as executionDiagnostics, i as devWithDeps, n as devStop, r as devUrl, t as deployWithDeps } from "./dev-current-Bm7Yrsmt-CEeCNPfn.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
|
|
@@ -446,11 +446,28 @@ Generated stack file: ${event.stackFilePath}\nRun \`${event.reproduceCommand}\`
|
|
|
446
446
|
}
|
|
447
447
|
};
|
|
448
448
|
}
|
|
449
|
+
/** A detached session owns nothing to stop, so a Ctrl-C before it was ready stops the app the way `prisma dev stop` does. */
|
|
450
|
+
async function stopDetachedApp(operations, ctx) {
|
|
451
|
+
const stopped = await operations.devStop({
|
|
452
|
+
config: ctx.config,
|
|
453
|
+
cwd: ctx.cwd
|
|
454
|
+
});
|
|
455
|
+
if (stopped.ok) return;
|
|
456
|
+
ctx.report({
|
|
457
|
+
kind: "message",
|
|
458
|
+
severity: "warn",
|
|
459
|
+
text: `The app could not be stopped: ${stopped.failure.message} Run \`prisma dev stop\`.`
|
|
460
|
+
});
|
|
461
|
+
}
|
|
449
462
|
const createDevCommand = (operations) => defineSessionCommand({
|
|
450
463
|
help: {
|
|
451
464
|
summary: "Bring up the application whose root node is <entry>'s default export, entirely on this machine.",
|
|
452
|
-
description: "Runs credential-free and watches the app for changes, reconverging on every edit. A node is one service, database or bucket in the app. Each node runs on a local emulator: a program on this machine that stands in for Prisma Cloud and runs services, databases or S3-compatible buckets. A node's address is its name in the app, with dots for a nested node (catalog.database). The app and where each node runs are recorded in this directory: `prisma dev url` works from here while `prisma dev` runs, and `prisma dev stop` also works after `prisma dev` was killed. Ending `prisma dev` stops its services and database servers; data and ports are kept.",
|
|
453
|
-
examples: [
|
|
465
|
+
description: "Runs credential-free and watches the app for changes, reconverging on every edit. A node is one service, database or bucket in the app. Each node runs on a local emulator: a program on this machine that stands in for Prisma Cloud and runs services, databases or S3-compatible buckets. A node's address is its name in the app, with dots for a nested node (catalog.database). The app and where each node runs are recorded in this directory: `prisma dev url` works from here while `prisma dev` runs, and `prisma dev stop` also works after `prisma dev` was killed. Ending `prisma dev` stops its services and database servers; data and ports are kept. With --detach it returns once every service answers and leaves the app running without watching for changes, until `prisma dev stop`.",
|
|
466
|
+
examples: [
|
|
467
|
+
"{bin} dev module.ts",
|
|
468
|
+
"{bin} dev module.ts --fresh",
|
|
469
|
+
"{bin} dev module.ts --detach"
|
|
470
|
+
]
|
|
454
471
|
},
|
|
455
472
|
args: {
|
|
456
473
|
positionals: { entry: positional.string({
|
|
@@ -462,7 +479,8 @@ const createDevCommand = (operations) => defineSessionCommand({
|
|
|
462
479
|
brief: "Override the root node's name — the dev instance's application name.",
|
|
463
480
|
placeholder: "name"
|
|
464
481
|
}),
|
|
465
|
-
fresh: flag.boolean({ brief: "Destroy the dev stack and wipe the dev state directory before starting." })
|
|
482
|
+
fresh: flag.boolean({ brief: "Destroy the dev stack and wipe the dev state directory before starting." }),
|
|
483
|
+
detach: flag.boolean({ brief: "Return once every service answers and leave the app running without watching for changes. Use it in scripts, agents and CI. `prisma dev stop` stops the app." })
|
|
466
484
|
}
|
|
467
485
|
},
|
|
468
486
|
needs: { config: composerSection },
|
|
@@ -474,10 +492,15 @@ const createDevCommand = (operations) => defineSessionCommand({
|
|
|
474
492
|
config: ctx.config,
|
|
475
493
|
name: args.flags.name,
|
|
476
494
|
fresh: args.flags.fresh,
|
|
495
|
+
detach: args.flags.detach,
|
|
477
496
|
cwd: ctx.cwd,
|
|
478
497
|
onEvent: reportDevEvent(ctx.report, ctx.lastChild)
|
|
479
498
|
}, { alchemy: coalescedConverge(alchemy) });
|
|
480
499
|
if (!result.ok) return settleConvergeFailure(result.failure, ctx);
|
|
500
|
+
if (args.flags.detach) {
|
|
501
|
+
if (ctx.signal.aborted) await stopDetachedApp(operations, ctx);
|
|
502
|
+
return ok(void 0);
|
|
503
|
+
}
|
|
481
504
|
await stopRequested(ctx.signal);
|
|
482
505
|
await result.value.stop();
|
|
483
506
|
return ok(void 0);
|
package/dist/family.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"family.mjs","names":["createComposerFamily","createFrameworkFamily"],"sources":["../../../0-framework/3-tooling/cli/dist/family.mjs","../src/family/emulator-list.ts","../src/exports/family.ts"],"sourcesContent":["import { i as devWithDeps, n as devUrl, o as deployWithDeps, s as executionDiagnostics, t as devStop } from \"./dev-current-DbNTaH74.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. A node is one service, database or bucket in the app. Each node runs on a local emulator: a program on this machine that stands in for Prisma Cloud and runs services, databases or S3-compatible buckets. A node's address is its name in the app, with dots for a nested node (catalog.database). The app and where each node runs are recorded in this directory: `prisma dev url` works from here while `prisma dev` runs, and `prisma dev stop` also works after `prisma dev` was killed. Ending `prisma dev` stops its services and database servers; data and ports are kept.\",\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/commands/dev-stop.ts\n/**\n* `dev stop` — stops the app `prisma dev` last ran from this directory, as\n* ending `prisma dev` would: its service processes and database servers.\n* For an app whose `prisma dev` was killed without the chance to stop it.\n*/\nconst createDevStopCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Stop the app `prisma dev` last ran from this directory: its service processes and local database servers. Data and ports are kept for the next `prisma dev`.\",\n\t\tdescription: \"Ending `prisma dev` with Ctrl-C does the same. Run this when `prisma dev` was killed without a chance to stop the app, or before deleting the directory. The emulators keep running; other directories may be using them.\",\n\t\texamples: [\"{bin} dev stop\"]\n\t},\n\targs: {},\n\tneeds: { config: composerSection },\n\thandler: async (_args, ctx) => {\n\t\tconst result = await operations.devStop({\n\t\t\tconfig: ctx.config,\n\t\t\tcwd: ctx.cwd\n\t\t});\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst { app, stopped } = result.value;\n\t\treturn ok(ctx.present({ data: result.value }, {\n\t\t\thuman: (ui) => [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `Stopped ${ui.emphasize(app)}. Its data and ports are kept for the next \\`prisma dev\\`.`\n\t\t\t}, ...stopped.length === 0 ? [] : [{\n\t\t\t\tkind: \"table\",\n\t\t\t\tcolumns: [\"Address\", \"Kind\"],\n\t\t\t\trows: stopped.map(({ address, kind }) => [address, kind])\n\t\t\t}]],\n\t\t\tstdout: () => [],\n\t\t\tjson: () => result.value,\n\t\t\tnext: () => []\n\t\t}));\n\t}\n});\n//#endregion\n//#region src/family/commands/dev-url.ts\n/**\n* `dev url <address>` — where a node of the app `prisma dev` runs from this\n* directory answers locally. A data command: the URL is its stdout line, so\n* `$(prisma dev url gateway --format human)` is the URL alone.\n*/\nconst createDevUrlCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Print the local URL of a node (a service, database or bucket in your app) that `prisma dev` runs from this directory: a service's HTTP URL, a database's connection string, or a bucket's S3 address.\",\n\t\tdescription: \"Reads what the last `prisma dev` in this directory recorded and starts nothing, so run it while `prisma dev` is running; a node that is not running is an error. With --format human the URL alone goes to stdout. In a script, the JSON result holds it: prisma dev url gateway | jq -er 'select(.kind==\\\"result\\\").envelope.result.url'.\",\n\t\texamples: [\"{bin} dev url gateway\", \"{bin} dev url catalog.database --json\"]\n\t},\n\targs: { positionals: { address: positional.string({\n\t\tbrief: \"The node's address: its name in the app, with dots for a nested node, such as catalog.database.\",\n\t\tplaceholder: \"address\"\n\t}) } },\n\tneeds: { config: composerSection },\n\thandler: async (args, ctx) => {\n\t\tconst result = await operations.devUrl({\n\t\t\tconfig: ctx.config,\n\t\t\taddress: args.positionals.address,\n\t\t\tcwd: ctx.cwd\n\t\t});\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst node = result.value;\n\t\treturn ok(ctx.present({ data: node }, {\n\t\t\thuman: (ui) => [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `The ${node.kind} ${ui.emphasize(node.address)} is ${node.state} at ${node.url}`\n\t\t\t}],\n\t\t\tstdout: () => [node.url],\n\t\t\tjson: () => node,\n\t\t\tnext: () => []\n\t\t}));\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`, `dev`, `dev url` and `dev stop`, keyed by the\n* path they are meant to mount at; the host decides where each one mounts.\n* A host may add commands of its own through `commands` — the published\n* family adds `emulator list`, which needs no project. `destroy` and `log`\n* are programmatic operations in `@prisma/composer/control`, not commands.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdev: devWithDeps,\n\tdevUrl,\n\tdevStop\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\t\"dev url\": createDevUrlCommand(operations),\n\t\t\t\"dev stop\": createDevStopCommand(operations),\n\t\t\t...options.commands\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","/**\n * `emulator list` — every local emulator on this machine and every\n * instance it holds. It needs no project and no config. The listing comes\n * from the Prisma Cloud domain, so the command is assembled into the\n * family here, where both domains may be imported.\n */\n\nimport { toEngineError } from '@internal/cli/family';\nimport type { EmulatorList, EmulatorListing } from '@internal/dev-emulators';\nimport type { CliStructuredError as ComposerError } from '@internal/foundation/errors';\nimport type { Result } from '@internal/foundation/result';\nimport { defineCommand } from '@prisma/cli-engine';\nimport { notOk, ok } from '@prisma/cli-engine/protocol';\n\nexport type ListEmulators = () => Promise<Result<EmulatorList, ComposerError>>;\n\n/** Loaded on first use, so nothing of the emulators' clients loads with the family. */\nexport const listEmulators: ListEmulators = async () =>\n (await import('@internal/dev-emulators')).listEmulators();\n\nconst EMULATOR_NAMES = {\n service: 'Service emulator',\n database: 'Database emulator',\n bucket: 'Bucket emulator',\n} as const;\n\n/** The node and directory that started an instance, when Composer's labels say. */\nfunction startedBy(labels: Readonly<Record<string, string>>): string | undefined {\n const address = labels['composer.address'];\n const directory = labels['composer.directory'];\n if (address === undefined) return undefined;\n return directory === undefined ? address : `${address} in ${directory}`;\n}\n\nfunction labelOf(emulator: EmulatorListing, dim: (text: string) => string): string {\n const name = EMULATOR_NAMES[emulator.kind];\n if (!emulator.running || emulator.url === null) return `${name} ${dim('(not running)')}`;\n if (emulator.error !== null) {\n return `${name} at ${emulator.url}: could not list its instances (${emulator.error.code}: ${emulator.error.message})`;\n }\n return `${name} at ${emulator.url}`;\n}\n\nfunction statusOf(emulator: EmulatorListing): 'ok' | 'info' | 'error' {\n if (emulator.error !== null) return 'error';\n return emulator.running ? 'ok' : 'info';\n}\n\nexport const createEmulatorListCommand = (list: ListEmulators) =>\n defineCommand({\n help: {\n summary:\n 'List the local emulators on this machine — the programs `prisma dev` starts to run ' +\n 'services, databases and S3-compatible buckets without Prisma Cloud — with every ' +\n 'instance each one holds.',\n description:\n 'Needs no project: it shows every directory’s instances. An emulator that is not ' +\n 'running is listed with no instances, and one that runs but cannot be listed is ' +\n 'shown with the error. Each instance’s labels say which directory, ' +\n 'app and node started it. A stopped instance keeps its port and data until it is ' +\n 'deleted.',\n examples: ['{bin} emulator list', '{bin} emulator list --json'],\n },\n args: {},\n handler: async (_args, ctx) => {\n const result = await list();\n if (!result.ok) return notOk(toEngineError(result.failure));\n const { emulators } = result.value;\n return ok(\n ctx.present(\n { data: result.value },\n {\n human: (ui) => [\n {\n kind: 'tree',\n roots: emulators.map((emulator) => ({\n label: labelOf(emulator, ui.dim),\n status: statusOf(emulator),\n children: emulator.instances.map((instance) => {\n const by = startedBy(instance.labels);\n return {\n label: [\n instance.id,\n instance.url,\n instance.state,\n ...(by ? [ui.dim(by)] : []),\n ].join(' '),\n };\n }),\n })),\n },\n ],\n stdout: () => [],\n json: () => result.value,\n next: () => [],\n },\n ),\n );\n },\n });\n","/**\n * Public surface (the `./family` subpath): composer's engine `CommandFamily`,\n * for hosts that mount composer's commands into their own CLI — the `prisma`\n * bin does exactly this.\n *\n * Kept apart from `@prisma/composer`'s `./control` on purpose. `./control` is\n * the programmatic deploy pipeline; this is the command surface: grammar, help\n * and arg validation belong to the engine, and the handlers behind them are\n * the same operations `./control` exposes.\n *\n * Its static graph is alchemy-free and effect-free, so importing it costs a\n * host nothing until a composer command actually runs.\n */\n\nimport {\n createComposerFamily as createFrameworkFamily,\n type CreateComposerFamilyOptions as FrameworkFamilyOptions,\n} from '@internal/cli/family';\nimport type { CommandFamily } from '@prisma/cli-engine';\nimport {\n createEmulatorListCommand,\n type ListEmulators,\n listEmulators,\n} from '../family/emulator-list.ts';\n\nexport * from '@internal/cli/family';\nexport type { ListEmulators } from '../family/emulator-list.ts';\n\nexport interface CreateComposerFamilyOptions extends FrameworkFamilyOptions {\n /** Defaults to the real listing of this machine's emulators. */\n readonly listEmulators?: ListEmulators | undefined;\n}\n\n/** Composer's command family: `deploy`, `dev`, `dev url`, `dev stop` and `emulator list`, keyed by the path each is meant to mount at. */\nexport function createComposerFamily(options: CreateComposerFamilyOptions = {}): CommandFamily {\n return createFrameworkFamily({\n ...options,\n commands: {\n 'emulator list': createEmulatorListCommand(options.listEmulators ?? listEmulators),\n ...options.commands,\n },\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BA,SAAS,iBAAiB,KAAK;CAC9B,OAAO,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC;EAC7B,MAAM;EACN,OAAO;CACR,CAAC;AACF;;AAEA,SAAS,cAAc,OAAO;CAC7B,OAAO,IAAI,mBAAmB,MAAM,MAAM,MAAM,SAAS;EACxD,UAAU,MAAM;EAChB,aAAa,iBAAiB,MAAM,GAAG;EACvC,GAAG,MAAM,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI;EAChD,GAAG,MAAM,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,MAAM,MAAM;EACtD,GAAG,MAAM,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,MAAM,KAAK;EACnD,GAAG,MAAM,YAAY,KAAK,IAAI,CAAC,IAAI,EAAE,SAAS,MAAM,QAAQ;EAC5D,OAAO;CACR,CAAC;AACF;;;AAKA,SAAS,cAAc,KAAK;CAC3B,OAAO,OAAO,eAAe;EAC5B,MAAM,cAAc,mBAAmB,UAAU;EACjD,OAAO;GACN,GAAG,MAAM,IAAI,MAAM;IAClB,SAAS,YAAY;IACrB,MAAM,YAAY;IAClB,KAAK,YAAY;IACjB,KAAK,YAAY;GAClB,CAAC;GACD;EACD;CACD;AACD;;;AAGA,SAAS,cAAc,MAAM;CAC5B,OAAO;EACN,SAAS,KAAK;EACd,aAAa;GACZ,aAAa,KAAK;GAClB,QAAQ,KAAK;EACd;CACD;AACD;;;;;AAKA,SAAS,cAAc,SAAS;CAC/B,MAAM,cAAc,qBAAqB,OAAO;CAChD,IAAI,gBAAgB,KAAK,GAAG,OAAO,CAAC;CACpC,OAAO,CAAC;EACP,MAAM;EACN,OAAO,kCAAkC,YAAY,IAAI;EACzD,SAAS,YAAY;EACrB,QAAQ,yBAAyB,YAAY;CAC9C,CAAC;AACF;;;;;;;;;;;AAWA,SAAS,sBAAsB,SAAS,KAAK;CAC5C,MAAM,QAAQ,IAAI,UAAU;CAC5B,IAAI,UAAU,KAAK,KAAK,MAAM,aAAa,GAAG,OAAO,GAAG,oBAAoB,EAAE,aAAa,cAAc,OAAO,EAAE,CAAC,CAAC;CACpH,OAAO,MAAM,cAAc,OAAO,CAAC;AACpC;;;;;;;;;;;;;;;;;;;;;;AAsBA,SAAS,eAAe,QAAQ,KAAK,SAAS;CAC7C,IAAI,CAAC,OAAO,IAAI,OAAO,sBAAsB,OAAO,SAAS,GAAG;CAChE,OAAO,GAAG,QAAQ,OAAO,KAAK,CAAC;AAChC;AAGA,SAAS,WAAW,SAAS,MAAM;CAClC,MAAM,QAAQ,QAAQ,SAAS;CAC/B,OAAO;EACN,MAAM,QAAQ;EACd,UAAU;EACV,SAAS,QAAQ;EACjB,GAAG,QAAQ,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,KAAK,QAAQ,IAAI;EACpD,aAAa,CAAC;GACb,MAAM;GACN,OAAO,QAAQ;EAChB,CAAC;EACD,GAAG,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,EAAE;EACpD,GAAG,QAAQ,UAAU,KAAK,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,QAAQ,MAAM,EAAE;CACrE;AACD;AACA,SAAS,OAAO,UAAU,MAAM;CAC/B,OAAO;EACN,IAAI;EACJ,aAAa,SAAS,KAAK,YAAY,WAAW,SAAS,IAAI,CAAC;CACjE;AACD;AACA,SAAS,SAAS,KAAK,YAAY;CAClC,MAAM,OAAO,WAAW,MAAM;CAC9B,IAAI,QAAQ,KAAK,KAAK,SAAS,KAAK,GAAG,OAAO,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;CAC7E,MAAM,UAAU,oBAAoB,KAAK,IAAI;CAC7C,IAAI,CAAC,QAAQ,IAAI,OAAO,OAAO,QAAQ,UAAU,IAAI;CACrD,OAAO;EACN,IAAI;EACJ,OAAO;GACN,OAAO,QAAQ;GACf;EACD;EACA,aAAa,CAAC;CACf;AACD;AACA,MAAM,kBAAkB,oBAAoB;CAC3C,MAAM;CACN;CACA,QAAQ,SAAS,UAAU;AAC5B,CAAC;;;;;;;;;;;;AAcD,eAAe,cAAc,KAAK;CACjC,QAAQ,MAAM,IAAI,iBAAiB,EAAA,EAAI;AACxC;AAGA,MAAM,cAAc;CACnB,SAAS;CACT,UAAU;CACV,SAAS;CACT,WAAW;CACX,OAAO;CACP,QAAQ;AACT;AACA,SAAS,UAAU,MAAM;CACxB,OAAO,KAAK,SAAS,qBAAqB,YAAY,KAAK,YAAY,YAAY,KAAK;AACzF;AACA,SAAS,OAAO,MAAM;CACrB,OAAO,KAAK,SAAS,qBAAqB,mBAAmB,KAAK,YAAY,UAAU,KAAK;AAC9F;;AAEA,SAAS,eAAe,IAAI;CAC3B,IAAI,KAAK,KAAK,OAAO,GAAG,OAAO,KAAK,MAAM,EAAE,CAAC,EAAE;CAC/C,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,IAAA,CAAK,QAAQ,CAAC,EAAE;CAC9C,MAAM,UAAU,KAAK,MAAM,KAAK,GAAG;CACnC,OAAO,GAAG,OAAO,KAAK,MAAM,UAAU,EAAE,CAAC,EAAE,IAAI,OAAO,UAAU,EAAE,EAAE;AACrE;;AAEA,SAAS,cAAc,OAAO;CAC7B,MAAM,KAAK,OAAO,MAAM,IAAI;CAC5B,IAAI,MAAM,SAAS,gBAAgB,OAAO;EACzC,MAAM;EACN,MAAM,UAAU,MAAM,IAAI;EAC1B;EACA,GAAG,MAAM,KAAK,SAAS,qBAAqB,EAAE,UAAU,kBAAkB,IAAI,CAAC;CAChF;CACA,OAAO;EACN,MAAM;EACN,MAAM,GAAG,UAAU,MAAM,IAAI,EAAE,IAAI,eAAe,MAAM,UAAU,EAAE;EACpE;EACA,SAAS,MAAM;EACf,MAAM;GACL,GAAG,MAAM;GACT,YAAY,MAAM;EACnB;CACD;AACD;AACA,MAAM,uBAAuB,eAAe,cAAc;CACzD,MAAM;EACL,SAAS;EACT,UAAU,CAAC,0BAA0B,0CAA0C;CAChF;CACA,MAAM;EACL,aAAa,EAAE,OAAO,WAAW,OAAO;GACvC,OAAO;GACP,aAAa;EACd,CAAC,EAAE;EACH,OAAO;GACN,MAAM,KAAK,OAAO;IACjB,OAAO;IACP,aAAa;GACd,CAAC;GACD,OAAO,KAAK,OAAO;IAClB,OAAO;IACP,aAAa;GACd,CAAC;GACD,QAAQ,KAAK,OAAO;IACnB,OAAO;IACP,aAAa;GACd,CAAC;GACD,SAAS,KAAK,OAAO;IACpB,OAAO;IACP,aAAa;GACd,CAAC;EACF;CACD;CACA,OAAO;EACN,QAAQ;EACR,aAAa;CACd;CACA,UAAU;CACV,SAAS,OAAO,MAAM,QAAQ;EAC7B,MAAM,UAAU,cAAc,GAAG;EACjC,OAAO,eAAe,MAAM,WAAW,OAAO;GAC7C,OAAO,KAAK,YAAY;GACxB,QAAQ,IAAI;GACZ,MAAM,KAAK,MAAM;GACjB,OAAO,KAAK,MAAM;GAClB,KAAK,IAAI;GACT,YAAY,KAAK,MAAM;GACvB,UAAU,KAAK,MAAM;GACrB,UAAU,UAAU,IAAI,OAAO,cAAc,KAAK,CAAC;EACpD,GAAG,cAAc;GAChB;GACA,aAAa,MAAM,cAAc,GAAG;GACpC,QAAQ,IAAI;EACb,CAAC,CAAC,GAAG,MAAM,EAAE,SAAS,iBAAiB;GACtC,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,aAAa,MAAM,eAAe,UAAU;GACrF,KAAK,MAAM,QAAQ,SAAS,SAAS,CAAC,GAAG,KAAK,MAAM,UAAU,KAAK,UAAU,IAAI,OAAO,QAAQ,KAAK,GAAG,IAAI,OAAO;IAClH,MAAM;IACN,MAAM,KAAK;IACX,KAAK,OAAO;GACb,CAAC;GACD,OAAO,IAAI,QAAQ,EAAE,MAAM;IAC1B,SAAS,WAAW;IACpB;GACD,EAAE,GAAG;IACJ,QAAQ,OAAO,YAAY,KAAK,IAAI,CAAC;KACpC,MAAM;KACN,QAAQ;KACR,MAAM,YAAY,OAAO;IAC1B,CAAC,IAAI,CAAC;KACL,MAAM;KACN,QAAQ;KACR,MAAM,YAAY,GAAG,UAAU,QAAQ,GAAG,EAAE,GAAG,OAAO;IACvD,GAAG;KACF,MAAM;KACN,SAAS,CAAC,WAAW,UAAU;KAC/B,MAAM,QAAQ,MAAM,KAAK,SAAS,CAAC,KAAK,SAAS,KAAK,SAAS,KAAK,WAAW,GAAG,OAAO,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC1H,CAAC;IACD,cAAc,CAAC;IACf,aAAa;KACZ,SAAS,WAAW;KACpB;IACD;IACA,YAAY,CAAC;GACd,CAAC;EACF,CAAC;CACF;AACD,CAAC;AAGD,MAAM,YAAY;;AAElB,SAAS,cAAc,QAAQ;CAC9B,IAAI,OAAO,SAAS,OAAO,QAAQ,QAAQ;CAC3C,OAAO,IAAI,SAAS,YAAY;EAC/B,OAAO,iBAAiB,eAAe,QAAQ,GAAG,EAAE,MAAM,KAAK,CAAC;CACjE,CAAC;AACF;;;;;;;;;;AAUA,SAAS,kBAAkB,KAAK;CAC/B,IAAI;CACJ,IAAI;CACJ,MAAM,SAAS,eAAe;EAC7B,MAAM,UAAU,IAAI,UAAU;EAC9B,MAAM,UAAU,QAAQ,WAAW,KAAK,SAAS,KAAK,CAAC;EACvD,OAAO;EACP,QAAQ,WAAW;GAClB,IAAI,SAAS,SAAS,OAAO,KAAK;EACnC,CAAC;EACD,OAAO;CACR;CACA,QAAQ,eAAe;EACtB,MAAM,UAAU;EAChB,IAAI,YAAY,KAAK,GAAG,OAAO,MAAM,UAAU;EAC/C,WAAW,QAAQ,WAAW;GAC7B,SAAS,KAAK;GACd,OAAO,MAAM,UAAU;EACxB,CAAC;EACD,OAAO;CACR;AACD;;AAEA,SAAS,eAAe,WAAW;CAClC,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,GAAG,MAAM;EACpC,MAAM,QAAQ,EAAE,QAAQ,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,MAAM,GAAG,CAAC,CAAC;EACjE,IAAI,UAAU,GAAG,OAAO;EACxB,OAAO,EAAE,UAAU,EAAE,UAAU,KAAK,EAAE,UAAU,EAAE,UAAU,IAAI;CACjE,CAAC;AACF;;;;;AAKA,SAAS,eAAe,QAAQ,WAAW;CAC1C,IAAI,aAAa;CACjB,QAAQ,UAAU;EACjB,QAAQ,MAAM,MAAd;GACC,KAAK;IACJ,OAAO;KACN,MAAM;KACN,SAAS;KACT,QAAQ;IACT,CAAC;IACD,KAAK,MAAM,YAAY,eAAe,MAAM,SAAS,GAAG,OAAO;KAC9D,MAAM;KACN,MAAM,SAAS;KACf,KAAK,SAAS;IACf,CAAC;IACD;GACD,KAAK;IACJ,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM,GAAG,MAAM,QAAQ;IACxB,CAAC;IACD;GACD,KAAK;IACJ,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM,mBAAmB,MAAM;IAChC,CAAC;IACD;GACD,KAAK;IACJ,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM,GAAG,MAAM,KAAK;IACrB,CAAC;IACD;GACD,KAAK;IACJ,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM,gBAAgB,MAAM;IAC7B,CAAC;IACD;GACD,KAAK,mBAAmB;IACvB,MAAM,QAAQ,UAAU;IACxB,IAAI,UAAU,KAAK,KAAK,MAAM,WAAW,MAAM;IAC/C,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM;wBACa,MAAM,cAAc,UAAU,MAAM,iBAAiB,UAAU,MAAM,IAAI;IAC7F,CAAC;IACD,OAAO;KACN,MAAM;KACN,QAAQ;MACP,MAAM;MACN,OAAO,kCAAkC,MAAM,IAAI;MACnD,SAAS,MAAM;MACf,QAAQ,yBAAyB,MAAM;KACxC;IACD,CAAC;IACD;GACD;GACA,KAAK;IACJ,OAAO;KACN,MAAM;KACN,MAAM;KACN,IAAI;IACL,CAAC;IACD;GACD,KAAK;IACJ,aAAa;IACb,OAAO;KACN,MAAM;KACN,UAAU;KACV,MAAM,8BAA8B,MAAM;IAC3C,CAAC;IACD;GACD,KAAK;IACJ,OAAO;KACN,MAAM;KACN,MAAM;KACN,IAAI;KACJ,SAAS,aAAa,YAAY;IACnC,CAAC;IACD;EACF;CACD;AACD;AACA,MAAM,oBAAoB,eAAe,qBAAqB;CAC7D,MAAM;EACL,SAAS;EACT,aAAa;EACb,UAAU,CAAC,uBAAuB,6BAA6B;CAChE;CACA,MAAM;EACL,aAAa,EAAE,OAAO,WAAW,OAAO;GACvC,OAAO;GACP,aAAa;EACd,CAAC,EAAE;EACH,OAAO;GACN,MAAM,KAAK,OAAO;IACjB,OAAO;IACP,aAAa;GACd,CAAC;GACD,OAAO,KAAK,QAAQ,EAAE,OAAO,0EAA0E,CAAC;EACzG;CACD;CACA,OAAO,EAAE,QAAQ,gBAAgB;CACjC,UAAU;CACV,SAAS,OAAO,MAAM,QAAQ;EAC7B,MAAM,UAAU,cAAc,GAAG;EACjC,MAAM,SAAS,MAAM,WAAW,IAAI;GACnC,OAAO,KAAK,YAAY;GACxB,QAAQ,IAAI;GACZ,MAAM,KAAK,MAAM;GACjB,OAAO,KAAK,MAAM;GAClB,KAAK,IAAI;GACT,SAAS,eAAe,IAAI,QAAQ,IAAI,SAAS;EAClD,GAAG,EAAE,SAAS,kBAAkB,OAAO,EAAE,CAAC;EAC1C,IAAI,CAAC,OAAO,IAAI,OAAO,sBAAsB,OAAO,SAAS,GAAG;EAChE,MAAM,cAAc,IAAI,MAAM;EAC9B,MAAM,OAAO,MAAM,KAAK;EACxB,OAAO,GAAG,KAAK,CAAC;CACjB;AACD,CAAC;;;;;;AAQD,MAAM,wBAAwB,eAAe,cAAc;CAC1D,MAAM;EACL,SAAS;EACT,aAAa;EACb,UAAU,CAAC,gBAAgB;CAC5B;CACA,MAAM,CAAC;CACP,OAAO,EAAE,QAAQ,gBAAgB;CACjC,SAAS,OAAO,OAAO,QAAQ;EAC9B,MAAM,SAAS,MAAM,WAAW,QAAQ;GACvC,QAAQ,IAAI;GACZ,KAAK,IAAI;EACV,CAAC;EACD,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,cAAc,OAAO,OAAO,CAAC;EAC1D,MAAM,EAAE,KAAK,YAAY,OAAO;EAChC,OAAO,GAAG,IAAI,QAAQ,EAAE,MAAM,OAAO,MAAM,GAAG;GAC7C,QAAQ,OAAO,CAAC;IACf,MAAM;IACN,QAAQ;IACR,MAAM,WAAW,GAAG,UAAU,GAAG,EAAE;GACpC,GAAG,GAAG,QAAQ,WAAW,IAAI,CAAC,IAAI,CAAC;IAClC,MAAM;IACN,SAAS,CAAC,WAAW,MAAM;IAC3B,MAAM,QAAQ,KAAK,EAAE,SAAS,WAAW,CAAC,SAAS,IAAI,CAAC;GACzD,CAAC,CAAC;GACF,cAAc,CAAC;GACf,YAAY,OAAO;GACnB,YAAY,CAAC;EACd,CAAC,CAAC;CACH;AACD,CAAC;;;;;;AAQD,MAAM,uBAAuB,eAAe,cAAc;CACzD,MAAM;EACL,SAAS;EACT,aAAa;EACb,UAAU,CAAC,yBAAyB,uCAAuC;CAC5E;CACA,MAAM,EAAE,aAAa,EAAE,SAAS,WAAW,OAAO;EACjD,OAAO;EACP,aAAa;CACd,CAAC,EAAE,EAAE;CACL,OAAO,EAAE,QAAQ,gBAAgB;CACjC,SAAS,OAAO,MAAM,QAAQ;EAC7B,MAAM,SAAS,MAAM,WAAW,OAAO;GACtC,QAAQ,IAAI;GACZ,SAAS,KAAK,YAAY;GAC1B,KAAK,IAAI;EACV,CAAC;EACD,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,cAAc,OAAO,OAAO,CAAC;EAC1D,MAAM,OAAO,OAAO;EACpB,OAAO,GAAG,IAAI,QAAQ,EAAE,MAAM,KAAK,GAAG;GACrC,QAAQ,OAAO,CAAC;IACf,MAAM;IACN,QAAQ;IACR,MAAM,OAAO,KAAK,KAAK,GAAG,GAAG,UAAU,KAAK,OAAO,EAAE,MAAM,KAAK,MAAM,MAAM,KAAK;GAClF,CAAC;GACD,cAAc,CAAC,KAAK,GAAG;GACvB,YAAY;GACZ,YAAY,CAAC;EACd,CAAC,CAAC;CACH;AACD,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AA0BD,MAAM,iBAAiB;CACtB,QAAQ;CACR,KAAK;CACL;CACA;AACD;;AAEA,MAAM,gBAAgB;AACtB,SAASA,uBAAqB,UAAU,CAAC,GAAG;CAC3C,MAAM,aAAa,QAAQ,cAAc;CACzC,OAAO,oBAAoB;EAC1B,eAAe;EACf,UAAU;GACT,QAAQ,oBAAoB,UAAU;GACtC,KAAK,iBAAiB,UAAU;GAChC,WAAW,oBAAoB,UAAU;GACzC,YAAY,qBAAqB,UAAU;GAC3C,GAAG,QAAQ;EACZ;EACA,aAAa;CACd,CAAC;AACF;;;;;;;;;;ACzlBA,MAAa,gBAA+B,aACzC,MAAM,OAAO,uBAAA,CAA4B,cAAc;AAE1D,MAAM,iBAAiB;CACrB,SAAS;CACT,UAAU;CACV,QAAQ;AACV;;AAGA,SAAS,UAAU,QAA8D;CAC/E,MAAM,UAAU,OAAO;CACvB,MAAM,YAAY,OAAO;CACzB,IAAI,YAAY,KAAA,GAAW,OAAO,KAAA;CAClC,OAAO,cAAc,KAAA,IAAY,UAAU,GAAG,QAAQ,MAAM;AAC9D;AAEA,SAAS,QAAQ,UAA2B,KAAuC;CACjF,MAAM,OAAO,eAAe,SAAS;CACrC,IAAI,CAAC,SAAS,WAAW,SAAS,QAAQ,MAAM,OAAO,GAAG,KAAK,GAAG,IAAI,eAAe;CACrF,IAAI,SAAS,UAAU,MACrB,OAAO,GAAG,KAAK,MAAM,SAAS,IAAI,kCAAkC,SAAS,MAAM,KAAK,IAAI,SAAS,MAAM,QAAQ;CAErH,OAAO,GAAG,KAAK,MAAM,SAAS;AAChC;AAEA,SAAS,SAAS,UAAoD;CACpE,IAAI,SAAS,UAAU,MAAM,OAAO;CACpC,OAAO,SAAS,UAAU,OAAO;AACnC;AAEA,MAAa,6BAA6B,SACxC,cAAc;CACZ,MAAM;EACJ,SACE;EAGF,aACE;EAKF,UAAU,CAAC,uBAAuB,4BAA4B;CAChE;CACA,MAAM,CAAC;CACP,SAAS,OAAO,OAAO,QAAQ;EAC7B,MAAM,SAAS,MAAM,KAAK;EAC1B,IAAI,CAAC,OAAO,IAAI,OAAO,MAAM,cAAc,OAAO,OAAO,CAAC;EAC1D,MAAM,EAAE,cAAc,OAAO;EAC7B,OAAO,GACL,IAAI,QACF,EAAE,MAAM,OAAO,MAAM,GACrB;GACE,QAAQ,OAAO,CACb;IACE,MAAM;IACN,OAAO,UAAU,KAAK,cAAc;KAClC,OAAO,QAAQ,UAAU,GAAG,GAAG;KAC/B,QAAQ,SAAS,QAAQ;KACzB,UAAU,SAAS,UAAU,KAAK,aAAa;MAC7C,MAAM,KAAK,UAAU,SAAS,MAAM;MACpC,OAAO,EACL,OAAO;OACL,SAAS;OACT,SAAS;OACT,SAAS;OACT,GAAI,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC;MAC3B,CAAC,CAAC,KAAK,IAAI,EACb;KACF,CAAC;IACH,EAAE;GACJ,CACF;GACA,cAAc,CAAC;GACf,YAAY,OAAO;GACnB,YAAY,CAAC;EACf,CACF,CACF;CACF;AACF,CAAC;;;;;;;;;;;;;;;;;ACjEH,SAAgB,qBAAqB,UAAuC,CAAC,GAAkB;CAC7F,OAAOC,uBAAsB;EAC3B,GAAG;EACH,UAAU;GACR,iBAAiB,0BAA0B,QAAQ,iBAAiB,aAAa;GACjF,GAAG,QAAQ;EACb;CACF,CAAC;AACH"}
|
|
1
|
+
{"version":3,"file":"family.mjs","names":["createComposerFamily","createFrameworkFamily"],"sources":["../../../0-framework/3-tooling/cli/dist/family.mjs","../src/family/emulator-list.ts","../src/exports/family.ts"],"sourcesContent":["import { i as devWithDeps, n as devUrl, o as deployWithDeps, s as executionDiagnostics, t as devStop } from \"./dev-current-Bm7Yrsmt.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}\n/** A detached session owns nothing to stop, so a Ctrl-C before it was ready stops the app the way `prisma dev stop` does. */\nasync function stopDetachedApp(operations, ctx) {\n\tconst stopped = await operations.devStop({\n\t\tconfig: ctx.config,\n\t\tcwd: ctx.cwd\n\t});\n\tif (stopped.ok) return;\n\tctx.report({\n\t\tkind: \"message\",\n\t\tseverity: \"warn\",\n\t\ttext: `The app could not be stopped: ${stopped.failure.message} Run \\`prisma dev stop\\`.`\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. A node is one service, database or bucket in the app. Each node runs on a local emulator: a program on this machine that stands in for Prisma Cloud and runs services, databases or S3-compatible buckets. A node's address is its name in the app, with dots for a nested node (catalog.database). The app and where each node runs are recorded in this directory: `prisma dev url` works from here while `prisma dev` runs, and `prisma dev stop` also works after `prisma dev` was killed. Ending `prisma dev` stops its services and database servers; data and ports are kept. With --detach it returns once every service answers and leaves the app running without watching for changes, until `prisma dev stop`.\",\n\t\texamples: [\n\t\t\t\"{bin} dev module.ts\",\n\t\t\t\"{bin} dev module.ts --fresh\",\n\t\t\t\"{bin} dev module.ts --detach\"\n\t\t]\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\tdetach: flag.boolean({ brief: \"Return once every service answers and leave the app running without watching for changes. Use it in scripts, agents and CI. `prisma dev stop` stops the app.\" })\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\tdetach: args.flags.detach,\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\tif (args.flags.detach) {\n\t\t\tif (ctx.signal.aborted) await stopDetachedApp(operations, ctx);\n\t\t\treturn ok(void 0);\n\t\t}\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/commands/dev-stop.ts\n/**\n* `dev stop` — stops the app `prisma dev` last ran from this directory, as\n* ending `prisma dev` would: its service processes and database servers.\n* For an app whose `prisma dev` was killed without the chance to stop it.\n*/\nconst createDevStopCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Stop the app `prisma dev` last ran from this directory: its service processes and local database servers. Data and ports are kept for the next `prisma dev`.\",\n\t\tdescription: \"Ending `prisma dev` with Ctrl-C does the same. Run this when `prisma dev` was killed without a chance to stop the app, or before deleting the directory. The emulators keep running; other directories may be using them.\",\n\t\texamples: [\"{bin} dev stop\"]\n\t},\n\targs: {},\n\tneeds: { config: composerSection },\n\thandler: async (_args, ctx) => {\n\t\tconst result = await operations.devStop({\n\t\t\tconfig: ctx.config,\n\t\t\tcwd: ctx.cwd\n\t\t});\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst { app, stopped } = result.value;\n\t\treturn ok(ctx.present({ data: result.value }, {\n\t\t\thuman: (ui) => [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `Stopped ${ui.emphasize(app)}. Its data and ports are kept for the next \\`prisma dev\\`.`\n\t\t\t}, ...stopped.length === 0 ? [] : [{\n\t\t\t\tkind: \"table\",\n\t\t\t\tcolumns: [\"Address\", \"Kind\"],\n\t\t\t\trows: stopped.map(({ address, kind }) => [address, kind])\n\t\t\t}]],\n\t\t\tstdout: () => [],\n\t\t\tjson: () => result.value,\n\t\t\tnext: () => []\n\t\t}));\n\t}\n});\n//#endregion\n//#region src/family/commands/dev-url.ts\n/**\n* `dev url <address>` — where a node of the app `prisma dev` runs from this\n* directory answers locally. A data command: the URL is its stdout line, so\n* `$(prisma dev url gateway --format human)` is the URL alone.\n*/\nconst createDevUrlCommand = (operations) => defineCommand({\n\thelp: {\n\t\tsummary: \"Print the local URL of a node (a service, database or bucket in your app) that `prisma dev` runs from this directory: a service's HTTP URL, a database's connection string, or a bucket's S3 address.\",\n\t\tdescription: \"Reads what the last `prisma dev` in this directory recorded and starts nothing, so run it while `prisma dev` is running; a node that is not running is an error. With --format human the URL alone goes to stdout. In a script, the JSON result holds it: prisma dev url gateway | jq -er 'select(.kind==\\\"result\\\").envelope.result.url'.\",\n\t\texamples: [\"{bin} dev url gateway\", \"{bin} dev url catalog.database --json\"]\n\t},\n\targs: { positionals: { address: positional.string({\n\t\tbrief: \"The node's address: its name in the app, with dots for a nested node, such as catalog.database.\",\n\t\tplaceholder: \"address\"\n\t}) } },\n\tneeds: { config: composerSection },\n\thandler: async (args, ctx) => {\n\t\tconst result = await operations.devUrl({\n\t\t\tconfig: ctx.config,\n\t\t\taddress: args.positionals.address,\n\t\t\tcwd: ctx.cwd\n\t\t});\n\t\tif (!result.ok) return notOk(toEngineError(result.failure));\n\t\tconst node = result.value;\n\t\treturn ok(ctx.present({ data: node }, {\n\t\t\thuman: (ui) => [{\n\t\t\t\tkind: \"summary\",\n\t\t\t\tstatus: \"ok\",\n\t\t\t\ttext: `The ${node.kind} ${ui.emphasize(node.address)} is ${node.state} at ${node.url}`\n\t\t\t}],\n\t\t\tstdout: () => [node.url],\n\t\t\tjson: () => node,\n\t\t\tnext: () => []\n\t\t}));\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`, `dev`, `dev url` and `dev stop`, keyed by the\n* path they are meant to mount at; the host decides where each one mounts.\n* A host may add commands of its own through `commands` — the published\n* family adds `emulator list`, which needs no project. `destroy` and `log`\n* are programmatic operations in `@prisma/composer/control`, not commands.\n*/\nconst realOperations = {\n\tdeploy: deployWithDeps,\n\tdev: devWithDeps,\n\tdevUrl,\n\tdevStop\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\t\"dev url\": createDevUrlCommand(operations),\n\t\t\t\"dev stop\": createDevStopCommand(operations),\n\t\t\t...options.commands\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","/**\n * `emulator list` — every local emulator on this machine and every\n * instance it holds. It needs no project and no config. The listing comes\n * from the Prisma Cloud domain, so the command is assembled into the\n * family here, where both domains may be imported.\n */\n\nimport { toEngineError } from '@internal/cli/family';\nimport type { EmulatorList, EmulatorListing } from '@internal/dev-emulators';\nimport type { CliStructuredError as ComposerError } from '@internal/foundation/errors';\nimport type { Result } from '@internal/foundation/result';\nimport { defineCommand } from '@prisma/cli-engine';\nimport { notOk, ok } from '@prisma/cli-engine/protocol';\n\nexport type ListEmulators = () => Promise<Result<EmulatorList, ComposerError>>;\n\n/** Loaded on first use, so nothing of the emulators' clients loads with the family. */\nexport const listEmulators: ListEmulators = async () =>\n (await import('@internal/dev-emulators')).listEmulators();\n\nconst EMULATOR_NAMES = {\n service: 'Service emulator',\n database: 'Database emulator',\n bucket: 'Bucket emulator',\n} as const;\n\n/** The node and directory that started an instance, when Composer's labels say. */\nfunction startedBy(labels: Readonly<Record<string, string>>): string | undefined {\n const address = labels['composer.address'];\n const directory = labels['composer.directory'];\n if (address === undefined) return undefined;\n return directory === undefined ? address : `${address} in ${directory}`;\n}\n\nfunction labelOf(emulator: EmulatorListing, dim: (text: string) => string): string {\n const name = EMULATOR_NAMES[emulator.kind];\n if (!emulator.running || emulator.url === null) return `${name} ${dim('(not running)')}`;\n if (emulator.error !== null) {\n return `${name} at ${emulator.url}: could not list its instances (${emulator.error.code}: ${emulator.error.message})`;\n }\n return `${name} at ${emulator.url}`;\n}\n\nfunction statusOf(emulator: EmulatorListing): 'ok' | 'info' | 'error' {\n if (emulator.error !== null) return 'error';\n return emulator.running ? 'ok' : 'info';\n}\n\nexport const createEmulatorListCommand = (list: ListEmulators) =>\n defineCommand({\n help: {\n summary:\n 'List the local emulators on this machine — the programs `prisma dev` starts to run ' +\n 'services, databases and S3-compatible buckets without Prisma Cloud — with every ' +\n 'instance each one holds.',\n description:\n 'Needs no project: it shows every directory’s instances. An emulator that is not ' +\n 'running is listed with no instances, and one that runs but cannot be listed is ' +\n 'shown with the error. Each instance’s labels say which directory, ' +\n 'app and node started it. A stopped instance keeps its port and data until it is ' +\n 'deleted.',\n examples: ['{bin} emulator list', '{bin} emulator list --json'],\n },\n args: {},\n handler: async (_args, ctx) => {\n const result = await list();\n if (!result.ok) return notOk(toEngineError(result.failure));\n const { emulators } = result.value;\n return ok(\n ctx.present(\n { data: result.value },\n {\n human: (ui) => [\n {\n kind: 'tree',\n roots: emulators.map((emulator) => ({\n label: labelOf(emulator, ui.dim),\n status: statusOf(emulator),\n children: emulator.instances.map((instance) => {\n const by = startedBy(instance.labels);\n return {\n label: [\n instance.id,\n instance.url,\n instance.state,\n ...(by ? [ui.dim(by)] : []),\n ].join(' '),\n };\n }),\n })),\n },\n ],\n stdout: () => [],\n json: () => result.value,\n next: () => [],\n },\n ),\n );\n },\n });\n","/**\n * Public surface (the `./family` subpath): composer's engine `CommandFamily`,\n * for hosts that mount composer's commands into their own CLI — the `prisma`\n * bin does exactly this.\n *\n * Kept apart from `@prisma/composer`'s `./control` on purpose. `./control` is\n * the programmatic deploy pipeline; this is the command surface: grammar, help\n * and arg validation belong to the engine, and the handlers behind them are\n * the same operations `./control` exposes.\n *\n * Its static graph is alchemy-free and effect-free, so importing it costs a\n * host nothing until a composer command actually runs.\n */\n\nimport {\n createComposerFamily as createFrameworkFamily,\n type CreateComposerFamilyOptions as FrameworkFamilyOptions,\n} from '@internal/cli/family';\nimport type { CommandFamily } from '@prisma/cli-engine';\nimport {\n createEmulatorListCommand,\n type ListEmulators,\n listEmulators,\n} from '../family/emulator-list.ts';\n\nexport * from '@internal/cli/family';\nexport type { ListEmulators } from '../family/emulator-list.ts';\n\nexport interface CreateComposerFamilyOptions extends FrameworkFamilyOptions {\n /** Defaults to the real listing of this machine's emulators. */\n readonly listEmulators?: ListEmulators | undefined;\n}\n\n/** Composer's command family: `deploy`, `dev`, `dev url`, `dev stop` and `emulator list`, keyed by the path each is meant to mount at. */\nexport function createComposerFamily(options: CreateComposerFamilyOptions = {}): CommandFamily {\n return createFrameworkFamily({\n ...options,\n commands: {\n 'emulator list': createEmulatorListCommand(options.listEmulators ?? listEmulators),\n ...options.commands,\n },\n });\n}\n"],"mappings":"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"}
|
package/dist/testing.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as Result, a as DeployEvent, c as DevInput, d as DevStopped, f as DevUrl, g as AssembledServices, h as ServiceEndpoint, l as DevSession, m as OperationDeps, o as DeployInput, p as DevUrlInput, s as DeploySuccess, t as ComposerOperations, u as DevStopInput, v as CliStructuredError } from "./family-
|
|
1
|
+
import { _ as Result, a as DeployEvent, c as DevInput, d as DevStopped, f as DevUrl, g as AssembledServices, h as ServiceEndpoint, l as DevSession, m as OperationDeps, o as DeployInput, p as DevUrlInput, s as DeploySuccess, t as ComposerOperations, u as DevStopInput, v as CliStructuredError } from "./family-BIyR33Uq-BDM09XC2.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@prisma/composer-cli",
|
|
3
|
-
"version": "0.30.0-dev.
|
|
3
|
+
"version": "0.30.0-dev.6",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Prisma Composer's command family, which the `prisma` CLI mounts as `deploy`, `dev`, `dev url`, `dev stop` and `emulator list`.",
|
|
6
6
|
"exports": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"src"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@prisma/composer": "0.30.0-dev.
|
|
16
|
+
"@prisma/composer": "0.30.0-dev.6",
|
|
17
17
|
"alchemy": "2.0.0-beta.83",
|
|
18
18
|
"cross-spawn": "^7.0.6",
|
|
19
19
|
"effect": "4.0.3",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"@prisma/cli-engine": "0.7.0"
|
|
24
24
|
},
|
|
25
25
|
"devDependencies": {
|
|
26
|
-
"@internal/cli": "0.30.0-dev.
|
|
27
|
-
"@internal/dev-emulators": "0.30.0-dev.
|
|
28
|
-
"@internal/foundation": "0.30.0-dev.
|
|
29
|
-
"@internal/tsdown-config": "0.30.0-dev.
|
|
26
|
+
"@internal/cli": "0.30.0-dev.6",
|
|
27
|
+
"@internal/dev-emulators": "0.30.0-dev.6",
|
|
28
|
+
"@internal/foundation": "0.30.0-dev.6",
|
|
29
|
+
"@internal/tsdown-config": "0.30.0-dev.6",
|
|
30
30
|
"@types/bun": "^1.3.13",
|
|
31
31
|
"@prisma/cli-engine": "0.7.0",
|
|
32
32
|
"@types/node": "^26.0.1",
|