UNPKG

everything-dev

Version:

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

77 lines (75 loc) • 3.35 kB
const require_runtime = require('../_virtual/_rolldown/runtime.cjs'); const require_types = require('../types.cjs'); const require_services_registry_fastkv = require('../services/registry/fastkv.cjs'); const require_load = require('../services/resolution/load.cjs'); const require_services_resolution_session = require('../services/resolution/session.cjs'); const require_use = require('../services/registry/use.cjs'); const require_save_config = require('../utils/save-config.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/handlers/config.ts function registerConfig(builder) { return { config: builder.config.effect(function* (_opts, input) { const session = yield* require_services_resolution_session.ResolutionSessionService; if (input.full) return buildConfigResult(session?.config ?? null, true); return buildConfigResult(yield* effect.Effect.promise(() => require_load.readAuthoredConfigInput(session?.root)), false); }), registryUse: builder.registryUse.effect(function* (_opts, input) { const root = (yield* require_services_resolution_session.ResolutionSessionService)?.root ?? node_process.default.cwd(); const configPath = require_load.localConfigEntryPath(root) ?? (0, node_path.join)(root, "bos.config.json"); const normalizedFrom = input.from.startsWith("bos://") ? input.from : `bos://${input.from}`; return yield* effect.Effect.tryPromise({ try: async () => { const remote = await require_services_registry_fastkv.fetchBosConfigFromFastKv(normalizedFrom); const local = await require_load.readLocalAuthoredConfigInput(root) ?? (configPath.endsWith(".json") ? JSON.parse((0, node_fs.readFileSync)(configPath, "utf-8")) : await require_load.loadAppDescriptorConfig(configPath)); const { config: merged, applied } = require_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) => ({ 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_services_resolution_session.walkExtendsChain(`bos://${accountId}/${gatewayId}`, { env: "production", registry, visit: async () => {} }); return require_load.resolveConfigComposableEntries(require_types.BosConfigSchema.parse(merged), node_process.default.cwd(), "production"); } //#endregion exports.registerConfig = registerConfig; exports.resolveRemoteConfigChain = resolveRemoteConfigChain; //# sourceMappingURL=config.cjs.map