UNPKG

everything-dev

Version:

A consolidated product package for building Module Federation apps with oRPC APIs.

57 lines (55 loc) • 2.8 kB
const require_theme = require('../../utils/theme.cjs'); const require_string = require('../../utils/string.cjs'); const require_timing = require('../../utils/timing.cjs'); //#region src/cli/render/deploy-train.ts /** The Build section's attributed warnings block: one sub-block per workspace * that has them, name-padded like every other row (#431). */ function renderBuildWarnings(deployResults) { const withWarnings = deployResults.filter((r) => (r.warnings ?? []).length > 0); if (withWarnings.length === 0) return; console.log(); console.log(` ${require_theme.colors.yellow("⚠")} Build warnings:`); for (const result of withWarnings) for (const warning of result.warnings ?? []) { const lines = warning.split("\n"); console.log(` ${require_string.padRight(result.key, NAME_COLUMN)} ${require_theme.colors.dim(lines[0] ?? "")}`); for (const continuation of lines.slice(1)) console.log(` ${require_string.padRight("", NAME_COLUMN)} ${require_theme.colors.dim(continuation)}`); } } const NAME_COLUMN = 28; /** * The deploy train's sectioned renderer (#431): Build / Upload / Publish / * Image+Railway, one consistent name-padded column, deterministic order (the * train reports outcomes in target order — parallel units never interleave). * Default view: one line per workspace upload; detail lines only under * --verbose. */ const cliDeployTrainRender = { cdnBanner: (storageOrigin) => { console.log(); console.log(` CDN deploy — uploading workspace dists to ${storageOrigin}...`); }, uploadOutcome: (outcome) => { const name = require_string.padRight(outcome.key, NAME_COLUMN); if (!outcome.ok) { console.log(` ${require_theme.colors.error(require_theme.icons.err)} ${name} upload failed`); return; } console.log(` ${require_theme.colors.green(require_theme.icons.ok)} ${name} → ${outcome.base} (${outcome.uploaded} uploaded, ${outcome.skipped} skipped, ${require_timing.formatDuration(outcome.durationMs ?? 0)})`); if (outcome.detailNotes) for (const note of outcome.detailNotes) console.log(` ${require_theme.colors.dim(`${require_string.padRight("", NAME_COLUMN)} ${note}`)}`); }, publish: (info) => { console.log(); console.log(" Publishing to:"); console.log(` ${require_theme.colors.cyan(info.registryUrl)}`); console.log(` ${require_theme.colors.dim("Fingerprint:")} ${info.fingerprint}`); for (const [slot, pin] of info.slotPins) { console.log(` ${require_theme.colors.dim(`${slot}:`)}`); console.log(` ${pin}`); } console.log(` ${require_theme.colors.dim(`+ per-deploy manifest ${info.auditManifestFile} (audit trail)`)}`); } }; //#endregion exports.cliDeployTrainRender = cliDeployTrainRender; exports.renderBuildWarnings = renderBuildWarnings; //# sourceMappingURL=deploy-train.cjs.map