everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
89 lines (87 loc) • 3.17 kB
JavaScript
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
const require_progress = require('../../services/dev/progress.cjs');
const require_exit_codes = require('../exit-codes.cjs');
const require_dev = require('../render/dev.cjs');
let _clack_prompts = require("@clack/prompts");
_clack_prompts = require_runtime.__toESM(_clack_prompts, 1);
//#region src/cli/commands/dev.ts
const mountSession = async (projectDir, session) => {
const [{ devApp }, { DevRendererCliLive }] = await Promise.all([Promise.resolve().then(() => require("../../services/dev/session.cjs")), Promise.resolve().then(() => require("../render/dev-render.cjs"))]);
devApp(projectDir ?? process.cwd(), session, DevRendererCliLive);
};
const runDev = async (ctx) => {
const client = ctx.client;
const input = ctx.input;
ctx.outdatedWarning;
const projectDir = ctx.projectDir;
const devSpinner = _clack_prompts.spinner();
devSpinner.start("Starting dev environment");
const devPhaseLabels = {
"shared deps": "Preparing config...",
install: "Installing dependencies...",
build: "Building...",
"resolve config": "Resolving config...",
ports: "Finding available ports...",
"docker compose up": "Starting local Postgres...",
"generate artifacts": "Generating code artifacts..."
};
const onDevProgress = (event) => {
const label = devPhaseLabels[event.phase] ?? event.phase;
if (event.status === "running") devSpinner.message(label);
};
require_progress.pluginEvents.on("progress", onDevProgress);
let result;
try {
result = await client.dev(input);
} finally {
require_progress.pluginEvents.off("progress", onDevProgress);
}
if (require_exit_codes.exitCodeFor(result) === 1) {
devSpinner.stop("Failed");
console.error(`[CLI] ${result.description}`);
process.exit(1);
}
devSpinner.stop();
require_dev.clearSpinnerStopLine();
const session = result.session;
if (session) await mountSession(projectDir, session);
};
const runStart = async (ctx) => {
const client = ctx.client;
const input = ctx.input;
ctx.outdatedWarning;
const projectDir = ctx.projectDir;
const startSpinner = _clack_prompts.spinner();
startSpinner.start("Starting production environment");
const startPhaseLabels = {
config: "Preparing config...",
"generate artifacts": "Generating code artifacts..."
};
const onStartProgress = (event) => {
const label = startPhaseLabels[event.phase] ?? event.phase;
if (event.status === "running") startSpinner.message(label);
};
require_progress.pluginEvents.on("progress", onStartProgress);
let result;
try {
result = await client.start(input);
} finally {
require_progress.pluginEvents.off("progress", onStartProgress);
}
if (require_exit_codes.exitCodeFor(result) === 1) {
startSpinner.stop("Failed");
console.error(`[CLI] ${result.error || "Unknown error"}`);
process.exit(1);
}
startSpinner.stop("Ready");
const session = result.session;
const summary = result.summary;
if (session) {
if (summary) require_dev.printStartSummary(summary);
await mountSession(projectDir, session);
}
};
//#endregion
exports.runDev = runDev;
exports.runStart = runStart;
//# sourceMappingURL=dev.cjs.map