@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
JavaScript
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
};