UNPKG

@storm-software/config-tools

Version:

⚡The Storm-Ops monorepo contains utility applications, tools, and various libraries to create modern and scalable web applications.

80 lines (77 loc) 2.84 kB
import { writeTrace } from "./chunk-XDS6C7HI.js"; import { findWorkspaceRoot } from "./chunk-K6PUXRK3.js"; import { joinPaths } from "./chunk-D6E6GZD2.js"; import { __name } from "./chunk-SHUYVCID.js"; // src/config-file/get-config-file.ts import { loadConfig } from "c12"; import defu from "defu"; var getConfigFileByName = /* @__PURE__ */ __name(async (fileName, filePath, options = {}) => { const workspacePath = filePath || findWorkspaceRoot(filePath); const configs = await Promise.all([ loadConfig({ cwd: workspacePath, packageJson: true, name: fileName, envName: fileName?.toUpperCase(), jitiOptions: { debug: false, fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(process.env.STORM_CACHE_DIR || "node_modules/.cache/storm", "jiti") }, ...options }), loadConfig({ cwd: workspacePath, packageJson: true, name: fileName, envName: fileName?.toUpperCase(), jitiOptions: { debug: false, fsCache: process.env.STORM_SKIP_CACHE === "true" ? false : joinPaths(process.env.STORM_CACHE_DIR || "node_modules/.cache/storm", "jiti") }, configFile: fileName, ...options }) ]); return defu(configs[0] ?? {}, configs[1] ?? {}); }, "getConfigFileByName"); var getConfigFile = /* @__PURE__ */ __name(async (filePath, additionalFileNames = []) => { const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath); const result = await getConfigFileByName("storm-workspace", workspacePath); let config = result.config; const configFile = result.configFile; if (config && configFile && Object.keys(config).length > 0 && !config.skipConfigLogging) { writeTrace(`Found Storm configuration file "${configFile.includes(`${workspacePath}/`) ? configFile.replace(`${workspacePath}/`, "") : configFile}" at "${workspacePath}"`, { logLevel: "all" }); } if (additionalFileNames && additionalFileNames.length > 0) { const results = await Promise.all(additionalFileNames.map((fileName) => getConfigFileByName(fileName, workspacePath))); for (const result2 of results) { if (result2?.config && result2?.configFile && Object.keys(result2.config).length > 0) { if (!config.skipConfigLogging && !result2.config.skipConfigLogging) { writeTrace(`Found alternative configuration file "${result2.configFile.includes(`${workspacePath}/`) ? result2.configFile.replace(`${workspacePath}/`, "") : result2.configFile}" at "${workspacePath}"`, { logLevel: "all" }); } config = defu(result2.config ?? {}, config ?? {}); } } } if (!config) { return void 0; } config.configFile = configFile; return config; }, "getConfigFile"); export { getConfigFileByName, getConfigFile };