@geekmidas/cli 10.0.0-alpha.74 → 10.0.0-alpha.75
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-D_78eaHM.cjs → LegacyStateStore-BFnXUFlx.cjs} +2 -2
- package/dist/{LegacyStateStore-D_78eaHM.cjs.map → LegacyStateStore-BFnXUFlx.cjs.map} +1 -1
- package/dist/{LegacyStateStore-DTo7z924.mjs → LegacyStateStore-cpt3K1vx.mjs} +2 -2
- package/dist/{LegacyStateStore-DTo7z924.mjs.map → LegacyStateStore-cpt3K1vx.mjs.map} +1 -1
- package/dist/{LocalStateStore-CNjgkRk4.mjs → LocalStateStore-RH9F2ZEy.mjs} +2 -2
- package/dist/{LocalStateStore-CNjgkRk4.mjs.map → LocalStateStore-RH9F2ZEy.mjs.map} +1 -1
- package/dist/{LocalStateStore-BhrlQIXD.cjs → LocalStateStore-zQGZ9b4J.cjs} +2 -2
- package/dist/{LocalStateStore-BhrlQIXD.cjs.map → LocalStateStore-zQGZ9b4J.cjs.map} +1 -1
- package/dist/{S3StateStore-oCxRs6HM.cjs → S3StateStore-CT-ZMlQY.cjs} +2 -2
- package/dist/{S3StateStore-oCxRs6HM.cjs.map → S3StateStore-CT-ZMlQY.cjs.map} +1 -1
- package/dist/{S3StateStore-g2P7T_Mo.mjs → S3StateStore-DBeBc0c0.mjs} +2 -2
- package/dist/{S3StateStore-g2P7T_Mo.mjs.map → S3StateStore-DBeBc0c0.mjs.map} +1 -1
- package/dist/{SSMStateStore-DXp0m7XI.cjs → SSMStateStore-HmsH3c4v.cjs} +2 -2
- package/dist/{SSMStateStore-DXp0m7XI.cjs.map → SSMStateStore-HmsH3c4v.cjs.map} +1 -1
- package/dist/{SSMStateStore-CYenunmK.mjs → SSMStateStore-rnzNfOaV.mjs} +2 -2
- package/dist/{SSMStateStore-CYenunmK.mjs.map → SSMStateStore-rnzNfOaV.mjs.map} +1 -1
- package/dist/{add-Djrr12Xc.cjs → add-CHBin8TF.cjs} +2 -2
- package/dist/{add-Djrr12Xc.cjs.map → add-CHBin8TF.cjs.map} +1 -1
- package/dist/{add-BTH7WaH3.mjs → add-Cvzdw8cf.mjs} +2 -2
- package/dist/{add-BTH7WaH3.mjs.map → add-Cvzdw8cf.mjs.map} +1 -1
- package/dist/{bundler-utHuESvL.cjs → bundler-_8AEZhrs.cjs} +5 -5
- package/dist/{bundler-utHuESvL.cjs.map → bundler-_8AEZhrs.cjs.map} +1 -1
- package/dist/{bundler-BUojOkof.mjs → bundler-xjp5RwRS.mjs} +5 -5
- package/dist/{bundler-BUojOkof.mjs.map → bundler-xjp5RwRS.mjs.map} +1 -1
- package/dist/{cli-Bx0sUzxH.cjs → cli-B4ktxAsM.cjs} +3 -3
- package/dist/{cli-Bx0sUzxH.cjs.map → cli-B4ktxAsM.cjs.map} +1 -1
- package/dist/{cli-CyYceKTS.mjs → cli-BTGfA0B7.mjs} +3 -3
- package/dist/{cli-CyYceKTS.mjs.map → cli-BTGfA0B7.mjs.map} +1 -1
- package/dist/{compose-DZp8DJ0A.mjs → compose-DdH2JQJD.mjs} +219 -152
- package/dist/compose-DdH2JQJD.mjs.map +1 -0
- package/dist/{compose-iuw8wfHk.cjs → compose-UKyv_1yU.cjs} +241 -150
- package/dist/compose-UKyv_1yU.cjs.map +1 -0
- package/dist/deploy/public.cjs +7 -6
- package/dist/deploy/public.d.cts +11 -0
- package/dist/deploy/public.d.cts.map +1 -1
- package/dist/deploy/public.d.mts +11 -0
- package/dist/deploy/public.d.mts.map +1 -1
- package/dist/deploy/public.mjs +7 -7
- package/dist/{deploy-C17K7Imy.mjs → deploy-CuSsiFIc.mjs} +21 -5
- package/dist/deploy-CuSsiFIc.mjs.map +1 -0
- package/dist/{deploy-eWorhvQp.cjs → deploy-XUZoA1us.cjs} +26 -4
- package/dist/deploy-XUZoA1us.cjs.map +1 -0
- package/dist/{dokploy-DKzcI-RL.cjs → dokploy-Cvgg_pID.cjs} +2 -2
- package/dist/{dokploy-DKzcI-RL.cjs.map → dokploy-Cvgg_pID.cjs.map} +1 -1
- package/dist/{dokploy-DKa49Nqm.mjs → dokploy-DZXTQX10.mjs} +2 -2
- package/dist/{dokploy-DKa49Nqm.mjs.map → dokploy-DZXTQX10.mjs.map} +1 -1
- package/dist/{encryption-sTMz3aWi.mjs → encryption-JkeMPugf.mjs} +2 -2
- package/dist/{encryption-sTMz3aWi.mjs.map → encryption-JkeMPugf.mjs.map} +1 -1
- package/dist/{encryption-DSkJdoyk.cjs → encryption-w-Ehh9DW.cjs} +2 -2
- package/dist/{encryption-DSkJdoyk.cjs.map → encryption-w-Ehh9DW.cjs.map} +1 -1
- package/dist/{engine-B1b4I34Z.mjs → engine-CmozkHxq.mjs} +192 -4
- package/dist/engine-CmozkHxq.mjs.map +1 -0
- package/dist/{engine-Bh76sAHy.cjs → engine-zpWBMsQq.cjs} +195 -7
- package/dist/engine-zpWBMsQq.cjs.map +1 -0
- package/dist/{github-BvN3CfxM.cjs → github-BGdJ-Lnm.cjs} +2 -2
- package/dist/{github-BvN3CfxM.cjs.map → github-BGdJ-Lnm.cjs.map} +1 -1
- package/dist/{github-C9ODoyZU.mjs → github-BNngHoId.mjs} +2 -2
- package/dist/{github-C9ODoyZU.mjs.map → github-BNngHoId.mjs.map} +1 -1
- package/dist/index.cjs +70 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +69 -44
- package/dist/index.mjs.map +1 -1
- package/dist/{migrate-CTtJhGV9.mjs → migrate-BLL1RTAj.mjs} +2 -2
- package/dist/{migrate-CTtJhGV9.mjs.map → migrate-BLL1RTAj.mjs.map} +1 -1
- package/dist/{migrate-B0FCZNkp.cjs → migrate-CgjlYeun.cjs} +2 -2
- package/dist/{migrate-B0FCZNkp.cjs.map → migrate-CgjlYeun.cjs.map} +1 -1
- package/dist/{resolve-DSAXj_47.mjs → resolve-DZNx7rLy.mjs} +3 -3
- package/dist/{resolve-DSAXj_47.mjs.map → resolve-DZNx7rLy.mjs.map} +1 -1
- package/dist/{resolve-D_BU-wKA.cjs → resolve-fevXn-wZ.cjs} +3 -3
- package/dist/{resolve-D_BU-wKA.cjs.map → resolve-fevXn-wZ.cjs.map} +1 -1
- package/dist/{rollback-CWYTUhfW.mjs → rollback-CLi5Pln_.mjs} +4 -4
- package/dist/{rollback-CWYTUhfW.mjs.map → rollback-CLi5Pln_.mjs.map} +1 -1
- package/dist/{rollback-DJy3t696.cjs → rollback-Dw-FW3X2.cjs} +4 -4
- package/dist/{rollback-DJy3t696.cjs.map → rollback-Dw-FW3X2.cjs.map} +1 -1
- package/dist/{sniffer-BFmdZpZ2.mjs → sniffer-BmCvVyhq.mjs} +59 -7
- package/dist/sniffer-BmCvVyhq.mjs.map +1 -0
- package/dist/{sniffer-C-T7dSMN.cjs → sniffer-bMzrX4cO.cjs} +75 -5
- package/dist/{sniffer-C-T7dSMN.cjs.map → sniffer-bMzrX4cO.cjs.map} +1 -1
- package/dist/{state-DpkxSwzI.mjs → state-BrWIOce_.mjs} +46 -284
- package/dist/state-BrWIOce_.mjs.map +1 -0
- package/dist/{state-DCwRWyh-.cjs → state-kA4Fkufx.cjs} +56 -312
- package/dist/state-kA4Fkufx.cjs.map +1 -0
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.mjs +1 -1
- package/package.json +17 -17
- package/dist/compose-DZp8DJ0A.mjs.map +0 -1
- package/dist/compose-iuw8wfHk.cjs.map +0 -1
- package/dist/deploy-C17K7Imy.mjs.map +0 -1
- package/dist/deploy-eWorhvQp.cjs.map +0 -1
- package/dist/engine-B1b4I34Z.mjs.map +0 -1
- package/dist/engine-Bh76sAHy.cjs.map +0 -1
- package/dist/sniffer-BFmdZpZ2.mjs.map +0 -1
- package/dist/state-DCwRWyh-.cjs.map +0 -1
- package/dist/state-DpkxSwzI.mjs.map +0 -1
|
@@ -1,20 +1,208 @@
|
|
|
1
|
+
import { a as runOutput, i as run } from "./run-BJLIerMM.mjs";
|
|
1
2
|
import { i as LocalSandbox, t as MissingCredential } from "./credentials-pAtB70k3.mjs";
|
|
2
3
|
import { a as discriminatedUnion, c as looseObject, f as string, n as array, s as literal, u as object } from "./schemas-D-xeKJDD.mjs";
|
|
3
4
|
import { c as runWorker, d as output, r as discover } from "./discover-BPelzeGW.mjs";
|
|
4
5
|
import { i as activeSandbox } from "./sandbox-Dm247NGx.mjs";
|
|
5
6
|
import { t as appKey } from "./derive-B4vDpzgP.mjs";
|
|
6
7
|
import { g as stripPublicPrefix, h as getPublicEnvPrefix, s as getAppBuildOrder } from "./workspace-C7NqCsQF.mjs";
|
|
7
|
-
import { $ as
|
|
8
|
-
import { f as StateStoreBusy, m as StateVersionConflict, o as DokployApi, s as DokployApiError, t as sniffAllApps, v as eventError } from "./sniffer-
|
|
8
|
+
import { $t as imageRef, A as ExternalServicesNotConfigured, Ct as WORKER_PORT, D as otelEnv, Dt as eventsBackendFor, Et as cacheBackendFor, F as externalServices, I as manifestServiceDeclarations, N as assertExternalServices, Ot as providerOf, P as devServicesUsed, Qt as imageName, R as reportDevServices, S as validateImageRef, T as resolveHost, V as workerUnits, Xt as applicationName, Y as constructGlobs, a as recordRelease, c as setBackupState, d as setGeneratedSecret, en as isOwnedBy, f as setPostgresBackupId, ft as dockerfileOf, g as DockerPushFailed, h as DockerBuildFailed, i as isDnsVerified, in as initStageSecrets, j as STORAGE_KEY_PAIR, kt as storageBackendFor, l as setDnsRecord, m as withGeneratedSecrets, mt as workerEnvKeys, n as getBackupState, nn as ownershipMarker, o as recordRollback, p as DeployJournal, r as getGeneratedSecret, rn as projectName, rt as applyPostgres, s as setApplicationId, sn as toEmbeddableSecrets, t as createEmptyState, tn as markerOf, u as setDnsVerification, v as dockerCommand, vt as resourceName, w as isMainFrontendApp, x as workerDockerfileOf } from "./state-BrWIOce_.mjs";
|
|
9
|
+
import { f as StateStoreBusy, m as StateVersionConflict, o as DokployApi, s as DokployApiError, t as sniffAllApps, v as eventError, x as keyFingerprint, y as encryptSecrets } from "./sniffer-BmCvVyhq.mjs";
|
|
9
10
|
import { o as migrationFiles } from "./provider-D7rQzzzf.mjs";
|
|
10
11
|
import { n as assertStageCredentials } from "./credentialSchemas-BJqRJNK4.mjs";
|
|
11
|
-
import { join } from "node:path";
|
|
12
|
+
import { join, relative } from "node:path";
|
|
13
|
+
import { chmod, mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
14
|
+
import { tmpdir } from "node:os";
|
|
12
15
|
import { cacheTable, cloudName, cookieDomain, dependentsOf, externalApiUrl, migrationTargets, mobileOrigins, provideKey, provisionOrder, schemeBase } from "@geekmidas/manifest";
|
|
13
16
|
import { createHash, randomBytes } from "node:crypto";
|
|
14
17
|
import { ownerRole, readerRole, roleStatements } from "@geekmidas/db/pg/roles";
|
|
15
18
|
import { Client } from "pg";
|
|
16
19
|
import { cacheTableStatements } from "@geekmidas/cache/postgres";
|
|
17
20
|
import { lookup } from "node:dns/promises";
|
|
21
|
+
//#region src/deploy/docker.ts
|
|
22
|
+
const logger$3 = output;
|
|
23
|
+
/**
|
|
24
|
+
* The id the Dockerfile templates mount the encrypted credentials under:
|
|
25
|
+
* `RUN --mount=type=secret,id=gkm_credentials`.
|
|
26
|
+
*/
|
|
27
|
+
const CREDENTIALS_SECRET_ID = "gkm_credentials";
|
|
28
|
+
/**
|
|
29
|
+
* Get the full image reference
|
|
30
|
+
*/
|
|
31
|
+
function getImageRef(registry, imageName, tag) {
|
|
32
|
+
if (registry) return `${registry}/${imageName}:${tag}`;
|
|
33
|
+
return `${imageName}:${tag}`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* The `docker build` argv for an image.
|
|
37
|
+
*
|
|
38
|
+
* One element per value, so nothing in a ref or a build arg is read by a
|
|
39
|
+
* shell, and `--opt=value` rather than `--opt value`, so a value that starts
|
|
40
|
+
* with `-` cannot be taken for one of docker's own flags.
|
|
41
|
+
*
|
|
42
|
+
* @internal Exported for testing
|
|
43
|
+
*/
|
|
44
|
+
function dockerBuildArgs(options) {
|
|
45
|
+
const { dockerfilePath, imageRef, buildArgs = [], credentialsFile } = options;
|
|
46
|
+
return [
|
|
47
|
+
"build",
|
|
48
|
+
"--platform=linux/amd64",
|
|
49
|
+
`--file=${dockerfilePath}`,
|
|
50
|
+
`--tag=${imageRef}`,
|
|
51
|
+
...buildArgs.map((arg) => `--build-arg=${arg}`),
|
|
52
|
+
...credentialsFile ? [`--secret=id=${CREDENTIALS_SECRET_ID},src=${credentialsFile}`] : [],
|
|
53
|
+
"."
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The build arg that names which credentials an image embeds: a hash of the
|
|
58
|
+
* ciphertext, which is not a secret. A BuildKit secret is no part of the
|
|
59
|
+
* build cache's key, so without it a rebuild with credentials encrypted under
|
|
60
|
+
* a new key would reuse the layer that embedded the old ones.
|
|
61
|
+
*/
|
|
62
|
+
function credentialsBuildArg(credentials) {
|
|
63
|
+
return `GKM_CIPHERTEXT_HASH=${createHash("sha256").update(`${credentials.encrypted}\n${credentials.iv}`).digest("hex").slice(0, 16)}`;
|
|
64
|
+
}
|
|
65
|
+
/** The secret file's content: ciphertext, then IV, one per line. */
|
|
66
|
+
function credentialsFileContent(credentials) {
|
|
67
|
+
return `${credentials.encrypted}\n${credentials.iv}\n`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Write the encrypted credentials where `docker build --secret` reads them.
|
|
71
|
+
*
|
|
72
|
+
* Two lines — ciphertext, then IV — so a template can split them with `sed`
|
|
73
|
+
* in any base image. Owner-only, in a directory of its own, and the returned
|
|
74
|
+
* cleanup removes both whatever the build did.
|
|
75
|
+
*
|
|
76
|
+
* @internal Exported for testing
|
|
77
|
+
*/
|
|
78
|
+
async function writeCredentialsFile(credentials) {
|
|
79
|
+
const dir = await mkdtemp(join(tmpdir(), "gkm-credentials-"));
|
|
80
|
+
const path = join(dir, CREDENTIALS_SECRET_ID);
|
|
81
|
+
await writeFile(path, credentialsFileContent(credentials), { mode: 384 });
|
|
82
|
+
await chmod(path, 384);
|
|
83
|
+
return {
|
|
84
|
+
path,
|
|
85
|
+
cleanup: () => rm(dir, {
|
|
86
|
+
recursive: true,
|
|
87
|
+
force: true
|
|
88
|
+
})
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Build Docker image
|
|
93
|
+
* @param imageRef - Full image reference (registry/name:tag)
|
|
94
|
+
* @param buildArgs - Build arguments to pass to docker build
|
|
95
|
+
* @param credentials - Encrypted credentials, passed as a build secret
|
|
96
|
+
*/
|
|
97
|
+
async function buildImage(imageRef, buildArgs, credentials, { cwd, dockerfile, signal, stdio }) {
|
|
98
|
+
logger$3.log(`\n🔨 Building Docker image: ${imageRef}`);
|
|
99
|
+
logger$3.log(" Generating Dockerfile...");
|
|
100
|
+
const { buildRoot } = await dockerCommand({ cwd });
|
|
101
|
+
const dockerfilePath = relative(buildRoot, dockerfile);
|
|
102
|
+
const secret = credentials ? await writeCredentialsFile(credentials) : void 0;
|
|
103
|
+
try {
|
|
104
|
+
await run("docker", dockerBuildArgs({
|
|
105
|
+
dockerfilePath,
|
|
106
|
+
imageRef,
|
|
107
|
+
buildArgs: [...buildArgs ?? [], ...credentials ? [credentialsBuildArg(credentials)] : []],
|
|
108
|
+
credentialsFile: secret?.path
|
|
109
|
+
}), {
|
|
110
|
+
cwd: buildRoot,
|
|
111
|
+
env: {
|
|
112
|
+
...process.env,
|
|
113
|
+
DOCKER_BUILDKIT: "1"
|
|
114
|
+
},
|
|
115
|
+
...signal ? { signal } : {},
|
|
116
|
+
...stdio ? { stdio } : {}
|
|
117
|
+
});
|
|
118
|
+
logger$3.log(`✅ Image built: ${imageRef}`);
|
|
119
|
+
} catch (error) {
|
|
120
|
+
throw new DockerBuildFailed(imageRef, error);
|
|
121
|
+
} finally {
|
|
122
|
+
await secret?.cleanup();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Push Docker image to registry
|
|
127
|
+
*/
|
|
128
|
+
async function pushImage(imageRef, { cwd, signal, stdio }) {
|
|
129
|
+
logger$3.log(`\n☁️ Pushing image: ${imageRef}`);
|
|
130
|
+
try {
|
|
131
|
+
await run("docker", ["push", imageRef], {
|
|
132
|
+
cwd,
|
|
133
|
+
...signal ? { signal } : {},
|
|
134
|
+
...stdio ? { stdio } : {}
|
|
135
|
+
});
|
|
136
|
+
logger$3.log(`✅ Image pushed: ${imageRef}`);
|
|
137
|
+
} catch (error) {
|
|
138
|
+
throw new DockerPushFailed(imageRef, error);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* The digest the registry gave a pushed image, `sha256:…`.
|
|
143
|
+
*
|
|
144
|
+
* A tag can be pushed over — by the next deploy, or by anything else that
|
|
145
|
+
* shares the repository — and the digest is what says which image a stage
|
|
146
|
+
* actually ran. `RepoDigests` has one entry per repository the image was
|
|
147
|
+
* pushed to, so the one for this ref's repository is picked by name.
|
|
148
|
+
*
|
|
149
|
+
* @internal Exported for testing
|
|
150
|
+
*/
|
|
151
|
+
async function pushedDigest(imageRef, { cwd, signal } = { cwd: process.cwd() }) {
|
|
152
|
+
const repository = imageRef.split("@")[0].replace(/:[\w][\w.-]*$/, "");
|
|
153
|
+
const output = await runOutput("docker", [
|
|
154
|
+
"image",
|
|
155
|
+
"inspect",
|
|
156
|
+
"--format={{json .RepoDigests}}",
|
|
157
|
+
imageRef
|
|
158
|
+
], {
|
|
159
|
+
cwd,
|
|
160
|
+
...signal ? { signal } : {}
|
|
161
|
+
});
|
|
162
|
+
let digests;
|
|
163
|
+
try {
|
|
164
|
+
digests = JSON.parse(output.trim() || "[]");
|
|
165
|
+
} catch {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (!Array.isArray(digests)) return void 0;
|
|
169
|
+
return digests.find((entry) => typeof entry === "string" && entry.startsWith(`${repository}@`))?.slice(repository.length + 1);
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Deploy using Docker (build and optionally push image)
|
|
173
|
+
*/
|
|
174
|
+
async function deployDocker(options) {
|
|
175
|
+
const { stage, tag, skipPush, masterKey, config, buildArgs, credentials } = options;
|
|
176
|
+
const imageName = config.imageName;
|
|
177
|
+
const imageRef = validateImageRef(getImageRef(config.registry, imageName, tag));
|
|
178
|
+
const cwd = options.cwd ?? process.cwd();
|
|
179
|
+
const docker = {
|
|
180
|
+
cwd,
|
|
181
|
+
dockerfile: join(cwd, options.dockerfile ?? dockerfileOf(config.appName ?? imageName, options.appPath ?? ".")),
|
|
182
|
+
...options.signal ? { signal: options.signal } : {},
|
|
183
|
+
...options.stdio ? { stdio: options.stdio } : {}
|
|
184
|
+
};
|
|
185
|
+
await buildImage(imageRef, buildArgs, credentials, docker);
|
|
186
|
+
let digest;
|
|
187
|
+
if (!skipPush) {
|
|
188
|
+
if (!config.registry) logger$3.warn("\n⚠️ No registry configured. Use --skip-push or configure docker.registry in gkm.config.ts");
|
|
189
|
+
else {
|
|
190
|
+
await pushImage(imageRef, docker);
|
|
191
|
+
digest = await pushedDigest(imageRef, docker);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
logger$3.log("\n✅ Docker deployment ready!");
|
|
195
|
+
logger$3.log(`\n📋 Deployment details:`);
|
|
196
|
+
logger$3.log(` Image: ${imageRef}`);
|
|
197
|
+
logger$3.log(` Stage: ${stage}`);
|
|
198
|
+
if (masterKey) logger$3.log(`\n🔐 Run the container with GKM_MASTER_KEY set to the key with fingerprint ${keyFingerprint(masterKey)}.`);
|
|
199
|
+
return {
|
|
200
|
+
imageRef,
|
|
201
|
+
...digest ? { digest } : {},
|
|
202
|
+
masterKey
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//#endregion
|
|
18
206
|
//#region src/deploy/ownership.ts
|
|
19
207
|
/**
|
|
20
208
|
* Which Dokploy project a deploy is allowed to deploy into.
|
|
@@ -3204,4 +3392,4 @@ const MOBILE_SKIP_REASON = "deploys via its framework toolchain";
|
|
|
3204
3392
|
//#endregion
|
|
3205
3393
|
export { RegistryNotConfigured as _, dokployResult as a, releaseDokploy as c, validateDokploy as d, verifyDokploy as f, RegistryAmbiguous as g, HealthCheckTimedOut as h, dokployApi as i, restoreImage as l, DeployMigrationsFailed as m, FrontendDeployFailed as n, planDokploy as o, verifySettings as p, MissingEnvVars as r, provisionDokploy as s, BackendDeployFailed as t, rollbackDokploy as u, RegistryNotFound as v, ProjectNotOwned as y };
|
|
3206
3394
|
|
|
3207
|
-
//# sourceMappingURL=engine-
|
|
3395
|
+
//# sourceMappingURL=engine-CmozkHxq.mjs.map
|