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