UNPKG

@storm-software/workspace-tools

Version:

Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.

729 lines (721 loc) • 27.9 kB
import { COLOR_KEYS, LogLevel, STORM_DEFAULT_DOCS, STORM_DEFAULT_HOMEPAGE, STORM_DEFAULT_LICENSING, applyDefaultConfig, formatLogMessage, getLogLevel, getLogLevelLabel, getPackageJsonConfig, stormWorkspaceConfigSchema, writeTrace, writeWarning } from "./chunk-5AXTWPT3.mjs"; import { findWorkspaceRoot } from "./chunk-LSF4BHCI.mjs"; import { correctPaths, joinPaths } from "./chunk-U7JFVMCK.mjs"; // ../config-tools/src/create-storm-config.ts import defu2 from "defu"; // ../config-tools/src/config-file/get-config-file.ts import { loadConfig } from "c12"; import defu from "defu"; var getConfigFileByName = 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] ?? {}); }; var getConfigFile = 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 || Object.keys(config).length === 0) { return void 0; } config.configFile = configFile; return config; }; // ../config-tools/src/env/get-env.ts var getExtensionEnv = (extensionName) => { const prefix = `STORM_EXTENSION_${extensionName.toUpperCase()}_`; return Object.keys(process.env).filter((key) => key.startsWith(prefix)).reduce((ret, key) => { const name = key.replace(prefix, "").split("_").map( (i) => i.length > 0 ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1) : "" ).join(""); if (name) { ret[name] = process.env[key]; } return ret; }, {}); }; var getConfigEnv = () => { const prefix = "STORM_"; let config = { extends: process.env[`${prefix}EXTENDS`] || void 0, name: process.env[`${prefix}NAME`] || void 0, namespace: process.env[`${prefix}NAMESPACE`] || void 0, owner: process.env[`${prefix}OWNER`] || void 0, bot: { name: process.env[`${prefix}BOT_NAME`] || void 0, email: process.env[`${prefix}BOT_EMAIL`] || void 0 }, release: { banner: process.env[`${prefix}RELEASE_BANNER`] || void 0, header: process.env[`${prefix}RELEASE_HEADER`] || void 0, footer: process.env[`${prefix}RELEASE_FOOTER`] || void 0 }, error: { codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || void 0, url: process.env[`${prefix}ERROR_URL`] || void 0 }, account: { twitter: process.env[`${prefix}ACCOUNT_TWITTER`] || void 0, discord: process.env[`${prefix}ACCOUNT_DISCORD`] || void 0, telegram: process.env[`${prefix}ACCOUNT_TELEGRAM`] || void 0, slack: process.env[`${prefix}ACCOUNT_SLACK`] || void 0, medium: process.env[`${prefix}ACCOUNT_MEDIUM`] || void 0, github: process.env[`${prefix}ACCOUNT_GITHUB`] || void 0 }, organization: process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`] ? process.env[`${prefix}ORG_DESCRIPTION`] || process.env[`${prefix}ORGANIZATION_DESCRIPTION`] || process.env[`${prefix}ORG_URL`] || process.env[`${prefix}ORGANIZATION_URL`] || process.env[`${prefix}ORG_LOGO`] || process.env[`${prefix}ORGANIZATION_LOGO`] ? { name: process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`], description: process.env[`${prefix}ORG_DESCRIPTION`] || process.env[`${prefix}ORGANIZATION_DESCRIPTION`] || void 0, url: process.env[`${prefix}ORG_URL`] || process.env[`${prefix}ORGANIZATION_URL`] || void 0, logo: process.env[`${prefix}ORG_LOGO`] || process.env[`${prefix}ORGANIZATION_LOGO`] || void 0, icon: process.env[`${prefix}ORG_ICON`] || process.env[`${prefix}ORGANIZATION_ICON`] || void 0 } : process.env[`${prefix}ORG`] || process.env[`${prefix}ORGANIZATION`] || process.env[`${prefix}ORG_NAME`] || process.env[`${prefix}ORGANIZATION_NAME`] : void 0, packageManager: process.env[`${prefix}PACKAGE_MANAGER`] || void 0, license: process.env[`${prefix}LICENSE`] || void 0, homepage: process.env[`${prefix}HOMEPAGE`] || void 0, docs: process.env[`${prefix}DOCS`] || void 0, portal: process.env[`${prefix}PORTAL`] || void 0, licensing: process.env[`${prefix}LICENSING`] || void 0, contact: process.env[`${prefix}CONTACT`] || void 0, support: process.env[`${prefix}SUPPORT`] || void 0, timezone: process.env[`${prefix}TIMEZONE`] || process.env.TZ || void 0, locale: process.env[`${prefix}LOCALE`] || process.env.LOCALE || void 0, configFile: process.env[`${prefix}CONFIG_FILE`] ? correctPaths(process.env[`${prefix}CONFIG_FILE`]) : void 0, workspaceRoot: process.env[`${prefix}WORKSPACE_ROOT`] ? correctPaths(process.env[`${prefix}WORKSPACE_ROOT`]) : void 0, directories: { cache: process.env[`${prefix}CACHE_DIR`] ? correctPaths(process.env[`${prefix}CACHE_DIR`]) : process.env[`${prefix}CACHE_DIRECTORY`] ? correctPaths(process.env[`${prefix}CACHE_DIRECTORY`]) : void 0, data: process.env[`${prefix}DATA_DIR`] ? correctPaths(process.env[`${prefix}DATA_DIR`]) : process.env[`${prefix}DATA_DIRECTORY`] ? correctPaths(process.env[`${prefix}DATA_DIRECTORY`]) : void 0, config: process.env[`${prefix}CONFIG_DIR`] ? correctPaths(process.env[`${prefix}CONFIG_DIR`]) : process.env[`${prefix}CONFIG_DIRECTORY`] ? correctPaths(process.env[`${prefix}CONFIG_DIRECTORY`]) : void 0, temp: process.env[`${prefix}TEMP_DIR`] ? correctPaths(process.env[`${prefix}TEMP_DIR`]) : process.env[`${prefix}TEMP_DIRECTORY`] ? correctPaths(process.env[`${prefix}TEMP_DIRECTORY`]) : void 0, log: process.env[`${prefix}LOG_DIR`] ? correctPaths(process.env[`${prefix}LOG_DIR`]) : process.env[`${prefix}LOG_DIRECTORY`] ? correctPaths(process.env[`${prefix}LOG_DIRECTORY`]) : void 0, build: process.env[`${prefix}BUILD_DIR`] ? correctPaths(process.env[`${prefix}BUILD_DIR`]) : process.env[`${prefix}BUILD_DIRECTORY`] ? correctPaths(process.env[`${prefix}BUILD_DIRECTORY`]) : void 0 }, skipCache: process.env[`${prefix}SKIP_CACHE`] !== void 0 ? Boolean(process.env[`${prefix}SKIP_CACHE`]) : void 0, mode: (process.env[`${prefix}MODE`] ?? process.env.NODE_ENV ?? process.env.ENVIRONMENT) || void 0, // ci: // process.env[`${prefix}CI`] !== undefined // ? Boolean( // process.env[`${prefix}CI`] ?? // process.env.CI ?? // process.env.CONTINUOUS_INTEGRATION // ) // : undefined, repository: process.env[`${prefix}REPOSITORY`] || void 0, branch: process.env[`${prefix}BRANCH`] || void 0, preid: process.env[`${prefix}PRE_ID`] || void 0, externalPackagePatterns: process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`] ? JSON.parse(process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`]) : [], registry: { github: process.env[`${prefix}REGISTRY_GITHUB`] || void 0, npm: process.env[`${prefix}REGISTRY_NPM`] || void 0, cargo: process.env[`${prefix}REGISTRY_CARGO`] || void 0, cyclone: process.env[`${prefix}REGISTRY_CYCLONE`] || void 0, container: process.env[`${prefix}REGISTRY_CONTAINER`] || void 0 }, logLevel: process.env[`${prefix}LOG_LEVEL`] !== null && process.env[`${prefix}LOG_LEVEL`] !== void 0 ? process.env[`${prefix}LOG_LEVEL`] && Number.isSafeInteger( Number.parseInt(process.env[`${prefix}LOG_LEVEL`]) ) ? getLogLevelLabel( Number.parseInt(process.env[`${prefix}LOG_LEVEL`]) ) : process.env[`${prefix}LOG_LEVEL`] : void 0, skipConfigLogging: process.env[`${prefix}SKIP_CONFIG_LOGGING`] !== void 0 ? Boolean(process.env[`${prefix}SKIP_CONFIG_LOGGING`]) : void 0 }; const themeNames = Object.keys(process.env).filter( (envKey) => envKey.startsWith(`${prefix}COLOR_`) && COLOR_KEYS.every( (colorKey) => !envKey.startsWith(`${prefix}COLOR_LIGHT_${colorKey}`) && !envKey.startsWith(`${prefix}COLOR_DARK_${colorKey}`) ) ); config.colors = themeNames.length > 0 ? themeNames.reduce( (ret, themeName) => { ret[themeName] = getThemeColorConfigEnv(prefix, themeName); return ret; }, {} ) : getThemeColorConfigEnv(prefix); if (config.docs === STORM_DEFAULT_DOCS) { if (config.homepage === STORM_DEFAULT_HOMEPAGE) { config.docs = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/docs`; } else { config.docs = `${config.homepage}/docs`; } } if (config.licensing === STORM_DEFAULT_LICENSING) { if (config.homepage === STORM_DEFAULT_HOMEPAGE) { config.licensing = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/licensing`; } else { config.licensing = `${config.homepage}/docs`; } } const serializedConfig = process.env[`${prefix}CONFIG`]; if (serializedConfig) { const parsed = JSON.parse(serializedConfig); config = { ...config, ...parsed, colors: { ...config.colors, ...parsed.colors }, extensions: { ...config.extensions, ...parsed.extensions } }; } return config; }; var getThemeColorConfigEnv = (prefix, theme) => { const themeName = `COLOR_${theme && theme !== "base" ? `${theme}_` : ""}`.toUpperCase(); return process.env[`${prefix}${themeName}LIGHT_BRAND`] || process.env[`${prefix}${themeName}DARK_BRAND`] ? getMultiThemeColorConfigEnv(prefix + themeName) : getSingleThemeColorConfigEnv(prefix + themeName); }; var getSingleThemeColorConfigEnv = (prefix) => { return { dark: process.env[`${prefix}DARK`], light: process.env[`${prefix}LIGHT`], brand: process.env[`${prefix}BRAND`], alternate: process.env[`${prefix}ALTERNATE`], accent: process.env[`${prefix}ACCENT`], link: process.env[`${prefix}LINK`], help: process.env[`${prefix}HELP`], success: process.env[`${prefix}SUCCESS`], info: process.env[`${prefix}INFO`], warning: process.env[`${prefix}WARNING`], danger: process.env[`${prefix}DANGER`], fatal: process.env[`${prefix}FATAL`], positive: process.env[`${prefix}POSITIVE`], negative: process.env[`${prefix}NEGATIVE`] }; }; var getMultiThemeColorConfigEnv = (prefix) => { return { light: getBaseThemeColorConfigEnv( `${prefix}_LIGHT_` ), dark: getBaseThemeColorConfigEnv(`${prefix}_DARK_`) }; }; var getBaseThemeColorConfigEnv = (prefix) => { return { foreground: process.env[`${prefix}FOREGROUND`], background: process.env[`${prefix}BACKGROUND`], brand: process.env[`${prefix}BRAND`], alternate: process.env[`${prefix}ALTERNATE`], accent: process.env[`${prefix}ACCENT`], link: process.env[`${prefix}LINK`], help: process.env[`${prefix}HELP`], success: process.env[`${prefix}SUCCESS`], info: process.env[`${prefix}INFO`], warning: process.env[`${prefix}WARNING`], danger: process.env[`${prefix}DANGER`], fatal: process.env[`${prefix}FATAL`], positive: process.env[`${prefix}POSITIVE`], negative: process.env[`${prefix}NEGATIVE`] }; }; // ../config-tools/src/env/set-env.ts var setExtensionEnv = (extensionName, extension) => { for (const key of Object.keys(extension ?? {})) { if (extension[key]) { const result = key?.replace( /([A-Z])+/g, (input) => input ? input[0]?.toUpperCase() + input.slice(1) : "" ).split(/(?=[A-Z])|[.\-\s_]/).map((x) => x.toLowerCase()) ?? []; let extensionKey; if (result.length === 0) { return; } if (result.length === 1) { extensionKey = result[0]?.toUpperCase() ?? ""; } else { extensionKey = result.reduce((ret, part) => { return `${ret}_${part.toLowerCase()}`; }); } process.env[`STORM_EXTENSION_${extensionName.toUpperCase()}_${extensionKey.toUpperCase()}`] = extension[key]; } } }; var setConfigEnv = (config) => { const prefix = "STORM_"; if (config.extends) { process.env[`${prefix}EXTENDS`] = Array.isArray(config.extends) ? JSON.stringify(config.extends) : config.extends; } if (config.name) { process.env[`${prefix}NAME`] = config.name; } if (config.namespace) { process.env[`${prefix}NAMESPACE`] = config.namespace; } if (config.owner) { process.env[`${prefix}OWNER`] = config.owner; } if (config.bot) { process.env[`${prefix}BOT_NAME`] = config.bot.name; process.env[`${prefix}BOT_EMAIL`] = config.bot.email; } if (config.error) { process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile; process.env[`${prefix}ERROR_URL`] = config.error.url; } if (config.release) { process.env[`${prefix}RELEASE_BANNER`] = config.release.banner; process.env[`${prefix}RELEASE_HEADER`] = config.release.header; process.env[`${prefix}RELEASE_FOOTER`] = config.release.footer; } if (config.account) { if (config.account.twitter) { process.env[`${prefix}ACCOUNT_TWITTER`] = config.account.twitter; } if (config.account.discord) { process.env[`${prefix}ACCOUNT_DISCORD`] = config.account.discord; } if (config.account.telegram) { process.env[`${prefix}ACCOUNT_TELEGRAM`] = config.account.telegram; } if (config.account.slack) { process.env[`${prefix}ACCOUNT_SLACK`] = config.account.slack; } if (config.account.medium) { process.env[`${prefix}ACCOUNT_MEDIUM`] = config.account.medium; } if (config.account.github) { process.env[`${prefix}ACCOUNT_GITHUB`] = config.account.github; } } if (config.organization) { if (typeof config.organization === "string") { process.env[`${prefix}ORG`] = config.organization; process.env[`${prefix}ORG_NAME`] = config.organization; process.env[`${prefix}ORGANIZATION`] = config.organization; process.env[`${prefix}ORGANIZATION_NAME`] = config.organization; } else { process.env[`${prefix}ORG`] = config.organization.name; process.env[`${prefix}ORG_NAME`] = config.organization.name; process.env[`${prefix}ORGANIZATION`] = config.organization.name; process.env[`${prefix}ORGANIZATION_NAME`] = config.organization.name; if (config.organization.url) { process.env[`${prefix}ORG_URL`] = config.organization.url; process.env[`${prefix}ORGANIZATION_URL`] = config.organization.url; } if (config.organization.description) { process.env[`${prefix}ORG_DESCRIPTION`] = config.organization.description; process.env[`${prefix}ORGANIZATION_DESCRIPTION`] = config.organization.description; } if (config.organization.logo) { process.env[`${prefix}ORG_LOGO`] = config.organization.logo; process.env[`${prefix}ORGANIZATION_LOGO`] = config.organization.logo; } if (config.organization.icon) { process.env[`${prefix}ORG_ICON`] = config.organization.icon; process.env[`${prefix}ORGANIZATION_ICON`] = config.organization.icon; } } } if (config.packageManager) { process.env[`${prefix}PACKAGE_MANAGER`] = config.packageManager; } if (config.license) { process.env[`${prefix}LICENSE`] = config.license; } if (config.homepage) { process.env[`${prefix}HOMEPAGE`] = config.homepage; } if (config.docs) { process.env[`${prefix}DOCS`] = config.docs; } if (config.portal) { process.env[`${prefix}PORTAL`] = config.portal; } if (config.licensing) { process.env[`${prefix}LICENSING`] = config.licensing; } if (config.contact) { process.env[`${prefix}CONTACT`] = config.contact; } if (config.support) { process.env[`${prefix}SUPPORT`] = config.support; } if (config.timezone) { process.env[`${prefix}TIMEZONE`] = config.timezone; process.env.TZ = config.timezone; process.env.DEFAULT_TIMEZONE = config.timezone; } if (config.locale) { process.env[`${prefix}LOCALE`] = config.locale; process.env.LOCALE = config.locale; process.env.DEFAULT_LOCALE = config.locale; process.env.LANG = config.locale ? `${config.locale.replaceAll("-", "_")}.UTF-8` : "en_US.UTF-8"; } if (config.configFile) { process.env[`${prefix}CONFIG_FILE`] = correctPaths(config.configFile); } if (config.workspaceRoot) { process.env[`${prefix}WORKSPACE_ROOT`] = correctPaths(config.workspaceRoot); process.env.NX_WORKSPACE_ROOT = correctPaths(config.workspaceRoot); process.env.NX_WORKSPACE_ROOT_PATH = correctPaths(config.workspaceRoot); } if (config.directories) { if (!config.skipCache && config.directories.cache) { process.env[`${prefix}CACHE_DIR`] = correctPaths( config.directories.cache ); process.env[`${prefix}CACHE_DIRECTORY`] = process.env[`${prefix}CACHE_DIR`]; } if (config.directories.data) { process.env[`${prefix}DATA_DIR`] = correctPaths(config.directories.data); process.env[`${prefix}DATA_DIRECTORY`] = process.env[`${prefix}DATA_DIR`]; } if (config.directories.config) { process.env[`${prefix}CONFIG_DIR`] = correctPaths( config.directories.config ); process.env[`${prefix}CONFIG_DIRECTORY`] = process.env[`${prefix}CONFIG_DIR`]; } if (config.directories.temp) { process.env[`${prefix}TEMP_DIR`] = correctPaths(config.directories.temp); process.env[`${prefix}TEMP_DIRECTORY`] = process.env[`${prefix}TEMP_DIR`]; } if (config.directories.log) { process.env[`${prefix}LOG_DIR`] = correctPaths(config.directories.log); process.env[`${prefix}LOG_DIRECTORY`] = process.env[`${prefix}LOG_DIR`]; } if (config.directories.build) { process.env[`${prefix}BUILD_DIR`] = correctPaths( config.directories.build ); process.env[`${prefix}BUILD_DIRECTORY`] = process.env[`${prefix}BUILD_DIR`]; } } if (config.skipCache !== void 0) { process.env[`${prefix}SKIP_CACHE`] = String(config.skipCache); if (config.skipCache) { process.env.NX_SKIP_NX_CACHE ??= String(config.skipCache); process.env.NX_CACHE_PROJECT_GRAPH ??= String(config.skipCache); } } if (config.mode) { process.env[`${prefix}MODE`] = config.mode; process.env.NODE_ENV = config.mode; process.env.ENVIRONMENT = config.mode; } if (config.colors?.base?.light || config.colors?.base?.dark) { for (const key of Object.keys(config.colors)) { setThemeColorConfigEnv(`${prefix}COLOR_${key}_`, config.colors[key]); } } else { setThemeColorConfigEnv( `${prefix}COLOR_`, config.colors ); } if (config.repository) { process.env[`${prefix}REPOSITORY`] = config.repository; } if (config.branch) { process.env[`${prefix}BRANCH`] = config.branch; } if (config.preid) { process.env[`${prefix}PRE_ID`] = String(config.preid); } if (config.externalPackagePatterns) { process.env[`${prefix}EXTERNAL_PACKAGE_PATTERNS`] = JSON.stringify( config.externalPackagePatterns ); } if (config.registry) { if (config.registry.github) { process.env[`${prefix}REGISTRY_GITHUB`] = String(config.registry.github); } if (config.registry.npm) { process.env[`${prefix}REGISTRY_NPM`] = String(config.registry.npm); } if (config.registry.cargo) { process.env[`${prefix}REGISTRY_CARGO`] = String(config.registry.cargo); } if (config.registry.cyclone) { process.env[`${prefix}REGISTRY_CYCLONE`] = String( config.registry.cyclone ); } if (config.registry.container) { process.env[`${prefix}REGISTRY_CONTAINER`] = String( config.registry.container ); } } if (config.logLevel) { process.env[`${prefix}LOG_LEVEL`] = String(config.logLevel); process.env.LOG_LEVEL = String(config.logLevel); process.env.NX_VERBOSE_LOGGING = String( getLogLevel(config.logLevel) >= LogLevel.DEBUG ? true : false ); process.env.RUST_BACKTRACE = getLogLevel(config.logLevel) >= LogLevel.DEBUG ? "full" : "none"; } if (config.skipConfigLogging !== void 0) { process.env[`${prefix}SKIP_CONFIG_LOGGING`] = String( config.skipConfigLogging ); } process.env[`${prefix}CONFIG`] = JSON.stringify(config); for (const key of Object.keys(config.extensions ?? {})) { if (config.extensions[key] && Object.keys(config.extensions[key])) { setExtensionEnv(key, config.extensions[key]); } } }; var setThemeColorConfigEnv = (prefix, config) => { return config?.light?.brand || config?.dark?.brand ? setMultiThemeColorConfigEnv(prefix, config) : setSingleThemeColorConfigEnv(prefix, config); }; var setSingleThemeColorConfigEnv = (prefix, config) => { if (config.dark) { process.env[`${prefix}DARK`] = config.dark; } if (config.light) { process.env[`${prefix}LIGHT`] = config.light; } if (config.brand) { process.env[`${prefix}BRAND`] = config.brand; } if (config.alternate) { process.env[`${prefix}ALTERNATE`] = config.alternate; } if (config.accent) { process.env[`${prefix}ACCENT`] = config.accent; } if (config.link) { process.env[`${prefix}LINK`] = config.link; } if (config.help) { process.env[`${prefix}HELP`] = config.help; } if (config.success) { process.env[`${prefix}SUCCESS`] = config.success; } if (config.info) { process.env[`${prefix}INFO`] = config.info; } if (config.warning) { process.env[`${prefix}WARNING`] = config.warning; } if (config.danger) { process.env[`${prefix}DANGER`] = config.danger; } if (config.fatal) { process.env[`${prefix}FATAL`] = config.fatal; } if (config.positive) { process.env[`${prefix}POSITIVE`] = config.positive; } if (config.negative) { process.env[`${prefix}NEGATIVE`] = config.negative; } }; var setMultiThemeColorConfigEnv = (prefix, config) => { return { light: setBaseThemeColorConfigEnv(`${prefix}LIGHT_`, config.light), dark: setBaseThemeColorConfigEnv(`${prefix}DARK_`, config.dark) }; }; var setBaseThemeColorConfigEnv = (prefix, config) => { if (config.foreground) { process.env[`${prefix}FOREGROUND`] = config.foreground; } if (config.background) { process.env[`${prefix}BACKGROUND`] = config.background; } if (config.brand) { process.env[`${prefix}BRAND`] = config.brand; } if (config.alternate) { process.env[`${prefix}ALTERNATE`] = config.alternate; } if (config.accent) { process.env[`${prefix}ACCENT`] = config.accent; } if (config.link) { process.env[`${prefix}LINK`] = config.link; } if (config.help) { process.env[`${prefix}HELP`] = config.help; } if (config.success) { process.env[`${prefix}SUCCESS`] = config.success; } if (config.info) { process.env[`${prefix}INFO`] = config.info; } if (config.warning) { process.env[`${prefix}WARNING`] = config.warning; } if (config.danger) { process.env[`${prefix}DANGER`] = config.danger; } if (config.fatal) { process.env[`${prefix}FATAL`] = config.fatal; } if (config.positive) { process.env[`${prefix}POSITIVE`] = config.positive; } if (config.negative) { process.env[`${prefix}NEGATIVE`] = config.negative; } }; // ../config-tools/src/create-storm-config.ts var _extension_cache = /* @__PURE__ */ new WeakMap(); var _static_cache = void 0; var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot, skipLogs = false, useDefault = true) => { 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 configFile = await getConfigFile(_workspaceRoot); if (!configFile) { if (!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" } ); } if (useDefault === false) { return void 0; } } const defaultConfig = await getPackageJsonConfig(_workspaceRoot); result = applyDefaultConfig( await stormWorkspaceConfigSchema.parseAsync( defu2(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; }; var createConfigExtension = (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; }; var loadStormWorkspaceConfig = async (workspaceRoot, skipLogs = false) => { const config = await createStormWorkspaceConfig( void 0, void 0, workspaceRoot, skipLogs, true ); setConfigEnv(config); if (!skipLogs && !config.skipConfigLogging) { writeTrace( `\u2699\uFE0F Using Storm Workspace configuration: ${formatLogMessage(config)}`, config ); } return config; }; // ../config-tools/src/get-config.ts var getConfig = (workspaceRoot, skipLogs = false) => { return loadStormWorkspaceConfig(workspaceRoot, skipLogs); }; var getWorkspaceConfig = (skipLogs = true, options = {}) => { let workspaceRoot = options.workspaceRoot; if (!workspaceRoot) { workspaceRoot = findWorkspaceRoot(options.cwd); } return getConfig(workspaceRoot, skipLogs); }; export { getConfig, getWorkspaceConfig };