everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
1 lines • 5.84 kB
Source Map (JSON)
{"version":3,"file":"dev.mjs","names":[],"sources":["../../../src/cli/commands/dev.ts"],"sourcesContent":["import * as p from \"@clack/prompts\";\nimport type { DevOptions, DevResult, StartOptions, StartResult } from \"../../contract\";\nimport { type ProgressEvent, pluginEvents } from \"../../services/dev/progress\";\nimport type { DevSessionData } from \"../../services/dev/session\";\nimport { exitCodeFor } from \"../exit-codes\";\nimport { clearSpinnerStopLine, printStartSummary } from \"../render/dev\";\nimport type { CommandContext } from \"./context\";\n\nconst _runWithProgress = async <T>(\n spinner: ReturnType<typeof p.spinner>,\n phaseLabels: Record<string, string>,\n call: () => Promise<T>,\n): Promise<T> => {\n const onProgress = (event: ProgressEvent) => {\n const label = phaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") spinner.message(label);\n };\n pluginEvents.on(\"progress\", onProgress);\n try {\n return await call();\n } finally {\n pluginEvents.off(\"progress\", onProgress);\n }\n};\n\nconst mountSession = async (\n projectDir: string | undefined,\n session: DevSessionData,\n): Promise<void> => {\n const [{ devApp }, { DevRendererCliLive }] = await Promise.all([\n import(\"../../services/dev/session\"),\n import(\"../render/dev-render\"),\n ]);\n devApp(projectDir ?? process.cwd(), session, DevRendererCliLive);\n};\n\nexport const runDev = async (ctx: CommandContext): Promise<void> => {\n const client = ctx.client;\n const input = ctx.input;\n const outdatedWarning = ctx.outdatedWarning;\n const projectDir = ctx.projectDir;\n void outdatedWarning;\n const devSpinner = p.spinner();\n devSpinner.start(\"Starting dev environment\");\n\n const devPhaseLabels: Record<string, string> = {\n \"shared deps\": \"Preparing config...\",\n install: \"Installing dependencies...\",\n build: \"Building...\",\n \"resolve config\": \"Resolving config...\",\n ports: \"Finding available ports...\",\n \"docker compose up\": \"Starting local Postgres...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onDevProgress = (event: ProgressEvent) => {\n const label = devPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n devSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onDevProgress);\n\n let result: DevResult;\n try {\n result = await client.dev(input as DevOptions);\n } finally {\n pluginEvents.off(\"progress\", onDevProgress);\n }\n\n if (exitCodeFor(result) === 1) {\n devSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.description}`);\n process.exit(1);\n }\n\n devSpinner.stop();\n clearSpinnerStopLine();\n\n const session = result.session;\n void outdatedWarning;\n if (session) {\n await mountSession(projectDir, session);\n }\n return;\n};\n\nexport const runStart = async (ctx: CommandContext): Promise<void> => {\n const client = ctx.client;\n const input = ctx.input;\n const outdatedWarning = ctx.outdatedWarning;\n const projectDir = ctx.projectDir;\n void outdatedWarning;\n const startSpinner = p.spinner();\n startSpinner.start(\"Starting production environment\");\n\n const startPhaseLabels: Record<string, string> = {\n config: \"Preparing config...\",\n \"generate artifacts\": \"Generating code artifacts...\",\n };\n\n const onStartProgress = (event: ProgressEvent) => {\n const label = startPhaseLabels[event.phase] ?? event.phase;\n if (event.status === \"running\") {\n startSpinner.message(label);\n }\n };\n pluginEvents.on(\"progress\", onStartProgress);\n\n let result: StartResult;\n try {\n result = await client.start(input as StartOptions);\n } finally {\n pluginEvents.off(\"progress\", onStartProgress);\n }\n\n if (exitCodeFor(result) === 1) {\n startSpinner.stop(\"Failed\");\n console.error(`[CLI] ${result.error || \"Unknown error\"}`);\n process.exit(1);\n }\n\n startSpinner.stop(\"Ready\");\n\n const session = result.session;\n const summary = result.summary;\n void outdatedWarning;\n if (session) {\n if (summary) {\n printStartSummary(summary);\n }\n await mountSession(projectDir, session);\n }\n return;\n};\n"],"mappings":";;;;;;AAyBA,MAAM,eAAe,OACnB,YACA,YACkB;CAClB,MAAM,CAAC,EAAE,UAAU,EAAE,wBAAwB,MAAM,QAAQ,IAAI,CAC7D,OAAO,mCACP,OAAO,2BACT,CAAC;CACD,OAAO,cAAc,QAAQ,IAAI,GAAG,SAAS,kBAAkB;AACjE;AAEA,MAAa,SAAS,OAAO,QAAuC;CAClE,MAAM,SAAS,IAAI;CACnB,MAAM,QAAQ,IAAI;CACM,IAAI;CAC5B,MAAM,aAAa,IAAI;CAEvB,MAAM,aAAa,EAAE,QAAQ;CAC7B,WAAW,MAAM,0BAA0B;CAE3C,MAAM,iBAAyC;EAC7C,eAAe;EACf,SAAS;EACT,OAAO;EACP,kBAAkB;EAClB,OAAO;EACP,qBAAqB;EACrB,sBAAsB;CACxB;CAEA,MAAM,iBAAiB,UAAyB;EAC9C,MAAM,QAAQ,eAAe,MAAM,UAAU,MAAM;EACnD,IAAI,MAAM,WAAW,WACnB,WAAW,QAAQ,KAAK;CAE5B;CACA,aAAa,GAAG,YAAY,aAAa;CAEzC,IAAI;CACJ,IAAI;EACF,SAAS,MAAM,OAAO,IAAI,KAAmB;CAC/C,UAAU;EACR,aAAa,IAAI,YAAY,aAAa;CAC5C;CAEA,IAAI,YAAY,MAAM,MAAM,GAAG;EAC7B,WAAW,KAAK,QAAQ;EACxB,QAAQ,MAAM,SAAS,OAAO,aAAa;EAC3C,QAAQ,KAAK,CAAC;CAChB;CAEA,WAAW,KAAK;CAChB,qBAAqB;CAErB,MAAM,UAAU,OAAO;CAEvB,IAAI,SACF,MAAM,aAAa,YAAY,OAAO;AAG1C;AAEA,MAAa,WAAW,OAAO,QAAuC;CACpE,MAAM,SAAS,IAAI;CACnB,MAAM,QAAQ,IAAI;CACM,IAAI;CAC5B,MAAM,aAAa,IAAI;CAEvB,MAAM,eAAe,EAAE,QAAQ;CAC/B,aAAa,MAAM,iCAAiC;CAEpD,MAAM,mBAA2C;EAC/C,QAAQ;EACR,sBAAsB;CACxB;CAEA,MAAM,mBAAmB,UAAyB;EAChD,MAAM,QAAQ,iBAAiB,MAAM,UAAU,MAAM;EACrD,IAAI,MAAM,WAAW,WACnB,aAAa,QAAQ,KAAK;CAE9B;CACA,aAAa,GAAG,YAAY,eAAe;CAE3C,IAAI;CACJ,IAAI;EACF,SAAS,MAAM,OAAO,MAAM,KAAqB;CACnD,UAAU;EACR,aAAa,IAAI,YAAY,eAAe;CAC9C;CAEA,IAAI,YAAY,MAAM,MAAM,GAAG;EAC7B,aAAa,KAAK,QAAQ;EAC1B,QAAQ,MAAM,SAAS,OAAO,SAAS,iBAAiB;EACxD,QAAQ,KAAK,CAAC;CAChB;CAEA,aAAa,KAAK,OAAO;CAEzB,MAAM,UAAU,OAAO;CACvB,MAAM,UAAU,OAAO;CAEvB,IAAI,SAAS;EACX,IAAI,SACF,kBAAkB,OAAO;EAE3B,MAAM,aAAa,YAAY,OAAO;CACxC;AAEF"}