everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
47 lines (45 loc) • 2.09 kB
JavaScript
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