@geekmidas/cli 10.0.0-alpha.64 → 10.0.0-alpha.65
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/README.md +1 -1
- package/dist/{HostingerProvider-Bx2lHHvu.cjs → HostingerProvider-Dlmbfass.cjs} +3 -3
- package/dist/{HostingerProvider-Bx2lHHvu.cjs.map → HostingerProvider-Dlmbfass.cjs.map} +1 -1
- package/dist/{HostingerProvider-Cd4aS5Kj.mjs → HostingerProvider-x9gQTAGZ.mjs} +2 -2
- package/dist/{HostingerProvider-Cd4aS5Kj.mjs.map → HostingerProvider-x9gQTAGZ.mjs.map} +1 -1
- package/dist/{LegacyStateStore-C2abV49N.cjs → LegacyStateStore-BGoo__sO.cjs} +2 -2
- package/dist/{LegacyStateStore-C2abV49N.cjs.map → LegacyStateStore-BGoo__sO.cjs.map} +1 -1
- package/dist/{LegacyStateStore-DIgkGaUP.mjs → LegacyStateStore-BUu1nQ5u.mjs} +2 -2
- package/dist/{LegacyStateStore-DIgkGaUP.mjs.map → LegacyStateStore-BUu1nQ5u.mjs.map} +1 -1
- package/dist/{LocalStateStore-DiJqKyPy.cjs → LocalStateStore-93urXyQe.cjs} +2 -2
- package/dist/{LocalStateStore-DiJqKyPy.cjs.map → LocalStateStore-93urXyQe.cjs.map} +1 -1
- package/dist/{LocalStateStore-Cy1ZBW7U.mjs → LocalStateStore-BRhMQRuy.mjs} +2 -2
- package/dist/{LocalStateStore-Cy1ZBW7U.mjs.map → LocalStateStore-BRhMQRuy.mjs.map} +1 -1
- package/dist/{S3StateStore-Ds0V1Lgm.cjs → S3StateStore-F4dxw6kS.cjs} +2 -2
- package/dist/{S3StateStore-Ds0V1Lgm.cjs.map → S3StateStore-F4dxw6kS.cjs.map} +1 -1
- package/dist/{S3StateStore-D3x6ivBL.mjs → S3StateStore-pw1GhWwt.mjs} +2 -2
- package/dist/{S3StateStore-D3x6ivBL.mjs.map → S3StateStore-pw1GhWwt.mjs.map} +1 -1
- package/dist/{SSMStateStore-CLipvx47.cjs → SSMStateStore-Bt9acuAF.cjs} +2 -2
- package/dist/{SSMStateStore-CLipvx47.cjs.map → SSMStateStore-Bt9acuAF.cjs.map} +1 -1
- package/dist/{SSMStateStore-DfF174xQ.mjs → SSMStateStore-Dmj7zzFO.mjs} +2 -2
- package/dist/{SSMStateStore-DfF174xQ.mjs.map → SSMStateStore-Dmj7zzFO.mjs.map} +1 -1
- package/dist/{bundler-C8uJf324.cjs → bundler-D6MlIfBT.cjs} +3 -3
- package/dist/{bundler-C8uJf324.cjs.map → bundler-D6MlIfBT.cjs.map} +1 -1
- package/dist/{bundler-DYgm9xsd.mjs → bundler-D_14JLZF.mjs} +3 -3
- package/dist/{bundler-DYgm9xsd.mjs.map → bundler-D_14JLZF.mjs.map} +1 -1
- package/dist/{cli-D3jofJ6j.cjs → cli-BfH1deAT.cjs} +6 -6
- package/dist/{cli-D3jofJ6j.cjs.map → cli-BfH1deAT.cjs.map} +1 -1
- package/dist/{cli-Bogz-zEj.mjs → cli-P56vvrDQ.mjs} +5 -5
- package/dist/{cli-Bogz-zEj.mjs.map → cli-P56vvrDQ.mjs.map} +1 -1
- package/dist/compose-391oEKj1.cjs +1982 -0
- package/dist/compose-391oEKj1.cjs.map +1 -0
- package/dist/compose-DprE3ASm.mjs +1862 -0
- package/dist/compose-DprE3ASm.mjs.map +1 -0
- package/dist/{config-DqNRiQOp.d.mts → config-BonvTW8p.d.mts} +3 -3
- package/dist/{config-Be-4_I6H.d.cts.map → config-BonvTW8p.d.mts.map} +1 -1
- package/dist/{config-Be-4_I6H.d.cts → config-V_X_BMpm.d.cts} +3 -3
- package/dist/{config-DqNRiQOp.d.mts.map → config-V_X_BMpm.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/{credentials-B70vmLcm.cjs → credentials-Bzbg23n8.cjs} +176 -3
- package/dist/credentials-Bzbg23n8.cjs.map +1 -0
- package/dist/{credentials-s0wMeZBU.mjs → credentials-Dq1MnWQf.mjs} +128 -3
- package/dist/credentials-Dq1MnWQf.mjs.map +1 -0
- package/dist/{define-CYs0PEfZ.mjs → define-DR8xGYfL.mjs} +5 -1
- package/dist/define-DR8xGYfL.mjs.map +1 -0
- package/dist/{define-zUsP72ym.cjs → define-DzRz8FgH.cjs} +5 -1
- package/dist/define-DzRz8FgH.cjs.map +1 -0
- package/dist/deploy/public.cjs +18 -18
- package/dist/deploy/public.cjs.map +1 -1
- package/dist/deploy/public.d.cts +7 -4
- package/dist/deploy/public.d.cts.map +1 -1
- package/dist/deploy/public.d.mts +7 -4
- package/dist/deploy/public.d.mts.map +1 -1
- package/dist/deploy/public.mjs +11 -11
- package/dist/{deploy-Dc2LBJaK.mjs → deploy-9MBG_QLd.mjs} +8 -7
- package/dist/deploy-9MBG_QLd.mjs.map +1 -0
- package/dist/{deploy-yUcR2OlW.cjs → deploy-B80idPUZ.cjs} +11 -10
- package/dist/deploy-B80idPUZ.cjs.map +1 -0
- package/dist/{deploy-ZRXIPp1c.mjs → deploy-CZ5nlpsu.mjs} +13 -119
- package/dist/deploy-CZ5nlpsu.mjs.map +1 -0
- package/dist/{deploy-55rJkdKz.cjs → deploy-Cy8igpQF.cjs} +39 -145
- package/dist/deploy-Cy8igpQF.cjs.map +1 -0
- package/dist/{dokploy-CepdXuMl.mjs → dokploy-BdtBePjp.mjs} +3 -3
- package/dist/{dokploy-CepdXuMl.mjs.map → dokploy-BdtBePjp.mjs.map} +1 -1
- package/dist/{dokploy-D1d37rvM.cjs → dokploy-iFY8MY-L.cjs} +3 -3
- package/dist/{dokploy-D1d37rvM.cjs.map → dokploy-iFY8MY-L.cjs.map} +1 -1
- package/dist/{encryption-C9X98u2F.cjs → encryption-B1wJwgae.cjs} +5 -5
- package/dist/{encryption-C9X98u2F.cjs.map → encryption-B1wJwgae.cjs.map} +1 -1
- package/dist/{encryption-CKHjMpCr.mjs → encryption-DF_hgIpl.mjs} +4 -4
- package/dist/{encryption-CKHjMpCr.mjs.map → encryption-DF_hgIpl.mjs.map} +1 -1
- package/dist/{github-D-byNI7T.mjs → github-B0YYE98x.mjs} +3 -3
- package/dist/{github-D-byNI7T.mjs.map → github-B0YYE98x.mjs.map} +1 -1
- package/dist/{github-Dd3tMa1u.cjs → github-CYcmTdFs.cjs} +3 -3
- package/dist/{github-Dd3tMa1u.cjs.map → github-CYcmTdFs.cjs.map} +1 -1
- package/dist/{index-CfE9Y885.d.cts → index-DPUAGJaK.d.cts} +16 -3
- package/dist/index-DPUAGJaK.d.cts.map +1 -0
- package/dist/{index-CJ2qsSpp.d.mts → index-DwKD_8lt.d.mts} +16 -3
- package/dist/index-DwKD_8lt.d.mts.map +1 -0
- package/dist/index.cjs +233 -1667
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +196 -1614
- package/dist/index.mjs.map +1 -1
- package/dist/{local-C7wnrcYK.cjs → local-BdH4XN0E.cjs} +1 -178
- package/dist/local-BdH4XN0E.cjs.map +1 -0
- package/dist/{local-Cd8ZYQG3.mjs → local-CWR4Y_kW.mjs} +3 -126
- package/dist/local-CWR4Y_kW.mjs.map +1 -0
- package/dist/{migrate-B4gngTLe.mjs → migrate-B2qL5wj4.mjs} +6 -5
- package/dist/{migrate-B4gngTLe.mjs.map → migrate-B2qL5wj4.mjs.map} +1 -1
- package/dist/{migrate-tx9-P9uz.cjs → migrate-q4pPAXtO.cjs} +19 -18
- package/dist/{migrate-tx9-P9uz.cjs.map → migrate-q4pPAXtO.cjs.map} +1 -1
- package/dist/openapi.d.cts +1 -1
- package/dist/openapi.d.mts +1 -1
- package/dist/provider-C9_-45d5.cjs +56 -0
- package/dist/provider-C9_-45d5.cjs.map +1 -0
- package/dist/provider-q4lsYzYG.mjs +45 -0
- package/dist/provider-q4lsYzYG.mjs.map +1 -0
- package/dist/reconcile/public.d.cts +1 -1
- package/dist/reconcile/public.d.mts +1 -1
- package/dist/resolve-DLkIXTct.mjs +262 -0
- package/dist/resolve-DLkIXTct.mjs.map +1 -0
- package/dist/resolve-N_i4XNd-.cjs +315 -0
- package/dist/resolve-N_i4XNd-.cjs.map +1 -0
- package/dist/{runtime-CJEYK4Gz.d.mts → runtime-BnD7Nn96.d.cts} +2 -2
- package/dist/{runtime-CJEYK4Gz.d.mts.map → runtime-BnD7Nn96.d.cts.map} +1 -1
- package/dist/{runtime-Cjq1jlVX.d.cts → runtime-j-tmFL65.d.mts} +2 -2
- package/dist/{runtime-Cjq1jlVX.d.cts.map → runtime-j-tmFL65.d.mts.map} +1 -1
- package/dist/sniffer-BSwaL-dX.cjs +2236 -0
- package/dist/sniffer-BSwaL-dX.cjs.map +1 -0
- package/dist/sniffer-BZ-OJO4Y.mjs +2068 -0
- package/dist/sniffer-BZ-OJO4Y.mjs.map +1 -0
- package/dist/{sst-Cper040I.mjs → sst-B2HbrDR3.mjs} +4 -4
- package/dist/{sst-Cper040I.mjs.map → sst-B2HbrDR3.mjs.map} +1 -1
- package/dist/{sst-BdALKEas.cjs → sst-DcfsVH6x.cjs} +4 -4
- package/dist/{sst-BdALKEas.cjs.map → sst-DcfsVH6x.cjs.map} +1 -1
- package/dist/{sniffer-49KPbDgq.mjs → state-B8YwmUZU.mjs} +878 -2465
- package/dist/state-B8YwmUZU.mjs.map +1 -0
- package/dist/{sniffer-ByhbEW5A.cjs → state-DF26e_lo.cjs} +811 -2525
- package/dist/state-DF26e_lo.cjs.map +1 -0
- package/dist/{store-D_2ByRtW.cjs → store-CJF1Tqkq.cjs} +2 -2
- package/dist/{store-D_2ByRtW.cjs.map → store-CJF1Tqkq.cjs.map} +1 -1
- package/dist/{store-BaaonhkJ.mjs → store-CLiHnqOY.mjs} +2 -2
- package/dist/{store-BaaonhkJ.mjs.map → store-CLiHnqOY.mjs.map} +1 -1
- package/dist/target/public.cjs +6 -6
- package/dist/target/public.d.cts +2 -2
- package/dist/target/public.d.mts +2 -2
- package/dist/target/public.mjs +3 -3
- package/dist/terminal-Bs5E1oxm.cjs +88 -0
- package/dist/terminal-Bs5E1oxm.cjs.map +1 -0
- package/dist/terminal-CfbiYUbZ.mjs +84 -0
- package/dist/terminal-CfbiYUbZ.mjs.map +1 -0
- package/dist/{types-B_bEQvb9.d.mts → types-BCzMWBb6.d.mts} +43 -11
- package/dist/types-BCzMWBb6.d.mts.map +1 -0
- package/dist/{types-DkrDOMxw.d.cts → types-ByMWkXKP.d.cts} +43 -11
- package/dist/types-ByMWkXKP.d.cts.map +1 -0
- package/dist/workspace/index.cjs +3 -1
- package/dist/workspace/index.d.cts +3 -3
- package/dist/workspace/index.d.mts +3 -3
- package/dist/workspace/index.mjs +2 -2
- package/dist/{workspace-BwgWJK7h.cjs → workspace-BewAHZIo.cjs} +38 -3
- package/dist/workspace-BewAHZIo.cjs.map +1 -0
- package/dist/{workspace-Bwit4q9O.mjs → workspace-C06_pW4g.mjs} +27 -4
- package/dist/workspace-C06_pW4g.mjs.map +1 -0
- package/package.json +13 -13
- package/dist/credentials-B70vmLcm.cjs.map +0 -1
- package/dist/credentials-s0wMeZBU.mjs.map +0 -1
- package/dist/define-CYs0PEfZ.mjs.map +0 -1
- package/dist/define-zUsP72ym.cjs.map +0 -1
- package/dist/deploy-55rJkdKz.cjs.map +0 -1
- package/dist/deploy-Dc2LBJaK.mjs.map +0 -1
- package/dist/deploy-ZRXIPp1c.mjs.map +0 -1
- package/dist/deploy-yUcR2OlW.cjs.map +0 -1
- package/dist/index-CJ2qsSpp.d.mts.map +0 -1
- package/dist/index-CfE9Y885.d.cts.map +0 -1
- package/dist/local-C7wnrcYK.cjs.map +0 -1
- package/dist/local-Cd8ZYQG3.mjs.map +0 -1
- package/dist/resolve-BXsNQjMR.cjs +0 -220
- package/dist/resolve-BXsNQjMR.cjs.map +0 -1
- package/dist/resolve-DZ2IJ0qY.mjs +0 -173
- package/dist/resolve-DZ2IJ0qY.mjs.map +0 -1
- package/dist/runtime-BGNDrHzh.cjs +0 -163
- package/dist/runtime-BGNDrHzh.cjs.map +0 -1
- package/dist/runtime-Cmn-FeYO.mjs +0 -134
- package/dist/runtime-Cmn-FeYO.mjs.map +0 -1
- package/dist/sniffer-49KPbDgq.mjs.map +0 -1
- package/dist/sniffer-ByhbEW5A.cjs.map +0 -1
- package/dist/terminal-Bdv--jhY.cjs +0 -481
- package/dist/terminal-Bdv--jhY.cjs.map +0 -1
- package/dist/terminal-D7Ntz6WE.mjs +0 -440
- package/dist/terminal-D7Ntz6WE.mjs.map +0 -1
- package/dist/types-B_bEQvb9.d.mts.map +0 -1
- package/dist/types-DkrDOMxw.d.cts.map +0 -1
- package/dist/workspace-BwgWJK7h.cjs.map +0 -1
- package/dist/workspace-Bwit4q9O.mjs.map +0 -1
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
const require_sniffer = require("./sniffer-
|
|
2
|
-
const require_local = require("./local-
|
|
1
|
+
const require_sniffer = require("./sniffer-BSwaL-dX.cjs");
|
|
2
|
+
const require_local = require("./local-BdH4XN0E.cjs");
|
|
3
|
+
const require_credentials = require("./credentials-Bzbg23n8.cjs");
|
|
3
4
|
const require_discover = require("./discover-DHdECueV.cjs");
|
|
4
5
|
const require_derive = require("./derive-DAbo49sm.cjs");
|
|
5
|
-
const require_workspace = require("./workspace-
|
|
6
|
+
const require_workspace = require("./workspace-BewAHZIo.cjs");
|
|
6
7
|
require("./config.cjs");
|
|
7
8
|
const require_storage = require("./storage-CSGoC3bK.cjs");
|
|
8
|
-
const require_store = require("./store-
|
|
9
|
-
const
|
|
10
|
-
|
|
9
|
+
const require_store = require("./store-CJF1Tqkq.cjs");
|
|
10
|
+
const require_state = require("./state-DF26e_lo.cjs");
|
|
11
|
+
require("./terminal-Bs5E1oxm.cjs");
|
|
11
12
|
let node_path = require("node:path");
|
|
12
13
|
let node_fs_promises = require("node:fs/promises");
|
|
13
14
|
let node_os = require("node:os");
|
|
@@ -86,7 +87,7 @@ const PROVISIONERS = {
|
|
|
86
87
|
*/
|
|
87
88
|
database: async (declaration, context) => {
|
|
88
89
|
if (declaration.kind !== "database") throw new WrongKind(declaration.kind);
|
|
89
|
-
const name =
|
|
90
|
+
const name = require_state.resourceName(declaration.id, declaration.kind, context.stage);
|
|
90
91
|
const { postgres } = await context.api.findOrCreatePostgres(serviceName({
|
|
91
92
|
stage: context.stage,
|
|
92
93
|
app: context.scope ?? context.project
|
|
@@ -123,7 +124,7 @@ const PROVISIONERS = {
|
|
|
123
124
|
if (declaration.kind !== "database-schema") throw new WrongKind(declaration.kind);
|
|
124
125
|
const parent = context.provisioned[declaration.of];
|
|
125
126
|
if (!parent) throw new UnresolvedParent(declaration.id, declaration.of);
|
|
126
|
-
const runtime =
|
|
127
|
+
const runtime = require_state.resourceName(declaration.id, declaration.kind, context.stage);
|
|
127
128
|
const owner = (0, _geekmidas_db_pg_roles.ownerRole)(runtime);
|
|
128
129
|
const reads = readsFrom(context.manifest, declaration.id);
|
|
129
130
|
const parentUrl = new URL(parent.provides[(0, _geekmidas_manifest.provideKey)(declaration.of, "url")] ?? "");
|
|
@@ -225,7 +226,7 @@ const PROVISIONERS = {
|
|
|
225
226
|
stage: context.stage,
|
|
226
227
|
app: context.scope ?? context.project
|
|
227
228
|
}, declaration.id);
|
|
228
|
-
const bucket =
|
|
229
|
+
const bucket = require_state.resourceName(declaration.id, declaration.kind, context.stage);
|
|
229
230
|
const user = `${bucket}-root`;
|
|
230
231
|
const password = derivedPassword(context, `objects:${declaration.id}`);
|
|
231
232
|
const { compose } = await context.api.findOrCreateCompose(service, context.projectId, context.environmentId, minioCompose({
|
|
@@ -672,7 +673,7 @@ async function provisionDeclared(options) {
|
|
|
672
673
|
clusters: {}
|
|
673
674
|
};
|
|
674
675
|
const manifest = options.manifest ?? await require_discover.discover({
|
|
675
|
-
patterns:
|
|
676
|
+
patterns: require_state.constructGlobs(workspace),
|
|
676
677
|
cwd: workspace.root
|
|
677
678
|
});
|
|
678
679
|
if (Object.keys(manifest).length === 0) return empty;
|
|
@@ -685,9 +686,9 @@ async function provisionDeclared(options) {
|
|
|
685
686
|
stage: options.stage,
|
|
686
687
|
project: workspace.name,
|
|
687
688
|
scope: options.scope ?? workspace.name,
|
|
688
|
-
cache:
|
|
689
|
-
events:
|
|
690
|
-
storage:
|
|
689
|
+
cache: require_state.cacheBackendFor(require_state.providerOf(workspace)),
|
|
690
|
+
events: require_state.eventsBackendFor(require_state.providerOf(workspace)),
|
|
691
|
+
storage: require_state.storageBackendFor(require_state.providerOf(workspace)),
|
|
691
692
|
addresses: surfaceAddresses(manifest, options.appUrls),
|
|
692
693
|
seed: options.seed,
|
|
693
694
|
...options.supplied ? { supplied: options.supplied } : {},
|
|
@@ -725,7 +726,7 @@ async function provisionDeclared(options) {
|
|
|
725
726
|
* run again.
|
|
726
727
|
*/
|
|
727
728
|
async function applyDeclared(client, statements) {
|
|
728
|
-
return (await
|
|
729
|
+
return (await require_state.applyPostgres(client, statements)).filter((entry) => entry.created).length;
|
|
729
730
|
}
|
|
730
731
|
/**
|
|
731
732
|
* The provisioning order, with queues and topics moved to the end.
|
|
@@ -788,7 +789,7 @@ async function createDnsProvider(options) {
|
|
|
788
789
|
if (isDnsProvider(config.provider)) return config.provider;
|
|
789
790
|
const provider = config.provider;
|
|
790
791
|
if (provider === "hostinger") {
|
|
791
|
-
const { HostingerProvider } = await Promise.resolve().then(() => require("./HostingerProvider-
|
|
792
|
+
const { HostingerProvider } = await Promise.resolve().then(() => require("./HostingerProvider-Dlmbfass.cjs"));
|
|
792
793
|
return new HostingerProvider();
|
|
793
794
|
}
|
|
794
795
|
if (provider === "route53") {
|
|
@@ -1058,7 +1059,7 @@ async function orchestrateDns(appHostnames, dnsConfig, dokployEndpoint, state) {
|
|
|
1058
1059
|
hasFailures = true;
|
|
1059
1060
|
}
|
|
1060
1061
|
if (state) {
|
|
1061
|
-
for (const record of domainRecords) if (record.created || record.existed)
|
|
1062
|
+
for (const record of domainRecords) if (record.created || record.existed) require_state.setDnsRecord(state, {
|
|
1062
1063
|
domain: rootDomain,
|
|
1063
1064
|
name: record.subdomain,
|
|
1064
1065
|
type: record.type,
|
|
@@ -1093,7 +1094,7 @@ async function verifyDnsRecords(appHostnames, serverIp, state) {
|
|
|
1093
1094
|
const results = [];
|
|
1094
1095
|
logger$2.log("\n🔍 Verifying DNS records...");
|
|
1095
1096
|
for (const [appName, hostname] of appHostnames) {
|
|
1096
|
-
if (
|
|
1097
|
+
if (require_state.isDnsVerified(state, hostname, serverIp)) {
|
|
1097
1098
|
logger$2.log(` ✓ ${hostname} (previously verified)`);
|
|
1098
1099
|
results.push({
|
|
1099
1100
|
hostname,
|
|
@@ -1107,7 +1108,7 @@ async function verifyDnsRecords(appHostnames, serverIp, state) {
|
|
|
1107
1108
|
try {
|
|
1108
1109
|
const resolvedIp = await resolveHostnameToIp(hostname);
|
|
1109
1110
|
if (resolvedIp === serverIp) {
|
|
1110
|
-
|
|
1111
|
+
require_state.setDnsVerification(state, hostname, serverIp);
|
|
1111
1112
|
logger$2.log(` ✓ ${hostname} → ${resolvedIp}`);
|
|
1112
1113
|
results.push({
|
|
1113
1114
|
hostname,
|
|
@@ -1214,7 +1215,7 @@ async function writeCredentialsFile(credentials) {
|
|
|
1214
1215
|
async function buildImage(imageRef, buildArgs, credentials, { cwd, signal, stdio }) {
|
|
1215
1216
|
logger$1.log(`\n🔨 Building Docker image: ${imageRef}`);
|
|
1216
1217
|
logger$1.log(" Generating Dockerfile for the pre-built bundle...");
|
|
1217
|
-
await
|
|
1218
|
+
await require_state.dockerCommand({
|
|
1218
1219
|
slim: true,
|
|
1219
1220
|
cwd
|
|
1220
1221
|
});
|
|
@@ -1237,7 +1238,7 @@ async function buildImage(imageRef, buildArgs, credentials, { cwd, signal, stdio
|
|
|
1237
1238
|
});
|
|
1238
1239
|
logger$1.log(`✅ Image built: ${imageRef}`);
|
|
1239
1240
|
} catch (error) {
|
|
1240
|
-
throw new
|
|
1241
|
+
throw new require_state.DockerBuildFailed(imageRef, error);
|
|
1241
1242
|
} finally {
|
|
1242
1243
|
await secret?.cleanup();
|
|
1243
1244
|
}
|
|
@@ -1255,7 +1256,7 @@ async function pushImage(imageRef, { cwd, signal, stdio }) {
|
|
|
1255
1256
|
});
|
|
1256
1257
|
logger$1.log(`✅ Image pushed: ${imageRef}`);
|
|
1257
1258
|
} catch (error) {
|
|
1258
|
-
throw new
|
|
1259
|
+
throw new require_state.DockerPushFailed(imageRef, error);
|
|
1259
1260
|
}
|
|
1260
1261
|
}
|
|
1261
1262
|
/**
|
|
@@ -1294,7 +1295,7 @@ async function pushedDigest(imageRef, { cwd, signal } = { cwd: process.cwd() })
|
|
|
1294
1295
|
async function deployDocker(options) {
|
|
1295
1296
|
const { stage, tag, skipPush, masterKey, config, buildArgs, credentials } = options;
|
|
1296
1297
|
const imageName = config.imageName;
|
|
1297
|
-
const imageRef =
|
|
1298
|
+
const imageRef = require_state.validateImageRef(getImageRef(config.registry, imageName, tag));
|
|
1298
1299
|
const docker = {
|
|
1299
1300
|
cwd: options.cwd ?? process.cwd(),
|
|
1300
1301
|
...options.signal ? { signal: options.signal } : {},
|
|
@@ -1341,10 +1342,10 @@ function generateSecret() {
|
|
|
1341
1342
|
* Otherwise generates a new one and stores it.
|
|
1342
1343
|
*/
|
|
1343
1344
|
function getOrGenerateSecret(state, appName, secretName) {
|
|
1344
|
-
const existing =
|
|
1345
|
+
const existing = require_state.getGeneratedSecret(state, appName, secretName);
|
|
1345
1346
|
if (existing) return existing;
|
|
1346
1347
|
const generated = generateSecret();
|
|
1347
|
-
|
|
1348
|
+
require_state.setGeneratedSecret(state, appName, secretName, generated);
|
|
1348
1349
|
return generated;
|
|
1349
1350
|
}
|
|
1350
1351
|
/**
|
|
@@ -1407,113 +1408,6 @@ function validateEnvVars(requiredVars, context) {
|
|
|
1407
1408
|
};
|
|
1408
1409
|
}
|
|
1409
1410
|
//#endregion
|
|
1410
|
-
//#region src/deploy/journal.ts
|
|
1411
|
-
var DeployJournal = class DeployJournal {
|
|
1412
|
-
store;
|
|
1413
|
-
stage;
|
|
1414
|
-
state;
|
|
1415
|
-
resources;
|
|
1416
|
-
version;
|
|
1417
|
-
existed;
|
|
1418
|
-
constructor(store, stage, state, resources, version, existed) {
|
|
1419
|
-
this.store = store;
|
|
1420
|
-
this.stage = stage;
|
|
1421
|
-
this.state = state;
|
|
1422
|
-
this.resources = resources;
|
|
1423
|
-
this.version = version;
|
|
1424
|
-
this.existed = existed;
|
|
1425
|
-
}
|
|
1426
|
-
/**
|
|
1427
|
-
* The stage's journal — its stored state, or `initial` written as the
|
|
1428
|
-
* stage's first state, so there is somewhere to record the very first
|
|
1429
|
-
* resource before it is created.
|
|
1430
|
-
*/
|
|
1431
|
-
static async open(store, stage, initial) {
|
|
1432
|
-
const stored = await store.read(stage);
|
|
1433
|
-
if (stored) return new DeployJournal(store, stage, stored.state, stored.resources, stored.version, true);
|
|
1434
|
-
const state = initial();
|
|
1435
|
-
const version = await store.write(stage, state, { expectedVersion: null });
|
|
1436
|
-
return new DeployJournal(store, stage, state, {}, version, false);
|
|
1437
|
-
}
|
|
1438
|
-
record(key) {
|
|
1439
|
-
return this.resources[key];
|
|
1440
|
-
}
|
|
1441
|
-
/** The keys a previous run marked `pending` and never saw created. */
|
|
1442
|
-
unfinished() {
|
|
1443
|
-
return Object.values(this.resources).filter((record) => record.status === "pending").map((record) => record.key);
|
|
1444
|
-
}
|
|
1445
|
-
/** Records that `entry` is about to be created. */
|
|
1446
|
-
async pending(entry) {
|
|
1447
|
-
await this.put({
|
|
1448
|
-
...entry,
|
|
1449
|
-
status: "pending"
|
|
1450
|
-
});
|
|
1451
|
-
}
|
|
1452
|
-
/** Records `entry` as existing with `id`; a no-op if it already is. */
|
|
1453
|
-
async ready(entry, id) {
|
|
1454
|
-
const current = this.resources[entry.key];
|
|
1455
|
-
if (current?.status === "ready" && current.id === id) return;
|
|
1456
|
-
await this.put({
|
|
1457
|
-
...entry,
|
|
1458
|
-
status: "ready",
|
|
1459
|
-
id
|
|
1460
|
-
});
|
|
1461
|
-
}
|
|
1462
|
-
/**
|
|
1463
|
-
* The resource `entry` names: by its recorded id, else by looking it up,
|
|
1464
|
-
* else created — with `pending` written before the create and `ready`
|
|
1465
|
-
* after, so a run that dies in between leaves a record the next run
|
|
1466
|
-
* resolves by looking the resource up rather than creating another.
|
|
1467
|
-
*/
|
|
1468
|
-
async ensure(entry, steps) {
|
|
1469
|
-
const record = this.resources[entry.key];
|
|
1470
|
-
let staleId;
|
|
1471
|
-
if (record?.status === "ready" && record.id && steps.get) {
|
|
1472
|
-
const known = await steps.get(record.id);
|
|
1473
|
-
if (known) {
|
|
1474
|
-
await this.ready(entry, steps.id(known));
|
|
1475
|
-
return {
|
|
1476
|
-
resource: known,
|
|
1477
|
-
via: "recorded"
|
|
1478
|
-
};
|
|
1479
|
-
}
|
|
1480
|
-
staleId = record.id;
|
|
1481
|
-
}
|
|
1482
|
-
const existing = await steps.find();
|
|
1483
|
-
if (existing) {
|
|
1484
|
-
await this.ready(entry, steps.id(existing));
|
|
1485
|
-
return {
|
|
1486
|
-
resource: existing,
|
|
1487
|
-
via: record?.status === "pending" ? "resumed" : "found",
|
|
1488
|
-
...staleId ? { staleId } : {}
|
|
1489
|
-
};
|
|
1490
|
-
}
|
|
1491
|
-
await this.pending(entry);
|
|
1492
|
-
const created = await steps.create();
|
|
1493
|
-
await this.ready(entry, steps.id(created));
|
|
1494
|
-
return {
|
|
1495
|
-
resource: created,
|
|
1496
|
-
via: "created",
|
|
1497
|
-
...staleId ? { staleId } : {}
|
|
1498
|
-
};
|
|
1499
|
-
}
|
|
1500
|
-
/** Writes the stage's state, keeping its resource records. */
|
|
1501
|
-
async save() {
|
|
1502
|
-
this.state.lastDeployedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
1503
|
-
this.version = await this.store.write(this.stage, this.state, { expectedVersion: this.version });
|
|
1504
|
-
}
|
|
1505
|
-
async put(record) {
|
|
1506
|
-
this.version = await this.store.putResource(this.stage, record, { expectedVersion: this.version });
|
|
1507
|
-
this.resources = {
|
|
1508
|
-
...this.resources,
|
|
1509
|
-
[record.key]: {
|
|
1510
|
-
...record,
|
|
1511
|
-
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
1512
|
-
}
|
|
1513
|
-
};
|
|
1514
|
-
}
|
|
1515
|
-
};
|
|
1516
|
-
//#endregion
|
|
1517
1411
|
//#region src/deploy/ownership.ts
|
|
1518
1412
|
/**
|
|
1519
1413
|
* Which Dokploy project a deploy is allowed to deploy into.
|
|
@@ -1651,7 +1545,7 @@ async function resolveProject(api, identity, stateProjectId, log = () => {}, hoo
|
|
|
1651
1545
|
var RegistryNotConfigured = class extends Error {
|
|
1652
1546
|
stage;
|
|
1653
1547
|
constructor(stage) {
|
|
1654
|
-
super(`Deploying '${stage}' needs a container registry: Dokploy pulls each app's image from one. Set deploy.
|
|
1548
|
+
super(`Deploying '${stage}' needs a container registry: Dokploy pulls each app's image from one. Set deploy.registry in gkm.config.ts (e.g. 'ghcr.io/acme'), and deploy.dokploy.registryId if Dokploy already holds that registry's credentials.`);
|
|
1655
1549
|
this.stage = stage;
|
|
1656
1550
|
this.name = "RegistryNotConfigured";
|
|
1657
1551
|
}
|
|
@@ -2139,7 +2033,7 @@ async function preflight({ workspace, manifest, stage, secrets: secretsStore, ct
|
|
|
2139
2033
|
logger.log("\n🔐 Loading secrets and analyzing environment requirements...");
|
|
2140
2034
|
const stored = await secretsStore.read();
|
|
2141
2035
|
if (!stored) logger.log(` ⚠️ No secrets found for stage "${stage}"; starting them`);
|
|
2142
|
-
const { secrets: stageSecrets, generated } =
|
|
2036
|
+
const { secrets: stageSecrets, generated } = require_state.withGeneratedSecrets(stored ?? require_storage.initStageSecrets(stage), manifest);
|
|
2143
2037
|
if (generated.length > 0) {
|
|
2144
2038
|
if (ctx.dryRun) logger.log(` 🔑 Would generate for "${stage}" (${secretsStore.store}): ${generated.join(", ")}`);
|
|
2145
2039
|
else {
|
|
@@ -2179,7 +2073,7 @@ async function provisionDokploy(run) {
|
|
|
2179
2073
|
};
|
|
2180
2074
|
const { api, endpoint } = await dokployApi(workspace, ctx);
|
|
2181
2075
|
logger.log("\n📋 Loading deploy state...");
|
|
2182
|
-
const journal = await DeployJournal.open(store, stage, () =>
|
|
2076
|
+
const journal = await require_state.DeployJournal.open(store, stage, () => require_state.createEmptyState(stage, "", ""));
|
|
2183
2077
|
const state = journal.state;
|
|
2184
2078
|
if (journal.existed) logger.log(` Found existing state for stage "${stage}"`);
|
|
2185
2079
|
else logger.log(` Creating new state for stage "${stage}"`);
|
|
@@ -2235,7 +2129,7 @@ async function provisionDokploy(run) {
|
|
|
2235
2129
|
state.environmentId = environmentId;
|
|
2236
2130
|
state.identity = identity.key;
|
|
2237
2131
|
logger.log("\n🐳 Checking registry...");
|
|
2238
|
-
const registry = workspace.deploy.
|
|
2132
|
+
const registry = workspace.deploy.registry;
|
|
2239
2133
|
let registryCreated = false;
|
|
2240
2134
|
const dokployRegistry = await resolveRegistry(api, {
|
|
2241
2135
|
stage,
|
|
@@ -2311,10 +2205,10 @@ async function provisionDokploy(run) {
|
|
|
2311
2205
|
projectName: identity.scope,
|
|
2312
2206
|
stage,
|
|
2313
2207
|
config: workspace.deploy.backups,
|
|
2314
|
-
existingState:
|
|
2208
|
+
existingState: require_state.getBackupState(state),
|
|
2315
2209
|
logger
|
|
2316
2210
|
});
|
|
2317
|
-
|
|
2211
|
+
require_state.setBackupState(state, backupState);
|
|
2318
2212
|
if (!backupState.postgresBackupId) {
|
|
2319
2213
|
const backupSchedule = workspace.deploy.backups.schedule ?? "0 2 * * *";
|
|
2320
2214
|
const backupRetention = workspace.deploy.backups.retention ?? 30;
|
|
@@ -2328,7 +2222,7 @@ async function provisionDokploy(run) {
|
|
|
2328
2222
|
enabled: true,
|
|
2329
2223
|
keepLatestCount: backupRetention
|
|
2330
2224
|
});
|
|
2331
|
-
|
|
2225
|
+
require_state.setPostgresBackupId(state, backup.backupId);
|
|
2332
2226
|
logger.log(` ✓ Postgres backup schedule created (${backupSchedule})`);
|
|
2333
2227
|
} else logger.log(" ✓ Using existing postgres backup schedule");
|
|
2334
2228
|
}
|
|
@@ -2395,12 +2289,12 @@ async function releaseDokploy(run) {
|
|
|
2395
2289
|
ctx.emit({
|
|
2396
2290
|
type: "app.failed",
|
|
2397
2291
|
app: appName,
|
|
2398
|
-
error:
|
|
2292
|
+
error: require_sniffer.eventError(error)
|
|
2399
2293
|
});
|
|
2400
2294
|
};
|
|
2401
2295
|
/** An image is pushed: worth keeping even if what follows fails. */
|
|
2402
2296
|
const built = async (appName, image, ref) => {
|
|
2403
|
-
|
|
2297
|
+
require_state.setDeployedImage(state, appName, {
|
|
2404
2298
|
ref: image.imageRef ?? ref,
|
|
2405
2299
|
...image.digest ? { digest: image.digest } : {}
|
|
2406
2300
|
});
|
|
@@ -2680,7 +2574,7 @@ async function ensureApplication(api, journal, appName, dokployAppName, projectI
|
|
|
2680
2574
|
action: via === "created" ? "create" : "reuse",
|
|
2681
2575
|
id: resource.applicationId
|
|
2682
2576
|
}, via);
|
|
2683
|
-
|
|
2577
|
+
require_state.setApplicationId(journal.state, appName, resource.applicationId);
|
|
2684
2578
|
return resource;
|
|
2685
2579
|
}
|
|
2686
2580
|
/**
|
|
@@ -2758,7 +2652,7 @@ async function dokployApi(workspace, ctx) {
|
|
|
2758
2652
|
/** Each app's public host, the same way the deploy resolves it. */
|
|
2759
2653
|
function hostOf(workspace, appName, stage) {
|
|
2760
2654
|
const app = workspace.apps[appName];
|
|
2761
|
-
return
|
|
2655
|
+
return require_state.resolveHost(appName, app, stage, workspace.deploy?.domains, app.type === "web" && require_state.isMainFrontendApp(appName, app, workspace.apps));
|
|
2762
2656
|
}
|
|
2763
2657
|
/**
|
|
2764
2658
|
* What a deploy would do, from the same lookups it starts with — and nothing
|
|
@@ -2807,7 +2701,7 @@ async function planDokploy(run) {
|
|
|
2807
2701
|
let registryPlanned;
|
|
2808
2702
|
const registry = await resolveRegistry(api, {
|
|
2809
2703
|
stage,
|
|
2810
|
-
registry: workspace.deploy.
|
|
2704
|
+
registry: workspace.deploy.registry,
|
|
2811
2705
|
configuredId: workspace.deploy.dokploy?.registryId,
|
|
2812
2706
|
stateId: state?.registryId,
|
|
2813
2707
|
log: (message) => logger.log(message),
|
|
@@ -2852,7 +2746,7 @@ async function planDokploy(run) {
|
|
|
2852
2746
|
resourceType: "application",
|
|
2853
2747
|
action: "create"
|
|
2854
2748
|
}, dokployAppName);
|
|
2855
|
-
const ref = require_store.imageRef(identity, appName, workspace.deploy.
|
|
2749
|
+
const ref = require_store.imageRef(identity, appName, workspace.deploy.registry, imageTag);
|
|
2856
2750
|
plan({
|
|
2857
2751
|
key: `image:${appName}`,
|
|
2858
2752
|
resourceType: "image",
|
|
@@ -2973,4 +2867,4 @@ Object.defineProperty(exports, "verifyDokploy", {
|
|
|
2973
2867
|
}
|
|
2974
2868
|
});
|
|
2975
2869
|
|
|
2976
|
-
//# sourceMappingURL=deploy-
|
|
2870
|
+
//# sourceMappingURL=deploy-Cy8igpQF.cjs.map
|