@geekmidas/cli 10.0.0-alpha.110 → 10.0.0-alpha.112

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 (117) hide show
  1. package/dist/{GoDaddyProvider-CjeOduia.mjs → GoDaddyProvider-CPabc3XW.mjs} +2 -2
  2. package/dist/{GoDaddyProvider-CjeOduia.mjs.map → GoDaddyProvider-CPabc3XW.mjs.map} +1 -1
  3. package/dist/{GoDaddyProvider-qNUzTXI7.cjs → GoDaddyProvider-DWrDIXzQ.cjs} +2 -2
  4. package/dist/{GoDaddyProvider-qNUzTXI7.cjs.map → GoDaddyProvider-DWrDIXzQ.cjs.map} +1 -1
  5. package/dist/{LegacyStateStore-pgscYsiG.mjs → LegacyStateStore-BdXoAlYY.mjs} +3 -3
  6. package/dist/{LegacyStateStore-pgscYsiG.mjs.map → LegacyStateStore-BdXoAlYY.mjs.map} +1 -1
  7. package/dist/{LegacyStateStore-MxiSu7KJ.cjs → LegacyStateStore-fsyPGBWu.cjs} +3 -3
  8. package/dist/{LegacyStateStore-MxiSu7KJ.cjs.map → LegacyStateStore-fsyPGBWu.cjs.map} +1 -1
  9. package/dist/{LocalStateStore-Bm8Vmwjb.cjs → LocalStateStore-AtviUBky.cjs} +2 -2
  10. package/dist/{LocalStateStore-Bm8Vmwjb.cjs.map → LocalStateStore-AtviUBky.cjs.map} +1 -1
  11. package/dist/{LocalStateStore-BcvyKbAw.mjs → LocalStateStore-BrAX5yy7.mjs} +2 -2
  12. package/dist/{LocalStateStore-BcvyKbAw.mjs.map → LocalStateStore-BrAX5yy7.mjs.map} +1 -1
  13. package/dist/{S3StateStore-H2XsAzpJ.mjs → S3StateStore-Cx7njkBz.mjs} +2 -2
  14. package/dist/{S3StateStore-H2XsAzpJ.mjs.map → S3StateStore-Cx7njkBz.mjs.map} +1 -1
  15. package/dist/{S3StateStore-DXHSBVsV.cjs → S3StateStore-tn5g80Sx.cjs} +2 -2
  16. package/dist/{S3StateStore-DXHSBVsV.cjs.map → S3StateStore-tn5g80Sx.cjs.map} +1 -1
  17. package/dist/{SSMStateStore-BLPSNl-U.cjs → SSMStateStore-CAFde-Fq.cjs} +2 -2
  18. package/dist/{SSMStateStore-BLPSNl-U.cjs.map → SSMStateStore-CAFde-Fq.cjs.map} +1 -1
  19. package/dist/{SSMStateStore-CENciQEM.mjs → SSMStateStore-sqZ3oDmn.mjs} +2 -2
  20. package/dist/{SSMStateStore-CENciQEM.mjs.map → SSMStateStore-sqZ3oDmn.mjs.map} +1 -1
  21. package/dist/{add-Cdg1kEqN.cjs → add-Cs8yT5iH.cjs} +3 -3
  22. package/dist/{add-Cdg1kEqN.cjs.map → add-Cs8yT5iH.cjs.map} +1 -1
  23. package/dist/{add-snhdVmR-.mjs → add-DJE7zqJ4.mjs} +3 -3
  24. package/dist/{add-snhdVmR-.mjs.map → add-DJE7zqJ4.mjs.map} +1 -1
  25. package/dist/{bundler-Wd9H4QLJ.mjs → bundler-DrySVbXF.mjs} +5 -5
  26. package/dist/{bundler-Wd9H4QLJ.mjs.map → bundler-DrySVbXF.mjs.map} +1 -1
  27. package/dist/{bundler-B4GDxImV.cjs → bundler-NrtItVBp.cjs} +5 -5
  28. package/dist/{bundler-B4GDxImV.cjs.map → bundler-NrtItVBp.cjs.map} +1 -1
  29. package/dist/{cli-BZYz55tO.cjs → cli-CHzpFBh-.cjs} +2 -2
  30. package/dist/{cli-BZYz55tO.cjs.map → cli-CHzpFBh-.cjs.map} +1 -1
  31. package/dist/{cli-BzrDSNSg.mjs → cli-DDY3jfTt.mjs} +4 -4
  32. package/dist/{cli-BzrDSNSg.mjs.map → cli-DDY3jfTt.mjs.map} +1 -1
  33. package/dist/{compose-DN9zySvQ.cjs → compose-ByIbIrzs.cjs} +20 -5
  34. package/dist/compose-ByIbIrzs.cjs.map +1 -0
  35. package/dist/{compose-Gsd1Nq7R.mjs → compose-CDC2bCme.mjs} +20 -5
  36. package/dist/compose-CDC2bCme.mjs.map +1 -0
  37. package/dist/deploy/public.cjs +6 -6
  38. package/dist/deploy/public.mjs +6 -6
  39. package/dist/{deploy-H2S8_mTx.mjs → deploy-DLq9-m6H.mjs} +5 -5
  40. package/dist/{deploy-H2S8_mTx.mjs.map → deploy-DLq9-m6H.mjs.map} +1 -1
  41. package/dist/{deploy-CFvq8daZ.cjs → deploy-Dl_NavYE.cjs} +5 -5
  42. package/dist/{deploy-CFvq8daZ.cjs.map → deploy-Dl_NavYE.cjs.map} +1 -1
  43. package/dist/{dns-BdETzP10.cjs → dns-C2TGXUF4.cjs} +2 -2
  44. package/dist/{dns-BdETzP10.cjs.map → dns-C2TGXUF4.cjs.map} +1 -1
  45. package/dist/{dns-pFMShDqW.mjs → dns-pzftumxg.mjs} +2 -2
  46. package/dist/{dns-pFMShDqW.mjs.map → dns-pzftumxg.mjs.map} +1 -1
  47. package/dist/{dokploy-oDJbnvCb.mjs → dokploy-B7-OwY2s.mjs} +2 -2
  48. package/dist/{dokploy-oDJbnvCb.mjs.map → dokploy-B7-OwY2s.mjs.map} +1 -1
  49. package/dist/{dokploy-HioAjP7K.cjs → dokploy-OqBh8G4g.cjs} +2 -2
  50. package/dist/{dokploy-HioAjP7K.cjs.map → dokploy-OqBh8G4g.cjs.map} +1 -1
  51. package/dist/eas-Cne743nQ.cjs +337 -0
  52. package/dist/eas-Cne743nQ.cjs.map +1 -0
  53. package/dist/eas-DEpwISrQ.mjs +334 -0
  54. package/dist/eas-DEpwISrQ.mjs.map +1 -0
  55. package/dist/{encryption-D5pDJyp2.mjs → encryption-DJv_jEXi.mjs} +2 -2
  56. package/dist/{encryption-D5pDJyp2.mjs.map → encryption-DJv_jEXi.mjs.map} +1 -1
  57. package/dist/{encryption-DVCxD-gV.cjs → encryption-DoVnVU82.cjs} +2 -2
  58. package/dist/{encryption-DVCxD-gV.cjs.map → encryption-DoVnVU82.cjs.map} +1 -1
  59. package/dist/{engine-BaJGPzte.cjs → engine-CJhQb50j.cjs} +3 -3
  60. package/dist/{engine-BaJGPzte.cjs.map → engine-CJhQb50j.cjs.map} +1 -1
  61. package/dist/{engine-CfAKgr2_.mjs → engine-Db71-OZL.mjs} +3 -3
  62. package/dist/{engine-CfAKgr2_.mjs.map → engine-Db71-OZL.mjs.map} +1 -1
  63. package/dist/{github-E-ZxqFPq.mjs → github-D2eABlxM.mjs} +4 -4
  64. package/dist/{github-E-ZxqFPq.mjs.map → github-D2eABlxM.mjs.map} +1 -1
  65. package/dist/{github-D902Vwr9.cjs → github-DDOHjdS9.cjs} +4 -4
  66. package/dist/{github-D902Vwr9.cjs.map → github-DDOHjdS9.cjs.map} +1 -1
  67. package/dist/googlePlay-B6uiHi65.cjs +931 -0
  68. package/dist/googlePlay-B6uiHi65.cjs.map +1 -0
  69. package/dist/googlePlay-BYZ-J5sC.mjs +931 -0
  70. package/dist/googlePlay-BYZ-J5sC.mjs.map +1 -0
  71. package/dist/index.cjs +268 -94
  72. package/dist/index.cjs.map +1 -1
  73. package/dist/index.mjs +268 -97
  74. package/dist/index.mjs.map +1 -1
  75. package/dist/{migrate-BZ0GnSZQ.mjs → migrate-CQUGbptv.mjs} +2 -2
  76. package/dist/{migrate-BZ0GnSZQ.mjs.map → migrate-CQUGbptv.mjs.map} +1 -1
  77. package/dist/{migrate-Df81ew0k.cjs → migrate-GLBZlrlJ.cjs} +2 -2
  78. package/dist/{migrate-Df81ew0k.cjs.map → migrate-GLBZlrlJ.cjs.map} +1 -1
  79. package/dist/{migrate-CTqhWtev.cjs → migrate-bDQzFvBN.cjs} +2 -2
  80. package/dist/{migrate-CTqhWtev.cjs.map → migrate-bDQzFvBN.cjs.map} +1 -1
  81. package/dist/{migrate-DCXwHcWX.mjs → migrate-xHYaeBkd.mjs} +3 -3
  82. package/dist/{migrate-DCXwHcWX.mjs.map → migrate-xHYaeBkd.mjs.map} +1 -1
  83. package/dist/publish-CSctCNf4.mjs +123 -0
  84. package/dist/publish-CSctCNf4.mjs.map +1 -0
  85. package/dist/publish-SDG1WfYn.cjs +124 -0
  86. package/dist/publish-SDG1WfYn.cjs.map +1 -0
  87. package/dist/{resolve-BMpPd8x3.mjs → resolve-CxDqDmCD.mjs} +3 -3
  88. package/dist/{resolve-BMpPd8x3.mjs.map → resolve-CxDqDmCD.mjs.map} +1 -1
  89. package/dist/{resolve-D043YmW9.cjs → resolve-wG49Woex.cjs} +3 -3
  90. package/dist/{resolve-D043YmW9.cjs.map → resolve-wG49Woex.cjs.map} +1 -1
  91. package/dist/{rollback-CDs_XNb0.mjs → rollback-BQgEdr_p.mjs} +4 -4
  92. package/dist/{rollback-CDs_XNb0.mjs.map → rollback-BQgEdr_p.mjs.map} +1 -1
  93. package/dist/{rollback-CBiYsQ3T.cjs → rollback-Cw-Z0mWn.cjs} +4 -4
  94. package/dist/{rollback-CBiYsQ3T.cjs.map → rollback-Cw-Z0mWn.cjs.map} +1 -1
  95. package/dist/{seeds-BjcO4DDa.mjs → seeds-CIk0l4SC.mjs} +13 -10
  96. package/dist/seeds-CIk0l4SC.mjs.map +1 -0
  97. package/dist/{seeds-DNqRA1aQ.cjs → seeds-Dk8YkLkM.cjs} +18 -15
  98. package/dist/seeds-Dk8YkLkM.cjs.map +1 -0
  99. package/dist/{sniffer-DipSS8r8.cjs → sniffer-2aK7cB2u.cjs} +6 -6
  100. package/dist/{sniffer-DipSS8r8.cjs.map → sniffer-2aK7cB2u.cjs.map} +1 -1
  101. package/dist/{sniffer-b0XPmSyT.mjs → sniffer-CABMO-Bh.mjs} +6 -6
  102. package/dist/{sniffer-b0XPmSyT.mjs.map → sniffer-CABMO-Bh.mjs.map} +1 -1
  103. package/dist/{stage-DrDmZusd.mjs → stage-ClKTHQoM.mjs} +69 -33
  104. package/dist/stage-ClKTHQoM.mjs.map +1 -0
  105. package/dist/{stage-C_y2UovO.cjs → stage-DrCS0vKD.cjs} +79 -32
  106. package/dist/stage-DrCS0vKD.cjs.map +1 -0
  107. package/dist/target/public.cjs +1 -1
  108. package/dist/target/public.mjs +1 -1
  109. package/dist/{terminal-CvRLxz6g.mjs → terminal-CybB-cjk.mjs} +2 -2
  110. package/dist/{terminal-CvRLxz6g.mjs.map → terminal-CybB-cjk.mjs.map} +1 -1
  111. package/package.json +15 -15
  112. package/dist/compose-DN9zySvQ.cjs.map +0 -1
  113. package/dist/compose-Gsd1Nq7R.mjs.map +0 -1
  114. package/dist/seeds-BjcO4DDa.mjs.map +0 -1
  115. package/dist/seeds-DNqRA1aQ.cjs.map +0 -1
  116. package/dist/stage-C_y2UovO.cjs.map +0 -1
  117. package/dist/stage-DrDmZusd.mjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -3,25 +3,25 @@ import { n as __require, t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mj
3
3
  import { n as isGkmError, t as GkmError } from "./errors-D8Gwp5kU.mjs";
4
4
  import { r as DEFAULT_TIMEOUT_MS, t as CommandFailed } from "./run-BJLIerMM.mjs";
5
5
  import { a as getDokployCredentials, d as removeGoDaddyCredentials, f as storeDokployCredentials, i as getCredentialsPath, l as readCredentials, m as storeHostingerToken, o as getDokployRegistryId, p as storeGoDaddyToken, s as getDokployToken, u as removeDokployCredentials } from "./credentials-B5N5yKk6.mjs";
6
- import { C as dockerCompose, S as sshTarget, _ as parseDigests, b as dockerHost, c as edgeRef, f as derivedCredentials, h as EDGE_PROJECT, i as ComposePushNeedsBuild, l as removeEdgeRoutes, m as stackPlan, o as stackOverrideFile, p as stackDir, r as ComposePinNeedsPull, t as composeTarget, u as composeProject, v as pinnedRef, w as projectNetwork, y as composeServer } from "./compose-Gsd1Nq7R.mjs";
6
+ import { C as dockerCompose, S as sshTarget, _ as parseDigests, b as dockerHost, c as edgeRef, f as derivedCredentials, h as EDGE_PROJECT, i as ComposePushNeedsBuild, l as removeEdgeRoutes, m as stackPlan, o as stackOverrideFile, p as stackDir, r as ComposePinNeedsPull, t as composeTarget, u as composeProject, v as pinnedRef, w as projectNetwork, y as composeServer } from "./compose-CDC2bCme.mjs";
7
7
  import { A as InvalidStages, F as stageProblems, P as deployedProblems, R as stageSampleRate, a as allConstructGlobs, d as getAppGkmConfig, j as TEST_STAGE, u as getAppBuildOrder } from "./workspace-D1QbNd55.mjs";
8
- import { b as runTime, d as BACKUPS_URL_KEY, f as RUNNER_PATH, g as backupDatabases, u as BACKUPS_SERVICE, v as backupFile, x as stageBackups, y as backupsPrefix } from "./dns-pFMShDqW.mjs";
9
- import { $t as isUnder, An as appTelemetry, At as isPortAvailable, Bn as fakeKey, Bt as maskPassword, Ct as cacheBackendFor, Dn as TELEMETRY_CONTAINER, Dt as createCredentialsPreload, G as CronGenerator, Gn as LOCAL_LOGS_EMAIL, H as workerBundleName, Hn as portsOf, Ht as toEmbeddableSecrets, It as secretsStoreFor, L as dockerCommand, Mn as scopeTelemetryEnv, Mt as loadPortState, Nn as surfaceClientTraced, Nt as loadSecretsForApp, Ot as createEntryWrapper, Pn as telemetryOf, Pt as prepareEntryCredentials, Q as assertDevServicesFlag, Tt as providerOf, U as workerEntryDir, Ut as withCustomSecret, V as WorkerGenerator, W as QueueGenerator, Wn as primaryPortKey, Xt as imageBuildCredentials, Zt as isImageBuild, a as dnsResources, an as postgresDatabaseNames, bt as pgClient, c as describeActor, dt as constructGlobs, en as workerUnits, fn as readLocalCredentials, ft as derivedContainers, gn as projectKey, gt as forgetState, ht as LOCAL_CA_PATH, jt as loadEnvFiles, kt as findAvailablePort, lt as FAKE_ENV, mn as getKeyPath, pn as FileSecretsStore, pt as reconcileWorkspace, sn as quoteIdentifier, ut as backendsOf$1, wt as eventsBackendFor, xt as CLUSTER_DATABASE, zn as describeServices } from "./seeds-BjcO4DDa.mjs";
8
+ import { b as runTime, d as BACKUPS_URL_KEY, f as RUNNER_PATH, g as backupDatabases, u as BACKUPS_SERVICE, v as backupFile, x as stageBackups, y as backupsPrefix } from "./dns-pzftumxg.mjs";
9
+ import { $t as isUnder, An as appTelemetry, At as isPortAvailable, Bn as fakeKey, Bt as maskPassword, Ct as cacheBackendFor, Dn as TELEMETRY_CONTAINER, Dt as createCredentialsPreload, G as CronGenerator, Gn as LOCAL_LOGS_EMAIL, H as workerBundleName, Hn as portsOf, Ht as toEmbeddableSecrets, It as secretsStoreFor, L as dockerCommand, Mn as scopeTelemetryEnv, Mt as loadPortState, Nn as surfaceClientTraced, Nt as loadSecretsForApp, Ot as createEntryWrapper, Pn as telemetryOf, Pt as prepareEntryCredentials, Q as assertDevServicesFlag, Tt as providerOf, U as workerEntryDir, Ut as withCustomSecret, V as WorkerGenerator, W as QueueGenerator, Wn as primaryPortKey, Xt as imageBuildCredentials, Zt as isImageBuild, a as dnsResources, an as postgresDatabaseNames, bt as pgClient, c as describeActor, dt as constructGlobs, en as workerUnits, fn as readLocalCredentials, ft as derivedContainers, gn as projectKey, gt as forgetState, ht as LOCAL_CA_PATH, jt as loadEnvFiles, kt as findAvailablePort, lt as FAKE_ENV, mn as getKeyPath, pn as FileSecretsStore, pt as reconcileWorkspace, sn as quoteIdentifier, ut as backendsOf$1, wt as eventsBackendFor, xt as CLUSTER_DATABASE, zn as describeServices } from "./seeds-CIk0l4SC.mjs";
10
10
  import { t as appKey } from "./derive-B4vDpzgP.mjs";
11
11
  import { l as isCacheBackend, n as assertTestCredentials, t as SubscriberGenerator } from "./SubscriberGenerator-DHnIYwUU.mjs";
12
12
  import { n as deployIdentity } from "./identity-CBXr4wNi.mjs";
13
13
  import { a as startTelemetryCode, c as parseTelemetryFlag, i as routeTelemetry, n as runtimeFor, o as telemetryFor, r as mountRequestSpansCode, s as writeTelemetryModule, t as EndpointGenerator } from "./EndpointGenerator-CvLX8bpx.mjs";
14
14
  import { d as ConstructGenerator, i as discover, r as consumedBy, u as withOwningTsconfigJsx } from "./discover-Ca8U75dl.mjs";
15
15
  import { ConfigNotFound, NotABackendApp, NotInAnApp, loadAppConfig, loadConfig, loadWorkspaceConfig, loadWorkspaceSettings, parseModuleConfig } from "./config.mjs";
16
- import { d as awsEndpoint, f as awsProvisioningCredentials, t as deploy$1, u as awsClientConfig } from "./deploy-H2S8_mTx.mjs";
16
+ import { d as awsEndpoint, f as awsProvisioningCredentials, t as deploy$1, u as awsClientConfig } from "./deploy-DLq9-m6H.mjs";
17
17
  import { generateOpenApi, openapiCommand, resolveOpenApiConfig } from "./openapi.mjs";
18
18
  import { a as describeHolder, c as withAppPorts, i as assignAppPorts, o as describeMove, r as appTag, s as holderOf, t as APP_TAG_ENV } from "./appPorts-BoXMwolc.mjs";
19
19
  import { n as driversFor, r as eventsBackendsIn, t as cacheBackendsIn } from "./drivers-D11JHxrD.mjs";
20
20
  import { n as withCompute, r as withRoutes, t as manifestModule } from "./emit-C1e8qD08.mjs";
21
21
  import { t as LocalSandbox } from "./local-BwC2v2Y8.mjs";
22
- import { S as createStateStore, k as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-b0XPmSyT.mjs";
22
+ import { S as createStateStore, k as keyFingerprint, n as sniffAppEnvironment, o as DokployApi } from "./sniffer-CABMO-Bh.mjs";
23
23
  import { o as loadCredentialSchemas, t as CredentialsInvalid } from "./credentialSchemas-Cf5Pf8VE.mjs";
24
- import { t as LocalStateStore } from "./LocalStateStore-BcvyKbAw.mjs";
24
+ import { t as LocalStateStore } from "./LocalStateStore-BrAX5yy7.mjs";
25
25
  import { a as getExecCommand, c as validateProjectName, i as findWorkspaceRoot, n as detectPackageManager$1, o as getInstallCommand, r as findWorkspacePackages, s as getRunCommand, t as checkDirectoryExists } from "./utils-D_fxUqvU.mjs";
26
26
  import { a as writeTestHarness, i as TEST_MANIFEST_ENV, n as TEST_READY_FILE, t as TEST_READY_ENV } from "./ready-CIt5SOtg.mjs";
27
27
  import { createRequire } from "node:module";
@@ -39,7 +39,7 @@ import { canonicalId, dependenciesOf, kebabCase, migrationFolder, provideKey, sc
39
39
  import { pathToFileURL } from "node:url";
40
40
  import { promisify } from "node:util";
41
41
  import fg from "fast-glob";
42
- import { parseDocument } from "yaml";
42
+ import { parseDocument, stringify } from "yaml";
43
43
  import chokidar from "chokidar";
44
44
  import prompts from "prompts";
45
45
  import { createServer as createServer$1 } from "node:http";
@@ -51,7 +51,7 @@ import crypto from "crypto";
51
51
  import { Function } from "@geekmidas/constructs/functions";
52
52
  import { Topic } from "@geekmidas/constructs/topic";
53
53
  //#region package.json
54
- var version = "10.0.0-alpha.110";
54
+ var version = "10.0.0-alpha.112";
55
55
  //#endregion
56
56
  //#region src/prompt.ts
57
57
  /**
@@ -134,7 +134,7 @@ const logger$8 = console;
134
134
  * Validate Dokploy token by making a test API call
135
135
  */
136
136
  async function validateDokployToken(endpoint, token) {
137
- const { DokployApi } = await import("./sniffer-b0XPmSyT.mjs").then((n) => n.c);
137
+ const { DokployApi } = await import("./sniffer-CABMO-Bh.mjs").then((n) => n.c);
138
138
  return new DokployApi({
139
139
  baseUrl: endpoint,
140
140
  token
@@ -2174,7 +2174,7 @@ async function execCommand(commandArgs, options = {}, stageDeps) {
2174
2174
  const cwd = options.cwd ?? process.cwd();
2175
2175
  if (!commandArgs[0]) throw new NoCommandSpecified();
2176
2176
  if (options.stage && !isImageBuild()) {
2177
- const { execOnStage } = await import("./stage-DrDmZusd.mjs");
2177
+ const { execOnStage } = await import("./stage-ClKTHQoM.mjs").then((n) => n.n);
2178
2178
  const { loadWorkspaceConfig } = await import("./config.mjs");
2179
2179
  const { workspace } = await loadWorkspaceConfig(cwd);
2180
2180
  if (options.stage !== workspace.stages.local) {
@@ -2747,9 +2747,9 @@ async function workspaceDevCommand(configured, options) {
2747
2747
  for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
2748
2748
  logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
2749
2749
  if (options.migrate || options.seed) {
2750
- const { prepareDevDatabases } = await import("./migrate-DCXwHcWX.mjs");
2750
+ const { prepareDevDatabases } = await import("./migrate-xHYaeBkd.mjs");
2751
2751
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2752
- } else await import("./migrate-DCXwHcWX.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2752
+ } else await import("./migrate-xHYaeBkd.mjs").then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
2753
2753
  logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
2754
2754
  });
2755
2755
  const appUrls = {};
@@ -3825,7 +3825,7 @@ async function buildApp(input) {
3825
3825
  ...production,
3826
3826
  ...telemetry ? { telemetry } : {}
3827
3827
  });
3828
- const { bundleServer } = await import("./bundler-Wd9H4QLJ.mjs");
3828
+ const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
3829
3829
  await bundleServer({
3830
3830
  entryPoint,
3831
3831
  outputDir: join(outputDir, "dist"),
@@ -4024,7 +4024,7 @@ async function buildWorkers(input) {
4024
4024
  });
4025
4025
  logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
4026
4026
  if (!input.bundle) continue;
4027
- const { bundleServer } = await import("./bundler-Wd9H4QLJ.mjs");
4027
+ const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
4028
4028
  const outfile = workerBundleName(worker.id);
4029
4029
  await bundleServer({
4030
4030
  entryPoint,
@@ -4110,7 +4110,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
4110
4110
  let masterKey;
4111
4111
  if (context.production?.bundle && !skipBundle) {
4112
4112
  logger$4.log(`\n📦 Bundling production server...`);
4113
- const { bundleServer } = await import("./bundler-Wd9H4QLJ.mjs");
4113
+ const { bundleServer } = await import("./bundler-DrySVbXF.mjs");
4114
4114
  const allConstructs = [
4115
4115
  ...endpoints.map((e) => e.construct),
4116
4116
  ...functions.map((f) => f.construct),
@@ -5943,25 +5943,25 @@ function loadPackageJson() {
5943
5943
  * Run: pnpm --filter @geekmidas/cli sync-versions
5944
5944
  */
5945
5945
  const GEEKMIDAS_VERSIONS = {
5946
- "@geekmidas/audit": "~10.0.0-alpha.110",
5947
- "@geekmidas/auth": "~10.0.0-alpha.110",
5948
- "@geekmidas/cache": "~10.0.0-alpha.110",
5949
- "@geekmidas/client": "~10.0.0-alpha.110",
5950
- "@geekmidas/cloud": "~10.0.0-alpha.110",
5951
- "@geekmidas/constructs": "~10.0.0-alpha.110",
5952
- "@geekmidas/db": "~10.0.0-alpha.110",
5953
- "@geekmidas/emailkit": "~10.0.0-alpha.110",
5954
- "@geekmidas/envkit": "~10.0.0-alpha.110",
5955
- "@geekmidas/errors": "~10.0.0-alpha.110",
5956
- "@geekmidas/events": "~10.0.0-alpha.110",
5957
- "@geekmidas/logger": "~10.0.0-alpha.110",
5958
- "@geekmidas/manifest": "~10.0.0-alpha.110",
5959
- "@geekmidas/rate-limit": "~10.0.0-alpha.110",
5960
- "@geekmidas/schema": "~10.0.0-alpha.110",
5961
- "@geekmidas/services": "~10.0.0-alpha.110",
5962
- "@geekmidas/storage": "~10.0.0-alpha.110",
5963
- "@geekmidas/telescope": "~10.0.0-alpha.110",
5964
- "@geekmidas/testkit": "~10.0.0-alpha.110",
5946
+ "@geekmidas/audit": "~10.0.0-alpha.112",
5947
+ "@geekmidas/auth": "~10.0.0-alpha.112",
5948
+ "@geekmidas/cache": "~10.0.0-alpha.112",
5949
+ "@geekmidas/client": "~10.0.0-alpha.112",
5950
+ "@geekmidas/cloud": "~10.0.0-alpha.112",
5951
+ "@geekmidas/constructs": "~10.0.0-alpha.112",
5952
+ "@geekmidas/db": "~10.0.0-alpha.112",
5953
+ "@geekmidas/emailkit": "~10.0.0-alpha.112",
5954
+ "@geekmidas/envkit": "~10.0.0-alpha.112",
5955
+ "@geekmidas/errors": "~10.0.0-alpha.112",
5956
+ "@geekmidas/events": "~10.0.0-alpha.112",
5957
+ "@geekmidas/logger": "~10.0.0-alpha.112",
5958
+ "@geekmidas/manifest": "~10.0.0-alpha.112",
5959
+ "@geekmidas/rate-limit": "~10.0.0-alpha.112",
5960
+ "@geekmidas/schema": "~10.0.0-alpha.112",
5961
+ "@geekmidas/services": "~10.0.0-alpha.112",
5962
+ "@geekmidas/storage": "~10.0.0-alpha.112",
5963
+ "@geekmidas/telescope": "~10.0.0-alpha.112",
5964
+ "@geekmidas/testkit": "~10.0.0-alpha.112",
5965
5965
  "@geekmidas/cli": `~${loadPackageJson().version}`
5966
5966
  };
5967
5967
  //#endregion
@@ -7154,7 +7154,7 @@ const COMMIT = /^[0-9a-f]{40}$/;
7154
7154
  * The `uses:` value for the stages action, with a comment saying which CLI
7155
7155
  * release the pinned commit is.
7156
7156
  */
7157
- function stagesActionUses(commit = "1175be1a09457cf9cf3bfb9add2c61969c829df8", version = cliVersion()) {
7157
+ function stagesActionUses(commit = "4f82632d8355cb858b895c3caf36228e040d39b0", version = cliVersion()) {
7158
7158
  return commit && COMMIT.test(commit) ? `${STAGES_ACTION}@${commit} # @geekmidas/cli ${version}` : `${STAGES_ACTION}@main # pin to a commit SHA: see the action's README`;
7159
7159
  }
7160
7160
  //#endregion
@@ -7758,6 +7758,133 @@ function generateGithubFiles(options) {
7758
7758
  return files;
7759
7759
  }
7760
7760
  //#endregion
7761
+ //#region src/mobile/easWorkflow.ts
7762
+ /**
7763
+ * A stage's EAS workflow (`.eas/workflows/publish-<stage>.yml`): what
7764
+ * `gkm publish` does, run by EAS itself — so shipping the app needs no CI
7765
+ * of the project's own, no runner and no token in GitHub.
7766
+ *
7767
+ * Per platform: the native code's fingerprint, read with the stage's EAS
7768
+ * environment; a finished store build of the stage's profile with that
7769
+ * fingerprint; then an update on the stage's channel when there is one, or
7770
+ * a store build, submitted with the stage's submit profile, when there is
7771
+ * not. iOS is submitted once `submit.<stage>.ios.ascAppId` is set — until
7772
+ * then it is built and not submitted.
7773
+ *
7774
+ * It runs when the stage is deployed: the protected stage on a release tag
7775
+ * (`v*`), every other deployed stage on a push to `main` — and on demand,
7776
+ * `eas workflow:run .eas/workflows/publish-<stage>.yml`. The values a build
7777
+ * reads are the stage's EAS environment, which `gkm eas:sync` keeps.
7778
+ *
7779
+ * Generated: written by `gkm eas:sync`, and overwritten by the next one.
7780
+ */
7781
+ /** Where a stage's workflow is written, relative to the app. */
7782
+ function easWorkflowPath(stage) {
7783
+ return `.eas/workflows/publish-${stage}.yml`;
7784
+ }
7785
+ /** The stage's EAS workflow, as YAML. */
7786
+ function easWorkflow(stage, options) {
7787
+ const profile = stage.stage;
7788
+ const jobs = { fingerprint: {
7789
+ name: "Fingerprint",
7790
+ type: "fingerprint",
7791
+ environment: stage.environment
7792
+ } };
7793
+ for (const platform of ["android", "ios"]) {
7794
+ const existing = `get_${platform}_build`;
7795
+ const build = `build_${platform}`;
7796
+ const name = platform === "ios" ? "iOS" : "Android";
7797
+ jobs[existing] = {
7798
+ name: `Find an ${name} store build with this native code`,
7799
+ needs: ["fingerprint"],
7800
+ type: "get-build",
7801
+ params: {
7802
+ fingerprint_hash: `\${{ needs.fingerprint.outputs.${platform}_fingerprint_hash }}`,
7803
+ profile,
7804
+ platform,
7805
+ distribution: "store"
7806
+ }
7807
+ };
7808
+ jobs[build] = {
7809
+ name: `Build ${name}`,
7810
+ needs: [existing],
7811
+ if: `\${{ !needs.${existing}.outputs.build_id }}`,
7812
+ type: "build",
7813
+ params: {
7814
+ platform,
7815
+ profile
7816
+ }
7817
+ };
7818
+ if (platform === "android" || options.iosSubmits) jobs[`submit_${platform}`] = {
7819
+ name: `Submit ${name}`,
7820
+ needs: [build],
7821
+ type: "submit",
7822
+ params: {
7823
+ build_id: `\${{ needs.${build}.outputs.build_id }}`,
7824
+ profile
7825
+ }
7826
+ };
7827
+ jobs[`update_${platform}`] = {
7828
+ name: `Update ${name} on '${stage.channel}'`,
7829
+ needs: [existing],
7830
+ if: `\${{ needs.${existing}.outputs.build_id }}`,
7831
+ type: "update",
7832
+ environment: stage.environment,
7833
+ params: {
7834
+ platform,
7835
+ channel: stage.channel
7836
+ }
7837
+ };
7838
+ }
7839
+ return `${[
7840
+ `# Generated by \`gkm eas:sync --stage ${stage.stage}\`: run it again rather than`,
7841
+ "# editing this file. An update when a store build has this native code,",
7842
+ `# a store build submitted to the stores when none does. Run by hand:`,
7843
+ `# eas workflow:run ${easWorkflowPath(stage.stage)}`,
7844
+ ""
7845
+ ].join("\n")}${stringify({
7846
+ name: `Publish to ${stage.stage}`,
7847
+ on: options.release ? { push: { tags: ["v*"] } } : { push: { branches: ["main"] } },
7848
+ jobs
7849
+ }, { lineWidth: 0 })}`;
7850
+ }
7851
+ //#endregion
7852
+ //#region src/mobile/stage.ts
7853
+ /** A `MobileApp`'s `stages` names a stage the project does not deploy. */
7854
+ var MobileAppStageUndeclared = class extends GkmError {
7855
+ app;
7856
+ stage;
7857
+ deployed;
7858
+ constructor(app, stage, deployed) {
7859
+ super(`'${app}' says how the stage '${stage}' ships it, and '${stage}' is not a deployed stage (gkm.config.ts deploys ${deployed.join(", ") || "nothing"}). Rename it in the MobileApp's stages, or add it to stages.deployed.`);
7860
+ this.app = app;
7861
+ this.stage = stage;
7862
+ this.deployed = deployed;
7863
+ this.name = "MobileAppStageUndeclared";
7864
+ }
7865
+ };
7866
+ /**
7867
+ * `stage`'s way of shipping `app`.
7868
+ *
7869
+ * @throws {MobileAppStageUndeclared} when the app's `stages` names a stage
7870
+ * the workspace does not deploy
7871
+ */
7872
+ function mobileStage(workspace, app, stage) {
7873
+ const { deployed } = workspace.stages;
7874
+ for (const named of Object.keys(app.stages ?? {})) if (!deployed.includes(named)) throw new MobileAppStageUndeclared(app.id, named, deployed);
7875
+ const users = workspace.stages.protected?.includes(stage) ?? false;
7876
+ const given = app.stages?.[stage];
7877
+ return {
7878
+ stage,
7879
+ environment: given?.environment ?? (users ? "production" : "preview"),
7880
+ channel: stage,
7881
+ android: {
7882
+ track: given?.android?.track ?? (users ? "production" : "internal"),
7883
+ releaseStatus: given?.android?.releaseStatus ?? "draft"
7884
+ }
7885
+ };
7886
+ }
7887
+ //#endregion
7761
7888
  //#region src/init/generators/mobile-expo.ts
7762
7889
  /**
7763
7890
  * The fullstack template's mobile app, when it has one (`mobileApp`).
@@ -7897,6 +8024,14 @@ export default function expoConfig({ config: base }: ConfigContext): ExpoConfig
7897
8024
  };
7898
8025
  }
7899
8026
  `;
8027
+ const mobile = {
8028
+ kind: "mobile-app",
8029
+ id: "App",
8030
+ variant: "expo",
8031
+ app: { path: "apps/app" },
8032
+ dependencies: []
8033
+ };
8034
+ const stages = options.stages.deployed.map((stage) => mobileStage({ stages: options.stages }, mobile, stage));
7900
8035
  const easJson = {
7901
8036
  cli: {
7902
8037
  version: ">= 10.2.1",
@@ -7908,25 +8043,16 @@ export default function expoConfig({ config: base }: ConfigContext): ExpoConfig
7908
8043
  distribution: "internal",
7909
8044
  environment: "development"
7910
8045
  },
7911
- preview: {
7912
- distribution: "internal",
7913
- environment: "preview",
7914
- env: {
7915
- APP_SCHEME: scheme,
7916
- EXPO_PUBLIC_API_URL: "https://api.example.com",
7917
- EXPO_PUBLIC_AUTH_URL: "https://auth.example.com"
7918
- }
7919
- },
7920
- production: {
8046
+ ...Object.fromEntries(stages.map((stage) => [stage.stage, {
7921
8047
  autoIncrement: true,
7922
- environment: "production",
7923
- env: {
7924
- APP_SCHEME: scheme,
7925
- EXPO_PUBLIC_API_URL: "https://api.example.com",
7926
- EXPO_PUBLIC_AUTH_URL: "https://auth.example.com"
7927
- }
7928
- }
7929
- }
8048
+ environment: stage.environment,
8049
+ channel: stage.channel
8050
+ }]))
8051
+ },
8052
+ submit: Object.fromEntries(stages.map((stage) => [stage.stage, { android: {
8053
+ track: stage.android.track,
8054
+ releaseStatus: stage.android.releaseStatus
8055
+ } }]))
7930
8056
  };
7931
8057
  const babelConfig = `module.exports = function (api) {
7932
8058
  api.cache(true);
@@ -8641,6 +8767,35 @@ export default function SigningInScreen() {
8641
8767
  </SafeAreaView>
8642
8768
  );
8643
8769
  }
8770
+ `;
8771
+ const appConstructTs = `import { MobileApp } from '@geekmidas/constructs/mobile-app';
8772
+ import { api } from './api.ts';
8773
+ import { auth } from './auth.ts';
8774
+ import { email } from './email.ts';
8775
+
8776
+ /**
8777
+ * The mobile app — a construct like a site, which is what makes it an app.
8778
+ *
8779
+ * \`.dependsOn()\` is the single fact behind what a mobile app otherwise has
8780
+ * written down by hand: its API and auth URLs, its URL scheme, the scheme in
8781
+ * the auth server's trusted origins, Better Auth's Expo plugin, sign-in links
8782
+ * a phone can open — and, on a local stage, the mailer's inbox, so a link sent
8783
+ * in development is read on the device.
8784
+ */
8785
+ export const app = new MobileApp('App', { path: 'apps/app' }).dependsOn([
8786
+ api,
8787
+ auth,
8788
+ email,
8789
+ ]);
8790
+ `;
8791
+ const gitignore = `node_modules/
8792
+ .expo/
8793
+ dist/
8794
+ *.log
8795
+ .env*.local
8796
+ ios/
8797
+ android/
8798
+ .eas/
8644
8799
  `;
8645
8800
  return [
8646
8801
  {
@@ -8655,6 +8810,13 @@ export default function SigningInScreen() {
8655
8810
  path: "apps/app/eas.json",
8656
8811
  content: `${JSON.stringify(easJson, null, 2)}\n`
8657
8812
  },
8813
+ ...stages.map((stage) => ({
8814
+ path: `apps/app/${easWorkflowPath(stage.stage)}`,
8815
+ content: easWorkflow(stage, {
8816
+ release: options.stages.protected?.includes(stage.stage) ?? false,
8817
+ iosSubmits: false
8818
+ })
8819
+ })),
8658
8820
  {
8659
8821
  path: "apps/app/babel.config.js",
8660
8822
  content: babelConfig
@@ -8745,38 +8907,11 @@ export default function SigningInScreen() {
8745
8907
  },
8746
8908
  {
8747
8909
  path: "apps/app/.gitignore",
8748
- content: `node_modules/
8749
- .expo/
8750
- dist/
8751
- *.log
8752
- .env*.local
8753
- ios/
8754
- android/
8755
- .eas/
8756
- `
8910
+ content: gitignore
8757
8911
  },
8758
8912
  {
8759
8913
  path: "constructs/app.ts",
8760
- content: `import { MobileApp } from '@geekmidas/constructs/mobile-app';
8761
- import { api } from './api.ts';
8762
- import { auth } from './auth.ts';
8763
- import { email } from './email.ts';
8764
-
8765
- /**
8766
- * The mobile app — a construct like a site, which is what makes it an app.
8767
- *
8768
- * \`.dependsOn()\` is the single fact behind what a mobile app otherwise has
8769
- * written down by hand: its API and auth URLs, its URL scheme, the scheme in
8770
- * the auth server's trusted origins, Better Auth's Expo plugin, sign-in links
8771
- * a phone can open — and, on a local stage, the mailer's inbox, so a link sent
8772
- * in development is read on the device.
8773
- */
8774
- export const app = new MobileApp('App', { path: 'apps/app' }).dependsOn([
8775
- api,
8776
- auth,
8777
- email,
8778
- ]);
8779
- `
8914
+ content: appConstructTs
8780
8915
  }
8781
8916
  ];
8782
8917
  }
@@ -15854,7 +15989,7 @@ function testDatabases(reconciled) {
15854
15989
  * starts without the reference data the app needs.
15855
15990
  */
15856
15991
  async function migrateTestStage(workspace, env) {
15857
- const { migrateAndSeed } = await import("./migrate-DCXwHcWX.mjs");
15992
+ const { migrateAndSeed } = await import("./migrate-xHYaeBkd.mjs");
15858
15993
  const { discover } = await import("./discover-Ca8U75dl.mjs").then((n) => n.a);
15859
15994
  const sources = {};
15860
15995
  const manifest = await discover({
@@ -16274,6 +16409,42 @@ program.command("exec").description("Run a command with secrets injected into Cr
16274
16409
  exitWithError(error);
16275
16410
  }
16276
16411
  });
16412
+ program.command("eas:sync").description("Set up a mobile app's EAS project for a deployed stage: its eas.json profiles, and its public values in the stage's EAS environment").requiredOption("--stage <stage>", "A deployed compose stage").option("--app <app>", "The mobile app (default: the one here, or the only one)").option("--profile <profile>", "AWS profile for the stage's account").option("--dry-run", "Say what would be written, and write nothing").action(async (options) => {
16413
+ try {
16414
+ const globalOptions = program.opts();
16415
+ if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16416
+ const { easSync } = await import("./eas-DEpwISrQ.mjs");
16417
+ await easSync(options);
16418
+ } catch (error) {
16419
+ exitWithError(error);
16420
+ }
16421
+ });
16422
+ program.command("publish").description("Ship a mobile app for a deployed stage: sync its EAS project, then an update when a store build has its native code, a store build submitted to the stores when none does").requiredOption("--stage <stage>", "A deployed compose stage").option("--app <app>", "The mobile app (default: the one here, or the only one)").option("--platform <platform>", "ios, android or all", "all").option("--build", "A store build, whatever the fingerprint says").option("--update", "An update, whatever the fingerprint says").option("--wait", "Wait for a build to finish, and submit, on EAS").option("--message <message>", "An update's message (default: the commit's subject)").option("--profile <profile>", "AWS profile for the stage's account").option("--dry-run", "Say what would be released, and release nothing").action(async (options) => {
16423
+ try {
16424
+ const globalOptions = program.opts();
16425
+ if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16426
+ const { publish, PublishModeConflict } = await import("./publish-CSctCNf4.mjs");
16427
+ if (options.build && options.update) throw new PublishModeConflict();
16428
+ const { build, update, ...rest } = options;
16429
+ await publish({
16430
+ ...rest,
16431
+ ...build ? { mode: "build" } : {},
16432
+ ...update ? { mode: "update" } : {}
16433
+ });
16434
+ } catch (error) {
16435
+ exitWithError(error);
16436
+ }
16437
+ });
16438
+ program.command("deploy:google-play").description("Let EAS Submit publish a mobile app to Google Play: a service account with a grant on the app alone, its key in EAS, each stage's track in eas.json, and the store listing from store/play/").option("--developer <id>", "The Play developer account (the number in Play Console's address)").option("--app <app>", "The mobile app (default: the one here, or the only one)").option("--project <project>", "The Google Cloud project (default: <workspace>-play, created when absent)").option("--stage <stage>", "The stage whose values evaluate the app's Expo config (default: the protected one)").option("--profile <profile>", "AWS profile for that stage's account").action(async (options) => {
16439
+ try {
16440
+ const globalOptions = program.opts();
16441
+ if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16442
+ const { deployGooglePlay } = await import("./googlePlay-BYZ-J5sC.mjs");
16443
+ await deployGooglePlay(options);
16444
+ } catch (error) {
16445
+ exitWithError(error);
16446
+ }
16447
+ });
16277
16448
  program.command("test").description("Run tests with secrets loaded from environment").option("--stage <stage>", "Stage to load secrets from (default: stages.local)").option("--run", "Run tests once without watch mode").option("--watch", "Enable watch mode").option("--coverage", "Generate coverage report").option("--ui", "Open Vitest UI").option("--auto-setup", "Generate a fresh stage (secrets + key) from the workspace config when none exists (for CI; also via GKM_AUTO_SETUP)").option("--prepare", "Write the test manifest and #test harness, then stop — for a typecheck that runs before the suite").option("--setup", "Reconcile, migrate and seed the test stage and write the harness, then stop — what @geekmidas/cli/vitest runs").option("--teardown", "Drop the test stage's databases the last setup created, then stop — what @geekmidas/cli/vitest runs when the suite ends").argument("[pattern]", "Pattern to filter tests").action(async (pattern, options) => {
16278
16449
  try {
16279
16450
  const globalOptions = program.opts();
@@ -16290,7 +16461,7 @@ program.command("migrate").description("Apply each database construct's migratio
16290
16461
  try {
16291
16462
  const globalOptions = program.opts();
16292
16463
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16293
- const { migrateCommand } = await import("./migrate-DCXwHcWX.mjs");
16464
+ const { migrateCommand } = await import("./migrate-xHYaeBkd.mjs");
16294
16465
  await migrateCommand({
16295
16466
  ...options,
16296
16467
  ...construct ? { construct } : {}
@@ -16303,7 +16474,7 @@ program.command("seed").description("Migrate, then run each database construct's
16303
16474
  try {
16304
16475
  const globalOptions = program.opts();
16305
16476
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16306
- const { seedCommand } = await import("./migrate-DCXwHcWX.mjs");
16477
+ const { seedCommand } = await import("./migrate-xHYaeBkd.mjs");
16307
16478
  await seedCommand({
16308
16479
  ...options,
16309
16480
  ...construct ? { construct } : {}
@@ -16316,7 +16487,7 @@ program.command("migration").description("Write a construct's next migration: an
16316
16487
  try {
16317
16488
  const globalOptions = program.opts();
16318
16489
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16319
- const { migrationCommand } = await import("./migrate-DCXwHcWX.mjs");
16490
+ const { migrationCommand } = await import("./migrate-xHYaeBkd.mjs");
16320
16491
  await migrationCommand({
16321
16492
  construct,
16322
16493
  ...name ? { name } : {}
@@ -16416,7 +16587,7 @@ program.command("secrets:add").description("Build the keys a stage must be given
16416
16587
  try {
16417
16588
  const globalOptions = program.opts();
16418
16589
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16419
- const { secretsAddCommand } = await import("./add-snhdVmR-.mjs");
16590
+ const { secretsAddCommand } = await import("./add-DJE7zqJ4.mjs");
16420
16591
  await secretsAddCommand(options);
16421
16592
  } catch (error) {
16422
16593
  exitWithError(error);
@@ -16426,7 +16597,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
16426
16597
  try {
16427
16598
  const globalOptions = program.opts();
16428
16599
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16429
- const { encryptionRotateCommand } = await import("./encryption-D5pDJyp2.mjs");
16600
+ const { encryptionRotateCommand } = await import("./encryption-DJv_jEXi.mjs");
16430
16601
  await encryptionRotateCommand(construct, options);
16431
16602
  } catch (error) {
16432
16603
  exitWithError(error);
@@ -16436,7 +16607,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
16436
16607
  try {
16437
16608
  const globalOptions = program.opts();
16438
16609
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16439
- const { encryptionRetireCommand } = await import("./encryption-D5pDJyp2.mjs");
16610
+ const { encryptionRetireCommand } = await import("./encryption-DJv_jEXi.mjs");
16440
16611
  await encryptionRetireCommand(construct, key, options);
16441
16612
  } catch (error) {
16442
16613
  exitWithError(error);
@@ -16475,7 +16646,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16475
16646
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16476
16647
  const { loadWorkspaceConfig } = await import("./config.mjs");
16477
16648
  const { reconcileMissingSecrets } = await import("./reconcile--I7V4Klj.mjs");
16478
- const { secretsStoreFor } = await import("./seeds-BjcO4DDa.mjs").then((n) => n.Rt);
16649
+ const { secretsStoreFor } = await import("./seeds-CIk0l4SC.mjs").then((n) => n.Rt);
16479
16650
  const { workspace } = await loadWorkspaceConfig();
16480
16651
  const stage = options.stage ?? workspace.stages.local;
16481
16652
  const store = await secretsStoreFor(workspace, stage);
@@ -16484,7 +16655,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
16484
16655
  console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
16485
16656
  process.exit(1);
16486
16657
  }
16487
- const { derivedContainers } = await import("./seeds-BjcO4DDa.mjs").then((n) => n.mt);
16658
+ const { derivedContainers } = await import("./seeds-CIk0l4SC.mjs").then((n) => n.mt);
16488
16659
  const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
16489
16660
  if (!result) {
16490
16661
  console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
@@ -16501,14 +16672,14 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
16501
16672
  try {
16502
16673
  const globalOptions = program.opts();
16503
16674
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16504
- const { secretsMigrateCommand } = await import("./migrate-BZ0GnSZQ.mjs");
16675
+ const { secretsMigrateCommand } = await import("./migrate-CQUGbptv.mjs");
16505
16676
  await secretsMigrateCommand(options);
16506
16677
  } catch (error) {
16507
16678
  exitWithError(error);
16508
16679
  }
16509
16680
  });
16510
16681
  program.command("deploy").description("Deploy a stage through its target").option("--target <name>", "Deploy target: dokploy, compose, sst, or one named in deploy.targets (default: deploy.default)").option("--provider <provider>", "[DEPRECATED] Use --target instead").requiredOption("--stage <stage>", "Deployment stage (e.g., production, staging)").option("--tag <tag>", "Image tag (default: stage-timestamp; compose: the commit). Compose pulls a given tag").option("--skip-push", "Skip pushing image to registry").option("--skip-build", "Skip build step (use existing build)").option("--json", "Write events as JSON lines instead of progress; never prompts").option("--dry-run", "Show what would be created or reused; change, build and push nothing").option("--atomic", "If the release fails, roll back every app it released, not only the failed ones").option("--allow-dev-services", "Server targets: run the dev service (MinIO, Mailpit) for every bucket and mail the stage doesn't account for. Not production-grade").option("--skip-dns", "Compose: neither write the public hosts' DNS records nor check they point at GKM_SERVER_IPV4 (a CDN or proxy in front, or records written elsewhere)").option("--rotate-keys", "Deployed stage: each provider issues its runtime keys a successor (the old one is deleted by the next deploy)").option("--retire-old-keys", "Deployed stage: delete a rotated-out key now instead of on the next deploy").action(async (options) => {
16511
- const { deployCli } = await import("./cli-BzrDSNSg.mjs");
16682
+ const { deployCli } = await import("./cli-DDY3jfTt.mjs");
16512
16683
  const globalOptions = program.opts();
16513
16684
  const code = await deployCli({
16514
16685
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -16528,8 +16699,8 @@ program.command("deploy").description("Deploy a stage through its target").optio
16528
16699
  });
16529
16700
  program.command("deploy:rollback").description("Put a stage's app back on its previous release (Dokploy): one app with --app, every app with --atomic").requiredOption("--stage <stage>", "A deployed stage").option("--app <app>", "The app to roll back").option("--atomic", "Roll back every app that has an earlier release").action(async (options) => {
16530
16701
  try {
16531
- const { rollbackStage } = await import("./rollback-CDs_XNb0.mjs").then((n) => n.a);
16532
- const { terminalCredentials } = await import("./terminal-CvRLxz6g.mjs");
16702
+ const { rollbackStage } = await import("./rollback-BQgEdr_p.mjs").then((n) => n.a);
16703
+ const { terminalCredentials } = await import("./terminal-CybB-cjk.mjs");
16533
16704
  const globalOptions = program.opts();
16534
16705
  await rollbackStage({
16535
16706
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -16562,7 +16733,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
16562
16733
  try {
16563
16734
  const globalOptions = program.opts();
16564
16735
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16565
- const { deployGithubCommand } = await import("./github-E-ZxqFPq.mjs");
16736
+ const { deployGithubCommand } = await import("./github-D2eABlxM.mjs");
16566
16737
  await deployGithubCommand(options);
16567
16738
  } catch (error) {
16568
16739
  exitWithError(error);
@@ -16741,6 +16912,6 @@ try {
16741
16912
  }
16742
16913
  program.parse();
16743
16914
  //#endregion
16744
- export { validateDokployToken as a, formatError as i, slug as n, canPrompt as o, stamp as r, prompt as s, generateFullstackCustomSecrets as t };
16915
+ export { slug as a, validateDokployToken as c, easWorkflowPath as i, canPrompt as l, mobileStage as n, stamp as o, easWorkflow as r, formatError as s, generateFullstackCustomSecrets as t, prompt as u };
16745
16916
 
16746
16917
  //# sourceMappingURL=index.mjs.map