@prisma/composer 0.25.0 → 0.26.0-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/{app-config-joXc-BKm-CdcXqNMD.mjs → app-config-CGJHcFb--CIEFCG4V.mjs} +3 -3
  2. package/dist/{app-config-joXc-BKm-CdcXqNMD.mjs.map → app-config-CGJHcFb--CIEFCG4V.mjs.map} +1 -1
  3. package/dist/{app-config-jGcCcxK4-DnzGGbDS.d.mts → app-config-DyCMnkDr-CguUhanl.d.mts} +4 -4
  4. package/dist/{app-config-jGcCcxK4-DnzGGbDS.d.mts.map → app-config-DyCMnkDr-CguUhanl.d.mts.map} +1 -1
  5. package/dist/config-CdxvLFzg.mjs.map +1 -1
  6. package/dist/config-i9yR7YWi.d.mts +1 -0
  7. package/dist/config.d.mts +2 -2
  8. package/dist/config.mjs +1 -1
  9. package/dist/control.d.mts +63 -44
  10. package/dist/control.d.mts.map +1 -1
  11. package/dist/control.mjs +10 -42
  12. package/dist/control.mjs.map +1 -1
  13. package/dist/deploy-i9yR7YWi.d.mts +1 -0
  14. package/dist/deploy.d.mts +2 -2
  15. package/dist/deploy.mjs +1 -1
  16. package/dist/deploy.mjs.map +1 -1
  17. package/dist/deployment-summary-37e6WEuh-BOTJynIi.mjs +168 -0
  18. package/dist/deployment-summary-37e6WEuh-BOTJynIi.mjs.map +1 -0
  19. package/dist/deployment-summary-CU-eVvJM-c3AqO52N.d.mts +26 -0
  20. package/dist/deployment-summary-CU-eVvJM-c3AqO52N.d.mts.map +1 -0
  21. package/dist/dev-Bmq-eLnv-DsenQNJM.mjs +154 -0
  22. package/dist/dev-Bmq-eLnv-DsenQNJM.mjs.map +1 -0
  23. package/dist/{execute-deploy-destroy-CvKCwVkD-Di3Ooeip.mjs → execute-deploy-destroy-c0eko3AO-BoK0-r1U.mjs} +43 -32
  24. package/dist/execute-deploy-destroy-c0eko3AO-BoK0-r1U.mjs.map +1 -0
  25. package/dist/{execute-dev-BLCK5wF7-CJvkj5wl.mjs → execute-dev-BICPaq1g-DQccw8kr.mjs} +180 -131
  26. package/dist/{execute-dev-BLCK5wF7-CJvkj5wl.mjs.map → execute-dev-BICPaq1g-DQccw8kr.mjs.map} +1 -1
  27. package/dist/{execute-log-B_zCJ17b-CE954g1a.mjs → execute-log-DivzSDBL-CBdSN2Vv.mjs} +7 -10
  28. package/dist/execute-log-DivzSDBL-CBdSN2Vv.mjs.map +1 -0
  29. package/dist/{local-target-DnA2E8IN.mjs → local-target-B4xoiDAV.mjs} +2 -2
  30. package/dist/{local-target-DnA2E8IN.mjs.map → local-target-B4xoiDAV.mjs.map} +1 -1
  31. package/dist/local-target.d.mts +1 -1
  32. package/dist/local-target.mjs +2 -2
  33. package/dist/nextjs-control.d.mts +4 -4
  34. package/dist/nextjs-control.mjs +2 -2
  35. package/dist/nextjs-control.mjs.map +1 -1
  36. package/dist/node-control.d.mts +4 -4
  37. package/dist/node-control.mjs +2 -2
  38. package/dist/node-control.mjs.map +1 -1
  39. package/dist/{pipeline-C7gNjMzJ-CzM8DNS_.mjs → pipeline-DYvl561J-DDtnkFPh.mjs} +278 -311
  40. package/dist/pipeline-DYvl561J-DDtnkFPh.mjs.map +1 -0
  41. package/dist/report.d.mts +4 -3
  42. package/dist/report.d.mts.map +1 -1
  43. package/dist/report.mjs +2 -2
  44. package/dist/report.mjs.map +1 -1
  45. package/dist/{run-alchemy-pANK8XNX-CgCpXLkG.mjs → run-alchemy-BEvB2sYQ-Cy2fhbcu.mjs} +2 -2
  46. package/dist/{run-alchemy-pANK8XNX-CgCpXLkG.mjs.map → run-alchemy-BEvB2sYQ-Cy2fhbcu.mjs.map} +1 -1
  47. package/package.json +11 -12
  48. package/skills/prisma-composer-core-concepts/SKILL.md +106 -45
  49. package/src/exports/testing.ts +1 -1
  50. package/dist/config-BGtKERz-.d.mts +0 -1
  51. package/dist/deploy-BGtKERz-.d.mts +0 -1
  52. package/dist/deployment-summary-DswOl_9E-B9MhYYDt.mjs +0 -70
  53. package/dist/deployment-summary-DswOl_9E-B9MhYYDt.mjs.map +0 -1
  54. package/dist/execute-deploy-destroy-CvKCwVkD-Di3Ooeip.mjs.map +0 -1
  55. package/dist/execute-log-B_zCJ17b-CE954g1a.mjs.map +0 -1
  56. package/dist/pipeline-C7gNjMzJ-CzM8DNS_.mjs.map +0 -1
  57. package/dist/result-CQIOBgdW.mjs +0 -247
  58. package/dist/result-CQIOBgdW.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- //#region ../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs
1
+ //#region ../../0-framework/1-core/core/dist/app-config-CGJHcFb-.mjs
2
2
  /** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). "dev" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */
3
3
  const DEV_DIR = ".prisma-composer/dev";
4
4
  /**
@@ -12,11 +12,11 @@ const DEV_DIR = ".prisma-composer/dev";
12
12
  function isBuildOnlyExtension(extension) {
13
13
  return Object.values(extension.nodes).every((node) => node.kind === "build") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;
14
14
  }
15
- /** Typed identity — exists so `prisma-composer.config.ts` gets checked against PrismaAppConfig where it is written. */
15
+ /** Typed identity — exists so the `composer` section of `prisma.config.ts` gets checked against PrismaAppConfig where it is written. */
16
16
  function defineConfig(config) {
17
17
  return config;
18
18
  }
19
19
  //#endregion
20
20
  export { defineConfig as n, isBuildOnlyExtension as r, DEV_DIR as t };
21
21
 
22
- //# sourceMappingURL=app-config-joXc-BKm-CdcXqNMD.mjs.map
22
+ //# sourceMappingURL=app-config-CGJHcFb--CIEFCG4V.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-config-joXc-BKm-CdcXqNMD.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-joXc-BKm.mjs"],"sourcesContent":["//#region src/control/app-config.ts\n/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). \"dev\" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */\nconst DEV_DIR = \".prisma-composer/dev\";\n/**\n* True when an extension only participates in assembly (every `nodes` entry\n* is `kind: 'build'`, and it declares none of `providers`/`application`/\n* `provisions`/`container`) — it owns no resources or services, so it has\n* nothing to emulate and is exempt from local-target-capability requirements\n* (ADR-0041). Shared by `localTargetProviders` and every local-target hook\n* iteration.\n*/\nfunction isBuildOnlyExtension(extension) {\n\treturn Object.values(extension.nodes).every((node) => node.kind === \"build\") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;\n}\n/** Typed identity — exists so `prisma-composer.config.ts` gets checked against PrismaAppConfig where it is written. */\nfunction defineConfig(config) {\n\treturn config;\n}\n//#endregion\nexport { defineConfig as n, isBuildOnlyExtension as r, DEV_DIR as t };\n\n//# sourceMappingURL=app-config-joXc-BKm.mjs.map"],"mappings":";;AAEA,MAAM,UAAU;;;;;;;;;AAShB,SAAS,qBAAqB,WAAW;CACxC,OAAO,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,OAAO,SAAS,KAAK,SAAS,OAAO,KAAK,UAAU,cAAc,KAAK,KAAK,UAAU,gBAAgB,KAAK,KAAK,UAAU,eAAe,KAAK,KAAK,UAAU,cAAc,KAAK;AACvN;;AAEA,SAAS,aAAa,QAAQ;CAC7B,OAAO;AACR"}
1
+ {"version":3,"file":"app-config-CGJHcFb--CIEFCG4V.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-CGJHcFb-.mjs"],"sourcesContent":["//#region src/control/app-config.ts\n/** `<cwd>/.prisma-composer/dev` — the dev instance's app-scoped state directory (ADR-0041, ADR-0004's tool-state rule). \"dev\" names the user-facing feature/dir (naming, operator 2026-07-23) — this constant's name and value are unchanged by the localTarget rename. */\nconst DEV_DIR = \".prisma-composer/dev\";\n/**\n* True when an extension only participates in assembly (every `nodes` entry\n* is `kind: 'build'`, and it declares none of `providers`/`application`/\n* `provisions`/`container`) — it owns no resources or services, so it has\n* nothing to emulate and is exempt from local-target-capability requirements\n* (ADR-0041). Shared by `localTargetProviders` and every local-target hook\n* iteration.\n*/\nfunction isBuildOnlyExtension(extension) {\n\treturn Object.values(extension.nodes).every((node) => node.kind === \"build\") && extension.providers === void 0 && extension.application === void 0 && extension.provisions === void 0 && extension.container === void 0;\n}\n/** Typed identity — exists so the `composer` section of `prisma.config.ts` gets checked against PrismaAppConfig where it is written. */\nfunction defineConfig(config) {\n\treturn config;\n}\n//#endregion\nexport { defineConfig as n, isBuildOnlyExtension as r, DEV_DIR as t };\n\n//# sourceMappingURL=app-config-CGJHcFb-.mjs.map"],"mappings":";;AAEA,MAAM,UAAU;;;;;;;;;AAShB,SAAS,qBAAqB,WAAW;CACxC,OAAO,OAAO,OAAO,UAAU,KAAK,CAAC,CAAC,OAAO,SAAS,KAAK,SAAS,OAAO,KAAK,UAAU,cAAc,KAAK,KAAK,UAAU,gBAAgB,KAAK,KAAK,UAAU,eAAe,KAAK,KAAK,UAAU,cAAc,KAAK;AACvN;;AAEA,SAAS,aAAa,QAAQ;CAC7B,OAAO;AACR"}
@@ -5,7 +5,7 @@ import { Input, StackServices } from "alchemy";
5
5
  import * as Effect from "effect/Effect";
6
6
  import * as Layer from "effect/Layer";
7
7
  import { State } from "alchemy/State/State";
8
- //#region ../../0-framework/1-core/core/dist/app-config-jGcCcxK4.d.mts
8
+ //#region ../../0-framework/1-core/core/dist/app-config-DyCMnkDr.d.mts
9
9
  //#region src/container-transport.d.ts
10
10
  /**
11
11
  * Carries resolved containers from the CLI process into the alchemy process
@@ -280,7 +280,7 @@ interface Bundle {
280
280
  readonly entry: string;
281
281
  /**
282
282
  * Absolute paths to the USER-BUILT inputs this bundle was assembled from
283
- * (ADR-0041). `prisma-composer dev`'s watch loop watches exactly these — a
283
+ * (ADR-0041). `prisma dev`'s watch loop watches exactly these — a
284
284
  * file entry as a file, a directory entry recursively — and re-runs
285
285
  * assemble on a change. Optional so a build adapter that predates this
286
286
  * field still compiles; a bundle without it is simply not watched.
@@ -633,8 +633,8 @@ interface PrismaAppConfig {
633
633
  readonly extensions: ExtensionDescriptor[];
634
634
  readonly state: StateDescriptor;
635
635
  }
636
- /** Typed identity — exists so `prisma-composer.config.ts` gets checked against PrismaAppConfig where it is written. */
636
+ /** Typed identity — exists so the `composer` section of `prisma.config.ts` gets checked against PrismaAppConfig where it is written. */
637
637
  declare function defineConfig(config: PrismaAppConfig): PrismaAppConfig;
638
638
  //#endregion
639
639
  export { readPreflightPayload as $, PrismaAppConfig as A, TeardownInput as B, LoweredResult as C, PackageInput as D, Outputs as E, ReporterDescriptor as F, deserializeContainers as G, containerEnv as H, RunOutcome as I, lower as J, isBuildOnlyExtension as K, RunReporter as L, ProvisionerDescriptor as M, ReportAttachInput as N, PreflightInput as O, ReportBeginInput as P, preflightEnvVarName as Q, ServiceLowering as R, LowerOptions as S, NodeDescriptor as T, containerEnvVarName as U, buildConfig as V, defineConfig as W, mergedProviders as X, lowering as Y, preflightEnv as Z, LocalTargetEmulatorsInput as _, Bundle as a, LowerContext as b, ContainerInstance as c, DeployedNode as d, resolveStateLayer as et, DeploymentResult as f, LocalTargetDescriptor as g, LocalTargetAttachment as h, AssembleInput as i, ProvisionEdge as j, PreflightPayload as k, DEV_DIR as l, LocalTargetAttachInput as m, ApplicationDescriptor as n, ContainerCredentials as o, ExtensionDescriptor as p, joinDeployment as q, Artifact as r, ContainerDescriptor as s, AlchemyStateLayer as t, DeployedEntity as u, LocalTargetProvidersInput as v, Lowering as w, LowerError as x, LocateContainerInput as y, StateDescriptor as z };
640
- //# sourceMappingURL=app-config-jGcCcxK4-DnzGGbDS.d.mts.map
640
+ //# sourceMappingURL=app-config-DyCMnkDr-CguUhanl.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"app-config-jGcCcxK4-DnzGGbDS.d.mts","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-jGcCcxK4.d.mts"],"mappings":"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"}
1
+ {"version":3,"file":"app-config-DyCMnkDr-CguUhanl.d.mts","names":[],"sources":["../../../0-framework/1-core/core/dist/app-config-DyCMnkDr.d.mts"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config-CdxvLFzg.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/config.mjs"],"sourcesContent":["import { i as envVarSafeExtensionId, n as containerEnvVarName, r as deserializeContainers, t as containerEnv } from \"./container-transport-HcvNOGZL.mjs\";\nimport { n as defineConfig, r as isBuildOnlyExtension, t as DEV_DIR } from \"./app-config-joXc-BKm.mjs\";\n//#region src/preflight-transport.ts\n/**\n* Carries an extension's deploy-preflight payload from the CLI process to the\n* alchemy child (which re-imports the config from scratch) — one env var per\n* extension, same channel as containers (container-transport.ts). The\n* framework never reads the contents. Payloads carry metadata only, never\n* secret values: the child's environment is not a secret store.\n*/\n/** '@prisma/composer-prisma-cloud' → 'PRISMA_COMPOSER_PREFLIGHT_PRISMA_COMPOSER_PRISMA_CLOUD' */\nfunction preflightEnvVarName(extensionId) {\n\treturn `PRISMA_COMPOSER_PREFLIGHT_${envVarSafeExtensionId(extensionId)}`;\n}\n/** The env entries the CLI sets on the alchemy process: `{ [preflightEnvVarName(id)]: payload }` for every extension whose preflight returned one. */\nfunction preflightEnv(payloads) {\n\tconst env = {};\n\tconst ownerByVarName = /* @__PURE__ */ new Map();\n\tfor (const [extensionId, payload] of payloads) {\n\t\tif (payload.length === 0) continue;\n\t\tconst varName = preflightEnvVarName(extensionId);\n\t\tconst owner = ownerByVarName.get(varName);\n\t\tif (owner !== void 0) throw new Error(`Extension ids \"${owner}\" and \"${extensionId}\" both map to the preflight transport variable \"${varName}\" — rename one of the extensions.`);\n\t\townerByVarName.set(varName, extensionId);\n\t\tenv[varName] = payload;\n\t}\n\treturn env;\n}\n/** The alchemy-process side: the payload this extension's own preflight wrote, or `undefined` when it wrote none (or when nothing ran a preflight at all). */\nfunction readPreflightPayload(extensionId, env) {\n\tconst payload = env[preflightEnvVarName(extensionId)];\n\treturn payload === void 0 || payload.length === 0 ? void 0 : payload;\n}\n//#endregion\nexport { DEV_DIR, containerEnv, containerEnvVarName, defineConfig, deserializeContainers, isBuildOnlyExtension, preflightEnv, preflightEnvVarName, readPreflightPayload };\n\n//# sourceMappingURL=config.mjs.map"],"mappings":";;;;;;;;;;AAWA,SAAS,oBAAoB,aAAa;CACzC,OAAO,6BAA6B,sBAAsB,WAAW;AACtE;;AAEA,SAAS,aAAa,UAAU;CAC/B,MAAM,MAAM,CAAC;CACb,MAAM,iCAAiC,IAAI,IAAI;CAC/C,KAAK,MAAM,CAAC,aAAa,YAAY,UAAU;EAC9C,IAAI,QAAQ,WAAW,GAAG;EAC1B,MAAM,UAAU,oBAAoB,WAAW;EAC/C,MAAM,QAAQ,eAAe,IAAI,OAAO;EACxC,IAAI,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,kBAAkB,MAAM,SAAS,YAAY,kDAAkD,QAAQ,kCAAkC;EAC/K,eAAe,IAAI,SAAS,WAAW;EACvC,IAAI,WAAW;CAChB;CACA,OAAO;AACR;;AAEA,SAAS,qBAAqB,aAAa,KAAK;CAC/C,MAAM,UAAU,IAAI,oBAAoB,WAAW;CACnD,OAAO,YAAY,KAAK,KAAK,QAAQ,WAAW,IAAI,KAAK,IAAI;AAC9D"}
1
+ {"version":3,"file":"config-CdxvLFzg.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/config.mjs"],"sourcesContent":["import { i as envVarSafeExtensionId, n as containerEnvVarName, r as deserializeContainers, t as containerEnv } from \"./container-transport-HcvNOGZL.mjs\";\nimport { n as defineConfig, r as isBuildOnlyExtension, t as DEV_DIR } from \"./app-config-CGJHcFb-.mjs\";\n//#region src/preflight-transport.ts\n/**\n* Carries an extension's deploy-preflight payload from the CLI process to the\n* alchemy child (which re-imports the config from scratch) — one env var per\n* extension, same channel as containers (container-transport.ts). The\n* framework never reads the contents. Payloads carry metadata only, never\n* secret values: the child's environment is not a secret store.\n*/\n/** '@prisma/composer-prisma-cloud' → 'PRISMA_COMPOSER_PREFLIGHT_PRISMA_COMPOSER_PRISMA_CLOUD' */\nfunction preflightEnvVarName(extensionId) {\n\treturn `PRISMA_COMPOSER_PREFLIGHT_${envVarSafeExtensionId(extensionId)}`;\n}\n/** The env entries the CLI sets on the alchemy process: `{ [preflightEnvVarName(id)]: payload }` for every extension whose preflight returned one. */\nfunction preflightEnv(payloads) {\n\tconst env = {};\n\tconst ownerByVarName = /* @__PURE__ */ new Map();\n\tfor (const [extensionId, payload] of payloads) {\n\t\tif (payload.length === 0) continue;\n\t\tconst varName = preflightEnvVarName(extensionId);\n\t\tconst owner = ownerByVarName.get(varName);\n\t\tif (owner !== void 0) throw new Error(`Extension ids \"${owner}\" and \"${extensionId}\" both map to the preflight transport variable \"${varName}\" — rename one of the extensions.`);\n\t\townerByVarName.set(varName, extensionId);\n\t\tenv[varName] = payload;\n\t}\n\treturn env;\n}\n/** The alchemy-process side: the payload this extension's own preflight wrote, or `undefined` when it wrote none (or when nothing ran a preflight at all). */\nfunction readPreflightPayload(extensionId, env) {\n\tconst payload = env[preflightEnvVarName(extensionId)];\n\treturn payload === void 0 || payload.length === 0 ? void 0 : payload;\n}\n//#endregion\nexport { DEV_DIR, containerEnv, containerEnvVarName, defineConfig, deserializeContainers, isBuildOnlyExtension, preflightEnv, preflightEnvVarName, readPreflightPayload };\n\n//# sourceMappingURL=config.mjs.map"],"mappings":";;;;;;;;;;AAWA,SAAS,oBAAoB,aAAa;CACzC,OAAO,6BAA6B,sBAAsB,WAAW;AACtE;;AAEA,SAAS,aAAa,UAAU;CAC/B,MAAM,MAAM,CAAC;CACb,MAAM,iCAAiC,IAAI,IAAI;CAC/C,KAAK,MAAM,CAAC,aAAa,YAAY,UAAU;EAC9C,IAAI,QAAQ,WAAW,GAAG;EAC1B,MAAM,UAAU,oBAAoB,WAAW;EAC/C,MAAM,QAAQ,eAAe,IAAI,OAAO;EACxC,IAAI,UAAU,KAAK,GAAG,MAAM,IAAI,MAAM,kBAAkB,MAAM,SAAS,YAAY,kDAAkD,QAAQ,kCAAkC;EAC/K,eAAe,IAAI,SAAS,WAAW;EACvC,IAAI,WAAW;CAChB;CACA,OAAO;AACR;;AAEA,SAAS,qBAAqB,aAAa,KAAK;CAC/C,MAAM,UAAU,IAAI,oBAAoB,WAAW;CACnD,OAAO,YAAY,KAAK,KAAK,QAAQ,WAAW,IAAI,KAAK,IAAI;AAC9D"}
@@ -0,0 +1 @@
1
+ import "./app-config-DyCMnkDr-CguUhanl.mjs";
package/dist/config.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { $ as readPreflightPayload, A as PrismaAppConfig, B as TeardownInput, F as ReporterDescriptor, G as deserializeContainers, H as containerEnv, I as RunOutcome, K as isBuildOnlyExtension, L as RunReporter, N as ReportAttachInput, O as PreflightInput, P as ReportBeginInput, Q as preflightEnvVarName, T as NodeDescriptor, U as containerEnvVarName, W as defineConfig, Z as preflightEnv, _ as LocalTargetEmulatorsInput, c as ContainerInstance, g as LocalTargetDescriptor, h as LocalTargetAttachment, k as PreflightPayload, l as DEV_DIR, m as LocalTargetAttachInput, o as ContainerCredentials, p as ExtensionDescriptor, s as ContainerDescriptor, u as DeployedEntity, v as LocalTargetProvidersInput, y as LocateContainerInput, z as StateDescriptor } from "./app-config-jGcCcxK4-DnzGGbDS.mjs";
2
- import "./config-BGtKERz-.mjs";
1
+ import { $ as readPreflightPayload, A as PrismaAppConfig, B as TeardownInput, F as ReporterDescriptor, G as deserializeContainers, H as containerEnv, I as RunOutcome, K as isBuildOnlyExtension, L as RunReporter, N as ReportAttachInput, O as PreflightInput, P as ReportBeginInput, Q as preflightEnvVarName, T as NodeDescriptor, U as containerEnvVarName, W as defineConfig, Z as preflightEnv, _ as LocalTargetEmulatorsInput, c as ContainerInstance, g as LocalTargetDescriptor, h as LocalTargetAttachment, k as PreflightPayload, l as DEV_DIR, m as LocalTargetAttachInput, o as ContainerCredentials, p as ExtensionDescriptor, s as ContainerDescriptor, u as DeployedEntity, v as LocalTargetProvidersInput, y as LocateContainerInput, z as StateDescriptor } from "./app-config-DyCMnkDr-CguUhanl.mjs";
2
+ import "./config-i9yR7YWi.mjs";
3
3
  export { type ContainerCredentials, type ContainerDescriptor, type ContainerInstance, DEV_DIR, type DeployedEntity, ExtensionDescriptor, LocalTargetAttachInput, LocalTargetAttachment, LocalTargetDescriptor, LocalTargetEmulatorsInput, LocalTargetProvidersInput, type LocateContainerInput, NodeDescriptor, PreflightInput, type PreflightPayload, PrismaAppConfig, ReportAttachInput, ReportBeginInput, ReporterDescriptor, RunOutcome, RunReporter, StateDescriptor, TeardownInput, containerEnv, containerEnvVarName, defineConfig, deserializeContainers, isBuildOnlyExtension, preflightEnv, preflightEnvVarName, readPreflightPayload };
package/dist/config.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
  import { n as containerEnvVarName, r as deserializeContainers, t as containerEnv } from "./container-transport-HcvNOGZL-twPi2TIv.mjs";
2
- import { n as defineConfig, r as isBuildOnlyExtension, t as DEV_DIR } from "./app-config-joXc-BKm-CdcXqNMD.mjs";
2
+ import { n as defineConfig, r as isBuildOnlyExtension, t as DEV_DIR } from "./app-config-CGJHcFb--CIEFCG4V.mjs";
3
3
  import { n as preflightEnvVarName, r as readPreflightPayload, t as preflightEnv } from "./config-CdxvLFzg.mjs";
4
4
  export { DEV_DIR, containerEnv, containerEnvVarName, defineConfig, deserializeContainers, isBuildOnlyExtension, preflightEnv, preflightEnvVarName, readPreflightPayload };
@@ -1,8 +1,9 @@
1
1
  import { ht as CliStructuredError } from "./graph-types-BTTaRnih-BF6PobQ3.mjs";
2
- import { u as DeployedEntity } from "./app-config-jGcCcxK4-DnzGGbDS.mjs";
3
- import "./config-BGtKERz-.mjs";
2
+ import { A as PrismaAppConfig } from "./app-config-DyCMnkDr-CguUhanl.mjs";
3
+ import "./config-i9yR7YWi.mjs";
4
+ import "./deploy-i9yR7YWi.mjs";
5
+ import { n as DeploymentSummary, t as DeployedNodeSummary } from "./deployment-summary-CU-eVvJM-c3AqO52N.mjs";
4
6
  import "./index-DeocL1di.mjs";
5
- import "./deploy-BGtKERz-.mjs";
6
7
  //#region ../../0-framework/0-foundation/foundation/dist/result.d.mts
7
8
  //#region src/result.d.ts
8
9
  /**
@@ -31,17 +32,14 @@ interface NotOk<F> {
31
32
  */
32
33
  type Result<T, F> = Ok<T> | NotOk<F>;
33
34
  //#endregion
34
- //#region ../../0-framework/3-tooling/cli/dist/log-C9rzlqfJ.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[];
35
+ //#region ../../0-framework/3-tooling/cli/dist/dev-CpevhBSn.d.mts
36
+ //#region src/composer-config.d.ts
37
+ /** Composer's configuration and the `prisma.config.ts` that declares it. */
38
+ interface ComposerConfigSource {
39
+ /** The `composer` section: the `composer` property of that file's default export. */
40
+ readonly value: PrismaAppConfig;
41
+ /** The declaring `prisma.config.ts`. The deploy's generated stack file imports it. A relative path resolves against the operation's `cwd`. */
42
+ readonly file: string;
45
43
  }
46
44
  //#endregion
47
45
  //#region src/operations/shared.d.ts
@@ -79,7 +77,11 @@ declare function executionDiagnostics(f: CliStructuredError): ExecutionDiagnosti
79
77
  //#endregion
80
78
  //#region src/operations/deploy.d.ts
81
79
  interface DeployInput {
82
- /** Path to the entry module, resolved against `cwd` — same contract as `prisma-composer deploy <entry>`. */
80
+ /**
81
+ * Composer's configuration: the `composer` section of `prisma.config.ts` and that file. The operation does not look for a config file; it refuses a section the CLI would refuse, before any work starts.
82
+ */
83
+ readonly config: ComposerConfigSource;
84
+ /** Path to the entry module, resolved against `cwd` — same contract as `prisma deploy <entry>`. */
83
85
  readonly entry: string;
84
86
  /** Override the root node's name (the `--name` flag's slot). */
85
87
  readonly name?: string | undefined;
@@ -109,30 +111,6 @@ interface DeploySuccess {
109
111
  }
110
112
  declare function deploy(input: DeployInput): Promise<Result<DeploySuccess, CliStructuredError>>;
111
113
  //#endregion
112
- //#region src/operations/destroy.d.ts
113
- /** Destroy must name its target explicitly — no silent default to production. Encoded, not re-derived from flags. */
114
- type DestroyTarget = {
115
- readonly kind: 'production';
116
- } | {
117
- readonly kind: 'stage';
118
- readonly stage: string;
119
- };
120
- type DestroyEvent =
121
- /** Emitted before the pipeline when `<cwd>/.alchemy` is missing/empty. */
122
- {
123
- readonly kind: 'no-local-deploy-state';
124
- readonly cwd: string;
125
- };
126
- interface DestroyInput {
127
- readonly entry: string;
128
- readonly name?: string | undefined;
129
- readonly target: DestroyTarget;
130
- readonly cwd?: string | undefined;
131
- /** Mid-operation notifications, in real time. Rendering is the host's. */
132
- readonly onEvent?: ((event: DestroyEvent) => void) | undefined;
133
- }
134
- declare function destroy(input: DestroyInput): Promise<Result<void, CliStructuredError>>;
135
- //#endregion
136
114
  //#region src/operations/dev.d.ts
137
115
  type DevEvent =
138
116
  /** Initial front door + after each successful re-converge. */
@@ -151,6 +129,11 @@ type DevEvent =
151
129
  readonly kind: 'watch-error';
152
130
  readonly message: string;
153
131
  } |
132
+ /** `prisma.config.ts` changed. The session keeps the config it started with and stops rebuilding until it is restarted. */
133
+ {
134
+ readonly kind: 'config-changed';
135
+ readonly file: string;
136
+ } |
154
137
  /** The app keeps running, still watching. */
155
138
  {
156
139
  readonly kind: 'converge-failed';
@@ -168,6 +151,10 @@ type DevEvent =
168
151
  readonly kind: 'stopped';
169
152
  };
170
153
  interface DevInput {
154
+ /**
155
+ * Composer's configuration: the `composer` section of `prisma.config.ts` and that file. The operation does not look for a config file; it refuses a section the CLI would refuse, before any work starts.
156
+ */
157
+ readonly config: ComposerConfigSource;
171
158
  readonly entry: string;
172
159
  readonly name?: string | undefined;
173
160
  readonly fresh?: boolean | undefined;
@@ -188,6 +175,35 @@ interface DevSession {
188
175
  }
189
176
  declare function dev(input: DevInput): Promise<Result<DevSession, CliStructuredError>>;
190
177
  //#endregion
178
+ //#region ../../0-framework/3-tooling/cli/dist/control.d.mts
179
+ //#region src/operations/destroy.d.ts
180
+ /** Destroy must name its target explicitly — no silent default to production. Encoded, not re-derived from flags. */
181
+ type DestroyTarget = {
182
+ readonly kind: 'production';
183
+ } | {
184
+ readonly kind: 'stage';
185
+ readonly stage: string;
186
+ };
187
+ type DestroyEvent =
188
+ /** Emitted before the pipeline when `<cwd>/.alchemy` is missing/empty. */
189
+ {
190
+ readonly kind: 'no-local-deploy-state';
191
+ readonly cwd: string;
192
+ };
193
+ interface DestroyInput {
194
+ /**
195
+ * Composer's configuration: the `composer` section of `prisma.config.ts` and that file. The operation does not look for a config file; it refuses a section the CLI would refuse, before any work starts.
196
+ */
197
+ readonly config: ComposerConfigSource;
198
+ readonly entry: string;
199
+ readonly name?: string | undefined;
200
+ readonly target: DestroyTarget;
201
+ readonly cwd?: string | undefined;
202
+ /** Mid-operation notifications, in real time. Rendering is the host's. */
203
+ readonly onEvent?: ((event: DestroyEvent) => void) | undefined;
204
+ }
205
+ declare function destroy(input: DestroyInput): Promise<Result<void, CliStructuredError>>;
206
+ //#endregion
191
207
  //#region src/operations/log.d.ts
192
208
  interface LogLine {
193
209
  readonly service: string;
@@ -206,12 +222,16 @@ type LogEvent =
206
222
  readonly count: number;
207
223
  };
208
224
  interface LogInput {
225
+ /**
226
+ * Composer's configuration: the `composer` section of `prisma.config.ts` and that file. The operation does not look for a config file; it refuses a section the CLI would refuse, before any work starts.
227
+ * `log` reads only the section; it takes the same input as the other operations so a host builds it once.
228
+ */
229
+ readonly config: ComposerConfigSource;
209
230
  readonly entry: string;
210
231
  readonly name?: string | undefined;
211
232
  /** Restrict to one service's dotted address; validated against running services. */
212
233
  readonly address?: string | undefined;
213
- /** Trailing history lines before live output. Defaults to 0 (live only) —
214
- * the attachment contract's default; the CLI's user-facing default of 20 stays in main.ts. */
234
+ /** Trailing history lines before live output. Defaults to 0 (live only). */
215
235
  readonly tail?: number | undefined;
216
236
  readonly cwd?: string | undefined;
217
237
  /** Ends the stream when aborted. The host owns SIGINT/SIGTERM → abort. */
@@ -219,7 +239,7 @@ interface LogInput {
219
239
  readonly onEvent?: ((event: LogEvent) => void) | undefined;
220
240
  }
221
241
  interface LogAttached {
222
- /** For the adapter's empty-services notice. */
242
+ /** The app's name, for a caller's empty-services notice. */
223
243
  readonly appName: string;
224
244
  /** Every running service. EMPTY means nothing is running — a valid, non-failure state;
225
245
  * `lines` is then an already-finished iterable. */
@@ -229,7 +249,6 @@ interface LogAttached {
229
249
  }
230
250
  declare function log(input: LogInput): Promise<Result<LogAttached, CliStructuredError>>;
231
251
  //#endregion
232
- //#region ../../0-framework/3-tooling/cli/dist/control.d.mts
233
252
  //#region src/run-report.d.ts
234
253
  /** Bump when a change would break a consumer that reads the current shape. */
235
254
  declare const RUN_REPORT_VERSION = 1;
@@ -256,5 +275,5 @@ interface RunReport {
256
275
  readonly failure: RunReportFailure | null;
257
276
  }
258
277
  //#endregion
259
- 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, RUN_REPORT_FILE_ENV, RUN_REPORT_VERSION, type Result, type RunReport, type RunReportFailure, type ServiceEndpoint, deploy, destroy, dev, executionDiagnostics, log };
278
+ export { type CliStructuredError, type ComposerConfigSource, 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, RUN_REPORT_FILE_ENV, RUN_REPORT_VERSION, type Result, type RunReport, type RunReportFailure, type ServiceEndpoint, deploy, destroy, dev, executionDiagnostics, log };
260
279
  //# sourceMappingURL=control.d.mts.map
@@ -1 +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-C9rzlqfJ.d.mts","../../../0-framework/3-tooling/cli/dist/control.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;;;;;;;WAOA;;;;;;;WAOA;;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;;;;;cCnQrD;;cAEA;UACJ;;WAEC;WACA;;;;;;;UAOD;WACC;WACA;;WAEA;;WAEA;WACA,gBAAgB;WAChB,SAAS"}
1
+ {"version":3,"file":"control.d.mts","names":[],"sources":["../../../0-framework/0-foundation/foundation/dist/result.d.mts","../../../0-framework/3-tooling/cli/dist/dev-CpevhBSn.d.mts","../../../0-framework/3-tooling/cli/dist/control.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;;;;;UCjBxB;;WAEC,OAAO;;WAEP;;;;;;UAmED;WACC;WACA;;;;;;;;;;UA0CD;;;WAGC;;;;WAIA;WACA;WACA;WACA;;;;;;iBAMM,qBAAqB,GAAG,qBAAqB;;;UAGpD;;;;WAIC,QAAQ;;WAER;;WAEA;;WAEA;;WAEA;;;;;;;WAOA;;;;;;;WAOA;;UAED;;;WAGC,SAAS;;iBAEH,OAAO,OAAO,cAAc,QAAQ,OAAO,eAAe;;;KAOtE;;;WAGM;WACA,oBAAoB;;WAEpB;WACA;;WAEA;WACA;;;;WAIA;WACA;;;;WAIA;WACA;;;;WAIA;WACA;WACA;WACA;;WAEA;;;;WAIA;WACA;;WAEA;;UAED;;;;WAIC,QAAQ;WACR;WACA;WACA;WACA;WACA,YAAY,OAAO;;;;;UAKpB;;WAEC,oBAAoB;;;EAG7B,QAAQ;;WAEC,QAAQ;;iBAEF,IAAI,OAAO,WAAW,QAAQ,OAAO,YAAY;;;;;KC1O7D;WACM;;WAEA;WACA;;KAEN;;;WAGM;WACA;;UAED;;;;WAIC,QAAQ;WACR;WACA;WACA,QAAQ;WACR;;WAEA,YAAY,OAAO;;iBAEb,QAAQ,OAAO,eAAe,QAAQ,aAAe;;;UAG5D;WACC;WACA;;KAEN;;;WAGM;WACA;;;;;WAKA;WACA;;UAED;;;;;WAKC,QAAQ;WACR;WACA;;WAEA;;WAEA;WACA;;WAEA,SAAS;WACT,YAAY,OAAO;;UAEpB;;WAEC;;;WAGA,mBAAmB;;WAEnB,OAAO,cAAc;;iBAEf,IAAI,OAAO,WAAW,QAAQ,OAAS,aAAa;;;;cAIvD;;cAEA;UACJ;;WAEC;WACA;;;;;;;UAOD;WACC;WACA;;WAEA;;WAEA;WACA,gBAAgB;WAChB,SAAS"}
package/dist/control.mjs CHANGED
@@ -1,67 +1,35 @@
1
- import { a as executionDiagnostics, o as executorLoadFailure, t as notOk } from "./result-CQIOBgdW.mjs";
1
+ import { i as executorLoadFailure, n as dev, o as notOk, r as executionDiagnostics, t as deploy } from "./dev-Bmq-eLnv-DsenQNJM.mjs";
2
2
  import { n as RUN_REPORT_VERSION, t as RUN_REPORT_FILE_ENV } from "./run-report-C2o98uD--AX8kpz4Q.mjs";
3
- //#region ../../0-framework/3-tooling/cli/dist/log-DHFQEBKS.mjs
4
- async function deploy(input) {
5
- return deployWithDeps(input, {});
6
- }
7
- /** In-package variant threading the injection seam (the CLI's RunDeps, unit
8
- * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
9
- * internal types and is not part of the published surface. */
10
- async function deployWithDeps(input, deps) {
11
- const cwd = input.cwd ?? process.cwd();
12
- let executor;
13
- try {
14
- executor = await import("./execute-deploy-destroy-CvKCwVkD-Di3Ooeip.mjs");
15
- } catch (error) {
16
- return notOk(executorLoadFailure("deploy", error, cwd));
17
- }
18
- return executor.executeDeploy(input, deps, cwd);
19
- }
3
+ //#region ../../0-framework/3-tooling/cli/dist/control.mjs
20
4
  async function destroy(input) {
21
5
  return destroyWithDeps(input, {});
22
6
  }
23
- /** In-package variant threading the injection seam (the CLI's RunDeps, unit
24
- * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
7
+ /** In-package variant threading the injection seam, for the unit tests.
8
+ * Deliberately NOT re-exported through `./control` — the seam mirrors
25
9
  * internal types and is not part of the published surface. */
26
10
  async function destroyWithDeps(input, deps) {
27
11
  const cwd = input.cwd ?? process.cwd();
28
12
  let executor;
29
13
  try {
30
- executor = await import("./execute-deploy-destroy-CvKCwVkD-Di3Ooeip.mjs");
14
+ executor = await import("./execute-deploy-destroy-c0eko3AO-BoK0-r1U.mjs");
31
15
  } catch (error) {
32
- return notOk(executorLoadFailure("destroy", error, cwd));
16
+ return notOk(executorLoadFailure("destroy", error));
33
17
  }
34
18
  return executor.executeDestroy(input, deps, cwd);
35
19
  }
36
- async function dev(input) {
37
- return devWithDeps(input, {});
38
- }
39
- /** In-package variant threading the injection seam (the CLI's RunDeps, unit
40
- * tests). Deliberately NOT re-exported through `./control` — the seam mirrors
41
- * internal types and is not part of the published surface. */
42
- async function devWithDeps(input, deps) {
43
- const cwd = input.cwd ?? process.cwd();
44
- let executor;
45
- try {
46
- executor = await import("./execute-dev-BLCK5wF7-CJvkj5wl.mjs");
47
- } catch (error) {
48
- return notOk(executorLoadFailure("dev", error, cwd));
49
- }
50
- return executor.executeDev(input, deps, cwd);
51
- }
52
20
  async function log(input) {
53
21
  return logWithDeps(input, {});
54
22
  }
55
- /** In-package variant threading the injection seam (the CLI's LogRunDeps,
56
- * unit tests). Deliberately NOT re-exported through `./control` — the seam
23
+ /** In-package variant threading the injection seam, for the unit tests.
24
+ * Deliberately NOT re-exported through `./control` — the seam
57
25
  * mirrors internal types and is not part of the published surface. */
58
26
  async function logWithDeps(input, deps) {
59
27
  const cwd = input.cwd ?? process.cwd();
60
28
  let executor;
61
29
  try {
62
- executor = await import("./execute-log-B_zCJ17b-CE954g1a.mjs");
30
+ executor = await import("./execute-log-DivzSDBL-CBdSN2Vv.mjs");
63
31
  } catch (error) {
64
- return notOk(executorLoadFailure("log", error, cwd));
32
+ return notOk(executorLoadFailure("log", error));
65
33
  }
66
34
  return executor.executeLog(input, deps, cwd);
67
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"control.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/log-DHFQEBKS.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-CvKCwVkD.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-CvKCwVkD.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-BLCK5wF7.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-B_zCJ17b.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-DHFQEBKS.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"}
1
+ {"version":3,"file":"control.mjs","names":[],"sources":["../../../0-framework/3-tooling/cli/dist/control.mjs"],"sourcesContent":["import { a as executionDiagnostics, o as executorLoadFailure, r as deploy, t as dev } from \"./dev-Bmq-eLnv.mjs\";\nimport { n as RUN_REPORT_VERSION, t as RUN_REPORT_FILE_ENV } from \"./run-report-C2o98uD-.mjs\";\nimport { notOk } from \"@internal/foundation/result\";\n//#region src/operations/destroy.ts\nasync function destroy(input) {\n\treturn destroyWithDeps(input, {});\n}\n/** In-package variant threading the injection seam, for the unit tests.\n* 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-c0eko3AO.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"destroy\", error));\n\t}\n\treturn executor.executeDestroy(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, for the unit tests.\n* 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-DivzSDBL.mjs\");\n\t} catch (error) {\n\t\treturn notOk(executorLoadFailure(\"log\", error));\n\t}\n\treturn executor.executeLog(input, deps, cwd);\n}\n//#endregion\nexport { RUN_REPORT_FILE_ENV, RUN_REPORT_VERSION, deploy, destroy, dev, executionDiagnostics, log };\n\n//# sourceMappingURL=control.mjs.map"],"mappings":";;;AAIA,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,KAAK,CAAC;CACnD;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,KAAK,CAAC;CAC/C;CACA,OAAO,SAAS,WAAW,OAAO,MAAM,GAAG;AAC5C"}
@@ -0,0 +1 @@
1
+ import "./app-config-DyCMnkDr-CguUhanl.mjs";
package/dist/deploy.d.mts CHANGED
@@ -1,3 +1,3 @@
1
- import { C as LoweredResult, D as PackageInput, E as Outputs, J as lower, M as ProvisionerDescriptor, R as ServiceLowering, S as LowerOptions, V as buildConfig, X as mergedProviders, Y as lowering, a as Bundle, b as LowerContext, d as DeployedNode, et as resolveStateLayer, f as DeploymentResult, i as AssembleInput, j as ProvisionEdge, n as ApplicationDescriptor, q as joinDeployment, r as Artifact, t as AlchemyStateLayer, u as DeployedEntity, w as Lowering, x as LowerError } from "./app-config-jGcCcxK4-DnzGGbDS.mjs";
2
- import "./deploy-BGtKERz-.mjs";
1
+ import { C as LoweredResult, D as PackageInput, E as Outputs, J as lower, M as ProvisionerDescriptor, R as ServiceLowering, S as LowerOptions, V as buildConfig, X as mergedProviders, Y as lowering, a as Bundle, b as LowerContext, d as DeployedNode, et as resolveStateLayer, f as DeploymentResult, i as AssembleInput, j as ProvisionEdge, n as ApplicationDescriptor, q as joinDeployment, r as Artifact, t as AlchemyStateLayer, u as DeployedEntity, w as Lowering, x as LowerError } from "./app-config-DyCMnkDr-CguUhanl.mjs";
2
+ import "./deploy-i9yR7YWi.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
@@ -125,7 +125,7 @@ function extensionsById(config) {
125
125
  return Effect.succeed(map);
126
126
  }
127
127
  function unknownExtensionError(extension, id) {
128
- return new LowerError(`No extension "${extension}" is configured (needed by node "${id}") — add it to prisma-composer.config.ts's \`extensions\` (import its /control entry and list its descriptor).`);
128
+ return new LowerError(`No extension "${extension}" is configured (needed by node "${id}") — add it to \`extensions\` in the \`composer\` section of prisma.config.ts (import its /control entry and list its descriptor).`);
129
129
  }
130
130
  function unknownNodeTypeError(extension, type) {
131
131
  return new LowerError(`Extension "${extension.id}" has no descriptor for node type "${type}" (known: ${Object.keys(extension.nodes).join(", ")}).`);
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/deploy.mjs"],"sourcesContent":["import { o as isParamSource, t as Load } from \"./graph-BfKAg2Ap.mjs\";\nimport { r as deserializeContainers } from \"./container-transport-HcvNOGZL.mjs\";\nimport * as Alchemy from \"alchemy\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\n//#region src/control/deploy.ts\nvar LowerError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"LowerError\";\n\t}\n};\n/**\n* Resolves one SERVICE-OWN param to its config value. The full resolution\n* order across both value channels:\n*\n* 1. A param claiming BOTH a provision-time binding and a `provision` need\n* (ADR-0031) is a loud error — two sources for one value.\n* 2. A provision-time binding (a schema-validated literal, or an opaque\n* `ParamSource` the target resolves at boot per ADR-0019) beats the\n* declared `default`.\n* 3. A framework-minted `provision` need is resolved per dependency EDGE\n* against the consumer extension's registry — that path fills CONNECTION\n* params in `buildConfig`'s inputs loop, never this function. A\n* service-own param has no edge to mint against, so an unbound need here\n* falls through like any unbound param.\n* 4. The `default`, else absent (only legal when `optional`), else a loud\n* error naming the param, the service, and the fix.\n*/\nfunction resolveParam(node, serviceId, name, param, bound) {\n\tif (bound !== void 0) {\n\t\tif (param.provision !== void 0) throw new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") has two sources claiming one value: a provision-time binding (${isParamSource(bound) ? \"a param source\" : \"a literal value\"}) AND a framework provision need (\"${String(param.provision.brand)}\") on its declaration — remove the binding or drop the \\`provision\\` facet.`);\n\t\tif (isParamSource(bound)) return bound;\n\t\tconst result = param.schema[\"~standard\"].validate(bound);\n\t\tif (result instanceof Promise) throw new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") uses an async Standard Schema — a provision-time literal value requires a synchronous validator.`);\n\t\tif (result.issues !== void 0) {\n\t\t\tconst messages = result.issues.map((issue) => issue.message).join(\"; \");\n\t\t\tthrow new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") received an invalid provision-time value: ${messages}`);\n\t\t}\n\t\treturn result.value;\n\t}\n\tif (param.default !== void 0) return param.default;\n\tif (param.optional === true) return void 0;\n\tthrow new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") has no default, is not optional, and was not bound at provision — bind it with a literal value or a param source (e.g. envParam('NAME')) on its provision() call, or give it a default.`);\n}\n/**\n* Assembles a service's typed Config. Connection params come from the\n* dependency edge's lowered outputs — or, for a param carrying a `provision`\n* need (ADR-0031), from `provisioned` (keyed by edge id): the framework mints\n* it, the producer hands nothing over. The service's own params resolve via\n* `resolveParam` (provision-time binding, then default, then loud\n* unbound-required failure).\n*\n* This is also where the connection contract is enforced: a producer that fails to\n* supply a required param its consumer's connection declares fails the deploy\n* here, naming the edge, rather than reaching the consumer as `undefined`.\n*/\nfunction buildConfig(node, id, graph, lowered, provisioned) {\n\tconst inputs = {};\n\tfor (const [inputName, inputNode] of Object.entries(node.inputs)) {\n\t\tconst edge = graph.edges.find((e) => e.to === id && e.input === inputName && e.kind === \"dependency\");\n\t\tconst producedOutputs = edge !== void 0 ? lowered.get(edge.from) ?? {} : {};\n\t\tconst values = {};\n\t\tfor (const [name, param] of Object.entries(inputNode.connection.params)) {\n\t\t\tif (param.provision !== void 0) {\n\t\t\t\tvalues[name] = provisioned.get(`${id}.${inputName}`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = producedOutputs[name];\n\t\t\tif (value === void 0 && param.optional !== true && edge !== void 0) throw new LowerError(`Connection input \"${id}.${inputName}\" declares param \"${name}\", but its producer \"${edge.from}\" did not supply it — the producer's outputs carry [${Object.keys(producedOutputs).join(\", \") || \"nothing\"}]. Add \"${name}\" to the outputs the producer returns from its lowering, or declare the param optional on the connection.`);\n\t\t\tvalues[name] = value;\n\t\t}\n\t\tinputs[inputName] = values;\n\t}\n\tconst boundParams = new Map(graph.params.filter((binding) => binding.serviceAddress === id).map((b) => [b.slot, b.binding]));\n\tconst service = {};\n\tfor (const [name, param] of Object.entries(node.params)) {\n\t\tconst value = resolveParam(node, id, name, param, boundParams.get(name));\n\t\tif (value !== void 0) service[name] = value;\n\t}\n\treturn {\n\t\tservice,\n\t\tinputs\n\t};\n}\n/**\n* Joins resolved report entries back to their graph nodes — the last step of a\n* deploy report, run inside the Action with apply's resolved values.\n*\n* The entries cross Alchemy's action-input boundary, so they carry addresses\n* and plain entities only; the graph is held by closure on this side. That\n* split is why this join exists at all, and it is what keeps functions and\n* Standard Schemas (which a node carries, and which the plan's input hash\n* would have to serialize) out of the input.\n*\n* Skips an address the graph no longer holds: entries are data, the graph is\n* truth.\n*/\nfunction joinDeployment(graph, entries) {\n\tconst nodes = [];\n\tfor (const entry of entries) {\n\t\tconst node = graph.nodes.find((n) => n.id === entry.address)?.node;\n\t\tif (node === void 0 || node.kind !== \"service\" && node.kind !== \"resource\") continue;\n\t\tnodes.push({\n\t\t\taddress: entry.address,\n\t\t\tnode,\n\t\t\tentities: entry.entities\n\t\t});\n\t}\n\treturn nodes;\n}\nfunction missingBundleError(id) {\n\treturn new LowerError(`No bundle provided for service \"${id}\" (opts.bundles[\"${id}\"] is required).`);\n}\nfunction duplicateExtensionError(id) {\n\treturn new LowerError(`Extension \"${id}\" is listed more than once in \\`extensions\\` — each extension id must be unique.`);\n}\n/** Registries as extension id → descriptor. Fails on a duplicate id — the CLI validates config, but lowering() is the programmatic escape hatch that doesn't. */\nfunction extensionsById(config) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const extension of config.extensions) {\n\t\tif (map.has(extension.id)) return Effect.fail(duplicateExtensionError(extension.id));\n\t\tmap.set(extension.id, extension);\n\t}\n\treturn Effect.succeed(map);\n}\nfunction unknownExtensionError(extension, id) {\n\treturn new LowerError(`No extension \"${extension}\" is configured (needed by node \"${id}\") — add it to prisma-composer.config.ts's \\`extensions\\` (import its /control entry and list its descriptor).`);\n}\nfunction unknownNodeTypeError(extension, type) {\n\treturn new LowerError(`Extension \"${extension.id}\" has no descriptor for node type \"${type}\" (known: ${Object.keys(extension.nodes).join(\", \")}).`);\n}\n/** A provisioned param's need brand isn't registered by the consumer's extension (ADR-0031). */\nfunction unknownProvisionerError(extension, brand, edgeId) {\n\tconst known = extension.provisions !== void 0 && extension.provisions.size > 0 ? Array.from(extension.provisions.keys(), String).join(\", \") : \"(none registered)\";\n\treturn new LowerError(`Extension \"${extension.id}\" has no provisioner for need \"${String(brand)}\" (needed by edge \"${edgeId}\") (known: ${known}).`);\n}\n/** A provisioned edge whose consumer and provider nodes belong to different extensions (ADR-0031). */\nfunction crossExtensionProvisionError(edgeId) {\n\treturn new LowerError(`Provisioned edge \"${edgeId}\" spans two extensions — cross-extension provisioned edges aren't supported yet.`);\n}\n/**\n* More than one provisioned param on one connection (ADR-0031). One edge mints\n* ONE value, keyed by edge id, so a second need on the same connection would\n* silently receive the first's value under the first's brand.\n*/\nfunction multipleProvisionedParamsError(edgeId, names) {\n\treturn new LowerError(`Connection input \"${edgeId}\" declares more than one provisioned param (${names.join(\", \")}) — only one provisioned param per connection is supported.`);\n}\nfunction wrongKindError(extension, type, expected, got) {\n\treturn new LowerError(`Extension \"${extension}\"'s descriptor for node type \"${type}\" is a \"${got}\" descriptor — this node needs a \"${expected}\" descriptor.`);\n}\n/** Looks up one node's descriptor: extension by `node.extension`, then descriptor by `node.type`, then the kind check. */\nfunction descriptorFor(extensions, node, id) {\n\tconst extension = extensions.get(node.extension);\n\tif (extension === void 0) return Effect.fail(unknownExtensionError(node.extension, id));\n\tconst descriptor = extension.nodes[node.type];\n\tif (descriptor === void 0) return Effect.fail(unknownNodeTypeError(extension, node.type));\n\tif (descriptor.kind !== node.kind) return Effect.fail(wrongKindError(node.extension, node.type, node.kind, descriptor.kind));\n\treturn Effect.succeed(descriptor);\n}\n/**\n* The state-layer precedence a deploy resolves to: an explicit opts.state\n* always wins; failing that, the config's own (required) state descriptor,\n* created with its owning extension's resolved container (`undefined` when\n* that extension declared none). A pure function so the precedence is\n* testable without booting Alchemy.\n*/\nfunction resolveStateLayer(opts, config, containers) {\n\treturn opts.state ?? config.state.create(containers.get(config.state.extension));\n}\n/**\n* All configured extensions' providers merged, config array order — an\n* extension without `providers` is skipped; no used-extensions-only\n* filtering (ADR-0017's pinned providers rule).\n*/\nfunction mergedProviders(config) {\n\tconst [first, ...rest] = config.extensions.flatMap((extension) => extension.providers !== void 0 ? [extension.providers()] : []);\n\treturn first === void 0 ? Layer.empty : Layer.mergeAll(first, ...rest);\n}\n/**\n* Composable form for mixed stacks: hand-wired Alchemy resources alongside Prisma App nodes in one stack effect.\n* Fails with LowerError or whatever an extension's lowering raises — the error type is open.\n*/\nfunction lowering(root, config, opts) {\n\treturn Effect.gen(function* () {\n\t\tconst graph = Load(root, { id: opts.name });\n\t\tconst extensions = yield* extensionsById(config);\n\t\tconst containers = deserializeContainers(config.extensions, process.env);\n\t\tconst lowered = /* @__PURE__ */ new Map();\n\t\tconst entries = [];\n\t\tconst provisioned = /* @__PURE__ */ new Map();\n\t\tconst applications = /* @__PURE__ */ new Map();\n\t\tfor (const descriptor of config.extensions) {\n\t\t\tif (descriptor.application === void 0) continue;\n\t\t\tconst appCtx = {\n\t\t\t\tid: graph.root.id,\n\t\t\t\taddress: \"\",\n\t\t\t\tnode: graph.root.node,\n\t\t\t\tgraph,\n\t\t\t\topts,\n\t\t\t\tapplication: void 0,\n\t\t\t\tcontainer: containers.get(descriptor.id),\n\t\t\t\tlowered,\n\t\t\t\tprovisioned\n\t\t\t};\n\t\t\tapplications.set(descriptor.id, yield* descriptor.application.provision(appCtx));\n\t\t}\n\t\tfor (const edge of graph.edges) {\n\t\t\tif (edge.kind !== \"dependency\") continue;\n\t\t\tconst consumer = graph.nodes.find((n) => n.id === edge.to)?.node;\n\t\t\tif (consumer === void 0 || consumer.kind !== \"service\") continue;\n\t\t\tconst slot = consumer.inputs[edge.input];\n\t\t\tif (slot === void 0) continue;\n\t\t\tconst provisionedParams = Object.entries(slot.connection.params).filter(([, param]) => param.provision !== void 0);\n\t\t\tif (provisionedParams.length === 0) continue;\n\t\t\tconst edgeId = `${edge.to}.${edge.input}`;\n\t\t\tif (provisionedParams.length > 1) return yield* Effect.fail(multipleProvisionedParamsError(edgeId, provisionedParams.map(([name]) => name)));\n\t\t\tconst need = provisionedParams[0]?.[1].provision;\n\t\t\tif (need === void 0) continue;\n\t\t\tconst provider = graph.nodes.find((n) => n.id === edge.from)?.node;\n\t\t\tif (provider === void 0 || provider.kind !== \"service\" && provider.kind !== \"resource\") continue;\n\t\t\tif (consumer.extension !== provider.extension) return yield* Effect.fail(crossExtensionProvisionError(edgeId));\n\t\t\tconst extension = extensions.get(consumer.extension);\n\t\t\tif (extension === void 0) return yield* Effect.fail(unknownExtensionError(consumer.extension, edge.to));\n\t\t\tconst provisioner = extension.provisions?.get(need.brand);\n\t\t\tif (provisioner === void 0) return yield* Effect.fail(unknownProvisionerError(extension, need.brand, edgeId));\n\t\t\tconst ref = yield* provisioner.provision({\n\t\t\t\tedgeId,\n\t\t\t\tconsumerAddress: edge.to,\n\t\t\t\tproviderAddress: edge.from,\n\t\t\t\tinput: edge.input,\n\t\t\t\tneed\n\t\t\t});\n\t\t\tprovisioned.set(edgeId, ref);\n\t\t}\n\t\tconst services = /* @__PURE__ */ new Map();\n\t\tconst ctxFor = (id, node) => ({\n\t\t\tid,\n\t\t\taddress: id,\n\t\t\tnode,\n\t\t\tgraph,\n\t\t\topts,\n\t\t\tapplication: applications.get(node.extension),\n\t\t\tcontainer: containers.get(node.extension),\n\t\t\tlowered,\n\t\t\tprovisioned,\n\t\t\tservices\n\t\t});\n\t\tfor (const { id, node } of graph.nodes) {\n\t\t\tif (node.kind !== \"service\") continue;\n\t\t\tconst descriptor = yield* descriptorFor(extensions, node, id);\n\t\t\tif (descriptor.kind !== \"service\") continue;\n\t\t\tservices.set(id, yield* descriptor.provision(ctxFor(id, node)));\n\t\t}\n\t\tfor (const { id, node } of graph.nodes) {\n\t\t\tif (node.kind === \"module\") continue;\n\t\t\tif (node.kind === \"dependency\") continue;\n\t\t\tconst ctx = ctxFor(id, node);\n\t\t\tconst descriptor = yield* descriptorFor(extensions, node, id);\n\t\t\tif (descriptor.kind === \"resource\") {\n\t\t\t\tconst result = yield* descriptor(ctx);\n\t\t\t\tlowered.set(id, result.outputs);\n\t\t\t\tentries.push({\n\t\t\t\t\taddress: id,\n\t\t\t\t\tentities: result.entities\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (descriptor.kind !== \"service\") return yield* Effect.fail(wrongKindError(node.extension, node.type, node.kind, descriptor.kind));\n\t\t\tconst service = node;\n\t\t\tconst provisionedNode = services.get(id);\n\t\t\tconst typedConfig = buildConfig(service, id, graph, lowered, provisioned);\n\t\t\tconst serialized = yield* descriptor.serialize(ctx, provisionedNode, typedConfig);\n\t\t\tconst bundle = opts.bundles[id];\n\t\t\tif (bundle === void 0) return yield* Effect.fail(missingBundleError(id));\n\t\t\tconst artifact = yield* descriptor.package(ctx, {\n\t\t\t\tassembled: {\n\t\t\t\t\tdir: bundle.dir,\n\t\t\t\t\tentry: bundle.entry\n\t\t\t\t},\n\t\t\t\taddress: id\n\t\t\t});\n\t\t\tconst result = yield* descriptor.deploy(ctx, provisionedNode, artifact, serialized);\n\t\t\tlowered.set(id, result.outputs);\n\t\t\tentries.push({\n\t\t\t\taddress: id,\n\t\t\t\tentities: result.entities\n\t\t\t});\n\t\t}\n\t\tif (opts.report !== void 0) {\n\t\t\tconst report = opts.report;\n\t\t\tyield* Alchemy.Action(\"composer-deployment-report\", (input) => Effect.sync(() => {\n\t\t\t\treport({\n\t\t\t\t\tapp: opts.name,\n\t\t\t\t\tnodes: joinDeployment(graph, input.entries)\n\t\t\t\t});\n\t\t\t}))({\n\t\t\t\tnonce: Date.now(),\n\t\t\t\tentries\n\t\t\t});\n\t\t}\n\t});\n}\n/**\n* The whole-stack wrapper: Load → route each node through the config's\n* extension registries → an Alchemy Stack (the default export the alchemy\n* CLI consumes).\n*/\nfunction lower(root, config, opts) {\n\tconst stackEffect = Effect.orDie(lowering(root, config, opts));\n\tconst containers = deserializeContainers(config.extensions, process.env);\n\tconst providers = opts.providers ?? mergedProviders(config);\n\treturn Alchemy.Stack(opts.name, {\n\t\tproviders,\n\t\tstate: resolveStateLayer(opts, config, containers)\n\t}, stackEffect);\n}\n//#endregion\nexport { LowerError, buildConfig, joinDeployment, lower, lowering, mergedProviders, resolveStateLayer };\n\n//# sourceMappingURL=deploy.mjs.map"],"mappings":"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"}
1
+ {"version":3,"file":"deploy.mjs","names":[],"sources":["../../../0-framework/1-core/core/dist/deploy.mjs"],"sourcesContent":["import { o as isParamSource, t as Load } from \"./graph-BfKAg2Ap.mjs\";\nimport { r as deserializeContainers } from \"./container-transport-HcvNOGZL.mjs\";\nimport * as Alchemy from \"alchemy\";\nimport * as Effect from \"effect/Effect\";\nimport * as Layer from \"effect/Layer\";\n//#region src/control/deploy.ts\nvar LowerError = class extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = \"LowerError\";\n\t}\n};\n/**\n* Resolves one SERVICE-OWN param to its config value. The full resolution\n* order across both value channels:\n*\n* 1. A param claiming BOTH a provision-time binding and a `provision` need\n* (ADR-0031) is a loud error — two sources for one value.\n* 2. A provision-time binding (a schema-validated literal, or an opaque\n* `ParamSource` the target resolves at boot per ADR-0019) beats the\n* declared `default`.\n* 3. A framework-minted `provision` need is resolved per dependency EDGE\n* against the consumer extension's registry — that path fills CONNECTION\n* params in `buildConfig`'s inputs loop, never this function. A\n* service-own param has no edge to mint against, so an unbound need here\n* falls through like any unbound param.\n* 4. The `default`, else absent (only legal when `optional`), else a loud\n* error naming the param, the service, and the fix.\n*/\nfunction resolveParam(node, serviceId, name, param, bound) {\n\tif (bound !== void 0) {\n\t\tif (param.provision !== void 0) throw new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") has two sources claiming one value: a provision-time binding (${isParamSource(bound) ? \"a param source\" : \"a literal value\"}) AND a framework provision need (\"${String(param.provision.brand)}\") on its declaration — remove the binding or drop the \\`provision\\` facet.`);\n\t\tif (isParamSource(bound)) return bound;\n\t\tconst result = param.schema[\"~standard\"].validate(bound);\n\t\tif (result instanceof Promise) throw new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") uses an async Standard Schema — a provision-time literal value requires a synchronous validator.`);\n\t\tif (result.issues !== void 0) {\n\t\t\tconst messages = result.issues.map((issue) => issue.message).join(\"; \");\n\t\t\tthrow new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") received an invalid provision-time value: ${messages}`);\n\t\t}\n\t\treturn result.value;\n\t}\n\tif (param.default !== void 0) return param.default;\n\tif (param.optional === true) return void 0;\n\tthrow new LowerError(`Param \"${name}\" of \"${serviceId}\" (service \"${node.name}\") has no default, is not optional, and was not bound at provision — bind it with a literal value or a param source (e.g. envParam('NAME')) on its provision() call, or give it a default.`);\n}\n/**\n* Assembles a service's typed Config. Connection params come from the\n* dependency edge's lowered outputs — or, for a param carrying a `provision`\n* need (ADR-0031), from `provisioned` (keyed by edge id): the framework mints\n* it, the producer hands nothing over. The service's own params resolve via\n* `resolveParam` (provision-time binding, then default, then loud\n* unbound-required failure).\n*\n* This is also where the connection contract is enforced: a producer that fails to\n* supply a required param its consumer's connection declares fails the deploy\n* here, naming the edge, rather than reaching the consumer as `undefined`.\n*/\nfunction buildConfig(node, id, graph, lowered, provisioned) {\n\tconst inputs = {};\n\tfor (const [inputName, inputNode] of Object.entries(node.inputs)) {\n\t\tconst edge = graph.edges.find((e) => e.to === id && e.input === inputName && e.kind === \"dependency\");\n\t\tconst producedOutputs = edge !== void 0 ? lowered.get(edge.from) ?? {} : {};\n\t\tconst values = {};\n\t\tfor (const [name, param] of Object.entries(inputNode.connection.params)) {\n\t\t\tif (param.provision !== void 0) {\n\t\t\t\tvalues[name] = provisioned.get(`${id}.${inputName}`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst value = producedOutputs[name];\n\t\t\tif (value === void 0 && param.optional !== true && edge !== void 0) throw new LowerError(`Connection input \"${id}.${inputName}\" declares param \"${name}\", but its producer \"${edge.from}\" did not supply it — the producer's outputs carry [${Object.keys(producedOutputs).join(\", \") || \"nothing\"}]. Add \"${name}\" to the outputs the producer returns from its lowering, or declare the param optional on the connection.`);\n\t\t\tvalues[name] = value;\n\t\t}\n\t\tinputs[inputName] = values;\n\t}\n\tconst boundParams = new Map(graph.params.filter((binding) => binding.serviceAddress === id).map((b) => [b.slot, b.binding]));\n\tconst service = {};\n\tfor (const [name, param] of Object.entries(node.params)) {\n\t\tconst value = resolveParam(node, id, name, param, boundParams.get(name));\n\t\tif (value !== void 0) service[name] = value;\n\t}\n\treturn {\n\t\tservice,\n\t\tinputs\n\t};\n}\n/**\n* Joins resolved report entries back to their graph nodes — the last step of a\n* deploy report, run inside the Action with apply's resolved values.\n*\n* The entries cross Alchemy's action-input boundary, so they carry addresses\n* and plain entities only; the graph is held by closure on this side. That\n* split is why this join exists at all, and it is what keeps functions and\n* Standard Schemas (which a node carries, and which the plan's input hash\n* would have to serialize) out of the input.\n*\n* Skips an address the graph no longer holds: entries are data, the graph is\n* truth.\n*/\nfunction joinDeployment(graph, entries) {\n\tconst nodes = [];\n\tfor (const entry of entries) {\n\t\tconst node = graph.nodes.find((n) => n.id === entry.address)?.node;\n\t\tif (node === void 0 || node.kind !== \"service\" && node.kind !== \"resource\") continue;\n\t\tnodes.push({\n\t\t\taddress: entry.address,\n\t\t\tnode,\n\t\t\tentities: entry.entities\n\t\t});\n\t}\n\treturn nodes;\n}\nfunction missingBundleError(id) {\n\treturn new LowerError(`No bundle provided for service \"${id}\" (opts.bundles[\"${id}\"] is required).`);\n}\nfunction duplicateExtensionError(id) {\n\treturn new LowerError(`Extension \"${id}\" is listed more than once in \\`extensions\\` — each extension id must be unique.`);\n}\n/** Registries as extension id → descriptor. Fails on a duplicate id — the CLI validates config, but lowering() is the programmatic escape hatch that doesn't. */\nfunction extensionsById(config) {\n\tconst map = /* @__PURE__ */ new Map();\n\tfor (const extension of config.extensions) {\n\t\tif (map.has(extension.id)) return Effect.fail(duplicateExtensionError(extension.id));\n\t\tmap.set(extension.id, extension);\n\t}\n\treturn Effect.succeed(map);\n}\nfunction unknownExtensionError(extension, id) {\n\treturn new LowerError(`No extension \"${extension}\" is configured (needed by node \"${id}\") — add it to \\`extensions\\` in the \\`composer\\` section of prisma.config.ts (import its /control entry and list its descriptor).`);\n}\nfunction unknownNodeTypeError(extension, type) {\n\treturn new LowerError(`Extension \"${extension.id}\" has no descriptor for node type \"${type}\" (known: ${Object.keys(extension.nodes).join(\", \")}).`);\n}\n/** A provisioned param's need brand isn't registered by the consumer's extension (ADR-0031). */\nfunction unknownProvisionerError(extension, brand, edgeId) {\n\tconst known = extension.provisions !== void 0 && extension.provisions.size > 0 ? Array.from(extension.provisions.keys(), String).join(\", \") : \"(none registered)\";\n\treturn new LowerError(`Extension \"${extension.id}\" has no provisioner for need \"${String(brand)}\" (needed by edge \"${edgeId}\") (known: ${known}).`);\n}\n/** A provisioned edge whose consumer and provider nodes belong to different extensions (ADR-0031). */\nfunction crossExtensionProvisionError(edgeId) {\n\treturn new LowerError(`Provisioned edge \"${edgeId}\" spans two extensions — cross-extension provisioned edges aren't supported yet.`);\n}\n/**\n* More than one provisioned param on one connection (ADR-0031). One edge mints\n* ONE value, keyed by edge id, so a second need on the same connection would\n* silently receive the first's value under the first's brand.\n*/\nfunction multipleProvisionedParamsError(edgeId, names) {\n\treturn new LowerError(`Connection input \"${edgeId}\" declares more than one provisioned param (${names.join(\", \")}) — only one provisioned param per connection is supported.`);\n}\nfunction wrongKindError(extension, type, expected, got) {\n\treturn new LowerError(`Extension \"${extension}\"'s descriptor for node type \"${type}\" is a \"${got}\" descriptor — this node needs a \"${expected}\" descriptor.`);\n}\n/** Looks up one node's descriptor: extension by `node.extension`, then descriptor by `node.type`, then the kind check. */\nfunction descriptorFor(extensions, node, id) {\n\tconst extension = extensions.get(node.extension);\n\tif (extension === void 0) return Effect.fail(unknownExtensionError(node.extension, id));\n\tconst descriptor = extension.nodes[node.type];\n\tif (descriptor === void 0) return Effect.fail(unknownNodeTypeError(extension, node.type));\n\tif (descriptor.kind !== node.kind) return Effect.fail(wrongKindError(node.extension, node.type, node.kind, descriptor.kind));\n\treturn Effect.succeed(descriptor);\n}\n/**\n* The state-layer precedence a deploy resolves to: an explicit opts.state\n* always wins; failing that, the config's own (required) state descriptor,\n* created with its owning extension's resolved container (`undefined` when\n* that extension declared none). A pure function so the precedence is\n* testable without booting Alchemy.\n*/\nfunction resolveStateLayer(opts, config, containers) {\n\treturn opts.state ?? config.state.create(containers.get(config.state.extension));\n}\n/**\n* All configured extensions' providers merged, config array order — an\n* extension without `providers` is skipped; no used-extensions-only\n* filtering (ADR-0017's pinned providers rule).\n*/\nfunction mergedProviders(config) {\n\tconst [first, ...rest] = config.extensions.flatMap((extension) => extension.providers !== void 0 ? [extension.providers()] : []);\n\treturn first === void 0 ? Layer.empty : Layer.mergeAll(first, ...rest);\n}\n/**\n* Composable form for mixed stacks: hand-wired Alchemy resources alongside Prisma App nodes in one stack effect.\n* Fails with LowerError or whatever an extension's lowering raises — the error type is open.\n*/\nfunction lowering(root, config, opts) {\n\treturn Effect.gen(function* () {\n\t\tconst graph = Load(root, { id: opts.name });\n\t\tconst extensions = yield* extensionsById(config);\n\t\tconst containers = deserializeContainers(config.extensions, process.env);\n\t\tconst lowered = /* @__PURE__ */ new Map();\n\t\tconst entries = [];\n\t\tconst provisioned = /* @__PURE__ */ new Map();\n\t\tconst applications = /* @__PURE__ */ new Map();\n\t\tfor (const descriptor of config.extensions) {\n\t\t\tif (descriptor.application === void 0) continue;\n\t\t\tconst appCtx = {\n\t\t\t\tid: graph.root.id,\n\t\t\t\taddress: \"\",\n\t\t\t\tnode: graph.root.node,\n\t\t\t\tgraph,\n\t\t\t\topts,\n\t\t\t\tapplication: void 0,\n\t\t\t\tcontainer: containers.get(descriptor.id),\n\t\t\t\tlowered,\n\t\t\t\tprovisioned\n\t\t\t};\n\t\t\tapplications.set(descriptor.id, yield* descriptor.application.provision(appCtx));\n\t\t}\n\t\tfor (const edge of graph.edges) {\n\t\t\tif (edge.kind !== \"dependency\") continue;\n\t\t\tconst consumer = graph.nodes.find((n) => n.id === edge.to)?.node;\n\t\t\tif (consumer === void 0 || consumer.kind !== \"service\") continue;\n\t\t\tconst slot = consumer.inputs[edge.input];\n\t\t\tif (slot === void 0) continue;\n\t\t\tconst provisionedParams = Object.entries(slot.connection.params).filter(([, param]) => param.provision !== void 0);\n\t\t\tif (provisionedParams.length === 0) continue;\n\t\t\tconst edgeId = `${edge.to}.${edge.input}`;\n\t\t\tif (provisionedParams.length > 1) return yield* Effect.fail(multipleProvisionedParamsError(edgeId, provisionedParams.map(([name]) => name)));\n\t\t\tconst need = provisionedParams[0]?.[1].provision;\n\t\t\tif (need === void 0) continue;\n\t\t\tconst provider = graph.nodes.find((n) => n.id === edge.from)?.node;\n\t\t\tif (provider === void 0 || provider.kind !== \"service\" && provider.kind !== \"resource\") continue;\n\t\t\tif (consumer.extension !== provider.extension) return yield* Effect.fail(crossExtensionProvisionError(edgeId));\n\t\t\tconst extension = extensions.get(consumer.extension);\n\t\t\tif (extension === void 0) return yield* Effect.fail(unknownExtensionError(consumer.extension, edge.to));\n\t\t\tconst provisioner = extension.provisions?.get(need.brand);\n\t\t\tif (provisioner === void 0) return yield* Effect.fail(unknownProvisionerError(extension, need.brand, edgeId));\n\t\t\tconst ref = yield* provisioner.provision({\n\t\t\t\tedgeId,\n\t\t\t\tconsumerAddress: edge.to,\n\t\t\t\tproviderAddress: edge.from,\n\t\t\t\tinput: edge.input,\n\t\t\t\tneed\n\t\t\t});\n\t\t\tprovisioned.set(edgeId, ref);\n\t\t}\n\t\tconst services = /* @__PURE__ */ new Map();\n\t\tconst ctxFor = (id, node) => ({\n\t\t\tid,\n\t\t\taddress: id,\n\t\t\tnode,\n\t\t\tgraph,\n\t\t\topts,\n\t\t\tapplication: applications.get(node.extension),\n\t\t\tcontainer: containers.get(node.extension),\n\t\t\tlowered,\n\t\t\tprovisioned,\n\t\t\tservices\n\t\t});\n\t\tfor (const { id, node } of graph.nodes) {\n\t\t\tif (node.kind !== \"service\") continue;\n\t\t\tconst descriptor = yield* descriptorFor(extensions, node, id);\n\t\t\tif (descriptor.kind !== \"service\") continue;\n\t\t\tservices.set(id, yield* descriptor.provision(ctxFor(id, node)));\n\t\t}\n\t\tfor (const { id, node } of graph.nodes) {\n\t\t\tif (node.kind === \"module\") continue;\n\t\t\tif (node.kind === \"dependency\") continue;\n\t\t\tconst ctx = ctxFor(id, node);\n\t\t\tconst descriptor = yield* descriptorFor(extensions, node, id);\n\t\t\tif (descriptor.kind === \"resource\") {\n\t\t\t\tconst result = yield* descriptor(ctx);\n\t\t\t\tlowered.set(id, result.outputs);\n\t\t\t\tentries.push({\n\t\t\t\t\taddress: id,\n\t\t\t\t\tentities: result.entities\n\t\t\t\t});\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (descriptor.kind !== \"service\") return yield* Effect.fail(wrongKindError(node.extension, node.type, node.kind, descriptor.kind));\n\t\t\tconst service = node;\n\t\t\tconst provisionedNode = services.get(id);\n\t\t\tconst typedConfig = buildConfig(service, id, graph, lowered, provisioned);\n\t\t\tconst serialized = yield* descriptor.serialize(ctx, provisionedNode, typedConfig);\n\t\t\tconst bundle = opts.bundles[id];\n\t\t\tif (bundle === void 0) return yield* Effect.fail(missingBundleError(id));\n\t\t\tconst artifact = yield* descriptor.package(ctx, {\n\t\t\t\tassembled: {\n\t\t\t\t\tdir: bundle.dir,\n\t\t\t\t\tentry: bundle.entry\n\t\t\t\t},\n\t\t\t\taddress: id\n\t\t\t});\n\t\t\tconst result = yield* descriptor.deploy(ctx, provisionedNode, artifact, serialized);\n\t\t\tlowered.set(id, result.outputs);\n\t\t\tentries.push({\n\t\t\t\taddress: id,\n\t\t\t\tentities: result.entities\n\t\t\t});\n\t\t}\n\t\tif (opts.report !== void 0) {\n\t\t\tconst report = opts.report;\n\t\t\tyield* Alchemy.Action(\"composer-deployment-report\", (input) => Effect.sync(() => {\n\t\t\t\treport({\n\t\t\t\t\tapp: opts.name,\n\t\t\t\t\tnodes: joinDeployment(graph, input.entries)\n\t\t\t\t});\n\t\t\t}))({\n\t\t\t\tnonce: Date.now(),\n\t\t\t\tentries\n\t\t\t});\n\t\t}\n\t});\n}\n/**\n* The whole-stack wrapper: Load → route each node through the config's\n* extension registries → an Alchemy Stack (the default export the alchemy\n* CLI consumes).\n*/\nfunction lower(root, config, opts) {\n\tconst stackEffect = Effect.orDie(lowering(root, config, opts));\n\tconst containers = deserializeContainers(config.extensions, process.env);\n\tconst providers = opts.providers ?? mergedProviders(config);\n\treturn Alchemy.Stack(opts.name, {\n\t\tproviders,\n\t\tstate: resolveStateLayer(opts, config, containers)\n\t}, stackEffect);\n}\n//#endregion\nexport { LowerError, buildConfig, joinDeployment, lower, lowering, mergedProviders, resolveStateLayer };\n\n//# sourceMappingURL=deploy.mjs.map"],"mappings":";;;;;;AAMA,IAAI,aAAa,cAAc,MAAM;CACpC,YAAY,SAAS;EACpB,MAAM,OAAO;EACb,KAAK,OAAO;CACb;AACD;;;;;;;;;;;;;;;;;;AAkBA,SAAS,aAAa,MAAM,WAAW,MAAM,OAAO,OAAO;CAC1D,IAAI,UAAU,KAAK,GAAG;EACrB,IAAI,MAAM,cAAc,KAAK,GAAG,MAAM,IAAI,WAAW,UAAU,KAAK,QAAQ,UAAU,cAAc,KAAK,KAAK,mEAAmE,cAAc,KAAK,IAAI,mBAAmB,kBAAkB,qCAAqC,OAAO,MAAM,UAAU,KAAK,EAAE,4EAA4E;EAC5X,IAAI,cAAc,KAAK,GAAG,OAAO;EACjC,MAAM,SAAS,MAAM,OAAO,YAAY,CAAC,SAAS,KAAK;EACvD,IAAI,kBAAkB,SAAS,MAAM,IAAI,WAAW,UAAU,KAAK,QAAQ,UAAU,cAAc,KAAK,KAAK,oGAAoG;EACjN,IAAI,OAAO,WAAW,KAAK,GAAG;GAC7B,MAAM,WAAW,OAAO,OAAO,KAAK,UAAU,MAAM,OAAO,CAAC,CAAC,KAAK,IAAI;GACtE,MAAM,IAAI,WAAW,UAAU,KAAK,QAAQ,UAAU,cAAc,KAAK,KAAK,+CAA+C,UAAU;EACxI;EACA,OAAO,OAAO;CACf;CACA,IAAI,MAAM,YAAY,KAAK,GAAG,OAAO,MAAM;CAC3C,IAAI,MAAM,aAAa,MAAM,OAAO,KAAK;CACzC,MAAM,IAAI,WAAW,UAAU,KAAK,QAAQ,UAAU,cAAc,KAAK,KAAK,2LAA2L;AAC1Q;;;;;;;;;;;;;AAaA,SAAS,YAAY,MAAM,IAAI,OAAO,SAAS,aAAa;CAC3D,MAAM,SAAS,CAAC;CAChB,KAAK,MAAM,CAAC,WAAW,cAAc,OAAO,QAAQ,KAAK,MAAM,GAAG;EACjE,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,MAAM,EAAE,UAAU,aAAa,EAAE,SAAS,YAAY;EACpG,MAAM,kBAAkB,SAAS,KAAK,IAAI,QAAQ,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC;EAC1E,MAAM,SAAS,CAAC;EAChB,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,UAAU,WAAW,MAAM,GAAG;GACxE,IAAI,MAAM,cAAc,KAAK,GAAG;IAC/B,OAAO,QAAQ,YAAY,IAAI,GAAG,GAAG,GAAG,WAAW;IACnD;GACD;GACA,MAAM,QAAQ,gBAAgB;GAC9B,IAAI,UAAU,KAAK,KAAK,MAAM,aAAa,QAAQ,SAAS,KAAK,GAAG,MAAM,IAAI,WAAW,qBAAqB,GAAG,GAAG,UAAU,oBAAoB,KAAK,uBAAuB,KAAK,KAAK,sDAAsD,OAAO,KAAK,eAAe,CAAC,CAAC,KAAK,IAAI,KAAK,UAAU,UAAU,KAAK,0GAA0G;GAC5Z,OAAO,QAAQ;EAChB;EACA,OAAO,aAAa;CACrB;CACA,MAAM,cAAc,IAAI,IAAI,MAAM,OAAO,QAAQ,YAAY,QAAQ,mBAAmB,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3H,MAAM,UAAU,CAAC;CACjB,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAQ,KAAK,MAAM,GAAG;EACxD,MAAM,QAAQ,aAAa,MAAM,IAAI,MAAM,OAAO,YAAY,IAAI,IAAI,CAAC;EACvE,IAAI,UAAU,KAAK,GAAG,QAAQ,QAAQ;CACvC;CACA,OAAO;EACN;EACA;CACD;AACD;;;;;;;;;;;;;;AAcA,SAAS,eAAe,OAAO,SAAS;CACvC,MAAM,QAAQ,CAAC;CACf,KAAK,MAAM,SAAS,SAAS;EAC5B,MAAM,OAAO,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,MAAM,OAAO,CAAC,EAAE;EAC9D,IAAI,SAAS,KAAK,KAAK,KAAK,SAAS,aAAa,KAAK,SAAS,YAAY;EAC5E,MAAM,KAAK;GACV,SAAS,MAAM;GACf;GACA,UAAU,MAAM;EACjB,CAAC;CACF;CACA,OAAO;AACR;AACA,SAAS,mBAAmB,IAAI;CAC/B,OAAO,IAAI,WAAW,mCAAmC,GAAG,mBAAmB,GAAG,iBAAiB;AACpG;AACA,SAAS,wBAAwB,IAAI;CACpC,OAAO,IAAI,WAAW,cAAc,GAAG,iFAAiF;AACzH;;AAEA,SAAS,eAAe,QAAQ;CAC/B,MAAM,sBAAsB,IAAI,IAAI;CACpC,KAAK,MAAM,aAAa,OAAO,YAAY;EAC1C,IAAI,IAAI,IAAI,UAAU,EAAE,GAAG,OAAO,OAAO,KAAK,wBAAwB,UAAU,EAAE,CAAC;EACnF,IAAI,IAAI,UAAU,IAAI,SAAS;CAChC;CACA,OAAO,OAAO,QAAQ,GAAG;AAC1B;AACA,SAAS,sBAAsB,WAAW,IAAI;CAC7C,OAAO,IAAI,WAAW,iBAAiB,UAAU,mCAAmC,GAAG,mIAAmI;AAC3N;AACA,SAAS,qBAAqB,WAAW,MAAM;CAC9C,OAAO,IAAI,WAAW,cAAc,UAAU,GAAG,qCAAqC,KAAK,YAAY,OAAO,KAAK,UAAU,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,GAAG;AACnJ;;AAEA,SAAS,wBAAwB,WAAW,OAAO,QAAQ;CAC1D,MAAM,QAAQ,UAAU,eAAe,KAAK,KAAK,UAAU,WAAW,OAAO,IAAI,MAAM,KAAK,UAAU,WAAW,KAAK,GAAG,MAAM,CAAC,CAAC,KAAK,IAAI,IAAI;CAC9I,OAAO,IAAI,WAAW,cAAc,UAAU,GAAG,iCAAiC,OAAO,KAAK,EAAE,qBAAqB,OAAO,aAAa,MAAM,GAAG;AACnJ;;AAEA,SAAS,6BAA6B,QAAQ;CAC7C,OAAO,IAAI,WAAW,qBAAqB,OAAO,iFAAiF;AACpI;;;;;;AAMA,SAAS,+BAA+B,QAAQ,OAAO;CACtD,OAAO,IAAI,WAAW,qBAAqB,OAAO,8CAA8C,MAAM,KAAK,IAAI,EAAE,4DAA4D;AAC9K;AACA,SAAS,eAAe,WAAW,MAAM,UAAU,KAAK;CACvD,OAAO,IAAI,WAAW,cAAc,UAAU,gCAAgC,KAAK,UAAU,IAAI,oCAAoC,SAAS,cAAc;AAC7J;;AAEA,SAAS,cAAc,YAAY,MAAM,IAAI;CAC5C,MAAM,YAAY,WAAW,IAAI,KAAK,SAAS;CAC/C,IAAI,cAAc,KAAK,GAAG,OAAO,OAAO,KAAK,sBAAsB,KAAK,WAAW,EAAE,CAAC;CACtF,MAAM,aAAa,UAAU,MAAM,KAAK;CACxC,IAAI,eAAe,KAAK,GAAG,OAAO,OAAO,KAAK,qBAAqB,WAAW,KAAK,IAAI,CAAC;CACxF,IAAI,WAAW,SAAS,KAAK,MAAM,OAAO,OAAO,KAAK,eAAe,KAAK,WAAW,KAAK,MAAM,KAAK,MAAM,WAAW,IAAI,CAAC;CAC3H,OAAO,OAAO,QAAQ,UAAU;AACjC;;;;;;;;AAQA,SAAS,kBAAkB,MAAM,QAAQ,YAAY;CACpD,OAAO,KAAK,SAAS,OAAO,MAAM,OAAO,WAAW,IAAI,OAAO,MAAM,SAAS,CAAC;AAChF;;;;;;AAMA,SAAS,gBAAgB,QAAQ;CAChC,MAAM,CAAC,OAAO,GAAG,QAAQ,OAAO,WAAW,SAAS,cAAc,UAAU,cAAc,KAAK,IAAI,CAAC,UAAU,UAAU,CAAC,IAAI,CAAC,CAAC;CAC/H,OAAO,UAAU,KAAK,IAAI,MAAM,QAAQ,MAAM,SAAS,OAAO,GAAG,IAAI;AACtE;;;;;AAKA,SAAS,SAAS,MAAM,QAAQ,MAAM;CACrC,OAAO,OAAO,IAAI,aAAa;EAC9B,MAAM,QAAQ,KAAK,MAAM,EAAE,IAAI,KAAK,KAAK,CAAC;EAC1C,MAAM,aAAa,OAAO,eAAe,MAAM;EAC/C,MAAM,aAAa,sBAAsB,OAAO,YAAY,QAAQ,GAAG;EACvE,MAAM,0BAA0B,IAAI,IAAI;EACxC,MAAM,UAAU,CAAC;EACjB,MAAM,8BAA8B,IAAI,IAAI;EAC5C,MAAM,+BAA+B,IAAI,IAAI;EAC7C,KAAK,MAAM,cAAc,OAAO,YAAY;GAC3C,IAAI,WAAW,gBAAgB,KAAK,GAAG;GACvC,MAAM,SAAS;IACd,IAAI,MAAM,KAAK;IACf,SAAS;IACT,MAAM,MAAM,KAAK;IACjB;IACA;IACA,aAAa,KAAK;IAClB,WAAW,WAAW,IAAI,WAAW,EAAE;IACvC;IACA;GACD;GACA,aAAa,IAAI,WAAW,IAAI,OAAO,WAAW,YAAY,UAAU,MAAM,CAAC;EAChF;EACA,KAAK,MAAM,QAAQ,MAAM,OAAO;GAC/B,IAAI,KAAK,SAAS,cAAc;GAChC,MAAM,WAAW,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,KAAK,EAAE,CAAC,EAAE;GAC5D,IAAI,aAAa,KAAK,KAAK,SAAS,SAAS,WAAW;GACxD,MAAM,OAAO,SAAS,OAAO,KAAK;GAClC,IAAI,SAAS,KAAK,GAAG;GACrB,MAAM,oBAAoB,OAAO,QAAQ,KAAK,WAAW,MAAM,CAAC,CAAC,QAAQ,GAAG,WAAW,MAAM,cAAc,KAAK,CAAC;GACjH,IAAI,kBAAkB,WAAW,GAAG;GACpC,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,KAAK;GAClC,IAAI,kBAAkB,SAAS,GAAG,OAAO,OAAO,OAAO,KAAK,+BAA+B,QAAQ,kBAAkB,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;GAC3I,MAAM,OAAO,kBAAkB,EAAE,GAAG,EAAE,CAAC;GACvC,IAAI,SAAS,KAAK,GAAG;GACrB,MAAM,WAAW,MAAM,MAAM,MAAM,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,EAAE;GAC9D,IAAI,aAAa,KAAK,KAAK,SAAS,SAAS,aAAa,SAAS,SAAS,YAAY;GACxF,IAAI,SAAS,cAAc,SAAS,WAAW,OAAO,OAAO,OAAO,KAAK,6BAA6B,MAAM,CAAC;GAC7G,MAAM,YAAY,WAAW,IAAI,SAAS,SAAS;GACnD,IAAI,cAAc,KAAK,GAAG,OAAO,OAAO,OAAO,KAAK,sBAAsB,SAAS,WAAW,KAAK,EAAE,CAAC;GACtG,MAAM,cAAc,UAAU,YAAY,IAAI,KAAK,KAAK;GACxD,IAAI,gBAAgB,KAAK,GAAG,OAAO,OAAO,OAAO,KAAK,wBAAwB,WAAW,KAAK,OAAO,MAAM,CAAC;GAC5G,MAAM,MAAM,OAAO,YAAY,UAAU;IACxC;IACA,iBAAiB,KAAK;IACtB,iBAAiB,KAAK;IACtB,OAAO,KAAK;IACZ;GACD,CAAC;GACD,YAAY,IAAI,QAAQ,GAAG;EAC5B;EACA,MAAM,2BAA2B,IAAI,IAAI;EACzC,MAAM,UAAU,IAAI,UAAU;GAC7B;GACA,SAAS;GACT;GACA;GACA;GACA,aAAa,aAAa,IAAI,KAAK,SAAS;GAC5C,WAAW,WAAW,IAAI,KAAK,SAAS;GACxC;GACA;GACA;EACD;EACA,KAAK,MAAM,EAAE,IAAI,UAAU,MAAM,OAAO;GACvC,IAAI,KAAK,SAAS,WAAW;GAC7B,MAAM,aAAa,OAAO,cAAc,YAAY,MAAM,EAAE;GAC5D,IAAI,WAAW,SAAS,WAAW;GACnC,SAAS,IAAI,IAAI,OAAO,WAAW,UAAU,OAAO,IAAI,IAAI,CAAC,CAAC;EAC/D;EACA,KAAK,MAAM,EAAE,IAAI,UAAU,MAAM,OAAO;GACvC,IAAI,KAAK,SAAS,UAAU;GAC5B,IAAI,KAAK,SAAS,cAAc;GAChC,MAAM,MAAM,OAAO,IAAI,IAAI;GAC3B,MAAM,aAAa,OAAO,cAAc,YAAY,MAAM,EAAE;GAC5D,IAAI,WAAW,SAAS,YAAY;IACnC,MAAM,SAAS,OAAO,WAAW,GAAG;IACpC,QAAQ,IAAI,IAAI,OAAO,OAAO;IAC9B,QAAQ,KAAK;KACZ,SAAS;KACT,UAAU,OAAO;IAClB,CAAC;IACD;GACD;GACA,IAAI,WAAW,SAAS,WAAW,OAAO,OAAO,OAAO,KAAK,eAAe,KAAK,WAAW,KAAK,MAAM,KAAK,MAAM,WAAW,IAAI,CAAC;GAClI,MAAM,UAAU;GAChB,MAAM,kBAAkB,SAAS,IAAI,EAAE;GACvC,MAAM,cAAc,YAAY,SAAS,IAAI,OAAO,SAAS,WAAW;GACxE,MAAM,aAAa,OAAO,WAAW,UAAU,KAAK,iBAAiB,WAAW;GAChF,MAAM,SAAS,KAAK,QAAQ;GAC5B,IAAI,WAAW,KAAK,GAAG,OAAO,OAAO,OAAO,KAAK,mBAAmB,EAAE,CAAC;GACvE,MAAM,WAAW,OAAO,WAAW,QAAQ,KAAK;IAC/C,WAAW;KACV,KAAK,OAAO;KACZ,OAAO,OAAO;IACf;IACA,SAAS;GACV,CAAC;GACD,MAAM,SAAS,OAAO,WAAW,OAAO,KAAK,iBAAiB,UAAU,UAAU;GAClF,QAAQ,IAAI,IAAI,OAAO,OAAO;GAC9B,QAAQ,KAAK;IACZ,SAAS;IACT,UAAU,OAAO;GAClB,CAAC;EACF;EACA,IAAI,KAAK,WAAW,KAAK,GAAG;GAC3B,MAAM,SAAS,KAAK;GACpB,OAAO,QAAQ,OAAO,+BAA+B,UAAU,OAAO,WAAW;IAChF,OAAO;KACN,KAAK,KAAK;KACV,OAAO,eAAe,OAAO,MAAM,OAAO;IAC3C,CAAC;GACF,CAAC,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,IAAI;IAChB;GACD,CAAC;EACF;CACD,CAAC;AACF;;;;;;AAMA,SAAS,MAAM,MAAM,QAAQ,MAAM;CAClC,MAAM,cAAc,OAAO,MAAM,SAAS,MAAM,QAAQ,IAAI,CAAC;CAC7D,MAAM,aAAa,sBAAsB,OAAO,YAAY,QAAQ,GAAG;CACvE,MAAM,YAAY,KAAK,aAAa,gBAAgB,MAAM;CAC1D,OAAO,QAAQ,MAAM,KAAK,MAAM;EAC/B;EACA,OAAO,kBAAkB,MAAM,QAAQ,UAAU;CAClD,GAAG,WAAW;AACf"}