@geekmidas/cli 10.0.0-alpha.77 → 10.0.0-alpha.79
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/{LegacyStateStore-dyq07_Ir.mjs → LegacyStateStore-Ceq7A_75.mjs} +2 -2
- package/dist/{LegacyStateStore-dyq07_Ir.mjs.map → LegacyStateStore-Ceq7A_75.mjs.map} +1 -1
- package/dist/{LegacyStateStore-DwngfJxr.cjs → LegacyStateStore-Z-EKUGSX.cjs} +2 -2
- package/dist/{LegacyStateStore-DwngfJxr.cjs.map → LegacyStateStore-Z-EKUGSX.cjs.map} +1 -1
- package/dist/{LocalStateStore-B0NCde8Z.cjs → LocalStateStore-Bocb8dmZ.cjs} +2 -2
- package/dist/{LocalStateStore-B0NCde8Z.cjs.map → LocalStateStore-Bocb8dmZ.cjs.map} +1 -1
- package/dist/{LocalStateStore-DLxCCatI.mjs → LocalStateStore-C72bwpG2.mjs} +2 -2
- package/dist/{LocalStateStore-DLxCCatI.mjs.map → LocalStateStore-C72bwpG2.mjs.map} +1 -1
- package/dist/{S3StateStore-BOenb-3o.cjs → S3StateStore-35YfcdL_.cjs} +2 -2
- package/dist/{S3StateStore-BOenb-3o.cjs.map → S3StateStore-35YfcdL_.cjs.map} +1 -1
- package/dist/{S3StateStore-CGK_4hlo.mjs → S3StateStore-C9upSW5o.mjs} +2 -2
- package/dist/{S3StateStore-CGK_4hlo.mjs.map → S3StateStore-C9upSW5o.mjs.map} +1 -1
- package/dist/{SSMStateStore-DYeD__7p.cjs → SSMStateStore-W-Ps22AQ.cjs} +2 -2
- package/dist/{SSMStateStore-DYeD__7p.cjs.map → SSMStateStore-W-Ps22AQ.cjs.map} +1 -1
- package/dist/{SSMStateStore-B_5_RqY-.mjs → SSMStateStore-dOmFO6g1.mjs} +2 -2
- package/dist/{SSMStateStore-B_5_RqY-.mjs.map → SSMStateStore-dOmFO6g1.mjs.map} +1 -1
- package/dist/{add-DCsgtvDk.cjs → add-HF9POevk.cjs} +8 -8
- package/dist/{add-DCsgtvDk.cjs.map → add-HF9POevk.cjs.map} +1 -1
- package/dist/{add-EPQO-_dt.mjs → add-UFiIrlTj.mjs} +3 -3
- package/dist/{add-EPQO-_dt.mjs.map → add-UFiIrlTj.mjs.map} +1 -1
- package/dist/{bundler-DgO_EMVs.mjs → bundler-C45BuRdY.mjs} +5 -5
- package/dist/{bundler-DgO_EMVs.mjs.map → bundler-C45BuRdY.mjs.map} +1 -1
- package/dist/{bundler-5spPyduN.cjs → bundler-RAoSRuvp.cjs} +5 -5
- package/dist/{bundler-5spPyduN.cjs.map → bundler-RAoSRuvp.cjs.map} +1 -1
- package/dist/{cli-ZpFTMbGw.cjs → cli-C3hsEwLK.cjs} +4 -4
- package/dist/{cli-ZpFTMbGw.cjs.map → cli-C3hsEwLK.cjs.map} +1 -1
- package/dist/{cli-B74Ru-V1.mjs → cli-gvc3urUl.mjs} +3 -3
- package/dist/{cli-B74Ru-V1.mjs.map → cli-gvc3urUl.mjs.map} +1 -1
- package/dist/{compose-IUuxRW0J.mjs → compose-C40Wk9m6.mjs} +626 -65
- package/dist/compose-C40Wk9m6.mjs.map +1 -0
- package/dist/{compose-CePlrbUw.cjs → compose-CtUP07r3.cjs} +690 -111
- package/dist/compose-CtUP07r3.cjs.map +1 -0
- package/dist/{config-Ckmoj56i.d.mts → config-L_6NivCp.d.mts} +3 -3
- package/dist/{config-Ckmoj56i.d.mts.map → config-L_6NivCp.d.mts.map} +1 -1
- package/dist/{config-aAeLXH86.d.cts → config-Mr4rcXFC.d.cts} +3 -3
- package/dist/{config-aAeLXH86.d.cts.map → config-Mr4rcXFC.d.cts.map} +1 -1
- package/dist/config.cjs +1 -1
- package/dist/config.d.cts +3 -3
- package/dist/config.d.mts +3 -3
- package/dist/config.mjs +1 -1
- package/dist/{databases-C2p5LGAp.cjs → databases-BY-pEImp.cjs} +185 -7
- package/dist/databases-BY-pEImp.cjs.map +1 -0
- package/dist/{databases-hUHTuwhx.mjs → databases-CzszQV0N.mjs} +153 -5
- package/dist/databases-CzszQV0N.mjs.map +1 -0
- package/dist/deploy/public.cjs +13 -12
- package/dist/deploy/public.d.cts +19 -3
- package/dist/deploy/public.d.cts.map +1 -1
- package/dist/deploy/public.d.mts +19 -3
- package/dist/deploy/public.d.mts.map +1 -1
- package/dist/deploy/public.mjs +7 -7
- package/dist/{deploy-Q6X6RXRG.mjs → deploy-BjsZpUQ3.mjs} +5 -5
- package/dist/{deploy-Q6X6RXRG.mjs.map → deploy-BjsZpUQ3.mjs.map} +1 -1
- package/dist/{deploy-XHXi-_tL.cjs → deploy-DPzauQsm.cjs} +11 -11
- package/dist/{deploy-XHXi-_tL.cjs.map → deploy-DPzauQsm.cjs.map} +1 -1
- package/dist/{dokploy-BtP5XSrS.mjs → dokploy-BoH0DMyS.mjs} +2 -2
- package/dist/{dokploy-BtP5XSrS.mjs.map → dokploy-BoH0DMyS.mjs.map} +1 -1
- package/dist/{dokploy-MSsPBO-t.cjs → dokploy-Cj1EHd4Y.cjs} +2 -2
- package/dist/{dokploy-MSsPBO-t.cjs.map → dokploy-Cj1EHd4Y.cjs.map} +1 -1
- package/dist/{encryption-DY0na43R.cjs → encryption-D2z16vsS.cjs} +6 -6
- package/dist/{encryption-DY0na43R.cjs.map → encryption-D2z16vsS.cjs.map} +1 -1
- package/dist/{encryption-D4Ykywfr.mjs → encryption-MeDrE-rZ.mjs} +3 -3
- package/dist/{encryption-D4Ykywfr.mjs.map → encryption-MeDrE-rZ.mjs.map} +1 -1
- package/dist/{engine-BI2xjCKt.mjs → engine-B-Yq0yQu.mjs} +55 -19
- package/dist/engine-B-Yq0yQu.mjs.map +1 -0
- package/dist/{engine-y53kE_3H.cjs → engine-C3T39eTO.cjs} +120 -84
- package/dist/engine-C3T39eTO.cjs.map +1 -0
- package/dist/{github-Bmb45xUQ.cjs → github-B8dDa8xf.cjs} +7 -7
- package/dist/{github-Bmb45xUQ.cjs.map → github-B8dDa8xf.cjs.map} +1 -1
- package/dist/{github-BBIqk1Jv.mjs → github-Dyrjo0xd.mjs} +3 -3
- package/dist/{github-BBIqk1Jv.mjs.map → github-Dyrjo0xd.mjs.map} +1 -1
- package/dist/{index-CNdSRwar.d.mts → index-C0UmP_lg.d.mts} +2 -2
- package/dist/{index-C7Tma2m1.d.cts.map → index-C0UmP_lg.d.mts.map} +1 -1
- package/dist/{index-C7Tma2m1.d.cts → index-DTEPwLml.d.cts} +2 -2
- package/dist/{index-CNdSRwar.d.mts.map → index-DTEPwLml.d.cts.map} +1 -1
- package/dist/index.cjs +119 -118
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +46 -45
- package/dist/index.mjs.map +1 -1
- package/dist/{migrate-BUBsUiM3.mjs → migrate-A2CLFl9G.mjs} +4 -5
- package/dist/{migrate-BUBsUiM3.mjs.map → migrate-A2CLFl9G.mjs.map} +1 -1
- package/dist/{migrate-sny0NjKe.cjs → migrate-CTqICj1B.cjs} +9 -10
- package/dist/{migrate-sny0NjKe.cjs.map → migrate-CTqICj1B.cjs.map} +1 -1
- package/dist/{migrate-DWVl5PQK.mjs → migrate-DWUbYY5r.mjs} +3 -3
- package/dist/{migrate-DWVl5PQK.mjs.map → migrate-DWUbYY5r.mjs.map} +1 -1
- package/dist/{migrate-31JXUOaG.cjs → migrate-DvIAITiG.cjs} +5 -5
- package/dist/{migrate-31JXUOaG.cjs.map → migrate-DvIAITiG.cjs.map} +1 -1
- package/dist/openapi.cjs +1 -1
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/openapi.mjs +1 -1
- package/dist/reconcile/public.d.cts +1 -1
- package/dist/reconcile/public.d.mts +1 -1
- package/dist/{resolve-BF1ICosS.mjs → resolve-CHwetPdo.mjs} +3 -3
- package/dist/{resolve-BF1ICosS.mjs.map → resolve-CHwetPdo.mjs.map} +1 -1
- package/dist/{resolve-DokLtTUb.cjs → resolve-DOXcAOcn.cjs} +3 -3
- package/dist/{resolve-DokLtTUb.cjs.map → resolve-DOXcAOcn.cjs.map} +1 -1
- package/dist/{rollback-sg0ZhKGG.mjs → rollback-Cq5s3WnD.mjs} +5 -5
- package/dist/{rollback-sg0ZhKGG.mjs.map → rollback-Cq5s3WnD.mjs.map} +1 -1
- package/dist/{rollback-CpOWRR9H.cjs → rollback-DUoOaws3.cjs} +7 -7
- package/dist/{rollback-CpOWRR9H.cjs.map → rollback-DUoOaws3.cjs.map} +1 -1
- package/dist/{runtime-BozOkPtG.d.cts → runtime-D6A-C6zh.d.cts} +2 -2
- package/dist/{runtime-B5bYom9w.d.mts.map → runtime-D6A-C6zh.d.cts.map} +1 -1
- package/dist/{runtime-B5bYom9w.d.mts → runtime-ekxfPNM-.d.mts} +2 -2
- package/dist/{runtime-BozOkPtG.d.cts.map → runtime-ekxfPNM-.d.mts.map} +1 -1
- package/dist/sandbox/migrate-worker.cjs +22 -8
- package/dist/sandbox/migrate-worker.cjs.map +1 -1
- package/dist/sandbox/migrate-worker.mjs +22 -8
- package/dist/sandbox/migrate-worker.mjs.map +1 -1
- package/dist/{stale-DGzpiN5S.mjs → seeds-DiXON7R8.mjs} +64 -6
- package/dist/seeds-DiXON7R8.mjs.map +1 -0
- package/dist/{stale-yu2FkH3G.cjs → seeds-qX13ubmO.cjs} +81 -5
- package/dist/seeds-qX13ubmO.cjs.map +1 -0
- package/dist/{sniffer-Y6GQOCXB.cjs → sniffer-BjG-1mlD.cjs} +6 -6
- package/dist/sniffer-BjG-1mlD.cjs.map +1 -0
- package/dist/{sniffer-DR8AlRCk.mjs → sniffer-ByWtH28i.mjs} +6 -6
- package/dist/sniffer-ByWtH28i.mjs.map +1 -0
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.d.cts +2 -2
- package/dist/target/public.d.mts +2 -2
- package/dist/target/public.mjs +1 -1
- package/dist/{types-ct7pdQRf.d.cts → types-BzCavjGt.d.mts} +70 -3
- package/dist/types-BzCavjGt.d.mts.map +1 -0
- package/dist/{types-B9yWJAis.d.mts → types-DZtj9jeI.d.cts} +71 -2
- package/dist/types-DZtj9jeI.d.cts.map +1 -0
- package/dist/workspace/index.cjs +1 -1
- package/dist/workspace/index.d.cts +2 -2
- package/dist/workspace/index.d.mts +2 -2
- package/dist/workspace/index.mjs +1 -1
- package/dist/{workspace-QUTqYmVy.mjs → workspace-BBdqmkch.mjs} +114 -17
- package/dist/workspace-BBdqmkch.mjs.map +1 -0
- package/dist/{workspace-DOm81oUo.cjs → workspace-Bp8FEkF-.cjs} +130 -15
- package/dist/workspace-Bp8FEkF-.cjs.map +1 -0
- package/package.json +15 -15
- package/dist/compose-CePlrbUw.cjs.map +0 -1
- package/dist/compose-IUuxRW0J.mjs.map +0 -1
- package/dist/databases-C2p5LGAp.cjs.map +0 -1
- package/dist/databases-hUHTuwhx.mjs.map +0 -1
- package/dist/engine-BI2xjCKt.mjs.map +0 -1
- package/dist/engine-y53kE_3H.cjs.map +0 -1
- package/dist/provider-B3Sv_a74.cjs +0 -173
- package/dist/provider-B3Sv_a74.cjs.map +0 -1
- package/dist/provider-D7rQzzzf.mjs +0 -138
- package/dist/provider-D7rQzzzf.mjs.map +0 -1
- package/dist/sniffer-DR8AlRCk.mjs.map +0 -1
- package/dist/sniffer-Y6GQOCXB.cjs.map +0 -1
- package/dist/stale-DGzpiN5S.mjs.map +0 -1
- package/dist/stale-yu2FkH3G.cjs.map +0 -1
- package/dist/types-B9yWJAis.d.mts.map +0 -1
- package/dist/types-ct7pdQRf.d.cts.map +0 -1
- package/dist/workspace-DOm81oUo.cjs.map +0 -1
- package/dist/workspace-QUTqYmVy.mjs.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -5,20 +5,20 @@ const require_run = require("./run-fVZ-rLnc.cjs");
|
|
|
5
5
|
const require_credentials = require("./credentials-BVs7mrtw.cjs");
|
|
6
6
|
const require_discover = require("./discover-D1It5r_h.cjs");
|
|
7
7
|
const require_derive = require("./derive-DAbo49sm.cjs");
|
|
8
|
-
const require_workspace = require("./workspace-
|
|
8
|
+
const require_workspace = require("./workspace-Bp8FEkF-.cjs");
|
|
9
9
|
const require_config = require("./config.cjs");
|
|
10
|
-
const
|
|
10
|
+
const require_seeds = require("./seeds-qX13ubmO.cjs");
|
|
11
11
|
const require_EndpointGenerator = require("./EndpointGenerator-CP6sBvQV.cjs");
|
|
12
12
|
const require_openapi = require("./openapi.cjs");
|
|
13
13
|
const require_SubscriberGenerator = require("./SubscriberGenerator-CajwOa5W.cjs");
|
|
14
14
|
const require_appPorts = require("./appPorts-Cu79hJF6.cjs");
|
|
15
15
|
const require_drivers = require("./drivers-BdvtCKc7.cjs");
|
|
16
16
|
const require_emit = require("./emit-Dmc1nvdS.cjs");
|
|
17
|
-
const require_sniffer = require("./sniffer-
|
|
18
|
-
const require_deploy = require("./deploy-
|
|
19
|
-
const require_compose = require("./compose-
|
|
17
|
+
const require_sniffer = require("./sniffer-BjG-1mlD.cjs");
|
|
18
|
+
const require_deploy = require("./deploy-DPzauQsm.cjs");
|
|
19
|
+
const require_compose = require("./compose-CtUP07r3.cjs");
|
|
20
20
|
const require_credentialSchemas = require("./credentialSchemas-DCR4Wd1W.cjs");
|
|
21
|
-
const require_LocalStateStore = require("./LocalStateStore-
|
|
21
|
+
const require_LocalStateStore = require("./LocalStateStore-Bocb8dmZ.cjs");
|
|
22
22
|
const require_utils = require("./utils-D2Nk1Nv2.cjs");
|
|
23
23
|
const require_ready = require("./ready-BB9xS4S9.cjs");
|
|
24
24
|
let node_path = require("node:path");
|
|
@@ -53,7 +53,7 @@ crypto = require_rolldown_runtime.__toESM(crypto, 1);
|
|
|
53
53
|
let _geekmidas_constructs_functions = require("@geekmidas/constructs/functions");
|
|
54
54
|
let _geekmidas_constructs_topic = require("@geekmidas/constructs/topic");
|
|
55
55
|
//#region package.json
|
|
56
|
-
var version = "10.0.0-alpha.
|
|
56
|
+
var version = "10.0.0-alpha.79";
|
|
57
57
|
//#endregion
|
|
58
58
|
//#region src/prompt.ts
|
|
59
59
|
/**
|
|
@@ -136,7 +136,7 @@ const logger$8 = console;
|
|
|
136
136
|
* Validate Dokploy token by making a test API call
|
|
137
137
|
*/
|
|
138
138
|
async function validateDokployToken(endpoint, token) {
|
|
139
|
-
const { DokployApi } = await Promise.resolve().then(() => require("./sniffer-
|
|
139
|
+
const { DokployApi } = await Promise.resolve().then(() => require("./sniffer-BjG-1mlD.cjs")).then((n) => n.dokploy_api_exports);
|
|
140
140
|
return new DokployApi({
|
|
141
141
|
baseUrl: endpoint,
|
|
142
142
|
token
|
|
@@ -304,7 +304,7 @@ function installation(platform, certificate) {
|
|
|
304
304
|
*/
|
|
305
305
|
async function trustCommand(options = {}) {
|
|
306
306
|
const { workspace } = await require_config.loadWorkspaceConfig();
|
|
307
|
-
const certificate = (0, node_path.join)(workspace.root,
|
|
307
|
+
const certificate = (0, node_path.join)(workspace.root, require_seeds.LOCAL_CA_PATH);
|
|
308
308
|
if (!(0, node_fs.existsSync)(certificate)) throw new NoLocalAuthority(certificate);
|
|
309
309
|
const { describe, asks, steps } = installation(process.platform, certificate);
|
|
310
310
|
logger$7.log(`\n🔐 Trusting the local authority in ${describe}`);
|
|
@@ -1488,7 +1488,7 @@ async function serveFakes(fakes, ports) {
|
|
|
1488
1488
|
const served = [];
|
|
1489
1489
|
for (const [id, local] of Object.entries(fakes)) {
|
|
1490
1490
|
if (local.image) continue;
|
|
1491
|
-
const port = ports[
|
|
1491
|
+
const port = ports[require_seeds.fakeKey(id)];
|
|
1492
1492
|
if (port === void 0) continue;
|
|
1493
1493
|
const { handler } = (await import((0, node_url.pathToFileURL)(local.file).href)).default;
|
|
1494
1494
|
const server = serve({
|
|
@@ -1531,16 +1531,16 @@ var NoCommandSpecified = class extends Error {
|
|
|
1531
1531
|
async function execCommand(commandArgs, options = {}) {
|
|
1532
1532
|
const cwd = options.cwd ?? process.cwd();
|
|
1533
1533
|
if (!commandArgs[0]) throw new NoCommandSpecified();
|
|
1534
|
-
const defaultEnv =
|
|
1534
|
+
const defaultEnv = require_seeds.loadEnvFiles(".env");
|
|
1535
1535
|
if (defaultEnv.loaded.length > 0) logger$6.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
|
|
1536
|
-
const { credentials, secretsJsonPath, appName } =
|
|
1536
|
+
const { credentials, secretsJsonPath, appName } = require_seeds.isImageBuild() ? await imageBuildEntry(cwd) : await require_seeds.prepareEntryCredentials({ cwd });
|
|
1537
1537
|
if (appName) logger$6.log(`📦 App: ${appName}`);
|
|
1538
1538
|
const secretCount = Object.keys(credentials).filter((k) => k !== "PORT").length;
|
|
1539
|
-
if (secretCount > 0 && !
|
|
1539
|
+
if (secretCount > 0 && !require_seeds.isImageBuild()) logger$6.log(`🔐 Loaded ${secretCount} secret(s)`);
|
|
1540
1540
|
const preloadDir = (0, node_path.join)(cwd, ".gkm");
|
|
1541
1541
|
await (0, node_fs_promises.mkdir)(preloadDir, { recursive: true });
|
|
1542
1542
|
const preloadPath = (0, node_path.join)(preloadDir, "credentials-preload.mjs");
|
|
1543
|
-
await
|
|
1543
|
+
await require_seeds.createCredentialsPreload(preloadPath, secretsJsonPath);
|
|
1544
1544
|
const [cmd, ...args] = commandArgs;
|
|
1545
1545
|
logger$6.log(`🚀 Running: ${[cmd, ...args].join(" ")}`);
|
|
1546
1546
|
const nodeOptions = [(process.env.NODE_OPTIONS ?? "").replace(/--import[= ]\S+/g, "").trim(), `--import=${preloadPath}`].filter(Boolean).join(" ");
|
|
@@ -1568,7 +1568,7 @@ async function execCommand(commandArgs, options = {}) {
|
|
|
1568
1568
|
* secret read and no address resolved.
|
|
1569
1569
|
*/
|
|
1570
1570
|
async function imageBuildEntry(cwd) {
|
|
1571
|
-
const credentials =
|
|
1571
|
+
const credentials = require_seeds.imageBuildCredentials();
|
|
1572
1572
|
logger$6.log(`🐳 Image build: ${Object.keys(credentials).length} public value(s) from the build args`);
|
|
1573
1573
|
const dir = (0, node_path.join)(cwd, ".gkm");
|
|
1574
1574
|
await (0, node_fs_promises.mkdir)(dir, { recursive: true });
|
|
@@ -1649,7 +1649,7 @@ const SUBSCRIBERS_ENV = "GKM_SUBSCRIBERS";
|
|
|
1649
1649
|
async function devCommand(options) {
|
|
1650
1650
|
if (options.subscribers === false) process.env[SUBSCRIBERS_ENV] = "off";
|
|
1651
1651
|
if (options.entry) return entryDevCommand(options);
|
|
1652
|
-
const defaultEnv =
|
|
1652
|
+
const defaultEnv = require_seeds.loadEnvFiles(".env");
|
|
1653
1653
|
if (defaultEnv.loaded.length > 0) logger$5.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
|
|
1654
1654
|
const appConfig = await require_config.loadAppConfig().catch((error) => {
|
|
1655
1655
|
if (error instanceof require_config.NotInAnApp || error instanceof require_config.NotABackendApp) return;
|
|
@@ -1665,7 +1665,7 @@ async function devCommand(options) {
|
|
|
1665
1665
|
const secretsRoot = appConfig.workspaceRoot;
|
|
1666
1666
|
const workspaceAppName = appConfig.appName;
|
|
1667
1667
|
const assigned = await require_appPorts.assignAppPorts(appConfig.workspace, [workspaceAppName], {
|
|
1668
|
-
free:
|
|
1668
|
+
free: require_seeds.isPortAvailable,
|
|
1669
1669
|
holder: require_appPorts.holderOf
|
|
1670
1670
|
});
|
|
1671
1671
|
if (assigned.running.length > 0) throw new WorkspacePortsInUse(assigned.running);
|
|
@@ -1683,7 +1683,7 @@ async function devCommand(options) {
|
|
|
1683
1683
|
});
|
|
1684
1684
|
}
|
|
1685
1685
|
if (config.env) {
|
|
1686
|
-
const { loaded, missing } =
|
|
1686
|
+
const { loaded, missing } = require_seeds.loadEnvFiles(config.env, appRoot);
|
|
1687
1687
|
if (loaded.length > 0) logger$5.log(`📦 Loaded env: ${loaded.join(", ")}`);
|
|
1688
1688
|
if (missing.length > 0) logger$5.warn(`⚠️ Missing env files: ${missing.join(", ")}`);
|
|
1689
1689
|
}
|
|
@@ -1696,8 +1696,8 @@ async function devCommand(options) {
|
|
|
1696
1696
|
appRoot,
|
|
1697
1697
|
target: "server",
|
|
1698
1698
|
enableOpenApi,
|
|
1699
|
-
cacheBackend:
|
|
1700
|
-
eventsBackend:
|
|
1699
|
+
cacheBackend: require_seeds.cacheBackendFor(require_seeds.providerOf(workspace ?? config)),
|
|
1700
|
+
eventsBackend: require_seeds.eventsBackendFor(require_seeds.providerOf(workspace ?? config)),
|
|
1701
1701
|
telescope,
|
|
1702
1702
|
databaseApi: true,
|
|
1703
1703
|
hooks,
|
|
@@ -1711,16 +1711,16 @@ async function devCommand(options) {
|
|
|
1711
1711
|
let secretsJsonPath;
|
|
1712
1712
|
let publicUrl;
|
|
1713
1713
|
let manifest;
|
|
1714
|
-
const appSecrets = await
|
|
1714
|
+
const appSecrets = await require_seeds.loadSecretsForApp(workspace ? await require_seeds.secretsStoreFor(workspace, config.stages.local) : new require_seeds.FileSecretsStore(secretsRoot), config.stages.local);
|
|
1715
1715
|
if (workspace) {
|
|
1716
|
-
const reconciled = await
|
|
1716
|
+
const reconciled = await require_seeds.reconcileWorkspace(workspace, {
|
|
1717
1717
|
stage: workspace.stages.local,
|
|
1718
1718
|
...options.fake ? { fake: true } : {},
|
|
1719
1719
|
progress: (message) => logger$5.log(message)
|
|
1720
1720
|
});
|
|
1721
1721
|
if (reconciled.services.length > 0) {
|
|
1722
1722
|
logger$5.log("🐳 Services");
|
|
1723
|
-
for (const line of
|
|
1723
|
+
for (const line of require_seeds.describeServices(reconciled.services)) logger$5.log(line);
|
|
1724
1724
|
}
|
|
1725
1725
|
Object.assign(appSecrets, reconciled.env);
|
|
1726
1726
|
const own = reconciled.plan.resources.find((r) => (r.kind === "rest-api" || r.kind === "site") && require_derive.appKey(r.id) === workspaceAppName);
|
|
@@ -1999,8 +1999,8 @@ async function validateFrontendApps(workspace) {
|
|
|
1999
1999
|
async function loadDevSecrets(workspace) {
|
|
2000
2000
|
if (!workspace.secrets.enabled) return {};
|
|
2001
2001
|
const stage = workspace.stages.local;
|
|
2002
|
-
const secrets = await (await
|
|
2003
|
-
if (secrets) return
|
|
2002
|
+
const secrets = await (await require_seeds.secretsStoreFor(workspace, stage)).read(stage);
|
|
2003
|
+
if (secrets) return require_seeds.toEmbeddableSecrets(secrets);
|
|
2004
2004
|
return {};
|
|
2005
2005
|
}
|
|
2006
2006
|
/**
|
|
@@ -2015,7 +2015,7 @@ async function loadDevSecrets(workspace) {
|
|
|
2015
2015
|
async function workspaceDevCommand(configured, options) {
|
|
2016
2016
|
const scoped = options.app ? [options.app] : options.filter ? [] : Object.keys(configured.apps);
|
|
2017
2017
|
const assigned = await require_appPorts.assignAppPorts(configured, scoped, {
|
|
2018
|
-
free:
|
|
2018
|
+
free: require_seeds.isPortAvailable,
|
|
2019
2019
|
holder: require_appPorts.holderOf
|
|
2020
2020
|
});
|
|
2021
2021
|
if (assigned.running.length > 0) throw new WorkspacePortsInUse(assigned.running);
|
|
@@ -2042,14 +2042,14 @@ async function workspaceDevCommand(configured, options) {
|
|
|
2042
2042
|
if (hasErrors) throw new Error("Frontend app validation failed. Fix the issues above and try again.");
|
|
2043
2043
|
}
|
|
2044
2044
|
const rawSecrets = await loadDevSecrets(workspace);
|
|
2045
|
-
const reconciled = await
|
|
2045
|
+
const reconciled = await require_seeds.reconcileWorkspace(workspace, {
|
|
2046
2046
|
stage: workspace.stages.local,
|
|
2047
2047
|
...options.fake ? { fake: true } : {},
|
|
2048
2048
|
progress: (message) => logger$5.log(message)
|
|
2049
2049
|
});
|
|
2050
2050
|
if (reconciled.services.length > 0) {
|
|
2051
2051
|
logger$5.log("🐳 Services");
|
|
2052
|
-
for (const line of
|
|
2052
|
+
for (const line of require_seeds.describeServices(reconciled.services)) logger$5.log(line);
|
|
2053
2053
|
}
|
|
2054
2054
|
const secretsEnv = {
|
|
2055
2055
|
...rawSecrets,
|
|
@@ -2059,9 +2059,9 @@ async function workspaceDevCommand(configured, options) {
|
|
|
2059
2059
|
for (const { id, port } of fakes) logger$5.log(`🎭 ${id} fake: http://localhost:${port}`);
|
|
2060
2060
|
logger$5.log(options.migrate || options.seed ? "🗄️ Migrating the databases" : "🗄️ Checking for pending migrations");
|
|
2061
2061
|
if (options.migrate || options.seed) {
|
|
2062
|
-
const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-
|
|
2062
|
+
const { prepareDevDatabases } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
|
|
2063
2063
|
await prepareDevDatabases(workspace, reconciled.env, { seed: !!options.seed });
|
|
2064
|
-
} else await Promise.resolve().then(() => require("./migrate-
|
|
2064
|
+
} else await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs")).then(({ reportPendingMigrations }) => reportPendingMigrations(workspace, reconciled.env)).catch((error) => {
|
|
2065
2065
|
logger$5.log(`⚠️ Could not check for pending migrations: ${error instanceof Error ? error.message : String(error)}`);
|
|
2066
2066
|
});
|
|
2067
2067
|
const appUrls = {};
|
|
@@ -2147,7 +2147,7 @@ async function workspaceDevCommand(configured, options) {
|
|
|
2147
2147
|
...secretsEnv,
|
|
2148
2148
|
NODE_ENV: "development",
|
|
2149
2149
|
...configPath ? { GKM_CONFIG_PATH: configPath } : {},
|
|
2150
|
-
...options.fake ? { [
|
|
2150
|
+
...options.fake ? { [require_seeds.FAKE_ENV]: "1" } : {},
|
|
2151
2151
|
[DISCOVERY_QUIET_ENV]: "1"
|
|
2152
2152
|
};
|
|
2153
2153
|
logger$5.log(`🚀 Starting ${appCount} app(s) — each builds before it answers, and says so when it is ready`);
|
|
@@ -2210,16 +2210,16 @@ async function entryDevCommand(options) {
|
|
|
2210
2210
|
if (!entry) throw new Error("--entry requires a file path");
|
|
2211
2211
|
const entryPath = (0, node_path.resolve)(process.cwd(), entry);
|
|
2212
2212
|
if (!(0, node_fs.existsSync)(entryPath)) throw new Error(`Entry file not found: ${entryPath}`);
|
|
2213
|
-
const defaultEnv =
|
|
2213
|
+
const defaultEnv = require_seeds.loadEnvFiles(".env");
|
|
2214
2214
|
if (defaultEnv.loaded.length > 0) logger$5.log(`📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
|
|
2215
|
-
const { credentials, resolvedPort, secretsJsonPath, appName } = await
|
|
2215
|
+
const { credentials, resolvedPort, secretsJsonPath, appName } = await require_seeds.prepareEntryCredentials({ explicitPort: options.portExplicit ? options.port : void 0 });
|
|
2216
2216
|
if (appName) logger$5.log(`📦 App: ${appName} (port ${resolvedPort})`);
|
|
2217
2217
|
logger$5.log(`🚀 Starting entry file: ${entry} on port ${resolvedPort}`);
|
|
2218
2218
|
if (Object.keys(credentials).length > 1) logger$5.log(`🔐 Loaded ${Object.keys(credentials).length - 1} secret(s) + PORT`);
|
|
2219
2219
|
const wrapperDir = (0, node_path.join)(process.cwd(), ".gkm");
|
|
2220
2220
|
await (0, node_fs_promises.mkdir)(wrapperDir, { recursive: true });
|
|
2221
2221
|
const wrapperPath = (0, node_path.join)(wrapperDir, "entry-wrapper.ts");
|
|
2222
|
-
await
|
|
2222
|
+
await require_seeds.createEntryWrapper(wrapperPath, entryPath, secretsJsonPath);
|
|
2223
2223
|
const runner = new EntryRunner(wrapperPath, entryPath, watch, resolvedPort);
|
|
2224
2224
|
await runner.start();
|
|
2225
2225
|
let isShuttingDown = false;
|
|
@@ -2528,10 +2528,10 @@ var DevServer = class {
|
|
|
2528
2528
|
this.startTime = Date.now();
|
|
2529
2529
|
if (this.isRunning) await this.stop();
|
|
2530
2530
|
if (this.portExplicit) {
|
|
2531
|
-
if (!await
|
|
2531
|
+
if (!await require_seeds.isPortAvailable(this.requestedPort)) throw new DevPortInUse(this.requestedPort, listenerOn(this.requestedPort));
|
|
2532
2532
|
this.actualPort = this.requestedPort;
|
|
2533
2533
|
} else {
|
|
2534
|
-
this.actualPort = await
|
|
2534
|
+
this.actualPort = await require_seeds.findAvailablePort(this.requestedPort);
|
|
2535
2535
|
if (this.actualPort !== this.requestedPort) logger$5.log(`ℹ️ Port ${this.requestedPort} was in use, using port ${this.actualPort} instead`);
|
|
2536
2536
|
}
|
|
2537
2537
|
const serverEntryPath = (0, node_path.join)(this.appRoot, ".gkm", "server", "server.ts");
|
|
@@ -2602,7 +2602,7 @@ var DevServer = class {
|
|
|
2602
2602
|
await this.stop();
|
|
2603
2603
|
let attempts = 0;
|
|
2604
2604
|
while (attempts < 30) {
|
|
2605
|
-
if (await
|
|
2605
|
+
if (await require_seeds.isPortAvailable(portToReuse)) break;
|
|
2606
2606
|
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
2607
2607
|
attempts++;
|
|
2608
2608
|
}
|
|
@@ -2943,7 +2943,7 @@ async function buildCommand(options) {
|
|
|
2943
2943
|
}
|
|
2944
2944
|
}
|
|
2945
2945
|
const config = loadedConfig.type !== "workspace" ? await require_config.loadConfig() : (0, node_path.resolve)(process.cwd()) === (0, node_path.resolve)(loadedConfig.workspace.root) ? rootGkmConfig(loadedConfig.workspace) : (await require_config.loadAppConfig()).gkmConfig;
|
|
2946
|
-
const target = options.provider ??
|
|
2946
|
+
const target = options.provider ?? require_seeds.providerOf(loadedConfig.workspace);
|
|
2947
2947
|
const workspaceRoot = loadedConfig.workspace.root;
|
|
2948
2948
|
const appRoot = process.cwd();
|
|
2949
2949
|
const output = await buildOneApp({
|
|
@@ -2975,15 +2975,15 @@ async function declaredIn(config, cwd) {
|
|
|
2975
2975
|
*/
|
|
2976
2976
|
function backendsOf(workspace) {
|
|
2977
2977
|
return {
|
|
2978
|
-
cache:
|
|
2978
|
+
cache: require_seeds.cacheBackendFor(require_seeds.providerOf(workspace)),
|
|
2979
2979
|
email: "ses"
|
|
2980
2980
|
};
|
|
2981
2981
|
}
|
|
2982
2982
|
/** One app's build, from its config and the command's options. */
|
|
2983
2983
|
async function buildOneApp(input) {
|
|
2984
2984
|
const { config, options, workspace, appRoot, target } = input;
|
|
2985
|
-
const cacheBackend = options.cache ??
|
|
2986
|
-
const eventsBackend =
|
|
2985
|
+
const cacheBackend = options.cache ?? require_seeds.cacheBackendFor(require_seeds.providerOf(workspace));
|
|
2986
|
+
const eventsBackend = require_seeds.eventsBackendFor(require_seeds.providerOf(workspace));
|
|
2987
2987
|
const production = normalizeProductionConfig(options.production ?? false);
|
|
2988
2988
|
if (production) logger$4.log(`🏭 Building for PRODUCTION`);
|
|
2989
2989
|
logger$4.log(`Building for ${target}`);
|
|
@@ -3069,7 +3069,7 @@ async function buildApp(input) {
|
|
|
3069
3069
|
if (production?.bundle && !input.skipBundle) {
|
|
3070
3070
|
const outputDir = (0, node_path.join)(appRoot, ".gkm", "server");
|
|
3071
3071
|
const entryPoint = await writeSurfaceServer(outputDir, production);
|
|
3072
|
-
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-
|
|
3072
|
+
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
|
|
3073
3073
|
await bundleServer({
|
|
3074
3074
|
entryPoint,
|
|
3075
3075
|
outputDir: (0, node_path.join)(outputDir, "dist"),
|
|
@@ -3113,9 +3113,9 @@ async function buildApp(input) {
|
|
|
3113
3113
|
};
|
|
3114
3114
|
const endpointGenerator = new require_EndpointGenerator.EndpointGenerator();
|
|
3115
3115
|
const functionGenerator = new FunctionGenerator();
|
|
3116
|
-
const cronGenerator = new
|
|
3116
|
+
const cronGenerator = new require_seeds.CronGenerator();
|
|
3117
3117
|
const subscriberGenerator = new require_SubscriberGenerator.SubscriberGenerator();
|
|
3118
|
-
const queueGenerator = new
|
|
3118
|
+
const queueGenerator = new require_seeds.QueueGenerator();
|
|
3119
3119
|
const topicGenerator = new TopicGenerator();
|
|
3120
3120
|
const code = constructGlobs;
|
|
3121
3121
|
const [loadedEndpoints, allFunctions, allCrons, allSubscribers, allQueues, allTopics] = await Promise.all([
|
|
@@ -3154,7 +3154,7 @@ async function buildApp(input) {
|
|
|
3154
3154
|
const appName = Object.entries(input.workspace.apps).find(([, app]) => (0, node_path.resolve)(input.workspace.root, app.path) === (0, node_path.resolve)(appRoot))?.[0];
|
|
3155
3155
|
await buildWorkers({
|
|
3156
3156
|
context: buildContext,
|
|
3157
|
-
workers:
|
|
3157
|
+
workers: require_seeds.workerUnits(input.workspace, declared, background).filter((unit) => unit.app === appName),
|
|
3158
3158
|
serverDir: (0, node_path.join)(appRoot, ".gkm", "server"),
|
|
3159
3159
|
crons: allCrons,
|
|
3160
3160
|
queues: allQueues,
|
|
@@ -3177,7 +3177,7 @@ async function buildApp(input) {
|
|
|
3177
3177
|
* runnables built from that worker, and nothing built from another.
|
|
3178
3178
|
*/
|
|
3179
3179
|
async function buildWorkers(input) {
|
|
3180
|
-
const generator = new
|
|
3180
|
+
const generator = new require_seeds.WorkerGenerator();
|
|
3181
3181
|
for (const worker of input.workers) {
|
|
3182
3182
|
const owned = (list) => list.filter(({ construct }) => construct.owner === worker.id);
|
|
3183
3183
|
const crons = owned(input.crons);
|
|
@@ -3186,15 +3186,15 @@ async function buildWorkers(input) {
|
|
|
3186
3186
|
const entryPoint = await generator.build({
|
|
3187
3187
|
context: input.context,
|
|
3188
3188
|
workerId: worker.id,
|
|
3189
|
-
outputDir:
|
|
3189
|
+
outputDir: require_seeds.workerEntryDir(input.serverDir, worker.id),
|
|
3190
3190
|
crons,
|
|
3191
3191
|
queues,
|
|
3192
3192
|
subscribers
|
|
3193
3193
|
});
|
|
3194
3194
|
logger$4.log(`Generated worker ${worker.id}: ${crons.length} crons, ${queues.length} queues, ${subscribers.length} subscribers`);
|
|
3195
3195
|
if (!input.bundle) continue;
|
|
3196
|
-
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-
|
|
3197
|
-
const outfile =
|
|
3196
|
+
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
|
|
3197
|
+
const outfile = require_seeds.workerBundleName(worker.id);
|
|
3198
3198
|
await bundleServer({
|
|
3199
3199
|
entryPoint,
|
|
3200
3200
|
outputDir: (0, node_path.join)(input.serverDir, "dist"),
|
|
@@ -3263,7 +3263,7 @@ async function buildForTarget(target, context, appRoot, workspaceRoot, endpointG
|
|
|
3263
3263
|
let masterKey;
|
|
3264
3264
|
if (context.production?.bundle && !skipBundle) {
|
|
3265
3265
|
logger$4.log(`\n📦 Bundling production server...`);
|
|
3266
|
-
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-
|
|
3266
|
+
const { bundleServer } = await Promise.resolve().then(() => require("./bundler-RAoSRuvp.cjs"));
|
|
3267
3267
|
const allConstructs = [
|
|
3268
3268
|
...endpoints.map((e) => e.construct),
|
|
3269
3269
|
...functions.map((f) => f.construct),
|
|
@@ -3394,7 +3394,7 @@ async function workspaceBuildCommand(workspace, options) {
|
|
|
3394
3394
|
const buildOrder = require_workspace.getAppBuildOrder(workspace);
|
|
3395
3395
|
logger$4.log(` Build order: ${buildOrder.join(" → ")}`);
|
|
3396
3396
|
try {
|
|
3397
|
-
const target = options.provider ??
|
|
3397
|
+
const target = options.provider ?? require_seeds.providerOf(workspace);
|
|
3398
3398
|
const builds = [];
|
|
3399
3399
|
for (const appName of buildOrder) {
|
|
3400
3400
|
const app = workspace.apps[appName];
|
|
@@ -3517,18 +3517,19 @@ async function composeCommand(options, deps = {}) {
|
|
|
3517
3517
|
if (options.push && !options.build) throw new require_compose.ComposePushNeedsBuild();
|
|
3518
3518
|
const pulls = !options.build && (options.pull || options.tag !== void 0);
|
|
3519
3519
|
if (options.digestsFile && !options.push && !pulls) throw new require_compose.ComposePinNeedsPull();
|
|
3520
|
-
const allowDevServices =
|
|
3520
|
+
const allowDevServices = require_seeds.parseDevServices(options.allowDevServices);
|
|
3521
3521
|
const cwd = (0, node_path.resolve)(options.cwd ?? process.cwd());
|
|
3522
3522
|
const { workspace } = await require_config.loadWorkspaceConfig(cwd);
|
|
3523
3523
|
const { stage } = options;
|
|
3524
3524
|
if (options.down) {
|
|
3525
3525
|
const override = require_compose.stackOverrideFile(workspace.root, stage);
|
|
3526
3526
|
const ref = {
|
|
3527
|
-
project: require_compose.composeProject(
|
|
3527
|
+
project: require_compose.composeProject(require_seeds.deployIdentity(workspace, stage)),
|
|
3528
3528
|
file: (0, node_path.join)(workspace.root, require_compose.stackDir(stage), "docker-compose.yml"),
|
|
3529
3529
|
...(0, node_fs.existsSync)(override) ? { overrides: [override] } : {},
|
|
3530
3530
|
cwd: workspace.root
|
|
3531
3531
|
};
|
|
3532
|
+
if (await require_compose.removeEdgeRoutes(require_compose.edgeDir(deps.env ?? process.env), ref.project)) console.log(`🌐 Removed ${ref.project}'s routes from ${require_compose.EDGE_PROJECT}.`);
|
|
3532
3533
|
await (deps.docker ?? require_compose.dockerCompose).down(ref);
|
|
3533
3534
|
console.log(`🛑 Stopped ${ref.project}. Its volumes are kept.`);
|
|
3534
3535
|
return;
|
|
@@ -4964,25 +4965,25 @@ function loadPackageJson() {
|
|
|
4964
4965
|
* Run: pnpm --filter @geekmidas/cli sync-versions
|
|
4965
4966
|
*/
|
|
4966
4967
|
const GEEKMIDAS_VERSIONS = {
|
|
4967
|
-
"@geekmidas/audit": "~10.0.0-alpha.
|
|
4968
|
-
"@geekmidas/auth": "~10.0.0-alpha.
|
|
4969
|
-
"@geekmidas/cache": "~10.0.0-alpha.
|
|
4970
|
-
"@geekmidas/client": "~10.0.0-alpha.
|
|
4971
|
-
"@geekmidas/cloud": "~10.0.0-alpha.
|
|
4972
|
-
"@geekmidas/constructs": "~10.0.0-alpha.
|
|
4973
|
-
"@geekmidas/db": "~10.0.0-alpha.
|
|
4974
|
-
"@geekmidas/emailkit": "~10.0.0-alpha.
|
|
4975
|
-
"@geekmidas/envkit": "~10.0.0-alpha.
|
|
4976
|
-
"@geekmidas/errors": "~10.0.0-alpha.
|
|
4977
|
-
"@geekmidas/events": "~10.0.0-alpha.
|
|
4978
|
-
"@geekmidas/logger": "~10.0.0-alpha.
|
|
4979
|
-
"@geekmidas/manifest": "~10.0.0-alpha.
|
|
4980
|
-
"@geekmidas/rate-limit": "~10.0.0-alpha.
|
|
4981
|
-
"@geekmidas/schema": "~10.0.0-alpha.
|
|
4982
|
-
"@geekmidas/services": "~10.0.0-alpha.
|
|
4983
|
-
"@geekmidas/storage": "~10.0.0-alpha.
|
|
4984
|
-
"@geekmidas/telescope": "~10.0.0-alpha.
|
|
4985
|
-
"@geekmidas/testkit": "~10.0.0-alpha.
|
|
4968
|
+
"@geekmidas/audit": "~10.0.0-alpha.79",
|
|
4969
|
+
"@geekmidas/auth": "~10.0.0-alpha.79",
|
|
4970
|
+
"@geekmidas/cache": "~10.0.0-alpha.79",
|
|
4971
|
+
"@geekmidas/client": "~10.0.0-alpha.79",
|
|
4972
|
+
"@geekmidas/cloud": "~10.0.0-alpha.79",
|
|
4973
|
+
"@geekmidas/constructs": "~10.0.0-alpha.79",
|
|
4974
|
+
"@geekmidas/db": "~10.0.0-alpha.79",
|
|
4975
|
+
"@geekmidas/emailkit": "~10.0.0-alpha.79",
|
|
4976
|
+
"@geekmidas/envkit": "~10.0.0-alpha.79",
|
|
4977
|
+
"@geekmidas/errors": "~10.0.0-alpha.79",
|
|
4978
|
+
"@geekmidas/events": "~10.0.0-alpha.79",
|
|
4979
|
+
"@geekmidas/logger": "~10.0.0-alpha.79",
|
|
4980
|
+
"@geekmidas/manifest": "~10.0.0-alpha.79",
|
|
4981
|
+
"@geekmidas/rate-limit": "~10.0.0-alpha.79",
|
|
4982
|
+
"@geekmidas/schema": "~10.0.0-alpha.79",
|
|
4983
|
+
"@geekmidas/services": "~10.0.0-alpha.79",
|
|
4984
|
+
"@geekmidas/storage": "~10.0.0-alpha.79",
|
|
4985
|
+
"@geekmidas/telescope": "~10.0.0-alpha.79",
|
|
4986
|
+
"@geekmidas/testkit": "~10.0.0-alpha.79",
|
|
4986
4987
|
"@geekmidas/cli": `~${loadPackageJson().version}`
|
|
4987
4988
|
};
|
|
4988
4989
|
//#endregion
|
|
@@ -5565,7 +5566,7 @@ function deploy(options) {
|
|
|
5565
5566
|
role-to-assume: \${{ vars.AWS_ROLE_ARN }}
|
|
5566
5567
|
aws-region: ${options.region}
|
|
5567
5568
|
` : "";
|
|
5568
|
-
const keyDir = `~/.gkm/keys/${
|
|
5569
|
+
const keyDir = `~/.gkm/keys/${require_seeds.projectKey({ name: options.name })}`;
|
|
5569
5570
|
const stageSecrets = sst ? credentials : `
|
|
5570
5571
|
# The stage's secrets are kept in the encrypted .gkm/secrets/<stage>.json,
|
|
5571
5572
|
# and each environment holds its key as GKM_SECRETS_KEY. .gkm/ is
|
|
@@ -9901,11 +9902,11 @@ async function initCommand(projectName, options = {}) {
|
|
|
9901
9902
|
}
|
|
9902
9903
|
devSecrets.custom = customSecrets;
|
|
9903
9904
|
const keys = {
|
|
9904
|
-
key:
|
|
9905
|
+
key: require_seeds.projectKey({ name }),
|
|
9905
9906
|
legacy: [(0, node_path.basename)(targetDir)]
|
|
9906
9907
|
};
|
|
9907
|
-
await new
|
|
9908
|
-
const keyPath =
|
|
9908
|
+
await new require_seeds.FileSecretsStore(targetDir, keys).write(local, devSecrets);
|
|
9909
|
+
const keyPath = require_seeds.getKeyPath(local, keys);
|
|
9909
9910
|
console.log(` Secrets: .gkm/secrets/${local}.json (encrypted)`);
|
|
9910
9911
|
console.log(` Key: ${keyPath}\n`);
|
|
9911
9912
|
if (!options.skipInstall) {
|
|
@@ -10100,9 +10101,9 @@ const logger$2 = console;
|
|
|
10100
10101
|
*/
|
|
10101
10102
|
async function storeFor(stage) {
|
|
10102
10103
|
try {
|
|
10103
|
-
return await
|
|
10104
|
+
return await require_seeds.secretsStoreFor(await require_config.loadWorkspaceSettings(), stage);
|
|
10104
10105
|
} catch (error) {
|
|
10105
|
-
if (error instanceof require_config.ConfigNotFound) return new
|
|
10106
|
+
if (error instanceof require_config.ConfigNotFound) return new require_seeds.FileSecretsStore(process.cwd());
|
|
10106
10107
|
throw error;
|
|
10107
10108
|
}
|
|
10108
10109
|
}
|
|
@@ -10173,7 +10174,7 @@ async function secretsSetCommand(key, value, options) {
|
|
|
10173
10174
|
process.exit(1);
|
|
10174
10175
|
}
|
|
10175
10176
|
await assertCredentialValue(key, secretValue, stage);
|
|
10176
|
-
await store.write(stage,
|
|
10177
|
+
await store.write(stage, require_seeds.withCustomSecret(secrets, key, secretValue));
|
|
10177
10178
|
logger$2.log(`\n✓ Secret "${key}" set for stage "${stage}" (${store.name})`);
|
|
10178
10179
|
}
|
|
10179
10180
|
/** `gkm secrets:unset` for a key the stage does not hold. */
|
|
@@ -10236,7 +10237,7 @@ async function assertCredentialValue(key, value, stage) {
|
|
|
10236
10237
|
}
|
|
10237
10238
|
const check = await (await require_credentialSchemas.loadCredentialSchemas({
|
|
10238
10239
|
root: workspace.root,
|
|
10239
|
-
patterns:
|
|
10240
|
+
patterns: require_seeds.constructGlobs(workspace)
|
|
10240
10241
|
})).check(key, value);
|
|
10241
10242
|
if (!check.ok) throw new require_credentialSchemas.CredentialsInvalid(stage, [{
|
|
10242
10243
|
key,
|
|
@@ -10262,7 +10263,7 @@ async function secretsShowCommand(options) {
|
|
|
10262
10263
|
logger$2.log(` host: ${creds.host}`);
|
|
10263
10264
|
logger$2.log(` port: ${creds.port}`);
|
|
10264
10265
|
logger$2.log(` username: ${creds.username}`);
|
|
10265
|
-
logger$2.log(` password: ${reveal ? creds.password :
|
|
10266
|
+
logger$2.log(` password: ${reveal ? creds.password : require_seeds.maskPassword(creds.password)}`);
|
|
10266
10267
|
if (creds.database) logger$2.log(` database: ${creds.database}`);
|
|
10267
10268
|
if (creds.bucket) logger$2.log(` bucket: ${creds.bucket}`);
|
|
10268
10269
|
}
|
|
@@ -10272,7 +10273,7 @@ async function secretsShowCommand(options) {
|
|
|
10272
10273
|
if (secrets.urls.STORAGE_ENDPOINT) logger$2.log(` STORAGE_ENDPOINT: ${secrets.urls.STORAGE_ENDPOINT}`);
|
|
10273
10274
|
if (Object.keys(secrets.custom).length > 0) {
|
|
10274
10275
|
logger$2.log("\nCustom Secrets:");
|
|
10275
|
-
for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value :
|
|
10276
|
+
for (const [key, value] of Object.entries(secrets.custom)) logger$2.log(` ${key}: ${reveal ? value : require_seeds.maskPassword(value)}`);
|
|
10276
10277
|
}
|
|
10277
10278
|
if (!reveal) logger$2.log("\nUse --reveal to show actual values");
|
|
10278
10279
|
}
|
|
@@ -10352,7 +10353,7 @@ async function secretsImportCommand(file, options) {
|
|
|
10352
10353
|
function maskUrl(url) {
|
|
10353
10354
|
try {
|
|
10354
10355
|
const parsed = new URL(url);
|
|
10355
|
-
if (parsed.password) parsed.password =
|
|
10356
|
+
if (parsed.password) parsed.password = require_seeds.maskPassword(parsed.password);
|
|
10356
10357
|
return parsed.toString();
|
|
10357
10358
|
} catch {
|
|
10358
10359
|
return url;
|
|
@@ -10407,7 +10408,7 @@ async function setupCommand(options = {}) {
|
|
|
10407
10408
|
* free and quiet.
|
|
10408
10409
|
*/
|
|
10409
10410
|
async function reconcileLocal(workspace, stage, options) {
|
|
10410
|
-
const result = await
|
|
10411
|
+
const result = await require_seeds.reconcileWorkspace(workspace, { stage });
|
|
10411
10412
|
if (result.plan.containers.length === 0) {
|
|
10412
10413
|
logger$1.log("🐳 No containers declared");
|
|
10413
10414
|
return;
|
|
@@ -10417,7 +10418,7 @@ async function reconcileLocal(workspace, stage, options) {
|
|
|
10417
10418
|
return;
|
|
10418
10419
|
}
|
|
10419
10420
|
logger$1.log("🐳 Services");
|
|
10420
|
-
for (const line of
|
|
10421
|
+
for (const line of require_seeds.describeServices(result.services)) logger$1.log(line);
|
|
10421
10422
|
const url = result.plan.resources.filter((r) => r.kind === "rest-api" || r.kind === "site" || r.kind === "file-server").map((r) => result.env[r.envKey]).find((address) => address?.startsWith("https://"));
|
|
10422
10423
|
if (url) await ensureTrusted(workspace.root, url, { ...options.yes ? { assumeYes: true } : {} });
|
|
10423
10424
|
}
|
|
@@ -10434,11 +10435,11 @@ async function resolveSecrets(stage, workspace, options) {
|
|
|
10434
10435
|
logger$1.log("🔐 Generating fresh secrets (--force)...");
|
|
10435
10436
|
return generateFreshSecrets(stage, workspace);
|
|
10436
10437
|
}
|
|
10437
|
-
const store = await
|
|
10438
|
+
const store = await require_seeds.secretsStoreFor(workspace, stage);
|
|
10438
10439
|
const secrets = await store.read(stage);
|
|
10439
10440
|
if (secrets) {
|
|
10440
10441
|
logger$1.log("🔐 Using existing secrets");
|
|
10441
|
-
const reconciled = reconcileSecrets(secrets, workspace, await
|
|
10442
|
+
const reconciled = reconcileSecrets(secrets, workspace, await require_seeds.derivedContainers(workspace, stage));
|
|
10442
10443
|
if (reconciled) await store.write(stage, reconciled);
|
|
10443
10444
|
return reconciled ?? secrets;
|
|
10444
10445
|
}
|
|
@@ -10540,9 +10541,9 @@ function createFreshWorkspaceSecrets(stage, workspace, containers = []) {
|
|
|
10540
10541
|
*/
|
|
10541
10542
|
async function ensureStageSecrets(stage, cwd = process.cwd()) {
|
|
10542
10543
|
const { workspace } = await require_config.loadWorkspaceConfig(cwd);
|
|
10543
|
-
const store = await
|
|
10544
|
+
const store = await require_seeds.secretsStoreFor(workspace, stage);
|
|
10544
10545
|
if (await store.read(stage)) return false;
|
|
10545
|
-
const secrets = createFreshWorkspaceSecrets(stage, workspace, await
|
|
10546
|
+
const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_seeds.derivedContainers(workspace, stage));
|
|
10546
10547
|
await store.write(stage, secrets);
|
|
10547
10548
|
return true;
|
|
10548
10549
|
}
|
|
@@ -10550,8 +10551,8 @@ async function ensureStageSecrets(stage, cwd = process.cwd()) {
|
|
|
10550
10551
|
* Generate fresh secrets for the workspace.
|
|
10551
10552
|
*/
|
|
10552
10553
|
async function generateFreshSecrets(stage, workspace) {
|
|
10553
|
-
const secrets = createFreshWorkspaceSecrets(stage, workspace, await
|
|
10554
|
-
const store = await
|
|
10554
|
+
const secrets = createFreshWorkspaceSecrets(stage, workspace, await require_seeds.derivedContainers(workspace, stage));
|
|
10555
|
+
const store = await require_seeds.secretsStoreFor(workspace, stage);
|
|
10555
10556
|
await store.write(stage, secrets);
|
|
10556
10557
|
logger$1.log(` Secrets written to the "${stage}" store (${store.name})`);
|
|
10557
10558
|
return secrets;
|
|
@@ -10591,7 +10592,7 @@ function printSummary(workspace, stage) {
|
|
|
10591
10592
|
* A no-op when nothing is recorded — no run yet, or one already torn down —
|
|
10592
10593
|
* so running it twice, or before a setup, is harmless.
|
|
10593
10594
|
*/
|
|
10594
|
-
async function dropTestDatabases(cwd, root, sql =
|
|
10595
|
+
async function dropTestDatabases(cwd, root, sql = require_seeds.pgClient) {
|
|
10595
10596
|
const readyPath = (0, node_path.join)(cwd, require_ready.TEST_READY_FILE);
|
|
10596
10597
|
const ready = await readReady(readyPath);
|
|
10597
10598
|
const recorded = ready?.databases;
|
|
@@ -10599,9 +10600,9 @@ async function dropTestDatabases(cwd, root, sql = require_stale.pgClient) {
|
|
|
10599
10600
|
const client = sql(recorded.port);
|
|
10600
10601
|
for (const name of recorded.names) {
|
|
10601
10602
|
if (!name.endsWith(`_test`)) throw new NotATestDatabase(name);
|
|
10602
|
-
await client.query(void 0, `DROP DATABASE IF EXISTS ${
|
|
10603
|
+
await client.query(void 0, `DROP DATABASE IF EXISTS ${require_seeds.quoteIdentifier(name)} WITH (FORCE)`);
|
|
10603
10604
|
}
|
|
10604
|
-
await
|
|
10605
|
+
await require_seeds.forgetState(root, require_workspace.TEST_STAGE);
|
|
10605
10606
|
const { databases: _dropped, ...rest } = ready;
|
|
10606
10607
|
await (0, node_fs_promises.writeFile)(readyPath, JSON.stringify(rest, null, 2));
|
|
10607
10608
|
return recorded.names;
|
|
@@ -10641,10 +10642,10 @@ async function testCommand(options = {}) {
|
|
|
10641
10642
|
const { ensureStageSecrets } = await Promise.resolve().then(() => setup_exports);
|
|
10642
10643
|
if (await ensureStageSecrets(stage, cwd)) console.log(` 🔐 Generated fresh ${stage} secrets (auto-setup)`);
|
|
10643
10644
|
}
|
|
10644
|
-
const defaultEnv =
|
|
10645
|
+
const defaultEnv = require_seeds.loadEnvFiles(".env");
|
|
10645
10646
|
if (defaultEnv.loaded.length > 0) console.log(` 📦 Loaded env: ${defaultEnv.loaded.join(", ")}`);
|
|
10646
10647
|
if (!options.prepare) await teardown(cwd);
|
|
10647
|
-
const result = await
|
|
10648
|
+
const result = await require_seeds.prepareEntryCredentials({
|
|
10648
10649
|
stage,
|
|
10649
10650
|
startDocker: !options.prepare,
|
|
10650
10651
|
secretsFileName: "test-secrets.json",
|
|
@@ -10665,14 +10666,14 @@ async function testCommand(options = {}) {
|
|
|
10665
10666
|
await (0, node_fs_promises.writeFile)(result.secretsJsonPath, JSON.stringify(finalCredentials, null, 2));
|
|
10666
10667
|
const gkmDir = (0, node_path.join)(cwd, ".gkm");
|
|
10667
10668
|
const preloadPath = (0, node_path.join)(gkmDir, "test-credentials-preload.ts");
|
|
10668
|
-
await
|
|
10669
|
+
await require_seeds.createCredentialsPreload(preloadPath, result.secretsJsonPath);
|
|
10669
10670
|
const workspace = await require_config.loadWorkspaceConfig(cwd).then((loaded) => loaded.workspace).catch(() => void 0);
|
|
10670
10671
|
const manifestPath = workspace ? await require_ready.writeTestHarness({
|
|
10671
10672
|
root: workspace.root,
|
|
10672
10673
|
targets: [workspace.root, ...Object.values(workspace.apps).map((app) => (0, node_path.isAbsolute)(app.path) ? app.path : (0, node_path.join)(workspace.root, app.path))],
|
|
10673
|
-
patterns:
|
|
10674
|
-
cacheBackend:
|
|
10675
|
-
eventsBackend:
|
|
10674
|
+
patterns: require_seeds.constructGlobs(workspace),
|
|
10675
|
+
cacheBackend: require_seeds.backendsOf(workspace).cache,
|
|
10676
|
+
eventsBackend: require_seeds.backendsOf(workspace).events,
|
|
10676
10677
|
stage: require_workspace.TEST_STAGE,
|
|
10677
10678
|
env: finalCredentials,
|
|
10678
10679
|
factories: (0, node_path.join)(workspace.root, workspace.test.factories ?? "test/factories")
|
|
@@ -10735,8 +10736,8 @@ async function teardown(cwd) {
|
|
|
10735
10736
|
* the plan provisions, on the port the shared container answers.
|
|
10736
10737
|
*/
|
|
10737
10738
|
function testDatabases(reconciled) {
|
|
10738
|
-
const port = reconciled?.ports[
|
|
10739
|
-
const names = reconciled ?
|
|
10739
|
+
const port = reconciled?.ports[require_seeds.primaryPortKey("postgres")];
|
|
10740
|
+
const names = reconciled ? require_seeds.postgresDatabaseNames(reconciled.plan) : [];
|
|
10740
10741
|
return port !== void 0 && names.length > 0 ? { databases: {
|
|
10741
10742
|
port,
|
|
10742
10743
|
names
|
|
@@ -10747,11 +10748,11 @@ function testDatabases(reconciled) {
|
|
|
10747
10748
|
* starts without the reference data the app needs.
|
|
10748
10749
|
*/
|
|
10749
10750
|
async function migrateTestStage(workspace, env) {
|
|
10750
|
-
const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-
|
|
10751
|
+
const { migrateAndSeed } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
|
|
10751
10752
|
const { discover } = await Promise.resolve().then(() => require("./discover-D1It5r_h.cjs")).then((n) => n.discover_exports);
|
|
10752
10753
|
const sources = {};
|
|
10753
10754
|
const manifest = await discover({
|
|
10754
|
-
patterns:
|
|
10755
|
+
patterns: require_seeds.constructGlobs(workspace),
|
|
10755
10756
|
cwd: workspace.root,
|
|
10756
10757
|
sources
|
|
10757
10758
|
});
|
|
@@ -11180,7 +11181,7 @@ program.command("migrate").description("Apply each database construct's migratio
|
|
|
11180
11181
|
try {
|
|
11181
11182
|
const globalOptions = program.opts();
|
|
11182
11183
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11183
|
-
const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-
|
|
11184
|
+
const { migrateCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
|
|
11184
11185
|
await migrateCommand({
|
|
11185
11186
|
...options,
|
|
11186
11187
|
...construct ? { construct } : {}
|
|
@@ -11194,7 +11195,7 @@ program.command("seed").description("Migrate, then run each database construct's
|
|
|
11194
11195
|
try {
|
|
11195
11196
|
const globalOptions = program.opts();
|
|
11196
11197
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11197
|
-
const { seedCommand } = await Promise.resolve().then(() => require("./migrate-
|
|
11198
|
+
const { seedCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
|
|
11198
11199
|
await seedCommand({
|
|
11199
11200
|
...options,
|
|
11200
11201
|
...construct ? { construct } : {}
|
|
@@ -11208,7 +11209,7 @@ program.command("migration").description("Write a construct's next migration: an
|
|
|
11208
11209
|
try {
|
|
11209
11210
|
const globalOptions = program.opts();
|
|
11210
11211
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11211
|
-
const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-
|
|
11212
|
+
const { migrationCommand } = await Promise.resolve().then(() => require("./migrate-CTqICj1B.cjs"));
|
|
11212
11213
|
await migrationCommand({
|
|
11213
11214
|
construct,
|
|
11214
11215
|
...name ? { name } : {}
|
|
@@ -11247,7 +11248,7 @@ program.command("docker").description("Generate Docker deployment files").option
|
|
|
11247
11248
|
try {
|
|
11248
11249
|
const globalOptions = program.opts();
|
|
11249
11250
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11250
|
-
await
|
|
11251
|
+
await require_seeds.dockerCommand(options);
|
|
11251
11252
|
} catch (error) {
|
|
11252
11253
|
console.error(formatError(error));
|
|
11253
11254
|
process.exit(1);
|
|
@@ -11267,7 +11268,7 @@ program.command("prepack").description("Generate Docker files for production dep
|
|
|
11267
11268
|
try {
|
|
11268
11269
|
const globalOptions = program.opts();
|
|
11269
11270
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11270
|
-
await
|
|
11271
|
+
await require_seeds.dockerCommand({
|
|
11271
11272
|
build: options.build,
|
|
11272
11273
|
push: options.push,
|
|
11273
11274
|
tag: options.tag,
|
|
@@ -11312,7 +11313,7 @@ program.command("secrets:add").description("Build the keys a stage must be given
|
|
|
11312
11313
|
try {
|
|
11313
11314
|
const globalOptions = program.opts();
|
|
11314
11315
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11315
|
-
const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-
|
|
11316
|
+
const { secretsAddCommand } = await Promise.resolve().then(() => require("./add-HF9POevk.cjs"));
|
|
11316
11317
|
await secretsAddCommand(options);
|
|
11317
11318
|
} catch (error) {
|
|
11318
11319
|
console.error(formatError(error));
|
|
@@ -11323,7 +11324,7 @@ program.command("encryption:rotate").description("Add a new current key to an En
|
|
|
11323
11324
|
try {
|
|
11324
11325
|
const globalOptions = program.opts();
|
|
11325
11326
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11326
|
-
const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-
|
|
11327
|
+
const { encryptionRotateCommand } = await Promise.resolve().then(() => require("./encryption-D2z16vsS.cjs"));
|
|
11327
11328
|
await encryptionRotateCommand(construct, options);
|
|
11328
11329
|
} catch (error) {
|
|
11329
11330
|
console.error(formatError(error));
|
|
@@ -11334,7 +11335,7 @@ program.command("encryption:retire").description("Remove an old key from an Encr
|
|
|
11334
11335
|
try {
|
|
11335
11336
|
const globalOptions = program.opts();
|
|
11336
11337
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11337
|
-
const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-
|
|
11338
|
+
const { encryptionRetireCommand } = await Promise.resolve().then(() => require("./encryption-D2z16vsS.cjs"));
|
|
11338
11339
|
await encryptionRetireCommand(construct, key, options);
|
|
11339
11340
|
} catch (error) {
|
|
11340
11341
|
console.error(formatError(error));
|
|
@@ -11377,7 +11378,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
|
|
|
11377
11378
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11378
11379
|
const { loadWorkspaceConfig } = await Promise.resolve().then(() => require("./config.cjs"));
|
|
11379
11380
|
const { reconcileMissingSecrets } = await Promise.resolve().then(() => require("./reconcile-CuCQBa5-.cjs"));
|
|
11380
|
-
const { secretsStoreFor } = await Promise.resolve().then(() => require("./
|
|
11381
|
+
const { secretsStoreFor } = await Promise.resolve().then(() => require("./seeds-qX13ubmO.cjs")).then((n) => n.store_exports);
|
|
11381
11382
|
const { workspace } = await loadWorkspaceConfig();
|
|
11382
11383
|
const stage = options.stage ?? workspace.stages.local;
|
|
11383
11384
|
const store = await secretsStoreFor(workspace, stage);
|
|
@@ -11386,7 +11387,7 @@ program.command("secrets:reconcile").description("Backfill missing custom secret
|
|
|
11386
11387
|
console.error(`No secrets found for stage "${stage}". Run "gkm secrets:init --stage ${stage}" first.`);
|
|
11387
11388
|
process.exit(1);
|
|
11388
11389
|
}
|
|
11389
|
-
const { derivedContainers } = await Promise.resolve().then(() => require("./
|
|
11390
|
+
const { derivedContainers } = await Promise.resolve().then(() => require("./seeds-qX13ubmO.cjs")).then((n) => n.workspace_exports);
|
|
11390
11391
|
const result = reconcileMissingSecrets(secrets, workspace, await derivedContainers(workspace, stage));
|
|
11391
11392
|
if (!result) {
|
|
11392
11393
|
console.log(`\n✓ Secrets for stage "${stage}" are up-to-date`);
|
|
@@ -11404,7 +11405,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
|
|
|
11404
11405
|
try {
|
|
11405
11406
|
const globalOptions = program.opts();
|
|
11406
11407
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11407
|
-
const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-
|
|
11408
|
+
const { secretsMigrateCommand } = await Promise.resolve().then(() => require("./migrate-DvIAITiG.cjs"));
|
|
11408
11409
|
await secretsMigrateCommand(options);
|
|
11409
11410
|
} catch (error) {
|
|
11410
11411
|
console.error(formatError(error));
|
|
@@ -11412,7 +11413,7 @@ program.command("secrets:migrate").description("Copy a deployed stage's secrets
|
|
|
11412
11413
|
}
|
|
11413
11414
|
});
|
|
11414
11415
|
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 <list>", "Server targets: run MinIO and/or Mailpit (minio,mailpit) for mail and buckets the stage's secrets don't configure. Not production-grade").action(async (options) => {
|
|
11415
|
-
const { deployCli } = await Promise.resolve().then(() => require("./cli-
|
|
11416
|
+
const { deployCli } = await Promise.resolve().then(() => require("./cli-C3hsEwLK.cjs"));
|
|
11416
11417
|
const globalOptions = program.opts();
|
|
11417
11418
|
const code = await deployCli({
|
|
11418
11419
|
cwd: (0, node_path.resolve)(globalOptions.cwd ?? process.cwd()),
|
|
@@ -11429,7 +11430,7 @@ program.command("deploy").description("Deploy a stage through its target").optio
|
|
|
11429
11430
|
});
|
|
11430
11431
|
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) => {
|
|
11431
11432
|
try {
|
|
11432
|
-
const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-
|
|
11433
|
+
const { rollbackStage } = await Promise.resolve().then(() => require("./rollback-DUoOaws3.cjs")).then((n) => n.rollback_exports);
|
|
11433
11434
|
const { terminalCredentials } = await Promise.resolve().then(() => require("./terminal-BL5E0xbR.cjs"));
|
|
11434
11435
|
const globalOptions = program.opts();
|
|
11435
11436
|
await rollbackStage({
|
|
@@ -11465,7 +11466,7 @@ program.command("deploy:github").description("Let GitHub Actions deploy a stage:
|
|
|
11465
11466
|
try {
|
|
11466
11467
|
const globalOptions = program.opts();
|
|
11467
11468
|
if (globalOptions.cwd) process.chdir(globalOptions.cwd);
|
|
11468
|
-
const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-
|
|
11469
|
+
const { deployGithubCommand } = await Promise.resolve().then(() => require("./github-B8dDa8xf.cjs"));
|
|
11469
11470
|
await deployGithubCommand(options);
|
|
11470
11471
|
} catch (error) {
|
|
11471
11472
|
console.error(formatError(error));
|