UNPKG

everything-dev

Version:

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

77 lines (75 loc) • 3.25 kB
const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); const require_types = require('../types.cjs'); const require_fastkv = require('../fastkv.cjs'); const require_config = require('../config.cjs'); const require_save_config = require('../utils/save-config.cjs'); const require_resolution_session = require('../resolution/session.cjs'); const require_shared = require('./shared.cjs'); const require_registry_use = require('../registry-use.cjs'); let node_fs = require("node:fs"); let node_path = require("node:path"); let effect = require("effect"); let node_process = require("node:process"); node_process = require_runtime.__toESM(node_process, 1); //#region src/commands/config.ts function registerConfig(builder) { return { config: builder.config.handler(async ({ input, context }) => { const deps = effect.Context.get(context["effect/context"], require_shared.BosDepsTag); if (input.full) return buildConfigResult(deps.session?.config ?? null, true); return buildConfigResult(await require_config.readAuthoredConfigInput(deps.session?.root), false); }), registryUse: builder.registryUse.handler(async ({ input, context }) => { const root = effect.Context.get(context["effect/context"], require_shared.BosDepsTag).session?.root ?? node_process.default.cwd(); const configPath = require_config.localConfigEntryPath(root) ?? (0, node_path.join)(root, "bos.config.json"); const normalizedFrom = input.from.startsWith("bos://") ? input.from : `bos://${input.from}`; try { const remote = await require_fastkv.fetchBosConfigFromFastKv(normalizedFrom); const local = await require_config.readLocalAuthoredConfigInput(root) ?? (configPath.endsWith(".json") ? JSON.parse((0, node_fs.readFileSync)(configPath, "utf-8")) : await require_config.loadAppDescriptorConfig(configPath)); const { config: merged, applied } = require_registry_use.applyRegistrySections(local, remote, input.sections); if (input.dryRun) return { status: "dry-run", from: normalizedFrom, applied, configPath }; await require_save_config.saveBosConfig(root, merged); return { status: "updated", from: normalizedFrom, applied, configPath }; } catch (error) { return { status: "error", from: normalizedFrom, applied: [], error: error instanceof Error ? error.message : String(error) }; } }) }; } function buildConfigResult(bosConfig, full = false) { const packages = bosConfig?.app && typeof bosConfig.app === "object" ? Object.keys(bosConfig.app) : []; const remotes = packages.filter((name) => name !== "host"); return { config: bosConfig ?? null, packages, remotes, full }; } async function resolveRemoteConfigChain(accountId, gatewayId, registry) { const { config: merged } = await require_resolution_session.walkExtendsChain(`bos://${accountId}/${gatewayId}`, { env: "production", registry, visit: async () => {} }); return require_config.resolveConfigComposableEntries(require_types.BosConfigSchema.parse(merged), node_process.default.cwd(), "production"); } //#endregion exports.registerConfig = registerConfig; exports.resolveRemoteConfigChain = resolveRemoteConfigChain; //# sourceMappingURL=config.cjs.map