@prisma/composer 0.6.0-dev.18 → 0.6.0-dev.19

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 (91) hide show
  1. package/dist/{app-config-aIrriqVU-D6lJHzh2.d.mts → app-config-aIrriqVU-Dpj1RqnY.d.mts} +3 -2
  2. package/dist/app-config-aIrriqVU-Dpj1RqnY.d.mts.map +1 -0
  3. package/dist/config-BeBRB-6m.d.mts +1 -0
  4. package/dist/config.d.mts +2 -2
  5. package/dist/control.d.mts +219 -3
  6. package/dist/control.d.mts.map +1 -0
  7. package/dist/control.mjs +69 -1
  8. package/dist/control.mjs.map +1 -0
  9. package/dist/deploy-BeBRB-6m.d.mts +1 -0
  10. package/dist/deploy.d.mts +2 -2
  11. package/dist/deploy.mjs +1 -1
  12. package/dist/{dist-C0dNEgS-.mjs → dist-C5rZnr4n.mjs} +2 -2
  13. package/dist/{dist-C0dNEgS-.mjs.map → dist-C5rZnr4n.mjs.map} +1 -1
  14. package/dist/{errors-DkXcnjPx.mjs → errors-0e8IVwzi.mjs} +2 -3
  15. package/dist/{errors-DkXcnjPx.mjs.map → errors-0e8IVwzi.mjs.map} +1 -1
  16. package/dist/{execute-deploy-destroy-DfVJUICu-AMM8CwgV.mjs → execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs} +5 -6
  17. package/dist/{execute-deploy-destroy-DfVJUICu-AMM8CwgV.mjs.map → execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs.map} +1 -1
  18. package/dist/{execute-dev-BMTFWfFc-BoKbcFVF.mjs → execute-dev-BMTFWfFc-CGDFqR4w.mjs} +6 -7
  19. package/dist/{execute-dev-BMTFWfFc-BoKbcFVF.mjs.map → execute-dev-BMTFWfFc-CGDFqR4w.mjs.map} +1 -1
  20. package/dist/{execute-log-Cay9hlKW-B0tmRtrY.mjs → execute-log-Cay9hlKW-ChlIv192.mjs} +5 -6
  21. package/dist/{execute-log-Cay9hlKW-DrMeVOXq.mjs.map → execute-log-Cay9hlKW-ChlIv192.mjs.map} +1 -1
  22. package/dist/{graph-BJgUfGB0-7fmubS_y.mjs → graph-BJgUfGB0-kvgFzT4q.mjs} +2 -2
  23. package/dist/{graph-BJgUfGB0-7fmubS_y.mjs.map → graph-BJgUfGB0-kvgFzT4q.mjs.map} +1 -1
  24. package/dist/graph-DqklX5Sf-BNS2aO1j.d.mts +18 -0
  25. package/dist/graph-DqklX5Sf-BNS2aO1j.d.mts.map +1 -0
  26. package/dist/{graph-DqklX5Sf-CdNH3lA7.d.mts → graph-types-N6brq1zY-1VMNwtkJ.d.mts} +2 -17
  27. package/dist/graph-types-N6brq1zY-1VMNwtkJ.d.mts.map +1 -0
  28. package/dist/{index-DuF5iI3i.d.mts → index-DryPyF9U.d.mts} +3 -2
  29. package/dist/index-DryPyF9U.d.mts.map +1 -0
  30. package/dist/index.d.mts +3 -2
  31. package/dist/index.mjs +2 -2
  32. package/dist/{local-target-D3u_wuNF.mjs → local-target-DnA2E8IN.mjs} +2 -2
  33. package/dist/{local-target-D3u_wuNF.mjs.map → local-target-DnA2E8IN.mjs.map} +1 -1
  34. package/dist/local-target.d.mts +1 -1
  35. package/dist/local-target.mjs +1 -1
  36. package/dist/{nextjs-DLyeRR7M-BfUbLXwr.d.mts → nextjs-DLyeRR7M-DZODs9tk.d.mts} +3 -3
  37. package/dist/{nextjs-DLyeRR7M-BfUbLXwr.d.mts.map → nextjs-DLyeRR7M-DZODs9tk.d.mts.map} +1 -1
  38. package/dist/nextjs-control.d.mts +4 -4
  39. package/dist/nextjs.d.mts +1 -1
  40. package/dist/node-control.d.mts +3 -3
  41. package/dist/node.d.mts +2 -2
  42. package/dist/{pipeline-AoW8zq4I-DM74ygtH.mjs → pipeline-AoW8zq4I-CUon5KZH.mjs} +5 -5
  43. package/dist/{pipeline-AoW8zq4I-DM74ygtH.mjs.map → pipeline-AoW8zq4I-CUon5KZH.mjs.map} +1 -1
  44. package/dist/report.d.mts +2 -2
  45. package/dist/{log-DfT2hHqi-CDp9nfI5.mjs → result-CY_TB7bn.mjs} +84 -63
  46. package/dist/result-CY_TB7bn.mjs.map +1 -0
  47. package/dist/{run-alchemy-D44OZlyB-DA7s331N.mjs → run-alchemy-D44OZlyB-gVq_0gf4.mjs} +3 -3
  48. package/dist/{run-alchemy-D44OZlyB-DA7s331N.mjs.map → run-alchemy-D44OZlyB-gVq_0gf4.mjs.map} +1 -1
  49. package/dist/service-rpc.d.mts +2 -2
  50. package/dist/service-rpc.mjs +2 -2
  51. package/dist/testing.d.mts +2 -54
  52. package/dist/testing.d.mts.map +1 -1
  53. package/dist/testing.mjs +1 -150
  54. package/dist/testing.mjs.map +1 -1
  55. package/package.json +11 -16
  56. package/src/exports/testing.ts +5 -1
  57. package/dist/app-config-aIrriqVU-D6lJHzh2.d.mts.map +0 -1
  58. package/dist/bin.mjs +0 -1344
  59. package/dist/bin.mjs.map +0 -1
  60. package/dist/config-CL7Jbve2.d.mts +0 -1
  61. package/dist/container-transport-DKmKg5JQ-CoY4XPma.mjs +0 -30
  62. package/dist/container-transport-DKmKg5JQ-CoY4XPma.mjs.map +0 -1
  63. package/dist/deploy-CL7Jbve2.d.mts +0 -1
  64. package/dist/execute-deploy-destroy-DfVJUICu-quUQ08T8.mjs +0 -316
  65. package/dist/execute-deploy-destroy-DfVJUICu-quUQ08T8.mjs.map +0 -1
  66. package/dist/execute-dev-BMTFWfFc-B1whS-Rr.mjs +0 -2011
  67. package/dist/execute-dev-BMTFWfFc-B1whS-Rr.mjs.map +0 -1
  68. package/dist/execute-log-Cay9hlKW-B0tmRtrY.mjs.map +0 -1
  69. package/dist/execute-log-Cay9hlKW-DrMeVOXq.mjs +0 -157
  70. package/dist/family-DkH0si4D-Uov_MuHV.d.mts +0 -27
  71. package/dist/family-DkH0si4D-Uov_MuHV.d.mts.map +0 -1
  72. package/dist/family.d.mts +0 -53
  73. package/dist/family.d.mts.map +0 -1
  74. package/dist/family.mjs +0 -1226
  75. package/dist/family.mjs.map +0 -1
  76. package/dist/graph-DqklX5Sf-CdNH3lA7.d.mts.map +0 -1
  77. package/dist/index-DuF5iI3i.d.mts.map +0 -1
  78. package/dist/local-target-H0IWu_FM.mjs +0 -68
  79. package/dist/local-target-H0IWu_FM.mjs.map +0 -1
  80. package/dist/log-DRnnWupy-9jbzL64M.d.mts +0 -324
  81. package/dist/log-DRnnWupy-9jbzL64M.d.mts.map +0 -1
  82. package/dist/log-DfT2hHqi-CDp9nfI5.mjs.map +0 -1
  83. package/dist/pipeline-AoW8zq4I-C6Qe0VaZ.mjs +0 -976
  84. package/dist/pipeline-AoW8zq4I-C6Qe0VaZ.mjs.map +0 -1
  85. package/dist/result-B4XjxVK6.mjs +0 -384
  86. package/dist/result-B4XjxVK6.mjs.map +0 -1
  87. package/dist/result-wonf1deB.mjs +0 -92
  88. package/dist/result-wonf1deB.mjs.map +0 -1
  89. package/dist/run-alchemy-D44OZlyB-DeDTFsB6.mjs +0 -93
  90. package/dist/run-alchemy-D44OZlyB-DeDTFsB6.mjs.map +0 -1
  91. package/src/exports/family.ts +0 -14
@@ -1,4 +1,5 @@
1
- import { I as ResourceNode, N as ProvisionNeed, S as ModuleNode, T as NodeId, W as ServiceNode, f as Graph, n as BuildAdapter, r as Config } from "./graph-DqklX5Sf-CdNH3lA7.mjs";
1
+ import { F as ResourceNode, M as ProvisionNeed, U as ServiceNode, d as Graph, n as Config, t as BuildAdapter, w as NodeId, x as ModuleNode } from "./graph-types-N6brq1zY-1VMNwtkJ.mjs";
2
+ import "./graph-DqklX5Sf-BNS2aO1j.mjs";
2
3
  import * as Alchemy from "alchemy";
3
4
  import { Input, StackServices } from "alchemy";
4
5
  import * as Effect from "effect/Effect";
@@ -519,4 +520,4 @@ interface PrismaAppConfig {
519
520
  declare function defineConfig(config: PrismaAppConfig): PrismaAppConfig;
520
521
  //#endregion
521
522
  export { ProvisionEdge as A, isBuildOnlyExtension as B, LoweredResult as C, PackageInput as D, Outputs as E, buildConfig as F, resolveStateLayer as G, lower as H, containerEnv as I, containerEnvVarName as L, ServiceLowering as M, StateDescriptor as N, PreflightInput as O, TeardownInput as P, defineConfig as R, LowerOptions as S, NodeDescriptor as T, lowering as U, joinDeployment as V, mergedProviders as W, LocalTargetEmulatorsInput as _, Bundle as a, LowerContext as b, ContainerInstance as c, DeployedNode as d, DeploymentResult as f, LocalTargetDescriptor as g, LocalTargetAttachment as h, AssembleInput as i, ProvisionerDescriptor as j, PrismaAppConfig as k, DEV_DIR as l, LocalTargetAttachInput as m, ApplicationDescriptor as n, ContainerCredentials as o, ExtensionDescriptor as p, Artifact as r, ContainerDescriptor as s, AlchemyStateLayer as t, DeployedEntity as u, LocalTargetProvidersInput as v, Lowering as w, LowerError as x, LocateContainerInput as y, deserializeContainers as z };
522
- //# sourceMappingURL=app-config-aIrriqVU-D6lJHzh2.d.mts.map
523
+ //# sourceMappingURL=app-config-aIrriqVU-Dpj1RqnY.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config-aIrriqVU-Dpj1RqnY.d.mts","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-aIrriqVU.d.mts"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ import "./app-config-aIrriqVU-Dpj1RqnY.mjs";
package/dist/config.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { B as isBuildOnlyExtension, I as containerEnv, L as containerEnvVarName, N as StateDescriptor, O as PreflightInput, P as TeardownInput, R as defineConfig, T as NodeDescriptor, _ as LocalTargetEmulatorsInput, c as ContainerInstance, g as LocalTargetDescriptor, h as LocalTargetAttachment, k as PrismaAppConfig, l as DEV_DIR, m as LocalTargetAttachInput, o as ContainerCredentials, p as ExtensionDescriptor, s as ContainerDescriptor, v as LocalTargetProvidersInput, y as LocateContainerInput, z as deserializeContainers } from "./app-config-aIrriqVU-D6lJHzh2.mjs";
2
- import "./config-CL7Jbve2.mjs";
1
+ import { B as isBuildOnlyExtension, I as containerEnv, L as containerEnvVarName, N as StateDescriptor, O as PreflightInput, P as TeardownInput, R as defineConfig, T as NodeDescriptor, _ as LocalTargetEmulatorsInput, c as ContainerInstance, g as LocalTargetDescriptor, h as LocalTargetAttachment, k as PrismaAppConfig, l as DEV_DIR, m as LocalTargetAttachInput, o as ContainerCredentials, p as ExtensionDescriptor, s as ContainerDescriptor, v as LocalTargetProvidersInput, y as LocateContainerInput, z as deserializeContainers } from "./app-config-aIrriqVU-Dpj1RqnY.mjs";
2
+ import "./config-BeBRB-6m.mjs";
3
3
  export { type ContainerCredentials, type ContainerDescriptor, type ContainerInstance, DEV_DIR, ExtensionDescriptor, LocalTargetAttachInput, LocalTargetAttachment, LocalTargetDescriptor, LocalTargetEmulatorsInput, LocalTargetProvidersInput, type LocateContainerInput, NodeDescriptor, PreflightInput, PrismaAppConfig, StateDescriptor, TeardownInput, containerEnv, containerEnvVarName, defineConfig, deserializeContainers, isBuildOnlyExtension };
@@ -1,3 +1,219 @@
1
- import { ft as CliStructuredError } from "./graph-DqklX5Sf-CdNH3lA7.mjs";
2
- import { A as Result, C as dev, E as log, O as NotOk, T as executionDiagnostics, a as DestroyEvent, c as DevEvent, d as ExecutionDiagnostics, f as LogAttached, g as LogLine, h as LogInput, i as DeploymentSummary, k as Ok, l as DevInput, m as LogEvent, n as DeploySuccess, o as DestroyInput, r as DeployedNodeSummary, s as DestroyTarget, t as DeployInput, u as DevSession, v as ServiceEndpoint, x as destroy, y as deploy } from "./log-DRnnWupy-9jbzL64M.mjs";
3
- export { type CliStructuredError, type DeployInput, type DeploySuccess, type DeployedNodeSummary, type DeploymentSummary, type DestroyEvent, type DestroyInput, type DestroyTarget, type DevEvent, type DevInput, type DevSession, type ExecutionDiagnostics, type LogAttached, type LogEvent, type LogInput, type LogLine, type NotOk, type Ok, type Result, type ServiceEndpoint, deploy, destroy, dev, executionDiagnostics, log };
1
+ import { dt as CliStructuredError } from "./graph-types-N6brq1zY-1VMNwtkJ.mjs";
2
+ import { u as DeployedEntity } from "./app-config-aIrriqVU-Dpj1RqnY.mjs";
3
+ import "./config-BeBRB-6m.mjs";
4
+ import "./index-DryPyF9U.mjs";
5
+ import "./deploy-BeBRB-6m.mjs";
6
+ //#region ../../0-framework/0-foundation/foundation/dist/result.d.mts
7
+ //#region src/result.d.ts
8
+ /**
9
+ * Represents a successful result containing a value.
10
+ */
11
+ interface Ok<T> {
12
+ readonly ok: true;
13
+ readonly value: T;
14
+ assertOk(): T;
15
+ assertNotOk(): never;
16
+ }
17
+ /**
18
+ * Represents an unsuccessful result containing failure details.
19
+ */
20
+ interface NotOk<F> {
21
+ readonly ok: false;
22
+ readonly failure: F;
23
+ assertOk(): never;
24
+ assertNotOk(): F;
25
+ }
26
+ /**
27
+ * A discriminated union representing either success (Ok) or failure (NotOk).
28
+ *
29
+ * @typeParam T - The success value type
30
+ * @typeParam F - The failure details type
31
+ */
32
+ type Result<T, F> = Ok<T> | NotOk<F>;
33
+ //#endregion
34
+ //#region ../../0-framework/3-tooling/cli/dist/log-DRnnWupy.d.mts
35
+ //#region src/deployment-summary.d.ts
36
+ /** The serializable projection of DeploymentResult — what CAN cross the process
37
+ * boundary. Writer (report hook) and reader (deploy operation) share this shape. */
38
+ interface DeployedNodeSummary {
39
+ readonly address: string;
40
+ readonly entities: readonly DeployedEntity[];
41
+ }
42
+ interface DeploymentSummary {
43
+ readonly app: string;
44
+ readonly nodes: readonly DeployedNodeSummary[];
45
+ }
46
+ //#endregion
47
+ //#region src/operations/shared.d.ts
48
+ /** A running service's dotted address plus its local URL — what `dev` reports
49
+ * as the front door and `log` reports as the tailable services. */
50
+ interface ServiceEndpoint {
51
+ readonly address: string;
52
+ readonly url: string;
53
+ }
54
+ /**
55
+ * Where a failed execution left its artifacts — details of the CURRENT
56
+ * execution mechanism (a spawned deploy-engine child driving a generated
57
+ * stack file), for hosts that want to print a reproduce hint. The mechanism
58
+ * is not part of the surface's contract, so these fields may change or
59
+ * disappear if the mechanism does; branch on `code`/`message`/`cause` for
60
+ * anything durable.
61
+ */
62
+ interface ExecutionDiagnostics {
63
+ /** The child's exit status; undefined means the spawn itself threw, or the
64
+ * child was killed by a signal (`signal` then names it). */
65
+ readonly exitCode: number | undefined;
66
+ /** The signal that killed the child, when one did. A signal-killed converge
67
+ * is an abort the user asked for, not a failure of the deploy — a host
68
+ * should report it as an interruption and print no reproduce hint. */
69
+ readonly signal?: string | undefined;
70
+ readonly stackFilePath: string;
71
+ readonly reproduceCommand: string;
72
+ readonly cwd: string;
73
+ }
74
+ /**
75
+ * Reads the execution diagnostics an engine-failure error carries in
76
+ * `meta.diagnostics`; undefined for every other failure.
77
+ */
78
+ declare function executionDiagnostics(f: CliStructuredError): ExecutionDiagnostics | undefined;
79
+ //#endregion
80
+ //#region src/operations/deploy.d.ts
81
+ interface DeployInput {
82
+ /** Path to the entry module, resolved against `cwd` — same contract as `prisma-composer deploy <entry>`. */
83
+ readonly entry: string;
84
+ /** Override the root node's name (the `--name` flag's slot). */
85
+ readonly name?: string | undefined;
86
+ /** Target stage. ABSENT = production — bare deploy targets production (main.ts effectiveStage). */
87
+ readonly stage?: string | undefined;
88
+ /** Defaults to process.cwd(); the directory `.prisma-composer/` and `.alchemy` state live under. */
89
+ readonly cwd?: string | undefined;
90
+ }
91
+ interface DeploySuccess {
92
+ /** Parsed from the alchemy child's result file. Undefined when the child
93
+ * did not write one (injected fake alchemy, or a report-less apply). */
94
+ readonly summary: DeploymentSummary | undefined;
95
+ }
96
+ declare function deploy(input: DeployInput): Promise<Result<DeploySuccess, CliStructuredError>>;
97
+ //#endregion
98
+ //#region src/operations/destroy.d.ts
99
+ /** Destroy must name its target explicitly — no silent default to production. Encoded, not re-derived from flags. */
100
+ type DestroyTarget = {
101
+ readonly kind: 'production';
102
+ } | {
103
+ readonly kind: 'stage';
104
+ readonly stage: string;
105
+ };
106
+ type DestroyEvent =
107
+ /** Emitted before the pipeline when `<cwd>/.alchemy` is missing/empty. */
108
+ {
109
+ readonly kind: 'no-local-deploy-state';
110
+ readonly cwd: string;
111
+ };
112
+ interface DestroyInput {
113
+ readonly entry: string;
114
+ readonly name?: string | undefined;
115
+ readonly target: DestroyTarget;
116
+ readonly cwd?: string | undefined;
117
+ /** Mid-operation notifications, in real time. Rendering is the host's. */
118
+ readonly onEvent?: ((event: DestroyEvent) => void) | undefined;
119
+ }
120
+ declare function destroy(input: DestroyInput): Promise<Result<void, CliStructuredError>>;
121
+ //#endregion
122
+ //#region src/operations/dev.d.ts
123
+ type DevEvent =
124
+ /** Initial front door + after each successful re-converge. */
125
+ {
126
+ readonly kind: 'ready';
127
+ readonly endpoints: readonly ServiceEndpoint[];
128
+ } | {
129
+ readonly kind: 'unwatchable';
130
+ readonly address: string;
131
+ } | {
132
+ readonly kind: 'rebuild-failed';
133
+ readonly message: string;
134
+ } |
135
+ /** The file watcher itself errored (EMFILE, a vanished directory); the session keeps running. */
136
+ {
137
+ readonly kind: 'watch-error';
138
+ readonly message: string;
139
+ } |
140
+ /** The app keeps running, still watching. */
141
+ {
142
+ readonly kind: 'converge-failed';
143
+ readonly stackFilePath: string;
144
+ readonly reproduceCommand: string;
145
+ readonly cwd: string;
146
+ } | {
147
+ readonly kind: 'stopping';
148
+ } |
149
+ /** One service refused to stop during stop(); teardown continues and `stopped` still follows. */
150
+ {
151
+ readonly kind: 'stop-error';
152
+ readonly message: string;
153
+ } | {
154
+ readonly kind: 'stopped';
155
+ };
156
+ interface DevInput {
157
+ readonly entry: string;
158
+ readonly name?: string | undefined;
159
+ readonly fresh?: boolean | undefined;
160
+ readonly cwd?: string | undefined;
161
+ readonly onEvent?: ((event: DevEvent) => void) | undefined;
162
+ }
163
+ /** A running dev session. The operation NEVER touches process signal handlers —
164
+ * the host owns signals (and must evict alchemy's import-time SIGINT/SIGTERM
165
+ * listeners before installing its own; see run-dev.ts). */
166
+ interface DevSession {
167
+ /** The initial front door, already merged across attachments. */
168
+ readonly endpoints: readonly ServiceEndpoint[];
169
+ /** Stop the watch loop and the app's services (emulators and data stay up).
170
+ * Idempotent; emits 'stopping'/'stopped'; resolves `closed`. */
171
+ stop(): Promise<void>;
172
+ /** Settles when the session has fully stopped (via stop()). */
173
+ readonly closed: Promise<void>;
174
+ }
175
+ declare function dev(input: DevInput): Promise<Result<DevSession, CliStructuredError>>;
176
+ //#endregion
177
+ //#region src/operations/log.d.ts
178
+ interface LogLine {
179
+ readonly service: string;
180
+ readonly line: string;
181
+ }
182
+ type LogEvent =
183
+ /** One attachment's stream died; the others continue. */
184
+ {
185
+ readonly kind: 'stream-failed';
186
+ readonly message: string;
187
+ } |
188
+ /** The consumer fell behind and the bounded merge queue overflowed:
189
+ * `count` oldest lines were dropped since the last delivered line. */
190
+ {
191
+ readonly kind: 'lines-dropped';
192
+ readonly count: number;
193
+ };
194
+ interface LogInput {
195
+ readonly entry: string;
196
+ readonly name?: string | undefined;
197
+ /** Restrict to one service's dotted address; validated against running services. */
198
+ readonly address?: string | undefined;
199
+ /** Trailing history lines before live output. Defaults to 0 (live only) —
200
+ * the attachment contract's default; the CLI's user-facing default of 20 stays in main.ts. */
201
+ readonly tail?: number | undefined;
202
+ readonly cwd?: string | undefined;
203
+ /** Ends the stream when aborted. The host owns SIGINT/SIGTERM → abort. */
204
+ readonly signal?: AbortSignal | undefined;
205
+ readonly onEvent?: ((event: LogEvent) => void) | undefined;
206
+ }
207
+ interface LogAttached {
208
+ /** For the adapter's empty-services notice. */
209
+ readonly appName: string;
210
+ /** Every running service. EMPTY means nothing is running — a valid, non-failure state;
211
+ * `lines` is then an already-finished iterable. */
212
+ readonly services: readonly ServiceEndpoint[];
213
+ /** Merged, address-filtered stream; ends on signal abort or when every source ends. */
214
+ readonly lines: AsyncIterable<LogLine>;
215
+ }
216
+ declare function log(input: LogInput): Promise<Result<LogAttached, CliStructuredError>>;
217
+ //#endregion
218
+ export { type CliStructuredError, type DeployInput, type DeploySuccess, type DeployedNodeSummary, type DeploymentSummary, type DestroyEvent, type DestroyInput, type DestroyTarget, type DevEvent, type DevInput, type DevSession, type ExecutionDiagnostics, type LogAttached, type LogEvent, type LogInput, type LogLine, type NotOk, type Ok, type Result, type ServiceEndpoint, deploy, destroy, dev, executionDiagnostics, log };
219
+ //# sourceMappingURL=control.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/result.d.mts","../../../0-framework/3-tooling/cli/dist/log-DRnnWupy.d.mts"],"mappings":";;;;;;;;;;UAIU,GAAG;WACF;WACA,OAAO;EAChB,YAAY;EACZ;;;;;UAKQ,MAAM;WACL;WACA,SAAS;EAClB;EACA,eAAe;;;;;;;;KAQZ,OAAO,GAAG,KAAK,GAAG,KAAK,MAAM;;;;;;UCfxB;WACC;WACA,mBAAmB;;UAEpB;WACC;WACA,gBAAgB;;;;;;UAMjB;WACC;WACA;;;;;;;;;;UA2CD;;;WAGC;;;;WAIA;WACA;WACA;WACA;;;;;;iBAMM,qBAAqB,GAAG,qBAAqB;;;UAGpD;;WAEC;;WAEA;;WAEA;;WAEA;;UAED;;;WAGC,SAAS;;iBAEH,OAAO,OAAO,cAAc,QAAQ,OAAO,eAAe;;;;KAQtE;WACM;;WAEA;WACA;;KAEN;;;WAGM;WACA;;UAED;WACC;WACA;WACA,QAAQ;WACR;;WAEA,YAAY,OAAO;;iBAEb,QAAQ,OAAO,eAAe,QAAQ,aAAa;;;KAO/D;;;WAGM;WACA,oBAAoB;;WAEpB;WACA;;WAEA;WACA;;;;WAIA;WACA;;;;WAIA;WACA;WACA;WACA;;WAEA;;;;WAIA;WACA;;WAEA;;UAED;WACC;WACA;WACA;WACA;WACA,YAAY,OAAO;;;;;UAKpB;;WAEC,oBAAoB;;;EAG7B,QAAQ;;WAEC,QAAQ;;iBAEF,IAAI,OAAO,WAAW,QAAQ,OAAO,YAAY;;;UAcxD;WACC;WACA;;KAEN;;;WAGM;WACA;;;;;WAKA;WACA;;UAYD;WACC;WACA;;WAEA;;;WAGA;WACA;;WAEA,SAAS;WACT,YAAY,OAAO;;UAEpB;;WAEC;;;WAGA,mBAAmB;;WAEnB,OAAO,cAAc;;iBAEf,IAAI,OAAO,WAAW,QAAQ,OAAO,aAAa"}
package/dist/control.mjs CHANGED
@@ -1,2 +1,70 @@
1
- import { a as dev, r as destroy, s as log, t as deploy, u as executionDiagnostics } from "./log-DfT2hHqi-CDp9nfI5.mjs";
1
+ import { a as executionDiagnostics, o as executorLoadFailure, t as notOk } from "./result-CY_TB7bn.mjs";
2
+ //#region ../../0-framework/3-tooling/cli/dist/log-DfT2hHqi.mjs
3
+ async function deploy(input) {
4
+ return deployWithDeps(input, {});
5
+ }
6
+ /** In-package variant threading the injection seam (the CLI's RunDeps, unit
7
+ * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
8
+ * internal types and is not part of the published surface. */
9
+ async function deployWithDeps(input, deps) {
10
+ const cwd = input.cwd ?? process.cwd();
11
+ let executor;
12
+ try {
13
+ executor = await import("./execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs");
14
+ } catch (error) {
15
+ return notOk(executorLoadFailure("deploy", error, cwd));
16
+ }
17
+ return executor.executeDeploy(input, deps, cwd);
18
+ }
19
+ async function destroy(input) {
20
+ return destroyWithDeps(input, {});
21
+ }
22
+ /** In-package variant threading the injection seam (the CLI's RunDeps, unit
23
+ * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
24
+ * internal types and is not part of the published surface. */
25
+ async function destroyWithDeps(input, deps) {
26
+ const cwd = input.cwd ?? process.cwd();
27
+ let executor;
28
+ try {
29
+ executor = await import("./execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs");
30
+ } catch (error) {
31
+ return notOk(executorLoadFailure("destroy", error, cwd));
32
+ }
33
+ return executor.executeDestroy(input, deps, cwd);
34
+ }
35
+ async function dev(input) {
36
+ return devWithDeps(input, {});
37
+ }
38
+ /** In-package variant threading the injection seam (the CLI's RunDeps, unit
39
+ * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
40
+ * internal types and is not part of the published surface. */
41
+ async function devWithDeps(input, deps) {
42
+ const cwd = input.cwd ?? process.cwd();
43
+ let executor;
44
+ try {
45
+ executor = await import("./execute-dev-BMTFWfFc-CGDFqR4w.mjs");
46
+ } catch (error) {
47
+ return notOk(executorLoadFailure("dev", error, cwd));
48
+ }
49
+ return executor.executeDev(input, deps, cwd);
50
+ }
51
+ async function log(input) {
52
+ return logWithDeps(input, {});
53
+ }
54
+ /** In-package variant threading the injection seam (the CLI's LogRunDeps,
55
+ * unit tests). Deliberately NOT re-exported through `./control` — the seam
56
+ * mirrors internal types and is not part of the published surface. */
57
+ async function logWithDeps(input, deps) {
58
+ const cwd = input.cwd ?? process.cwd();
59
+ let executor;
60
+ try {
61
+ executor = await import("./execute-log-Cay9hlKW-ChlIv192.mjs");
62
+ } catch (error) {
63
+ return notOk(executorLoadFailure("log", error, cwd));
64
+ }
65
+ return executor.executeLog(input, deps, cwd);
66
+ }
67
+ //#endregion
2
68
  export { deploy, destroy, dev, executionDiagnostics, log };
69
+
70
+ //# sourceMappingURL=control.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"control.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/log-DfT2hHqi.mjs"],"sourcesContent":["import { n as executorLoadFailure } from \"./shared-BTnATsqm.mjs\";\nimport { notOk } from \"@internal/foundation/result\";\n//#region src/operations/deploy.ts\nasync function deploy(input) {\n\treturn deployWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function deployWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"deploy\", error, cwd));\n\t}\n\treturn executor.executeDeploy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/destroy.ts\nasync function destroy(input) {\n\treturn destroyWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function destroyWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-deploy-destroy-DfVJUICu.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"destroy\", error, cwd));\n\t}\n\treturn executor.executeDestroy(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/dev.ts\nasync function dev(input) {\n\treturn devWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's RunDeps, unit\n* tests). Deliberately NOT re-exported through `./control` — the seam mirrors\n* internal types and is not part of the published surface. */\nasync function devWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-dev-BMTFWfFc.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"dev\", error, cwd));\n\t}\n\treturn executor.executeDev(input, deps, cwd);\n}\n//#endregion\n//#region src/operations/log.ts\nasync function log(input) {\n\treturn logWithDeps(input, {});\n}\n/** In-package variant threading the injection seam (the CLI's LogRunDeps,\n* unit tests). Deliberately NOT re-exported through `./control` — the seam\n* mirrors internal types and is not part of the published surface. */\nasync function logWithDeps(input, deps) {\n\tconst cwd = input.cwd ?? process.cwd();\n\tlet executor;\n\ttry {\n\t\texecutor = await import(\"./execute-log-Cay9hlKW.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"log\", error, cwd));\n\t}\n\treturn executor.executeLog(input, deps, cwd);\n}\n//#endregion\nexport { destroy as a, deployWithDeps as c, devWithDeps as i, logWithDeps as n, destroyWithDeps as o, dev as r, deploy as s, log as t };\n\n//# sourceMappingURL=log-DfT2hHqi.mjs.map"],"mappings":";;AAGA,eAAe,OAAO,OAAO;CAC5B,OAAO,eAAe,OAAO,CAAC,CAAC;AAChC;;;;AAIA,eAAe,eAAe,OAAO,MAAM;CAC1C,MAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;CACrC,IAAI;CACJ,IAAI;EACH,WAAW,MAAM,OAAO;CACzB,SAAS,OAAO;EACf,OAAO,MAAM,oBAAoB,UAAU,OAAO,GAAG,CAAC;CACvD;CACA,OAAO,SAAS,cAAc,OAAO,MAAM,GAAG;AAC/C;AAGA,eAAe,QAAQ,OAAO;CAC7B,OAAO,gBAAgB,OAAO,CAAC,CAAC;AACjC;;;;AAIA,eAAe,gBAAgB,OAAO,MAAM;CAC3C,MAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;CACrC,IAAI;CACJ,IAAI;EACH,WAAW,MAAM,OAAO;CACzB,SAAS,OAAO;EACf,OAAO,MAAM,oBAAoB,WAAW,OAAO,GAAG,CAAC;CACxD;CACA,OAAO,SAAS,eAAe,OAAO,MAAM,GAAG;AAChD;AAGA,eAAe,IAAI,OAAO;CACzB,OAAO,YAAY,OAAO,CAAC,CAAC;AAC7B;;;;AAIA,eAAe,YAAY,OAAO,MAAM;CACvC,MAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;CACrC,IAAI;CACJ,IAAI;EACH,WAAW,MAAM,OAAO;CACzB,SAAS,OAAO;EACf,OAAO,MAAM,oBAAoB,OAAO,OAAO,GAAG,CAAC;CACpD;CACA,OAAO,SAAS,WAAW,OAAO,MAAM,GAAG;AAC5C;AAGA,eAAe,IAAI,OAAO;CACzB,OAAO,YAAY,OAAO,CAAC,CAAC;AAC7B;;;;AAIA,eAAe,YAAY,OAAO,MAAM;CACvC,MAAM,MAAM,MAAM,OAAO,QAAQ,IAAI;CACrC,IAAI;CACJ,IAAI;EACH,WAAW,MAAM,OAAO;CACzB,SAAS,OAAO;EACf,OAAO,MAAM,oBAAoB,OAAO,OAAO,GAAG,CAAC;CACpD;CACA,OAAO,SAAS,WAAW,OAAO,MAAM,GAAG;AAC5C"}
@@ -0,0 +1 @@
1
+ import "./app-config-aIrriqVU-Dpj1RqnY.mjs";
package/dist/deploy.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { A as ProvisionEdge, C as LoweredResult, D as PackageInput, E as Outputs, F as buildConfig, G as resolveStateLayer, H as lower, M as ServiceLowering, S as LowerOptions, U as lowering, V as joinDeployment, W as mergedProviders, a as Bundle, b as LowerContext, d as DeployedNode, f as DeploymentResult, i as AssembleInput, j as ProvisionerDescriptor, n as ApplicationDescriptor, r as Artifact, t as AlchemyStateLayer, u as DeployedEntity, w as Lowering, x as LowerError } from "./app-config-aIrriqVU-D6lJHzh2.mjs";
2
- import "./deploy-CL7Jbve2.mjs";
1
+ import { A as ProvisionEdge, C as LoweredResult, D as PackageInput, E as Outputs, F as buildConfig, G as resolveStateLayer, H as lower, M as ServiceLowering, S as LowerOptions, U as lowering, V as joinDeployment, W as mergedProviders, a as Bundle, b as LowerContext, d as DeployedNode, f as DeploymentResult, i as AssembleInput, j as ProvisionerDescriptor, n as ApplicationDescriptor, r as Artifact, t as AlchemyStateLayer, u as DeployedEntity, w as Lowering, x as LowerError } from "./app-config-aIrriqVU-Dpj1RqnY.mjs";
2
+ import "./deploy-BeBRB-6m.mjs";
3
3
  export { AlchemyStateLayer, ApplicationDescriptor, Artifact, AssembleInput, Bundle, DeployedEntity, DeployedNode, DeploymentResult, LowerContext, LowerError, LowerOptions, LoweredResult, Lowering, Outputs, PackageInput, ProvisionEdge, ProvisionerDescriptor, ServiceLowering, buildConfig, joinDeployment, lower, lowering, mergedProviders, resolveStateLayer };
package/dist/deploy.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { s as isParamSource, t as Load } from "./graph-BJgUfGB0-7fmubS_y.mjs";
1
+ import { s as isParamSource, t as Load } from "./graph-BJgUfGB0-kvgFzT4q.mjs";
2
2
  import { r as deserializeContainers } from "./container-transport-DKmKg5JQ-DKWs0ubK.mjs";
3
3
  import * as Alchemy from "alchemy";
4
4
  import * as Effect from "effect/Effect";
@@ -1,4 +1,4 @@
1
- import "./graph-BJgUfGB0-7fmubS_y.mjs";
1
+ import "./graph-BJgUfGB0-kvgFzT4q.mjs";
2
2
  import "./secret-DoWGmN7m-DO5Brq1Y.mjs";
3
3
  //#region ../../0-framework/1-core/core/dist/index.mjs
4
4
  /**
@@ -126,4 +126,4 @@ function hydrateSync(root, config) {
126
126
  //#endregion
127
127
  export { number as a, string as c, inputManifest as i, hydrate as n, param as o, hydrateSync as r, paramManifest as s, configOf as t };
128
128
 
129
- //# sourceMappingURL=dist-C0dNEgS-.mjs.map
129
+ //# sourceMappingURL=dist-C5rZnr4n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"dist-C0dNEgS-.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/index.mjs"],"sourcesContent":["import { _ as LoadError, a as isNode, c as isSecretSource, d as paramSource, f as provisionNeed, g as service, h as secretSource, i as freezeNode, l as module, m as secret, n as ResourceNodeBase, o as isParamSource, p as resource, r as dependency, s as isProvisionNeed, t as Load, u as paramNeed } from \"./graph-BJgUfGB0.mjs\";\nimport { SecretBox, isSecretString } from \"@internal/foundation/secret\";\n//#region src/config.ts\n/**\n* A data-only descriptor of a param's schema for introspection — the\n* validator's vendor tag, never the schema's own `validate`. `configOf`\n* reports it where the old model reported `type: 'string' | 'number'`, so the\n* config surface stays enumerable without leaking a function. Nothing consumes\n* more than the vendor tag yet; a richer projection (e.g. a JSON-Schema export\n* when the vendor offers one) is an additive change if a consumer needs it.\n*/\nfunction projectSchema(schema) {\n\treturn { vendor: schema[\"~standard\"].vendor };\n}\n/**\n* Enumerates every config param the service declares: each input's connection\n* params, then the service's own params. Pure — reads `root.inputs`/`params`\n* directly, executes nothing but the (also pure) schema projection. Deliberately\n* does not go through `Load`: a service's connection-end inputs are legitimately\n* unwired from its own point of view (wiring is an enclosing module's concern),\n* and this introspects one service's declared shape regardless of how — or\n* whether — it composes into a larger graph.\n*/\nfunction configOf(root) {\n\tconst entries = [];\n\tfor (const [input, value] of Object.entries(root.inputs)) {\n\t\tif (typeof value !== \"object\" || value === null) continue;\n\t\tfor (const [name, param] of Object.entries(value.connection.params)) entries.push({\n\t\t\towner: { input },\n\t\t\tname,\n\t\t\tschema: projectSchema(param.schema),\n\t\t\toptional: param.optional === true,\n\t\t\tdefault: param.default\n\t\t});\n\t}\n\tfor (const [name, param] of Object.entries(root.params)) entries.push({\n\t\towner: \"service\",\n\t\tname,\n\t\tschema: projectSchema(param.schema),\n\t\toptional: param.optional === true,\n\t\tdefault: param.default\n\t});\n\treturn entries;\n}\n/**\n* The app's input manifest: every service input binding a `provision()` call\n* supplied (ADR-0042). Pure graph introspection, TARGET-AGNOSTIC — a deploy\n* target's recursive descent classifies the binding's leaves (its preflight\n* verifies each `envSecret` leaf's platform var exists before deploy; the\n* values are provisioned out-of-band).\n*/\nfunction inputManifest(graph) {\n\treturn graph.inputBindings;\n}\n/**\n* The app's param-binding manifest: every param a `provision()` call bound —\n* literal or an opaque, target-defined `ParamSource` — at the address that\n* declared it. The param sibling of `provisionManifest`, for a deploy\n* target's own preflight to consume. Pure graph introspection,\n* TARGET-AGNOSTIC; a param this manifest omits simply falls back to its own\n* `default` at `buildConfig`.\n*/\nfunction paramManifest(graph) {\n\treturn graph.params;\n}\nfunction scalarSchema(name, check) {\n\treturn { \"~standard\": {\n\t\tversion: 1,\n\t\tvendor: \"@prisma/composer\",\n\t\tvalidate: (value) => check(value) ? { value } : { issues: [{ message: `expected ${name}, got ${typeof value}` }] }\n\t} };\n}\nconst stringSchema = scalarSchema(\"string\", (v) => typeof v === \"string\");\nconst numberSchema = scalarSchema(\"number\", (v) => typeof v === \"number\" && Number.isFinite(v));\nfunction withFacets(schema, opts) {\n\treturn {\n\t\tschema,\n\t\t...opts.optional !== void 0 ? { optional: opts.optional } : {},\n\t\t...opts.default !== void 0 ? { default: opts.default } : {},\n\t\t...opts.provision !== void 0 ? { provision: opts.provision } : {}\n\t};\n}\n/** A string-valued param. */\nfunction string(opts = {}) {\n\treturn withFacets(stringSchema, opts);\n}\n/** A number-valued param. */\nfunction number(opts = {}) {\n\treturn withFacets(numberSchema, opts);\n}\n/** A param over any caller-supplied Standard Schema — a structured `jobs`, say. */\nfunction param(schema, opts = {}) {\n\treturn withFacets(schema, opts);\n}\n//#endregion\n//#region src/hydrate.ts\n/**\n* Given a service and a concrete typed Config, hydrate every input\n* (connection.hydrate with its typed value slice). A resource dep and a\n* connection dep hydrate through identical machinery — the loaded client is\n* indistinguishable. The service's own params ride alongside in\n* `config.service`; the node's `load()` merges the two.\n*/\nasync function hydrate(root, config) {\n\tconst deps = {};\n\tfor (const [name, inputNode] of Object.entries(root.inputs)) {\n\t\tconst values = config.inputs[name] ?? {};\n\t\tdeps[name] = await inputNode.connection.hydrate(values);\n\t}\n\treturn deps;\n}\n/**\n* Synchronous hydrate — what the node's `load()` uses so\n* `const { db } = service.load()` reads without `await`. Requires every\n* connection.hydrate to return synchronously; a Promise return is a loud error\n* naming the input (an async client factory must use the async `hydrate` path).\n*/\nfunction hydrateSync(root, config) {\n\tconst deps = {};\n\tfor (const [name, inputNode] of Object.entries(root.inputs)) {\n\t\tconst values = config.inputs[name] ?? {};\n\t\tconst client = inputNode.connection.hydrate(values);\n\t\tif (client instanceof Promise) throw new Error(`Connection hydrate for input \"${name}\" returned a Promise; load() requires a synchronous client factory.`);\n\t\tdeps[name] = client;\n\t}\n\treturn deps;\n}\n//#endregion\nexport { Load, LoadError, ResourceNodeBase, SecretBox, configOf, dependency, freezeNode, hydrate, hydrateSync, inputManifest, isNode, isParamSource, isProvisionNeed, isSecretSource, isSecretString, module, number, param, paramManifest, paramNeed, paramSource, provisionNeed, resource, secret, secretSource, service, string };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;;;;;AAWA,SAAS,cAAc,QAAQ;CAC9B,OAAO,EAAE,QAAQ,OAAO,YAAY,CAAC,OAAO;AAC7C;;;;;;;;;;AAUA,SAAS,SAAS,MAAM;CACvB,MAAM,UAAU,CAAC;CACjB,KAAK,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;EACzD,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;EACjD,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,MAAM,WAAW,MAAM,GAAG,QAAQ,KAAK;GACjF,OAAO,EAAE,MAAM;GACf;GACA,QAAQ,cAAc,MAAM,MAAM;GAClC,UAAU,MAAM,aAAa;GAC7B,SAAS,MAAM;EAChB,CAAC;CACF;CACA,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG,QAAQ,KAAK;EACrE,OAAO;EACP;EACA,QAAQ,cAAc,MAAM,MAAM;EAClC,UAAU,MAAM,aAAa;EAC7B,SAAS,MAAM;CAChB,CAAC;CACD,OAAO;AACR;;;;;;;;AAQA,SAAS,cAAc,OAAO;CAC7B,OAAO,MAAM;AACd;;;;;;;;;AASA,SAAS,cAAc,OAAO;CAC7B,OAAO,MAAM;AACd;AACA,SAAS,aAAa,MAAM,OAAO;CAClC,OAAO,EAAE,aAAa;EACrB,SAAS;EACT,QAAQ;EACR,WAAW,UAAU,MAAM,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,YAAY,KAAK,QAAQ,OAAO,QAAQ,CAAC,EAAE;CAClH,EAAE;AACH;AACA,MAAM,eAAe,aAAa,WAAW,MAAM,OAAO,MAAM,QAAQ;AACxE,MAAM,eAAe,aAAa,WAAW,MAAM,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,CAAC;AAC9F,SAAS,WAAW,QAAQ,MAAM;CACjC,OAAO;EACN;EACA,GAAG,KAAK,aAAa,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;EAC7D,GAAG,KAAK,YAAY,KAAK,IAAI,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;EAC1D,GAAG,KAAK,cAAc,KAAK,IAAI,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;CACjE;AACD;;AAEA,SAAS,OAAO,OAAO,CAAC,GAAG;CAC1B,OAAO,WAAW,cAAc,IAAI;AACrC;;AAEA,SAAS,OAAO,OAAO,CAAC,GAAG;CAC1B,OAAO,WAAW,cAAc,IAAI;AACrC;;AAEA,SAAS,MAAM,QAAQ,OAAO,CAAC,GAAG;CACjC,OAAO,WAAW,QAAQ,IAAI;AAC/B;;;;;;;;AAUA,eAAe,QAAQ,MAAM,QAAQ;CACpC,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,CAAC,MAAM,cAAc,OAAO,QAAQ,KAAK,MAAM,GAAG;EAC5D,MAAM,SAAS,OAAO,OAAO,SAAS,CAAC;EACvC,KAAK,QAAQ,MAAM,UAAU,WAAW,QAAQ,MAAM;CACvD;CACA,OAAO;AACR;;;;;;;AAOA,SAAS,YAAY,MAAM,QAAQ;CAClC,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,CAAC,MAAM,cAAc,OAAO,QAAQ,KAAK,MAAM,GAAG;EAC5D,MAAM,SAAS,OAAO,OAAO,SAAS,CAAC;EACvC,MAAM,SAAS,UAAU,WAAW,QAAQ,MAAM;EAClD,IAAI,kBAAkB,SAAS,MAAM,IAAI,MAAM,iCAAiC,KAAK,oEAAoE;EACzJ,KAAK,QAAQ;CACd;CACA,OAAO;AACR"}
1
+ {"version":3,"file":"dist-C5rZnr4n.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/index.mjs"],"sourcesContent":["import { _ as LoadError, a as isNode, c as isSecretSource, d as paramSource, f as provisionNeed, g as service, h as secretSource, i as freezeNode, l as module, m as secret, n as ResourceNodeBase, o as isParamSource, p as resource, r as dependency, s as isProvisionNeed, t as Load, u as paramNeed } from \"./graph-BJgUfGB0.mjs\";\nimport { SecretBox, isSecretString } from \"@internal/foundation/secret\";\n//#region src/config.ts\n/**\n* A data-only descriptor of a param's schema for introspection — the\n* validator's vendor tag, never the schema's own `validate`. `configOf`\n* reports it where the old model reported `type: 'string' | 'number'`, so the\n* config surface stays enumerable without leaking a function. Nothing consumes\n* more than the vendor tag yet; a richer projection (e.g. a JSON-Schema export\n* when the vendor offers one) is an additive change if a consumer needs it.\n*/\nfunction projectSchema(schema) {\n\treturn { vendor: schema[\"~standard\"].vendor };\n}\n/**\n* Enumerates every config param the service declares: each input's connection\n* params, then the service's own params. Pure — reads `root.inputs`/`params`\n* directly, executes nothing but the (also pure) schema projection. Deliberately\n* does not go through `Load`: a service's connection-end inputs are legitimately\n* unwired from its own point of view (wiring is an enclosing module's concern),\n* and this introspects one service's declared shape regardless of how — or\n* whether — it composes into a larger graph.\n*/\nfunction configOf(root) {\n\tconst entries = [];\n\tfor (const [input, value] of Object.entries(root.inputs)) {\n\t\tif (typeof value !== \"object\" || value === null) continue;\n\t\tfor (const [name, param] of Object.entries(value.connection.params)) entries.push({\n\t\t\towner: { input },\n\t\t\tname,\n\t\t\tschema: projectSchema(param.schema),\n\t\t\toptional: param.optional === true,\n\t\t\tdefault: param.default\n\t\t});\n\t}\n\tfor (const [name, param] of Object.entries(root.params)) entries.push({\n\t\towner: \"service\",\n\t\tname,\n\t\tschema: projectSchema(param.schema),\n\t\toptional: param.optional === true,\n\t\tdefault: param.default\n\t});\n\treturn entries;\n}\n/**\n* The app's input manifest: every service input binding a `provision()` call\n* supplied (ADR-0042). Pure graph introspection, TARGET-AGNOSTIC — a deploy\n* target's recursive descent classifies the binding's leaves (its preflight\n* verifies each `envSecret` leaf's platform var exists before deploy; the\n* values are provisioned out-of-band).\n*/\nfunction inputManifest(graph) {\n\treturn graph.inputBindings;\n}\n/**\n* The app's param-binding manifest: every param a `provision()` call bound —\n* literal or an opaque, target-defined `ParamSource` — at the address that\n* declared it. The param sibling of `provisionManifest`, for a deploy\n* target's own preflight to consume. Pure graph introspection,\n* TARGET-AGNOSTIC; a param this manifest omits simply falls back to its own\n* `default` at `buildConfig`.\n*/\nfunction paramManifest(graph) {\n\treturn graph.params;\n}\nfunction scalarSchema(name, check) {\n\treturn { \"~standard\": {\n\t\tversion: 1,\n\t\tvendor: \"@prisma/composer\",\n\t\tvalidate: (value) => check(value) ? { value } : { issues: [{ message: `expected ${name}, got ${typeof value}` }] }\n\t} };\n}\nconst stringSchema = scalarSchema(\"string\", (v) => typeof v === \"string\");\nconst numberSchema = scalarSchema(\"number\", (v) => typeof v === \"number\" && Number.isFinite(v));\nfunction withFacets(schema, opts) {\n\treturn {\n\t\tschema,\n\t\t...opts.optional !== void 0 ? { optional: opts.optional } : {},\n\t\t...opts.default !== void 0 ? { default: opts.default } : {},\n\t\t...opts.provision !== void 0 ? { provision: opts.provision } : {}\n\t};\n}\n/** A string-valued param. */\nfunction string(opts = {}) {\n\treturn withFacets(stringSchema, opts);\n}\n/** A number-valued param. */\nfunction number(opts = {}) {\n\treturn withFacets(numberSchema, opts);\n}\n/** A param over any caller-supplied Standard Schema — a structured `jobs`, say. */\nfunction param(schema, opts = {}) {\n\treturn withFacets(schema, opts);\n}\n//#endregion\n//#region src/hydrate.ts\n/**\n* Given a service and a concrete typed Config, hydrate every input\n* (connection.hydrate with its typed value slice). A resource dep and a\n* connection dep hydrate through identical machinery — the loaded client is\n* indistinguishable. The service's own params ride alongside in\n* `config.service`; the node's `load()` merges the two.\n*/\nasync function hydrate(root, config) {\n\tconst deps = {};\n\tfor (const [name, inputNode] of Object.entries(root.inputs)) {\n\t\tconst values = config.inputs[name] ?? {};\n\t\tdeps[name] = await inputNode.connection.hydrate(values);\n\t}\n\treturn deps;\n}\n/**\n* Synchronous hydrate — what the node's `load()` uses so\n* `const { db } = service.load()` reads without `await`. Requires every\n* connection.hydrate to return synchronously; a Promise return is a loud error\n* naming the input (an async client factory must use the async `hydrate` path).\n*/\nfunction hydrateSync(root, config) {\n\tconst deps = {};\n\tfor (const [name, inputNode] of Object.entries(root.inputs)) {\n\t\tconst values = config.inputs[name] ?? {};\n\t\tconst client = inputNode.connection.hydrate(values);\n\t\tif (client instanceof Promise) throw new Error(`Connection hydrate for input \"${name}\" returned a Promise; load() requires a synchronous client factory.`);\n\t\tdeps[name] = client;\n\t}\n\treturn deps;\n}\n//#endregion\nexport { Load, LoadError, ResourceNodeBase, SecretBox, configOf, dependency, freezeNode, hydrate, hydrateSync, inputManifest, isNode, isParamSource, isProvisionNeed, isSecretSource, isSecretString, module, number, param, paramManifest, paramNeed, paramSource, provisionNeed, resource, secret, secretSource, service, string };\n\n//# sourceMappingURL=index.mjs.map"],"mappings":";;;;;;;;;;;AAWA,SAAS,cAAc,QAAQ;CAC9B,OAAO,EAAE,QAAQ,OAAO,YAAY,CAAC,OAAO;AAC7C;;;;;;;;;;AAUA,SAAS,SAAS,MAAM;CACvB,MAAM,UAAU,CAAC;CACjB,KAAK,MAAM,CAAC,OAAO,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;EACzD,IAAI,OAAO,UAAU,YAAY,UAAU,MAAM;EACjD,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,MAAM,WAAW,MAAM,GAAG,QAAQ,KAAK;GACjF,OAAO,EAAE,MAAM;GACf;GACA,QAAQ,cAAc,MAAM,MAAM;GAClC,UAAU,MAAM,aAAa;GAC7B,SAAS,MAAM;EAChB,CAAC;CACF;CACA,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG,QAAQ,KAAK;EACrE,OAAO;EACP;EACA,QAAQ,cAAc,MAAM,MAAM;EAClC,UAAU,MAAM,aAAa;EAC7B,SAAS,MAAM;CAChB,CAAC;CACD,OAAO;AACR;;;;;;;;AAQA,SAAS,cAAc,OAAO;CAC7B,OAAO,MAAM;AACd;;;;;;;;;AASA,SAAS,cAAc,OAAO;CAC7B,OAAO,MAAM;AACd;AACA,SAAS,aAAa,MAAM,OAAO;CAClC,OAAO,EAAE,aAAa;EACrB,SAAS;EACT,QAAQ;EACR,WAAW,UAAU,MAAM,KAAK,IAAI,EAAE,MAAM,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,YAAY,KAAK,QAAQ,OAAO,QAAQ,CAAC,EAAE;CAClH,EAAE;AACH;AACA,MAAM,eAAe,aAAa,WAAW,MAAM,OAAO,MAAM,QAAQ;AACxE,MAAM,eAAe,aAAa,WAAW,MAAM,OAAO,MAAM,YAAY,OAAO,SAAS,CAAC,CAAC;AAC9F,SAAS,WAAW,QAAQ,MAAM;CACjC,OAAO;EACN;EACA,GAAG,KAAK,aAAa,KAAK,IAAI,EAAE,UAAU,KAAK,SAAS,IAAI,CAAC;EAC7D,GAAG,KAAK,YAAY,KAAK,IAAI,EAAE,SAAS,KAAK,QAAQ,IAAI,CAAC;EAC1D,GAAG,KAAK,cAAc,KAAK,IAAI,EAAE,WAAW,KAAK,UAAU,IAAI,CAAC;CACjE;AACD;;AAEA,SAAS,OAAO,OAAO,CAAC,GAAG;CAC1B,OAAO,WAAW,cAAc,IAAI;AACrC;;AAEA,SAAS,OAAO,OAAO,CAAC,GAAG;CAC1B,OAAO,WAAW,cAAc,IAAI;AACrC;;AAEA,SAAS,MAAM,QAAQ,OAAO,CAAC,GAAG;CACjC,OAAO,WAAW,QAAQ,IAAI;AAC/B;;;;;;;;AAUA,eAAe,QAAQ,MAAM,QAAQ;CACpC,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,CAAC,MAAM,cAAc,OAAO,QAAQ,KAAK,MAAM,GAAG;EAC5D,MAAM,SAAS,OAAO,OAAO,SAAS,CAAC;EACvC,KAAK,QAAQ,MAAM,UAAU,WAAW,QAAQ,MAAM;CACvD;CACA,OAAO;AACR;;;;;;;AAOA,SAAS,YAAY,MAAM,QAAQ;CAClC,MAAM,OAAO,CAAC;CACd,KAAK,MAAM,CAAC,MAAM,cAAc,OAAO,QAAQ,KAAK,MAAM,GAAG;EAC5D,MAAM,SAAS,OAAO,OAAO,SAAS,CAAC;EACvC,MAAM,SAAS,UAAU,WAAW,QAAQ,MAAM;EAClD,IAAI,kBAAkB,SAAS,MAAM,IAAI,MAAM,iCAAiC,KAAK,oEAAoE;EACzJ,KAAK,QAAQ;CACd;CACA,OAAO;AACR"}
@@ -82,8 +82,7 @@ var CliStructuredError = class extends Error {
82
82
  return candidate.name === "CliStructuredError" && typeof candidate.code === "string" && typeof candidate.toEnvelope === "function";
83
83
  }
84
84
  };
85
- const DOCS_BASE = `https://docs.prisma.io/docs/orm/next/reference/error-reference`;
86
85
  //#endregion
87
- export { DOCS_BASE as n, CliStructuredError as t };
86
+ export { CliStructuredError as t };
88
87
 
89
- //# sourceMappingURL=errors-DkXcnjPx.mjs.map
88
+ //# sourceMappingURL=errors-0e8IVwzi.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors-DkXcnjPx.mjs","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/errors.mjs"],"sourcesContent":["import { t as blindCast } from \"./casts-DpaahrlC.mjs\";\nimport { n as assertNever, r as isInternalError, t as InternalError } from \"./internal-error-BIc-ehme.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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAS,UAAU,KAAK,OAAO;CAC9B,OAAO,UAAU,KAAK,IAAI,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;AAC1D;;;;;;;;;;;AAaA,IAAI,qBAAqB,cAAc,MAAM;CAC5C;CACA;CACA,YAAY,MAAM,SAAS,SAAS;EACnC,MAAM,SAAS,SAAS,UAAU,KAAK,IAAI,EAAE,OAAO,QAAQ,MAAM,IAAI,KAAK,CAAC;EAC5E,KAAK,OAAO;EACZ,KAAK,OAAO;EACZ,KAAK,WAAW,SAAS,YAAY;EACrC,MAAM,MAAM,SAAS,QAAQ,SAAS,MAAM,KAAK,IAAI,SAAS;EAC9D,MAAM,QAAQ,SAAS,QAAQ;GAC9B,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI;GACvC,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI;EACxC,IAAI,KAAK;EACT,OAAO,OAAO,MAAM;GACnB,GAAG,UAAU,OAAO,SAAS,GAAG;GAChC,GAAG,UAAU,OAAO,GAAG;GACvB,GAAG,UAAU,SAAS,KAAK;GAC3B,GAAG,UAAU,QAAQ,SAAS,IAAI;GAClC,GAAG,UAAU,WAAW,SAAS,OAAO;EACzC,CAAC;CACF;;;;CAIA,aAAa;EACZ,OAAO;GACN,IAAI;GACJ,MAAM,KAAK;GACX,UAAU,KAAK;GACf,SAAS,KAAK;GACd,GAAG,UAAU,OAAO,KAAK,GAAG;GAC5B,GAAG,UAAU,OAAO,KAAK,GAAG;GAC5B,GAAG,UAAU,SAAS,KAAK,KAAK;GAChC,GAAG,UAAU,QAAQ,KAAK,IAAI;GAC9B,GAAG,UAAU,WAAW,KAAK,OAAO;EACrC;CACD;;;;;CAKA,OAAO,GAAG,OAAO;EAChB,IAAI,EAAE,iBAAiB,QAAQ,OAAO;EACtC,MAAM,YAAY,UAAU,KAAK;EACjC,OAAO,UAAU,SAAS,wBAAwB,OAAO,UAAU,SAAS,YAAY,OAAO,UAAU,eAAe;CACzH;AACD;AAuBA,MAAM,YAAY"}
1
+ {"version":3,"file":"errors-0e8IVwzi.mjs","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/errors.mjs"],"sourcesContent":["import { t as blindCast } from \"./casts-DpaahrlC.mjs\";\nimport { n as assertNever, r as isInternalError, t as InternalError } from \"./internal-error-BIc-ehme.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"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAyBA,SAAS,UAAU,KAAK,OAAO;CAC9B,OAAO,UAAU,KAAK,IAAI,UAAU,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;AAC1D;;;;;;;;;;;AAaA,IAAI,qBAAqB,cAAc,MAAM;CAC5C;CACA;CACA,YAAY,MAAM,SAAS,SAAS;EACnC,MAAM,SAAS,SAAS,UAAU,KAAK,IAAI,EAAE,OAAO,QAAQ,MAAM,IAAI,KAAK,CAAC;EAC5E,KAAK,OAAO;EACZ,KAAK,OAAO;EACZ,KAAK,WAAW,SAAS,YAAY;EACrC,MAAM,MAAM,SAAS,QAAQ,SAAS,MAAM,KAAK,IAAI,SAAS;EAC9D,MAAM,QAAQ,SAAS,QAAQ;GAC9B,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI;GACvC,GAAG,UAAU,QAAQ,QAAQ,MAAM,IAAI;EACxC,IAAI,KAAK;EACT,OAAO,OAAO,MAAM;GACnB,GAAG,UAAU,OAAO,SAAS,GAAG;GAChC,GAAG,UAAU,OAAO,GAAG;GACvB,GAAG,UAAU,SAAS,KAAK;GAC3B,GAAG,UAAU,QAAQ,SAAS,IAAI;GAClC,GAAG,UAAU,WAAW,SAAS,OAAO;EACzC,CAAC;CACF;;;;CAIA,aAAa;EACZ,OAAO;GACN,IAAI;GACJ,MAAM,KAAK;GACX,UAAU,KAAK;GACf,SAAS,KAAK;GACd,GAAG,UAAU,OAAO,KAAK,GAAG;GAC5B,GAAG,UAAU,OAAO,KAAK,GAAG;GAC5B,GAAG,UAAU,SAAS,KAAK,KAAK;GAChC,GAAG,UAAU,QAAQ,KAAK,IAAI;GAC9B,GAAG,UAAU,WAAW,KAAK,OAAO;EACrC;CACD;;;;;CAKA,OAAO,GAAG,OAAO;EAChB,IAAI,EAAE,iBAAiB,QAAQ,OAAO;EACtC,MAAM,YAAY,UAAU,KAAK;EACjC,OAAO,UAAU,SAAS,wBAAwB,OAAO,UAAU,SAAS,YAAY,OAAO,UAAU,eAAe;CACzH;AACD"}
@@ -1,10 +1,9 @@
1
- import { t as CliStructuredError } from "./errors-DkXcnjPx.mjs";
1
+ import { t as CliStructuredError } from "./errors-0e8IVwzi.mjs";
2
2
  import { t as containerEnv } from "./container-transport-DKmKg5JQ-DKWs0ubK.mjs";
3
- import { d as toStructured } from "./log-DfT2hHqi-CDp9nfI5.mjs";
4
- import { n as ok, r as okVoid, t as notOk } from "./result-wonf1deB.mjs";
5
- import { n as alchemyInvocation, r as spawnAlchemy } from "./run-alchemy-D44OZlyB-DeDTFsB6.mjs";
3
+ import { n as ok, r as okVoid, s as toStructured, t as notOk } from "./result-CY_TB7bn.mjs";
6
4
  import { n as readDeploymentSummary, t as DEPLOYMENT_RESULT_FILE_ENV } from "./deployment-summary-DswOl_9E-C03NJ98H.mjs";
7
- import { n as runPipeline } from "./pipeline-AoW8zq4I-DM74ygtH.mjs";
5
+ import { n as spawnAlchemy, t as alchemyInvocation } from "./run-alchemy-D44OZlyB-gVq_0gf4.mjs";
6
+ import { n as runPipeline } from "./pipeline-AoW8zq4I-CUon5KZH.mjs";
8
7
  import * as fs from "node:fs";
9
8
  import * as path from "node:path";
10
9
  import { spawnSync } from "node:child_process";
@@ -273,4 +272,4 @@ async function runStackPipeline(action, opts) {
273
272
  //#endregion
274
273
  export { executeDeploy, executeDestroy };
275
274
 
276
- //# sourceMappingURL=execute-deploy-destroy-DfVJUICu-AMM8CwgV.mjs.map
275
+ //# sourceMappingURL=execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"execute-deploy-destroy-DfVJUICu-AMM8CwgV.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/generate-stack-BL6htaQb.mjs","../../../0-framework/3-tooling/cli/dist/execute-deploy-destroy-DfVJUICu.mjs"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n//#region src/generate-stack.ts\n/** Pipeline step 6: writes a regenerated-every-run, independently runnable stack module at `.prisma-composer/alchemy.run.ts`. */\nconst GENERATED_DIR = \".prisma-composer\";\nconst GENERATED_FILE = \"alchemy.run.ts\";\n/** A relative import specifier from `.prisma-composer/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(\" report: deploymentReport,\");\n\treturn lines.join(\"\\n\");\n}\n/** Renders the stack module's source (tests assert on it without touching disk) — uses `//` headers, not a block comment, since a cwd path with a star-slash could close one early. */\nfunction renderStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, GENERATED_DIR);\n\tconst appImport = relativeImportSpecifier(generatedDir, input.entryPath);\n\tconst configImport = relativeImportSpecifier(generatedDir, input.configPath);\n\treturn `// Generated by \\`prisma-composer deploy\\`/\\`prisma-composer destroy\\` — overwritten on every\n// run; do not edit by hand. Independently runnable from ${quote(input.cwd)}:\n//\n// alchemy deploy ${GENERATED_DIR}/${GENERATED_FILE}\n//\n// bisects a CLI bug from an Alchemy bug (deploy-cli.md § Implementation decisions).\nimport { lower } from '@prisma/composer/deploy';\nimport { deploymentReport } from '@prisma/composer/report';\nimport config from ${quote(configImport)};\nimport app from ${quote(appImport)};\n\nexport default lower(app, config, {\n${renderOptions(input)}\n});\n`;\n}\n/** Writes the stack file, returning its absolute path. */\nfunction writeStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, GENERATED_DIR);\n\tfs.mkdirSync(generatedDir, { recursive: true });\n\tconst filePath = path.join(generatedDir, GENERATED_FILE);\n\tfs.writeFileSync(filePath, renderStackFile(input));\n\treturn filePath;\n}\nconst GENERATED_STACK_RELATIVE_PATH = path.join(GENERATED_DIR, GENERATED_FILE);\n//#endregion\nexport { renderStackFile as n, writeStackFile as r, GENERATED_STACK_RELATIVE_PATH as t };\n\n//# sourceMappingURL=generate-stack-BL6htaQb.mjs.map","import { r as toStructured } from \"./shared-BTnATsqm.mjs\";\nimport { i as spawnAlchemy, n as alchemyInvocation } from \"./run-alchemy-D44OZlyB.mjs\";\nimport { r as writeStackFile, t as GENERATED_STACK_RELATIVE_PATH } from \"./generate-stack-BL6htaQb.mjs\";\nimport { n as readDeploymentSummary, t as DEPLOYMENT_RESULT_FILE_ENV } from \"./deployment-summary-DswOl_9E.mjs\";\nimport { n as runPipeline } from \"./pipeline-AoW8zq4I.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { notOk, ok, okVoid } from \"@internal/foundation/result\";\nimport { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { containerEnv } from \"@internal/core/config\";\n//#region src/validate-stage.ts\n/** A stage name must be a valid git ref (deploy-cli.md) — checked via `git check-ref-format`, never silently normalized. Runs before anything platform-specific. */\nfunction validateStageName(stage) {\n\tconst result = spawnSync(\"git\", [\"check-ref-format\", `refs/heads/${stage}`], { stdio: \"ignore\" });\n\tif (result.error) throw new CliStructuredError(\"DEPLOY.STAGE_UNVALIDATABLE\", `git is required to validate --stage \"${stage}\" (git check-ref-format): ${result.error.message}.`, { cause: result.error });\n\tif (result.status !== 0) throw new CliStructuredError(\"DEPLOY.STAGE_INVALID\", `Invalid --stage \"${stage}\": must be a valid git ref name (git check-ref-format rejected \"refs/heads/${stage}\").`);\n}\n//#endregion\n//#region src/operations/execute-deploy-destroy.ts\n/**\n* The deploy/destroy executor — main.ts's pipeline orchestration with argv,\n* console, and exit codes removed: typed inputs in, structured results out.\n* Reached only by lazy import from deploy.ts/destroy.ts — this module's\n* static graph transitively loads alchemy's provider tree, so the control\n* entry must never import it statically.\n*/\nconst ALCHEMY_STATE_DIR = \".alchemy\";\n/** Destroy guardrail (moved from main.ts): true when `<cwd>/.alchemy` is missing or empty — likely wrong directory or nothing deployed yet. */\nfunction hasNoLocalDeployState(cwd) {\n\tconst stateDir = path.join(cwd, ALCHEMY_STATE_DIR);\n\treturn !(fs.existsSync(stateDir) && fs.readdirSync(stateDir).length > 0);\n}\nasync function executeDeploy(input, deps, cwd) {\n\tconst outcome = await runStackPipeline(\"deploy\", {\n\t\tentry: input.entry,\n\t\tname: input.name,\n\t\tstage: input.stage,\n\t\tcwd,\n\t\tonEvent: void 0,\n\t\tdeps\n\t});\n\tif (!outcome.ok) return outcome;\n\treturn ok({ summary: outcome.value });\n}\nasync function executeDestroy(input, deps, cwd) {\n\tconst outcome = await runStackPipeline(\"destroy\", {\n\t\tentry: input.entry,\n\t\tname: input.name,\n\t\tstage: input.target.kind === \"stage\" ? input.target.stage : void 0,\n\t\tcwd,\n\t\tonEvent: input.onEvent,\n\t\tdeps\n\t});\n\tif (!outcome.ok) return outcome;\n\treturn okVoid();\n}\n/** The pipeline both actions share: validate, resolve containers, preflight,\n* write the stack file, run alchemy against it, then the destroy-only\n* teardown/removal suffix. The value is only ever a summary for deploy. */\nasync function runStackPipeline(action, opts) {\n\tconst { entry, name, stage, cwd, onEvent, deps } = opts;\n\tif (stage !== void 0) try {\n\t\tvalidateStageName(stage);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tif (action === \"destroy\" && hasNoLocalDeployState(cwd)) onEvent?.({\n\t\tkind: \"no-local-deploy-state\",\n\t\tcwd\n\t});\n\tlet pipeline;\n\tlet containers;\n\tlet alchemyStage;\n\ttry {\n\t\tpipeline = await runPipeline(entry, name, cwd, {\n\t\t\trunAssembler: deps.runAssembler,\n\t\t\tconfig: deps.config,\n\t\t\tconfigPath: deps.configPath\n\t\t}, action === \"destroy\" ? (error) => new CliStructuredError(\"DEPLOY.BUILD_REQUIRED\", error.message, {\n\t\t\twhy: \"destroy evaluates the same stack program as deploy, which packages the built artifacts — so the app must be built first.\",\n\t\t\tfix: \"Run the build, then retry the destroy.\",\n\t\t\tcause: error\n\t\t}) : void 0);\n\t\tconst { config, graph, name: resolvedName } = pipeline;\n\t\tcontainers = /* @__PURE__ */ new Map();\n\t\tfor (const extension of config.extensions) {\n\t\t\tif (extension.container === void 0) continue;\n\t\t\ttry {\n\t\t\t\tif (action === \"deploy\") containers.set(extension.id, await extension.container.ensure({\n\t\t\t\t\tappName: resolvedName,\n\t\t\t\t\tstage\n\t\t\t\t}, deps.credentials));\n\t\t\t\telse {\n\t\t\t\t\tconst instance = await extension.container.locate({\n\t\t\t\t\t\tappName: resolvedName,\n\t\t\t\t\t\tstage\n\t\t\t\t\t}, deps.credentials);\n\t\t\t\t\tif (instance === void 0) throw new CliStructuredError(\"DEPLOY.TARGET_NOT_FOUND\", `Nothing deployed for ${resolvedName}${stage !== void 0 ? `/${stage}` : \"\"}.`, { fix: \"Deploy it first.\" });\n\t\t\t\t\tcontainers.set(extension.id, instance);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthrow toStructured(\"DEPLOY.CONTAINER_FAILED\", error);\n\t\t\t}\n\t\t}\n\t\tconst pinnedStage = containers.get(config.state.extension)?.alchemyStage ?? stage;\n\t\tif (pinnedStage === void 0) throw new CliStructuredError(\"DEPLOY.SCOPE_MISSING\", \"The configured deploy target supplied no deploy scope (its container defines no alchemyStage), so Alchemy has no stage to run under.\", { fix: action === \"deploy\" ? \"Pass --stage <name> to choose the deploy scope explicitly.\" : \"destroy --production needs a target whose container supplies the production deploy scope.\" });\n\t\talchemyStage = pinnedStage;\n\t\tif (action === \"deploy\") for (const extension of config.extensions) {\n\t\t\tif (extension.preflight === void 0) continue;\n\t\t\ttry {\n\t\t\t\tawait extension.preflight({\n\t\t\t\t\tgraph,\n\t\t\t\t\tcontainer: containers.get(extension.id),\n\t\t\t\t\tstage,\n\t\t\t\t\tcredentials: deps.credentials\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthrow toStructured(\"DEPLOY.PREFLIGHT_FAILED\", error);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tlet stackPath;\n\tconst resultFilePath = path.join(cwd, \".prisma-composer\", `deployment-result-${String(process.pid)}-${randomUUID()}.json`);\n\ttry {\n\t\ttry {\n\t\t\tstackPath = writeStackFile({\n\t\t\t\tentryPath: pipeline.entryModule.path,\n\t\t\t\tcwd,\n\t\t\t\tconfigPath: pipeline.configPath,\n\t\t\t\tname: pipeline.name,\n\t\t\t\tassembled: pipeline.assembled\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treturn notOk(toStructured(\"DEPLOY.STACK_WRITE_FAILED\", error));\n\t\t}\n\t\tconst reproduceCommand = `alchemy ${action} ${GENERATED_STACK_RELATIVE_PATH} --yes --stage ${alchemyStage}`;\n\t\tlet outcome;\n\t\ttry {\n\t\t\toutcome = await (deps.alchemy ?? spawnAlchemy)(alchemyInvocation({\n\t\t\t\tcommand: action,\n\t\t\t\tstackFileRelativePath: GENERATED_STACK_RELATIVE_PATH,\n\t\t\t\tcwd,\n\t\t\t\tstage: alchemyStage,\n\t\t\t\tcontainerEnv: containerEnv(containers),\n\t\t\t\tenv: { [DEPLOYMENT_RESULT_FILE_ENV]: resultFilePath }\n\t\t\t}));\n\t\t} catch (error) {\n\t\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\t\treturn notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", error instanceof Error ? error.message : String(error), {\n\t\t\t\tcause: error,\n\t\t\t\tmeta: { diagnostics: {\n\t\t\t\t\texitCode: void 0,\n\t\t\t\t\tstackFilePath: stackPath,\n\t\t\t\t\treproduceCommand,\n\t\t\t\t\tcwd\n\t\t\t\t} }\n\t\t\t}));\n\t\t}\n\t\tif (outcome.signal !== null) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy ${action} was interrupted by ${outcome.signal}.`, { meta: {\n\t\t\tsignal: outcome.signal,\n\t\t\tdiagnostics: {\n\t\t\t\texitCode: void 0,\n\t\t\t\tsignal: outcome.signal,\n\t\t\t\tstackFilePath: stackPath,\n\t\t\t\treproduceCommand,\n\t\t\t\tcwd\n\t\t\t}\n\t\t} }));\n\t\tconst status = outcome.exitCode ?? 1;\n\t\tif (status !== 0) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy ${action} exited with status ${status}.`, { meta: {\n\t\t\texitCode: status,\n\t\t\tdiagnostics: {\n\t\t\t\texitCode: status,\n\t\t\t\tstackFilePath: stackPath,\n\t\t\t\treproduceCommand,\n\t\t\t\tcwd\n\t\t\t}\n\t\t} }));\n\t\ttry {\n\t\t\tif (action === \"destroy\") {\n\t\t\t\tfor (const extension of pipeline.config.extensions) {\n\t\t\t\t\tif (extension.teardown === void 0) continue;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait extension.teardown({\n\t\t\t\t\t\t\tcontainer: containers.get(extension.id),\n\t\t\t\t\t\t\tstage\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow toStructured(\"DEPLOY.TEARDOWN_FAILED\", error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const extension of pipeline.config.extensions) {\n\t\t\t\t\tif (extension.container === void 0) continue;\n\t\t\t\t\tconst instance = containers.get(extension.id);\n\t\t\t\t\tif (instance === void 0) continue;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait extension.container.remove(instance, deps.credentials);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow toStructured(\"DEPLOY.CONTAINER_REMOVE_FAILED\", error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (action === \"deploy\") return ok(readDeploymentSummary(resultFilePath));\n\t\treturn ok(void 0);\n\t} finally {\n\t\ttry {\n\t\t\tfs.rmSync(resultFilePath, { force: true });\n\t\t} catch {}\n\t}\n}\n//#endregion\nexport { executeDeploy, executeDestroy };\n\n//# sourceMappingURL=execute-deploy-destroy-DfVJUICu.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"execute-deploy-destroy-DfVJUICu-Dbgn1GR_.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/generate-stack-BL6htaQb.mjs","../../../0-framework/3-tooling/cli/dist/execute-deploy-destroy-DfVJUICu.mjs"],"sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n//#region src/generate-stack.ts\n/** Pipeline step 6: writes a regenerated-every-run, independently runnable stack module at `.prisma-composer/alchemy.run.ts`. */\nconst GENERATED_DIR = \".prisma-composer\";\nconst GENERATED_FILE = \"alchemy.run.ts\";\n/** A relative import specifier from `.prisma-composer/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(\" report: deploymentReport,\");\n\treturn lines.join(\"\\n\");\n}\n/** Renders the stack module's source (tests assert on it without touching disk) — uses `//` headers, not a block comment, since a cwd path with a star-slash could close one early. */\nfunction renderStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, GENERATED_DIR);\n\tconst appImport = relativeImportSpecifier(generatedDir, input.entryPath);\n\tconst configImport = relativeImportSpecifier(generatedDir, input.configPath);\n\treturn `// Generated by \\`prisma-composer deploy\\`/\\`prisma-composer destroy\\` — overwritten on every\n// run; do not edit by hand. Independently runnable from ${quote(input.cwd)}:\n//\n// alchemy deploy ${GENERATED_DIR}/${GENERATED_FILE}\n//\n// bisects a CLI bug from an Alchemy bug (deploy-cli.md § Implementation decisions).\nimport { lower } from '@prisma/composer/deploy';\nimport { deploymentReport } from '@prisma/composer/report';\nimport config from ${quote(configImport)};\nimport app from ${quote(appImport)};\n\nexport default lower(app, config, {\n${renderOptions(input)}\n});\n`;\n}\n/** Writes the stack file, returning its absolute path. */\nfunction writeStackFile(input) {\n\tconst generatedDir = path.join(input.cwd, GENERATED_DIR);\n\tfs.mkdirSync(generatedDir, { recursive: true });\n\tconst filePath = path.join(generatedDir, GENERATED_FILE);\n\tfs.writeFileSync(filePath, renderStackFile(input));\n\treturn filePath;\n}\nconst GENERATED_STACK_RELATIVE_PATH = path.join(GENERATED_DIR, GENERATED_FILE);\n//#endregion\nexport { renderStackFile as n, writeStackFile as r, GENERATED_STACK_RELATIVE_PATH as t };\n\n//# sourceMappingURL=generate-stack-BL6htaQb.mjs.map","import { r as toStructured } from \"./shared-BTnATsqm.mjs\";\nimport { i as spawnAlchemy, n as alchemyInvocation } from \"./run-alchemy-D44OZlyB.mjs\";\nimport { r as writeStackFile, t as GENERATED_STACK_RELATIVE_PATH } from \"./generate-stack-BL6htaQb.mjs\";\nimport { n as readDeploymentSummary, t as DEPLOYMENT_RESULT_FILE_ENV } from \"./deployment-summary-DswOl_9E.mjs\";\nimport { n as runPipeline } from \"./pipeline-AoW8zq4I.mjs\";\nimport { CliStructuredError } from \"@internal/foundation/errors\";\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { notOk, ok, okVoid } from \"@internal/foundation/result\";\nimport { spawnSync } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { containerEnv } from \"@internal/core/config\";\n//#region src/validate-stage.ts\n/** A stage name must be a valid git ref (deploy-cli.md) — checked via `git check-ref-format`, never silently normalized. Runs before anything platform-specific. */\nfunction validateStageName(stage) {\n\tconst result = spawnSync(\"git\", [\"check-ref-format\", `refs/heads/${stage}`], { stdio: \"ignore\" });\n\tif (result.error) throw new CliStructuredError(\"DEPLOY.STAGE_UNVALIDATABLE\", `git is required to validate --stage \"${stage}\" (git check-ref-format): ${result.error.message}.`, { cause: result.error });\n\tif (result.status !== 0) throw new CliStructuredError(\"DEPLOY.STAGE_INVALID\", `Invalid --stage \"${stage}\": must be a valid git ref name (git check-ref-format rejected \"refs/heads/${stage}\").`);\n}\n//#endregion\n//#region src/operations/execute-deploy-destroy.ts\n/**\n* The deploy/destroy executor — main.ts's pipeline orchestration with argv,\n* console, and exit codes removed: typed inputs in, structured results out.\n* Reached only by lazy import from deploy.ts/destroy.ts — this module's\n* static graph transitively loads alchemy's provider tree, so the control\n* entry must never import it statically.\n*/\nconst ALCHEMY_STATE_DIR = \".alchemy\";\n/** Destroy guardrail (moved from main.ts): true when `<cwd>/.alchemy` is missing or empty — likely wrong directory or nothing deployed yet. */\nfunction hasNoLocalDeployState(cwd) {\n\tconst stateDir = path.join(cwd, ALCHEMY_STATE_DIR);\n\treturn !(fs.existsSync(stateDir) && fs.readdirSync(stateDir).length > 0);\n}\nasync function executeDeploy(input, deps, cwd) {\n\tconst outcome = await runStackPipeline(\"deploy\", {\n\t\tentry: input.entry,\n\t\tname: input.name,\n\t\tstage: input.stage,\n\t\tcwd,\n\t\tonEvent: void 0,\n\t\tdeps\n\t});\n\tif (!outcome.ok) return outcome;\n\treturn ok({ summary: outcome.value });\n}\nasync function executeDestroy(input, deps, cwd) {\n\tconst outcome = await runStackPipeline(\"destroy\", {\n\t\tentry: input.entry,\n\t\tname: input.name,\n\t\tstage: input.target.kind === \"stage\" ? input.target.stage : void 0,\n\t\tcwd,\n\t\tonEvent: input.onEvent,\n\t\tdeps\n\t});\n\tif (!outcome.ok) return outcome;\n\treturn okVoid();\n}\n/** The pipeline both actions share: validate, resolve containers, preflight,\n* write the stack file, run alchemy against it, then the destroy-only\n* teardown/removal suffix. The value is only ever a summary for deploy. */\nasync function runStackPipeline(action, opts) {\n\tconst { entry, name, stage, cwd, onEvent, deps } = opts;\n\tif (stage !== void 0) try {\n\t\tvalidateStageName(stage);\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tif (action === \"destroy\" && hasNoLocalDeployState(cwd)) onEvent?.({\n\t\tkind: \"no-local-deploy-state\",\n\t\tcwd\n\t});\n\tlet pipeline;\n\tlet containers;\n\tlet alchemyStage;\n\ttry {\n\t\tpipeline = await runPipeline(entry, name, cwd, {\n\t\t\trunAssembler: deps.runAssembler,\n\t\t\tconfig: deps.config,\n\t\t\tconfigPath: deps.configPath\n\t\t}, action === \"destroy\" ? (error) => new CliStructuredError(\"DEPLOY.BUILD_REQUIRED\", error.message, {\n\t\t\twhy: \"destroy evaluates the same stack program as deploy, which packages the built artifacts — so the app must be built first.\",\n\t\t\tfix: \"Run the build, then retry the destroy.\",\n\t\t\tcause: error\n\t\t}) : void 0);\n\t\tconst { config, graph, name: resolvedName } = pipeline;\n\t\tcontainers = /* @__PURE__ */ new Map();\n\t\tfor (const extension of config.extensions) {\n\t\t\tif (extension.container === void 0) continue;\n\t\t\ttry {\n\t\t\t\tif (action === \"deploy\") containers.set(extension.id, await extension.container.ensure({\n\t\t\t\t\tappName: resolvedName,\n\t\t\t\t\tstage\n\t\t\t\t}, deps.credentials));\n\t\t\t\telse {\n\t\t\t\t\tconst instance = await extension.container.locate({\n\t\t\t\t\t\tappName: resolvedName,\n\t\t\t\t\t\tstage\n\t\t\t\t\t}, deps.credentials);\n\t\t\t\t\tif (instance === void 0) throw new CliStructuredError(\"DEPLOY.TARGET_NOT_FOUND\", `Nothing deployed for ${resolvedName}${stage !== void 0 ? `/${stage}` : \"\"}.`, { fix: \"Deploy it first.\" });\n\t\t\t\t\tcontainers.set(extension.id, instance);\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthrow toStructured(\"DEPLOY.CONTAINER_FAILED\", error);\n\t\t\t}\n\t\t}\n\t\tconst pinnedStage = containers.get(config.state.extension)?.alchemyStage ?? stage;\n\t\tif (pinnedStage === void 0) throw new CliStructuredError(\"DEPLOY.SCOPE_MISSING\", \"The configured deploy target supplied no deploy scope (its container defines no alchemyStage), so Alchemy has no stage to run under.\", { fix: action === \"deploy\" ? \"Pass --stage <name> to choose the deploy scope explicitly.\" : \"destroy --production needs a target whose container supplies the production deploy scope.\" });\n\t\talchemyStage = pinnedStage;\n\t\tif (action === \"deploy\") for (const extension of config.extensions) {\n\t\t\tif (extension.preflight === void 0) continue;\n\t\t\ttry {\n\t\t\t\tawait extension.preflight({\n\t\t\t\t\tgraph,\n\t\t\t\t\tcontainer: containers.get(extension.id),\n\t\t\t\t\tstage,\n\t\t\t\t\tcredentials: deps.credentials\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\tthrow toStructured(\"DEPLOY.PREFLIGHT_FAILED\", error);\n\t\t\t}\n\t\t}\n\t} catch (error) {\n\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\tthrow error;\n\t}\n\tlet stackPath;\n\tconst resultFilePath = path.join(cwd, \".prisma-composer\", `deployment-result-${String(process.pid)}-${randomUUID()}.json`);\n\ttry {\n\t\ttry {\n\t\t\tstackPath = writeStackFile({\n\t\t\t\tentryPath: pipeline.entryModule.path,\n\t\t\t\tcwd,\n\t\t\t\tconfigPath: pipeline.configPath,\n\t\t\t\tname: pipeline.name,\n\t\t\t\tassembled: pipeline.assembled\n\t\t\t});\n\t\t} catch (error) {\n\t\t\treturn notOk(toStructured(\"DEPLOY.STACK_WRITE_FAILED\", error));\n\t\t}\n\t\tconst reproduceCommand = `alchemy ${action} ${GENERATED_STACK_RELATIVE_PATH} --yes --stage ${alchemyStage}`;\n\t\tlet outcome;\n\t\ttry {\n\t\t\toutcome = await (deps.alchemy ?? spawnAlchemy)(alchemyInvocation({\n\t\t\t\tcommand: action,\n\t\t\t\tstackFileRelativePath: GENERATED_STACK_RELATIVE_PATH,\n\t\t\t\tcwd,\n\t\t\t\tstage: alchemyStage,\n\t\t\t\tcontainerEnv: containerEnv(containers),\n\t\t\t\tenv: { [DEPLOYMENT_RESULT_FILE_ENV]: resultFilePath }\n\t\t\t}));\n\t\t} catch (error) {\n\t\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\t\treturn notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", error instanceof Error ? error.message : String(error), {\n\t\t\t\tcause: error,\n\t\t\t\tmeta: { diagnostics: {\n\t\t\t\t\texitCode: void 0,\n\t\t\t\t\tstackFilePath: stackPath,\n\t\t\t\t\treproduceCommand,\n\t\t\t\t\tcwd\n\t\t\t\t} }\n\t\t\t}));\n\t\t}\n\t\tif (outcome.signal !== null) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy ${action} was interrupted by ${outcome.signal}.`, { meta: {\n\t\t\tsignal: outcome.signal,\n\t\t\tdiagnostics: {\n\t\t\t\texitCode: void 0,\n\t\t\t\tsignal: outcome.signal,\n\t\t\t\tstackFilePath: stackPath,\n\t\t\t\treproduceCommand,\n\t\t\t\tcwd\n\t\t\t}\n\t\t} }));\n\t\tconst status = outcome.exitCode ?? 1;\n\t\tif (status !== 0) return notOk(new CliStructuredError(\"DEPLOY.ENGINE_FAILED\", `alchemy ${action} exited with status ${status}.`, { meta: {\n\t\t\texitCode: status,\n\t\t\tdiagnostics: {\n\t\t\t\texitCode: status,\n\t\t\t\tstackFilePath: stackPath,\n\t\t\t\treproduceCommand,\n\t\t\t\tcwd\n\t\t\t}\n\t\t} }));\n\t\ttry {\n\t\t\tif (action === \"destroy\") {\n\t\t\t\tfor (const extension of pipeline.config.extensions) {\n\t\t\t\t\tif (extension.teardown === void 0) continue;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait extension.teardown({\n\t\t\t\t\t\t\tcontainer: containers.get(extension.id),\n\t\t\t\t\t\t\tstage\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow toStructured(\"DEPLOY.TEARDOWN_FAILED\", error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const extension of pipeline.config.extensions) {\n\t\t\t\t\tif (extension.container === void 0) continue;\n\t\t\t\t\tconst instance = containers.get(extension.id);\n\t\t\t\t\tif (instance === void 0) continue;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait extension.container.remove(instance, deps.credentials);\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow toStructured(\"DEPLOY.CONTAINER_REMOVE_FAILED\", error);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (CliStructuredError.is(error)) return notOk(error);\n\t\t\tthrow error;\n\t\t}\n\t\tif (action === \"deploy\") return ok(readDeploymentSummary(resultFilePath));\n\t\treturn ok(void 0);\n\t} finally {\n\t\ttry {\n\t\t\tfs.rmSync(resultFilePath, { force: true });\n\t\t} catch {}\n\t}\n}\n//#endregion\nexport { executeDeploy, executeDestroy };\n\n//# sourceMappingURL=execute-deploy-destroy-DfVJUICu.mjs.map"],"mappings":"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"}
@@ -1,11 +1,10 @@
1
- import { t as CliStructuredError } from "./errors-DkXcnjPx.mjs";
1
+ import { t as CliStructuredError } from "./errors-0e8IVwzi.mjs";
2
2
  import { t as containerEnv } from "./container-transport-DKmKg5JQ-DKWs0ubK.mjs";
3
3
  import { t as DEV_DIR } from "./app-config-joXc-BKm-CdcXqNMD.mjs";
4
- import { d as toStructured } from "./log-DfT2hHqi-CDp9nfI5.mjs";
5
- import { n as ok, t as notOk } from "./result-wonf1deB.mjs";
6
- import { n as alchemyInvocation, r as spawnAlchemy } from "./run-alchemy-D44OZlyB-DeDTFsB6.mjs";
7
- import { n as resolveLocalTargets } from "./local-target-D3u_wuNF.mjs";
8
- import { n as runPipeline } from "./pipeline-AoW8zq4I-DM74ygtH.mjs";
4
+ import { n as ok, s as toStructured, t as notOk } from "./result-CY_TB7bn.mjs";
5
+ import { n as resolveLocalTargets } from "./local-target-DnA2E8IN.mjs";
6
+ import { n as spawnAlchemy, t as alchemyInvocation } from "./run-alchemy-D44OZlyB-gVq_0gf4.mjs";
7
+ import { n as runPipeline } from "./pipeline-AoW8zq4I-CUon5KZH.mjs";
9
8
  import { t as withEmulatorRetry } from "./emulator-retry-DGonap4g-S8BNrXFD.mjs";
10
9
  import * as fs from "node:fs";
11
10
  import * as path from "node:path";
@@ -2012,4 +2011,4 @@ async function executeDev(input, deps, cwd) {
2012
2011
  //#endregion
2013
2012
  export { executeDev };
2014
2013
 
2015
- //# sourceMappingURL=execute-dev-BMTFWfFc-BoKbcFVF.mjs.map
2014
+ //# sourceMappingURL=execute-dev-BMTFWfFc-CGDFqR4w.mjs.map