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