everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
72 lines (70 loc) • 2.91 kB
JavaScript
const require_merge = require('./merge.cjs');
const require_types = require('../../types.cjs');
const require_load = require('./load.cjs');
let node_fs = require("node:fs");
let node_path = require("node:path");
//#region src/services/resolution/serialize.ts
const RESOLVED_CONFIG_FILENAME = "bos.resolved-config.json";
function getResolvedConfigPath(configDir) {
return (0, node_path.join)(configDir, ".bos", RESOLVED_CONFIG_FILENAME);
}
function loadGeneratedResolvedConfig(configDir) {
const resolvedPath = getResolvedConfigPath(configDir);
if (!(0, node_fs.existsSync)(resolvedPath)) return null;
try {
const raw = JSON.parse((0, node_fs.readFileSync)(resolvedPath, "utf-8"));
if (!require_merge.isPlainObject(raw)) return null;
const { _resolved, ...configData } = raw;
return require_types.BosConfigSchema.parse(configData);
} catch {
return null;
}
}
function writeResolvedConfig(configDir, config, env, extendsChain, source) {
const resolvedPath = getResolvedConfigPath(configDir);
const resolvedDir = (0, node_path.dirname)(resolvedPath);
if (!(0, node_fs.existsSync)(resolvedDir)) (0, node_fs.mkdirSync)(resolvedDir, { recursive: true });
const ordered = require_merge.rebuildOrderedConfig(config);
const output = {
_resolved: {
env,
resolvedAt: (/* @__PURE__ */ new Date()).toISOString(),
extendsChain: extendsChain ?? [],
...source ? { source } : {}
},
...ordered
};
const content = `${JSON.stringify(output, null, 2)}\n`;
try {
if ((0, node_fs.readFileSync)(resolvedPath, "utf-8") === content) return;
} catch {}
(0, node_fs.writeFileSync)(resolvedPath, content);
}
function resolveBosConfigPath(configDir) {
const resolvedPath = getResolvedConfigPath(configDir);
if ((0, node_fs.existsSync)(resolvedPath)) return resolvedPath;
return (0, node_path.join)(configDir, "bos.config.json");
}
async function readBosConfigForBuild(configDir) {
const resolvedPath = getResolvedConfigPath(configDir);
if ((0, node_fs.existsSync)(resolvedPath)) try {
const raw = JSON.parse((0, node_fs.readFileSync)(resolvedPath, "utf-8"));
if (require_merge.isPlainObject(raw)) {
const { _resolved, ...configData } = raw;
return configData;
}
} catch (e) {
console.warn(`[Config] Failed to parse _resolved.json, falling back to the authored config: ${String(e)}`);
}
const authored = await require_load.readLocalAuthoredConfigInput(configDir);
if (authored) return authored;
const bosConfigPath = (0, node_path.join)(configDir, "bos.config.json");
return JSON.parse((0, node_fs.readFileSync)(bosConfigPath, "utf-8"));
}
//#endregion
exports.getResolvedConfigPath = getResolvedConfigPath;
exports.loadGeneratedResolvedConfig = loadGeneratedResolvedConfig;
exports.readBosConfigForBuild = readBosConfigForBuild;
exports.resolveBosConfigPath = resolveBosConfigPath;
exports.writeResolvedConfig = writeResolvedConfig;
//# sourceMappingURL=serialize.cjs.map