UNPKG

everything-dev

Version:

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

72 lines (70 loc) • 2.91 kB
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