UNPKG

everything-dev

Version:

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

91 lines (89 loc) • 2.97 kB
const require_load = require('../services/resolution/load.cjs'); const require_services_resolution_session = require('../services/resolution/session.cjs'); const require_artifacts = require('../services/codegen/artifacts.cjs'); const require_build_train = require('../services/workspace/build-train.cjs'); let effect = require("effect"); //#region src/handlers/build.ts function registerBuild(builder) { return { build: builder.build.effect(function* (_opts, input) { const session = yield* require_services_resolution_session.ResolutionSessionService; const train = yield* require_build_train.BuildTrainService; if (!session?.config) return { status: "error", error: require_load.MISSING_CONFIG_MESSAGE, built: [], skipped: [] }; const bosConfig = session.config; const buildEnv = "development"; const targets = require_build_train.selectWorkspaceTargets(input.packages, bosConfig); if (targets.length === 0) { const allPackages = [...Object.keys(bosConfig.app ?? {}), ...Object.keys(bosConfig.plugins ?? {})]; return { status: "error", error: `Unknown build target(s): ${input.packages} — valid targets: ${allPackages.join(", ") || "none"} (framework packages build via the prerequisite train: pnpm run build <target>)`, built: [], skipped: [] }; } const runtimeConfig = yield* effect.Effect.tryPromise({ try: () => session.buildRuntime({ uiSource: bosConfig.app.ui?.development ? "local" : "remote", apiSource: bosConfig.app.api?.development ? "local" : "remote", authSource: bosConfig.app.auth?.development ? "local" : "remote", hostSource: bosConfig.app.host?.development ? "local" : "remote", env: buildEnv, plugins: session.runtime?.plugins }), catch: () => ({ status: "error", error: "Could not build the runtime config", built: [], skipped: [] }) }); for (const message of session.warnings) console.warn(message); yield* effect.Effect.tryPromise({ try: () => require_artifacts.generateCodeArtifacts(session.root, bosConfig, { env: buildEnv, runtimeConfig }), catch: () => ({ status: "error", error: "Could not generate code artifacts", built: [], skipped: [] }) }); const buildInput = { configDir: session.root, bosConfig, runtimeConfig, targets, deploy: false }; const { built, skipped } = yield* effect.Effect.tryPromise({ try: () => train.buildTargets(buildInput), catch: (error) => ({ status: "error", error: error instanceof Error ? error.message : "Unknown error", built: [], skipped: [] }) }); if (built.length === 0) return { status: "error", error: `Nothing to build — no local targets matched${skipped.length > 0 ? `: ${skipped.join(", ")}` : ""}`, built: [], skipped }; return { status: "success", built, skipped }; }) }; } //#endregion exports.registerBuild = registerBuild; //# sourceMappingURL=build.cjs.map