UNPKG

@storm-software/config-tools

Version:

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

92 lines (89 loc) 2.94 kB
import { getConfigFile } from "./chunk-BDMLGH55.js"; import { formatLogMessage, writeTrace, writeWarning } from "./chunk-XDS6C7HI.js"; import { getDefaultConfig } from "./chunk-2V4WR4HU.js"; import { findWorkspaceRoot } from "./chunk-K6PUXRK3.js"; import { setConfigEnv } from "./chunk-C5HVNEWC.js"; import { getConfigEnv, getExtensionEnv } from "./chunk-XECGVR7L.js"; import { __name } from "./chunk-SHUYVCID.js"; // src/create-storm-config.ts import { stormWorkspaceConfigSchema } from "@storm-software/config/schema"; import defu from "defu"; var _extension_cache = /* @__PURE__ */ new WeakMap(); var _static_cache = void 0; var createStormWorkspaceConfig = /* @__PURE__ */ __name(async (extensionName, schema, workspaceRoot, skipLogs = false) => { let result; if (!_static_cache?.data || !_static_cache?.timestamp || _static_cache.timestamp < Date.now() - 8e3) { let _workspaceRoot = workspaceRoot; if (!_workspaceRoot) { _workspaceRoot = findWorkspaceRoot(); } const configEnv = getConfigEnv(); const defaultConfig = await getDefaultConfig(_workspaceRoot); const configFile = await getConfigFile(_workspaceRoot); if (!configFile && !skipLogs) { writeWarning("No Storm Workspace configuration file found in the current repository. Please ensure this is the expected behavior - you can add a `storm-workspace.json` file to the root of your workspace if it is not.\n", { logLevel: "all" }); } result = await stormWorkspaceConfigSchema.parseAsync(defu(configEnv, configFile, defaultConfig)); result.workspaceRoot ??= _workspaceRoot; } else { result = _static_cache.data; } if (schema && extensionName) { result.extensions = { ...result.extensions, [extensionName]: createConfigExtension(extensionName, schema) }; } _static_cache = { timestamp: Date.now(), data: result }; return result; }, "createStormWorkspaceConfig"); var createConfigExtension = /* @__PURE__ */ __name((extensionName, schema) => { const extension_cache_key = { extensionName }; if (_extension_cache.has(extension_cache_key)) { return _extension_cache.get(extension_cache_key); } let extension = getExtensionEnv(extensionName); if (schema) { extension = schema.parse(extension); } _extension_cache.set(extension_cache_key, extension); return extension; }, "createConfigExtension"); var loadStormWorkspaceConfig = /* @__PURE__ */ __name(async (workspaceRoot, skipLogs = false) => { const config = await createStormWorkspaceConfig(void 0, void 0, workspaceRoot, skipLogs); setConfigEnv(config); if (!skipLogs && !config.skipConfigLogging) { writeTrace(`\u2699\uFE0F Using Storm Workspace configuration: ${formatLogMessage(config)}`, config); } return config; }, "loadStormWorkspaceConfig"); export { createStormWorkspaceConfig, createConfigExtension, loadStormWorkspaceConfig };