@geekmidas/cli 10.0.0-alpha.111 → 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 (27) hide show
  1. package/dist/{cli-Br5ApIgR.mjs → cli-DDY3jfTt.mjs} +3 -3
  2. package/dist/{cli-Br5ApIgR.mjs.map → cli-DDY3jfTt.mjs.map} +1 -1
  3. package/dist/{eas-BkLA60P2.cjs → eas-Cne743nQ.cjs} +21 -3
  4. package/dist/eas-Cne743nQ.cjs.map +1 -0
  5. package/dist/{eas-6ezdJtry.mjs → eas-DEpwISrQ.mjs} +25 -7
  6. package/dist/eas-DEpwISrQ.mjs.map +1 -0
  7. package/dist/{googlePlay-DNgybe5t.cjs → googlePlay-B6uiHi65.cjs} +2 -2
  8. package/dist/{googlePlay-DNgybe5t.cjs.map → googlePlay-B6uiHi65.cjs.map} +1 -1
  9. package/dist/{googlePlay-DY9vZQ1p.mjs → googlePlay-BYZ-J5sC.mjs} +4 -4
  10. package/dist/{googlePlay-DY9vZQ1p.mjs.map → googlePlay-BYZ-J5sC.mjs.map} +1 -1
  11. package/dist/index.cjs +155 -73
  12. package/dist/index.cjs.map +1 -1
  13. package/dist/index.mjs +164 -84
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/{migrate-B9GswIAr.mjs → migrate-xHYaeBkd.mjs} +2 -2
  16. package/dist/{migrate-B9GswIAr.mjs.map → migrate-xHYaeBkd.mjs.map} +1 -1
  17. package/dist/{publish-B-EIjfQ0.mjs → publish-CSctCNf4.mjs} +2 -2
  18. package/dist/{publish-B-EIjfQ0.mjs.map → publish-CSctCNf4.mjs.map} +1 -1
  19. package/dist/{publish-CPgSbtcs.cjs → publish-SDG1WfYn.cjs} +2 -2
  20. package/dist/{publish-CPgSbtcs.cjs.map → publish-SDG1WfYn.cjs.map} +1 -1
  21. package/dist/{stage-DjxR_7C0.mjs → stage-ClKTHQoM.mjs} +2 -2
  22. package/dist/{stage-DjxR_7C0.mjs.map → stage-ClKTHQoM.mjs.map} +1 -1
  23. package/dist/{terminal-mXM-Lqc6.mjs → terminal-CybB-cjk.mjs} +2 -2
  24. package/dist/{terminal-mXM-Lqc6.mjs.map → terminal-CybB-cjk.mjs.map} +1 -1
  25. package/package.json +15 -15
  26. package/dist/eas-6ezdJtry.mjs.map +0 -1
  27. package/dist/eas-BkLA60P2.cjs.map +0 -1
package/dist/index.mjs CHANGED
@@ -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.111";
54
+ var version = "10.0.0-alpha.112";
55
55
  //#endregion
56
56
  //#region src/prompt.ts
57
57
  /**
@@ -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-DjxR_7C0.mjs").then((n) => n.n);
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-B9GswIAr.mjs");
2750
+ const { prepareDevDatabases } = await import("./migrate-xHYaeBkd.mjs");
2751
2751
  await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
2752
- } else await import("./migrate-B9GswIAr.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 = {};
@@ -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.111",
5947
- "@geekmidas/auth": "~10.0.0-alpha.111",
5948
- "@geekmidas/cache": "~10.0.0-alpha.111",
5949
- "@geekmidas/client": "~10.0.0-alpha.111",
5950
- "@geekmidas/cloud": "~10.0.0-alpha.111",
5951
- "@geekmidas/constructs": "~10.0.0-alpha.111",
5952
- "@geekmidas/db": "~10.0.0-alpha.111",
5953
- "@geekmidas/emailkit": "~10.0.0-alpha.111",
5954
- "@geekmidas/envkit": "~10.0.0-alpha.111",
5955
- "@geekmidas/errors": "~10.0.0-alpha.111",
5956
- "@geekmidas/events": "~10.0.0-alpha.111",
5957
- "@geekmidas/logger": "~10.0.0-alpha.111",
5958
- "@geekmidas/manifest": "~10.0.0-alpha.111",
5959
- "@geekmidas/rate-limit": "~10.0.0-alpha.111",
5960
- "@geekmidas/schema": "~10.0.0-alpha.111",
5961
- "@geekmidas/services": "~10.0.0-alpha.111",
5962
- "@geekmidas/storage": "~10.0.0-alpha.111",
5963
- "@geekmidas/telescope": "~10.0.0-alpha.111",
5964
- "@geekmidas/testkit": "~10.0.0-alpha.111",
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 = "8a63c47fd347367a03f2dfe1c3ea031556ede424", 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
@@ -7653,26 +7653,6 @@ ${registryLogin(registry)}
7653
7653
  SHA: \${{ steps.commit.outputs.sha }}
7654
7654
  GODADDY_API_TOKEN: \${{ secrets.GODADDY_API_TOKEN }}
7655
7655
  HOSTINGER_API_TOKEN: \${{ secrets.HOSTINGER_API_TOKEN }}
7656
- ${options.mobileApp ? publishMobile(pm.exec) : ""}`;
7657
- }
7658
- /**
7659
- * The phone app, once its stage's servers run this release: its values
7660
- * synced to the stage's EAS environment, then an update on the stage's
7661
- * channel when a store build has its native code, or a store build
7662
- * submitted to the stores when none does (\`gkm publish\`). The build runs
7663
- * on EAS; this step only starts it.
7664
- */
7665
- function publishMobile(exec) {
7666
- return `
7667
- # The phone app, after its servers: an update when a store build has
7668
- # this native code, a store build submitted to the stores when none
7669
- # does. EXPO_TOKEN is a secret on the stage's environment (an EAS
7670
- # access token); the build runs on EAS, not here.
7671
- - name: Publish the app
7672
- run: ${exec} gkm publish --stage "$STAGE"
7673
- env:
7674
- STAGE: \${{ matrix.stage }}
7675
- EXPO_TOKEN: \${{ secrets.EXPO_TOKEN }}
7676
7656
  `;
7677
7657
  }
7678
7658
  /**
@@ -7778,6 +7758,97 @@ function generateGithubFiles(options) {
7778
7758
  return files;
7779
7759
  }
7780
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
7781
7852
  //#region src/mobile/stage.ts
7782
7853
  /** A `MobileApp`'s `stages` names a stage the project does not deploy. */
7783
7854
  var MobileAppStageUndeclared = class extends GkmError {
@@ -8696,6 +8767,35 @@ export default function SigningInScreen() {
8696
8767
  </SafeAreaView>
8697
8768
  );
8698
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/
8699
8799
  `;
8700
8800
  return [
8701
8801
  {
@@ -8710,6 +8810,13 @@ export default function SigningInScreen() {
8710
8810
  path: "apps/app/eas.json",
8711
8811
  content: `${JSON.stringify(easJson, null, 2)}\n`
8712
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
+ })),
8713
8820
  {
8714
8821
  path: "apps/app/babel.config.js",
8715
8822
  content: babelConfig
@@ -8800,38 +8907,11 @@ export default function SigningInScreen() {
8800
8907
  },
8801
8908
  {
8802
8909
  path: "apps/app/.gitignore",
8803
- content: `node_modules/
8804
- .expo/
8805
- dist/
8806
- *.log
8807
- .env*.local
8808
- ios/
8809
- android/
8810
- .eas/
8811
- `
8910
+ content: gitignore
8812
8911
  },
8813
8912
  {
8814
8913
  path: "constructs/app.ts",
8815
- content: `import { MobileApp } from '@geekmidas/constructs/mobile-app';
8816
- import { api } from './api.ts';
8817
- import { auth } from './auth.ts';
8818
- import { email } from './email.ts';
8819
-
8820
- /**
8821
- * The mobile app — a construct like a site, which is what makes it an app.
8822
- *
8823
- * \`.dependsOn()\` is the single fact behind what a mobile app otherwise has
8824
- * written down by hand: its API and auth URLs, its URL scheme, the scheme in
8825
- * the auth server's trusted origins, Better Auth's Expo plugin, sign-in links
8826
- * a phone can open — and, on a local stage, the mailer's inbox, so a link sent
8827
- * in development is read on the device.
8828
- */
8829
- export const app = new MobileApp('App', { path: 'apps/app' }).dependsOn([
8830
- api,
8831
- auth,
8832
- email,
8833
- ]);
8834
- `
8914
+ content: appConstructTs
8835
8915
  }
8836
8916
  ];
8837
8917
  }
@@ -15909,7 +15989,7 @@ function testDatabases(reconciled) {
15909
15989
  * starts without the reference data the app needs.
15910
15990
  */
15911
15991
  async function migrateTestStage(workspace, env) {
15912
- const { migrateAndSeed } = await import("./migrate-B9GswIAr.mjs");
15992
+ const { migrateAndSeed } = await import("./migrate-xHYaeBkd.mjs");
15913
15993
  const { discover } = await import("./discover-Ca8U75dl.mjs").then((n) => n.a);
15914
15994
  const sources = {};
15915
15995
  const manifest = await discover({
@@ -16333,7 +16413,7 @@ program.command("eas:sync").description("Set up a mobile app's EAS project for a
16333
16413
  try {
16334
16414
  const globalOptions = program.opts();
16335
16415
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16336
- const { easSync } = await import("./eas-6ezdJtry.mjs");
16416
+ const { easSync } = await import("./eas-DEpwISrQ.mjs");
16337
16417
  await easSync(options);
16338
16418
  } catch (error) {
16339
16419
  exitWithError(error);
@@ -16343,7 +16423,7 @@ program.command("publish").description("Ship a mobile app for a deployed stage:
16343
16423
  try {
16344
16424
  const globalOptions = program.opts();
16345
16425
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16346
- const { publish, PublishModeConflict } = await import("./publish-B-EIjfQ0.mjs");
16426
+ const { publish, PublishModeConflict } = await import("./publish-CSctCNf4.mjs");
16347
16427
  if (options.build && options.update) throw new PublishModeConflict();
16348
16428
  const { build, update, ...rest } = options;
16349
16429
  await publish({
@@ -16359,7 +16439,7 @@ program.command("deploy:google-play").description("Let EAS Submit publish a mobi
16359
16439
  try {
16360
16440
  const globalOptions = program.opts();
16361
16441
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16362
- const { deployGooglePlay } = await import("./googlePlay-DY9vZQ1p.mjs");
16442
+ const { deployGooglePlay } = await import("./googlePlay-BYZ-J5sC.mjs");
16363
16443
  await deployGooglePlay(options);
16364
16444
  } catch (error) {
16365
16445
  exitWithError(error);
@@ -16381,7 +16461,7 @@ program.command("migrate").description("Apply each database construct's migratio
16381
16461
  try {
16382
16462
  const globalOptions = program.opts();
16383
16463
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16384
- const { migrateCommand } = await import("./migrate-B9GswIAr.mjs");
16464
+ const { migrateCommand } = await import("./migrate-xHYaeBkd.mjs");
16385
16465
  await migrateCommand({
16386
16466
  ...options,
16387
16467
  ...construct ? { construct } : {}
@@ -16394,7 +16474,7 @@ program.command("seed").description("Migrate, then run each database construct's
16394
16474
  try {
16395
16475
  const globalOptions = program.opts();
16396
16476
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16397
- const { seedCommand } = await import("./migrate-B9GswIAr.mjs");
16477
+ const { seedCommand } = await import("./migrate-xHYaeBkd.mjs");
16398
16478
  await seedCommand({
16399
16479
  ...options,
16400
16480
  ...construct ? { construct } : {}
@@ -16407,7 +16487,7 @@ program.command("migration").description("Write a construct's next migration: an
16407
16487
  try {
16408
16488
  const globalOptions = program.opts();
16409
16489
  if (globalOptions.cwd) process.chdir(globalOptions.cwd);
16410
- const { migrationCommand } = await import("./migrate-B9GswIAr.mjs");
16490
+ const { migrationCommand } = await import("./migrate-xHYaeBkd.mjs");
16411
16491
  await migrationCommand({
16412
16492
  construct,
16413
16493
  ...name ? { name } : {}
@@ -16599,7 +16679,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
16599
16679
  }
16600
16680
  });
16601
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) => {
16602
- const { deployCli } = await import("./cli-Br5ApIgR.mjs");
16682
+ const { deployCli } = await import("./cli-DDY3jfTt.mjs");
16603
16683
  const globalOptions = program.opts();
16604
16684
  const code = await deployCli({
16605
16685
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -16620,7 +16700,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
16620
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) => {
16621
16701
  try {
16622
16702
  const { rollbackStage } = await import("./rollback-BQgEdr_p.mjs").then((n) => n.a);
16623
- const { terminalCredentials } = await import("./terminal-mXM-Lqc6.mjs");
16703
+ const { terminalCredentials } = await import("./terminal-CybB-cjk.mjs");
16624
16704
  const globalOptions = program.opts();
16625
16705
  await rollbackStage({
16626
16706
  cwd: resolve(globalOptions.cwd ?? process.cwd()),
@@ -16832,6 +16912,6 @@ try {
16832
16912
  }
16833
16913
  program.parse();
16834
16914
  //#endregion
16835
- export { formatError as a, prompt as c, stamp as i, mobileStage as n, validateDokployToken as o, slug as r, canPrompt 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 };
16836
16916
 
16837
16917
  //# sourceMappingURL=index.mjs.map