@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.
- package/dist/{GoDaddyProvider-CjeOduia.mjs → GoDaddyProvider-CPabc3XW.mjs} +2 -2
- package/dist/{GoDaddyProvider-CjeOduia.mjs.map → GoDaddyProvider-CPabc3XW.mjs.map} +1 -1
- package/dist/{GoDaddyProvider-qNUzTXI7.cjs → GoDaddyProvider-DWrDIXzQ.cjs} +2 -2
- package/dist/{GoDaddyProvider-qNUzTXI7.cjs.map → GoDaddyProvider-DWrDIXzQ.cjs.map} +1 -1
- package/dist/{LegacyStateStore-pgscYsiG.mjs → LegacyStateStore-BdXoAlYY.mjs} +3 -3
- package/dist/{LegacyStateStore-pgscYsiG.mjs.map → LegacyStateStore-BdXoAlYY.mjs.map} +1 -1
- package/dist/{LegacyStateStore-MxiSu7KJ.cjs → LegacyStateStore-fsyPGBWu.cjs} +3 -3
- package/dist/{LegacyStateStore-MxiSu7KJ.cjs.map → LegacyStateStore-fsyPGBWu.cjs.map} +1 -1
- package/dist/{LocalStateStore-Bm8Vmwjb.cjs → LocalStateStore-AtviUBky.cjs} +2 -2
- package/dist/{LocalStateStore-Bm8Vmwjb.cjs.map → LocalStateStore-AtviUBky.cjs.map} +1 -1
- package/dist/{LocalStateStore-BcvyKbAw.mjs → LocalStateStore-BrAX5yy7.mjs} +2 -2
- package/dist/{LocalStateStore-BcvyKbAw.mjs.map → LocalStateStore-BrAX5yy7.mjs.map} +1 -1
- package/dist/{S3StateStore-H2XsAzpJ.mjs → S3StateStore-Cx7njkBz.mjs} +2 -2
- package/dist/{S3StateStore-H2XsAzpJ.mjs.map → S3StateStore-Cx7njkBz.mjs.map} +1 -1
- package/dist/{S3StateStore-DXHSBVsV.cjs → S3StateStore-tn5g80Sx.cjs} +2 -2
- package/dist/{S3StateStore-DXHSBVsV.cjs.map → S3StateStore-tn5g80Sx.cjs.map} +1 -1
- package/dist/{SSMStateStore-BLPSNl-U.cjs → SSMStateStore-CAFde-Fq.cjs} +2 -2
- package/dist/{SSMStateStore-BLPSNl-U.cjs.map → SSMStateStore-CAFde-Fq.cjs.map} +1 -1
- package/dist/{SSMStateStore-CENciQEM.mjs → SSMStateStore-sqZ3oDmn.mjs} +2 -2
- package/dist/{SSMStateStore-CENciQEM.mjs.map → SSMStateStore-sqZ3oDmn.mjs.map} +1 -1
- package/dist/{add-Cdg1kEqN.cjs → add-Cs8yT5iH.cjs} +3 -3
- package/dist/{add-Cdg1kEqN.cjs.map → add-Cs8yT5iH.cjs.map} +1 -1
- package/dist/{add-snhdVmR-.mjs → add-DJE7zqJ4.mjs} +3 -3
- package/dist/{add-snhdVmR-.mjs.map → add-DJE7zqJ4.mjs.map} +1 -1
- package/dist/{bundler-Wd9H4QLJ.mjs → bundler-DrySVbXF.mjs} +5 -5
- package/dist/{bundler-Wd9H4QLJ.mjs.map → bundler-DrySVbXF.mjs.map} +1 -1
- package/dist/{bundler-B4GDxImV.cjs → bundler-NrtItVBp.cjs} +5 -5
- package/dist/{bundler-B4GDxImV.cjs.map → bundler-NrtItVBp.cjs.map} +1 -1
- package/dist/{cli-BZYz55tO.cjs → cli-CHzpFBh-.cjs} +2 -2
- package/dist/{cli-BZYz55tO.cjs.map → cli-CHzpFBh-.cjs.map} +1 -1
- package/dist/{cli-BzrDSNSg.mjs → cli-DDY3jfTt.mjs} +4 -4
- package/dist/{cli-BzrDSNSg.mjs.map → cli-DDY3jfTt.mjs.map} +1 -1
- package/dist/{compose-DN9zySvQ.cjs → compose-ByIbIrzs.cjs} +20 -5
- package/dist/compose-ByIbIrzs.cjs.map +1 -0
- package/dist/{compose-Gsd1Nq7R.mjs → compose-CDC2bCme.mjs} +20 -5
- package/dist/compose-CDC2bCme.mjs.map +1 -0
- package/dist/deploy/public.cjs +6 -6
- package/dist/deploy/public.mjs +6 -6
- package/dist/{deploy-H2S8_mTx.mjs → deploy-DLq9-m6H.mjs} +5 -5
- package/dist/{deploy-H2S8_mTx.mjs.map → deploy-DLq9-m6H.mjs.map} +1 -1
- package/dist/{deploy-CFvq8daZ.cjs → deploy-Dl_NavYE.cjs} +5 -5
- package/dist/{deploy-CFvq8daZ.cjs.map → deploy-Dl_NavYE.cjs.map} +1 -1
- package/dist/{dns-BdETzP10.cjs → dns-C2TGXUF4.cjs} +2 -2
- package/dist/{dns-BdETzP10.cjs.map → dns-C2TGXUF4.cjs.map} +1 -1
- package/dist/{dns-pFMShDqW.mjs → dns-pzftumxg.mjs} +2 -2
- package/dist/{dns-pFMShDqW.mjs.map → dns-pzftumxg.mjs.map} +1 -1
- package/dist/{dokploy-oDJbnvCb.mjs → dokploy-B7-OwY2s.mjs} +2 -2
- package/dist/{dokploy-oDJbnvCb.mjs.map → dokploy-B7-OwY2s.mjs.map} +1 -1
- package/dist/{dokploy-HioAjP7K.cjs → dokploy-OqBh8G4g.cjs} +2 -2
- package/dist/{dokploy-HioAjP7K.cjs.map → dokploy-OqBh8G4g.cjs.map} +1 -1
- package/dist/eas-Cne743nQ.cjs +337 -0
- package/dist/eas-Cne743nQ.cjs.map +1 -0
- package/dist/eas-DEpwISrQ.mjs +334 -0
- package/dist/eas-DEpwISrQ.mjs.map +1 -0
- package/dist/{encryption-D5pDJyp2.mjs → encryption-DJv_jEXi.mjs} +2 -2
- package/dist/{encryption-D5pDJyp2.mjs.map → encryption-DJv_jEXi.mjs.map} +1 -1
- package/dist/{encryption-DVCxD-gV.cjs → encryption-DoVnVU82.cjs} +2 -2
- package/dist/{encryption-DVCxD-gV.cjs.map → encryption-DoVnVU82.cjs.map} +1 -1
- package/dist/{engine-BaJGPzte.cjs → engine-CJhQb50j.cjs} +3 -3
- package/dist/{engine-BaJGPzte.cjs.map → engine-CJhQb50j.cjs.map} +1 -1
- package/dist/{engine-CfAKgr2_.mjs → engine-Db71-OZL.mjs} +3 -3
- package/dist/{engine-CfAKgr2_.mjs.map → engine-Db71-OZL.mjs.map} +1 -1
- package/dist/{github-E-ZxqFPq.mjs → github-D2eABlxM.mjs} +4 -4
- package/dist/{github-E-ZxqFPq.mjs.map → github-D2eABlxM.mjs.map} +1 -1
- package/dist/{github-D902Vwr9.cjs → github-DDOHjdS9.cjs} +4 -4
- package/dist/{github-D902Vwr9.cjs.map → github-DDOHjdS9.cjs.map} +1 -1
- package/dist/googlePlay-B6uiHi65.cjs +931 -0
- package/dist/googlePlay-B6uiHi65.cjs.map +1 -0
- package/dist/googlePlay-BYZ-J5sC.mjs +931 -0
- package/dist/googlePlay-BYZ-J5sC.mjs.map +1 -0
- package/dist/index.cjs +268 -94
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +268 -97
- package/dist/index.mjs.map +1 -1
- package/dist/{migrate-BZ0GnSZQ.mjs → migrate-CQUGbptv.mjs} +2 -2
- package/dist/{migrate-BZ0GnSZQ.mjs.map → migrate-CQUGbptv.mjs.map} +1 -1
- package/dist/{migrate-Df81ew0k.cjs → migrate-GLBZlrlJ.cjs} +2 -2
- package/dist/{migrate-Df81ew0k.cjs.map → migrate-GLBZlrlJ.cjs.map} +1 -1
- package/dist/{migrate-CTqhWtev.cjs → migrate-bDQzFvBN.cjs} +2 -2
- package/dist/{migrate-CTqhWtev.cjs.map → migrate-bDQzFvBN.cjs.map} +1 -1
- package/dist/{migrate-DCXwHcWX.mjs → migrate-xHYaeBkd.mjs} +3 -3
- package/dist/{migrate-DCXwHcWX.mjs.map → migrate-xHYaeBkd.mjs.map} +1 -1
- package/dist/publish-CSctCNf4.mjs +123 -0
- package/dist/publish-CSctCNf4.mjs.map +1 -0
- package/dist/publish-SDG1WfYn.cjs +124 -0
- package/dist/publish-SDG1WfYn.cjs.map +1 -0
- package/dist/{resolve-BMpPd8x3.mjs → resolve-CxDqDmCD.mjs} +3 -3
- package/dist/{resolve-BMpPd8x3.mjs.map → resolve-CxDqDmCD.mjs.map} +1 -1
- package/dist/{resolve-D043YmW9.cjs → resolve-wG49Woex.cjs} +3 -3
- package/dist/{resolve-D043YmW9.cjs.map → resolve-wG49Woex.cjs.map} +1 -1
- package/dist/{rollback-CDs_XNb0.mjs → rollback-BQgEdr_p.mjs} +4 -4
- package/dist/{rollback-CDs_XNb0.mjs.map → rollback-BQgEdr_p.mjs.map} +1 -1
- package/dist/{rollback-CBiYsQ3T.cjs → rollback-Cw-Z0mWn.cjs} +4 -4
- package/dist/{rollback-CBiYsQ3T.cjs.map → rollback-Cw-Z0mWn.cjs.map} +1 -1
- package/dist/{seeds-BjcO4DDa.mjs → seeds-CIk0l4SC.mjs} +13 -10
- package/dist/seeds-CIk0l4SC.mjs.map +1 -0
- package/dist/{seeds-DNqRA1aQ.cjs → seeds-Dk8YkLkM.cjs} +18 -15
- package/dist/seeds-Dk8YkLkM.cjs.map +1 -0
- package/dist/{sniffer-DipSS8r8.cjs → sniffer-2aK7cB2u.cjs} +6 -6
- package/dist/{sniffer-DipSS8r8.cjs.map → sniffer-2aK7cB2u.cjs.map} +1 -1
- package/dist/{sniffer-b0XPmSyT.mjs → sniffer-CABMO-Bh.mjs} +6 -6
- package/dist/{sniffer-b0XPmSyT.mjs.map → sniffer-CABMO-Bh.mjs.map} +1 -1
- package/dist/{stage-DrDmZusd.mjs → stage-ClKTHQoM.mjs} +69 -33
- package/dist/stage-ClKTHQoM.mjs.map +1 -0
- package/dist/{stage-C_y2UovO.cjs → stage-DrCS0vKD.cjs} +79 -32
- package/dist/stage-DrCS0vKD.cjs.map +1 -0
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.mjs +1 -1
- package/dist/{terminal-CvRLxz6g.mjs → terminal-CybB-cjk.mjs} +2 -2
- package/dist/{terminal-CvRLxz6g.mjs.map → terminal-CybB-cjk.mjs.map} +1 -1
- package/package.json +15 -15
- package/dist/compose-DN9zySvQ.cjs.map +0 -1
- package/dist/compose-Gsd1Nq7R.mjs.map +0 -1
- package/dist/seeds-BjcO4DDa.mjs.map +0 -1
- package/dist/seeds-DNqRA1aQ.cjs.map +0 -1
- package/dist/stage-C_y2UovO.cjs.map +0 -1
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
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-
|
|
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-
|
|
2750
|
+
const { prepareDevDatabases } = await import("./migrate-xHYaeBkd.mjs");
|
|
2751
2751
|
await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
|
|
2752
|
-
} else await import("./migrate-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
5947
|
-
"@geekmidas/auth": "~10.0.0-alpha.
|
|
5948
|
-
"@geekmidas/cache": "~10.0.0-alpha.
|
|
5949
|
-
"@geekmidas/client": "~10.0.0-alpha.
|
|
5950
|
-
"@geekmidas/cloud": "~10.0.0-alpha.
|
|
5951
|
-
"@geekmidas/constructs": "~10.0.0-alpha.
|
|
5952
|
-
"@geekmidas/db": "~10.0.0-alpha.
|
|
5953
|
-
"@geekmidas/emailkit": "~10.0.0-alpha.
|
|
5954
|
-
"@geekmidas/envkit": "~10.0.0-alpha.
|
|
5955
|
-
"@geekmidas/errors": "~10.0.0-alpha.
|
|
5956
|
-
"@geekmidas/events": "~10.0.0-alpha.
|
|
5957
|
-
"@geekmidas/logger": "~10.0.0-alpha.
|
|
5958
|
-
"@geekmidas/manifest": "~10.0.0-alpha.
|
|
5959
|
-
"@geekmidas/rate-limit": "~10.0.0-alpha.
|
|
5960
|
-
"@geekmidas/schema": "~10.0.0-alpha.
|
|
5961
|
-
"@geekmidas/services": "~10.0.0-alpha.
|
|
5962
|
-
"@geekmidas/storage": "~10.0.0-alpha.
|
|
5963
|
-
"@geekmidas/telescope": "~10.0.0-alpha.
|
|
5964
|
-
"@geekmidas/testkit": "~10.0.0-alpha.
|
|
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 = "
|
|
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
|
-
|
|
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:
|
|
7923
|
-
|
|
7924
|
-
|
|
7925
|
-
|
|
7926
|
-
|
|
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:
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
16532
|
-
const { terminalCredentials } = await import("./terminal-
|
|
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-
|
|
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 {
|
|
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
|