rampway 0.4.0 → 0.5.1
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 +78 -9
- package/build/src/cli.d.ts.map +1 -1
- package/build/src/cli.js +5 -1
- package/build/src/cli.js.map +1 -1
- package/build/src/commands/deploy.d.ts.map +1 -1
- package/build/src/commands/deploy.js +61 -1
- package/build/src/commands/deploy.js.map +1 -1
- package/build/src/commands/rollback.d.ts +1 -1
- package/build/src/commands/rollback.d.ts.map +1 -1
- package/build/src/commands/rollback.js +6 -4
- package/build/src/commands/rollback.js.map +1 -1
- package/build/src/commands/rollbridge.d.ts +8 -0
- package/build/src/commands/rollbridge.d.ts.map +1 -1
- package/build/src/commands/rollbridge.js +67 -18
- package/build/src/commands/rollbridge.js.map +1 -1
- package/build/src/config/validate-config.d.ts.map +1 -1
- package/build/src/config/validate-config.js +134 -0
- package/build/src/config/validate-config.js.map +1 -1
- package/build/src/core/deploy-runner.d.ts +4 -2
- package/build/src/core/deploy-runner.d.ts.map +1 -1
- package/build/src/core/deploy-runner.js +292 -18
- package/build/src/core/deploy-runner.js.map +1 -1
- package/build/src/core/paths.d.ts.map +1 -1
- package/build/src/core/paths.js +1 -0
- package/build/src/core/paths.js.map +1 -1
- package/build/src/core/release-manager.d.ts +23 -0
- package/build/src/core/release-manager.d.ts.map +1 -1
- package/build/src/core/release-manager.js +95 -7
- package/build/src/core/release-manager.js.map +1 -1
- package/build/src/core/runtime-state.d.ts +17 -0
- package/build/src/core/runtime-state.d.ts.map +1 -0
- package/build/src/core/runtime-state.js +76 -0
- package/build/src/core/runtime-state.js.map +1 -0
- package/build/src/runtimes/compose-runtime.d.ts +49 -0
- package/build/src/runtimes/compose-runtime.d.ts.map +1 -0
- package/build/src/runtimes/compose-runtime.js +106 -0
- package/build/src/runtimes/compose-runtime.js.map +1 -0
- package/build/src/runtimes/index.d.ts.map +1 -1
- package/build/src/runtimes/index.js +2 -1
- package/build/src/runtimes/index.js.map +1 -1
- package/build/src/runtimes/none-runtime.d.ts +2 -0
- package/build/src/runtimes/none-runtime.d.ts.map +1 -1
- package/build/src/runtimes/none-runtime.js +4 -0
- package/build/src/runtimes/none-runtime.js.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.d.ts +128 -26
- package/build/src/runtimes/rollbridge-runtime.d.ts.map +1 -1
- package/build/src/runtimes/rollbridge-runtime.js +366 -61
- package/build/src/runtimes/rollbridge-runtime.js.map +1 -1
- package/build/src/transports/local-transport.d.ts +10 -0
- package/build/src/transports/local-transport.d.ts.map +1 -1
- package/build/src/transports/local-transport.js +21 -0
- package/build/src/transports/local-transport.js.map +1 -1
- package/build/src/transports/ssh-transport.d.ts +20 -0
- package/build/src/transports/ssh-transport.d.ts.map +1 -1
- package/build/src/transports/ssh-transport.js +37 -0
- package/build/src/transports/ssh-transport.js.map +1 -1
- package/build/src/types.d.ts +117 -0
- package/build/src/types.d.ts.map +1 -1
- package/build/src/velocious/client.d.ts +146 -0
- package/build/src/velocious/client.d.ts.map +1 -0
- package/build/src/velocious/client.js +292 -0
- package/build/src/velocious/client.js.map +1 -0
- package/docs/config-reference.md +143 -5
- package/docs/migration-from-capistrano.md +24 -1
- package/docs/velocious-deployment-api.md +31 -0
- package/examples/monorepo/rampway.config.mjs +1 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,6 +55,9 @@ rampway production plan
|
|
|
55
55
|
rampway production plan --json
|
|
56
56
|
rampway production deploy
|
|
57
57
|
rampway production deploy <revision>
|
|
58
|
+
rampway production deploy --transport=auto
|
|
59
|
+
rampway production deploy --transport=http
|
|
60
|
+
rampway production deploy --transport=ssh
|
|
58
61
|
rampway production status
|
|
59
62
|
rampway production releases
|
|
60
63
|
rampway production releases --json
|
|
@@ -66,13 +69,32 @@ rampway production rollback
|
|
|
66
69
|
rampway production doctor
|
|
67
70
|
rampway production doctor --json
|
|
68
71
|
|
|
69
|
-
#
|
|
70
|
-
rampway production
|
|
71
|
-
rampway production
|
|
72
|
-
rampway production
|
|
73
|
-
rampway production
|
|
72
|
+
# Runtime maintenance for the current release
|
|
73
|
+
rampway production runtime-validate
|
|
74
|
+
rampway production runtime-status
|
|
75
|
+
rampway production runtime-logs
|
|
76
|
+
rampway production runtime-recover --yes
|
|
74
77
|
```
|
|
75
78
|
|
|
79
|
+
The older `rollbridge-validate`, `rollbridge-status`, `rollbridge-logs`, and
|
|
80
|
+
`rollbridge-recover` names remain aliases for Rollbridge stages.
|
|
81
|
+
|
|
82
|
+
### Deploy transports
|
|
83
|
+
|
|
84
|
+
Deploys run over one of three transports selected with `--transport`:
|
|
85
|
+
|
|
86
|
+
- `http` — run the deploy through the authenticated Velocious control plane
|
|
87
|
+
(requires `stage.http`). Fails if the stage has no control-plane config.
|
|
88
|
+
- `ssh` — run directly over the stage's SSH (or local) transport, bypassing the
|
|
89
|
+
control plane.
|
|
90
|
+
- `auto` (default) — use the control plane when the stage configures
|
|
91
|
+
`stage.http`, and fall back to the direct transport only when the control
|
|
92
|
+
plane is unreachable or the project/stage is not deployed there. Never falls
|
|
93
|
+
back on authentication or validation errors, or once a run has been admitted.
|
|
94
|
+
|
|
95
|
+
Dry runs always use the direct transport and print a plan, regardless of
|
|
96
|
+
`--transport`.
|
|
97
|
+
|
|
76
98
|
### Live deploy output and automation
|
|
77
99
|
|
|
78
100
|
A normal deploy reports real lifecycle steps and remote command output as it arrives, then ends with a concise result:
|
|
@@ -157,7 +179,6 @@ export default {
|
|
|
157
179
|
command: "npx rollbridge",
|
|
158
180
|
packageDir: "backend",
|
|
159
181
|
config: "config/rollbridge.production.mjs",
|
|
160
|
-
healthPath: "/health",
|
|
161
182
|
daemonLogPath: "/home/dev/routergeist/shared/log/rollbridge.log",
|
|
162
183
|
daemonPidPath: "/home/dev/routergeist/shared/tmp/pids/rollbridge.pid",
|
|
163
184
|
socketPath: "/tmp/rollbridge-routergeist.sock",
|
|
@@ -168,6 +189,23 @@ export default {
|
|
|
168
189
|
}
|
|
169
190
|
```
|
|
170
191
|
|
|
192
|
+
For Rollbridge, an explicit `runtime.config` is resolved relative to
|
|
193
|
+
`runtime.packageDir`, fingerprinted with the Rollbridge package version,
|
|
194
|
+
runtime options, and environment values, then copied into immutable
|
|
195
|
+
Rampway-owned material under `shared/rampway/runtime/`. After runtime and health
|
|
196
|
+
succeed, Rampway atomically records only the known-good digest and secret-free
|
|
197
|
+
activation locators in `shared/rampway/state.json`, indexed by release. Secret
|
|
198
|
+
environment values participate in change detection but are never stored or
|
|
199
|
+
logged. Keep the Rollbridge config self-contained; imported sibling files are
|
|
200
|
+
not copied.
|
|
201
|
+
|
|
202
|
+
That stable state lets rollback and runtime maintenance target a retained release
|
|
203
|
+
whose checkout has no Rampway helper or Rollbridge config. `packageDir` remains
|
|
204
|
+
relative to the selected application release, while the stored config comes from
|
|
205
|
+
trusted known-good material. A missing, malformed, mismatched, or config-less
|
|
206
|
+
Rollbridge state fails rollback before runtime or `current` changes. The first
|
|
207
|
+
successful Rampway deploy with an explicit config seeds this state.
|
|
208
|
+
|
|
171
209
|
`npmInstall`, `pnpmInstall`, `yarnInstall`, `bunInstall`, and `nodePackageInstall` return normal task entries with the right install command for common Node package managers. They accept `cwd`, `env`, `optional`, `production`, and lockfile options such as `clean: false` for `npm install` instead of `npm ci`, or `frozenLockfile: false` for package managers that need explicit CI lockfile opt-outs (`--no-frozen-lockfile` for pnpm and `--no-immutable` for Yarn). Yarn production installs are intentionally not guessed; use a custom task command when that project needs a specific Yarn workspace/plugin flow.
|
|
172
210
|
|
|
173
211
|
`checkExpoWebArtifacts` returns a task entry that fails if the Expo web build directory does not contain an `index.html`. It accepts `dir` (default `"dist"`), `cwd`, and `optional`.
|
|
@@ -183,7 +221,20 @@ Task entries can be strings or objects.
|
|
|
183
221
|
- `env` — optional environment variables passed to the command.
|
|
184
222
|
- `optional` — when `true`, the deploy records the task failure and continues.
|
|
185
223
|
|
|
186
|
-
Task groups run in config order. Required task failures stop the deploy before publish. Deploy failures include whether `current` changed and recovery hints for the affected stage, such as rerunning a before-publish failure, inspecting a newly created failed release directory, or inspecting `rampway status`, `rampway releases`, and `rampway rollback` after a failure that happened after publish. Existing release-id collisions do not suggest deleting the release directory.
|
|
224
|
+
Task groups run in config order. Required task failures stop the deploy before publish. If a candidate runtime handoff starts and then fails before publish, Rampway reactivates and health-checks the previous release using that release's known-good snapshot. Deploy failures include whether `current` changed and recovery hints for the affected stage, such as rerunning a before-publish failure, inspecting a newly created failed release directory, or inspecting `rampway status`, `rampway releases`, and `rampway rollback` after a failure that happened after publish. Existing release-id collisions do not suggest deleting the release directory.
|
|
225
|
+
|
|
226
|
+
Rollback runs under the same exclusive lock as deploy but never runs deploy task
|
|
227
|
+
groups, migrations, or candidate-local Rampway helpers. Rampway resolves one
|
|
228
|
+
retained release directory, activates it with the installed runtime adapter,
|
|
229
|
+
runs the configured health checks, and only then publishes `current`. If target
|
|
230
|
+
activation or health fails, Rampway reactivates and health-checks the prior
|
|
231
|
+
release before returning the original failure. Use `--to <exact-release-id>` for
|
|
232
|
+
a retained Capistrano release. Unsafe, nested, temporary, escaping, and
|
|
233
|
+
outside-symlink targets are rejected.
|
|
234
|
+
|
|
235
|
+
Release diagnostics include safe retained legacy directories. Cleanup ownership
|
|
236
|
+
does not: only releases carrying valid Rampway metadata for the configured
|
|
237
|
+
application and stage count toward `keepReleases` or can be removed by Rampway.
|
|
187
238
|
|
|
188
239
|
Standalone operational tasks are configured separately under `operationalTasks` and run only when explicitly selected with `rampway <stage> task <exact-name>`. Rampway acquires the shared deploy lock, strictly resolves the active release, and runs every required entry against that immutable release path. `forwardEnv` names caller-supplied environment variables that must be present; their values are transported separately from ordinary `env` and redacted from output and errors. Operational tasks do not run during deploy, accept no command arguments or `--force`, and are not included in the plural `tasks` deploy-task inventory.
|
|
189
240
|
|
|
@@ -212,7 +263,10 @@ Every successful deploy or rollback appends one JSON object per line to `shared/
|
|
|
212
263
|
- sanitized runtime status
|
|
213
264
|
- `cleanupRemoved` release IDs
|
|
214
265
|
|
|
215
|
-
Rollback events include `event: "rollback"`,
|
|
266
|
+
Rollback events include `event: "rollback"`, target `releaseId` and `revision`,
|
|
267
|
+
`rolledBackAt`, `durationMs`, `previousRelease`, `healthChecks: "passed"`, and a
|
|
268
|
+
sanitized runtime result. Reports intentionally record runtime result summaries,
|
|
269
|
+
not runtime configuration or secrets.
|
|
216
270
|
|
|
217
271
|
## Releasing
|
|
218
272
|
|
|
@@ -230,7 +284,12 @@ Publishing requires an npm access token stored as the repository secret `NPM_TOK
|
|
|
230
284
|
|
|
231
285
|
## Runtime adapters
|
|
232
286
|
|
|
233
|
-
Rampway resolves runtimes through a small adapter registry. Built-in adapters are
|
|
287
|
+
Rampway resolves runtimes through a small adapter registry. Built-in adapters are
|
|
288
|
+
`compose`, `none`, and `rollbridge`; future adapters can register a runtime type without
|
|
289
|
+
changing the deploy lifecycle core. Runtime adapters implement `plan()` and
|
|
290
|
+
`deploy(...)`. Optional `prepare(...)` and `commit(...)` methods participate in
|
|
291
|
+
secret-free known-good state, and optional `validate`, `status`, `logs`, and
|
|
292
|
+
`recover` methods are exposed by the generic runtime commands.
|
|
234
293
|
|
|
235
294
|
Rollbridge runtime options:
|
|
236
295
|
|
|
@@ -243,6 +302,16 @@ Rollbridge runtime options:
|
|
|
243
302
|
|
|
244
303
|
When `versionPath` is configured, Rampway reads the release's installed Rollbridge package version before deploy. If it differs from the recorded version and the current runtime is responsive, Rampway shuts down the current Rollbridge daemon, removes configured stale daemon artifacts, deploys the new release, and records the new version.
|
|
245
304
|
|
|
305
|
+
### Compose runtime
|
|
306
|
+
|
|
307
|
+
Use `runtime: {type: "compose", composeRoot, handoffCommand, healthCommand}`
|
|
308
|
+
when an application is managed by a trusted, fixed Docker Compose deployment.
|
|
309
|
+
Rampway executes the static handoff command and then the static health command
|
|
310
|
+
from the absolute `composeRoot`. It records only a digest and the root in
|
|
311
|
+
known-good runtime state, never command text or secrets. See the
|
|
312
|
+
[config reference](docs/config-reference.md#compose) for the strict field
|
|
313
|
+
contract and rollback behavior.
|
|
314
|
+
|
|
246
315
|
## Safety model
|
|
247
316
|
|
|
248
317
|
Rampway prepares a complete release before flipping `current`. If a deploy fails before publish, `current` remains unchanged. Rollbridge runtime deploys are validated and health-checked with `rollbridge status` before `current` is updated. Cleanup never removes the current release. Rollback changes `current` to a previously prepared release and records a deployment event.
|
package/build/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":";AAkDA;;;GAGG;AACH,2BAHW,MAAM,EAAE,GACN,OAAO,CAAC,IAAI,CAAC,CAUzB;AAED;;;;;;;GAOG;AACH,wCAHW,MAAM,EAAE,GACN;IAAC,OAAO,EAAE,MAAM,GAAC,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,GAAC,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,QAAQ,EAAE,cAAc,CAAA;CAAC,CA2B9G"}
|
package/build/src/cli.js
CHANGED
|
@@ -7,7 +7,7 @@ import { doctorCommand } from "./commands/doctor.js";
|
|
|
7
7
|
import { deployCommand } from "./commands/deploy.js";
|
|
8
8
|
import { releasesCommand, statusCommand } from "./commands/releases.js";
|
|
9
9
|
import { rollbackCommand } from "./commands/rollback.js";
|
|
10
|
-
import { rollbridgeValidateCommand, rollbridgeStatusCommand, rollbridgeLogsCommand, rollbridgeRecoverCommand } from "./commands/rollbridge.js";
|
|
10
|
+
import { rollbridgeValidateCommand, rollbridgeStatusCommand, rollbridgeLogsCommand, rollbridgeRecoverCommand, runtimeValidateCommand, runtimeStatusCommand, runtimeLogsCommand, runtimeRecoverCommand } from "./commands/rollbridge.js";
|
|
11
11
|
import { tasksCommand } from "./commands/tasks.js";
|
|
12
12
|
import { taskCommand } from "./commands/task.js";
|
|
13
13
|
import { initCommand } from "./commands/init.js";
|
|
@@ -27,6 +27,10 @@ const COMMANDS = {
|
|
|
27
27
|
"rollbridge-status": rollbridgeStatusCommand,
|
|
28
28
|
"rollbridge-logs": rollbridgeLogsCommand,
|
|
29
29
|
"rollbridge-recover": rollbridgeRecoverCommand,
|
|
30
|
+
"runtime-validate": runtimeValidateCommand,
|
|
31
|
+
"runtime-status": runtimeStatusCommand,
|
|
32
|
+
"runtime-logs": runtimeLogsCommand,
|
|
33
|
+
"runtime-recover": runtimeRecoverCommand,
|
|
30
34
|
doctor: doctorCommand
|
|
31
35
|
};
|
|
32
36
|
/**
|
package/build/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":";AACA,OAAO,EAAC,YAAY,EAAC,MAAM,SAAS,CAAA;AACpC,OAAO,EAAC,aAAa,EAAC,MAAM,UAAU,CAAA;AAEtC,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAC,WAAW,EAAC,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAA;AACrE,OAAO,EAAC,eAAe,EAAC,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAC,yBAAyB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,wBAAwB,EAAC,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.js"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"AASA;;;GAGG;AACH,sEAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAoEzB"}
|
|
@@ -3,13 +3,19 @@ import { commandContext as defaultCommandContext } from "./context.js";
|
|
|
3
3
|
import { deploy } from "../core/deploy-runner.js";
|
|
4
4
|
import { openDeployLog } from "../core/deploy-log.js";
|
|
5
5
|
import { humanReporter, jsonReporter } from "../core/reporter.js";
|
|
6
|
+
import { deployViaControlPlane, isFallbackEligible } from "../velocious/client.js";
|
|
7
|
+
const TRANSPORT_CHOICES = new Set(["http", "ssh", "auto"]);
|
|
6
8
|
/**
|
|
7
9
|
* @param {import('#types').CommandArgs} args
|
|
8
10
|
* @returns {Promise<void>}
|
|
9
11
|
*/
|
|
10
12
|
export async function deployCommand({ stageName, options, commandContext = defaultCommandContext }) {
|
|
11
13
|
const reporter = options.json ? jsonReporter() : humanReporter();
|
|
14
|
+
const transportChoice = resolveTransportChoice(options.transport);
|
|
12
15
|
const { config, stage, transport } = await commandContext(options, stageName, { reporter });
|
|
16
|
+
if (transportChoice === "http" && !stage.http) {
|
|
17
|
+
throw new Error(`Stage '${stageName}' has no HTTP control-plane configuration; add stage.http or use --transport=ssh.`);
|
|
18
|
+
}
|
|
13
19
|
const resolvedStage = options.branch && !options.revision ? { ...stage, revision: undefined } : stage;
|
|
14
20
|
const sourcePath = options.source ?? process.cwd();
|
|
15
21
|
// A dry run only prints a plan, so there is no deploy transcript worth keeping.
|
|
@@ -21,7 +27,43 @@ export async function deployCommand({ stageName, options, commandContext = defau
|
|
|
21
27
|
reporter.line(`Logging deploy output to ${deployLog.path}`);
|
|
22
28
|
}
|
|
23
29
|
try {
|
|
24
|
-
const
|
|
30
|
+
const directDeploy = () => deploy({
|
|
31
|
+
transport,
|
|
32
|
+
stage: resolvedStage,
|
|
33
|
+
sourcePath,
|
|
34
|
+
revision: options.revision,
|
|
35
|
+
branch: options.branch ?? stage.branch,
|
|
36
|
+
dryRun: options.dryRun,
|
|
37
|
+
force: options.force,
|
|
38
|
+
reporter
|
|
39
|
+
});
|
|
40
|
+
const controlPlaneDeploy = () => deployViaControlPlane({
|
|
41
|
+
stage,
|
|
42
|
+
httpConfig: /** @type {import('#types').HttpTransportConfig} */ (stage.http),
|
|
43
|
+
revision: options.revision ?? stage.revision,
|
|
44
|
+
reporter
|
|
45
|
+
});
|
|
46
|
+
let report;
|
|
47
|
+
if (options.dryRun) {
|
|
48
|
+
report = await directDeploy();
|
|
49
|
+
}
|
|
50
|
+
else if (transportChoice === "http") {
|
|
51
|
+
report = await controlPlaneDeploy();
|
|
52
|
+
}
|
|
53
|
+
else if (transportChoice === "auto" && stage.http) {
|
|
54
|
+
try {
|
|
55
|
+
report = await controlPlaneDeploy();
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (!isFallbackEligible(error))
|
|
59
|
+
throw error;
|
|
60
|
+
reporter.line(`HTTP control plane unavailable (${ /** @type {Error} */(error).message}); falling back to ${transportLabel(stage.transport)} transport`);
|
|
61
|
+
report = await directDeploy();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
report = await directDeploy();
|
|
66
|
+
}
|
|
25
67
|
if (options.json || "plan" in report) {
|
|
26
68
|
console.log(JSON.stringify(report, null, 2));
|
|
27
69
|
return;
|
|
@@ -38,6 +80,24 @@ export async function deployCommand({ stageName, options, commandContext = defau
|
|
|
38
80
|
await deployLog.close();
|
|
39
81
|
}
|
|
40
82
|
}
|
|
83
|
+
/**
|
|
84
|
+
* @param {string|undefined} configured
|
|
85
|
+
* @returns {"http"|"ssh"|"auto"}
|
|
86
|
+
*/
|
|
87
|
+
function resolveTransportChoice(configured) {
|
|
88
|
+
const choice = configured ?? "auto";
|
|
89
|
+
if (!TRANSPORT_CHOICES.has(choice)) {
|
|
90
|
+
throw new Error(`Invalid --transport '${choice}'. Supported: ${Array.from(TRANSPORT_CHOICES).join(", ")}.`);
|
|
91
|
+
}
|
|
92
|
+
return /** @type {"http"|"ssh"|"auto"} */ (choice);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* @param {import('#types').TransportConfig} transport
|
|
96
|
+
* @returns {string}
|
|
97
|
+
*/
|
|
98
|
+
function transportLabel(transport) {
|
|
99
|
+
return transport.type === "ssh" ? "ssh" : "local";
|
|
100
|
+
}
|
|
41
101
|
/**
|
|
42
102
|
* Prints a concise Capistrano-style final summary of a successful deploy.
|
|
43
103
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,MAAM,EAAC,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAC,aAAa,EAAE,YAAY,EAAC,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/deploy.js"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* @param {import('#types').CommandArgs} args
|
|
3
3
|
* @returns {Promise<void>}
|
|
4
4
|
*/
|
|
5
|
-
export function rollbackCommand({ stageName, options }: import("#types").CommandArgs): Promise<void>;
|
|
5
|
+
export function rollbackCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
6
6
|
//# sourceMappingURL=rollback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/commands/rollback.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../../src/commands/rollback.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wEAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAOzB"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import { commandContext } from "./context.js";
|
|
1
|
+
import { commandContext as defaultCommandContext } from "./context.js";
|
|
2
2
|
import { rollback } from "../core/deploy-runner.js";
|
|
3
|
+
import { jsonReporter } from "../core/reporter.js";
|
|
3
4
|
/**
|
|
4
5
|
* @param {import('#types').CommandArgs} args
|
|
5
6
|
* @returns {Promise<void>}
|
|
6
7
|
*/
|
|
7
|
-
export async function rollbackCommand({ stageName, options }) {
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
export async function rollbackCommand({ stageName, options, commandContext = defaultCommandContext }) {
|
|
9
|
+
const reporter = jsonReporter();
|
|
10
|
+
const { stage, transport } = await commandContext(options, stageName, { reporter });
|
|
11
|
+
const report = await rollback({ transport, stage, to: options.to, reporter });
|
|
10
12
|
console.log(JSON.stringify(report, null, 2));
|
|
11
13
|
}
|
|
12
14
|
//# sourceMappingURL=rollback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/commands/rollback.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../../src/commands/rollback.js"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,QAAQ,EAAC,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAA;AAEhD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,qBAAqB,EAAC;IAChG,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAA;IAC/B,MAAM,EAAC,KAAK,EAAE,SAAS,EAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,EAAC,QAAQ,EAAC,CAAC,CAAA;IAC/E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAC,CAAC,CAAA;IAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -18,4 +18,12 @@ export function rollbridgeLogsCommand({ stageName, options, commandContext }: im
|
|
|
18
18
|
* @returns {Promise<void>}
|
|
19
19
|
*/
|
|
20
20
|
export function rollbridgeRecoverCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
21
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
22
|
+
export function runtimeValidateCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
23
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
24
|
+
export function runtimeStatusCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
25
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
26
|
+
export function runtimeLogsCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
27
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
28
|
+
export function runtimeRecoverCommand({ stageName, options, commandContext }: import("#types").CommandArgs): Promise<void>;
|
|
21
29
|
//# sourceMappingURL=rollbridge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollbridge.d.ts","sourceRoot":"","sources":["../../../src/commands/rollbridge.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rollbridge.d.ts","sourceRoot":"","sources":["../../../src/commands/rollbridge.js"],"names":[],"mappings":"AAQA;;;GAGG;AACH,kFAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIzB;AAED;;;GAGG;AACH,gFAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIzB;AAED;;;GAGG;AACH,8EAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIzB;AAED;;;GAGG;AACH,iFAHW,OAAO,QAAQ,EAAE,WAAW,GAC1B,OAAO,CAAC,IAAI,CAAC,CAKzB;AAED,0EAA0E;AAC1E,+EADY,OAAO,QAAQ,EAAE,WAAW,GAAiB,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,0EAA0E;AAC1E,6EADY,OAAO,QAAQ,EAAE,WAAW,GAAiB,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,0EAA0E;AAC1E,2EADY,OAAO,QAAQ,EAAE,WAAW,GAAiB,OAAO,CAAC,IAAI,CAAC,CAGrE;AAED,0EAA0E;AAC1E,8EADY,OAAO,QAAQ,EAAE,WAAW,GAAiB,OAAO,CAAC,IAAI,CAAC,CAIrE"}
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { commandContext as defaultCommandContext } from "./context.js";
|
|
3
3
|
import { runtimeFor } from "../runtimes/index.js";
|
|
4
|
+
import { requireCurrentRelease, resolveRetainedRelease } from "../core/release-manager.js";
|
|
5
|
+
import { readRuntimeState } from "../core/runtime-state.js";
|
|
6
|
+
import { acquireLock, releaseLock } from "../core/locks.js";
|
|
4
7
|
import { deployPaths } from "../core/paths.js";
|
|
5
8
|
/**
|
|
6
9
|
* @param {import('#types').CommandArgs} args
|
|
7
10
|
* @returns {Promise<void>}
|
|
8
11
|
*/
|
|
9
12
|
export async function rollbridgeValidateCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
10
|
-
await
|
|
13
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "validate", requiredType: "rollbridge" });
|
|
11
14
|
}
|
|
12
15
|
/**
|
|
13
16
|
* @param {import('#types').CommandArgs} args
|
|
14
17
|
* @returns {Promise<void>}
|
|
15
18
|
*/
|
|
16
19
|
export async function rollbridgeStatusCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
17
|
-
await
|
|
20
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "status", requiredType: "rollbridge" });
|
|
18
21
|
}
|
|
19
22
|
/**
|
|
20
23
|
* @param {import('#types').CommandArgs} args
|
|
21
24
|
* @returns {Promise<void>}
|
|
22
25
|
*/
|
|
23
26
|
export async function rollbridgeLogsCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
24
|
-
await
|
|
27
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "logs", requiredType: "rollbridge" });
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* @param {import('#types').CommandArgs} args
|
|
@@ -30,7 +33,25 @@ export async function rollbridgeLogsCommand({ stageName, options, commandContext
|
|
|
30
33
|
export async function rollbridgeRecoverCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
31
34
|
if (!options.yes && stageName === "production")
|
|
32
35
|
throw new Error("Refusing production Rollbridge recover without --yes in non-interactive MVP mode.");
|
|
33
|
-
await
|
|
36
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "recover", runtimeOptions: { force: true }, requiredType: "rollbridge" });
|
|
37
|
+
}
|
|
38
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
39
|
+
export async function runtimeValidateCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
40
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "validate" });
|
|
41
|
+
}
|
|
42
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
43
|
+
export async function runtimeStatusCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
44
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "status" });
|
|
45
|
+
}
|
|
46
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
47
|
+
export async function runtimeLogsCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
48
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "logs" });
|
|
49
|
+
}
|
|
50
|
+
/** @param {import('#types').CommandArgs} args @returns {Promise<void>} */
|
|
51
|
+
export async function runtimeRecoverCommand({ stageName, options, commandContext = defaultRuntimeCommandContext }) {
|
|
52
|
+
if (!options.yes && stageName === "production")
|
|
53
|
+
throw new Error("Refusing production runtime recover without --yes in non-interactive MVP mode.");
|
|
54
|
+
await runRuntimeCommand({ stageName, options, commandContext, method: "recover", runtimeOptions: { force: true } });
|
|
34
55
|
}
|
|
35
56
|
/**
|
|
36
57
|
* @param {import('#types').CommandOptions} options
|
|
@@ -42,28 +63,56 @@ async function defaultRuntimeCommandContext(options, stageName) {
|
|
|
42
63
|
return { ...context, runtime: runtimeFor(context.stage) };
|
|
43
64
|
}
|
|
44
65
|
/**
|
|
45
|
-
* @param {{stageName: string, options: import('#types').CommandOptions, commandContext: Function, method: string, runtimeOptions?: object}} opts
|
|
66
|
+
* @param {{stageName: string, options: import('#types').CommandOptions, commandContext: Function, method: string, runtimeOptions?: object, requiredType?: string}} opts
|
|
46
67
|
* @returns {Promise<void>}
|
|
47
68
|
*/
|
|
48
|
-
async function
|
|
69
|
+
async function runRuntimeCommand({ stageName, options, commandContext, method, runtimeOptions = {}, requiredType }) {
|
|
49
70
|
const { stage, transport, runtime } = await commandContext(options, stageName);
|
|
50
|
-
if (stage.runtime.type !==
|
|
71
|
+
if (requiredType && stage.runtime.type !== requiredType)
|
|
51
72
|
throw new Error(`Stage '${stageName}' does not use the Rollbridge runtime.`);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
73
|
+
if (typeof runtime[method] !== "function")
|
|
74
|
+
throw new Error(`Runtime '${stage.runtime.type}' does not support ${method}.`);
|
|
75
|
+
const lock = await acquireLock(transport, stage);
|
|
76
|
+
try {
|
|
77
|
+
const target = await runtimeCommandTarget(transport, stage, options);
|
|
78
|
+
const state = await readRuntimeState(transport, stage);
|
|
79
|
+
const active = state?.active;
|
|
80
|
+
const snapshot = target.releaseId && active?.releaseId === target.releaseId && active.runtime.type === stage.runtime.type ? active.runtime : undefined;
|
|
81
|
+
if (snapshot && runtime.verifySnapshot)
|
|
82
|
+
await runtime.verifySnapshot(transport, { snapshot, runtimePath: deployPaths(stage).runtimePath });
|
|
83
|
+
const result = await runtime[method](transport, { releasePath: target.releasePath, ...(snapshot ? { snapshot } : {}), ...runtimeOptions });
|
|
84
|
+
if (result?.output)
|
|
85
|
+
process.stdout.write(result.output);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
await releaseLock(transport, stage, lock);
|
|
89
|
+
}
|
|
56
90
|
}
|
|
57
91
|
/**
|
|
92
|
+
* @param {import('#types').Transport} transport
|
|
58
93
|
* @param {import('#types').StageConfig} stage
|
|
59
94
|
* @param {import('#types').CommandOptions} options
|
|
60
|
-
* @returns {string}
|
|
95
|
+
* @returns {Promise<{releasePath: string, releaseId?: string}>}
|
|
61
96
|
*/
|
|
62
|
-
function
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
if (options.
|
|
66
|
-
|
|
67
|
-
|
|
97
|
+
async function runtimeCommandTarget(transport, stage, options) {
|
|
98
|
+
const current = await requireCurrentRelease(transport, stage);
|
|
99
|
+
let selected;
|
|
100
|
+
if (options.releasePath) {
|
|
101
|
+
const releasesPath = path.resolve(deployPaths(stage).releasesPath);
|
|
102
|
+
const relative = path.relative(releasesPath, path.resolve(options.releasePath));
|
|
103
|
+
if (!relative || path.isAbsolute(relative) || relative.includes(path.sep)) {
|
|
104
|
+
throw new Error("Runtime command --release-path must identify one direct child of releases/.");
|
|
105
|
+
}
|
|
106
|
+
selected = await resolveRetainedRelease(transport, stage, relative);
|
|
107
|
+
}
|
|
108
|
+
else if (options.releaseId) {
|
|
109
|
+
selected = await resolveRetainedRelease(transport, stage, options.releaseId);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
return current;
|
|
113
|
+
}
|
|
114
|
+
if (selected.releaseId !== current.releaseId)
|
|
115
|
+
throw new Error("Runtime maintenance commands can target only the active release.");
|
|
116
|
+
return selected;
|
|
68
117
|
}
|
|
69
118
|
//# sourceMappingURL=rollbridge.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rollbridge.js","sourceRoot":"","sources":["../../../src/commands/rollbridge.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IACjH,MAAM,
|
|
1
|
+
{"version":3,"file":"rollbridge.js","sourceRoot":"","sources":["../../../src/commands/rollbridge.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAC,cAAc,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AACpE,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAC,qBAAqB,EAAE,sBAAsB,EAAC,MAAM,4BAA4B,CAAA;AACxF,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAC,WAAW,EAAE,WAAW,EAAC,MAAM,kBAAkB,CAAA;AACzD,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAA;AAE5C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IACjH,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAC,CAAC,CAAA;AAC/G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC/G,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAC,CAAC,CAAA;AAC7G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC7G,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAC,CAAC,CAAA;AAC3G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAChH,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,KAAK,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAA;IACpJ,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAE,YAAY,EAAE,YAAY,EAAC,CAAC,CAAA;AAC7I,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC9G,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAA;AACnF,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC5G,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;AACjF,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC1G,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAAC,CAAC,CAAA;AAC/E,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,GAAG,4BAA4B,EAAC;IAC7G,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,SAAS,KAAK,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAA;IACjJ,MAAM,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,EAAC,CAAC,CAAA;AACjH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,4BAA4B,CAAC,OAAO,EAAE,SAAS;IAC5D,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/D,OAAO,EAAC,GAAG,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAC,CAAA;AACzD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAAC,EAAC,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,EAAE,EAAE,YAAY,EAAC;IAC9G,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAC,GAAG,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC5E,IAAI,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,SAAS,wCAAwC,CAAC,CAAA;IACrI,IAAI,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,CAAC,IAAI,sBAAsB,MAAM,GAAG,CAAC,CAAA;IACzH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACpE,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAA;QAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAA;QACtJ,IAAI,QAAQ,IAAI,OAAO,CAAC,cAAc;YAAE,MAAM,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,WAAW,EAAC,CAAC,CAAA;QACxI,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,cAAc,EAAC,CAAC,CAAA;QACtI,IAAI,MAAM,EAAE,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACzD,CAAC;YAAS,CAAC;QACT,MAAM,WAAW,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC3C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,oBAAoB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO;IAC3D,MAAM,OAAO,GAAG,MAAM,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IAC7D,IAAI,QAAQ,CAAA;IACZ,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAA;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/E,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1E,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAA;QAChG,CAAC;QACD,QAAQ,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACrE,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7B,QAAQ,GAAG,MAAM,sBAAsB,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9E,CAAC;SAAM,CAAC;QACN,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IAAI,QAAQ,CAAC,SAAS,KAAK,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACjI,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate-config.d.ts","sourceRoot":"","sources":["../../../src/config/validate-config.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAJW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aACvB,MAAM,GACJ,OAAO,QAAQ,EAAE,WAAW,CAcxC;
|
|
1
|
+
{"version":3,"file":"validate-config.d.ts","sourceRoot":"","sources":["../../../src/config/validate-config.js"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,uCAJW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aACvB,MAAM,GACJ,OAAO,QAAQ,EAAE,WAAW,CAcxC;AA8KD;;;GAGG;AACH,iDAHW,OAAO,GACL,OAAO,CAInB"}
|