@geekmidas/cli 10.0.0-alpha.84 → 10.0.0-alpha.86

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 (177) hide show
  1. package/dist/{HostingerProvider-dxkwynSs.cjs → HostingerProvider-BCB1QJj1.cjs} +2 -2
  2. package/dist/{HostingerProvider-dxkwynSs.cjs.map → HostingerProvider-BCB1QJj1.cjs.map} +1 -1
  3. package/dist/{HostingerProvider-D85ayzTi.mjs → HostingerProvider-CVc3rLPB.mjs} +2 -2
  4. package/dist/{HostingerProvider-D85ayzTi.mjs.map → HostingerProvider-CVc3rLPB.mjs.map} +1 -1
  5. package/dist/{LegacyStateStore-CTsUFLNQ.mjs → LegacyStateStore-B0R4LlX_.mjs} +2 -2
  6. package/dist/{LegacyStateStore-CTsUFLNQ.mjs.map → LegacyStateStore-B0R4LlX_.mjs.map} +1 -1
  7. package/dist/{LegacyStateStore-EDT2TUSe.cjs → LegacyStateStore-CWG_HVC0.cjs} +7 -7
  8. package/dist/{LegacyStateStore-EDT2TUSe.cjs.map → LegacyStateStore-CWG_HVC0.cjs.map} +1 -1
  9. package/dist/{LocalStateStore-CdpzTvPn.cjs → LocalStateStore-CLwa2DpK.cjs} +16 -14
  10. package/dist/LocalStateStore-CLwa2DpK.cjs.map +1 -0
  11. package/dist/{LocalStateStore-D1VfxRuK.mjs → LocalStateStore-Q4vXg2ua.mjs} +12 -10
  12. package/dist/LocalStateStore-Q4vXg2ua.mjs.map +1 -0
  13. package/dist/{S3StateStore-BPM74zwv.cjs → S3StateStore-Cea9_5gF.cjs} +5 -5
  14. package/dist/{S3StateStore-BPM74zwv.cjs.map → S3StateStore-Cea9_5gF.cjs.map} +1 -1
  15. package/dist/{S3StateStore-DVZ1YuGJ.mjs → S3StateStore-CksKYKRa.mjs} +2 -2
  16. package/dist/{S3StateStore-DVZ1YuGJ.mjs.map → S3StateStore-CksKYKRa.mjs.map} +1 -1
  17. package/dist/{SSMStateStore-DLvnGyyl.mjs → SSMStateStore-BszSCAS2.mjs} +2 -2
  18. package/dist/{SSMStateStore-DLvnGyyl.mjs.map → SSMStateStore-BszSCAS2.mjs.map} +1 -1
  19. package/dist/{SSMStateStore-qerm5c36.cjs → SSMStateStore-aBOTF018.cjs} +9 -9
  20. package/dist/{SSMStateStore-qerm5c36.cjs.map → SSMStateStore-aBOTF018.cjs.map} +1 -1
  21. package/dist/{add-BQ8v1ZII.cjs → add-5MZAXybv.cjs} +8 -5
  22. package/dist/add-5MZAXybv.cjs.map +1 -0
  23. package/dist/{add-DbnzC7Kl.mjs → add-D_jNqnfZ.mjs} +8 -5
  24. package/dist/add-D_jNqnfZ.mjs.map +1 -0
  25. package/dist/{bundler-DjrRffko.cjs → bundler-1REMhKps.cjs} +5 -5
  26. package/dist/{bundler-DjrRffko.cjs.map → bundler-1REMhKps.cjs.map} +1 -1
  27. package/dist/{bundler-D4030Afw.mjs → bundler-BMo-JP5s.mjs} +5 -5
  28. package/dist/{bundler-D4030Afw.mjs.map → bundler-BMo-JP5s.mjs.map} +1 -1
  29. package/dist/{cli-DwTa9d_8.mjs → cli-7edNFwGk.mjs} +5 -13
  30. package/dist/cli-7edNFwGk.mjs.map +1 -0
  31. package/dist/{cli-D8YQAYUX.cjs → cli-BL8ZHsLQ.cjs} +5 -13
  32. package/dist/cli-BL8ZHsLQ.cjs.map +1 -0
  33. package/dist/{compose-C5wz8mf9.mjs → compose-DbJhRQlh.mjs} +46 -15
  34. package/dist/compose-DbJhRQlh.mjs.map +1 -0
  35. package/dist/{compose-DqWh1TaO.cjs → compose-xw86kVYi.cjs} +55 -24
  36. package/dist/compose-xw86kVYi.cjs.map +1 -0
  37. package/dist/{config-BzIfP8a-.d.cts → config-CpjsVxru.d.cts} +3 -3
  38. package/dist/{config-BzIfP8a-.d.cts.map → config-CpjsVxru.d.cts.map} +1 -1
  39. package/dist/{config-DhdzmndX.d.mts → config-DrCAyoH5.d.mts} +3 -3
  40. package/dist/{config-DhdzmndX.d.mts.map → config-DrCAyoH5.d.mts.map} +1 -1
  41. package/dist/config.cjs +1 -1
  42. package/dist/config.d.cts +3 -3
  43. package/dist/config.d.mts +3 -3
  44. package/dist/config.mjs +1 -1
  45. package/dist/{credentials-pAtB70k3.mjs → credentials-BgJ5mS_d.mjs} +91 -181
  46. package/dist/credentials-BgJ5mS_d.mjs.map +1 -0
  47. package/dist/{credentials-BVs7mrtw.cjs → credentials-tr26-KML.cjs} +122 -188
  48. package/dist/credentials-tr26-KML.cjs.map +1 -0
  49. package/dist/deploy/public.cjs +24 -20
  50. package/dist/deploy/public.cjs.map +1 -1
  51. package/dist/deploy/public.d.cts +95 -13
  52. package/dist/deploy/public.d.cts.map +1 -1
  53. package/dist/deploy/public.d.mts +95 -13
  54. package/dist/deploy/public.d.mts.map +1 -1
  55. package/dist/deploy/public.mjs +11 -10
  56. package/dist/deploy/public.mjs.map +1 -1
  57. package/dist/{deploy-BwIKGxWH.mjs → deploy-BTfmXd3g.mjs} +9 -9
  58. package/dist/deploy-BTfmXd3g.mjs.map +1 -0
  59. package/dist/{deploy-C8sWg81_.cjs → deploy-CtbZj4zN.cjs} +13 -13
  60. package/dist/deploy-CtbZj4zN.cjs.map +1 -0
  61. package/dist/{dokploy-BkRxJbfi.cjs → dokploy-TGk3oPwr.cjs} +2 -2
  62. package/dist/{dokploy-BkRxJbfi.cjs.map → dokploy-TGk3oPwr.cjs.map} +1 -1
  63. package/dist/{dokploy-ijjms1-h.mjs → dokploy-r69yZaIt.mjs} +2 -2
  64. package/dist/{dokploy-ijjms1-h.mjs.map → dokploy-r69yZaIt.mjs.map} +1 -1
  65. package/dist/{encryption-BRcBAmjL.mjs → encryption-C-8Tt5Hh.mjs} +3 -3
  66. package/dist/{encryption-BRcBAmjL.mjs.map → encryption-C-8Tt5Hh.mjs.map} +1 -1
  67. package/dist/{encryption-g6PzwwfL.cjs → encryption-CDn7BH5O.cjs} +3 -3
  68. package/dist/{encryption-g6PzwwfL.cjs.map → encryption-CDn7BH5O.cjs.map} +1 -1
  69. package/dist/{engine-DLEJsZ3i.cjs → engine-Bt5k_UMq.cjs} +33 -23
  70. package/dist/engine-Bt5k_UMq.cjs.map +1 -0
  71. package/dist/{engine-BP0CZ5fh.mjs → engine-jAINgiOB.mjs} +28 -18
  72. package/dist/engine-jAINgiOB.mjs.map +1 -0
  73. package/dist/{github-Zs-dVJbR.mjs → github-CZHAtwPT.mjs} +3 -3
  74. package/dist/{github-Zs-dVJbR.mjs.map → github-CZHAtwPT.mjs.map} +1 -1
  75. package/dist/{github-B8YjwdLK.cjs → github-DFhuJQlp.cjs} +3 -3
  76. package/dist/{github-B8YjwdLK.cjs.map → github-DFhuJQlp.cjs.map} +1 -1
  77. package/dist/{index-f77HdqN5.d.mts → index-MnUJuUlj.d.mts} +2 -2
  78. package/dist/{index-D1ODeM9s.d.cts.map → index-MnUJuUlj.d.mts.map} +1 -1
  79. package/dist/{index-D1ODeM9s.d.cts → index-elsLJTUv.d.cts} +2 -2
  80. package/dist/{index-f77HdqN5.d.mts.map → index-elsLJTUv.d.cts.map} +1 -1
  81. package/dist/index.cjs +105 -67
  82. package/dist/index.cjs.map +1 -1
  83. package/dist/index.mjs +99 -61
  84. package/dist/index.mjs.map +1 -1
  85. package/dist/local-Ciq-bTPr.mjs +224 -0
  86. package/dist/local-Ciq-bTPr.mjs.map +1 -0
  87. package/dist/local-Cq8qdgNX.cjs +241 -0
  88. package/dist/local-Cq8qdgNX.cjs.map +1 -0
  89. package/dist/{migrate-FoL_mZIz.cjs → migrate-B16qgYTn.cjs} +3 -3
  90. package/dist/{migrate-FoL_mZIz.cjs.map → migrate-B16qgYTn.cjs.map} +1 -1
  91. package/dist/{migrate-BfZN1S32.cjs → migrate-B1rVlwj1.cjs} +3 -3
  92. package/dist/{migrate-BfZN1S32.cjs.map → migrate-B1rVlwj1.cjs.map} +1 -1
  93. package/dist/{migrate-DOMU4uKe.mjs → migrate-Dn7nK6sh.mjs} +3 -3
  94. package/dist/{migrate-DOMU4uKe.mjs.map → migrate-Dn7nK6sh.mjs.map} +1 -1
  95. package/dist/{migrate-CdXcX0XR.mjs → migrate-ggkPVJRC.mjs} +3 -3
  96. package/dist/{migrate-CdXcX0XR.mjs.map → migrate-ggkPVJRC.mjs.map} +1 -1
  97. package/dist/openapi.cjs +1 -1
  98. package/dist/openapi.d.cts +1 -1
  99. package/dist/openapi.d.mts +1 -1
  100. package/dist/openapi.mjs +1 -1
  101. package/dist/reconcile/public.d.cts +1 -1
  102. package/dist/reconcile/public.d.mts +1 -1
  103. package/dist/{resolve-r7PAs6ng.mjs → resolve-BSke45k6.mjs} +4 -4
  104. package/dist/{resolve-r7PAs6ng.mjs.map → resolve-BSke45k6.mjs.map} +1 -1
  105. package/dist/{resolve-T2I-5FcT.cjs → resolve-BXeXzpmU.cjs} +4 -4
  106. package/dist/{resolve-T2I-5FcT.cjs.map → resolve-BXeXzpmU.cjs.map} +1 -1
  107. package/dist/{rollback-BSdxnW3X.mjs → rollback-CEE6dse4.mjs} +6 -6
  108. package/dist/{rollback-BSdxnW3X.mjs.map → rollback-CEE6dse4.mjs.map} +1 -1
  109. package/dist/{rollback-CPSDjGse.cjs → rollback-DFMiBWf0.cjs} +8 -8
  110. package/dist/{rollback-CPSDjGse.cjs.map → rollback-DFMiBWf0.cjs.map} +1 -1
  111. package/dist/{runtime-CNu2C2hB.d.mts → runtime-D48ZKk8_.d.cts} +2 -2
  112. package/dist/{runtime-CNu2C2hB.d.mts.map → runtime-D48ZKk8_.d.cts.map} +1 -1
  113. package/dist/{runtime-DMLgL26v.d.cts → runtime-HabiNBtJ.d.mts} +2 -2
  114. package/dist/{runtime-DMLgL26v.d.cts.map → runtime-HabiNBtJ.d.mts.map} +1 -1
  115. package/dist/{seeds-BK8caVMm.mjs → seeds-BYdrtZsC.mjs} +1554 -54
  116. package/dist/seeds-BYdrtZsC.mjs.map +1 -0
  117. package/dist/{seeds-DQ0FG57Z.cjs → seeds-CsI0A_Ef.cjs} +1656 -65
  118. package/dist/seeds-CsI0A_Ef.cjs.map +1 -0
  119. package/dist/{sniffer-CqE_KTTp.mjs → sniffer-B0EU73bj.mjs} +5 -360
  120. package/dist/sniffer-B0EU73bj.mjs.map +1 -0
  121. package/dist/{sniffer-hSf5mRgV.cjs → sniffer-DJYupBeK.cjs} +4 -413
  122. package/dist/sniffer-DJYupBeK.cjs.map +1 -0
  123. package/dist/{sst-DRi3H5TB.mjs → sst-D1Qj4sIs.mjs} +3 -3
  124. package/dist/{sst-DRi3H5TB.mjs.map → sst-D1Qj4sIs.mjs.map} +1 -1
  125. package/dist/{sst-hBrKouBy.cjs → sst-DAqUoZKG.cjs} +5 -5
  126. package/dist/{sst-hBrKouBy.cjs.map → sst-DAqUoZKG.cjs.map} +1 -1
  127. package/dist/{stages-CS1sjcRb.cjs → stages-Brn3vcdy.cjs} +2 -2
  128. package/dist/{stages-CS1sjcRb.cjs.map → stages-Brn3vcdy.cjs.map} +1 -1
  129. package/dist/{stages-CSXt7N2b.mjs → stages-DoHHz6pS.mjs} +2 -2
  130. package/dist/{stages-CSXt7N2b.mjs.map → stages-DoHHz6pS.mjs.map} +1 -1
  131. package/dist/target/public.cjs +1 -1
  132. package/dist/target/public.d.cts +2 -2
  133. package/dist/target/public.d.mts +2 -2
  134. package/dist/target/public.mjs +1 -1
  135. package/dist/{terminal-BdvrmkaC.mjs → terminal-BTbZlrFV.mjs} +2 -2
  136. package/dist/{terminal-BdvrmkaC.mjs.map → terminal-BTbZlrFV.mjs.map} +1 -1
  137. package/dist/{terminal-BL5E0xbR.cjs → terminal-COv23heb.cjs} +2 -2
  138. package/dist/{terminal-BL5E0xbR.cjs.map → terminal-COv23heb.cjs.map} +1 -1
  139. package/dist/{types-BZn-8ssD.d.mts → types-0oAyFOfR.d.cts} +48 -49
  140. package/dist/types-0oAyFOfR.d.cts.map +1 -0
  141. package/dist/{types-DiZj6hqp.d.cts → types-BZ01tZs-.d.mts} +47 -50
  142. package/dist/types-BZ01tZs-.d.mts.map +1 -0
  143. package/dist/workspace/index.cjs +1 -1
  144. package/dist/workspace/index.d.cts +2 -2
  145. package/dist/workspace/index.d.mts +2 -2
  146. package/dist/workspace/index.mjs +1 -1
  147. package/dist/{workspace-Bic_R3tz.cjs → workspace-CT0JM3Y8.cjs} +333 -1
  148. package/dist/workspace-CT0JM3Y8.cjs.map +1 -0
  149. package/dist/{workspace-Drz4jsvy.mjs → workspace-D2CYLMCW.mjs} +250 -2
  150. package/dist/workspace-D2CYLMCW.mjs.map +1 -0
  151. package/package.json +15 -15
  152. package/dist/LocalStateStore-CdpzTvPn.cjs.map +0 -1
  153. package/dist/LocalStateStore-D1VfxRuK.mjs.map +0 -1
  154. package/dist/add-BQ8v1ZII.cjs.map +0 -1
  155. package/dist/add-DbnzC7Kl.mjs.map +0 -1
  156. package/dist/cli-D8YQAYUX.cjs.map +0 -1
  157. package/dist/cli-DwTa9d_8.mjs.map +0 -1
  158. package/dist/compose-C5wz8mf9.mjs.map +0 -1
  159. package/dist/compose-DqWh1TaO.cjs.map +0 -1
  160. package/dist/credentials-BVs7mrtw.cjs.map +0 -1
  161. package/dist/credentials-pAtB70k3.mjs.map +0 -1
  162. package/dist/deploy-BwIKGxWH.mjs.map +0 -1
  163. package/dist/deploy-C8sWg81_.cjs.map +0 -1
  164. package/dist/engine-BP0CZ5fh.mjs.map +0 -1
  165. package/dist/engine-DLEJsZ3i.cjs.map +0 -1
  166. package/dist/run-BJLIerMM.mjs +0 -133
  167. package/dist/run-BJLIerMM.mjs.map +0 -1
  168. package/dist/run-fVZ-rLnc.cjs +0 -174
  169. package/dist/run-fVZ-rLnc.cjs.map +0 -1
  170. package/dist/seeds-BK8caVMm.mjs.map +0 -1
  171. package/dist/seeds-DQ0FG57Z.cjs.map +0 -1
  172. package/dist/sniffer-CqE_KTTp.mjs.map +0 -1
  173. package/dist/sniffer-hSf5mRgV.cjs.map +0 -1
  174. package/dist/types-BZn-8ssD.d.mts.map +0 -1
  175. package/dist/types-DiZj6hqp.d.cts.map +0 -1
  176. package/dist/workspace-Bic_R3tz.cjs.map +0 -1
  177. package/dist/workspace-Drz4jsvy.mjs.map +0 -1
@@ -1,10 +1,10 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
2
- const require_run = require("./run-fVZ-rLnc.cjs");
2
+ const require_credentials = require("./credentials-tr26-KML.cjs");
3
3
  const require_discover = require("./discover-D1It5r_h.cjs");
4
4
  const require_derive = require("./derive-DAbo49sm.cjs");
5
- const require_workspace = require("./workspace-Bic_R3tz.cjs");
5
+ const require_workspace = require("./workspace-CT0JM3Y8.cjs");
6
6
  const require_define = require("./define-DzRz8FgH.cjs");
7
- const require_seeds = require("./seeds-DQ0FG57Z.cjs");
7
+ const require_seeds = require("./seeds-CsI0A_Ef.cjs");
8
8
  const require_SubscriberGenerator = require("./SubscriberGenerator-BVn7cQ-2.cjs");
9
9
  const require_drivers = require("./drivers-LYSdQDmd.cjs");
10
10
  const require_databases = require("./databases-BY-pEImp.cjs");
@@ -193,16 +193,16 @@ const dockerCompose = {
193
193
  };
194
194
  },
195
195
  async build(stack, services) {
196
- await require_run.run("docker", compose(stack, ["build", ...services]), runOptions(stack, {
196
+ await require_credentials.run("docker", compose(stack, ["build", ...services]), runOptions(stack, {
197
197
  ...process.env,
198
198
  DOCKER_BUILDKIT: "1"
199
199
  }));
200
200
  },
201
201
  async pull(stack, services) {
202
- await require_run.run("docker", compose(stack, ["pull", ...services]), runOptions(stack));
202
+ await require_credentials.run("docker", compose(stack, ["pull", ...services]), runOptions(stack));
203
203
  },
204
204
  async up(stack, services) {
205
- await require_run.run("docker", compose(stack, [
205
+ await require_credentials.run("docker", compose(stack, [
206
206
  "up",
207
207
  "-d",
208
208
  "--wait",
@@ -212,10 +212,10 @@ const dockerCompose = {
212
212
  ]), runOptions(stack));
213
213
  },
214
214
  async down(stack) {
215
- await require_run.run("docker", compose(stack, ["down"]), runOptions(stack));
215
+ await require_credentials.run("docker", compose(stack, ["down"]), runOptions(stack));
216
216
  },
217
217
  async port(stack, service, inside) {
218
- const output = await require_run.runOutput("docker", compose(stack, [
218
+ const output = await require_credentials.runOutput("docker", compose(stack, [
219
219
  "port",
220
220
  service,
221
221
  String(inside)
@@ -239,14 +239,14 @@ const dockerCompose = {
239
239
  },
240
240
  async copyOut(stack, service, from, to) {
241
241
  await (0, node_fs_promises.mkdir)((0, node_path.dirname)(to), { recursive: true });
242
- await require_run.run("docker", compose(stack, [
242
+ await require_credentials.run("docker", compose(stack, [
243
243
  "cp",
244
244
  `${service}:${from}`,
245
245
  to
246
246
  ]), runOptions(stack));
247
247
  },
248
248
  async push(stack, ref) {
249
- const output = await require_run.runOutput("docker", ["push", ref], {
249
+ const output = await require_credentials.runOutput("docker", ["push", ref], {
250
250
  cwd: stack.cwd,
251
251
  ...stack.signal ? { signal: stack.signal } : {}
252
252
  });
@@ -434,8 +434,10 @@ function traefikDynamic(routes, options) {
434
434
  const routers = {};
435
435
  const services = {};
436
436
  const middlewares = {};
437
+ const strip = `${project}-strip-gkm-headers`;
438
+ if (routes.length > 0) middlewares[strip] = { headers: { customRequestHeaders: { [_geekmidas_manifest.CLIENT_IP_HEADER]: "" } } };
437
439
  for (const route of routes) {
438
- const chain = [];
440
+ const chain = [strip];
439
441
  if (route.allow) {
440
442
  middlewares[name(route, "allow")] = { ipAllowList: { sourceRange: [...route.allow] } };
441
443
  chain.push(name(route, "allow"));
@@ -448,7 +450,7 @@ function traefikDynamic(routes, options) {
448
450
  rule: `Host(\`${route.host}\`)`,
449
451
  entryPoints: ["websecure"],
450
452
  service: name(route),
451
- ...chain.length > 0 ? { middlewares: chain } : {},
453
+ middlewares: chain,
452
454
  tls: tls.kind === "acme" ? { certResolver: ACME_RESOLVER } : {}
453
455
  };
454
456
  services[name(route)] = { loadBalancer: {
@@ -521,7 +523,7 @@ function yaml$1(value) {
521
523
  */
522
524
  /** The edge's directory on this machine. */
523
525
  function edgeDir(env = process.env) {
524
- return (0, node_path.join)(require_run.gkmHome(env), "edge");
526
+ return (0, node_path.join)(require_credentials.gkmHome(env), "edge");
525
527
  }
526
528
  /** The edge's compose project, as docker is asked about it. */
527
529
  function edgeRef(dir, options = {}) {
@@ -793,6 +795,18 @@ function pinImages(file, digests, images) {
793
795
  }
794
796
  //#endregion
795
797
  //#region src/compose/caddyfile.ts
798
+ /**
799
+ * The stack's own edge, rendered for Caddy: one site block per route.
800
+ *
801
+ * Deployed, each host is the stage's real domain and Caddy gets it a
802
+ * certificate from Let's Encrypt on first request — the same automatic HTTPS
803
+ * it does anywhere, with nothing to configure but the name — or serves the
804
+ * stage's own certificate (`deploy.compose.tls`). Locally the hosts are
805
+ * `*.localhost` and the certificates come from Caddy's own CA, as the `gkm
806
+ * dev` edge does, so a local stack is `https://` like a deployed one.
807
+ *
808
+ * Pure: the routes are data (`routes.ts`), and rendering them is one string.
809
+ */
796
810
  /** Where Caddy reads a stage's own certificate, inside its container. */
797
811
  const CADDY_TLS_DIR = "/etc/caddy/tls";
798
812
  /** An upstream on the stack's own network: its service name. */
@@ -815,7 +829,11 @@ function edgeCaddyfile(routes, options) {
815
829
  ` : tls.kind === "files" ? `
816
830
  tls ${tls.certFile} ${tls.keyFile}
817
831
  ` : "";
818
- const blocks = routes.map(({ host, upstreams, prefix, allow, streaming }) => `https://${host} {${certificate}${allow ? `
832
+ const blocks = routes.map(({ host, upstreams, prefix, allow, streaming }) => `https://${host} {${certificate}
833
+ # gkm's own header, which only a service of this stack may send: the auth
834
+ # server rate-limits by the client address it carries.
835
+ request_header -${_geekmidas_manifest.CLIENT_IP_HEADER}
836
+ ${allow ? `
819
837
  # Only these addresses — the peer Caddy sees, never a header a client
820
838
  # could set. Everything else is refused before it reaches the upstream.
821
839
  @denied not remote_ip ${allow.join(" ")}
@@ -1120,13 +1138,17 @@ function composeStack(input) {
1120
1138
  missing: [],
1121
1139
  minio: plan.resources.filter((r) => r.kind === "objects").map((r) => r.id),
1122
1140
  mailpit: plan.resources.filter((r) => r.kind === "email").map((r) => r.id)
1123
- } : require_seeds.assertExternalServices({
1124
- stage,
1125
- declarations: serviceDeclarations(plan, reads, owners),
1126
- supplied: custom,
1127
- allow: input.allowDevServices ?? [],
1128
- ...domain ? { domain } : {}
1129
- });
1141
+ } : (() => {
1142
+ require_seeds.assertStageProvidersEnabled(workspace, manifest, stage);
1143
+ return require_seeds.assertExternalServices({
1144
+ stage,
1145
+ declarations: serviceDeclarations(plan, reads, owners),
1146
+ supplied: custom,
1147
+ allow: input.allowDevServices === true,
1148
+ ...domain ? { domain } : {},
1149
+ providers: require_seeds.stageProviderNotes(workspace, stage)
1150
+ });
1151
+ })();
1130
1152
  const redis = require_seeds.stackRedis({
1131
1153
  plan,
1132
1154
  stage,
@@ -1776,7 +1798,7 @@ function stackOverrideFile(root, stage) {
1776
1798
  async function gitRevision(root) {
1777
1799
  let sha;
1778
1800
  try {
1779
- sha = (await require_run.runOutput("git", [
1801
+ sha = (await require_credentials.runOutput("git", [
1780
1802
  "rev-parse",
1781
1803
  "--short",
1782
1804
  "HEAD"
@@ -1785,7 +1807,7 @@ async function gitRevision(root) {
1785
1807
  throw new NoGitRevision(root);
1786
1808
  }
1787
1809
  if (!sha) throw new NoGitRevision(root);
1788
- return (await require_run.runOutput("git", ["status", "--porcelain"], { cwd: root }).catch(() => "")).trim() ? `${sha}-dirty` : sha;
1810
+ return (await require_credentials.runOutput("git", ["status", "--porcelain"], { cwd: root }).catch(() => "")).trim() ? `${sha}-dirty` : sha;
1789
1811
  }
1790
1812
  /** The edge's ports, from the environment — 443 and 80 when unset. */
1791
1813
  function edgePorts(env = process.env) {
@@ -1878,6 +1900,15 @@ async function validateCompose(ctx, deps, options = {}) {
1878
1900
  ...push ? { buildOnly: true } : {}
1879
1901
  });
1880
1902
  require_seeds.reportDevServices(ctx, composed.devServices);
1903
+ if (!push && stage !== workspace.stages.local) {
1904
+ const verified = await require_seeds.verifyStageProviders({
1905
+ workspace,
1906
+ manifest,
1907
+ stage,
1908
+ secrets: secrets?.custom ?? {}
1909
+ });
1910
+ for (const line of verified) ctx.logger.info(`✓ ${line} verified`);
1911
+ }
1881
1912
  if (mode === "build") assertRedisClient(workspace, composed);
1882
1913
  const stack = options.pin ? withPinnedImages(composed, options.pin.file, options.pin.digests) : composed;
1883
1914
  if (mode === "pull" && !ctx.dryRun) await assertImagesExist(deps.docker, tag, [...stack.apps, ...stack.workers]);
@@ -2705,4 +2736,4 @@ Object.defineProperty(exports, "stackOverrideFile", {
2705
2736
  }
2706
2737
  });
2707
2738
 
2708
- //# sourceMappingURL=compose-DqWh1TaO.cjs.map
2739
+ //# sourceMappingURL=compose-xw86kVYi.cjs.map