everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
39 lines (37 loc) • 1.85 kB
JavaScript
import { colors } from "../../utils/theme.mjs";
import { formatDuration, sumPhaseDurations } from "../../utils/timing.mjs";
//#region src/cli/render/dev.ts
/** The `bos start` boot summary. */
function printStartSummary(summary) {
console.log();
console.log(` ${colors.dim("Config Source:")} ${summary.configSource}`);
if (summary.configSourceHttp) console.log(` ${colors.dim(summary.configSourceHttp)}`);
console.log(` ${colors.dim("Account:")} ${summary.account}`);
console.log(` ${colors.dim("Domain:")} ${summary.domain ?? "not configured"}`);
console.log();
console.log(` ${colors.dim("Modules:")}`);
console.log(` ${colors.dim("HOST")} → ${summary.modules.host ?? "local"}`);
console.log(` ${colors.dim("UI")} → ${summary.modules.ui ?? "local"}`);
console.log(` ${colors.dim("API")} → ${summary.modules.api ?? "local"}`);
if (summary.modules.auth) console.log(` ${colors.dim("AUTH")} → ${summary.modules.auth}`);
if (summary.warnings.length > 0) {
console.log();
for (const w of summary.warnings) console.log(` ${colors.yellow(w)}`);
}
console.log();
}
/** Phase timings below a long-running summary. */
function printTimingSummary(timings) {
if (!timings || timings.length === 0) return;
console.log(` ${colors.dim("Timings:")}`);
for (const timing of timings) console.log(` ${colors.dim(timing.name.padEnd(22))} ${formatDuration(timing.durationMs)}`);
console.log(` ${colors.dim("total".padEnd(22))} ${formatDuration(sumPhaseDurations(timings))}`);
}
/** Erase the clack spinner line so streamed output starts clean. */
function clearSpinnerStopLine() {
if (!process.stdout.isTTY) return;
process.stdout.write("\x1B[1A\x1B[2K\r");
}
//#endregion
export { clearSpinnerStopLine, printStartSummary, printTimingSummary };
//# sourceMappingURL=dev.mjs.map