UNPKG

everything-dev

Version:

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

47 lines (45 loc) • 2.09 kB
import { MISSING_CONFIG_MESSAGE, findConfigPath } from "../services/resolution/load.mjs"; import { importWorkspace } from "../services/scaffold/import.mjs"; import { dirname } from "node:path"; import { Effect } from "effect"; import process from "node:process"; import * as p from "@clack/prompts"; //#region src/handlers/import.ts function registerImport(builder) { return { import: builder.import.effect(function* (_opts, input) { const configPath = findConfigPath(); if (!configPath) return { status: "error", workspace: input.workspace, from: input.from ?? "", ref: "", added: [], updated: [], unchanged: [], preservedLocal: [], merged: [], conflicts: [], heldBackMigrations: [], migrationCollisions: [], warnings: [], error: `${MISSING_CONFIG_MESSAGE} in current directory` }; const options = input; const projectDir = dirname(configPath); const confirm = !options.yes && !options.dryRun && process.stdin.isTTY && process.stdout.isTTY ? async (info) => { const collisionNote = info.migrationCollisionCount > 0 ? ` + ${info.migrationCollisionCount} unresolvable migration collision(s)` : ""; const heldNote = info.heldCount > 0 ? `; ${info.heldCount} migration-chain file(s) will be held back` : ""; const appendedNote = info.appendedCount > 0 ? `; ${info.appendedCount} upstream migration(s) will be renumbered and appended to the local chain` : ""; const answer = await p.confirm({ message: info.conflictCount > 0 || info.migrationCollisionCount > 0 ? `${info.conflictCount} conflicting file(s)${collisionNote} in ${info.workspace} — apply upstream over conflicting files (local copies backed up)${heldNote}?` : `Migration chain reconciliation in ${info.workspace}: apply upstream migrations${appendedNote}${heldNote}?`, initialValue: false }); if (p.isCancel(answer)) return false; return answer === true; } : void 0; return yield* Effect.tryPromise(() => importWorkspace(projectDir, options, { confirm })); }) }; } //#endregion export { registerImport }; //# sourceMappingURL=import.mjs.map