@geekmidas/cli 10.0.0-alpha.116 → 10.0.0-alpha.117
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{GoDaddyProvider-BDvIMTO-.cjs → GoDaddyProvider-DY4QFpCg.cjs} +2 -2
- package/dist/{GoDaddyProvider-BDvIMTO-.cjs.map → GoDaddyProvider-DY4QFpCg.cjs.map} +1 -1
- package/dist/{GoDaddyProvider-eW1mre1g.mjs → GoDaddyProvider-I3WR0Irc.mjs} +2 -2
- package/dist/{GoDaddyProvider-eW1mre1g.mjs.map → GoDaddyProvider-I3WR0Irc.mjs.map} +1 -1
- package/dist/{LegacyStateStore-DFeykTd8.cjs → LegacyStateStore-E2rUw9Vu.cjs} +3 -3
- package/dist/{LegacyStateStore-DFeykTd8.cjs.map → LegacyStateStore-E2rUw9Vu.cjs.map} +1 -1
- package/dist/{LegacyStateStore-Ba1_x0cr.mjs → LegacyStateStore-RG7min0B.mjs} +3 -3
- package/dist/{LegacyStateStore-Ba1_x0cr.mjs.map → LegacyStateStore-RG7min0B.mjs.map} +1 -1
- package/dist/{LocalStateStore-CV-04jpI.cjs → LocalStateStore-CjzhVPcn.cjs} +2 -2
- package/dist/{LocalStateStore-CV-04jpI.cjs.map → LocalStateStore-CjzhVPcn.cjs.map} +1 -1
- package/dist/{LocalStateStore-C1rUUvBr.mjs → LocalStateStore-kI2cUMCn.mjs} +2 -2
- package/dist/{LocalStateStore-C1rUUvBr.mjs.map → LocalStateStore-kI2cUMCn.mjs.map} +1 -1
- package/dist/{S3StateStore-CqYi-1sb.cjs → S3StateStore-C-IrziGt.cjs} +2 -2
- package/dist/{S3StateStore-CqYi-1sb.cjs.map → S3StateStore-C-IrziGt.cjs.map} +1 -1
- package/dist/{S3StateStore-Dszt4fN5.mjs → S3StateStore-DZ8TCie0.mjs} +2 -2
- package/dist/{S3StateStore-Dszt4fN5.mjs.map → S3StateStore-DZ8TCie0.mjs.map} +1 -1
- package/dist/{SSMStateStore-BYRUyMkE.mjs → SSMStateStore-BqCLuXrh.mjs} +2 -2
- package/dist/{SSMStateStore-BYRUyMkE.mjs.map → SSMStateStore-BqCLuXrh.mjs.map} +1 -1
- package/dist/{SSMStateStore-zpHjDCAW.cjs → SSMStateStore-WRcHtpTy.cjs} +2 -2
- package/dist/{SSMStateStore-zpHjDCAW.cjs.map → SSMStateStore-WRcHtpTy.cjs.map} +1 -1
- package/dist/{add-DXdJjp0b.mjs → add-CZYOIVw8.mjs} +3 -3
- package/dist/{add-DXdJjp0b.mjs.map → add-CZYOIVw8.mjs.map} +1 -1
- package/dist/{add-0XI8_HOf.cjs → add-D31_V4oL.cjs} +3 -3
- package/dist/{add-0XI8_HOf.cjs.map → add-D31_V4oL.cjs.map} +1 -1
- package/dist/{bundler-CgcwaVI0.mjs → bundler-BADrhw79.mjs} +7 -59
- package/dist/bundler-BADrhw79.mjs.map +1 -0
- package/dist/{bundler-B2_2-Dum.cjs → bundler-BY_-iPge.cjs} +6 -58
- package/dist/bundler-BY_-iPge.cjs.map +1 -0
- package/dist/{cli-H0uB_znq.mjs → cli-BI2wjJaB.mjs} +2 -2
- package/dist/{cli-H0uB_znq.mjs.map → cli-BI2wjJaB.mjs.map} +1 -1
- package/dist/{cli-5k6kV_i4.cjs → cli-CfB5RjJS.cjs} +2 -2
- package/dist/{cli-5k6kV_i4.cjs.map → cli-CfB5RjJS.cjs.map} +1 -1
- package/dist/{compose-CYeMW2_o.cjs → compose-BEMY3EwM.cjs} +4 -4
- package/dist/{compose-CYeMW2_o.cjs.map → compose-BEMY3EwM.cjs.map} +1 -1
- package/dist/{compose-BEiJWrB7.mjs → compose-C9VN0iMJ.mjs} +4 -4
- package/dist/{compose-BEiJWrB7.mjs.map → compose-C9VN0iMJ.mjs.map} +1 -1
- package/dist/deploy/public.cjs +6 -6
- package/dist/deploy/public.mjs +6 -6
- package/dist/{deploy-Cyx5fSb7.mjs → deploy-BD70bgTu.mjs} +5 -5
- package/dist/{deploy-Cyx5fSb7.mjs.map → deploy-BD70bgTu.mjs.map} +1 -1
- package/dist/{deploy-Q5qo1OP-.cjs → deploy-Ch45lV7q.cjs} +5 -5
- package/dist/{deploy-Q5qo1OP-.cjs.map → deploy-Ch45lV7q.cjs.map} +1 -1
- package/dist/{dns-v9viladZ.cjs → dns-0tfef9SR.cjs} +2 -2
- package/dist/{dns-v9viladZ.cjs.map → dns-0tfef9SR.cjs.map} +1 -1
- package/dist/{dns-CsApfzLc.mjs → dns-thzjBFvQ.mjs} +2 -2
- package/dist/{dns-CsApfzLc.mjs.map → dns-thzjBFvQ.mjs.map} +1 -1
- package/dist/{dokploy-Di7rC2z0.cjs → dokploy-B3wEC6-2.cjs} +2 -2
- package/dist/{dokploy-Di7rC2z0.cjs.map → dokploy-B3wEC6-2.cjs.map} +1 -1
- package/dist/{dokploy-DfUo_QRw.mjs → dokploy-QvxY0Ywi.mjs} +2 -2
- package/dist/{dokploy-DfUo_QRw.mjs.map → dokploy-QvxY0Ywi.mjs.map} +1 -1
- package/dist/{drivers-D11JHxrD.mjs → drivers-3klmg9Sk.mjs} +22 -4
- package/dist/drivers-3klmg9Sk.mjs.map +1 -0
- package/dist/{drivers-GKaA6ITM.cjs → drivers-CoqD5zYP.cjs} +27 -3
- package/dist/drivers-CoqD5zYP.cjs.map +1 -0
- package/dist/{eas-CTfRmndW.mjs → eas-C5UZCZER.mjs} +2 -2
- package/dist/{eas-CTfRmndW.mjs.map → eas-C5UZCZER.mjs.map} +1 -1
- package/dist/{eas-CIvNT6qa.cjs → eas-C8lIhY8B.cjs} +2 -2
- package/dist/{eas-CIvNT6qa.cjs.map → eas-C8lIhY8B.cjs.map} +1 -1
- package/dist/{encryption-BpTPmd7h.mjs → encryption-BhAA51gs.mjs} +2 -2
- package/dist/{encryption-BpTPmd7h.mjs.map → encryption-BhAA51gs.mjs.map} +1 -1
- package/dist/{encryption--U4NsK7N.cjs → encryption-xgKJ_098.cjs} +2 -2
- package/dist/{encryption--U4NsK7N.cjs.map → encryption-xgKJ_098.cjs.map} +1 -1
- package/dist/{engine-Ovl1PB6i.cjs → engine-BCC7wUqs.cjs} +3 -3
- package/dist/{engine-Ovl1PB6i.cjs.map → engine-BCC7wUqs.cjs.map} +1 -1
- package/dist/{engine-BFmHfek1.mjs → engine-CV0krWXP.mjs} +3 -3
- package/dist/{engine-BFmHfek1.mjs.map → engine-CV0krWXP.mjs.map} +1 -1
- package/dist/{github-tWAGuR9i.mjs → github-BASpyAs7.mjs} +4 -4
- package/dist/{github-tWAGuR9i.mjs.map → github-BASpyAs7.mjs.map} +1 -1
- package/dist/{github-CTlPQ5Ra.cjs → github-CeeFKscD.cjs} +4 -4
- package/dist/{github-CTlPQ5Ra.cjs.map → github-CeeFKscD.cjs.map} +1 -1
- package/dist/{googlePlay-BNH729It.cjs → googlePlay-C7sOjdR5.cjs} +3 -3
- package/dist/{googlePlay-BNH729It.cjs.map → googlePlay-C7sOjdR5.cjs.map} +1 -1
- package/dist/{googlePlay-m1De-qIJ.mjs → googlePlay-CD2Y0j8c.mjs} +3 -3
- package/dist/{googlePlay-m1De-qIJ.mjs.map → googlePlay-CD2Y0j8c.mjs.map} +1 -1
- package/dist/index.cjs +61 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +61 -57
- package/dist/index.mjs.map +1 -1
- package/dist/{migrate-X0Y7fz3N.mjs → migrate-BSnZFik_.mjs} +2 -2
- package/dist/{migrate-X0Y7fz3N.mjs.map → migrate-BSnZFik_.mjs.map} +1 -1
- package/dist/{migrate-4B4RgAjU.mjs → migrate-Ba-pFRWc.mjs} +2 -2
- package/dist/{migrate-4B4RgAjU.mjs.map → migrate-Ba-pFRWc.mjs.map} +1 -1
- package/dist/{migrate-DZ2--SaO.cjs → migrate-Bmgy1mh4.cjs} +2 -2
- package/dist/{migrate-DZ2--SaO.cjs.map → migrate-Bmgy1mh4.cjs.map} +1 -1
- package/dist/{migrate-BYEmpoIg.cjs → migrate-D8HKeUGo.cjs} +2 -2
- package/dist/{migrate-BYEmpoIg.cjs.map → migrate-D8HKeUGo.cjs.map} +1 -1
- package/dist/{publish-hhgraEhO.mjs → publish-BOivOLLp.mjs} +2 -2
- package/dist/{publish-hhgraEhO.mjs.map → publish-BOivOLLp.mjs.map} +1 -1
- package/dist/{publish-BUvYjiZH.cjs → publish-Cfe-drEb.cjs} +2 -2
- package/dist/{publish-BUvYjiZH.cjs.map → publish-Cfe-drEb.cjs.map} +1 -1
- package/dist/{ready-CIt5SOtg.mjs → ready-4hEoQ_cr.mjs} +2 -2
- package/dist/{ready-CIt5SOtg.mjs.map → ready-4hEoQ_cr.mjs.map} +1 -1
- package/dist/{ready-BMFjxBYA.cjs → ready-gc9IFByS.cjs} +2 -2
- package/dist/{ready-BMFjxBYA.cjs.map → ready-gc9IFByS.cjs.map} +1 -1
- package/dist/{resolve-DdFKTx8l.cjs → resolve-BHR-Ewxo.cjs} +3 -3
- package/dist/{resolve-DdFKTx8l.cjs.map → resolve-BHR-Ewxo.cjs.map} +1 -1
- package/dist/{resolve-DotGHvtX.mjs → resolve-CsJ1zX6m.mjs} +3 -3
- package/dist/{resolve-DotGHvtX.mjs.map → resolve-CsJ1zX6m.mjs.map} +1 -1
- package/dist/{rollback-D4xeUQvG.cjs → rollback-B4yQkUSH.cjs} +4 -4
- package/dist/{rollback-D4xeUQvG.cjs.map → rollback-B4yQkUSH.cjs.map} +1 -1
- package/dist/{rollback-9t9G3c_u.mjs → rollback-j38F1Jn-.mjs} +4 -4
- package/dist/{rollback-9t9G3c_u.mjs.map → rollback-j38F1Jn-.mjs.map} +1 -1
- package/dist/{seeds-DbKNcs3o.cjs → seeds-DWaiMMi3.cjs} +3 -3
- package/dist/{seeds-DbKNcs3o.cjs.map → seeds-DWaiMMi3.cjs.map} +1 -1
- package/dist/{seeds-CRkKeyW0.mjs → seeds-h4Wf-_hA.mjs} +3 -3
- package/dist/{seeds-CRkKeyW0.mjs.map → seeds-h4Wf-_hA.mjs.map} +1 -1
- package/dist/{serverSetup-DlRKRfTi.mjs → serverSetup-CKqCaDhI.mjs} +5 -5
- package/dist/{serverSetup-DlRKRfTi.mjs.map → serverSetup-CKqCaDhI.mjs.map} +1 -1
- package/dist/{serverSetup-CcWgNtiC.cjs → serverSetup-Dog5151C.cjs} +5 -5
- package/dist/{serverSetup-CcWgNtiC.cjs.map → serverSetup-Dog5151C.cjs.map} +1 -1
- package/dist/{sniffer-B6T6za4n.cjs → sniffer-B99iLT79.cjs} +6 -6
- package/dist/{sniffer-B6T6za4n.cjs.map → sniffer-B99iLT79.cjs.map} +1 -1
- package/dist/{sniffer-CakkKKqQ.mjs → sniffer-Dilwm65v.mjs} +6 -6
- package/dist/{sniffer-CakkKKqQ.mjs.map → sniffer-Dilwm65v.mjs.map} +1 -1
- package/dist/{stage-W3PUt7ar.cjs → stage-D1Qmw-Pd.cjs} +4 -4
- package/dist/{stage-W3PUt7ar.cjs.map → stage-D1Qmw-Pd.cjs.map} +1 -1
- package/dist/{stage-Mp6qQIoD.mjs → stage-dG5B6nC9.mjs} +4 -4
- package/dist/{stage-Mp6qQIoD.mjs.map → stage-dG5B6nC9.mjs.map} +1 -1
- package/dist/target/public.cjs +1 -1
- package/dist/target/public.mjs +1 -1
- package/dist/vitest.cjs +1 -1
- package/dist/vitest.mjs +1 -1
- package/package.json +15 -15
- package/dist/bundler-B2_2-Dum.cjs.map +0 -1
- package/dist/bundler-CgcwaVI0.mjs.map +0 -1
- package/dist/drivers-D11JHxrD.mjs.map +0 -1
- package/dist/drivers-GKaA6ITM.cjs.map +0 -1
|
@@ -2,12 +2,12 @@ const require_rolldown_runtime = require("./rolldown-runtime-C0BPl7ul.cjs");
|
|
|
2
2
|
const require_errors = require("./errors-DMC4Umsb.cjs");
|
|
3
3
|
const require_credentials = require("./credentials-Zqr3QQYB.cjs");
|
|
4
4
|
const require_workspace = require("./workspace-BwqQnool.cjs");
|
|
5
|
-
const require_seeds = require("./seeds-
|
|
5
|
+
const require_seeds = require("./seeds-DWaiMMi3.cjs");
|
|
6
6
|
const require_sandbox = require("./sandbox-CHv3OYXg.cjs");
|
|
7
7
|
const require_config = require("./config.cjs");
|
|
8
8
|
const require_local = require("./local-DNhnkugT.cjs");
|
|
9
|
-
const require_sniffer = require("./sniffer-
|
|
10
|
-
const require_engine = require("./engine-
|
|
9
|
+
const require_sniffer = require("./sniffer-B99iLT79.cjs");
|
|
10
|
+
const require_engine = require("./engine-BCC7wUqs.cjs");
|
|
11
11
|
let node_path = require("node:path");
|
|
12
12
|
//#region src/target/dokploy/rollback.ts
|
|
13
13
|
/**
|
|
@@ -162,4 +162,4 @@ Object.defineProperty(exports, "rollback_exports", {
|
|
|
162
162
|
}
|
|
163
163
|
});
|
|
164
164
|
|
|
165
|
-
//# sourceMappingURL=rollback-
|
|
165
|
+
//# sourceMappingURL=rollback-B4yQkUSH.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback-
|
|
1
|
+
{"version":3,"file":"rollback-B4yQkUSH.cjs","names":["GkmError","storedCredentials","LocalSandbox","findWorkspaceRoot","resolve","withSandbox","loadWorkspaceConfig","createStateStore","DeployJournal","createEmptyState","asDokployState","dokployApi","verifySettings","restoreImage"],"sources":["../src/target/dokploy/rollback.ts"],"sourcesContent":["/**\n * `gkm deploy:rollback`: a stage's apps put back on the release before the\n * one they run, by hand — for a release that passed its checks and turned out\n * wrong anyway.\n *\n * One app by default, because an app is what usually broke: rolling the API\n * back over a site fix that shipped beside it undoes the fix too. `atomic`\n * rolls back every app that has a release to go back to, for apps that only\n * work together — an API and the site built against its newer contract.\n *\n * It restores images and nothing else. The environment an app runs with is\n * the stage's, resolved on every deploy, and migrations are forward-only: a\n * migration that the older code cannot run against is undone by a new\n * migration, never by a rollback.\n */\n\nimport { resolve } from 'node:path';\nimport { findWorkspaceRoot, loadWorkspaceConfig } from '../../config';\nimport {\n\ttype CredentialProvider,\n\tstoredCredentials,\n} from '../../deploy/credentials';\nimport { DeployJournal } from '../../deploy/journal';\nimport {\n\tassertStateOutlivesRun,\n\tcreateStateStore,\n} from '../../deploy/StateStore';\nimport {\n\tasDokployState,\n\tcreateEmptyState,\n\ttype ReleasedImage,\n\trecordRollback,\n} from '../../deploy/state';\nimport { GkmError } from '../../errors';\nimport { LocalSandbox } from '../../sandbox/local';\nimport { type Sandbox, withSandbox } from '../../sandbox/sandbox';\nimport { assertDeployedStage } from '../../workspace/stages';\nimport { dokployApi, restoreImage, verifySettings } from './engine';\n\nexport interface RollbackInput {\n\t/** The project: the directory holding `gkm.config.ts`, or one inside it. */\n\tcwd: string;\n\tstage: string;\n\t/** The app to roll back. */\n\tapp?: string;\n\t/** Every app with an earlier release, instead of one. */\n\tatomic?: boolean;\n\t/** Defaults to the environment, then the logins `gkm login` stored. */\n\tcredentials?: CredentialProvider;\n\tsignal?: AbortSignal;\n\t/** Each progress line. Defaults to none. */\n\tlog?: (line: string) => void;\n\t/** Where the config is loaded. Defaults to a `LocalSandbox` on the project. */\n\tsandbox?: Sandbox;\n}\n\n/** One app rolled back. */\nexport interface RolledBack {\n\tapp: string;\n\tfrom: ReleasedImage;\n\tto: ReleasedImage;\n}\n\n/** Neither an app nor every app was asked for. */\nexport class RollbackNeedsApp extends GkmError {\n\tconstructor(\n\t\treadonly stage: string,\n\t\t/** The apps that have a release to go back to. */\n\t\treadonly apps: readonly string[],\n\t) {\n\t\tsuper(\n\t\t\t`Say what to roll back: --app <name> for one app (${apps.join(', ') || 'none has an earlier release'}), ` +\n\t\t\t\t`or --atomic for every app of \"${stage}\" together.`,\n\t\t);\n\t\tthis.name = 'RollbackNeedsApp';\n\t}\n}\n\n/** An app has no release before the one it runs. */\nexport class NothingToRollBack extends GkmError {\n\tconstructor(\n\t\treadonly stage: string,\n\t\treadonly app: string,\n\t) {\n\t\tsuper(\n\t\t\t`\"${app}\" has no earlier release on \"${stage}\" to roll back to: it has been released once, ` +\n\t\t\t\t'or every earlier release was itself rolled back. Deploy the version you want instead.',\n\t\t);\n\t\tthis.name = 'NothingToRollBack';\n\t}\n}\n\n/** The stage was never deployed through Dokploy from this state. */\nexport class StageNeverDeployed extends GkmError {\n\tconstructor(readonly stage: string) {\n\t\tsuper(\n\t\t\t`\"${stage}\" has no deploy state, so there is nothing to roll back. ` +\n\t\t\t\t'Check the stage name, and that `state` in gkm.config.ts points at the store the deploys write to.',\n\t\t);\n\t\tthis.name = 'StageNeverDeployed';\n\t}\n}\n\n/**\n * Roll a stage's app — or, `atomic`, all of them — back to its previous\n * release, holding the stage's lock as a deploy does.\n */\nexport async function rollbackStage(\n\tinput: RollbackInput,\n): Promise<RolledBack[]> {\n\tconst signal = input.signal ?? new AbortController().signal;\n\tconst log = input.log ?? (() => {});\n\tconst credentials = input.credentials ?? storedCredentials();\n\tconst sandbox =\n\t\tinput.sandbox ??\n\t\tnew LocalSandbox({ root: findWorkspaceRoot(resolve(input.cwd)) });\n\n\treturn withSandbox(sandbox, async () => {\n\t\tconst { workspace } = await loadWorkspaceConfig(resolve(input.cwd), {\n\t\t\tsandbox,\n\t\t});\n\t\tassertDeployedStage(workspace.stages, input.stage);\n\t\tassertStateOutlivesRun(workspace, input.stage, 'deploy:rollback');\n\n\t\tconst store = await createStateStore({\n\t\t\tconfig: workspace.state,\n\t\t\tworkspaceRoot: workspace.root,\n\t\t\tworkspaceName: workspace.name,\n\t\t\tnamespace: workspace.deploy?.namespace,\n\t\t});\n\t\tif (!(await store.read(input.stage))) {\n\t\t\tthrow new StageNeverDeployed(input.stage);\n\t\t}\n\n\t\tconst lock = await store.lock(input.stage, { operation: 'rollback' });\n\t\ttry {\n\t\t\tconst journal = await DeployJournal.open(\n\t\t\t\tstore,\n\t\t\t\tinput.stage,\n\t\t\t\t() => createEmptyState(input.stage, '', ''),\n\t\t\t\tasDokployState,\n\t\t\t);\n\t\t\tconst { state } = journal;\n\t\t\tconst releases = state.releases ?? {};\n\t\t\tconst restorable = Object.keys(releases).filter(\n\t\t\t\t(app) => releases[app]!.previous,\n\t\t\t);\n\n\t\t\tlet apps: string[];\n\t\t\tif (input.atomic) {\n\t\t\t\tapps = restorable;\n\t\t\t\tif (apps.length === 0) {\n\t\t\t\t\tthrow new RollbackNeedsApp(input.stage, restorable);\n\t\t\t\t}\n\t\t\t} else if (input.app) {\n\t\t\t\tif (!releases[input.app]?.previous) {\n\t\t\t\t\tthrow new NothingToRollBack(input.stage, input.app);\n\t\t\t\t}\n\t\t\t\tapps = [input.app];\n\t\t\t} else {\n\t\t\t\tthrow new RollbackNeedsApp(input.stage, restorable);\n\t\t\t}\n\n\t\t\tconst { api } = await dokployApi(workspace, { credentials, signal });\n\t\t\tconst verify = verifySettings(workspace.deploy.dokploy?.verify);\n\t\t\tconst rolled: RolledBack[] = [];\n\n\t\t\tfor (const app of apps) {\n\t\t\t\tsignal.throwIfAborted();\n\t\t\t\tconst { current, previous } = releases[app]!;\n\t\t\t\tconst applicationId = state.applications[app];\n\t\t\t\tif (!previous || !applicationId) {\n\t\t\t\t\tthrow new NothingToRollBack(input.stage, app);\n\t\t\t\t}\n\n\t\t\t\tlog(`⏪ ${app}: ${current.ref} → ${previous.ref}`);\n\t\t\t\tawait restoreImage(api, {\n\t\t\t\t\tapplicationId,\n\t\t\t\t\timage: previous,\n\t\t\t\t\tregistryId: state.registryId,\n\t\t\t\t\tverify,\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\t\t\t\trecordRollback(state, app, previous);\n\t\t\t\tawait journal.save();\n\t\t\t\tlog(` ✓ ${app} is running ${previous.ref}`);\n\t\t\t\trolled.push({ app, from: current, to: previous });\n\t\t\t}\n\n\t\t\treturn rolled;\n\t\t} finally {\n\t\t\tawait lock.release();\n\t\t}\n\t});\n}\n"],"mappings":"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"}
|
|
@@ -2,12 +2,12 @@ import { t as __exportAll } from "./rolldown-runtime-BhDjJH2R.mjs";
|
|
|
2
2
|
import { t as GkmError } from "./errors-D8Gwp5kU.mjs";
|
|
3
3
|
import { r as storedCredentials } from "./credentials-B5N5yKk6.mjs";
|
|
4
4
|
import { N as assertDeployedStage } from "./workspace-D1QbNd55.mjs";
|
|
5
|
-
import { S as recordRollback, g as asDokployState, u as DeployJournal, v as createEmptyState } from "./seeds-
|
|
5
|
+
import { S as recordRollback, g as asDokployState, u as DeployJournal, v as createEmptyState } from "./seeds-h4Wf-_hA.mjs";
|
|
6
6
|
import { c as withSandbox } from "./sandbox-CbVB7uOD.mjs";
|
|
7
7
|
import { findWorkspaceRoot, loadWorkspaceConfig } from "./config.mjs";
|
|
8
8
|
import { t as LocalSandbox } from "./local-BwC2v2Y8.mjs";
|
|
9
|
-
import { S as createStateStore, v as assertStateOutlivesRun } from "./sniffer-
|
|
10
|
-
import { i as dokployApi, l as restoreImage, p as verifySettings } from "./engine-
|
|
9
|
+
import { S as createStateStore, v as assertStateOutlivesRun } from "./sniffer-Dilwm65v.mjs";
|
|
10
|
+
import { i as dokployApi, l as restoreImage, p as verifySettings } from "./engine-CV0krWXP.mjs";
|
|
11
11
|
import { resolve } from "node:path";
|
|
12
12
|
//#region src/target/dokploy/rollback.ts
|
|
13
13
|
/**
|
|
@@ -133,4 +133,4 @@ async function rollbackStage(input) {
|
|
|
133
133
|
//#endregion
|
|
134
134
|
export { rollback_exports as a, rollbackStage as i, RollbackNeedsApp as n, StageNeverDeployed as r, NothingToRollBack as t };
|
|
135
135
|
|
|
136
|
-
//# sourceMappingURL=rollback-
|
|
136
|
+
//# sourceMappingURL=rollback-j38F1Jn-.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback-
|
|
1
|
+
{"version":3,"file":"rollback-j38F1Jn-.mjs","names":[],"sources":["../src/target/dokploy/rollback.ts"],"sourcesContent":["/**\n * `gkm deploy:rollback`: a stage's apps put back on the release before the\n * one they run, by hand — for a release that passed its checks and turned out\n * wrong anyway.\n *\n * One app by default, because an app is what usually broke: rolling the API\n * back over a site fix that shipped beside it undoes the fix too. `atomic`\n * rolls back every app that has a release to go back to, for apps that only\n * work together — an API and the site built against its newer contract.\n *\n * It restores images and nothing else. The environment an app runs with is\n * the stage's, resolved on every deploy, and migrations are forward-only: a\n * migration that the older code cannot run against is undone by a new\n * migration, never by a rollback.\n */\n\nimport { resolve } from 'node:path';\nimport { findWorkspaceRoot, loadWorkspaceConfig } from '../../config';\nimport {\n\ttype CredentialProvider,\n\tstoredCredentials,\n} from '../../deploy/credentials';\nimport { DeployJournal } from '../../deploy/journal';\nimport {\n\tassertStateOutlivesRun,\n\tcreateStateStore,\n} from '../../deploy/StateStore';\nimport {\n\tasDokployState,\n\tcreateEmptyState,\n\ttype ReleasedImage,\n\trecordRollback,\n} from '../../deploy/state';\nimport { GkmError } from '../../errors';\nimport { LocalSandbox } from '../../sandbox/local';\nimport { type Sandbox, withSandbox } from '../../sandbox/sandbox';\nimport { assertDeployedStage } from '../../workspace/stages';\nimport { dokployApi, restoreImage, verifySettings } from './engine';\n\nexport interface RollbackInput {\n\t/** The project: the directory holding `gkm.config.ts`, or one inside it. */\n\tcwd: string;\n\tstage: string;\n\t/** The app to roll back. */\n\tapp?: string;\n\t/** Every app with an earlier release, instead of one. */\n\tatomic?: boolean;\n\t/** Defaults to the environment, then the logins `gkm login` stored. */\n\tcredentials?: CredentialProvider;\n\tsignal?: AbortSignal;\n\t/** Each progress line. Defaults to none. */\n\tlog?: (line: string) => void;\n\t/** Where the config is loaded. Defaults to a `LocalSandbox` on the project. */\n\tsandbox?: Sandbox;\n}\n\n/** One app rolled back. */\nexport interface RolledBack {\n\tapp: string;\n\tfrom: ReleasedImage;\n\tto: ReleasedImage;\n}\n\n/** Neither an app nor every app was asked for. */\nexport class RollbackNeedsApp extends GkmError {\n\tconstructor(\n\t\treadonly stage: string,\n\t\t/** The apps that have a release to go back to. */\n\t\treadonly apps: readonly string[],\n\t) {\n\t\tsuper(\n\t\t\t`Say what to roll back: --app <name> for one app (${apps.join(', ') || 'none has an earlier release'}), ` +\n\t\t\t\t`or --atomic for every app of \"${stage}\" together.`,\n\t\t);\n\t\tthis.name = 'RollbackNeedsApp';\n\t}\n}\n\n/** An app has no release before the one it runs. */\nexport class NothingToRollBack extends GkmError {\n\tconstructor(\n\t\treadonly stage: string,\n\t\treadonly app: string,\n\t) {\n\t\tsuper(\n\t\t\t`\"${app}\" has no earlier release on \"${stage}\" to roll back to: it has been released once, ` +\n\t\t\t\t'or every earlier release was itself rolled back. Deploy the version you want instead.',\n\t\t);\n\t\tthis.name = 'NothingToRollBack';\n\t}\n}\n\n/** The stage was never deployed through Dokploy from this state. */\nexport class StageNeverDeployed extends GkmError {\n\tconstructor(readonly stage: string) {\n\t\tsuper(\n\t\t\t`\"${stage}\" has no deploy state, so there is nothing to roll back. ` +\n\t\t\t\t'Check the stage name, and that `state` in gkm.config.ts points at the store the deploys write to.',\n\t\t);\n\t\tthis.name = 'StageNeverDeployed';\n\t}\n}\n\n/**\n * Roll a stage's app — or, `atomic`, all of them — back to its previous\n * release, holding the stage's lock as a deploy does.\n */\nexport async function rollbackStage(\n\tinput: RollbackInput,\n): Promise<RolledBack[]> {\n\tconst signal = input.signal ?? new AbortController().signal;\n\tconst log = input.log ?? (() => {});\n\tconst credentials = input.credentials ?? storedCredentials();\n\tconst sandbox =\n\t\tinput.sandbox ??\n\t\tnew LocalSandbox({ root: findWorkspaceRoot(resolve(input.cwd)) });\n\n\treturn withSandbox(sandbox, async () => {\n\t\tconst { workspace } = await loadWorkspaceConfig(resolve(input.cwd), {\n\t\t\tsandbox,\n\t\t});\n\t\tassertDeployedStage(workspace.stages, input.stage);\n\t\tassertStateOutlivesRun(workspace, input.stage, 'deploy:rollback');\n\n\t\tconst store = await createStateStore({\n\t\t\tconfig: workspace.state,\n\t\t\tworkspaceRoot: workspace.root,\n\t\t\tworkspaceName: workspace.name,\n\t\t\tnamespace: workspace.deploy?.namespace,\n\t\t});\n\t\tif (!(await store.read(input.stage))) {\n\t\t\tthrow new StageNeverDeployed(input.stage);\n\t\t}\n\n\t\tconst lock = await store.lock(input.stage, { operation: 'rollback' });\n\t\ttry {\n\t\t\tconst journal = await DeployJournal.open(\n\t\t\t\tstore,\n\t\t\t\tinput.stage,\n\t\t\t\t() => createEmptyState(input.stage, '', ''),\n\t\t\t\tasDokployState,\n\t\t\t);\n\t\t\tconst { state } = journal;\n\t\t\tconst releases = state.releases ?? {};\n\t\t\tconst restorable = Object.keys(releases).filter(\n\t\t\t\t(app) => releases[app]!.previous,\n\t\t\t);\n\n\t\t\tlet apps: string[];\n\t\t\tif (input.atomic) {\n\t\t\t\tapps = restorable;\n\t\t\t\tif (apps.length === 0) {\n\t\t\t\t\tthrow new RollbackNeedsApp(input.stage, restorable);\n\t\t\t\t}\n\t\t\t} else if (input.app) {\n\t\t\t\tif (!releases[input.app]?.previous) {\n\t\t\t\t\tthrow new NothingToRollBack(input.stage, input.app);\n\t\t\t\t}\n\t\t\t\tapps = [input.app];\n\t\t\t} else {\n\t\t\t\tthrow new RollbackNeedsApp(input.stage, restorable);\n\t\t\t}\n\n\t\t\tconst { api } = await dokployApi(workspace, { credentials, signal });\n\t\t\tconst verify = verifySettings(workspace.deploy.dokploy?.verify);\n\t\t\tconst rolled: RolledBack[] = [];\n\n\t\t\tfor (const app of apps) {\n\t\t\t\tsignal.throwIfAborted();\n\t\t\t\tconst { current, previous } = releases[app]!;\n\t\t\t\tconst applicationId = state.applications[app];\n\t\t\t\tif (!previous || !applicationId) {\n\t\t\t\t\tthrow new NothingToRollBack(input.stage, app);\n\t\t\t\t}\n\n\t\t\t\tlog(`⏪ ${app}: ${current.ref} → ${previous.ref}`);\n\t\t\t\tawait restoreImage(api, {\n\t\t\t\t\tapplicationId,\n\t\t\t\t\timage: previous,\n\t\t\t\t\tregistryId: state.registryId,\n\t\t\t\t\tverify,\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\t\t\t\trecordRollback(state, app, previous);\n\t\t\t\tawait journal.save();\n\t\t\t\tlog(` ✓ ${app} is running ${previous.ref}`);\n\t\t\t\trolled.push({ app, from: current, to: previous });\n\t\t\t}\n\n\t\t\treturn rolled;\n\t\t} finally {\n\t\t\tawait lock.release();\n\t\t}\n\t});\n}\n"],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ const require_identity = require("./identity-CbLfgQNT.cjs");
|
|
|
8
8
|
const require_EndpointGenerator = require("./EndpointGenerator-BwbYTMtB.cjs");
|
|
9
9
|
const require_discover = require("./discover-Bsr7HjqJ.cjs");
|
|
10
10
|
const require_config = require("./config.cjs");
|
|
11
|
-
const require_resolve = require("./resolve-
|
|
11
|
+
const require_resolve = require("./resolve-BHR-Ewxo.cjs");
|
|
12
12
|
let node_path = require("node:path");
|
|
13
13
|
let node_fs = require("node:fs");
|
|
14
14
|
let node_fs_promises = require("node:fs/promises");
|
|
@@ -7358,7 +7358,7 @@ async function createDnsProvider(options) {
|
|
|
7358
7358
|
});
|
|
7359
7359
|
}
|
|
7360
7360
|
if (provider === "godaddy") {
|
|
7361
|
-
const { GoDaddyProvider } = await Promise.resolve().then(() => require("./GoDaddyProvider-
|
|
7361
|
+
const { GoDaddyProvider } = await Promise.resolve().then(() => require("./GoDaddyProvider-DY4QFpCg.cjs"));
|
|
7362
7362
|
return new GoDaddyProvider(options.godaddy ?? {});
|
|
7363
7363
|
}
|
|
7364
7364
|
if (provider === "cloudflare") throw new DnsProviderNotImplemented("cloudflare");
|
|
@@ -9186,4 +9186,4 @@ Object.defineProperty(exports, "workspace_exports", {
|
|
|
9186
9186
|
}
|
|
9187
9187
|
});
|
|
9188
9188
|
|
|
9189
|
-
//# sourceMappingURL=seeds-
|
|
9189
|
+
//# sourceMappingURL=seeds-DWaiMMi3.cjs.map
|