@storm-software/git-tools 2.131.128 → 2.131.129
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/{chunk-NG23E43K.js → chunk-4PYFQEVV.js} +3 -3
- package/bin/{chunk-NG23E43K.js.map → chunk-4PYFQEVV.js.map} +1 -1
- package/bin/{chunk-TOLGVHZM.cjs → chunk-5N5WKPFP.cjs} +2 -2
- package/bin/{chunk-TOLGVHZM.cjs.map → chunk-5N5WKPFP.cjs.map} +1 -1
- package/bin/{chunk-SHH572XU.js → chunk-6QIXTOH3.js} +3 -3
- package/bin/{chunk-SHH572XU.js.map → chunk-6QIXTOH3.js.map} +1 -1
- package/bin/{chunk-WUN4N3D7.js → chunk-7QTKVCXH.js} +3 -3
- package/bin/{chunk-WUN4N3D7.js.map → chunk-7QTKVCXH.js.map} +1 -1
- package/bin/{chunk-FOMBLMLH.js → chunk-BB4W6BYT.js} +2 -2
- package/bin/{chunk-FOMBLMLH.js.map → chunk-BB4W6BYT.js.map} +1 -1
- package/bin/{chunk-A5X7CY3W.js → chunk-CTZZFGE5.js} +3 -3
- package/bin/{chunk-A5X7CY3W.js.map → chunk-CTZZFGE5.js.map} +1 -1
- package/bin/{chunk-GT7HITVF.cjs → chunk-GVDRZBZ6.cjs} +4 -4
- package/bin/{chunk-GT7HITVF.cjs.map → chunk-GVDRZBZ6.cjs.map} +1 -1
- package/bin/{chunk-AOZSGQGA.js → chunk-IAPT5G4H.js} +3 -3
- package/bin/{chunk-AOZSGQGA.js.map → chunk-IAPT5G4H.js.map} +1 -1
- package/bin/{chunk-IIH7F7OZ.js → chunk-NMEHIDW7.js} +3 -3
- package/bin/{chunk-IIH7F7OZ.js.map → chunk-NMEHIDW7.js.map} +1 -1
- package/bin/{chunk-ZJN2D7NE.cjs → chunk-NPQDZF7C.cjs} +4 -4
- package/bin/{chunk-ZJN2D7NE.cjs.map → chunk-NPQDZF7C.cjs.map} +1 -1
- package/bin/{chunk-SZFP3TKI.cjs → chunk-Q5KDQ5YL.cjs} +4 -4
- package/bin/{chunk-SZFP3TKI.cjs.map → chunk-Q5KDQ5YL.cjs.map} +1 -1
- package/bin/{chunk-ML5MZIGJ.cjs → chunk-RMBYK2PG.cjs} +5 -5
- package/bin/{chunk-ML5MZIGJ.cjs.map → chunk-RMBYK2PG.cjs.map} +1 -1
- package/bin/{chunk-JYYYVLIU.cjs → chunk-TTSXYT7W.cjs} +4 -4
- package/bin/{chunk-JYYYVLIU.cjs.map → chunk-TTSXYT7W.cjs.map} +1 -1
- package/bin/{chunk-IHDSESSE.cjs → chunk-U3US7IBH.cjs} +4 -4
- package/bin/{chunk-IHDSESSE.cjs.map → chunk-U3US7IBH.cjs.map} +1 -1
- package/bin/{chunk-QBI7KQ6A.cjs → chunk-XVVRI3DK.cjs} +6 -6
- package/bin/{chunk-QBI7KQ6A.cjs.map → chunk-XVVRI3DK.cjs.map} +1 -1
- package/bin/{chunk-JBHMFR7F.js → chunk-ZPPKYVIH.js} +3 -3
- package/bin/{chunk-JBHMFR7F.js.map → chunk-ZPPKYVIH.js.map} +1 -1
- package/bin/git.cjs +145 -145
- package/bin/git.js +8 -8
- package/bin/post-checkout.cjs +7 -7
- package/bin/post-checkout.js +2 -2
- package/bin/post-commit.cjs +7 -7
- package/bin/post-commit.js +2 -2
- package/bin/post-merge.cjs +7 -7
- package/bin/post-merge.js +2 -2
- package/bin/pre-commit.cjs +7 -7
- package/bin/pre-commit.js +2 -2
- package/bin/pre-install.cjs +7 -7
- package/bin/pre-install.js +2 -2
- package/bin/pre-push.cjs +7 -7
- package/bin/pre-push.js +2 -2
- package/bin/prepare.cjs +7 -7
- package/bin/prepare.js +2 -2
- package/bin/version-warning.cjs +5 -5
- package/bin/version-warning.js +1 -1
- package/dist/{chunk-52Z6PKZI.js → chunk-5AHFCU2Z.js} +1 -1
- package/dist/{chunk-OMWWQPRY.js → chunk-F22OVP2A.js} +2 -2
- package/dist/{chunk-RIPABM45.cjs → chunk-GFCNZUMY.cjs} +9 -9
- package/dist/{chunk-U5IGP2SZ.cjs → chunk-TEL5N7KI.cjs} +2 -2
- package/dist/commit/minimal.cjs +4 -4
- package/dist/commit/minimal.js +2 -2
- package/dist/commit/monorepo.cjs +5 -5
- package/dist/commit/monorepo.js +3 -3
- package/dist/index.cjs +39 -39
- package/dist/index.js +10 -10
- package/dist/release/config.cjs +21 -21
- package/dist/release/config.js +4 -4
- package/package.json +16 -16
- package/dist/{chunk-XS6PFVQQ.js → chunk-2YWPEDFN.js} +1 -1
- package/dist/{chunk-OABXW2AI.js → chunk-5GF6UCF2.js} +1 -1
- package/dist/{chunk-LXXJEGUX.cjs → chunk-5UUCFSHA.cjs} +1 -1
- package/dist/{chunk-PBGCSXPL.js → chunk-7IP42CZC.js} +1 -1
- package/dist/{chunk-WRSI3KUJ.cjs → chunk-HBZTKU5M.cjs} +1 -1
- package/dist/{chunk-NPCVH6FC.js → chunk-HEEBBIWA.js} +1 -1
- package/dist/{chunk-SHNYRICK.cjs → chunk-J6OZPTPD.cjs} +1 -1
- package/dist/{chunk-ZYMWVRAL.cjs → chunk-RWLJU2S2.cjs} +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../config-tools/src/types.ts","../../../config-tools/src/utilities/colors.ts","../../../config-tools/src/logger/chalk.ts","../../../config-tools/src/logger/is-unicode-supported.ts","../../../config-tools/src/logger/console-icons.ts","../../../config-tools/src/logger/format-timestamp.ts","../../../config-tools/src/logger/get-log-level.ts","../../../config-tools/src/logger/console.ts","../../../config-tools/src/utilities/process-handler.ts","../../../config/src/constants.ts","../../../config/src/schema.ts","../../../config-tools/src/utilities/correct-paths.ts","../../../config-tools/src/utilities/find-up.ts","../../../config-tools/src/utilities/find-workspace-root.ts","../../../config-tools/src/utilities/get-default-config.ts","../../../config-tools/src/config-file/get-config-file.ts","../../../config-tools/src/env/get-env.ts","../../../config-tools/src/env/set-env.ts","../../../config-tools/src/create-storm-config.ts","../../../config-tools/src/get-config.ts"],"names":["depth","key","existsSync","join","result","defu"],"mappings":"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","file":"chunk-FOMBLMLH.js","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { StormWorkspaceConfig } from \"@storm-software/config\";\n\nexport type LogLevel = 0 | 10 | 20 | 30 | 35 | 40 | 50 | 60 | 70 | 100;\nexport const LogLevel = {\n SILENT: 0 as LogLevel,\n FATAL: 10 as LogLevel,\n ERROR: 20 as LogLevel,\n WARN: 30 as LogLevel,\n SUCCESS: 35 as LogLevel,\n INFO: 40 as LogLevel,\n PERFORMANCE: 50 as LogLevel,\n DEBUG: 60 as LogLevel,\n TRACE: 70 as LogLevel,\n ALL: 100 as LogLevel\n} as const;\n\nexport type LogLevelLabel =\n | \"silent\"\n | \"fatal\"\n | \"error\"\n | \"warn\"\n | \"success\"\n | \"info\"\n | \"performance\"\n | \"debug\"\n | \"trace\"\n | \"all\";\nexport const LogLevelLabel = {\n SILENT: \"silent\" as LogLevelLabel,\n FATAL: \"fatal\" as LogLevelLabel,\n ERROR: \"error\" as LogLevelLabel,\n WARN: \"warn\" as LogLevelLabel,\n SUCCESS: \"success\" as LogLevelLabel,\n INFO: \"info\" as LogLevelLabel,\n PERFORMANCE: \"performance\" as LogLevelLabel,\n DEBUG: \"debug\" as LogLevelLabel,\n TRACE: \"trace\" as LogLevelLabel,\n ALL: \"all\" as LogLevelLabel\n} as const;\n\nexport type Logger = {\n fatal: (message?: any) => void;\n error: (message?: any) => void;\n warning: (message?: any) => void;\n info: (message?: any) => void;\n success: (message?: any) => void;\n performance: (message?: any) => void;\n debug: (message?: any) => void;\n trace: (message?: any) => void;\n getStopwatch: (name: string) => () => void;\n};\n\n// export type LogType =\n// | \"error\"\n// | \"fatal\"\n// | \"ready\"\n// | \"warn\"\n// | \"info\"\n// | \"success\"\n// | \"debug\"\n// | \"trace\"\n// | \"fail\"\n// | \"start\"\n// | \"log\";\n// export const LogType = {\n// ERROR: \"error\" as LogType,\n// FATAL: \"fatal\" as LogType,\n// READY: \"ready\" as LogType,\n// WARN: \"warn\" as LogType,\n// INFO: \"info\" as LogType,\n// SUCCESS: \"success\" as LogType,\n// DEBUG: \"debug\" as LogType,\n// TRACE: \"trace\" as LogType,\n// FAIL: \"fail\" as LogType,\n// START: \"start\" as LogType,\n// LOG: \"log\" as LogType\n// } as const;\n\nexport interface BaseTokenizerOptions {\n workspaceRoot?: string;\n config?: StormWorkspaceConfig;\n}\n\nexport interface ProjectTokenizerOptions extends BaseTokenizerOptions {\n projectRoot?: string;\n projectName?: string;\n sourceRoot?: string;\n}\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n","import {\n Colors,\n ColorsMap,\n MultiThemeColors,\n SingleThemeColors,\n StormWorkspaceConfig\n} from \"@storm-software/config/types\";\n\n/**\n * Storm theme config values used for styling various workspace elements\n */\nexport const DEFAULT_COLOR_CONFIG = {\n light: {\n background: \"#fafafa\",\n foreground: \"#1d1e22\",\n brand: \"#1fb2a6\",\n alternate: \"#db2777\",\n discovery: \"#5C4EE5\",\n success: \"#087f5b\",\n info: \"#0550ae\",\n debug: \"#8afafc\",\n warning: \"#e3b341\",\n danger: \"#D8314A\",\n fatal: \"#51070f\",\n performance: \"#13c302\",\n link: \"#3fa6ff\",\n positive: \"#22c55e\",\n negative: \"#dc2626\",\n gradient: [\"#1fb2a6\", \"#db2777\", \"#5C4EE5\"]\n },\n dark: {\n background: \"#1e2124\",\n foreground: \"#cbd5e1\",\n brand: \"#2dd4bf\",\n alternate: \"#db2777\",\n discovery: \"#818cf8\",\n success: \"#10b981\",\n info: \"#58a6ff\",\n debug: \"#8afafc\",\n warning: \"#f3d371\",\n danger: \"#D8314A\",\n fatal: \"#a40e26\",\n performance: \"#80fd74\",\n link: \"#3fa6ff\",\n positive: \"#22c55e\",\n negative: \"#dc2626\",\n gradient: [\"#1fb2a6\", \"#db2777\", \"#818cf8\"]\n }\n} as MultiThemeColors;\n\n/**\n * Get the color configuration from the Storm workspace configuration.\n *\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color configuration, or the default color configuration if not defined.\n */\nexport function getColors(\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): Colors {\n if (\n !config?.colors ||\n typeof config.colors !== \"object\" ||\n (!(config.colors as ColorsMap)[\"dark\"] &&\n (!config.colors[\"base\"] ||\n typeof config.colors !== \"object\" ||\n !config.colors[\"base\"]?.[\"dark\"]))\n ) {\n return DEFAULT_COLOR_CONFIG;\n }\n\n if (config.colors[\"base\"]) {\n if (typeof config.colors[\"base\"][\"dark\"] === \"object\") {\n return config.colors[\"base\"][\"dark\"] as Colors;\n } else if (config.colors[\"base\"][\"dark\"] === \"string\") {\n return config.colors[\"base\"];\n }\n }\n\n if (typeof (config.colors as ColorsMap)[\"dark\"] === \"object\") {\n return config.colors[\"dark\"] as Colors;\n }\n\n return (config.colors ?? DEFAULT_COLOR_CONFIG) as Colors;\n}\n\n/**\n * Get a specific color from the Storm workspace configuration.\n *\n * @param key - The key of the color to retrieve.\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color value for the specified key, or a default value if not defined.\n */\nexport function getColor(\n key:\n | \"background\"\n | \"foreground\"\n | \"brand\"\n | \"discovery\"\n | \"success\"\n | \"info\"\n | \"debug\"\n | \"warning\"\n | \"danger\"\n | \"positive\"\n | \"negative\"\n | \"alternate\"\n | \"accent\"\n | \"link\"\n | \"fatal\",\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): string {\n const colors = getColors(config);\n\n const result =\n (typeof colors[\"dark\"] === \"object\" ? colors[\"dark\"][key] : colors[key]) ||\n DEFAULT_COLOR_CONFIG[\"dark\"][key] ||\n DEFAULT_COLOR_CONFIG[key];\n if (result) {\n return result;\n }\n\n if (key === \"link\" || key === \"debug\") {\n return getColor(\"info\", config);\n } else if (key === \"fatal\") {\n return getColor(\"danger\", config);\n }\n\n return getColor(\"brand\", config);\n}\n\n/**\n * Get a specific color from the Storm workspace configuration.\n *\n * @param key - The key of the color to retrieve.\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color value for the specified key, or a default value if not defined.\n */\nexport function getGradient(\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): string[] | undefined {\n const colors = getColors(config);\n\n const result =\n (typeof colors[\"dark\"] === \"object\"\n ? colors[\"dark\"].gradient\n : (colors as SingleThemeColors).gradient) ||\n DEFAULT_COLOR_CONFIG[\"dark\"].gradient;\n if (result && Array.isArray(result) && result.length > 0) {\n return result;\n }\n\n return undefined;\n}\n","import chalk from \"chalk\";\n\nexport type GetChalkReturn = {\n hex: (_: string) => (message?: string) => string | undefined;\n bgHex: (_: string) => {\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n gray: (message?: string) => string | undefined;\n bold: {\n hex: (_: string) => (message?: string) => string | undefined;\n bgHex: (_: string) => {\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n dim: {\n hex: (_: string) => (message?: string) => string | undefined;\n gray: (message?: string) => string | undefined;\n };\n};\n\nconst chalkDefault: GetChalkReturn = {\n hex: (_: string) => (message?: string) => message,\n bgHex: (_: string) => ({\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n }),\n white: (message?: string) => message,\n whiteBright: (message?: string) => message,\n gray: (message?: string) => message,\n bold: {\n hex: (_: string) => (message?: string) => message,\n bgHex: (_: string) => ({\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n }),\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n },\n dim: {\n hex: (_: string) => (message?: string) => message,\n gray: (message?: string) => message\n }\n};\n\n/**\n * Get the chalk instance\n *\n * @remarks\n * Annoying polyfill to temporarily fix the issue with the `chalk` import\n *\n * @returns The chalk instance\n */\nexport const getChalk = (): GetChalkReturn => {\n let _chalk = chalk as GetChalkReturn;\n if (\n !_chalk?.hex ||\n !_chalk?.bold?.hex ||\n !_chalk?.bgHex ||\n !_chalk?.whiteBright ||\n !_chalk?.white\n ) {\n _chalk = chalkDefault;\n }\n\n return _chalk;\n};\n","export function isUnicodeSupported() {\n if (process.platform !== \"win32\") {\n return process.env.TERM !== \"linux\"; // Linux console (kernel)\n }\n\n return (\n Boolean(process.env.WT_SESSION) || // Windows Terminal\n Boolean(process.env.TERMINUS_SUBLIME) || // Terminus (<0.2.27)\n process.env.ConEmuTask === \"{cmd::Cmder}\" || // ConEmu and cmder\n process.env.TERM_PROGRAM === \"Terminus-Sublime\" ||\n process.env.TERM_PROGRAM === \"vscode\" ||\n process.env.TERM === \"xterm-256color\" ||\n process.env.TERM === \"alacritty\" ||\n process.env.TERM === \"rxvt-unicode\" ||\n process.env.TERM === \"rxvt-unicode-256color\" ||\n process.env.TERMINAL_EMULATOR === \"JetBrains-JediTerm\"\n );\n}\n","import { LogLevelLabel } from \"../types\";\nimport { isUnicodeSupported } from \"./is-unicode-supported\";\n\nconst useIcon = (c: string, fallback: string) =>\n isUnicodeSupported() ? c : fallback;\n\nexport const CONSOLE_ICONS: { [k in LogLevelLabel]?: string } = {\n [LogLevelLabel.ERROR]: useIcon(\"✘\", \"×\"),\n [LogLevelLabel.FATAL]: useIcon(\"🕱\", \"×\"),\n [LogLevelLabel.WARN]: useIcon(\"⚠\", \"‼\"),\n [LogLevelLabel.INFO]: useIcon(\"ℹ\", \"i\"),\n [LogLevelLabel.PERFORMANCE]: useIcon(\"⏱\", \"⏱\"),\n [LogLevelLabel.SUCCESS]: useIcon(\"✔\", \"√\"),\n [LogLevelLabel.DEBUG]: useIcon(\"🛠\", \"D\"),\n [LogLevelLabel.TRACE]: useIcon(\"⚙\", \"T\"),\n [LogLevelLabel.ALL]: useIcon(\"✉\", \"→\")\n};\n\n// start: s(\"◐\", \"o\"),\n","/**\n * Format a timestamp to a human-readable string.\n *\n * @param fullDateTime Whether to include the full date and time in the formatted string (defaults to `false`, which only includes the time)\n * @param date The date to format.\n * @returns The formatted timestamp.\n */\nexport const formatTimestamp = (\n fullDateTime = false,\n date = new Date()\n): string => {\n return fullDateTime\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`\n : `${date.toLocaleTimeString()}`;\n};\n","import { LogLevel, LogLevelLabel } from \"../types\";\n\n/**\n * Convert the log level label to a log level\n *\n * @param label - The log level label to convert\n * @returns The log level\n */\nexport const getLogLevel = (label?: string): LogLevel => {\n switch (label) {\n case \"all\":\n return LogLevel.ALL;\n case \"trace\":\n return LogLevel.TRACE;\n case \"debug\":\n return LogLevel.DEBUG;\n case \"performance\":\n return LogLevel.PERFORMANCE;\n case \"info\":\n return LogLevel.INFO;\n case \"warn\":\n return LogLevel.WARN;\n case \"error\":\n return LogLevel.ERROR;\n case \"fatal\":\n return LogLevel.FATAL;\n case \"silent\":\n return LogLevel.SILENT;\n default:\n return LogLevel.INFO;\n }\n};\n\n/**\n * Convert the log level to a log level label\n *\n * @param logLevel - The log level to convert\n * @returns The log level label\n */\nexport const getLogLevelLabel = (\n logLevel: number = LogLevel.INFO\n): LogLevelLabel => {\n if (logLevel >= LogLevel.ALL) {\n return LogLevelLabel.ALL;\n }\n if (logLevel >= LogLevel.TRACE) {\n return LogLevelLabel.TRACE;\n }\n if (logLevel >= LogLevel.DEBUG) {\n return LogLevelLabel.DEBUG;\n }\n if (logLevel >= LogLevel.PERFORMANCE) {\n return LogLevelLabel.PERFORMANCE;\n }\n if (logLevel >= LogLevel.INFO) {\n return LogLevelLabel.INFO;\n }\n if (logLevel >= LogLevel.WARN) {\n return LogLevelLabel.WARN;\n }\n if (logLevel >= LogLevel.ERROR) {\n return LogLevelLabel.ERROR;\n }\n if (logLevel >= LogLevel.FATAL) {\n return LogLevelLabel.FATAL;\n }\n if (logLevel <= LogLevel.SILENT) {\n return LogLevelLabel.SILENT;\n }\n return LogLevelLabel.INFO;\n};\n\n/**\n * Check if the log level is verbose\n *\n * @param label - The log level label to check\n * @returns True if the log level is verbose\n */\nexport const isVerbose = (\n label: string | LogLevel = LogLevelLabel.SILENT\n): boolean => {\n const logLevel = typeof label === \"string\" ? getLogLevel(label) : label;\n return logLevel >= LogLevel.DEBUG;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Colors, StormWorkspaceConfig } from \"@storm-software/config\";\nimport { formatDistanceToNow } from \"date-fns/formatDistanceToNow\";\nimport { LogLevel, LogLevelLabel } from \"../types\";\nimport { DEFAULT_COLOR_CONFIG, getColor } from \"../utilities/colors\";\nimport { getChalk } from \"./chalk\";\nimport { CONSOLE_ICONS } from \"./console-icons\";\nimport { formatTimestamp } from \"./format-timestamp\";\nimport { getLogLevel } from \"./get-log-level\";\n\nexport interface GetLogFnOptions {\n /**\n * Whether to include the full date and time in the log message (defaults to `false`, which only includes the time)\n *\n * @defaultValue false\n */\n fullDateTime?: boolean;\n\n /**\n * Whether to hide the date and time in the log message (defaults to `false`, which includes the date and time based on the `fullDateTime` option)\n *\n * @defaultValue false\n */\n hideDateTime?: boolean;\n\n /**\n * The color configuration to use for the log message (defaults to the default Storm color configuration)\n */\n chalk?: ReturnType<typeof getChalk>;\n}\n\n/**\n * Get the log function for a log level\n *\n * @param logLevel - The log level\n * @param config - The Storm configuration\n * @returns The log function\n */\nexport const getLogFn = (\n logLevel: number | LogLevel = LogLevel.INFO,\n config: Partial<StormWorkspaceConfig> = {},\n options: GetLogFnOptions = {}\n): ((message?: any) => void) => {\n const {\n chalk: _chalk = getChalk(),\n fullDateTime = false,\n hideDateTime = false\n } = options;\n\n const colors =\n !(config.colors as Colors)?.dark &&\n !config.colors?.[\"base\"] &&\n !config.colors?.[\"base\"]?.dark\n ? DEFAULT_COLOR_CONFIG\n : (config.colors as Colors)?.dark &&\n typeof (config.colors as Colors).dark === \"string\"\n ? config.colors\n : config.colors?.[\"base\"]?.dark &&\n typeof config.colors[\"base\"].dark === \"string\"\n ? config.colors[\"base\"].dark\n : config.colors?.[\"base\"]\n ? config.colors?.[\"base\"]\n : DEFAULT_COLOR_CONFIG;\n\n // (config.colors?.dark && typeof config.colors.dark === \"string\"\n // ? config.colors\n // : typeof config?.colors?.dark === \"object\" ?) ?? DEFAULT_COLOR_CONFIG;\n\n const configLogLevel = (config.logLevel ||\n process.env.STORM_LOG_LEVEL ||\n LogLevelLabel.INFO) as LogLevelLabel;\n\n if (\n logLevel > getLogLevel(configLogLevel) ||\n logLevel <= LogLevel.SILENT ||\n getLogLevel(configLogLevel) <= LogLevel.SILENT\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (_: string) => {\n /* noop */\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.FATAL >= logLevel) {\n return (message?: any) => {\n console.error(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.fatal ?? DEFAULT_COLOR_CONFIG.dark.fatal)(\n `[${CONSOLE_ICONS[LogLevelLabel.FATAL]} Fatal] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.ERROR >= logLevel) {\n return (message?: any) => {\n console.error(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.danger ?? DEFAULT_COLOR_CONFIG.dark.danger)(\n `[${CONSOLE_ICONS[LogLevelLabel.ERROR]} Error] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.WARN >= logLevel) {\n return (message?: any) => {\n console.warn(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.warning ?? DEFAULT_COLOR_CONFIG.dark.warning)(\n `[${CONSOLE_ICONS[LogLevelLabel.WARN]} Warn] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.SUCCESS >= logLevel) {\n return (message?: any) => {\n console.info(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.success ?? DEFAULT_COLOR_CONFIG.dark.success)(\n `[${CONSOLE_ICONS[LogLevelLabel.SUCCESS]} Success] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.INFO >= logLevel) {\n return (message?: any) => {\n console.info(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.info ?? DEFAULT_COLOR_CONFIG.dark.info)(\n `[${CONSOLE_ICONS[LogLevelLabel.INFO]} Info] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.PERFORMANCE >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.performance ?? DEFAULT_COLOR_CONFIG.dark.performance)(\n `[${CONSOLE_ICONS[LogLevelLabel.PERFORMANCE]} Performance] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.DEBUG >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.debug ?? DEFAULT_COLOR_CONFIG.dark.debug)(\n `[${CONSOLE_ICONS[LogLevelLabel.DEBUG]} Debug] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.TRACE >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(\"#bbbbbb\")(\n `[${CONSOLE_ICONS[LogLevelLabel.TRACE]} Trace] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n return (message?: any) => {\n console.log(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.brand ?? DEFAULT_COLOR_CONFIG.dark.brand)(\n `[${CONSOLE_ICONS[LogLevelLabel.ALL]} System] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n};\n\n/**\n * Write a message to the console at the `fatal` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeFatal = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.FATAL, config)(message);\n\n/**\n * Write a message to the console at the `error` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeError = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.ERROR, config)(message);\n\n/**\n * Write a message to the console at the `warning` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeWarning = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.WARN, config)(message);\n\n/**\n * Write a message to the console at the `info` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeInfo = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.INFO, config)(message);\n\n/**\n * Write a message to the console at the `success` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeSuccess = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.SUCCESS, config)(message);\n\n/**\n * Write a message to the console at the `performance` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writePerformance = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.PERFORMANCE, config)(message);\n\n/**\n * Write a message to the console at the `debug` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeDebug = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.DEBUG, config)(message);\n\n/**\n * Write a message to the console at the `trace` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeTrace = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.TRACE, config)(message);\n\n/**\n * Write a message to the console at the `all` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeSystem = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.ALL, config)(message);\n\n/**\n * Get a stopwatch function\n *\n * @param name - The name of the process\n * @returns The stopwatch function\n */\nexport const getStopwatch = (name: string) => {\n const start = new Date();\n return () => {\n writePerformance(\n `The${name ? ` ${name}` : \"\"} process took ${formatDistanceToNow(start, {\n includeSeconds: true\n })} to complete`\n );\n };\n};\n\nconst MAX_DEPTH = 10;\n\nexport type FormatLogMessageOptions = {\n prefix?: string;\n skip?: string[];\n sort?: boolean;\n};\n\n/**\n * Format a log message for output to the console, handling different types of messages (e.g. strings, objects, arrays) and applying formatting options such as prefixing and skipping certain keys in objects.\n *\n * @param message - The message to format\n * @param options - Formatting options\n * @param depth - The current depth of recursion\n * @returns The formatted log message\n */\nexport const formatLogMessage = (\n message?: any,\n options: FormatLogMessageOptions = {},\n depth = 0\n): string => {\n if (depth > MAX_DEPTH) {\n return \"<max depth>\";\n }\n\n const prefix = options.prefix ?? \"\";\n const skip = options.skip ?? [];\n const sort = options.sort ?? true;\n\n return typeof message === \"undefined\" || message === null\n ? \"<empty>\"\n : typeof message === \"string\"\n ? !message\n ? \"<empty string>\"\n : message\n : Array.isArray(message)\n ? `\\n${message\n .sort(\n sort\n ? (a, b) =>\n !a && !b\n ? 0\n : !a\n ? 1\n : !b\n ? -1\n : String(a).localeCompare(String(b))\n : undefined\n )\n .map(\n (item, index) =>\n ` ${prefix}> #${index} = ${formatLogMessage(\n item,\n { prefix: `${prefix}--`, skip, sort },\n depth + 1\n )}`\n )\n .join(\"\\n\")}`\n : typeof message === \"object\" && message\n ? `\\n${Object.keys(message)\n .filter(\n key =>\n typeof key !== \"string\" ||\n !skip\n .map(k => k.toLowerCase().trim())\n .includes(key.toLowerCase().trim())\n )\n .sort(\n sort\n ? (a, b) =>\n !a && !b\n ? 0\n : !a\n ? 1\n : !b\n ? -1\n : String(a).localeCompare(String(b))\n : undefined\n )\n .map(\n key =>\n ` ${prefix}> ${key} = ${\n _isFunction(message[key])\n ? \"<function>\"\n : typeof message[key] === \"object\" && message[key]\n ? Object.keys(message[key]).filter(\n key =>\n typeof key !== \"string\" ||\n !skip\n .map(k => k.toLowerCase().trim())\n .includes(key.toLowerCase().trim())\n ).length === 0\n ? \"{}\"\n : formatLogMessage(\n message[key],\n { prefix: `${prefix}--`, skip, sort },\n depth + 1\n )\n : message[key]\n }`\n )\n .join(\"\\n\")}`\n : String(message);\n};\n\nconst _isFunction = (\n value: unknown\n): value is ((params?: unknown) => unknown) & ((param?: any) => any) => {\n try {\n return (\n value instanceof Function ||\n typeof value === \"function\" ||\n !!(value?.constructor && (value as any)?.call && (value as any)?.apply)\n );\n } catch {\n return false;\n }\n};\n\n/**\n * Get the brand icon for the console\n *\n * @param config - The Storm configuration\n * @param _chalk - The chalk instance\n * @returns The brand icon\n */\nexport const brandIcon = (\n config: Partial<StormWorkspaceConfig> = {},\n _chalk: ReturnType<typeof getChalk> = getChalk()\n) => _chalk.hex(getColor(\"brand\", config))(\"🗲\");\n","import type { StormWorkspaceConfig } from \"@storm-software/config\";\nimport {\n writeError,\n writeFatal,\n writeSuccess,\n writeTrace\n} from \"../logger/console\";\n\nexport const exitWithError = (config?: Partial<StormWorkspaceConfig>) => {\n writeFatal(\"Exiting script with an error status...\", config);\n process.exit(1);\n};\n\nexport const exitWithSuccess = (config?: Partial<StormWorkspaceConfig>) => {\n writeSuccess(\"Script completed successfully. Exiting...\", config);\n process.exit(0);\n};\n\nexport const handleProcess = (config?: Partial<StormWorkspaceConfig>) => {\n writeTrace(\n `Using the following arguments to process the script: ${process.argv.join(\", \")}`,\n config\n );\n\n process.on(\"unhandledRejection\", error => {\n writeError(\n `An Unhandled Rejection occurred while running the program: ${\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n error?.message\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Unknown error\"\n } \\nStacktrace: ${\n error && typeof error === \"object\" && \"stack\" in error && error?.stack\n ? error.stack\n : \"\"\n }`,\n config\n );\n exitWithError(config);\n });\n process.on(\"uncaughtException\", error => {\n writeError(\n `An Uncaught Exception occurred while running the program: ${\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n error?.message\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Unknown error\"\n } \\nStacktrace: ${\n error && typeof error === \"object\" && \"stack\" in error && error?.stack\n ? error.stack\n : \"\"\n }`,\n config\n );\n exitWithError(config);\n });\n\n process.on(\"SIGTERM\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n process.on(\"SIGINT\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n process.on(\"SIGHUP\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n};\n","export const STORM_DEFAULT_DOCS = \"https://docs.stormsoftware.com\";\nexport const STORM_DEFAULT_HOMEPAGE = \"https://stormsoftware.com\";\nexport const STORM_DEFAULT_CONTACT = \"https://stormsoftware.com/contact\";\nexport const STORM_DEFAULT_SUPPORT = \"https://stormsoftware.com/support\";\nexport const STORM_DEFAULT_LICENSING = \"https://stormsoftware.com/license\";\nexport const STORM_DEFAULT_LICENSE = \"Apache-2.0\";\nexport const STORM_DEFAULT_RELEASE_BANNER =\n \"https://public.storm-cdn.com/storm-software/media/banner-1280x320.gif\";\nexport const STORM_DEFAULT_SOCIAL_TWITTER = \"StormSoftwareHQ\";\nexport const STORM_DEFAULT_SOCIAL_DISCORD = \"https://discord.gg/MQ6YVzakM5\";\nexport const STORM_DEFAULT_SOCIAL_TELEGRAM = \"https://t.me/storm_software\";\nexport const STORM_DEFAULT_SOCIAL_SLACK =\n \"https://join.slack.com/t/storm-software/shared_invite/zt-2gsmk04hs-i6yhK_r6urq0dkZYAwq2pA\";\nexport const STORM_DEFAULT_SOCIAL_MEDIUM = \"https://medium.com/storm-software\";\nexport const STORM_DEFAULT_SOCIAL_GITHUB = \"https://github.com/storm-software\";\n\nexport const STORM_DEFAULT_RELEASE_FOOTER = `\nStorm Software is an open source software development organization with the mission is to make software development more accessible. Our ideal future is one where anyone can create software without years of prior development experience serving as a barrier to entry. We hope to achieve this via LLMs, Generative AI, and intuitive, high-level data modeling/programming languages.\n\nJoin us on [Discord](${STORM_DEFAULT_SOCIAL_DISCORD}) to chat with the team, receive release notifications, ask questions, and get involved.\n\nIf this sounds interesting, and you would like to help us in creating the next generation of development tools, please reach out on our [website](${STORM_DEFAULT_CONTACT}) or join our [Slack](${STORM_DEFAULT_SOCIAL_SLACK}) channel!\n`;\n\nexport const STORM_DEFAULT_ERROR_CODES_FILE = \"tools/errors/codes.json\";\n\nexport const STORM_DEFAULT_BANNER_ALT = \"The workspace's banner image\";\n\nexport const COLOR_KEYS = [\n \"dark\",\n \"light\",\n \"base\",\n \"brand\",\n \"alternate\",\n \"accent\",\n \"link\",\n \"success\",\n \"discovery\",\n \"info\",\n \"warning\",\n \"danger\",\n \"fatal\",\n \"performance\",\n \"positive\",\n \"negative\"\n];\n","import * as z from \"zod/v4/mini\";\nimport {\n STORM_DEFAULT_BANNER_ALT,\n STORM_DEFAULT_ERROR_CODES_FILE\n} from \"./constants\";\n\nexport const schemaRegistry = z.registry<{ description: string }>();\n\nconst colorSchema = z\n .string()\n .check(\n z.length(7),\n z.toLowerCase(),\n z.regex(/^#([0-9a-f]{3}){1,2}$/i),\n z.trim()\n );\nschemaRegistry.add(colorSchema, {\n description: \"A base schema for describing the format of colors\"\n});\n\nexport const darkColorSchema = z._default(colorSchema, \"#1e2124\");\nschemaRegistry.add(darkColorSchema, {\n description: \"The dark background color of the workspace\"\n});\n\nexport const lightColorSchema = z._default(colorSchema, \"#cbd5e1\");\nschemaRegistry.add(lightColorSchema, {\n description: \"The light background color of the workspace\"\n});\n\nexport const brandColorSchema = z._default(colorSchema, \"#1fb2a6\");\nschemaRegistry.add(brandColorSchema, {\n description: \"The primary brand specific color of the workspace\"\n});\n\nexport const alternateColorSchema = z.optional(colorSchema);\nschemaRegistry.add(alternateColorSchema, {\n description: \"The alternate brand specific color of the workspace\"\n});\n\nexport const accentColorSchema = z.optional(colorSchema);\nschemaRegistry.add(accentColorSchema, {\n description: \"The secondary brand specific color of the workspace\"\n});\n\nexport const linkColorSchema = z._default(colorSchema, \"#3fa6ff\");\nschemaRegistry.add(linkColorSchema, {\n description: \"The color used to display hyperlink text\"\n});\n\nexport const discoveryColorSchema = z._default(colorSchema, \"#818cf8\");\nschemaRegistry.add(discoveryColorSchema, {\n description: \"The second brand specific color of the workspace\"\n});\n\nexport const successColorSchema = z._default(colorSchema, \"#45b27e\");\nschemaRegistry.add(successColorSchema, {\n description: \"The success color of the workspace\"\n});\n\nexport const infoColorSchema = z._default(colorSchema, \"#38bdf8\");\nschemaRegistry.add(infoColorSchema, {\n description: \"The informational color of the workspace\"\n});\n\nexport const debugColorSchema = z._default(colorSchema, \"#8afafc\");\nschemaRegistry.add(debugColorSchema, {\n description: \"The debug color of the workspace\"\n});\n\nexport const warningColorSchema = z._default(colorSchema, \"#f3d371\");\nschemaRegistry.add(warningColorSchema, {\n description: \"The warning color of the workspace\"\n});\n\nexport const dangerColorSchema = z._default(colorSchema, \"#d8314a\");\nschemaRegistry.add(dangerColorSchema, {\n description: \"The danger color of the workspace\"\n});\n\nexport const fatalColorSchema = z.optional(colorSchema);\nschemaRegistry.add(fatalColorSchema, {\n description: \"The fatal color of the workspace\"\n});\n\nexport const performanceColorSchema = z._default(colorSchema, \"#80fd74\");\nschemaRegistry.add(performanceColorSchema, {\n description: \"The performance color of the workspace\"\n});\n\nexport const positiveColorSchema = z._default(colorSchema, \"#4ade80\");\nschemaRegistry.add(positiveColorSchema, {\n description: \"The positive number color of the workspace\"\n});\n\nexport const negativeColorSchema = z._default(colorSchema, \"#ef4444\");\nschemaRegistry.add(negativeColorSchema, {\n description: \"The negative number color of the workspace\"\n});\n\nexport const gradientStopsSchema = z.optional(z.array(colorSchema));\nschemaRegistry.add(gradientStopsSchema, {\n description:\n \"The color stops for the base gradient color pattern used in the workspace\"\n});\n\nexport const darkColorsSchema = z.object({\n foreground: lightColorSchema,\n background: darkColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nexport const lightColorsSchema = z.object({\n foreground: darkColorSchema,\n background: lightColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nexport const multiColorsSchema = z.object({\n dark: darkColorsSchema,\n light: lightColorsSchema\n});\n\nexport const singleColorsSchema = z.object({\n dark: darkColorSchema,\n light: lightColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nconst registryUrlConfigSchema = z.optional(z.url());\nschemaRegistry.add(registryUrlConfigSchema, {\n description: \"A remote registry URL used to publish distributable packages\"\n});\n\nexport const registrySchema = z._default(\n z.object({\n github: registryUrlConfigSchema,\n npm: registryUrlConfigSchema,\n cargo: registryUrlConfigSchema,\n cyclone: registryUrlConfigSchema,\n container: registryUrlConfigSchema\n }),\n {}\n);\nschemaRegistry.add(registrySchema, {\n description: \"A list of remote registry URLs used by Storm Software\"\n});\n\n/**\n * Storm theme color config values used for styling various workspace elements\n */\nexport const colorsSchema = z.union([singleColorsSchema, multiColorsSchema]);\nschemaRegistry.add(colorsSchema, {\n description: \"Colors used for various workspace elements\"\n});\n\nexport const themeColorsSchema = z.record(\n z.union([z.union([z.literal(\"base\"), z.string()]), z.string()]),\n colorsSchema\n);\nschemaRegistry.add(themeColorsSchema, {\n description:\n \"Storm theme config values used for styling various package elements\"\n});\n\nexport const extendsSchema = z.optional(\n z.union([z.string().check(z.trim()), z.array(z.string().check(z.trim()))])\n);\nschemaRegistry.add(extendsSchema, {\n description:\n \"The path to a base config file to use as a configuration preset file. Documentation can be found at https://github.com/unjs/c12#extending-configuration.\"\n});\n\nconst workspaceBotNameSchema = z.string().check(z.trim());\nschemaRegistry.add(workspaceBotNameSchema, {\n description:\n \"The workspace bot user's name (this is the bot that will be used to perform various tasks)\"\n});\n\nconst workspaceBotEmailSchema = z.string().check(z.trim());\nschemaRegistry.add(workspaceBotEmailSchema, {\n description: \"The email of the workspace bot\"\n});\n\nexport const workspaceBotSchema = z.object({\n name: workspaceBotNameSchema,\n email: workspaceBotEmailSchema\n});\nschemaRegistry.add(workspaceBotSchema, {\n description:\n \"The workspace's bot user's config used to automated various operations tasks\"\n});\n\nexport const workspaceReleaseBannerUrlSchema = z.optional(\n z.string().check(z.trim(), z.url())\n);\nschemaRegistry.add(workspaceReleaseBannerUrlSchema, {\n description: \"A URL to a banner image used to display the workspace's release\"\n});\n\nexport const workspaceReleaseBannerAltSchema = z._default(\n z.string().check(z.trim()),\n STORM_DEFAULT_BANNER_ALT\n);\nschemaRegistry.add(workspaceReleaseBannerAltSchema, {\n description: \"The alt text for the workspace's release banner image\"\n});\n\nexport const workspaceReleaseBannerSchema = z.object({\n url: workspaceReleaseBannerUrlSchema,\n alt: workspaceReleaseBannerAltSchema\n});\nschemaRegistry.add(workspaceReleaseBannerSchema, {\n description: \"The workspace's banner image used during the release process\"\n});\n\nexport const workspaceReleaseHeaderSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceReleaseHeaderSchema, {\n description:\n \"A header message appended to the start of the workspace's release notes\"\n});\n\nexport const workspaceReleaseFooterSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceReleaseFooterSchema, {\n description:\n \"A footer message appended to the end of the workspace's release notes\"\n});\n\nexport const workspaceReleaseSchema = z.object({\n banner: z.union([\n workspaceReleaseBannerSchema,\n z.string().check(z.trim(), z.url())\n ]),\n header: workspaceReleaseHeaderSchema,\n footer: workspaceReleaseFooterSchema\n});\nschemaRegistry.add(workspaceReleaseSchema, {\n description: \"The workspace's release config used during the release process\"\n});\n\nexport const workspaceSocialsTwitterSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsTwitterSchema, {\n description: \"A Twitter/X account associated with the organization/project\"\n});\n\nexport const workspaceSocialsDiscordSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsDiscordSchema, {\n description: \"A Discord account associated with the organization/project\"\n});\n\nexport const workspaceSocialsTelegramSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsTelegramSchema, {\n description: \"A Telegram account associated with the organization/project\"\n});\n\nexport const workspaceSocialsSlackSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsSlackSchema, {\n description: \"A Slack account associated with the organization/project\"\n});\n\nexport const workspaceSocialsMediumSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsMediumSchema, {\n description: \"A Medium account associated with the organization/project\"\n});\n\nexport const workspaceSocialsGithubSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsGithubSchema, {\n description: \"A GitHub account associated with the organization/project\"\n});\n\nexport const workspaceSocialsSchema = z.object({\n twitter: workspaceSocialsTwitterSchema,\n discord: workspaceSocialsDiscordSchema,\n telegram: workspaceSocialsTelegramSchema,\n slack: workspaceSocialsSlackSchema,\n medium: workspaceSocialsMediumSchema,\n github: workspaceSocialsGithubSchema\n});\nschemaRegistry.add(workspaceSocialsSchema, {\n description:\n \"The workspace's account config used to store various social media links\"\n});\n\nexport const workspaceDirectoryCacheSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryCacheSchema, {\n description: \"The directory used to store the environment's cached file data\"\n});\n\nexport const workspaceDirectoryDataSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryDataSchema, {\n description: \"The directory used to store the environment's data files\"\n});\n\nexport const workspaceDirectoryConfigSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryConfigSchema, {\n description:\n \"The directory used to store the environment's configuration files\"\n});\n\nexport const workspaceDirectoryTempSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryTempSchema, {\n description: \"The directory used to store the environment's temp files\"\n});\n\nexport const workspaceDirectoryLogSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryLogSchema, {\n description: \"The directory used to store the environment's log files\"\n});\n\nexport const workspaceDirectoryBuildSchema = z._default(\n z.string().check(z.trim()),\n \"dist\"\n);\nschemaRegistry.add(workspaceDirectoryBuildSchema, {\n description:\n \"The directory used to store the workspace's distributable files after a build (relative to the workspace root)\"\n});\n\nexport const workspaceDirectorySchema = z.object({\n cache: workspaceDirectoryCacheSchema,\n data: workspaceDirectoryDataSchema,\n config: workspaceDirectoryConfigSchema,\n temp: workspaceDirectoryTempSchema,\n log: workspaceDirectoryLogSchema,\n build: workspaceDirectoryBuildSchema\n});\nschemaRegistry.add(workspaceDirectorySchema, {\n description:\n \"Various directories used by the workspace to store data, cache, and configuration files\"\n});\n\nexport const variantSchema = z._default(\n z.enum([\"minimal\", \"monorepo\"]),\n \"monorepo\"\n);\nschemaRegistry.add(variantSchema, {\n description:\n \"The variant of the workspace. This can be used to enable or disable certain features or configurations.\"\n});\n\nexport const errorCodesFileSchema = z._default(\n z.string().check(z.trim()),\n STORM_DEFAULT_ERROR_CODES_FILE\n);\nschemaRegistry.add(errorCodesFileSchema, {\n description: \"The path to the workspace's error codes JSON file\"\n});\n\nexport const errorUrlSchema = z.optional(z.url());\nschemaRegistry.add(errorUrlSchema, {\n description:\n \"A URL to a page that looks up the workspace's error messages given a specific error code\"\n});\n\nexport const errorSchema = z.object({\n codesFile: errorCodesFileSchema,\n url: errorUrlSchema\n});\nschemaRegistry.add(errorSchema, {\n description:\n \"The workspace's error config used when creating error details during a system error\"\n});\n\nexport const organizationNameSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(organizationNameSchema, {\n description: \"The name of the organization\"\n});\n\nexport const organizationDescriptionSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(organizationDescriptionSchema, {\n description: \"A description of the organization\"\n});\n\nexport const organizationLogoSchema = z.optional(z.url());\nschemaRegistry.add(organizationLogoSchema, {\n description: \"A URL to the organization's logo image\"\n});\n\nexport const organizationIconSchema = z.optional(z.url());\nschemaRegistry.add(organizationIconSchema, {\n description: \"A URL to the organization's icon image\"\n});\n\nexport const organizationUrlSchema = z.optional(z.url());\nschemaRegistry.add(organizationUrlSchema, {\n description:\n \"A URL to a page that provides more information about the organization\"\n});\n\nexport const organizationSchema = z.object({\n name: organizationNameSchema,\n description: organizationDescriptionSchema,\n logo: organizationLogoSchema,\n icon: organizationIconSchema,\n url: organizationUrlSchema\n});\nschemaRegistry.add(organizationSchema, {\n description: \"The workspace's organization details\"\n});\n\nconst schemaNameSchema = z._default(\n z.string().check(z.trim(), z.toLowerCase()),\n \"https://public.storm-cdn.com/schemas/storm-workspace.schema.json\"\n);\nschemaRegistry.add(schemaNameSchema, {\n description:\n \"The URL or file path to the JSON schema file that describes the Storm configuration file\"\n});\n\nconst nameSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(nameSchema, {\n description:\n \"The name of the workspace/project/service/package/scope using this configuration\"\n});\n\nconst namespaceSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(namespaceSchema, {\n description:\n \"The namespace of the workspace/project/service/package/scope using this configuration\"\n});\n\nconst orgSchema = z.union([\n organizationSchema,\n z.string().check(z.trim(), z.toLowerCase())\n]);\nschemaRegistry.add(orgSchema, {\n description:\n \"The organization of the workspace. This can be a string or an object containing the organization's details\"\n});\n\nconst repositorySchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(repositorySchema, {\n description: \"The repo URL of the workspace (i.e. the GitHub repository URL)\"\n});\n\n/**\n * Storm Workspace config values used during various dev-ops processes. It represents the config of the entire monorepo.\n */\nexport const licenseSchema = z._default(\n z.string().check(z.trim()),\n \"Apache-2.0\"\n);\nschemaRegistry.add(licenseSchema, {\n description: \"The license type of the package\"\n});\n\nexport const homepageSchema = z.optional(z.url());\nschemaRegistry.add(homepageSchema, {\n description: \"The homepage of the workspace\"\n});\n\nexport const docsSchema = z.optional(z.url());\nschemaRegistry.add(docsSchema, {\n description: \"The documentation site for the workspace\"\n});\n\nexport const portalSchema = z.optional(z.url());\nschemaRegistry.add(portalSchema, {\n description: \"The development portal site for the workspace\"\n});\n\nexport const licensingSchema = z.optional(z.url());\nschemaRegistry.add(licensingSchema, {\n description: \"The licensing site for the workspace\"\n});\n\nexport const contactSchema = z.optional(z.url());\nschemaRegistry.add(contactSchema, {\n description: \"The contact site for the workspace\"\n});\n\nexport const supportSchema = z.optional(z.url());\nschemaRegistry.add(supportSchema, {\n description:\n \"The support site for the workspace. If not provided, this is defaulted to the `contact` config value\"\n});\n\nexport const branchSchema = z._default(\n z.string().check(z.trim(), z.toLowerCase()),\n \"main\"\n);\nschemaRegistry.add(branchSchema, {\n description: \"The branch of the workspace\"\n});\n\nexport const preidSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(preidSchema, {\n description: \"A tag specifying the version pre-release identifier\"\n});\n\nexport const ownerSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(ownerSchema, {\n description: \"The owner of the package\"\n});\n\nexport const modeSchema = z._default(\n z\n .enum([\"development\", \"test\", \"production\"])\n .check(z.trim(), z.toLowerCase()),\n \"production\"\n);\nschemaRegistry.add(modeSchema, {\n description: \"The current runtime environment mode for the package\"\n});\n\nexport const workspaceRootSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(workspaceRootSchema, {\n description: \"The root directory of the workspace\"\n});\n\nexport const skipCacheSchema = z._default(z.boolean(), false);\nschemaRegistry.add(skipCacheSchema, {\n description: \"Should all known types of workspace caching be skipped?\"\n});\n\nexport const packageManagerSchema = z._default(\n z.enum([\"npm\", \"yarn\", \"pnpm\", \"bun\"]),\n \"npm\"\n);\nschemaRegistry.add(packageManagerSchema, {\n description:\n \"The JavaScript/TypeScript package manager used by the repository\"\n});\n\nexport const timezoneSchema = z._default(\n z.string().check(z.trim()),\n \"America/New_York\"\n);\nschemaRegistry.add(timezoneSchema, {\n description: \"The default timezone of the workspace\"\n});\n\nexport const localeSchema = z._default(z.string().check(z.trim()), \"en-US\");\nschemaRegistry.add(localeSchema, {\n description: \"The default locale of the workspace\"\n});\n\nexport const logLevelSchema = z._default(\n z.enum([\n \"silent\",\n \"fatal\",\n \"error\",\n \"warn\",\n \"success\",\n \"info\",\n \"performance\",\n \"debug\",\n \"trace\",\n \"all\"\n ]),\n \"info\"\n);\nschemaRegistry.add(logLevelSchema, {\n description:\n \"The log level used to filter out lower priority log messages. If not provided, this is defaulted using the `environment` config value (if `environment` is set to `production` then `level` is `error`, else `level` is `debug`).\"\n});\n\nexport const skipConfigLoggingSchema = z._default(z.boolean(), true);\nschemaRegistry.add(skipConfigLoggingSchema, {\n description:\n \"Should the logging of the current Storm Workspace configuration be skipped?\"\n});\n\nexport const configFileSchema = z._default(\n z.nullable(z.string().check(z.trim())),\n null\n);\nschemaRegistry.add(configFileSchema, {\n description:\n \"The filepath of the Storm config. When this field is null, no config file was found in the current workspace.\"\n});\n\nexport const extensionsSchema = z._default(z.record(z.string(), z.any()), {});\nschemaRegistry.add(extensionsSchema, {\n description: \"Configuration of each used extension\"\n});\n\n/**\n * Storm Workspace config values used during various dev-ops processes. It represents the config of the entire monorepo.\n */\nexport const workspaceConfigSchema = z.object({\n $schema: schemaNameSchema,\n extends: extendsSchema,\n name: nameSchema,\n variant: variantSchema,\n namespace: namespaceSchema,\n organization: orgSchema,\n repository: repositorySchema,\n license: licenseSchema,\n homepage: homepageSchema,\n docs: docsSchema,\n portal: portalSchema,\n licensing: licensingSchema,\n contact: contactSchema,\n support: supportSchema,\n branch: branchSchema,\n preid: preidSchema,\n owner: ownerSchema,\n bot: workspaceBotSchema,\n release: workspaceReleaseSchema,\n socials: workspaceSocialsSchema,\n error: errorSchema,\n mode: modeSchema,\n workspaceRoot: workspaceRootSchema,\n skipCache: skipCacheSchema,\n directories: workspaceDirectorySchema,\n packageManager: packageManagerSchema,\n timezone: timezoneSchema,\n locale: localeSchema,\n logLevel: logLevelSchema,\n skipConfigLogging: skipConfigLoggingSchema,\n registry: registrySchema,\n configFile: configFileSchema,\n colors: z.union([colorsSchema, themeColorsSchema]),\n extensions: extensionsSchema\n});\nschemaRegistry.add(extensionsSchema, {\n description:\n \"Storm Workspace config values used during various dev-ops processes. This type is a combination of the StormPackageConfig and StormProject types. It represents the config of the entire monorepo.\"\n});\n","/*\nBased on Node.js implementation:\n - Forked from: https://github.com/nodejs/node/blob/4b030d057375e58d2e99182f6ef7aa70f6ebcf99/lib/path.js\n - Latest: https://github.com/nodejs/node/blob/main/lib/path.js\nCheck LICENSE file\n\n*/\n\nimport type path from \"node:path\";\n\nconst _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\n\n// Util to normalize windows paths to posix\nexport function normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input\n .replace(/\\\\/g, \"/\")\n .replace(_DRIVE_LETTER_START_RE, r => r.toUpperCase());\n}\n\nconst _UNC_REGEX = /^[/\\\\]{2}/;\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nconst _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nconst _ROOT_FOLDER_RE = /^\\/([A-Za-z]:)?$/;\nconst _EXTNAME_RE = /.(\\.[^./]+|\\.)$/;\nconst _PATH_ROOT_RE = /^[/\\\\]|^[a-zA-Z]:[/\\\\]/;\n\n/**\n * Constant for path separator.\n *\n * Always equals to `\"/\"`.\n */\nexport const sep = \"/\";\n\nexport const correctPaths = function (path?: string) {\n if (!path || path.length === 0) {\n return \".\";\n }\n\n // Normalize windows argument\n path = normalizeWindowsPath(path);\n\n const isUNCPath = path?.match(_UNC_REGEX);\n const isPathAbsolute = isAbsolute(path);\n const trailingSeparator = path[path.length - 1] === \"/\";\n\n // Normalize the path\n path = normalizeString(path, !isPathAbsolute);\n\n if (path.length === 0) {\n if (isPathAbsolute) {\n return \"/\";\n }\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) {\n path += \"/\";\n }\n if (_DRIVE_LETTER_RE.test(path)) {\n path += \"/\";\n }\n\n if (isUNCPath) {\n if (!isPathAbsolute) {\n return `//./${path}`;\n }\n\n return `//${path}`;\n }\n\n return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;\n};\n\nexport const joinPaths: typeof path.join = function (...segments) {\n let path = \"\";\n\n for (const seg of segments) {\n if (!seg) {\n continue;\n }\n if (path.length > 0) {\n const pathTrailing = path[path.length - 1] === \"/\";\n const segLeading = seg[0] === \"/\";\n const both = pathTrailing && segLeading;\n if (both) {\n path += seg.slice(1);\n } else {\n path += pathTrailing || segLeading ? seg : `/${seg}`;\n }\n } else {\n path += seg;\n }\n }\n\n return correctPaths(path);\n};\n\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\n\nexport const resolve: typeof path.resolve = function (...arguments_) {\n // Normalize windows arguments\n arguments_ = arguments_.map(argument => normalizeWindowsPath(argument));\n\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n\n for (\n let index = arguments_.length - 1;\n index >= -1 && !resolvedAbsolute;\n index--\n ) {\n const path = index >= 0 ? arguments_[index] : cwd();\n\n // Skip empty entries\n if (!path || path.length === 0) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\n\n/**\n * Resolves a string path, resolving '.' and '.' segments and allowing paths above the root.\n *\n * @param path - The path to normalise.\n * @param allowAboveRoot - Whether to allow the resulting path to be above the root directory.\n * @returns the normalised path string.\n */\nexport function normalizeString(path: string, allowAboveRoot: boolean) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char: string | null = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n // casted because we know it exists thanks to the length check\n char = path[index] as string;\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) {\n // NOOP\n } else if (dots === 2) {\n if (\n res.length < 2 ||\n lastSegmentLength !== 2 ||\n res[res.length - 1] !== \".\" ||\n res[res.length - 2] !== \".\"\n ) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nexport const isAbsolute: typeof path.isAbsolute = function (p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\n\nexport const toNamespacedPath: typeof path.toNamespacedPath = function (p) {\n return normalizeWindowsPath(p);\n};\n\nexport const extname: typeof path.extname = function (p) {\n if (p === \"..\") return \"\";\n const match = _EXTNAME_RE.exec(normalizeWindowsPath(p));\n return (match && match[1]) || \"\";\n};\n\nexport const relative: typeof path.relative = function (from, to) {\n // we cast these because `split` will always be at least one string\n const _from = resolve(from).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\") as [\n string,\n ...string[]\n ];\n const _to = resolve(to).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\") as [\n string,\n ...string[]\n ];\n\n // Different windows drive letters\n if (_to[0][1] === \":\" && _from[0][1] === \":\" && _from[0] !== _to[0]) {\n return _to.join(\"/\");\n }\n\n const _fromCopy = [..._from];\n for (const segment of _fromCopy) {\n if (_to[0] !== segment) {\n break;\n }\n _from.shift();\n _to.shift();\n }\n return [..._from.map(() => \"..\"), ..._to].join(\"/\");\n};\n\nexport const dirname: typeof path.dirname = function (p) {\n const segments = normalizeWindowsPath(p)\n .replace(/\\/$/, \"\")\n .split(\"/\")\n .slice(0, -1);\n if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0] as string)) {\n segments[0] += \"/\";\n }\n return segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n};\n\nexport const format: typeof path.format = function (p) {\n const ext = p.ext ? (p.ext.startsWith(\".\") ? p.ext : `.${p.ext}`) : \"\";\n const segments = [p.root, p.dir, p.base ?? (p.name ?? \"\") + ext].filter(\n Boolean\n ) as string[];\n return normalizeWindowsPath(\n p.root ? resolve(...segments) : segments.join(\"/\")\n );\n};\n\nexport const basename: typeof path.basename = function (p, extension) {\n const segments = normalizeWindowsPath(p).split(\"/\");\n\n // default to empty string\n let lastSegment = \"\";\n for (let i = segments.length - 1; i >= 0; i--) {\n const val = segments[i];\n if (val) {\n lastSegment = val;\n break;\n }\n }\n\n return extension && lastSegment.endsWith(extension)\n ? lastSegment.slice(0, -extension.length)\n : lastSegment;\n};\n\nexport const parse: typeof path.parse = function (p) {\n // The root of the path such as '/' or 'c:\\'\n const root = _PATH_ROOT_RE.exec(p)?.[0]?.replace(/\\\\/g, \"/\") || \"\";\n const base = basename(p);\n const extension = extname(base);\n return {\n root,\n dir: dirname(p),\n base,\n ext: extension,\n name: base.slice(0, base.length - extension.length)\n };\n};\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst MAX_PATH_SEARCH_DEPTH = 30;\nlet depth = 0;\n\n/**\n * Gets the nearest \"node_modules\" folder by walking up from start path.\n */\nexport function findFolderUp(\n startPath: string,\n endFileNames: string[] = [],\n endDirectoryNames: string[] = []\n): string | undefined {\n const _startPath = startPath ?? process.cwd();\n\n if (\n endDirectoryNames.some(endDirName =>\n existsSync(join(_startPath, endDirName))\n )\n ) {\n return _startPath;\n }\n\n if (\n endFileNames.some(endFileName => existsSync(join(_startPath, endFileName)))\n ) {\n return _startPath;\n }\n\n if (_startPath !== \"/\" && depth++ < MAX_PATH_SEARCH_DEPTH) {\n const parent = join(_startPath, \"..\");\n return findFolderUp(parent, endFileNames, endDirectoryNames);\n }\n return undefined;\n}\n","import { correctPaths } from \"./correct-paths\";\nimport { findFolderUp } from \"./find-up\";\n\nconst rootFiles = [\n \"storm-workspace.json\",\n \"storm-workspace.yaml\",\n \"storm-workspace.yml\",\n \"storm-workspace.js\",\n \"storm-workspace.ts\",\n \".storm-workspace.json\",\n \".storm-workspace.yaml\",\n \".storm-workspace.yml\",\n \".storm-workspace.js\",\n \".storm-workspace.ts\",\n \"lerna.json\",\n \"nx.json\",\n \"turbo.json\",\n \"npm-workspace.json\",\n \"yarn-workspace.json\",\n \"pnpm-workspace.json\",\n \"npm-workspace.yaml\",\n \"yarn-workspace.yaml\",\n \"pnpm-workspace.yaml\",\n \"npm-workspace.yml\",\n \"yarn-workspace.yml\",\n \"pnpm-workspace.yml\",\n \"npm-lock.json\",\n \"yarn-lock.json\",\n \"pnpm-lock.json\",\n \"npm-lock.yaml\",\n \"yarn-lock.yaml\",\n \"pnpm-lock.yaml\",\n \"npm-lock.yml\",\n \"yarn-lock.yml\",\n \"pnpm-lock.yml\",\n \"bun.lockb\",\n \"bun.lock\",\n \"bunfig.toml\"\n];\n\nconst rootDirectories = [\n \".storm-workspace\",\n \".nx\",\n \".git\",\n \".github\",\n \".vscode\",\n \".verdaccio\"\n];\n\n/**\n * Find the monorepo root directory, searching upwards from `path`.\n *\n * @param pathInsideMonorepo - The path inside the monorepo to start searching from\n * @returns The monorepo root directory\n */\nexport function findWorkspaceRootSafe(\n pathInsideMonorepo?: string\n): string | undefined {\n if (process.env.STORM_WORKSPACE_ROOT || process.env.NX_WORKSPACE_ROOT_PATH) {\n return correctPaths(\n process.env.STORM_WORKSPACE_ROOT ?? process.env.NX_WORKSPACE_ROOT_PATH\n );\n }\n\n return correctPaths(\n findFolderUp(\n pathInsideMonorepo ?? process.cwd(),\n rootFiles,\n rootDirectories\n )\n );\n}\n\n/**\n * Find the monorepo root directory, searching upwards from `path`.\n *\n * @param pathInsideMonorepo - The path inside the monorepo to start searching from\n * @returns The monorepo root directory\n */\nexport function findWorkspaceRoot(pathInsideMonorepo?: string): string {\n const result = findWorkspaceRootSafe(pathInsideMonorepo);\n if (!result) {\n throw new Error(\n `Cannot find workspace root upwards from known path. Files search list includes: \\n${rootFiles.join(\n \"\\n\"\n )}\\nPath: ${pathInsideMonorepo ? pathInsideMonorepo : process.cwd()}`\n );\n }\n\n return result;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n STORM_DEFAULT_ERROR_CODES_FILE,\n STORM_DEFAULT_LICENSE,\n type StormWorkspaceConfig\n} from \"@storm-software/config\";\nimport { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { joinPaths } from \"./correct-paths\";\nimport { findWorkspaceRoot } from \"./find-workspace-root\";\n\n/**\n * Get the default Storm config values used during various dev-ops processes\n *\n * @returns The default Storm config values\n */\nexport async function getPackageJsonConfig(\n root?: string\n): Promise<\n Pick<\n StormWorkspaceConfig,\n \"workspaceRoot\" | \"license\" | \"homepage\" | \"support\"\n > &\n Partial<Pick<StormWorkspaceConfig, \"name\" | \"namespace\" | \"repository\">>\n> {\n let license = STORM_DEFAULT_LICENSE;\n let homepage: string | undefined = undefined;\n let support: string | undefined = undefined;\n\n let name: string | undefined = undefined;\n let namespace: string | undefined = undefined;\n let repository: string | undefined = undefined;\n\n const workspaceRoot = findWorkspaceRoot(root);\n if (existsSync(join(workspaceRoot, \"package.json\"))) {\n const file = await readFile(\n joinPaths(workspaceRoot, \"package.json\"),\n \"utf8\"\n );\n if (file) {\n const packageJson = JSON.parse(file);\n if (packageJson.name) {\n name = packageJson.name;\n }\n if (packageJson.namespace) {\n namespace = packageJson.namespace;\n }\n if (packageJson.repository) {\n if (typeof packageJson.repository === \"string\") {\n repository = packageJson.repository;\n } else if (packageJson.repository.url) {\n repository = packageJson.repository.url;\n }\n }\n if (packageJson.license) {\n license = packageJson.license;\n }\n if (packageJson.homepage) {\n homepage = packageJson.homepage;\n }\n\n if (packageJson.bugs) {\n if (typeof packageJson.bugs === \"string\") {\n support = packageJson.bugs;\n } else if (packageJson.bugs.url) {\n support = packageJson.bugs.url;\n }\n }\n }\n }\n\n return {\n workspaceRoot,\n name,\n namespace,\n repository,\n license,\n homepage,\n support\n };\n}\n\n/**\n * Apply default config values to the given config object\n *\n * @param config - The config object to apply defaults to\n * @returns The config object with defaults applied\n */\nexport function applyDefaultConfig(\n config: Partial<StormWorkspaceConfig>\n): Partial<StormWorkspaceConfig> {\n if (!config.support && config.contact) {\n config.support = config.contact;\n }\n\n if (!config.contact && config.support) {\n config.contact = config.support;\n }\n\n if (config.homepage) {\n if (!config.docs) {\n config.docs = `${config.homepage}/docs`;\n }\n\n if (!config.license) {\n config.license = `${config.homepage}/license`;\n }\n\n if (!config.support) {\n config.support = `${config.homepage}/support`;\n }\n if (!config.contact) {\n config.contact = `${config.homepage}/contact`;\n }\n\n if (!config.error?.codesFile || !config?.error?.url) {\n config.error ??= { codesFile: STORM_DEFAULT_ERROR_CODES_FILE };\n if (config.homepage) {\n config.error.url ??= `${config.homepage}/errors`;\n }\n }\n }\n\n return config;\n}\n","import type { StormWorkspaceConfigInput } from \"@storm-software/config\";\nimport { loadConfig, ResolvedConfig, type LoadConfigOptions } from \"c12\";\nimport defu from \"defu\";\nimport { writeTrace } from \"../logger/console\";\nimport { joinPaths } from \"../utilities\";\nimport { findWorkspaceRoot } from \"../utilities/find-workspace-root\";\n\n// let _cosmiconfig: any = undefined;\n// let defaultExplorer: PublicExplorer | undefined;\n\n/**\n * Get the config file for the current Storm workspace\n *\n * @param fileName - The name of the config file to search for\n * @param filePath - The path to search for the config file in\n * @returns The config file for the current Storm workspace\n */\nexport const getConfigFileByName = async (\n fileName: string,\n filePath?: string,\n options: LoadConfigOptions<Partial<StormWorkspaceConfigInput>> = {}\n): Promise<ResolvedConfig<Partial<StormWorkspaceConfigInput>>> => {\n const workspacePath = filePath || findWorkspaceRoot(filePath);\n\n const configs = await Promise.all([\n loadConfig<Partial<StormWorkspaceConfigInput>>({\n cwd: workspacePath,\n packageJson: true,\n name: fileName,\n envName: fileName?.toUpperCase(),\n jitiOptions: {\n debug: false,\n fsCache:\n process.env.STORM_SKIP_CACHE === \"true\"\n ? false\n : joinPaths(\n process.env.STORM_CACHE_DIR || \"node_modules/.cache/storm\",\n \"jiti\"\n )\n },\n ...options\n }),\n loadConfig<Partial<StormWorkspaceConfigInput>>({\n cwd: workspacePath,\n packageJson: true,\n name: fileName,\n envName: fileName?.toUpperCase(),\n jitiOptions: {\n debug: false,\n fsCache:\n process.env.STORM_SKIP_CACHE === \"true\"\n ? false\n : joinPaths(\n process.env.STORM_CACHE_DIR || \"node_modules/.cache/storm\",\n \"jiti\"\n )\n },\n configFile: fileName,\n ...options\n })\n ]);\n\n return defu(configs[0] ?? {}, configs[1] ?? {});\n};\n\n/**\n * Get the config file for the current Storm workspace\n *\n * @returns The config file for the current Storm workspace\n */\nexport const getConfigFile = async (\n filePath?: string,\n additionalFileNames: string[] = []\n): Promise<Partial<StormWorkspaceConfigInput> | undefined> => {\n const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);\n\n const result = await getConfigFileByName(\"storm-workspace\", workspacePath);\n\n let config = result.config;\n const configFile = result.configFile;\n if (\n config &&\n configFile &&\n Object.keys(config).length > 0 &&\n !config.skipConfigLogging\n ) {\n writeTrace(\n `Found Storm configuration file \"${\n configFile.includes(`${workspacePath}/`)\n ? configFile.replace(`${workspacePath}/`, \"\")\n : configFile\n }\" at \"${workspacePath}\"`,\n {\n logLevel: \"all\"\n }\n );\n }\n\n if (additionalFileNames && additionalFileNames.length > 0) {\n const results = await Promise.all(\n additionalFileNames.map(fileName =>\n getConfigFileByName(fileName, workspacePath)\n )\n );\n for (const result of results) {\n if (\n result?.config &&\n result?.configFile &&\n Object.keys(result.config).length > 0\n ) {\n if (!config.skipConfigLogging && !result.config.skipConfigLogging) {\n writeTrace(\n `Found alternative configuration file \"${\n result.configFile.includes(`${workspacePath}/`)\n ? result.configFile.replace(`${workspacePath}/`, \"\")\n : result.configFile\n }\" at \"${workspacePath}\"`,\n {\n logLevel: \"all\"\n }\n );\n }\n\n config = defu(result.config ?? {}, config ?? {});\n }\n }\n }\n\n if (!config || Object.keys(config).length === 0) {\n return undefined;\n }\n\n config.configFile = configFile;\n\n return config;\n};\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n type ColorsInput,\n type DarkThemeColorsInput,\n type LightThemeColorsInput,\n type MultiThemeColorsInput,\n type SingleThemeColorsInput,\n type StormWorkspaceConfig,\n COLOR_KEYS,\n STORM_DEFAULT_DOCS,\n STORM_DEFAULT_HOMEPAGE,\n STORM_DEFAULT_LICENSING,\n VariantInput\n} from \"@storm-software/config\";\nimport { getLogLevelLabel } from \"../logger/get-log-level\";\nimport type { DeepPartial, LogLevelLabel } from \"../types\";\nimport { correctPaths } from \"../utilities/correct-paths\";\n\n/**\n * Get the config for an extension module of Storm workspace from environment variables\n *\n * @param extensionName - The name of the extension module\n * @returns The config for the specified Storm extension module. If the module does not exist, `undefined` is returned.\n */\nexport const getExtensionEnv = <\n TConfig extends Record<string, any> = Record<string, any>\n>(\n extensionName: string\n): TConfig | undefined => {\n const prefix = `STORM_EXTENSION_${extensionName.toUpperCase()}_`;\n return Object.keys(process.env)\n .filter(key => key.startsWith(prefix))\n .reduce((ret: Record<string, any>, key: string) => {\n const name = key\n .replace(prefix, \"\")\n .split(\"_\")\n .map(i =>\n i.length > 0\n ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1)\n : \"\"\n )\n .join(\"\");\n if (name) {\n ret[name] = process.env[key];\n }\n\n return ret;\n }, {}) as TConfig;\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @returns The config for the current Storm workspace from environment variables\n */\nexport const getConfigEnv = (): DeepPartial<StormWorkspaceConfig> => {\n const prefix = \"STORM_\";\n\n let config: DeepPartial<StormWorkspaceConfig> = {\n extends: process.env[`${prefix}EXTENDS`] || undefined,\n name: process.env[`${prefix}NAME`] || undefined,\n variant: (process.env[`${prefix}VARIANT`] as VariantInput) || undefined,\n namespace: process.env[`${prefix}NAMESPACE`] || undefined,\n owner: process.env[`${prefix}OWNER`] || undefined,\n bot: {\n name: process.env[`${prefix}BOT_NAME`] || undefined,\n email: process.env[`${prefix}BOT_EMAIL`] || undefined\n },\n release: {\n banner: {\n url: process.env[`${prefix}RELEASE_BANNER_URL`] || undefined,\n alt: (process.env[`${prefix}RELEASE_BANNER_ALT`] || undefined) as string\n },\n header: process.env[`${prefix}RELEASE_HEADER`] || undefined,\n footer: process.env[`${prefix}RELEASE_FOOTER`] || undefined\n },\n error: {\n codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || undefined,\n url: process.env[`${prefix}ERROR_URL`] || undefined\n },\n socials: {\n twitter: process.env[`${prefix}SOCIAL_TWITTER`] || undefined,\n discord: process.env[`${prefix}SOCIAL_DISCORD`] || undefined,\n telegram: process.env[`${prefix}SOCIAL_TELEGRAM`] || undefined,\n slack: process.env[`${prefix}SOCIAL_SLACK`] || undefined,\n medium: process.env[`${prefix}SOCIAL_MEDIUM`] || undefined,\n github: process.env[`${prefix}SOCIAL_GITHUB`] || undefined\n },\n organization:\n process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`]\n ? process.env[`${prefix}ORG_DESCRIPTION`] ||\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] ||\n process.env[`${prefix}ORG_URL`] ||\n process.env[`${prefix}ORGANIZATION_URL`] ||\n process.env[`${prefix}ORG_LOGO`] ||\n process.env[`${prefix}ORGANIZATION_LOGO`]\n ? {\n name: (process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`])!,\n description:\n process.env[`${prefix}ORG_DESCRIPTION`] ||\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] ||\n undefined,\n url:\n process.env[`${prefix}ORG_URL`] ||\n process.env[`${prefix}ORGANIZATION_URL`] ||\n undefined,\n logo:\n process.env[`${prefix}ORG_LOGO`] ||\n process.env[`${prefix}ORGANIZATION_LOGO`] ||\n undefined,\n icon:\n process.env[`${prefix}ORG_ICON`] ||\n process.env[`${prefix}ORGANIZATION_ICON`] ||\n undefined\n }\n : process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`]\n : undefined,\n packageManager:\n (process.env[\n `${prefix}PACKAGE_MANAGER`\n ] as StormWorkspaceConfig[\"packageManager\"]) || undefined,\n license: process.env[`${prefix}LICENSE`] || undefined,\n homepage: process.env[`${prefix}HOMEPAGE`] || undefined,\n docs: process.env[`${prefix}DOCS`] || undefined,\n portal: process.env[`${prefix}PORTAL`] || undefined,\n licensing: process.env[`${prefix}LICENSING`] || undefined,\n contact: process.env[`${prefix}CONTACT`] || undefined,\n support: process.env[`${prefix}SUPPORT`] || undefined,\n timezone: process.env[`${prefix}TIMEZONE`] || process.env.TZ || undefined,\n locale: process.env[`${prefix}LOCALE`] || process.env.LOCALE || undefined,\n configFile: process.env[`${prefix}WORKSPACE_CONFIG_FILE`]\n ? correctPaths(process.env[`${prefix}WORKSPACE_CONFIG_FILE`])\n : undefined,\n workspaceRoot: process.env[`${prefix}WORKSPACE_ROOT`]\n ? correctPaths(process.env[`${prefix}WORKSPACE_ROOT`])\n : undefined,\n directories: {\n cache: process.env[`${prefix}CACHE_DIR`]\n ? correctPaths(process.env[`${prefix}CACHE_DIR`])\n : process.env[`${prefix}CACHE_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}CACHE_DIRECTORY`])\n : undefined,\n data: process.env[`${prefix}DATA_DIR`]\n ? correctPaths(process.env[`${prefix}DATA_DIR`])\n : process.env[`${prefix}DATA_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}DATA_DIRECTORY`])\n : undefined,\n config: process.env[`${prefix}CONFIG_DIR`]\n ? correctPaths(process.env[`${prefix}CONFIG_DIR`])\n : process.env[`${prefix}CONFIG_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}CONFIG_DIRECTORY`])\n : undefined,\n temp: process.env[`${prefix}TEMP_DIR`]\n ? correctPaths(process.env[`${prefix}TEMP_DIR`])\n : process.env[`${prefix}TEMP_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}TEMP_DIRECTORY`])\n : undefined,\n log: process.env[`${prefix}LOG_DIR`]\n ? correctPaths(process.env[`${prefix}LOG_DIR`])\n : process.env[`${prefix}LOG_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}LOG_DIRECTORY`])\n : undefined,\n build: process.env[`${prefix}BUILD_DIR`]\n ? correctPaths(process.env[`${prefix}BUILD_DIR`])\n : process.env[`${prefix}BUILD_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}BUILD_DIRECTORY`])\n : undefined\n },\n skipCache:\n process.env[`${prefix}SKIP_CACHE`] !== undefined\n ? Boolean(process.env[`${prefix}SKIP_CACHE`])\n : undefined,\n mode:\n ((process.env[`${prefix}MODE`] ??\n process.env.NODE_ENV ??\n process.env.ENVIRONMENT) as StormWorkspaceConfig[\"mode\"]) || undefined,\n // ci:\n // process.env[`${prefix}CI`] !== undefined\n // ? Boolean(\n // process.env[`${prefix}CI`] ??\n // process.env.CI ??\n // process.env.CONTINUOUS_INTEGRATION\n // )\n // : undefined,\n\n repository: process.env[`${prefix}REPOSITORY`] || undefined,\n branch: process.env[`${prefix}BRANCH`] || undefined,\n preid: process.env[`${prefix}PRE_ID`] || undefined,\n registry: {\n github: process.env[`${prefix}REGISTRY_GITHUB`] || undefined,\n npm: process.env[`${prefix}REGISTRY_NPM`] || undefined,\n cargo: process.env[`${prefix}REGISTRY_CARGO`] || undefined,\n cyclone: process.env[`${prefix}REGISTRY_CYCLONE`] || undefined,\n container: process.env[`${prefix}REGISTRY_CONTAINER`] || undefined\n },\n logLevel:\n process.env[`${prefix}LOG_LEVEL`] !== null &&\n process.env[`${prefix}LOG_LEVEL`] !== undefined\n ? process.env[`${prefix}LOG_LEVEL`] &&\n Number.isSafeInteger(\n Number.parseInt(process.env[`${prefix}LOG_LEVEL`] as string)\n )\n ? getLogLevelLabel(\n Number.parseInt(process.env[`${prefix}LOG_LEVEL`] as string)\n )\n : (process.env[`${prefix}LOG_LEVEL`] as LogLevelLabel)\n : undefined,\n skipConfigLogging:\n process.env[`${prefix}SKIP_CONFIG_LOGGING`] !== undefined\n ? Boolean(process.env[`${prefix}SKIP_CONFIG_LOGGING`])\n : undefined\n };\n\n const themeNames = Object.keys(process.env).filter(\n envKey =>\n envKey.startsWith(`${prefix}COLOR_`) &&\n COLOR_KEYS.every(\n colorKey =>\n !envKey.startsWith(`${prefix}COLOR_LIGHT_${colorKey}`) &&\n !envKey.startsWith(`${prefix}COLOR_DARK_${colorKey}`)\n )\n );\n\n config.colors =\n themeNames.length > 0\n ? themeNames.reduce(\n (ret: Record<string, ColorsInput>, themeName: string) => {\n ret[themeName] = getThemeColorsEnv(prefix, themeName);\n\n return ret;\n },\n {}\n )\n : getThemeColorsEnv(prefix);\n\n if (config.docs === STORM_DEFAULT_DOCS) {\n if (config.homepage === STORM_DEFAULT_HOMEPAGE) {\n config.docs = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/docs`;\n } else {\n config.docs = `${config.homepage}/docs`;\n }\n }\n\n if (config.licensing === STORM_DEFAULT_LICENSING) {\n if (config.homepage === STORM_DEFAULT_HOMEPAGE) {\n config.licensing = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/licensing`;\n } else {\n config.licensing = `${config.homepage}/docs`;\n }\n }\n\n const serializedConfig = process.env[`${prefix}WORKSPACE_CONFIG`];\n if (serializedConfig) {\n const parsed = JSON.parse(serializedConfig);\n config = {\n ...config,\n ...parsed,\n colors: { ...config.colors, ...parsed.colors },\n extensions: { ...config.extensions, ...parsed.extensions }\n };\n }\n\n return config;\n\n /*const extensionPrefix = `${prefix}EXTENSION_`;\n return Object.keys(process.env)\n .filter((key) => key.startsWith(extensionPrefix))\n .reduce((ret: StormWorkspaceConfig, key: string) => {\n const extensionName = key\n .substring(prefix.length, key.indexOf(\"_\", prefix.length))\n .split(\"_\")\n .map((i) => (i.length > 0 ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1) : \"\"))\n .join(\"\");\n if (extensionName) {\n ret.extensions[extensionName] = getExtensionEnv(extensionName);\n }\n\n return ret;\n }, config);*/\n};\n\nconst getThemeColorsEnv = (prefix: string, theme?: string): ColorsInput => {\n const themeName =\n `COLOR_${theme && theme !== \"base\" ? `${theme}_` : \"\"}`.toUpperCase();\n\n return process.env[`${prefix}${themeName}LIGHT_BRAND`] ||\n process.env[`${prefix}${themeName}DARK_BRAND`]\n ? getMultiThemeColorsEnv(prefix + themeName)\n : getSingleThemeColorsEnv(prefix + themeName);\n};\n\nconst getSingleThemeColorsEnv = (prefix: string): SingleThemeColorsInput => {\n const gradient = [] as string[];\n if (\n process.env[`${prefix}GRADIENT_START`] &&\n process.env[`${prefix}GRADIENT_END`]\n ) {\n gradient.push(\n process.env[`${prefix}GRADIENT_START`]!,\n process.env[`${prefix}GRADIENT_END`]!\n );\n } else if (\n process.env[`${prefix}GRADIENT_0`] ||\n process.env[`${prefix}GRADIENT_1`]\n ) {\n let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;\n while (process.env[`${prefix}GRADIENT_${index}`]) {\n gradient.push(process.env[`${prefix}GRADIENT_${index}`]!);\n index++;\n }\n }\n\n return {\n dark: process.env[`${prefix}DARK`],\n light: process.env[`${prefix}LIGHT`],\n brand: process.env[`${prefix}BRAND`],\n alternate: process.env[`${prefix}ALTERNATE`],\n accent: process.env[`${prefix}ACCENT`],\n link: process.env[`${prefix}LINK`],\n discovery: process.env[`${prefix}DISCOVERY`],\n success: process.env[`${prefix}SUCCESS`],\n info: process.env[`${prefix}INFO`],\n debug: process.env[`${prefix}DEBUG`],\n warning: process.env[`${prefix}WARNING`],\n danger: process.env[`${prefix}DANGER`],\n fatal: process.env[`${prefix}FATAL`],\n performance: process.env[`${prefix}PERFORMANCE`],\n positive: process.env[`${prefix}POSITIVE`],\n negative: process.env[`${prefix}NEGATIVE`],\n gradient\n };\n};\n\nconst getMultiThemeColorsEnv = (prefix: string): MultiThemeColorsInput => {\n return {\n light: getBaseThemeColorsEnv<\"light\", typeof prefix>(`${prefix}_LIGHT_`),\n dark: getBaseThemeColorsEnv<\"dark\", typeof prefix>(`${prefix}_DARK_`)\n };\n};\n\ntype ColorThemeTypes = \"dark\" | \"light\";\n\nconst getBaseThemeColorsEnv = <\n TColorThemeType extends ColorThemeTypes = ColorThemeTypes,\n TExistingPrefix extends string = string,\n TResult = TColorThemeType extends \"dark\"\n ? DarkThemeColorsInput\n : LightThemeColorsInput\n>(\n prefix: `${TExistingPrefix}_${Uppercase<TColorThemeType>}_`\n): TResult => {\n const gradient = [] as string[];\n if (\n process.env[`${prefix}GRADIENT_START`] &&\n process.env[`${prefix}GRADIENT_END`]\n ) {\n gradient.push(\n process.env[`${prefix}GRADIENT_START`]!,\n process.env[`${prefix}GRADIENT_END`]!\n );\n } else if (\n process.env[`${prefix}GRADIENT_0`] ||\n process.env[`${prefix}GRADIENT_1`]\n ) {\n let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;\n while (process.env[`${prefix}GRADIENT_${index}`]) {\n gradient.push(process.env[`${prefix}GRADIENT_${index}`]!);\n index++;\n }\n }\n\n return {\n foreground: process.env[`${prefix}FOREGROUND`],\n background: process.env[`${prefix}BACKGROUND`],\n brand: process.env[`${prefix}BRAND`],\n alternate: process.env[`${prefix}ALTERNATE`],\n accent: process.env[`${prefix}ACCENT`],\n link: process.env[`${prefix}LINK`],\n discovery: process.env[`${prefix}DISCOVERY`],\n success: process.env[`${prefix}SUCCESS`],\n info: process.env[`${prefix}INFO`],\n debug: process.env[`${prefix}DEBUG`],\n warning: process.env[`${prefix}WARNING`],\n danger: process.env[`${prefix}DANGER`],\n fatal: process.env[`${prefix}FATAL`],\n performance: process.env[`${prefix}PERFORMANCE`],\n positive: process.env[`${prefix}POSITIVE`],\n negative: process.env[`${prefix}NEGATIVE`],\n gradient\n } as TResult;\n};\n","import type {\n ColorsMap,\n DarkThemeColors,\n LightThemeColors,\n MultiThemeColors,\n SingleThemeColors,\n StormWorkspaceConfig\n} from \"@storm-software/config\";\nimport { getLogLevel } from \"../logger/get-log-level\";\nimport { LogLevel } from \"../types\";\nimport { correctPaths } from \"../utilities/correct-paths\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace NodeJS {\n interface ProcessEnv {\n [key: string]: string | undefined;\n }\n }\n}\n\n/**\n * Get the config for an extension module of Storm workspace from environment variables\n *\n * @param extensionName - The name of the extension module\n * @returns The config for the specified Storm extension module. If the module does not exist, `undefined` is returned.\n */\nexport const setExtensionEnv = <\n TConfig extends Record<string, any> = Record<string, any>\n>(\n extensionName: string,\n extension: TConfig\n) => {\n for (const key of Object.keys(extension ?? {})) {\n if (extension[key]) {\n const result =\n key\n ?.replace(/([A-Z])+/g, (input?: string) =>\n input ? input[0]?.toUpperCase() + input.slice(1) : \"\"\n )\n .split(/(?=[A-Z])|[.\\-\\s_]/)\n .map((x: string) => x.toLowerCase()) ?? [];\n\n let extensionKey: string;\n if (result.length === 0) {\n return;\n }\n if (result.length === 1) {\n extensionKey = result[0]?.toUpperCase() ?? \"\";\n } else {\n extensionKey = result.reduce((ret: string, part: string) => {\n return `${ret}_${part.toLowerCase()}`;\n });\n }\n\n process.env[\n `STORM_EXTENSION_${extensionName.toUpperCase()}_${extensionKey.toUpperCase()}`\n ] = extension[key];\n }\n }\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @returns The config for the current Storm workspace from environment variables\n */\nexport const setConfigEnv = (config: StormWorkspaceConfig) => {\n const prefix = \"STORM_\";\n\n if (config.extends) {\n process.env[`${prefix}EXTENDS`] = Array.isArray(config.extends)\n ? JSON.stringify(config.extends)\n : config.extends;\n }\n if (config.name) {\n process.env[`${prefix}NAME`] = config.name;\n }\n if (config.variant) {\n process.env[`${prefix}VARIANT`] = config.variant;\n }\n if (config.namespace) {\n process.env[`${prefix}NAMESPACE`] = config.namespace;\n }\n if (config.owner) {\n process.env[`${prefix}OWNER`] = config.owner;\n }\n if (config.bot) {\n process.env[`${prefix}BOT_NAME`] = config.bot.name;\n process.env[`${prefix}BOT_EMAIL`] = config.bot.email;\n }\n if (config.error) {\n process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile;\n process.env[`${prefix}ERROR_URL`] = config.error.url;\n }\n if (config.release) {\n if (config.release.banner) {\n if (typeof config.release.banner === \"string\") {\n process.env[`${prefix}RELEASE_BANNER`] = config.release.banner;\n process.env[`${prefix}RELEASE_BANNER_URL`] = config.release.banner;\n } else {\n process.env[`${prefix}RELEASE_BANNER`] = config.release.banner.url;\n process.env[`${prefix}RELEASE_BANNER_URL`] = config.release.banner.url;\n process.env[`${prefix}RELEASE_BANNER_ALT`] = config.release.banner.alt;\n }\n }\n process.env[`${prefix}RELEASE_HEADER`] = config.release.header;\n process.env[`${prefix}RELEASE_FOOTER`] = config.release.footer;\n }\n if (config.socials) {\n if (config.socials.twitter) {\n process.env[`${prefix}SOCIAL_TWITTER`] = config.socials.twitter;\n }\n if (config.socials.discord) {\n process.env[`${prefix}SOCIAL_DISCORD`] = config.socials.discord;\n }\n if (config.socials.telegram) {\n process.env[`${prefix}SOCIAL_TELEGRAM`] = config.socials.telegram;\n }\n if (config.socials.slack) {\n process.env[`${prefix}SOCIAL_SLACK`] = config.socials.slack;\n }\n if (config.socials.medium) {\n process.env[`${prefix}SOCIAL_MEDIUM`] = config.socials.medium;\n }\n if (config.socials.github) {\n process.env[`${prefix}SOCIAL_GITHUB`] = config.socials.github;\n }\n }\n if (config.organization) {\n if (typeof config.organization === \"string\") {\n process.env[`${prefix}ORG`] = config.organization;\n process.env[`${prefix}ORG_NAME`] = config.organization;\n process.env[`${prefix}ORGANIZATION`] = config.organization;\n process.env[`${prefix}ORGANIZATION_NAME`] = config.organization;\n } else {\n process.env[`${prefix}ORG`] = config.organization.name;\n process.env[`${prefix}ORG_NAME`] = config.organization.name;\n process.env[`${prefix}ORGANIZATION`] = config.organization.name;\n process.env[`${prefix}ORGANIZATION_NAME`] = config.organization.name;\n if (config.organization.url) {\n process.env[`${prefix}ORG_URL`] = config.organization.url;\n process.env[`${prefix}ORGANIZATION_URL`] = config.organization.url;\n }\n\n if (config.organization.description) {\n process.env[`${prefix}ORG_DESCRIPTION`] =\n config.organization.description;\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] =\n config.organization.description;\n }\n\n if (config.organization.logo) {\n process.env[`${prefix}ORG_LOGO`] = config.organization.logo;\n process.env[`${prefix}ORGANIZATION_LOGO`] = config.organization.logo;\n }\n\n if (config.organization.icon) {\n process.env[`${prefix}ORG_ICON`] = config.organization.icon;\n process.env[`${prefix}ORGANIZATION_ICON`] = config.organization.icon;\n }\n }\n }\n if (config.packageManager) {\n process.env[`${prefix}PACKAGE_MANAGER`] = config.packageManager;\n }\n if (config.license) {\n process.env[`${prefix}LICENSE`] = config.license;\n }\n if (config.homepage) {\n process.env[`${prefix}HOMEPAGE`] = config.homepage;\n }\n if (config.docs) {\n process.env[`${prefix}DOCS`] = config.docs;\n }\n if (config.portal) {\n process.env[`${prefix}PORTAL`] = config.portal;\n }\n if (config.licensing) {\n process.env[`${prefix}LICENSING`] = config.licensing;\n }\n if (config.contact) {\n process.env[`${prefix}CONTACT`] = config.contact;\n }\n if (config.support) {\n process.env[`${prefix}SUPPORT`] = config.support;\n }\n if (config.timezone) {\n process.env[`${prefix}TIMEZONE`] = config.timezone;\n process.env.TZ = config.timezone;\n process.env.DEFAULT_TIMEZONE = config.timezone;\n process.env.TIMEZONE = config.timezone;\n }\n if (config.locale) {\n process.env[`${prefix}LOCALE`] = config.locale;\n process.env.DEFAULT_LOCALE = config.locale;\n process.env.LOCALE = config.locale;\n process.env.LANG = config.locale\n ? `${config.locale.replaceAll(\"-\", \"_\")}.UTF-8`\n : \"en_US.UTF-8\";\n }\n if (config.configFile) {\n process.env[`${prefix}WORKSPACE_CONFIG_FILE`] = correctPaths(\n config.configFile\n );\n }\n if (config.workspaceRoot) {\n process.env[`${prefix}WORKSPACE_ROOT`] = correctPaths(config.workspaceRoot);\n process.env.NX_WORKSPACE_ROOT = correctPaths(config.workspaceRoot);\n process.env.NX_WORKSPACE_ROOT_PATH = correctPaths(config.workspaceRoot);\n }\n\n if (config.directories) {\n if (!config.skipCache && config.directories.cache) {\n process.env[`${prefix}CACHE_DIR`] = correctPaths(\n config.directories.cache\n );\n process.env[`${prefix}CACHE_DIRECTORY`] =\n process.env[`${prefix}CACHE_DIR`];\n }\n if (config.directories.data) {\n process.env[`${prefix}DATA_DIR`] = correctPaths(config.directories.data);\n process.env[`${prefix}DATA_DIRECTORY`] = process.env[`${prefix}DATA_DIR`];\n }\n if (config.directories.config) {\n process.env[`${prefix}CONFIG_DIR`] = correctPaths(\n config.directories.config\n );\n process.env[`${prefix}CONFIG_DIRECTORY`] =\n process.env[`${prefix}CONFIG_DIR`];\n }\n if (config.directories.temp) {\n process.env[`${prefix}TEMP_DIR`] = correctPaths(config.directories.temp);\n process.env[`${prefix}TEMP_DIRECTORY`] = process.env[`${prefix}TEMP_DIR`];\n }\n if (config.directories.log) {\n process.env[`${prefix}LOG_DIR`] = correctPaths(config.directories.log);\n process.env[`${prefix}LOG_DIRECTORY`] = process.env[`${prefix}LOG_DIR`];\n }\n if (config.directories.build) {\n process.env[`${prefix}BUILD_DIR`] = correctPaths(\n config.directories.build\n );\n process.env[`${prefix}BUILD_DIRECTORY`] =\n process.env[`${prefix}BUILD_DIR`];\n }\n }\n\n if (config.skipCache !== undefined) {\n process.env[`${prefix}SKIP_CACHE`] = String(config.skipCache);\n if (config.skipCache) {\n process.env.NX_SKIP_NX_CACHE ??= String(config.skipCache);\n process.env.NX_CACHE_PROJECT_GRAPH ??= String(config.skipCache);\n }\n }\n if (config.mode) {\n process.env[`${prefix}MODE`] = config.mode;\n process.env.NODE_ENV = config.mode;\n process.env.ENVIRONMENT = config.mode;\n }\n // if (config.ci) {\n // process.env[`${prefix}CI`] = String(config.ci);\n // process.env.CI = String(config.ci);\n // process.env.CONTINUOUS_INTEGRATION = String(config.ci);\n // }\n\n // Check if the color configuration is set using separate dark and light color\n // palettes or a single multi-theme color palettes\n if (\n (config.colors as ColorsMap)?.base?.light ||\n (config.colors as ColorsMap)?.base?.dark\n ) {\n for (const key of Object.keys(config.colors as ColorsMap)) {\n setThemeColorsEnv(`${prefix}COLOR_${key}_`, config.colors[key]);\n }\n } else {\n setThemeColorsEnv(\n `${prefix}COLOR_`,\n config.colors as MultiThemeColors | SingleThemeColors\n );\n }\n\n if (config.repository) {\n process.env[`${prefix}REPOSITORY`] = config.repository;\n }\n if (config.branch) {\n process.env[`${prefix}BRANCH`] = config.branch;\n }\n if (config.preid) {\n process.env[`${prefix}PRE_ID`] = String(config.preid);\n }\n if (config.registry) {\n if (config.registry.github) {\n process.env[`${prefix}REGISTRY_GITHUB`] = String(config.registry.github);\n }\n if (config.registry.npm) {\n process.env[`${prefix}REGISTRY_NPM`] = String(config.registry.npm);\n }\n if (config.registry.cargo) {\n process.env[`${prefix}REGISTRY_CARGO`] = String(config.registry.cargo);\n }\n if (config.registry.cyclone) {\n process.env[`${prefix}REGISTRY_CYCLONE`] = String(\n config.registry.cyclone\n );\n }\n if (config.registry.container) {\n process.env[`${prefix}REGISTRY_CONTAINER`] = String(\n config.registry.container\n );\n }\n }\n if (config.logLevel) {\n process.env[`${prefix}LOG_LEVEL`] = String(config.logLevel);\n process.env.LOG_LEVEL = String(config.logLevel);\n process.env.NX_VERBOSE_LOGGING = String(\n getLogLevel(config.logLevel) >= LogLevel.DEBUG ? true : false\n );\n process.env.RUST_BACKTRACE =\n getLogLevel(config.logLevel) >= LogLevel.DEBUG ? \"full\" : \"none\";\n }\n if (config.skipConfigLogging !== undefined) {\n process.env[`${prefix}SKIP_CONFIG_LOGGING`] = String(\n config.skipConfigLogging\n );\n }\n\n process.env[`${prefix}WORKSPACE_CONFIG`] = JSON.stringify(config);\n\n for (const key of Object.keys(config.extensions ?? {})) {\n if (config.extensions[key] && Object.keys(config.extensions[key])) {\n setExtensionEnv(key, config.extensions[key]);\n }\n }\n};\n\nconst setThemeColorsEnv = (\n prefix: string,\n config: MultiThemeColors | SingleThemeColors\n) => {\n // Check if the color configuration is set using separate dark and light color\n // palettes or a single multi-theme color palettes\n return (config as MultiThemeColors)?.light?.brand ||\n (config as MultiThemeColors)?.dark?.brand\n ? setMultiThemeColorsEnv(prefix, config as MultiThemeColors)\n : setSingleThemeColorsEnv(prefix, config as SingleThemeColors);\n};\n\nconst setSingleThemeColorsEnv = (prefix: string, config: SingleThemeColors) => {\n if (config.dark) {\n process.env[`${prefix}DARK`] = config.dark;\n }\n if (config.light) {\n process.env[`${prefix}LIGHT`] = config.light;\n }\n if (config.brand) {\n process.env[`${prefix}BRAND`] = config.brand;\n }\n if (config.alternate) {\n process.env[`${prefix}ALTERNATE`] = config.alternate;\n }\n if (config.accent) {\n process.env[`${prefix}ACCENT`] = config.accent;\n }\n if (config.link) {\n process.env[`${prefix}LINK`] = config.link;\n }\n if (config.discovery) {\n process.env[`${prefix}DISCOVERY`] = config.discovery;\n }\n if (config.success) {\n process.env[`${prefix}SUCCESS`] = config.success;\n }\n if (config.info) {\n process.env[`${prefix}INFO`] = config.info;\n }\n if (config.debug) {\n process.env[`${prefix}DEBUG`] = config.debug;\n }\n if (config.warning) {\n process.env[`${prefix}WARNING`] = config.warning;\n }\n if (config.danger) {\n process.env[`${prefix}DANGER`] = config.danger;\n }\n if (config.fatal) {\n process.env[`${prefix}FATAL`] = config.fatal;\n }\n if (config.performance) {\n process.env[`${prefix}PERFORMANCE`] = config.performance;\n }\n if (config.positive) {\n process.env[`${prefix}POSITIVE`] = config.positive;\n }\n if (config.negative) {\n process.env[`${prefix}NEGATIVE`] = config.negative;\n }\n if (config.gradient) {\n for (let i = 0; i < config.gradient.length; i++) {\n process.env[`${prefix}GRADIENT_${i}`] = config.gradient[i];\n }\n }\n};\n\nconst setMultiThemeColorsEnv = (prefix: string, config: MultiThemeColors) => {\n return {\n light: setBaseThemeColorsEnv(`${prefix}LIGHT_`, config.light),\n dark: setBaseThemeColorsEnv(`${prefix}DARK_`, config.dark)\n };\n};\n\nconst setBaseThemeColorsEnv = (\n prefix: string,\n config: DarkThemeColors | LightThemeColors\n) => {\n if (config.foreground) {\n process.env[`${prefix}FOREGROUND`] = config.foreground;\n }\n if (config.background) {\n process.env[`${prefix}BACKGROUND`] = config.background;\n }\n if (config.brand) {\n process.env[`${prefix}BRAND`] = config.brand;\n }\n if (config.alternate) {\n process.env[`${prefix}ALTERNATE`] = config.alternate;\n }\n if (config.accent) {\n process.env[`${prefix}ACCENT`] = config.accent;\n }\n if (config.link) {\n process.env[`${prefix}LINK`] = config.link;\n }\n if (config.discovery) {\n process.env[`${prefix}DISCOVERY`] = config.discovery;\n }\n if (config.success) {\n process.env[`${prefix}SUCCESS`] = config.success;\n }\n if (config.info) {\n process.env[`${prefix}INFO`] = config.info;\n }\n if (config.debug) {\n process.env[`${prefix}DEBUG`] = config.debug;\n }\n if (config.warning) {\n process.env[`${prefix}WARNING`] = config.warning;\n }\n if (config.danger) {\n process.env[`${prefix}DANGER`] = config.danger;\n }\n if (config.fatal) {\n process.env[`${prefix}FATAL`] = config.fatal;\n }\n if (config.performance) {\n process.env[`${prefix}PERFORMANCE`] = config.performance;\n }\n if (config.positive) {\n process.env[`${prefix}POSITIVE`] = config.positive;\n }\n if (config.negative) {\n process.env[`${prefix}NEGATIVE`] = config.negative;\n }\n if (config.gradient) {\n for (let i = 0; i < config.gradient.length; i++) {\n process.env[`${prefix}GRADIENT_${i}`] = config.gradient[i];\n }\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { StormWorkspaceConfig } from \"@storm-software/config\";\nimport { workspaceConfigSchema } from \"@storm-software/config/schema\";\nimport defu from \"defu\";\nimport { existsSync } from \"node:fs\";\nimport * as z from \"zod\";\nimport { ParsePayload } from \"zod/v4/core\";\nimport { getConfigFile } from \"./config-file/get-config-file\";\nimport { getConfigEnv, getExtensionEnv } from \"./env/get-env\";\nimport { setConfigEnv } from \"./env/set-env\";\nimport { formatLogMessage, writeTrace, writeWarning } from \"./logger/console\";\nimport { joinPaths } from \"./utilities\";\nimport { findWorkspaceRoot } from \"./utilities/find-workspace-root\";\nimport {\n applyDefaultConfig,\n getPackageJsonConfig\n} from \"./utilities/get-default-config\";\n\nconst _extension_cache = new WeakMap<{ extensionName: string }, any>();\n\ntype StaticCache = { data: StormWorkspaceConfig; timestamp: number };\nlet _static_cache = undefined as StaticCache | undefined;\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param extensionName - The name of the config extension\n * @param schema - The schema for the config extension\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @param useDefault - Whether to use the default config if no config file is found\n * @returns The config for the current Storm workspace\n */\nexport const createStormWorkspaceConfig = async <\n TExtensionName extends keyof StormWorkspaceConfig[\"extensions\"] =\n keyof StormWorkspaceConfig[\"extensions\"],\n TExtensionConfig = any,\n TExtensionSchema extends z.ZodType = z.ZodType,\n TUseDefault extends boolean | undefined = boolean | undefined,\n TResult = TUseDefault extends true\n ? StormWorkspaceConfig<TExtensionName, TExtensionConfig>\n : StormWorkspaceConfig<TExtensionName, TExtensionConfig> | undefined\n>(\n extensionName?: TExtensionName,\n schema?: TExtensionSchema,\n workspaceRoot?: string,\n skipLogs = false,\n useDefault: TUseDefault = true as TUseDefault\n): Promise<TResult> => {\n let result!: StormWorkspaceConfig<TExtensionName, TExtensionConfig>;\n if (\n !_static_cache?.data ||\n !_static_cache?.timestamp ||\n _static_cache.timestamp < Date.now() - 8000\n ) {\n let _workspaceRoot = workspaceRoot;\n if (!_workspaceRoot) {\n _workspaceRoot = findWorkspaceRoot();\n }\n\n const configEnv = getConfigEnv() as StormWorkspaceConfig & {\n [extensionName in TExtensionName]: TExtensionConfig;\n };\n\n const configFile = await getConfigFile(_workspaceRoot);\n if (!configFile) {\n if (!skipLogs) {\n writeWarning(\n \"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\",\n { logLevel: \"all\" }\n );\n }\n\n if (useDefault === false) {\n return undefined as TResult;\n }\n }\n\n const defaultConfig = await getPackageJsonConfig(_workspaceRoot);\n const configInput = defu(\n configEnv,\n configFile,\n defaultConfig\n ) as StormWorkspaceConfig<TExtensionName, TExtensionConfig>;\n if (!configInput.variant) {\n configInput.variant =\n existsSync(joinPaths(_workspaceRoot, \"nx.json\")) ||\n existsSync(joinPaths(_workspaceRoot, \".nx\")) ||\n existsSync(joinPaths(_workspaceRoot, \"lerna.json\")) ||\n existsSync(joinPaths(_workspaceRoot, \"turbo.json\"))\n ? \"monorepo\"\n : \"minimal\";\n }\n\n try {\n const parseResult = (await Promise.resolve(\n workspaceConfigSchema._zod.parse(\n { value: configInput, issues: [] },\n { async: true }\n )\n )) as ParsePayload<\n StormWorkspaceConfig<TExtensionName, TExtensionConfig>\n >;\n result = applyDefaultConfig(parseResult.value) as StormWorkspaceConfig<\n TExtensionName,\n TExtensionConfig\n >;\n result.workspaceRoot ??= _workspaceRoot;\n } catch (error) {\n throw new Error(\n `Failed to parse Storm Workspace configuration${error?.message ? `: ${error.message}` : \"\"}\n\nPlease ensure your configuration file is valid JSON and matches the expected schema. The current workspace configuration input is: ${formatLogMessage(\n configInput\n )}`,\n {\n cause: error\n }\n );\n }\n } else {\n result = _static_cache.data as StormWorkspaceConfig<\n TExtensionName,\n TExtensionConfig\n >;\n }\n\n if (schema && extensionName) {\n result.extensions = {\n ...result.extensions,\n [extensionName]: createConfigExtension<\n TExtensionName,\n TExtensionConfig,\n TExtensionSchema\n >(extensionName, schema)\n };\n }\n\n _static_cache = {\n timestamp: Date.now(),\n data: result\n };\n return result as TResult;\n};\n\n/**\n * Get the config for a specific Storm config Extension\n *\n * @param extensionName - The name of the config extension\n * @param options - The options for the config extension\n * @returns The config for the specified Storm config extension. If the extension does not exist, `undefined` is returned.\n */\nexport const createConfigExtension = <\n TExtensionName extends keyof StormWorkspaceConfig[\"extensions\"] =\n keyof StormWorkspaceConfig[\"extensions\"],\n TExtensionConfig = any,\n TExtensionSchema extends z.ZodType = z.ZodType\n>(\n extensionName: TExtensionName,\n schema: TExtensionSchema\n): TExtensionConfig => {\n const extension_cache_key = { extensionName };\n if (_extension_cache.has(extension_cache_key)) {\n return _extension_cache.get(extension_cache_key) as TExtensionConfig;\n }\n\n let extension = getExtensionEnv(extensionName);\n if (schema) {\n extension = schema.parse(extension) as TExtensionSchema;\n }\n\n _extension_cache.set(extension_cache_key, extension);\n return extension as TExtensionConfig;\n};\n\n/**\n * Load the config file values for the current Storm workspace into environment variables\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @returns The config for the current Storm workspace, throws an error if the config file could not be loaded\n */\nexport const loadStormWorkspaceConfig = async (\n workspaceRoot?: string,\n skipLogs = false\n): Promise<StormWorkspaceConfig> => {\n const config = await createStormWorkspaceConfig(\n undefined,\n undefined,\n workspaceRoot,\n skipLogs,\n true\n );\n setConfigEnv(config);\n\n if (!skipLogs && !config.skipConfigLogging) {\n writeTrace(\n `⚙️ Using Storm Workspace configuration: \\n${formatLogMessage(config)}`,\n config\n );\n }\n\n return config;\n};\n\n/**\n * Try to load the config file values for the current Storm workspace into environment variables\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @param useDefault - Whether to use the default config if no config file is found\n * @returns The config for the current Storm workspace, or undefined if the config file could not be loaded\n */\nexport const tryLoadStormWorkspaceConfig = async (\n workspaceRoot?: string,\n skipLogs = true,\n useDefault = false\n): Promise<StormWorkspaceConfig | undefined> => {\n try {\n const config = await createStormWorkspaceConfig(\n undefined,\n undefined,\n workspaceRoot,\n skipLogs,\n useDefault\n );\n if (!config) {\n return undefined;\n }\n\n setConfigEnv(config);\n\n if (!skipLogs && !config.skipConfigLogging) {\n writeTrace(\n `⚙️ Using Storm Workspace configuration: \\n${formatLogMessage(config)}`,\n config\n );\n }\n\n return config;\n } catch (error) {\n if (!skipLogs) {\n writeWarning(\n `⚠️ Failed to load Storm Workspace configuration: ${error}`,\n { logLevel: \"all\" }\n );\n }\n return undefined;\n }\n};\n","import { StormWorkspaceConfig } from \"@storm-software/config/types\";\nimport {\n loadStormWorkspaceConfig,\n tryLoadStormWorkspaceConfig\n} from \"./create-storm-config\";\nimport { findWorkspaceRoot } from \"./utilities/find-workspace-root\";\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @returns The config for the current Storm workspace\n */\nexport function getConfig(\n workspaceRoot?: string,\n skipLogs = false\n): Promise<StormWorkspaceConfig> {\n return loadStormWorkspaceConfig(workspaceRoot, skipLogs);\n}\n\nexport type GetWorkspaceConfigOptions = {\n /**\n * The root directory of the workspace\n */\n workspaceRoot?: string;\n\n /**\n * A directory inside the monorepo to start searching from\n */\n cwd?: string;\n\n /**\n * Use the default config if no config file is found\n *\n * @defaultValue true\n */\n useDefault?: boolean;\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param skipLogs - Skip writing logs to the console\n * @param options - Options for getting the workspace config\n * @returns The config for the current Storm workspace, or throws an error if the config file could not be loaded\n */\nexport function getWorkspaceConfig(\n skipLogs = true,\n options: GetWorkspaceConfigOptions = {}\n): Promise<StormWorkspaceConfig> {\n let workspaceRoot = options.workspaceRoot;\n if (!workspaceRoot) {\n workspaceRoot = findWorkspaceRoot(options.cwd);\n }\n\n return getConfig(workspaceRoot, skipLogs);\n}\n\n/**\n * Try to get the config for the current Storm workspace\n *\n * @param skipLogs - Skip writing logs to the console\n * @param options - Options for getting the workspace config\n * @returns The config for the current Storm workspace, or undefined if the config file could not be loaded\n */\nexport async function tryGetWorkspaceConfig(\n skipLogs = true,\n options: GetWorkspaceConfigOptions = {}\n): Promise<StormWorkspaceConfig | undefined> {\n try {\n let workspaceRoot = options.workspaceRoot;\n if (!workspaceRoot) {\n workspaceRoot = findWorkspaceRoot(options.cwd);\n }\n\n return tryLoadStormWorkspaceConfig(\n workspaceRoot,\n skipLogs,\n options.useDefault\n );\n } catch {\n return undefined;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../config-tools/src/types.ts","../../../config-tools/src/utilities/colors.ts","../../../config-tools/src/logger/chalk.ts","../../../config-tools/src/logger/is-unicode-supported.ts","../../../config-tools/src/logger/console-icons.ts","../../../config-tools/src/logger/format-timestamp.ts","../../../config-tools/src/logger/get-log-level.ts","../../../config-tools/src/logger/console.ts","../../../config-tools/src/utilities/process-handler.ts","../../../config/src/constants.ts","../../../config/src/schema.ts","../../../config-tools/src/utilities/correct-paths.ts","../../../config-tools/src/utilities/find-up.ts","../../../config-tools/src/utilities/find-workspace-root.ts","../../../config-tools/src/utilities/get-default-config.ts","../../../config-tools/src/config-file/get-config-file.ts","../../../config-tools/src/env/get-env.ts","../../../config-tools/src/env/set-env.ts","../../../config-tools/src/create-storm-config.ts","../../../config-tools/src/get-config.ts"],"names":["depth","key","existsSync","join","result","defu"],"mappings":"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","file":"chunk-BB4W6BYT.js","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { StormWorkspaceConfig } from \"@storm-software/config\";\n\nexport type LogLevel = 0 | 10 | 20 | 30 | 35 | 40 | 50 | 60 | 70 | 100;\nexport const LogLevel = {\n SILENT: 0 as LogLevel,\n FATAL: 10 as LogLevel,\n ERROR: 20 as LogLevel,\n WARN: 30 as LogLevel,\n SUCCESS: 35 as LogLevel,\n INFO: 40 as LogLevel,\n PERFORMANCE: 50 as LogLevel,\n DEBUG: 60 as LogLevel,\n TRACE: 70 as LogLevel,\n ALL: 100 as LogLevel\n} as const;\n\nexport type LogLevelLabel =\n | \"silent\"\n | \"fatal\"\n | \"error\"\n | \"warn\"\n | \"success\"\n | \"info\"\n | \"performance\"\n | \"debug\"\n | \"trace\"\n | \"all\";\nexport const LogLevelLabel = {\n SILENT: \"silent\" as LogLevelLabel,\n FATAL: \"fatal\" as LogLevelLabel,\n ERROR: \"error\" as LogLevelLabel,\n WARN: \"warn\" as LogLevelLabel,\n SUCCESS: \"success\" as LogLevelLabel,\n INFO: \"info\" as LogLevelLabel,\n PERFORMANCE: \"performance\" as LogLevelLabel,\n DEBUG: \"debug\" as LogLevelLabel,\n TRACE: \"trace\" as LogLevelLabel,\n ALL: \"all\" as LogLevelLabel\n} as const;\n\nexport type Logger = {\n fatal: (message?: any) => void;\n error: (message?: any) => void;\n warning: (message?: any) => void;\n info: (message?: any) => void;\n success: (message?: any) => void;\n performance: (message?: any) => void;\n debug: (message?: any) => void;\n trace: (message?: any) => void;\n getStopwatch: (name: string) => () => void;\n};\n\n// export type LogType =\n// | \"error\"\n// | \"fatal\"\n// | \"ready\"\n// | \"warn\"\n// | \"info\"\n// | \"success\"\n// | \"debug\"\n// | \"trace\"\n// | \"fail\"\n// | \"start\"\n// | \"log\";\n// export const LogType = {\n// ERROR: \"error\" as LogType,\n// FATAL: \"fatal\" as LogType,\n// READY: \"ready\" as LogType,\n// WARN: \"warn\" as LogType,\n// INFO: \"info\" as LogType,\n// SUCCESS: \"success\" as LogType,\n// DEBUG: \"debug\" as LogType,\n// TRACE: \"trace\" as LogType,\n// FAIL: \"fail\" as LogType,\n// START: \"start\" as LogType,\n// LOG: \"log\" as LogType\n// } as const;\n\nexport interface BaseTokenizerOptions {\n workspaceRoot?: string;\n config?: StormWorkspaceConfig;\n}\n\nexport interface ProjectTokenizerOptions extends BaseTokenizerOptions {\n projectRoot?: string;\n projectName?: string;\n sourceRoot?: string;\n}\n\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n","import {\n Colors,\n ColorsMap,\n MultiThemeColors,\n SingleThemeColors,\n StormWorkspaceConfig\n} from \"@storm-software/config/types\";\n\n/**\n * Storm theme config values used for styling various workspace elements\n */\nexport const DEFAULT_COLOR_CONFIG = {\n light: {\n background: \"#fafafa\",\n foreground: \"#1d1e22\",\n brand: \"#1fb2a6\",\n alternate: \"#db2777\",\n discovery: \"#5C4EE5\",\n success: \"#087f5b\",\n info: \"#0550ae\",\n debug: \"#8afafc\",\n warning: \"#e3b341\",\n danger: \"#D8314A\",\n fatal: \"#51070f\",\n performance: \"#13c302\",\n link: \"#3fa6ff\",\n positive: \"#22c55e\",\n negative: \"#dc2626\",\n gradient: [\"#1fb2a6\", \"#db2777\", \"#5C4EE5\"]\n },\n dark: {\n background: \"#1e2124\",\n foreground: \"#cbd5e1\",\n brand: \"#2dd4bf\",\n alternate: \"#db2777\",\n discovery: \"#818cf8\",\n success: \"#10b981\",\n info: \"#58a6ff\",\n debug: \"#8afafc\",\n warning: \"#f3d371\",\n danger: \"#D8314A\",\n fatal: \"#a40e26\",\n performance: \"#80fd74\",\n link: \"#3fa6ff\",\n positive: \"#22c55e\",\n negative: \"#dc2626\",\n gradient: [\"#1fb2a6\", \"#db2777\", \"#818cf8\"]\n }\n} as MultiThemeColors;\n\n/**\n * Get the color configuration from the Storm workspace configuration.\n *\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color configuration, or the default color configuration if not defined.\n */\nexport function getColors(\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): Colors {\n if (\n !config?.colors ||\n typeof config.colors !== \"object\" ||\n (!(config.colors as ColorsMap)[\"dark\"] &&\n (!config.colors[\"base\"] ||\n typeof config.colors !== \"object\" ||\n !config.colors[\"base\"]?.[\"dark\"]))\n ) {\n return DEFAULT_COLOR_CONFIG;\n }\n\n if (config.colors[\"base\"]) {\n if (typeof config.colors[\"base\"][\"dark\"] === \"object\") {\n return config.colors[\"base\"][\"dark\"] as Colors;\n } else if (config.colors[\"base\"][\"dark\"] === \"string\") {\n return config.colors[\"base\"];\n }\n }\n\n if (typeof (config.colors as ColorsMap)[\"dark\"] === \"object\") {\n return config.colors[\"dark\"] as Colors;\n }\n\n return (config.colors ?? DEFAULT_COLOR_CONFIG) as Colors;\n}\n\n/**\n * Get a specific color from the Storm workspace configuration.\n *\n * @param key - The key of the color to retrieve.\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color value for the specified key, or a default value if not defined.\n */\nexport function getColor(\n key:\n | \"background\"\n | \"foreground\"\n | \"brand\"\n | \"discovery\"\n | \"success\"\n | \"info\"\n | \"debug\"\n | \"warning\"\n | \"danger\"\n | \"positive\"\n | \"negative\"\n | \"alternate\"\n | \"accent\"\n | \"link\"\n | \"fatal\",\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): string {\n const colors = getColors(config);\n\n const result =\n (typeof colors[\"dark\"] === \"object\" ? colors[\"dark\"][key] : colors[key]) ||\n DEFAULT_COLOR_CONFIG[\"dark\"][key] ||\n DEFAULT_COLOR_CONFIG[key];\n if (result) {\n return result;\n }\n\n if (key === \"link\" || key === \"debug\") {\n return getColor(\"info\", config);\n } else if (key === \"fatal\") {\n return getColor(\"danger\", config);\n }\n\n return getColor(\"brand\", config);\n}\n\n/**\n * Get a specific color from the Storm workspace configuration.\n *\n * @param key - The key of the color to retrieve.\n * @param config - An optional, partial color configuration for the Storm workspace.\n * @returns The color value for the specified key, or a default value if not defined.\n */\nexport function getGradient(\n config?: Partial<Pick<StormWorkspaceConfig, \"colors\">>\n): string[] | undefined {\n const colors = getColors(config);\n\n const result =\n (typeof colors[\"dark\"] === \"object\"\n ? colors[\"dark\"].gradient\n : (colors as SingleThemeColors).gradient) ||\n DEFAULT_COLOR_CONFIG[\"dark\"].gradient;\n if (result && Array.isArray(result) && result.length > 0) {\n return result;\n }\n\n return undefined;\n}\n","import chalk from \"chalk\";\n\nexport type GetChalkReturn = {\n hex: (_: string) => (message?: string) => string | undefined;\n bgHex: (_: string) => {\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n gray: (message?: string) => string | undefined;\n bold: {\n hex: (_: string) => (message?: string) => string | undefined;\n bgHex: (_: string) => {\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n whiteBright: (message?: string) => string | undefined;\n white: (message?: string) => string | undefined;\n };\n dim: {\n hex: (_: string) => (message?: string) => string | undefined;\n gray: (message?: string) => string | undefined;\n };\n};\n\nconst chalkDefault: GetChalkReturn = {\n hex: (_: string) => (message?: string) => message,\n bgHex: (_: string) => ({\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n }),\n white: (message?: string) => message,\n whiteBright: (message?: string) => message,\n gray: (message?: string) => message,\n bold: {\n hex: (_: string) => (message?: string) => message,\n bgHex: (_: string) => ({\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n }),\n whiteBright: (message?: string) => message,\n white: (message?: string) => message\n },\n dim: {\n hex: (_: string) => (message?: string) => message,\n gray: (message?: string) => message\n }\n};\n\n/**\n * Get the chalk instance\n *\n * @remarks\n * Annoying polyfill to temporarily fix the issue with the `chalk` import\n *\n * @returns The chalk instance\n */\nexport const getChalk = (): GetChalkReturn => {\n let _chalk = chalk as GetChalkReturn;\n if (\n !_chalk?.hex ||\n !_chalk?.bold?.hex ||\n !_chalk?.bgHex ||\n !_chalk?.whiteBright ||\n !_chalk?.white\n ) {\n _chalk = chalkDefault;\n }\n\n return _chalk;\n};\n","export function isUnicodeSupported() {\n if (process.platform !== \"win32\") {\n return process.env.TERM !== \"linux\"; // Linux console (kernel)\n }\n\n return (\n Boolean(process.env.WT_SESSION) || // Windows Terminal\n Boolean(process.env.TERMINUS_SUBLIME) || // Terminus (<0.2.27)\n process.env.ConEmuTask === \"{cmd::Cmder}\" || // ConEmu and cmder\n process.env.TERM_PROGRAM === \"Terminus-Sublime\" ||\n process.env.TERM_PROGRAM === \"vscode\" ||\n process.env.TERM === \"xterm-256color\" ||\n process.env.TERM === \"alacritty\" ||\n process.env.TERM === \"rxvt-unicode\" ||\n process.env.TERM === \"rxvt-unicode-256color\" ||\n process.env.TERMINAL_EMULATOR === \"JetBrains-JediTerm\"\n );\n}\n","import { LogLevelLabel } from \"../types\";\nimport { isUnicodeSupported } from \"./is-unicode-supported\";\n\nconst useIcon = (c: string, fallback: string) =>\n isUnicodeSupported() ? c : fallback;\n\nexport const CONSOLE_ICONS: { [k in LogLevelLabel]?: string } = {\n [LogLevelLabel.ERROR]: useIcon(\"✘\", \"×\"),\n [LogLevelLabel.FATAL]: useIcon(\"🕱\", \"×\"),\n [LogLevelLabel.WARN]: useIcon(\"⚠\", \"‼\"),\n [LogLevelLabel.INFO]: useIcon(\"ℹ\", \"i\"),\n [LogLevelLabel.PERFORMANCE]: useIcon(\"⏱\", \"⏱\"),\n [LogLevelLabel.SUCCESS]: useIcon(\"✔\", \"√\"),\n [LogLevelLabel.DEBUG]: useIcon(\"🛠\", \"D\"),\n [LogLevelLabel.TRACE]: useIcon(\"⚙\", \"T\"),\n [LogLevelLabel.ALL]: useIcon(\"✉\", \"→\")\n};\n\n// start: s(\"◐\", \"o\"),\n","/**\n * Format a timestamp to a human-readable string.\n *\n * @param fullDateTime Whether to include the full date and time in the formatted string (defaults to `false`, which only includes the time)\n * @param date The date to format.\n * @returns The formatted timestamp.\n */\nexport const formatTimestamp = (\n fullDateTime = false,\n date = new Date()\n): string => {\n return fullDateTime\n ? `${date.toLocaleDateString()} ${date.toLocaleTimeString()}`\n : `${date.toLocaleTimeString()}`;\n};\n","import { LogLevel, LogLevelLabel } from \"../types\";\n\n/**\n * Convert the log level label to a log level\n *\n * @param label - The log level label to convert\n * @returns The log level\n */\nexport const getLogLevel = (label?: string): LogLevel => {\n switch (label) {\n case \"all\":\n return LogLevel.ALL;\n case \"trace\":\n return LogLevel.TRACE;\n case \"debug\":\n return LogLevel.DEBUG;\n case \"performance\":\n return LogLevel.PERFORMANCE;\n case \"info\":\n return LogLevel.INFO;\n case \"warn\":\n return LogLevel.WARN;\n case \"error\":\n return LogLevel.ERROR;\n case \"fatal\":\n return LogLevel.FATAL;\n case \"silent\":\n return LogLevel.SILENT;\n default:\n return LogLevel.INFO;\n }\n};\n\n/**\n * Convert the log level to a log level label\n *\n * @param logLevel - The log level to convert\n * @returns The log level label\n */\nexport const getLogLevelLabel = (\n logLevel: number = LogLevel.INFO\n): LogLevelLabel => {\n if (logLevel >= LogLevel.ALL) {\n return LogLevelLabel.ALL;\n }\n if (logLevel >= LogLevel.TRACE) {\n return LogLevelLabel.TRACE;\n }\n if (logLevel >= LogLevel.DEBUG) {\n return LogLevelLabel.DEBUG;\n }\n if (logLevel >= LogLevel.PERFORMANCE) {\n return LogLevelLabel.PERFORMANCE;\n }\n if (logLevel >= LogLevel.INFO) {\n return LogLevelLabel.INFO;\n }\n if (logLevel >= LogLevel.WARN) {\n return LogLevelLabel.WARN;\n }\n if (logLevel >= LogLevel.ERROR) {\n return LogLevelLabel.ERROR;\n }\n if (logLevel >= LogLevel.FATAL) {\n return LogLevelLabel.FATAL;\n }\n if (logLevel <= LogLevel.SILENT) {\n return LogLevelLabel.SILENT;\n }\n return LogLevelLabel.INFO;\n};\n\n/**\n * Check if the log level is verbose\n *\n * @param label - The log level label to check\n * @returns True if the log level is verbose\n */\nexport const isVerbose = (\n label: string | LogLevel = LogLevelLabel.SILENT\n): boolean => {\n const logLevel = typeof label === \"string\" ? getLogLevel(label) : label;\n return logLevel >= LogLevel.DEBUG;\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { Colors, StormWorkspaceConfig } from \"@storm-software/config\";\nimport { formatDistanceToNow } from \"date-fns/formatDistanceToNow\";\nimport { LogLevel, LogLevelLabel } from \"../types\";\nimport { DEFAULT_COLOR_CONFIG, getColor } from \"../utilities/colors\";\nimport { getChalk } from \"./chalk\";\nimport { CONSOLE_ICONS } from \"./console-icons\";\nimport { formatTimestamp } from \"./format-timestamp\";\nimport { getLogLevel } from \"./get-log-level\";\n\nexport interface GetLogFnOptions {\n /**\n * Whether to include the full date and time in the log message (defaults to `false`, which only includes the time)\n *\n * @defaultValue false\n */\n fullDateTime?: boolean;\n\n /**\n * Whether to hide the date and time in the log message (defaults to `false`, which includes the date and time based on the `fullDateTime` option)\n *\n * @defaultValue false\n */\n hideDateTime?: boolean;\n\n /**\n * The color configuration to use for the log message (defaults to the default Storm color configuration)\n */\n chalk?: ReturnType<typeof getChalk>;\n}\n\n/**\n * Get the log function for a log level\n *\n * @param logLevel - The log level\n * @param config - The Storm configuration\n * @returns The log function\n */\nexport const getLogFn = (\n logLevel: number | LogLevel = LogLevel.INFO,\n config: Partial<StormWorkspaceConfig> = {},\n options: GetLogFnOptions = {}\n): ((message?: any) => void) => {\n const {\n chalk: _chalk = getChalk(),\n fullDateTime = false,\n hideDateTime = false\n } = options;\n\n const colors =\n !(config.colors as Colors)?.dark &&\n !config.colors?.[\"base\"] &&\n !config.colors?.[\"base\"]?.dark\n ? DEFAULT_COLOR_CONFIG\n : (config.colors as Colors)?.dark &&\n typeof (config.colors as Colors).dark === \"string\"\n ? config.colors\n : config.colors?.[\"base\"]?.dark &&\n typeof config.colors[\"base\"].dark === \"string\"\n ? config.colors[\"base\"].dark\n : config.colors?.[\"base\"]\n ? config.colors?.[\"base\"]\n : DEFAULT_COLOR_CONFIG;\n\n // (config.colors?.dark && typeof config.colors.dark === \"string\"\n // ? config.colors\n // : typeof config?.colors?.dark === \"object\" ?) ?? DEFAULT_COLOR_CONFIG;\n\n const configLogLevel = (config.logLevel ||\n process.env.STORM_LOG_LEVEL ||\n LogLevelLabel.INFO) as LogLevelLabel;\n\n if (\n logLevel > getLogLevel(configLogLevel) ||\n logLevel <= LogLevel.SILENT ||\n getLogLevel(configLogLevel) <= LogLevel.SILENT\n ) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return (_: string) => {\n /* noop */\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.FATAL >= logLevel) {\n return (message?: any) => {\n console.error(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.fatal ?? DEFAULT_COLOR_CONFIG.dark.fatal)(\n `[${CONSOLE_ICONS[LogLevelLabel.FATAL]} Fatal] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.ERROR >= logLevel) {\n return (message?: any) => {\n console.error(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.danger ?? DEFAULT_COLOR_CONFIG.dark.danger)(\n `[${CONSOLE_ICONS[LogLevelLabel.ERROR]} Error] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.WARN >= logLevel) {\n return (message?: any) => {\n console.warn(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.warning ?? DEFAULT_COLOR_CONFIG.dark.warning)(\n `[${CONSOLE_ICONS[LogLevelLabel.WARN]} Warn] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.SUCCESS >= logLevel) {\n return (message?: any) => {\n console.info(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.success ?? DEFAULT_COLOR_CONFIG.dark.success)(\n `[${CONSOLE_ICONS[LogLevelLabel.SUCCESS]} Success] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.INFO >= logLevel) {\n return (message?: any) => {\n console.info(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.info ?? DEFAULT_COLOR_CONFIG.dark.info)(\n `[${CONSOLE_ICONS[LogLevelLabel.INFO]} Info] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.PERFORMANCE >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.performance ?? DEFAULT_COLOR_CONFIG.dark.performance)(\n `[${CONSOLE_ICONS[LogLevelLabel.PERFORMANCE]} Performance] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.DEBUG >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.debug ?? DEFAULT_COLOR_CONFIG.dark.debug)(\n `[${CONSOLE_ICONS[LogLevelLabel.DEBUG]} Debug] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n if (typeof logLevel === \"number\" && LogLevel.TRACE >= logLevel) {\n return (message?: any) => {\n console.debug(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(\"#bbbbbb\")(\n `[${CONSOLE_ICONS[LogLevelLabel.TRACE]} Trace] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n }\n\n return (message?: any) => {\n console.log(\n `\n${\n hideDateTime ? \"\" : `${_chalk.gray(formatTimestamp(fullDateTime))} `\n}${_chalk.hex(colors.brand ?? DEFAULT_COLOR_CONFIG.dark.brand)(\n `[${CONSOLE_ICONS[LogLevelLabel.ALL]} System] `\n )}${_chalk.bold.whiteBright(formatLogMessage(message))}\n`\n );\n };\n};\n\n/**\n * Write a message to the console at the `fatal` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeFatal = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.FATAL, config)(message);\n\n/**\n * Write a message to the console at the `error` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeError = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.ERROR, config)(message);\n\n/**\n * Write a message to the console at the `warning` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeWarning = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.WARN, config)(message);\n\n/**\n * Write a message to the console at the `info` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeInfo = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.INFO, config)(message);\n\n/**\n * Write a message to the console at the `success` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeSuccess = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.SUCCESS, config)(message);\n\n/**\n * Write a message to the console at the `performance` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writePerformance = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.PERFORMANCE, config)(message);\n\n/**\n * Write a message to the console at the `debug` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeDebug = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.DEBUG, config)(message);\n\n/**\n * Write a message to the console at the `trace` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeTrace = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.TRACE, config)(message);\n\n/**\n * Write a message to the console at the `all` log level\n *\n * @param message - The message to write\n * @param config - The Storm configuration\n */\nexport const writeSystem = (\n message?: any,\n config?: Partial<StormWorkspaceConfig>\n) => getLogFn(LogLevel.ALL, config)(message);\n\n/**\n * Get a stopwatch function\n *\n * @param name - The name of the process\n * @returns The stopwatch function\n */\nexport const getStopwatch = (name: string) => {\n const start = new Date();\n return () => {\n writePerformance(\n `The${name ? ` ${name}` : \"\"} process took ${formatDistanceToNow(start, {\n includeSeconds: true\n })} to complete`\n );\n };\n};\n\nconst MAX_DEPTH = 10;\n\nexport type FormatLogMessageOptions = {\n prefix?: string;\n skip?: string[];\n sort?: boolean;\n};\n\n/**\n * Format a log message for output to the console, handling different types of messages (e.g. strings, objects, arrays) and applying formatting options such as prefixing and skipping certain keys in objects.\n *\n * @param message - The message to format\n * @param options - Formatting options\n * @param depth - The current depth of recursion\n * @returns The formatted log message\n */\nexport const formatLogMessage = (\n message?: any,\n options: FormatLogMessageOptions = {},\n depth = 0\n): string => {\n if (depth > MAX_DEPTH) {\n return \"<max depth>\";\n }\n\n const prefix = options.prefix ?? \"\";\n const skip = options.skip ?? [];\n const sort = options.sort ?? true;\n\n return typeof message === \"undefined\" || message === null\n ? \"<empty>\"\n : typeof message === \"string\"\n ? !message\n ? \"<empty string>\"\n : message\n : Array.isArray(message)\n ? `\\n${message\n .sort(\n sort\n ? (a, b) =>\n !a && !b\n ? 0\n : !a\n ? 1\n : !b\n ? -1\n : String(a).localeCompare(String(b))\n : undefined\n )\n .map(\n (item, index) =>\n ` ${prefix}> #${index} = ${formatLogMessage(\n item,\n { prefix: `${prefix}--`, skip, sort },\n depth + 1\n )}`\n )\n .join(\"\\n\")}`\n : typeof message === \"object\" && message\n ? `\\n${Object.keys(message)\n .filter(\n key =>\n typeof key !== \"string\" ||\n !skip\n .map(k => k.toLowerCase().trim())\n .includes(key.toLowerCase().trim())\n )\n .sort(\n sort\n ? (a, b) =>\n !a && !b\n ? 0\n : !a\n ? 1\n : !b\n ? -1\n : String(a).localeCompare(String(b))\n : undefined\n )\n .map(\n key =>\n ` ${prefix}> ${key} = ${\n _isFunction(message[key])\n ? \"<function>\"\n : typeof message[key] === \"object\" && message[key]\n ? Object.keys(message[key]).filter(\n key =>\n typeof key !== \"string\" ||\n !skip\n .map(k => k.toLowerCase().trim())\n .includes(key.toLowerCase().trim())\n ).length === 0\n ? \"{}\"\n : formatLogMessage(\n message[key],\n { prefix: `${prefix}--`, skip, sort },\n depth + 1\n )\n : message[key]\n }`\n )\n .join(\"\\n\")}`\n : String(message);\n};\n\nconst _isFunction = (\n value: unknown\n): value is ((params?: unknown) => unknown) & ((param?: any) => any) => {\n try {\n return (\n value instanceof Function ||\n typeof value === \"function\" ||\n !!(value?.constructor && (value as any)?.call && (value as any)?.apply)\n );\n } catch {\n return false;\n }\n};\n\n/**\n * Get the brand icon for the console\n *\n * @param config - The Storm configuration\n * @param _chalk - The chalk instance\n * @returns The brand icon\n */\nexport const brandIcon = (\n config: Partial<StormWorkspaceConfig> = {},\n _chalk: ReturnType<typeof getChalk> = getChalk()\n) => _chalk.hex(getColor(\"brand\", config))(\"🗲\");\n","import type { StormWorkspaceConfig } from \"@storm-software/config\";\nimport {\n writeError,\n writeFatal,\n writeSuccess,\n writeTrace\n} from \"../logger/console\";\n\nexport const exitWithError = (config?: Partial<StormWorkspaceConfig>) => {\n writeFatal(\"Exiting script with an error status...\", config);\n process.exit(1);\n};\n\nexport const exitWithSuccess = (config?: Partial<StormWorkspaceConfig>) => {\n writeSuccess(\"Script completed successfully. Exiting...\", config);\n process.exit(0);\n};\n\nexport const handleProcess = (config?: Partial<StormWorkspaceConfig>) => {\n writeTrace(\n `Using the following arguments to process the script: ${process.argv.join(\", \")}`,\n config\n );\n\n process.on(\"unhandledRejection\", error => {\n writeError(\n `An Unhandled Rejection occurred while running the program: ${\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n error?.message\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Unknown error\"\n } \\nStacktrace: ${\n error && typeof error === \"object\" && \"stack\" in error && error?.stack\n ? error.stack\n : \"\"\n }`,\n config\n );\n exitWithError(config);\n });\n process.on(\"uncaughtException\", error => {\n writeError(\n `An Uncaught Exception occurred while running the program: ${\n error &&\n typeof error === \"object\" &&\n \"message\" in error &&\n error?.message\n ? error.message\n : typeof error === \"string\"\n ? error\n : \"Unknown error\"\n } \\nStacktrace: ${\n error && typeof error === \"object\" && \"stack\" in error && error?.stack\n ? error.stack\n : \"\"\n }`,\n config\n );\n exitWithError(config);\n });\n\n process.on(\"SIGTERM\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n process.on(\"SIGINT\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n process.on(\"SIGHUP\", (signal: NodeJS.Signals) => {\n writeError(`The program terminated with signal code: ${signal}`, config);\n exitWithError(config);\n });\n};\n","export const STORM_DEFAULT_DOCS = \"https://docs.stormsoftware.com\";\nexport const STORM_DEFAULT_HOMEPAGE = \"https://stormsoftware.com\";\nexport const STORM_DEFAULT_CONTACT = \"https://stormsoftware.com/contact\";\nexport const STORM_DEFAULT_SUPPORT = \"https://stormsoftware.com/support\";\nexport const STORM_DEFAULT_LICENSING = \"https://stormsoftware.com/license\";\nexport const STORM_DEFAULT_LICENSE = \"Apache-2.0\";\nexport const STORM_DEFAULT_RELEASE_BANNER =\n \"https://public.storm-cdn.com/storm-software/media/banner-1280x320.gif\";\nexport const STORM_DEFAULT_SOCIAL_TWITTER = \"StormSoftwareHQ\";\nexport const STORM_DEFAULT_SOCIAL_DISCORD = \"https://discord.gg/MQ6YVzakM5\";\nexport const STORM_DEFAULT_SOCIAL_TELEGRAM = \"https://t.me/storm_software\";\nexport const STORM_DEFAULT_SOCIAL_SLACK =\n \"https://join.slack.com/t/storm-software/shared_invite/zt-2gsmk04hs-i6yhK_r6urq0dkZYAwq2pA\";\nexport const STORM_DEFAULT_SOCIAL_MEDIUM = \"https://medium.com/storm-software\";\nexport const STORM_DEFAULT_SOCIAL_GITHUB = \"https://github.com/storm-software\";\n\nexport const STORM_DEFAULT_RELEASE_FOOTER = `\nStorm Software is an open source software development organization with the mission is to make software development more accessible. Our ideal future is one where anyone can create software without years of prior development experience serving as a barrier to entry. We hope to achieve this via LLMs, Generative AI, and intuitive, high-level data modeling/programming languages.\n\nJoin us on [Discord](${STORM_DEFAULT_SOCIAL_DISCORD}) to chat with the team, receive release notifications, ask questions, and get involved.\n\nIf this sounds interesting, and you would like to help us in creating the next generation of development tools, please reach out on our [website](${STORM_DEFAULT_CONTACT}) or join our [Slack](${STORM_DEFAULT_SOCIAL_SLACK}) channel!\n`;\n\nexport const STORM_DEFAULT_ERROR_CODES_FILE = \"tools/errors/codes.json\";\n\nexport const STORM_DEFAULT_BANNER_ALT = \"The workspace's banner image\";\n\nexport const COLOR_KEYS = [\n \"dark\",\n \"light\",\n \"base\",\n \"brand\",\n \"alternate\",\n \"accent\",\n \"link\",\n \"success\",\n \"discovery\",\n \"info\",\n \"warning\",\n \"danger\",\n \"fatal\",\n \"performance\",\n \"positive\",\n \"negative\"\n];\n","import * as z from \"zod/v4/mini\";\nimport {\n STORM_DEFAULT_BANNER_ALT,\n STORM_DEFAULT_ERROR_CODES_FILE\n} from \"./constants\";\n\nexport const schemaRegistry = z.registry<{ description: string }>();\n\nconst colorSchema = z\n .string()\n .check(\n z.length(7),\n z.toLowerCase(),\n z.regex(/^#([0-9a-f]{3}){1,2}$/i),\n z.trim()\n );\nschemaRegistry.add(colorSchema, {\n description: \"A base schema for describing the format of colors\"\n});\n\nexport const darkColorSchema = z._default(colorSchema, \"#1e2124\");\nschemaRegistry.add(darkColorSchema, {\n description: \"The dark background color of the workspace\"\n});\n\nexport const lightColorSchema = z._default(colorSchema, \"#cbd5e1\");\nschemaRegistry.add(lightColorSchema, {\n description: \"The light background color of the workspace\"\n});\n\nexport const brandColorSchema = z._default(colorSchema, \"#1fb2a6\");\nschemaRegistry.add(brandColorSchema, {\n description: \"The primary brand specific color of the workspace\"\n});\n\nexport const alternateColorSchema = z.optional(colorSchema);\nschemaRegistry.add(alternateColorSchema, {\n description: \"The alternate brand specific color of the workspace\"\n});\n\nexport const accentColorSchema = z.optional(colorSchema);\nschemaRegistry.add(accentColorSchema, {\n description: \"The secondary brand specific color of the workspace\"\n});\n\nexport const linkColorSchema = z._default(colorSchema, \"#3fa6ff\");\nschemaRegistry.add(linkColorSchema, {\n description: \"The color used to display hyperlink text\"\n});\n\nexport const discoveryColorSchema = z._default(colorSchema, \"#818cf8\");\nschemaRegistry.add(discoveryColorSchema, {\n description: \"The second brand specific color of the workspace\"\n});\n\nexport const successColorSchema = z._default(colorSchema, \"#45b27e\");\nschemaRegistry.add(successColorSchema, {\n description: \"The success color of the workspace\"\n});\n\nexport const infoColorSchema = z._default(colorSchema, \"#38bdf8\");\nschemaRegistry.add(infoColorSchema, {\n description: \"The informational color of the workspace\"\n});\n\nexport const debugColorSchema = z._default(colorSchema, \"#8afafc\");\nschemaRegistry.add(debugColorSchema, {\n description: \"The debug color of the workspace\"\n});\n\nexport const warningColorSchema = z._default(colorSchema, \"#f3d371\");\nschemaRegistry.add(warningColorSchema, {\n description: \"The warning color of the workspace\"\n});\n\nexport const dangerColorSchema = z._default(colorSchema, \"#d8314a\");\nschemaRegistry.add(dangerColorSchema, {\n description: \"The danger color of the workspace\"\n});\n\nexport const fatalColorSchema = z.optional(colorSchema);\nschemaRegistry.add(fatalColorSchema, {\n description: \"The fatal color of the workspace\"\n});\n\nexport const performanceColorSchema = z._default(colorSchema, \"#80fd74\");\nschemaRegistry.add(performanceColorSchema, {\n description: \"The performance color of the workspace\"\n});\n\nexport const positiveColorSchema = z._default(colorSchema, \"#4ade80\");\nschemaRegistry.add(positiveColorSchema, {\n description: \"The positive number color of the workspace\"\n});\n\nexport const negativeColorSchema = z._default(colorSchema, \"#ef4444\");\nschemaRegistry.add(negativeColorSchema, {\n description: \"The negative number color of the workspace\"\n});\n\nexport const gradientStopsSchema = z.optional(z.array(colorSchema));\nschemaRegistry.add(gradientStopsSchema, {\n description:\n \"The color stops for the base gradient color pattern used in the workspace\"\n});\n\nexport const darkColorsSchema = z.object({\n foreground: lightColorSchema,\n background: darkColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nexport const lightColorsSchema = z.object({\n foreground: darkColorSchema,\n background: lightColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nexport const multiColorsSchema = z.object({\n dark: darkColorsSchema,\n light: lightColorsSchema\n});\n\nexport const singleColorsSchema = z.object({\n dark: darkColorSchema,\n light: lightColorSchema,\n brand: brandColorSchema,\n alternate: alternateColorSchema,\n accent: accentColorSchema,\n link: linkColorSchema,\n discovery: discoveryColorSchema,\n success: successColorSchema,\n info: infoColorSchema,\n debug: debugColorSchema,\n warning: warningColorSchema,\n danger: dangerColorSchema,\n fatal: fatalColorSchema,\n performance: performanceColorSchema,\n positive: positiveColorSchema,\n negative: negativeColorSchema,\n gradient: gradientStopsSchema\n});\n\nconst registryUrlConfigSchema = z.optional(z.url());\nschemaRegistry.add(registryUrlConfigSchema, {\n description: \"A remote registry URL used to publish distributable packages\"\n});\n\nexport const registrySchema = z._default(\n z.object({\n github: registryUrlConfigSchema,\n npm: registryUrlConfigSchema,\n cargo: registryUrlConfigSchema,\n cyclone: registryUrlConfigSchema,\n container: registryUrlConfigSchema\n }),\n {}\n);\nschemaRegistry.add(registrySchema, {\n description: \"A list of remote registry URLs used by Storm Software\"\n});\n\n/**\n * Storm theme color config values used for styling various workspace elements\n */\nexport const colorsSchema = z.union([singleColorsSchema, multiColorsSchema]);\nschemaRegistry.add(colorsSchema, {\n description: \"Colors used for various workspace elements\"\n});\n\nexport const themeColorsSchema = z.record(\n z.union([z.union([z.literal(\"base\"), z.string()]), z.string()]),\n colorsSchema\n);\nschemaRegistry.add(themeColorsSchema, {\n description:\n \"Storm theme config values used for styling various package elements\"\n});\n\nexport const extendsSchema = z.optional(\n z.union([z.string().check(z.trim()), z.array(z.string().check(z.trim()))])\n);\nschemaRegistry.add(extendsSchema, {\n description:\n \"The path to a base config file to use as a configuration preset file. Documentation can be found at https://github.com/unjs/c12#extending-configuration.\"\n});\n\nconst workspaceBotNameSchema = z.string().check(z.trim());\nschemaRegistry.add(workspaceBotNameSchema, {\n description:\n \"The workspace bot user's name (this is the bot that will be used to perform various tasks)\"\n});\n\nconst workspaceBotEmailSchema = z.string().check(z.trim());\nschemaRegistry.add(workspaceBotEmailSchema, {\n description: \"The email of the workspace bot\"\n});\n\nexport const workspaceBotSchema = z.object({\n name: workspaceBotNameSchema,\n email: workspaceBotEmailSchema\n});\nschemaRegistry.add(workspaceBotSchema, {\n description:\n \"The workspace's bot user's config used to automated various operations tasks\"\n});\n\nexport const workspaceReleaseBannerUrlSchema = z.optional(\n z.string().check(z.trim(), z.url())\n);\nschemaRegistry.add(workspaceReleaseBannerUrlSchema, {\n description: \"A URL to a banner image used to display the workspace's release\"\n});\n\nexport const workspaceReleaseBannerAltSchema = z._default(\n z.string().check(z.trim()),\n STORM_DEFAULT_BANNER_ALT\n);\nschemaRegistry.add(workspaceReleaseBannerAltSchema, {\n description: \"The alt text for the workspace's release banner image\"\n});\n\nexport const workspaceReleaseBannerSchema = z.object({\n url: workspaceReleaseBannerUrlSchema,\n alt: workspaceReleaseBannerAltSchema\n});\nschemaRegistry.add(workspaceReleaseBannerSchema, {\n description: \"The workspace's banner image used during the release process\"\n});\n\nexport const workspaceReleaseHeaderSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceReleaseHeaderSchema, {\n description:\n \"A header message appended to the start of the workspace's release notes\"\n});\n\nexport const workspaceReleaseFooterSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceReleaseFooterSchema, {\n description:\n \"A footer message appended to the end of the workspace's release notes\"\n});\n\nexport const workspaceReleaseSchema = z.object({\n banner: z.union([\n workspaceReleaseBannerSchema,\n z.string().check(z.trim(), z.url())\n ]),\n header: workspaceReleaseHeaderSchema,\n footer: workspaceReleaseFooterSchema\n});\nschemaRegistry.add(workspaceReleaseSchema, {\n description: \"The workspace's release config used during the release process\"\n});\n\nexport const workspaceSocialsTwitterSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsTwitterSchema, {\n description: \"A Twitter/X account associated with the organization/project\"\n});\n\nexport const workspaceSocialsDiscordSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsDiscordSchema, {\n description: \"A Discord account associated with the organization/project\"\n});\n\nexport const workspaceSocialsTelegramSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsTelegramSchema, {\n description: \"A Telegram account associated with the organization/project\"\n});\n\nexport const workspaceSocialsSlackSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsSlackSchema, {\n description: \"A Slack account associated with the organization/project\"\n});\n\nexport const workspaceSocialsMediumSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsMediumSchema, {\n description: \"A Medium account associated with the organization/project\"\n});\n\nexport const workspaceSocialsGithubSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceSocialsGithubSchema, {\n description: \"A GitHub account associated with the organization/project\"\n});\n\nexport const workspaceSocialsSchema = z.object({\n twitter: workspaceSocialsTwitterSchema,\n discord: workspaceSocialsDiscordSchema,\n telegram: workspaceSocialsTelegramSchema,\n slack: workspaceSocialsSlackSchema,\n medium: workspaceSocialsMediumSchema,\n github: workspaceSocialsGithubSchema\n});\nschemaRegistry.add(workspaceSocialsSchema, {\n description:\n \"The workspace's account config used to store various social media links\"\n});\n\nexport const workspaceDirectoryCacheSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryCacheSchema, {\n description: \"The directory used to store the environment's cached file data\"\n});\n\nexport const workspaceDirectoryDataSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryDataSchema, {\n description: \"The directory used to store the environment's data files\"\n});\n\nexport const workspaceDirectoryConfigSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryConfigSchema, {\n description:\n \"The directory used to store the environment's configuration files\"\n});\n\nexport const workspaceDirectoryTempSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryTempSchema, {\n description: \"The directory used to store the environment's temp files\"\n});\n\nexport const workspaceDirectoryLogSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(workspaceDirectoryLogSchema, {\n description: \"The directory used to store the environment's log files\"\n});\n\nexport const workspaceDirectoryBuildSchema = z._default(\n z.string().check(z.trim()),\n \"dist\"\n);\nschemaRegistry.add(workspaceDirectoryBuildSchema, {\n description:\n \"The directory used to store the workspace's distributable files after a build (relative to the workspace root)\"\n});\n\nexport const workspaceDirectorySchema = z.object({\n cache: workspaceDirectoryCacheSchema,\n data: workspaceDirectoryDataSchema,\n config: workspaceDirectoryConfigSchema,\n temp: workspaceDirectoryTempSchema,\n log: workspaceDirectoryLogSchema,\n build: workspaceDirectoryBuildSchema\n});\nschemaRegistry.add(workspaceDirectorySchema, {\n description:\n \"Various directories used by the workspace to store data, cache, and configuration files\"\n});\n\nexport const variantSchema = z._default(\n z.enum([\"minimal\", \"monorepo\"]),\n \"monorepo\"\n);\nschemaRegistry.add(variantSchema, {\n description:\n \"The variant of the workspace. This can be used to enable or disable certain features or configurations.\"\n});\n\nexport const errorCodesFileSchema = z._default(\n z.string().check(z.trim()),\n STORM_DEFAULT_ERROR_CODES_FILE\n);\nschemaRegistry.add(errorCodesFileSchema, {\n description: \"The path to the workspace's error codes JSON file\"\n});\n\nexport const errorUrlSchema = z.optional(z.url());\nschemaRegistry.add(errorUrlSchema, {\n description:\n \"A URL to a page that looks up the workspace's error messages given a specific error code\"\n});\n\nexport const errorSchema = z.object({\n codesFile: errorCodesFileSchema,\n url: errorUrlSchema\n});\nschemaRegistry.add(errorSchema, {\n description:\n \"The workspace's error config used when creating error details during a system error\"\n});\n\nexport const organizationNameSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(organizationNameSchema, {\n description: \"The name of the organization\"\n});\n\nexport const organizationDescriptionSchema = z.optional(\n z.string().check(z.trim())\n);\nschemaRegistry.add(organizationDescriptionSchema, {\n description: \"A description of the organization\"\n});\n\nexport const organizationLogoSchema = z.optional(z.url());\nschemaRegistry.add(organizationLogoSchema, {\n description: \"A URL to the organization's logo image\"\n});\n\nexport const organizationIconSchema = z.optional(z.url());\nschemaRegistry.add(organizationIconSchema, {\n description: \"A URL to the organization's icon image\"\n});\n\nexport const organizationUrlSchema = z.optional(z.url());\nschemaRegistry.add(organizationUrlSchema, {\n description:\n \"A URL to a page that provides more information about the organization\"\n});\n\nexport const organizationSchema = z.object({\n name: organizationNameSchema,\n description: organizationDescriptionSchema,\n logo: organizationLogoSchema,\n icon: organizationIconSchema,\n url: organizationUrlSchema\n});\nschemaRegistry.add(organizationSchema, {\n description: \"The workspace's organization details\"\n});\n\nconst schemaNameSchema = z._default(\n z.string().check(z.trim(), z.toLowerCase()),\n \"https://public.storm-cdn.com/schemas/storm-workspace.schema.json\"\n);\nschemaRegistry.add(schemaNameSchema, {\n description:\n \"The URL or file path to the JSON schema file that describes the Storm configuration file\"\n});\n\nconst nameSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(nameSchema, {\n description:\n \"The name of the workspace/project/service/package/scope using this configuration\"\n});\n\nconst namespaceSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(namespaceSchema, {\n description:\n \"The namespace of the workspace/project/service/package/scope using this configuration\"\n});\n\nconst orgSchema = z.union([\n organizationSchema,\n z.string().check(z.trim(), z.toLowerCase())\n]);\nschemaRegistry.add(orgSchema, {\n description:\n \"The organization of the workspace. This can be a string or an object containing the organization's details\"\n});\n\nconst repositorySchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(repositorySchema, {\n description: \"The repo URL of the workspace (i.e. the GitHub repository URL)\"\n});\n\n/**\n * Storm Workspace config values used during various dev-ops processes. It represents the config of the entire monorepo.\n */\nexport const licenseSchema = z._default(\n z.string().check(z.trim()),\n \"Apache-2.0\"\n);\nschemaRegistry.add(licenseSchema, {\n description: \"The license type of the package\"\n});\n\nexport const homepageSchema = z.optional(z.url());\nschemaRegistry.add(homepageSchema, {\n description: \"The homepage of the workspace\"\n});\n\nexport const docsSchema = z.optional(z.url());\nschemaRegistry.add(docsSchema, {\n description: \"The documentation site for the workspace\"\n});\n\nexport const portalSchema = z.optional(z.url());\nschemaRegistry.add(portalSchema, {\n description: \"The development portal site for the workspace\"\n});\n\nexport const licensingSchema = z.optional(z.url());\nschemaRegistry.add(licensingSchema, {\n description: \"The licensing site for the workspace\"\n});\n\nexport const contactSchema = z.optional(z.url());\nschemaRegistry.add(contactSchema, {\n description: \"The contact site for the workspace\"\n});\n\nexport const supportSchema = z.optional(z.url());\nschemaRegistry.add(supportSchema, {\n description:\n \"The support site for the workspace. If not provided, this is defaulted to the `contact` config value\"\n});\n\nexport const branchSchema = z._default(\n z.string().check(z.trim(), z.toLowerCase()),\n \"main\"\n);\nschemaRegistry.add(branchSchema, {\n description: \"The branch of the workspace\"\n});\n\nexport const preidSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(preidSchema, {\n description: \"A tag specifying the version pre-release identifier\"\n});\n\nexport const ownerSchema = z.optional(\n z.string().check(z.trim(), z.toLowerCase())\n);\nschemaRegistry.add(ownerSchema, {\n description: \"The owner of the package\"\n});\n\nexport const modeSchema = z._default(\n z\n .enum([\"development\", \"test\", \"production\"])\n .check(z.trim(), z.toLowerCase()),\n \"production\"\n);\nschemaRegistry.add(modeSchema, {\n description: \"The current runtime environment mode for the package\"\n});\n\nexport const workspaceRootSchema = z.string().check(z.trim(), z.toLowerCase());\nschemaRegistry.add(workspaceRootSchema, {\n description: \"The root directory of the workspace\"\n});\n\nexport const skipCacheSchema = z._default(z.boolean(), false);\nschemaRegistry.add(skipCacheSchema, {\n description: \"Should all known types of workspace caching be skipped?\"\n});\n\nexport const packageManagerSchema = z._default(\n z.enum([\"npm\", \"yarn\", \"pnpm\", \"bun\"]),\n \"npm\"\n);\nschemaRegistry.add(packageManagerSchema, {\n description:\n \"The JavaScript/TypeScript package manager used by the repository\"\n});\n\nexport const timezoneSchema = z._default(\n z.string().check(z.trim()),\n \"America/New_York\"\n);\nschemaRegistry.add(timezoneSchema, {\n description: \"The default timezone of the workspace\"\n});\n\nexport const localeSchema = z._default(z.string().check(z.trim()), \"en-US\");\nschemaRegistry.add(localeSchema, {\n description: \"The default locale of the workspace\"\n});\n\nexport const logLevelSchema = z._default(\n z.enum([\n \"silent\",\n \"fatal\",\n \"error\",\n \"warn\",\n \"success\",\n \"info\",\n \"performance\",\n \"debug\",\n \"trace\",\n \"all\"\n ]),\n \"info\"\n);\nschemaRegistry.add(logLevelSchema, {\n description:\n \"The log level used to filter out lower priority log messages. If not provided, this is defaulted using the `environment` config value (if `environment` is set to `production` then `level` is `error`, else `level` is `debug`).\"\n});\n\nexport const skipConfigLoggingSchema = z._default(z.boolean(), true);\nschemaRegistry.add(skipConfigLoggingSchema, {\n description:\n \"Should the logging of the current Storm Workspace configuration be skipped?\"\n});\n\nexport const configFileSchema = z._default(\n z.nullable(z.string().check(z.trim())),\n null\n);\nschemaRegistry.add(configFileSchema, {\n description:\n \"The filepath of the Storm config. When this field is null, no config file was found in the current workspace.\"\n});\n\nexport const extensionsSchema = z._default(z.record(z.string(), z.any()), {});\nschemaRegistry.add(extensionsSchema, {\n description: \"Configuration of each used extension\"\n});\n\n/**\n * Storm Workspace config values used during various dev-ops processes. It represents the config of the entire monorepo.\n */\nexport const workspaceConfigSchema = z.object({\n $schema: schemaNameSchema,\n extends: extendsSchema,\n name: nameSchema,\n variant: variantSchema,\n namespace: namespaceSchema,\n organization: orgSchema,\n repository: repositorySchema,\n license: licenseSchema,\n homepage: homepageSchema,\n docs: docsSchema,\n portal: portalSchema,\n licensing: licensingSchema,\n contact: contactSchema,\n support: supportSchema,\n branch: branchSchema,\n preid: preidSchema,\n owner: ownerSchema,\n bot: workspaceBotSchema,\n release: workspaceReleaseSchema,\n socials: workspaceSocialsSchema,\n error: errorSchema,\n mode: modeSchema,\n workspaceRoot: workspaceRootSchema,\n skipCache: skipCacheSchema,\n directories: workspaceDirectorySchema,\n packageManager: packageManagerSchema,\n timezone: timezoneSchema,\n locale: localeSchema,\n logLevel: logLevelSchema,\n skipConfigLogging: skipConfigLoggingSchema,\n registry: registrySchema,\n configFile: configFileSchema,\n colors: z.union([colorsSchema, themeColorsSchema]),\n extensions: extensionsSchema\n});\nschemaRegistry.add(extensionsSchema, {\n description:\n \"Storm Workspace config values used during various dev-ops processes. This type is a combination of the StormPackageConfig and StormProject types. It represents the config of the entire monorepo.\"\n});\n","/*\nBased on Node.js implementation:\n - Forked from: https://github.com/nodejs/node/blob/4b030d057375e58d2e99182f6ef7aa70f6ebcf99/lib/path.js\n - Latest: https://github.com/nodejs/node/blob/main/lib/path.js\nCheck LICENSE file\n\n*/\n\nimport type path from \"node:path\";\n\nconst _DRIVE_LETTER_START_RE = /^[A-Za-z]:\\//;\n\n// Util to normalize windows paths to posix\nexport function normalizeWindowsPath(input = \"\") {\n if (!input) {\n return input;\n }\n return input\n .replace(/\\\\/g, \"/\")\n .replace(_DRIVE_LETTER_START_RE, r => r.toUpperCase());\n}\n\nconst _UNC_REGEX = /^[/\\\\]{2}/;\nconst _IS_ABSOLUTE_RE = /^[/\\\\](?![/\\\\])|^[/\\\\]{2}(?!\\.)|^[A-Za-z]:[/\\\\]/;\nconst _DRIVE_LETTER_RE = /^[A-Za-z]:$/;\nconst _ROOT_FOLDER_RE = /^\\/([A-Za-z]:)?$/;\nconst _EXTNAME_RE = /.(\\.[^./]+|\\.)$/;\nconst _PATH_ROOT_RE = /^[/\\\\]|^[a-zA-Z]:[/\\\\]/;\n\n/**\n * Constant for path separator.\n *\n * Always equals to `\"/\"`.\n */\nexport const sep = \"/\";\n\nexport const correctPaths = function (path?: string) {\n if (!path || path.length === 0) {\n return \".\";\n }\n\n // Normalize windows argument\n path = normalizeWindowsPath(path);\n\n const isUNCPath = path?.match(_UNC_REGEX);\n const isPathAbsolute = isAbsolute(path);\n const trailingSeparator = path[path.length - 1] === \"/\";\n\n // Normalize the path\n path = normalizeString(path, !isPathAbsolute);\n\n if (path.length === 0) {\n if (isPathAbsolute) {\n return \"/\";\n }\n return trailingSeparator ? \"./\" : \".\";\n }\n if (trailingSeparator) {\n path += \"/\";\n }\n if (_DRIVE_LETTER_RE.test(path)) {\n path += \"/\";\n }\n\n if (isUNCPath) {\n if (!isPathAbsolute) {\n return `//./${path}`;\n }\n\n return `//${path}`;\n }\n\n return isPathAbsolute && !isAbsolute(path) ? `/${path}` : path;\n};\n\nexport const joinPaths: typeof path.join = function (...segments) {\n let path = \"\";\n\n for (const seg of segments) {\n if (!seg) {\n continue;\n }\n if (path.length > 0) {\n const pathTrailing = path[path.length - 1] === \"/\";\n const segLeading = seg[0] === \"/\";\n const both = pathTrailing && segLeading;\n if (both) {\n path += seg.slice(1);\n } else {\n path += pathTrailing || segLeading ? seg : `/${seg}`;\n }\n } else {\n path += seg;\n }\n }\n\n return correctPaths(path);\n};\n\nfunction cwd() {\n if (typeof process !== \"undefined\" && typeof process.cwd === \"function\") {\n return process.cwd().replace(/\\\\/g, \"/\");\n }\n return \"/\";\n}\n\nexport const resolve: typeof path.resolve = function (...arguments_) {\n // Normalize windows arguments\n arguments_ = arguments_.map(argument => normalizeWindowsPath(argument));\n\n let resolvedPath = \"\";\n let resolvedAbsolute = false;\n\n for (\n let index = arguments_.length - 1;\n index >= -1 && !resolvedAbsolute;\n index--\n ) {\n const path = index >= 0 ? arguments_[index] : cwd();\n\n // Skip empty entries\n if (!path || path.length === 0) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = isAbsolute(path);\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute);\n\n if (resolvedAbsolute && !isAbsolute(resolvedPath)) {\n return `/${resolvedPath}`;\n }\n\n return resolvedPath.length > 0 ? resolvedPath : \".\";\n};\n\n/**\n * Resolves a string path, resolving '.' and '.' segments and allowing paths above the root.\n *\n * @param path - The path to normalise.\n * @param allowAboveRoot - Whether to allow the resulting path to be above the root directory.\n * @returns the normalised path string.\n */\nexport function normalizeString(path: string, allowAboveRoot: boolean) {\n let res = \"\";\n let lastSegmentLength = 0;\n let lastSlash = -1;\n let dots = 0;\n let char: string | null = null;\n for (let index = 0; index <= path.length; ++index) {\n if (index < path.length) {\n // casted because we know it exists thanks to the length check\n char = path[index] as string;\n } else if (char === \"/\") {\n break;\n } else {\n char = \"/\";\n }\n if (char === \"/\") {\n if (lastSlash === index - 1 || dots === 1) {\n // NOOP\n } else if (dots === 2) {\n if (\n res.length < 2 ||\n lastSegmentLength !== 2 ||\n res[res.length - 1] !== \".\" ||\n res[res.length - 2] !== \".\"\n ) {\n if (res.length > 2) {\n const lastSlashIndex = res.lastIndexOf(\"/\");\n if (lastSlashIndex === -1) {\n res = \"\";\n lastSegmentLength = 0;\n } else {\n res = res.slice(0, lastSlashIndex);\n lastSegmentLength = res.length - 1 - res.lastIndexOf(\"/\");\n }\n lastSlash = index;\n dots = 0;\n continue;\n } else if (res.length > 0) {\n res = \"\";\n lastSegmentLength = 0;\n lastSlash = index;\n dots = 0;\n continue;\n }\n }\n if (allowAboveRoot) {\n res += res.length > 0 ? \"/..\" : \"..\";\n lastSegmentLength = 2;\n }\n } else {\n if (res.length > 0) {\n res += `/${path.slice(lastSlash + 1, index)}`;\n } else {\n res = path.slice(lastSlash + 1, index);\n }\n lastSegmentLength = index - lastSlash - 1;\n }\n lastSlash = index;\n dots = 0;\n } else if (char === \".\" && dots !== -1) {\n ++dots;\n } else {\n dots = -1;\n }\n }\n return res;\n}\n\nexport const isAbsolute: typeof path.isAbsolute = function (p) {\n return _IS_ABSOLUTE_RE.test(p);\n};\n\nexport const toNamespacedPath: typeof path.toNamespacedPath = function (p) {\n return normalizeWindowsPath(p);\n};\n\nexport const extname: typeof path.extname = function (p) {\n if (p === \"..\") return \"\";\n const match = _EXTNAME_RE.exec(normalizeWindowsPath(p));\n return (match && match[1]) || \"\";\n};\n\nexport const relative: typeof path.relative = function (from, to) {\n // we cast these because `split` will always be at least one string\n const _from = resolve(from).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\") as [\n string,\n ...string[]\n ];\n const _to = resolve(to).replace(_ROOT_FOLDER_RE, \"$1\").split(\"/\") as [\n string,\n ...string[]\n ];\n\n // Different windows drive letters\n if (_to[0][1] === \":\" && _from[0][1] === \":\" && _from[0] !== _to[0]) {\n return _to.join(\"/\");\n }\n\n const _fromCopy = [..._from];\n for (const segment of _fromCopy) {\n if (_to[0] !== segment) {\n break;\n }\n _from.shift();\n _to.shift();\n }\n return [..._from.map(() => \"..\"), ..._to].join(\"/\");\n};\n\nexport const dirname: typeof path.dirname = function (p) {\n const segments = normalizeWindowsPath(p)\n .replace(/\\/$/, \"\")\n .split(\"/\")\n .slice(0, -1);\n if (segments.length === 1 && _DRIVE_LETTER_RE.test(segments[0] as string)) {\n segments[0] += \"/\";\n }\n return segments.join(\"/\") || (isAbsolute(p) ? \"/\" : \".\");\n};\n\nexport const format: typeof path.format = function (p) {\n const ext = p.ext ? (p.ext.startsWith(\".\") ? p.ext : `.${p.ext}`) : \"\";\n const segments = [p.root, p.dir, p.base ?? (p.name ?? \"\") + ext].filter(\n Boolean\n ) as string[];\n return normalizeWindowsPath(\n p.root ? resolve(...segments) : segments.join(\"/\")\n );\n};\n\nexport const basename: typeof path.basename = function (p, extension) {\n const segments = normalizeWindowsPath(p).split(\"/\");\n\n // default to empty string\n let lastSegment = \"\";\n for (let i = segments.length - 1; i >= 0; i--) {\n const val = segments[i];\n if (val) {\n lastSegment = val;\n break;\n }\n }\n\n return extension && lastSegment.endsWith(extension)\n ? lastSegment.slice(0, -extension.length)\n : lastSegment;\n};\n\nexport const parse: typeof path.parse = function (p) {\n // The root of the path such as '/' or 'c:\\'\n const root = _PATH_ROOT_RE.exec(p)?.[0]?.replace(/\\\\/g, \"/\") || \"\";\n const base = basename(p);\n const extension = extname(base);\n return {\n root,\n dir: dirname(p),\n base,\n ext: extension,\n name: base.slice(0, base.length - extension.length)\n };\n};\n","import { existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst MAX_PATH_SEARCH_DEPTH = 30;\nlet depth = 0;\n\n/**\n * Gets the nearest \"node_modules\" folder by walking up from start path.\n */\nexport function findFolderUp(\n startPath: string,\n endFileNames: string[] = [],\n endDirectoryNames: string[] = []\n): string | undefined {\n const _startPath = startPath ?? process.cwd();\n\n if (\n endDirectoryNames.some(endDirName =>\n existsSync(join(_startPath, endDirName))\n )\n ) {\n return _startPath;\n }\n\n if (\n endFileNames.some(endFileName => existsSync(join(_startPath, endFileName)))\n ) {\n return _startPath;\n }\n\n if (_startPath !== \"/\" && depth++ < MAX_PATH_SEARCH_DEPTH) {\n const parent = join(_startPath, \"..\");\n return findFolderUp(parent, endFileNames, endDirectoryNames);\n }\n return undefined;\n}\n","import { correctPaths } from \"./correct-paths\";\nimport { findFolderUp } from \"./find-up\";\n\nconst rootFiles = [\n \"storm-workspace.json\",\n \"storm-workspace.yaml\",\n \"storm-workspace.yml\",\n \"storm-workspace.js\",\n \"storm-workspace.ts\",\n \".storm-workspace.json\",\n \".storm-workspace.yaml\",\n \".storm-workspace.yml\",\n \".storm-workspace.js\",\n \".storm-workspace.ts\",\n \"lerna.json\",\n \"nx.json\",\n \"turbo.json\",\n \"npm-workspace.json\",\n \"yarn-workspace.json\",\n \"pnpm-workspace.json\",\n \"npm-workspace.yaml\",\n \"yarn-workspace.yaml\",\n \"pnpm-workspace.yaml\",\n \"npm-workspace.yml\",\n \"yarn-workspace.yml\",\n \"pnpm-workspace.yml\",\n \"npm-lock.json\",\n \"yarn-lock.json\",\n \"pnpm-lock.json\",\n \"npm-lock.yaml\",\n \"yarn-lock.yaml\",\n \"pnpm-lock.yaml\",\n \"npm-lock.yml\",\n \"yarn-lock.yml\",\n \"pnpm-lock.yml\",\n \"bun.lockb\",\n \"bun.lock\",\n \"bunfig.toml\"\n];\n\nconst rootDirectories = [\n \".storm-workspace\",\n \".nx\",\n \".git\",\n \".github\",\n \".vscode\",\n \".verdaccio\"\n];\n\n/**\n * Find the monorepo root directory, searching upwards from `path`.\n *\n * @param pathInsideMonorepo - The path inside the monorepo to start searching from\n * @returns The monorepo root directory\n */\nexport function findWorkspaceRootSafe(\n pathInsideMonorepo?: string\n): string | undefined {\n if (process.env.STORM_WORKSPACE_ROOT || process.env.NX_WORKSPACE_ROOT_PATH) {\n return correctPaths(\n process.env.STORM_WORKSPACE_ROOT ?? process.env.NX_WORKSPACE_ROOT_PATH\n );\n }\n\n return correctPaths(\n findFolderUp(\n pathInsideMonorepo ?? process.cwd(),\n rootFiles,\n rootDirectories\n )\n );\n}\n\n/**\n * Find the monorepo root directory, searching upwards from `path`.\n *\n * @param pathInsideMonorepo - The path inside the monorepo to start searching from\n * @returns The monorepo root directory\n */\nexport function findWorkspaceRoot(pathInsideMonorepo?: string): string {\n const result = findWorkspaceRootSafe(pathInsideMonorepo);\n if (!result) {\n throw new Error(\n `Cannot find workspace root upwards from known path. Files search list includes: \\n${rootFiles.join(\n \"\\n\"\n )}\\nPath: ${pathInsideMonorepo ? pathInsideMonorepo : process.cwd()}`\n );\n }\n\n return result;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n STORM_DEFAULT_ERROR_CODES_FILE,\n STORM_DEFAULT_LICENSE,\n type StormWorkspaceConfig\n} from \"@storm-software/config\";\nimport { existsSync } from \"node:fs\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { joinPaths } from \"./correct-paths\";\nimport { findWorkspaceRoot } from \"./find-workspace-root\";\n\n/**\n * Get the default Storm config values used during various dev-ops processes\n *\n * @returns The default Storm config values\n */\nexport async function getPackageJsonConfig(\n root?: string\n): Promise<\n Pick<\n StormWorkspaceConfig,\n \"workspaceRoot\" | \"license\" | \"homepage\" | \"support\"\n > &\n Partial<Pick<StormWorkspaceConfig, \"name\" | \"namespace\" | \"repository\">>\n> {\n let license = STORM_DEFAULT_LICENSE;\n let homepage: string | undefined = undefined;\n let support: string | undefined = undefined;\n\n let name: string | undefined = undefined;\n let namespace: string | undefined = undefined;\n let repository: string | undefined = undefined;\n\n const workspaceRoot = findWorkspaceRoot(root);\n if (existsSync(join(workspaceRoot, \"package.json\"))) {\n const file = await readFile(\n joinPaths(workspaceRoot, \"package.json\"),\n \"utf8\"\n );\n if (file) {\n const packageJson = JSON.parse(file);\n if (packageJson.name) {\n name = packageJson.name;\n }\n if (packageJson.namespace) {\n namespace = packageJson.namespace;\n }\n if (packageJson.repository) {\n if (typeof packageJson.repository === \"string\") {\n repository = packageJson.repository;\n } else if (packageJson.repository.url) {\n repository = packageJson.repository.url;\n }\n }\n if (packageJson.license) {\n license = packageJson.license;\n }\n if (packageJson.homepage) {\n homepage = packageJson.homepage;\n }\n\n if (packageJson.bugs) {\n if (typeof packageJson.bugs === \"string\") {\n support = packageJson.bugs;\n } else if (packageJson.bugs.url) {\n support = packageJson.bugs.url;\n }\n }\n }\n }\n\n return {\n workspaceRoot,\n name,\n namespace,\n repository,\n license,\n homepage,\n support\n };\n}\n\n/**\n * Apply default config values to the given config object\n *\n * @param config - The config object to apply defaults to\n * @returns The config object with defaults applied\n */\nexport function applyDefaultConfig(\n config: Partial<StormWorkspaceConfig>\n): Partial<StormWorkspaceConfig> {\n if (!config.support && config.contact) {\n config.support = config.contact;\n }\n\n if (!config.contact && config.support) {\n config.contact = config.support;\n }\n\n if (config.homepage) {\n if (!config.docs) {\n config.docs = `${config.homepage}/docs`;\n }\n\n if (!config.license) {\n config.license = `${config.homepage}/license`;\n }\n\n if (!config.support) {\n config.support = `${config.homepage}/support`;\n }\n if (!config.contact) {\n config.contact = `${config.homepage}/contact`;\n }\n\n if (!config.error?.codesFile || !config?.error?.url) {\n config.error ??= { codesFile: STORM_DEFAULT_ERROR_CODES_FILE };\n if (config.homepage) {\n config.error.url ??= `${config.homepage}/errors`;\n }\n }\n }\n\n return config;\n}\n","import type { StormWorkspaceConfigInput } from \"@storm-software/config\";\nimport { loadConfig, ResolvedConfig, type LoadConfigOptions } from \"c12\";\nimport defu from \"defu\";\nimport { writeTrace } from \"../logger/console\";\nimport { joinPaths } from \"../utilities\";\nimport { findWorkspaceRoot } from \"../utilities/find-workspace-root\";\n\n// let _cosmiconfig: any = undefined;\n// let defaultExplorer: PublicExplorer | undefined;\n\n/**\n * Get the config file for the current Storm workspace\n *\n * @param fileName - The name of the config file to search for\n * @param filePath - The path to search for the config file in\n * @returns The config file for the current Storm workspace\n */\nexport const getConfigFileByName = async (\n fileName: string,\n filePath?: string,\n options: LoadConfigOptions<Partial<StormWorkspaceConfigInput>> = {}\n): Promise<ResolvedConfig<Partial<StormWorkspaceConfigInput>>> => {\n const workspacePath = filePath || findWorkspaceRoot(filePath);\n\n const configs = await Promise.all([\n loadConfig<Partial<StormWorkspaceConfigInput>>({\n cwd: workspacePath,\n packageJson: true,\n name: fileName,\n envName: fileName?.toUpperCase(),\n jitiOptions: {\n debug: false,\n fsCache:\n process.env.STORM_SKIP_CACHE === \"true\"\n ? false\n : joinPaths(\n process.env.STORM_CACHE_DIR || \"node_modules/.cache/storm\",\n \"jiti\"\n )\n },\n ...options\n }),\n loadConfig<Partial<StormWorkspaceConfigInput>>({\n cwd: workspacePath,\n packageJson: true,\n name: fileName,\n envName: fileName?.toUpperCase(),\n jitiOptions: {\n debug: false,\n fsCache:\n process.env.STORM_SKIP_CACHE === \"true\"\n ? false\n : joinPaths(\n process.env.STORM_CACHE_DIR || \"node_modules/.cache/storm\",\n \"jiti\"\n )\n },\n configFile: fileName,\n ...options\n })\n ]);\n\n return defu(configs[0] ?? {}, configs[1] ?? {});\n};\n\n/**\n * Get the config file for the current Storm workspace\n *\n * @returns The config file for the current Storm workspace\n */\nexport const getConfigFile = async (\n filePath?: string,\n additionalFileNames: string[] = []\n): Promise<Partial<StormWorkspaceConfigInput> | undefined> => {\n const workspacePath = filePath ? filePath : findWorkspaceRoot(filePath);\n\n const result = await getConfigFileByName(\"storm-workspace\", workspacePath);\n\n let config = result.config;\n const configFile = result.configFile;\n if (\n config &&\n configFile &&\n Object.keys(config).length > 0 &&\n !config.skipConfigLogging\n ) {\n writeTrace(\n `Found Storm configuration file \"${\n configFile.includes(`${workspacePath}/`)\n ? configFile.replace(`${workspacePath}/`, \"\")\n : configFile\n }\" at \"${workspacePath}\"`,\n {\n logLevel: \"all\"\n }\n );\n }\n\n if (additionalFileNames && additionalFileNames.length > 0) {\n const results = await Promise.all(\n additionalFileNames.map(fileName =>\n getConfigFileByName(fileName, workspacePath)\n )\n );\n for (const result of results) {\n if (\n result?.config &&\n result?.configFile &&\n Object.keys(result.config).length > 0\n ) {\n if (!config.skipConfigLogging && !result.config.skipConfigLogging) {\n writeTrace(\n `Found alternative configuration file \"${\n result.configFile.includes(`${workspacePath}/`)\n ? result.configFile.replace(`${workspacePath}/`, \"\")\n : result.configFile\n }\" at \"${workspacePath}\"`,\n {\n logLevel: \"all\"\n }\n );\n }\n\n config = defu(result.config ?? {}, config ?? {});\n }\n }\n }\n\n if (!config || Object.keys(config).length === 0) {\n return undefined;\n }\n\n config.configFile = configFile;\n\n return config;\n};\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport {\n type ColorsInput,\n type DarkThemeColorsInput,\n type LightThemeColorsInput,\n type MultiThemeColorsInput,\n type SingleThemeColorsInput,\n type StormWorkspaceConfig,\n COLOR_KEYS,\n STORM_DEFAULT_DOCS,\n STORM_DEFAULT_HOMEPAGE,\n STORM_DEFAULT_LICENSING,\n VariantInput\n} from \"@storm-software/config\";\nimport { getLogLevelLabel } from \"../logger/get-log-level\";\nimport type { DeepPartial, LogLevelLabel } from \"../types\";\nimport { correctPaths } from \"../utilities/correct-paths\";\n\n/**\n * Get the config for an extension module of Storm workspace from environment variables\n *\n * @param extensionName - The name of the extension module\n * @returns The config for the specified Storm extension module. If the module does not exist, `undefined` is returned.\n */\nexport const getExtensionEnv = <\n TConfig extends Record<string, any> = Record<string, any>\n>(\n extensionName: string\n): TConfig | undefined => {\n const prefix = `STORM_EXTENSION_${extensionName.toUpperCase()}_`;\n return Object.keys(process.env)\n .filter(key => key.startsWith(prefix))\n .reduce((ret: Record<string, any>, key: string) => {\n const name = key\n .replace(prefix, \"\")\n .split(\"_\")\n .map(i =>\n i.length > 0\n ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1)\n : \"\"\n )\n .join(\"\");\n if (name) {\n ret[name] = process.env[key];\n }\n\n return ret;\n }, {}) as TConfig;\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @returns The config for the current Storm workspace from environment variables\n */\nexport const getConfigEnv = (): DeepPartial<StormWorkspaceConfig> => {\n const prefix = \"STORM_\";\n\n let config: DeepPartial<StormWorkspaceConfig> = {\n extends: process.env[`${prefix}EXTENDS`] || undefined,\n name: process.env[`${prefix}NAME`] || undefined,\n variant: (process.env[`${prefix}VARIANT`] as VariantInput) || undefined,\n namespace: process.env[`${prefix}NAMESPACE`] || undefined,\n owner: process.env[`${prefix}OWNER`] || undefined,\n bot: {\n name: process.env[`${prefix}BOT_NAME`] || undefined,\n email: process.env[`${prefix}BOT_EMAIL`] || undefined\n },\n release: {\n banner: {\n url: process.env[`${prefix}RELEASE_BANNER_URL`] || undefined,\n alt: (process.env[`${prefix}RELEASE_BANNER_ALT`] || undefined) as string\n },\n header: process.env[`${prefix}RELEASE_HEADER`] || undefined,\n footer: process.env[`${prefix}RELEASE_FOOTER`] || undefined\n },\n error: {\n codesFile: process.env[`${prefix}ERROR_CODES_FILE`] || undefined,\n url: process.env[`${prefix}ERROR_URL`] || undefined\n },\n socials: {\n twitter: process.env[`${prefix}SOCIAL_TWITTER`] || undefined,\n discord: process.env[`${prefix}SOCIAL_DISCORD`] || undefined,\n telegram: process.env[`${prefix}SOCIAL_TELEGRAM`] || undefined,\n slack: process.env[`${prefix}SOCIAL_SLACK`] || undefined,\n medium: process.env[`${prefix}SOCIAL_MEDIUM`] || undefined,\n github: process.env[`${prefix}SOCIAL_GITHUB`] || undefined\n },\n organization:\n process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`]\n ? process.env[`${prefix}ORG_DESCRIPTION`] ||\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] ||\n process.env[`${prefix}ORG_URL`] ||\n process.env[`${prefix}ORGANIZATION_URL`] ||\n process.env[`${prefix}ORG_LOGO`] ||\n process.env[`${prefix}ORGANIZATION_LOGO`]\n ? {\n name: (process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`])!,\n description:\n process.env[`${prefix}ORG_DESCRIPTION`] ||\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] ||\n undefined,\n url:\n process.env[`${prefix}ORG_URL`] ||\n process.env[`${prefix}ORGANIZATION_URL`] ||\n undefined,\n logo:\n process.env[`${prefix}ORG_LOGO`] ||\n process.env[`${prefix}ORGANIZATION_LOGO`] ||\n undefined,\n icon:\n process.env[`${prefix}ORG_ICON`] ||\n process.env[`${prefix}ORGANIZATION_ICON`] ||\n undefined\n }\n : process.env[`${prefix}ORG`] ||\n process.env[`${prefix}ORGANIZATION`] ||\n process.env[`${prefix}ORG_NAME`] ||\n process.env[`${prefix}ORGANIZATION_NAME`]\n : undefined,\n packageManager:\n (process.env[\n `${prefix}PACKAGE_MANAGER`\n ] as StormWorkspaceConfig[\"packageManager\"]) || undefined,\n license: process.env[`${prefix}LICENSE`] || undefined,\n homepage: process.env[`${prefix}HOMEPAGE`] || undefined,\n docs: process.env[`${prefix}DOCS`] || undefined,\n portal: process.env[`${prefix}PORTAL`] || undefined,\n licensing: process.env[`${prefix}LICENSING`] || undefined,\n contact: process.env[`${prefix}CONTACT`] || undefined,\n support: process.env[`${prefix}SUPPORT`] || undefined,\n timezone: process.env[`${prefix}TIMEZONE`] || process.env.TZ || undefined,\n locale: process.env[`${prefix}LOCALE`] || process.env.LOCALE || undefined,\n configFile: process.env[`${prefix}WORKSPACE_CONFIG_FILE`]\n ? correctPaths(process.env[`${prefix}WORKSPACE_CONFIG_FILE`])\n : undefined,\n workspaceRoot: process.env[`${prefix}WORKSPACE_ROOT`]\n ? correctPaths(process.env[`${prefix}WORKSPACE_ROOT`])\n : undefined,\n directories: {\n cache: process.env[`${prefix}CACHE_DIR`]\n ? correctPaths(process.env[`${prefix}CACHE_DIR`])\n : process.env[`${prefix}CACHE_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}CACHE_DIRECTORY`])\n : undefined,\n data: process.env[`${prefix}DATA_DIR`]\n ? correctPaths(process.env[`${prefix}DATA_DIR`])\n : process.env[`${prefix}DATA_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}DATA_DIRECTORY`])\n : undefined,\n config: process.env[`${prefix}CONFIG_DIR`]\n ? correctPaths(process.env[`${prefix}CONFIG_DIR`])\n : process.env[`${prefix}CONFIG_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}CONFIG_DIRECTORY`])\n : undefined,\n temp: process.env[`${prefix}TEMP_DIR`]\n ? correctPaths(process.env[`${prefix}TEMP_DIR`])\n : process.env[`${prefix}TEMP_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}TEMP_DIRECTORY`])\n : undefined,\n log: process.env[`${prefix}LOG_DIR`]\n ? correctPaths(process.env[`${prefix}LOG_DIR`])\n : process.env[`${prefix}LOG_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}LOG_DIRECTORY`])\n : undefined,\n build: process.env[`${prefix}BUILD_DIR`]\n ? correctPaths(process.env[`${prefix}BUILD_DIR`])\n : process.env[`${prefix}BUILD_DIRECTORY`]\n ? correctPaths(process.env[`${prefix}BUILD_DIRECTORY`])\n : undefined\n },\n skipCache:\n process.env[`${prefix}SKIP_CACHE`] !== undefined\n ? Boolean(process.env[`${prefix}SKIP_CACHE`])\n : undefined,\n mode:\n ((process.env[`${prefix}MODE`] ??\n process.env.NODE_ENV ??\n process.env.ENVIRONMENT) as StormWorkspaceConfig[\"mode\"]) || undefined,\n // ci:\n // process.env[`${prefix}CI`] !== undefined\n // ? Boolean(\n // process.env[`${prefix}CI`] ??\n // process.env.CI ??\n // process.env.CONTINUOUS_INTEGRATION\n // )\n // : undefined,\n\n repository: process.env[`${prefix}REPOSITORY`] || undefined,\n branch: process.env[`${prefix}BRANCH`] || undefined,\n preid: process.env[`${prefix}PRE_ID`] || undefined,\n registry: {\n github: process.env[`${prefix}REGISTRY_GITHUB`] || undefined,\n npm: process.env[`${prefix}REGISTRY_NPM`] || undefined,\n cargo: process.env[`${prefix}REGISTRY_CARGO`] || undefined,\n cyclone: process.env[`${prefix}REGISTRY_CYCLONE`] || undefined,\n container: process.env[`${prefix}REGISTRY_CONTAINER`] || undefined\n },\n logLevel:\n process.env[`${prefix}LOG_LEVEL`] !== null &&\n process.env[`${prefix}LOG_LEVEL`] !== undefined\n ? process.env[`${prefix}LOG_LEVEL`] &&\n Number.isSafeInteger(\n Number.parseInt(process.env[`${prefix}LOG_LEVEL`] as string)\n )\n ? getLogLevelLabel(\n Number.parseInt(process.env[`${prefix}LOG_LEVEL`] as string)\n )\n : (process.env[`${prefix}LOG_LEVEL`] as LogLevelLabel)\n : undefined,\n skipConfigLogging:\n process.env[`${prefix}SKIP_CONFIG_LOGGING`] !== undefined\n ? Boolean(process.env[`${prefix}SKIP_CONFIG_LOGGING`])\n : undefined\n };\n\n const themeNames = Object.keys(process.env).filter(\n envKey =>\n envKey.startsWith(`${prefix}COLOR_`) &&\n COLOR_KEYS.every(\n colorKey =>\n !envKey.startsWith(`${prefix}COLOR_LIGHT_${colorKey}`) &&\n !envKey.startsWith(`${prefix}COLOR_DARK_${colorKey}`)\n )\n );\n\n config.colors =\n themeNames.length > 0\n ? themeNames.reduce(\n (ret: Record<string, ColorsInput>, themeName: string) => {\n ret[themeName] = getThemeColorsEnv(prefix, themeName);\n\n return ret;\n },\n {}\n )\n : getThemeColorsEnv(prefix);\n\n if (config.docs === STORM_DEFAULT_DOCS) {\n if (config.homepage === STORM_DEFAULT_HOMEPAGE) {\n config.docs = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/docs`;\n } else {\n config.docs = `${config.homepage}/docs`;\n }\n }\n\n if (config.licensing === STORM_DEFAULT_LICENSING) {\n if (config.homepage === STORM_DEFAULT_HOMEPAGE) {\n config.licensing = `${STORM_DEFAULT_HOMEPAGE}/projects/${config.name}/licensing`;\n } else {\n config.licensing = `${config.homepage}/docs`;\n }\n }\n\n const serializedConfig = process.env[`${prefix}WORKSPACE_CONFIG`];\n if (serializedConfig) {\n const parsed = JSON.parse(serializedConfig);\n config = {\n ...config,\n ...parsed,\n colors: { ...config.colors, ...parsed.colors },\n extensions: { ...config.extensions, ...parsed.extensions }\n };\n }\n\n return config;\n\n /*const extensionPrefix = `${prefix}EXTENSION_`;\n return Object.keys(process.env)\n .filter((key) => key.startsWith(extensionPrefix))\n .reduce((ret: StormWorkspaceConfig, key: string) => {\n const extensionName = key\n .substring(prefix.length, key.indexOf(\"_\", prefix.length))\n .split(\"_\")\n .map((i) => (i.length > 0 ? i.trim().charAt(0).toUpperCase() + i.trim().slice(1) : \"\"))\n .join(\"\");\n if (extensionName) {\n ret.extensions[extensionName] = getExtensionEnv(extensionName);\n }\n\n return ret;\n }, config);*/\n};\n\nconst getThemeColorsEnv = (prefix: string, theme?: string): ColorsInput => {\n const themeName =\n `COLOR_${theme && theme !== \"base\" ? `${theme}_` : \"\"}`.toUpperCase();\n\n return process.env[`${prefix}${themeName}LIGHT_BRAND`] ||\n process.env[`${prefix}${themeName}DARK_BRAND`]\n ? getMultiThemeColorsEnv(prefix + themeName)\n : getSingleThemeColorsEnv(prefix + themeName);\n};\n\nconst getSingleThemeColorsEnv = (prefix: string): SingleThemeColorsInput => {\n const gradient = [] as string[];\n if (\n process.env[`${prefix}GRADIENT_START`] &&\n process.env[`${prefix}GRADIENT_END`]\n ) {\n gradient.push(\n process.env[`${prefix}GRADIENT_START`]!,\n process.env[`${prefix}GRADIENT_END`]!\n );\n } else if (\n process.env[`${prefix}GRADIENT_0`] ||\n process.env[`${prefix}GRADIENT_1`]\n ) {\n let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;\n while (process.env[`${prefix}GRADIENT_${index}`]) {\n gradient.push(process.env[`${prefix}GRADIENT_${index}`]!);\n index++;\n }\n }\n\n return {\n dark: process.env[`${prefix}DARK`],\n light: process.env[`${prefix}LIGHT`],\n brand: process.env[`${prefix}BRAND`],\n alternate: process.env[`${prefix}ALTERNATE`],\n accent: process.env[`${prefix}ACCENT`],\n link: process.env[`${prefix}LINK`],\n discovery: process.env[`${prefix}DISCOVERY`],\n success: process.env[`${prefix}SUCCESS`],\n info: process.env[`${prefix}INFO`],\n debug: process.env[`${prefix}DEBUG`],\n warning: process.env[`${prefix}WARNING`],\n danger: process.env[`${prefix}DANGER`],\n fatal: process.env[`${prefix}FATAL`],\n performance: process.env[`${prefix}PERFORMANCE`],\n positive: process.env[`${prefix}POSITIVE`],\n negative: process.env[`${prefix}NEGATIVE`],\n gradient\n };\n};\n\nconst getMultiThemeColorsEnv = (prefix: string): MultiThemeColorsInput => {\n return {\n light: getBaseThemeColorsEnv<\"light\", typeof prefix>(`${prefix}_LIGHT_`),\n dark: getBaseThemeColorsEnv<\"dark\", typeof prefix>(`${prefix}_DARK_`)\n };\n};\n\ntype ColorThemeTypes = \"dark\" | \"light\";\n\nconst getBaseThemeColorsEnv = <\n TColorThemeType extends ColorThemeTypes = ColorThemeTypes,\n TExistingPrefix extends string = string,\n TResult = TColorThemeType extends \"dark\"\n ? DarkThemeColorsInput\n : LightThemeColorsInput\n>(\n prefix: `${TExistingPrefix}_${Uppercase<TColorThemeType>}_`\n): TResult => {\n const gradient = [] as string[];\n if (\n process.env[`${prefix}GRADIENT_START`] &&\n process.env[`${prefix}GRADIENT_END`]\n ) {\n gradient.push(\n process.env[`${prefix}GRADIENT_START`]!,\n process.env[`${prefix}GRADIENT_END`]!\n );\n } else if (\n process.env[`${prefix}GRADIENT_0`] ||\n process.env[`${prefix}GRADIENT_1`]\n ) {\n let index = process.env[`${prefix}GRADIENT_0`] ? 0 : 1;\n while (process.env[`${prefix}GRADIENT_${index}`]) {\n gradient.push(process.env[`${prefix}GRADIENT_${index}`]!);\n index++;\n }\n }\n\n return {\n foreground: process.env[`${prefix}FOREGROUND`],\n background: process.env[`${prefix}BACKGROUND`],\n brand: process.env[`${prefix}BRAND`],\n alternate: process.env[`${prefix}ALTERNATE`],\n accent: process.env[`${prefix}ACCENT`],\n link: process.env[`${prefix}LINK`],\n discovery: process.env[`${prefix}DISCOVERY`],\n success: process.env[`${prefix}SUCCESS`],\n info: process.env[`${prefix}INFO`],\n debug: process.env[`${prefix}DEBUG`],\n warning: process.env[`${prefix}WARNING`],\n danger: process.env[`${prefix}DANGER`],\n fatal: process.env[`${prefix}FATAL`],\n performance: process.env[`${prefix}PERFORMANCE`],\n positive: process.env[`${prefix}POSITIVE`],\n negative: process.env[`${prefix}NEGATIVE`],\n gradient\n } as TResult;\n};\n","import type {\n ColorsMap,\n DarkThemeColors,\n LightThemeColors,\n MultiThemeColors,\n SingleThemeColors,\n StormWorkspaceConfig\n} from \"@storm-software/config\";\nimport { getLogLevel } from \"../logger/get-log-level\";\nimport { LogLevel } from \"../types\";\nimport { correctPaths } from \"../utilities/correct-paths\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace NodeJS {\n interface ProcessEnv {\n [key: string]: string | undefined;\n }\n }\n}\n\n/**\n * Get the config for an extension module of Storm workspace from environment variables\n *\n * @param extensionName - The name of the extension module\n * @returns The config for the specified Storm extension module. If the module does not exist, `undefined` is returned.\n */\nexport const setExtensionEnv = <\n TConfig extends Record<string, any> = Record<string, any>\n>(\n extensionName: string,\n extension: TConfig\n) => {\n for (const key of Object.keys(extension ?? {})) {\n if (extension[key]) {\n const result =\n key\n ?.replace(/([A-Z])+/g, (input?: string) =>\n input ? input[0]?.toUpperCase() + input.slice(1) : \"\"\n )\n .split(/(?=[A-Z])|[.\\-\\s_]/)\n .map((x: string) => x.toLowerCase()) ?? [];\n\n let extensionKey: string;\n if (result.length === 0) {\n return;\n }\n if (result.length === 1) {\n extensionKey = result[0]?.toUpperCase() ?? \"\";\n } else {\n extensionKey = result.reduce((ret: string, part: string) => {\n return `${ret}_${part.toLowerCase()}`;\n });\n }\n\n process.env[\n `STORM_EXTENSION_${extensionName.toUpperCase()}_${extensionKey.toUpperCase()}`\n ] = extension[key];\n }\n }\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @returns The config for the current Storm workspace from environment variables\n */\nexport const setConfigEnv = (config: StormWorkspaceConfig) => {\n const prefix = \"STORM_\";\n\n if (config.extends) {\n process.env[`${prefix}EXTENDS`] = Array.isArray(config.extends)\n ? JSON.stringify(config.extends)\n : config.extends;\n }\n if (config.name) {\n process.env[`${prefix}NAME`] = config.name;\n }\n if (config.variant) {\n process.env[`${prefix}VARIANT`] = config.variant;\n }\n if (config.namespace) {\n process.env[`${prefix}NAMESPACE`] = config.namespace;\n }\n if (config.owner) {\n process.env[`${prefix}OWNER`] = config.owner;\n }\n if (config.bot) {\n process.env[`${prefix}BOT_NAME`] = config.bot.name;\n process.env[`${prefix}BOT_EMAIL`] = config.bot.email;\n }\n if (config.error) {\n process.env[`${prefix}ERROR_CODES_FILE`] = config.error.codesFile;\n process.env[`${prefix}ERROR_URL`] = config.error.url;\n }\n if (config.release) {\n if (config.release.banner) {\n if (typeof config.release.banner === \"string\") {\n process.env[`${prefix}RELEASE_BANNER`] = config.release.banner;\n process.env[`${prefix}RELEASE_BANNER_URL`] = config.release.banner;\n } else {\n process.env[`${prefix}RELEASE_BANNER`] = config.release.banner.url;\n process.env[`${prefix}RELEASE_BANNER_URL`] = config.release.banner.url;\n process.env[`${prefix}RELEASE_BANNER_ALT`] = config.release.banner.alt;\n }\n }\n process.env[`${prefix}RELEASE_HEADER`] = config.release.header;\n process.env[`${prefix}RELEASE_FOOTER`] = config.release.footer;\n }\n if (config.socials) {\n if (config.socials.twitter) {\n process.env[`${prefix}SOCIAL_TWITTER`] = config.socials.twitter;\n }\n if (config.socials.discord) {\n process.env[`${prefix}SOCIAL_DISCORD`] = config.socials.discord;\n }\n if (config.socials.telegram) {\n process.env[`${prefix}SOCIAL_TELEGRAM`] = config.socials.telegram;\n }\n if (config.socials.slack) {\n process.env[`${prefix}SOCIAL_SLACK`] = config.socials.slack;\n }\n if (config.socials.medium) {\n process.env[`${prefix}SOCIAL_MEDIUM`] = config.socials.medium;\n }\n if (config.socials.github) {\n process.env[`${prefix}SOCIAL_GITHUB`] = config.socials.github;\n }\n }\n if (config.organization) {\n if (typeof config.organization === \"string\") {\n process.env[`${prefix}ORG`] = config.organization;\n process.env[`${prefix}ORG_NAME`] = config.organization;\n process.env[`${prefix}ORGANIZATION`] = config.organization;\n process.env[`${prefix}ORGANIZATION_NAME`] = config.organization;\n } else {\n process.env[`${prefix}ORG`] = config.organization.name;\n process.env[`${prefix}ORG_NAME`] = config.organization.name;\n process.env[`${prefix}ORGANIZATION`] = config.organization.name;\n process.env[`${prefix}ORGANIZATION_NAME`] = config.organization.name;\n if (config.organization.url) {\n process.env[`${prefix}ORG_URL`] = config.organization.url;\n process.env[`${prefix}ORGANIZATION_URL`] = config.organization.url;\n }\n\n if (config.organization.description) {\n process.env[`${prefix}ORG_DESCRIPTION`] =\n config.organization.description;\n process.env[`${prefix}ORGANIZATION_DESCRIPTION`] =\n config.organization.description;\n }\n\n if (config.organization.logo) {\n process.env[`${prefix}ORG_LOGO`] = config.organization.logo;\n process.env[`${prefix}ORGANIZATION_LOGO`] = config.organization.logo;\n }\n\n if (config.organization.icon) {\n process.env[`${prefix}ORG_ICON`] = config.organization.icon;\n process.env[`${prefix}ORGANIZATION_ICON`] = config.organization.icon;\n }\n }\n }\n if (config.packageManager) {\n process.env[`${prefix}PACKAGE_MANAGER`] = config.packageManager;\n }\n if (config.license) {\n process.env[`${prefix}LICENSE`] = config.license;\n }\n if (config.homepage) {\n process.env[`${prefix}HOMEPAGE`] = config.homepage;\n }\n if (config.docs) {\n process.env[`${prefix}DOCS`] = config.docs;\n }\n if (config.portal) {\n process.env[`${prefix}PORTAL`] = config.portal;\n }\n if (config.licensing) {\n process.env[`${prefix}LICENSING`] = config.licensing;\n }\n if (config.contact) {\n process.env[`${prefix}CONTACT`] = config.contact;\n }\n if (config.support) {\n process.env[`${prefix}SUPPORT`] = config.support;\n }\n if (config.timezone) {\n process.env[`${prefix}TIMEZONE`] = config.timezone;\n process.env.TZ = config.timezone;\n process.env.DEFAULT_TIMEZONE = config.timezone;\n process.env.TIMEZONE = config.timezone;\n }\n if (config.locale) {\n process.env[`${prefix}LOCALE`] = config.locale;\n process.env.DEFAULT_LOCALE = config.locale;\n process.env.LOCALE = config.locale;\n process.env.LANG = config.locale\n ? `${config.locale.replaceAll(\"-\", \"_\")}.UTF-8`\n : \"en_US.UTF-8\";\n }\n if (config.configFile) {\n process.env[`${prefix}WORKSPACE_CONFIG_FILE`] = correctPaths(\n config.configFile\n );\n }\n if (config.workspaceRoot) {\n process.env[`${prefix}WORKSPACE_ROOT`] = correctPaths(config.workspaceRoot);\n process.env.NX_WORKSPACE_ROOT = correctPaths(config.workspaceRoot);\n process.env.NX_WORKSPACE_ROOT_PATH = correctPaths(config.workspaceRoot);\n }\n\n if (config.directories) {\n if (!config.skipCache && config.directories.cache) {\n process.env[`${prefix}CACHE_DIR`] = correctPaths(\n config.directories.cache\n );\n process.env[`${prefix}CACHE_DIRECTORY`] =\n process.env[`${prefix}CACHE_DIR`];\n }\n if (config.directories.data) {\n process.env[`${prefix}DATA_DIR`] = correctPaths(config.directories.data);\n process.env[`${prefix}DATA_DIRECTORY`] = process.env[`${prefix}DATA_DIR`];\n }\n if (config.directories.config) {\n process.env[`${prefix}CONFIG_DIR`] = correctPaths(\n config.directories.config\n );\n process.env[`${prefix}CONFIG_DIRECTORY`] =\n process.env[`${prefix}CONFIG_DIR`];\n }\n if (config.directories.temp) {\n process.env[`${prefix}TEMP_DIR`] = correctPaths(config.directories.temp);\n process.env[`${prefix}TEMP_DIRECTORY`] = process.env[`${prefix}TEMP_DIR`];\n }\n if (config.directories.log) {\n process.env[`${prefix}LOG_DIR`] = correctPaths(config.directories.log);\n process.env[`${prefix}LOG_DIRECTORY`] = process.env[`${prefix}LOG_DIR`];\n }\n if (config.directories.build) {\n process.env[`${prefix}BUILD_DIR`] = correctPaths(\n config.directories.build\n );\n process.env[`${prefix}BUILD_DIRECTORY`] =\n process.env[`${prefix}BUILD_DIR`];\n }\n }\n\n if (config.skipCache !== undefined) {\n process.env[`${prefix}SKIP_CACHE`] = String(config.skipCache);\n if (config.skipCache) {\n process.env.NX_SKIP_NX_CACHE ??= String(config.skipCache);\n process.env.NX_CACHE_PROJECT_GRAPH ??= String(config.skipCache);\n }\n }\n if (config.mode) {\n process.env[`${prefix}MODE`] = config.mode;\n process.env.NODE_ENV = config.mode;\n process.env.ENVIRONMENT = config.mode;\n }\n // if (config.ci) {\n // process.env[`${prefix}CI`] = String(config.ci);\n // process.env.CI = String(config.ci);\n // process.env.CONTINUOUS_INTEGRATION = String(config.ci);\n // }\n\n // Check if the color configuration is set using separate dark and light color\n // palettes or a single multi-theme color palettes\n if (\n (config.colors as ColorsMap)?.base?.light ||\n (config.colors as ColorsMap)?.base?.dark\n ) {\n for (const key of Object.keys(config.colors as ColorsMap)) {\n setThemeColorsEnv(`${prefix}COLOR_${key}_`, config.colors[key]);\n }\n } else {\n setThemeColorsEnv(\n `${prefix}COLOR_`,\n config.colors as MultiThemeColors | SingleThemeColors\n );\n }\n\n if (config.repository) {\n process.env[`${prefix}REPOSITORY`] = config.repository;\n }\n if (config.branch) {\n process.env[`${prefix}BRANCH`] = config.branch;\n }\n if (config.preid) {\n process.env[`${prefix}PRE_ID`] = String(config.preid);\n }\n if (config.registry) {\n if (config.registry.github) {\n process.env[`${prefix}REGISTRY_GITHUB`] = String(config.registry.github);\n }\n if (config.registry.npm) {\n process.env[`${prefix}REGISTRY_NPM`] = String(config.registry.npm);\n }\n if (config.registry.cargo) {\n process.env[`${prefix}REGISTRY_CARGO`] = String(config.registry.cargo);\n }\n if (config.registry.cyclone) {\n process.env[`${prefix}REGISTRY_CYCLONE`] = String(\n config.registry.cyclone\n );\n }\n if (config.registry.container) {\n process.env[`${prefix}REGISTRY_CONTAINER`] = String(\n config.registry.container\n );\n }\n }\n if (config.logLevel) {\n process.env[`${prefix}LOG_LEVEL`] = String(config.logLevel);\n process.env.LOG_LEVEL = String(config.logLevel);\n process.env.NX_VERBOSE_LOGGING = String(\n getLogLevel(config.logLevel) >= LogLevel.DEBUG ? true : false\n );\n process.env.RUST_BACKTRACE =\n getLogLevel(config.logLevel) >= LogLevel.DEBUG ? \"full\" : \"none\";\n }\n if (config.skipConfigLogging !== undefined) {\n process.env[`${prefix}SKIP_CONFIG_LOGGING`] = String(\n config.skipConfigLogging\n );\n }\n\n process.env[`${prefix}WORKSPACE_CONFIG`] = JSON.stringify(config);\n\n for (const key of Object.keys(config.extensions ?? {})) {\n if (config.extensions[key] && Object.keys(config.extensions[key])) {\n setExtensionEnv(key, config.extensions[key]);\n }\n }\n};\n\nconst setThemeColorsEnv = (\n prefix: string,\n config: MultiThemeColors | SingleThemeColors\n) => {\n // Check if the color configuration is set using separate dark and light color\n // palettes or a single multi-theme color palettes\n return (config as MultiThemeColors)?.light?.brand ||\n (config as MultiThemeColors)?.dark?.brand\n ? setMultiThemeColorsEnv(prefix, config as MultiThemeColors)\n : setSingleThemeColorsEnv(prefix, config as SingleThemeColors);\n};\n\nconst setSingleThemeColorsEnv = (prefix: string, config: SingleThemeColors) => {\n if (config.dark) {\n process.env[`${prefix}DARK`] = config.dark;\n }\n if (config.light) {\n process.env[`${prefix}LIGHT`] = config.light;\n }\n if (config.brand) {\n process.env[`${prefix}BRAND`] = config.brand;\n }\n if (config.alternate) {\n process.env[`${prefix}ALTERNATE`] = config.alternate;\n }\n if (config.accent) {\n process.env[`${prefix}ACCENT`] = config.accent;\n }\n if (config.link) {\n process.env[`${prefix}LINK`] = config.link;\n }\n if (config.discovery) {\n process.env[`${prefix}DISCOVERY`] = config.discovery;\n }\n if (config.success) {\n process.env[`${prefix}SUCCESS`] = config.success;\n }\n if (config.info) {\n process.env[`${prefix}INFO`] = config.info;\n }\n if (config.debug) {\n process.env[`${prefix}DEBUG`] = config.debug;\n }\n if (config.warning) {\n process.env[`${prefix}WARNING`] = config.warning;\n }\n if (config.danger) {\n process.env[`${prefix}DANGER`] = config.danger;\n }\n if (config.fatal) {\n process.env[`${prefix}FATAL`] = config.fatal;\n }\n if (config.performance) {\n process.env[`${prefix}PERFORMANCE`] = config.performance;\n }\n if (config.positive) {\n process.env[`${prefix}POSITIVE`] = config.positive;\n }\n if (config.negative) {\n process.env[`${prefix}NEGATIVE`] = config.negative;\n }\n if (config.gradient) {\n for (let i = 0; i < config.gradient.length; i++) {\n process.env[`${prefix}GRADIENT_${i}`] = config.gradient[i];\n }\n }\n};\n\nconst setMultiThemeColorsEnv = (prefix: string, config: MultiThemeColors) => {\n return {\n light: setBaseThemeColorsEnv(`${prefix}LIGHT_`, config.light),\n dark: setBaseThemeColorsEnv(`${prefix}DARK_`, config.dark)\n };\n};\n\nconst setBaseThemeColorsEnv = (\n prefix: string,\n config: DarkThemeColors | LightThemeColors\n) => {\n if (config.foreground) {\n process.env[`${prefix}FOREGROUND`] = config.foreground;\n }\n if (config.background) {\n process.env[`${prefix}BACKGROUND`] = config.background;\n }\n if (config.brand) {\n process.env[`${prefix}BRAND`] = config.brand;\n }\n if (config.alternate) {\n process.env[`${prefix}ALTERNATE`] = config.alternate;\n }\n if (config.accent) {\n process.env[`${prefix}ACCENT`] = config.accent;\n }\n if (config.link) {\n process.env[`${prefix}LINK`] = config.link;\n }\n if (config.discovery) {\n process.env[`${prefix}DISCOVERY`] = config.discovery;\n }\n if (config.success) {\n process.env[`${prefix}SUCCESS`] = config.success;\n }\n if (config.info) {\n process.env[`${prefix}INFO`] = config.info;\n }\n if (config.debug) {\n process.env[`${prefix}DEBUG`] = config.debug;\n }\n if (config.warning) {\n process.env[`${prefix}WARNING`] = config.warning;\n }\n if (config.danger) {\n process.env[`${prefix}DANGER`] = config.danger;\n }\n if (config.fatal) {\n process.env[`${prefix}FATAL`] = config.fatal;\n }\n if (config.performance) {\n process.env[`${prefix}PERFORMANCE`] = config.performance;\n }\n if (config.positive) {\n process.env[`${prefix}POSITIVE`] = config.positive;\n }\n if (config.negative) {\n process.env[`${prefix}NEGATIVE`] = config.negative;\n }\n if (config.gradient) {\n for (let i = 0; i < config.gradient.length; i++) {\n process.env[`${prefix}GRADIENT_${i}`] = config.gradient[i];\n }\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { StormWorkspaceConfig } from \"@storm-software/config\";\nimport { workspaceConfigSchema } from \"@storm-software/config/schema\";\nimport defu from \"defu\";\nimport { existsSync } from \"node:fs\";\nimport * as z from \"zod\";\nimport { ParsePayload } from \"zod/v4/core\";\nimport { getConfigFile } from \"./config-file/get-config-file\";\nimport { getConfigEnv, getExtensionEnv } from \"./env/get-env\";\nimport { setConfigEnv } from \"./env/set-env\";\nimport { formatLogMessage, writeTrace, writeWarning } from \"./logger/console\";\nimport { joinPaths } from \"./utilities/correct-paths\";\nimport { findWorkspaceRoot } from \"./utilities/find-workspace-root\";\nimport {\n applyDefaultConfig,\n getPackageJsonConfig\n} from \"./utilities/get-default-config\";\n\nconst _extension_cache = new WeakMap<{ extensionName: string }, any>();\n\ntype StaticCache = { data: StormWorkspaceConfig; timestamp: number };\nlet _static_cache = undefined as StaticCache | undefined;\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param extensionName - The name of the config extension\n * @param schema - The schema for the config extension\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @param useDefault - Whether to use the default config if no config file is found\n * @returns The config for the current Storm workspace\n */\nexport const createStormWorkspaceConfig = async <\n TExtensionName extends keyof StormWorkspaceConfig[\"extensions\"] =\n keyof StormWorkspaceConfig[\"extensions\"],\n TExtensionConfig = any,\n TExtensionSchema extends z.ZodType = z.ZodType,\n TUseDefault extends boolean | undefined = boolean | undefined,\n TResult = TUseDefault extends true\n ? StormWorkspaceConfig<TExtensionName, TExtensionConfig>\n : StormWorkspaceConfig<TExtensionName, TExtensionConfig> | undefined\n>(\n extensionName?: TExtensionName,\n schema?: TExtensionSchema,\n workspaceRoot?: string,\n skipLogs = false,\n useDefault: TUseDefault = true as TUseDefault\n): Promise<TResult> => {\n let result!: StormWorkspaceConfig<TExtensionName, TExtensionConfig>;\n if (\n !_static_cache?.data ||\n !_static_cache?.timestamp ||\n _static_cache.timestamp < Date.now() - 8000\n ) {\n let _workspaceRoot = workspaceRoot;\n if (!_workspaceRoot) {\n _workspaceRoot = findWorkspaceRoot();\n }\n\n const configEnv = getConfigEnv() as StormWorkspaceConfig & {\n [extensionName in TExtensionName]: TExtensionConfig;\n };\n\n const configFile = await getConfigFile(_workspaceRoot);\n if (!configFile) {\n if (!skipLogs) {\n writeWarning(\n \"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\",\n { logLevel: \"all\" }\n );\n }\n\n if (useDefault === false) {\n return undefined as TResult;\n }\n }\n\n const defaultConfig = await getPackageJsonConfig(_workspaceRoot);\n const configInput = defu(\n configEnv,\n configFile,\n defaultConfig\n ) as StormWorkspaceConfig<TExtensionName, TExtensionConfig>;\n if (!configInput.variant) {\n configInput.variant =\n existsSync(joinPaths(_workspaceRoot, \"nx.json\")) ||\n existsSync(joinPaths(_workspaceRoot, \".nx\")) ||\n existsSync(joinPaths(_workspaceRoot, \"lerna.json\")) ||\n existsSync(joinPaths(_workspaceRoot, \"turbo.json\"))\n ? \"monorepo\"\n : \"minimal\";\n }\n\n try {\n const parseResult = (await Promise.resolve(\n workspaceConfigSchema._zod.parse(\n { value: configInput, issues: [] },\n { async: true }\n )\n )) as ParsePayload<\n StormWorkspaceConfig<TExtensionName, TExtensionConfig>\n >;\n result = applyDefaultConfig(parseResult.value) as StormWorkspaceConfig<\n TExtensionName,\n TExtensionConfig\n >;\n result.workspaceRoot ??= _workspaceRoot;\n } catch (error) {\n throw new Error(\n `Failed to parse Storm Workspace configuration${error?.message ? `: ${error.message}` : \"\"}\n\nPlease ensure your configuration file is valid JSON and matches the expected schema. The current workspace configuration input is: ${formatLogMessage(\n configInput\n )}`,\n {\n cause: error\n }\n );\n }\n } else {\n result = _static_cache.data as StormWorkspaceConfig<\n TExtensionName,\n TExtensionConfig\n >;\n }\n\n if (schema && extensionName) {\n result.extensions = {\n ...result.extensions,\n [extensionName]: createConfigExtension<\n TExtensionName,\n TExtensionConfig,\n TExtensionSchema\n >(extensionName, schema)\n };\n }\n\n _static_cache = {\n timestamp: Date.now(),\n data: result\n };\n return result as TResult;\n};\n\n/**\n * Get the config for a specific Storm config Extension\n *\n * @param extensionName - The name of the config extension\n * @param options - The options for the config extension\n * @returns The config for the specified Storm config extension. If the extension does not exist, `undefined` is returned.\n */\nexport const createConfigExtension = <\n TExtensionName extends keyof StormWorkspaceConfig[\"extensions\"] =\n keyof StormWorkspaceConfig[\"extensions\"],\n TExtensionConfig = any,\n TExtensionSchema extends z.ZodType = z.ZodType\n>(\n extensionName: TExtensionName,\n schema: TExtensionSchema\n): TExtensionConfig => {\n const extension_cache_key = { extensionName };\n if (_extension_cache.has(extension_cache_key)) {\n return _extension_cache.get(extension_cache_key) as TExtensionConfig;\n }\n\n let extension = getExtensionEnv(extensionName);\n if (schema) {\n extension = schema.parse(extension) as TExtensionSchema;\n }\n\n _extension_cache.set(extension_cache_key, extension);\n return extension as TExtensionConfig;\n};\n\n/**\n * Load the config file values for the current Storm workspace into environment variables\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @returns The config for the current Storm workspace, throws an error if the config file could not be loaded\n */\nexport const loadStormWorkspaceConfig = async (\n workspaceRoot?: string,\n skipLogs = false\n): Promise<StormWorkspaceConfig> => {\n const config = await createStormWorkspaceConfig(\n undefined,\n undefined,\n workspaceRoot,\n skipLogs,\n true\n );\n setConfigEnv(config);\n\n if (!skipLogs && !config.skipConfigLogging) {\n writeTrace(\n `⚙️ Using Storm Workspace configuration: \\n${formatLogMessage(config)}`,\n config\n );\n }\n\n return config;\n};\n\n/**\n * Try to load the config file values for the current Storm workspace into environment variables\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @param useDefault - Whether to use the default config if no config file is found\n * @returns The config for the current Storm workspace, or undefined if the config file could not be loaded\n */\nexport const tryLoadStormWorkspaceConfig = async (\n workspaceRoot?: string,\n skipLogs = true,\n useDefault = false\n): Promise<StormWorkspaceConfig | undefined> => {\n try {\n const config = await createStormWorkspaceConfig(\n undefined,\n undefined,\n workspaceRoot,\n skipLogs,\n useDefault\n );\n if (!config) {\n return undefined;\n }\n\n setConfigEnv(config);\n\n if (!skipLogs && !config.skipConfigLogging) {\n writeTrace(\n `⚙️ Using Storm Workspace configuration: \\n${formatLogMessage(config)}`,\n config\n );\n }\n\n return config;\n } catch (error) {\n if (!skipLogs) {\n writeWarning(\n `⚠️ Failed to load Storm Workspace configuration: ${error}`,\n { logLevel: \"all\" }\n );\n }\n return undefined;\n }\n};\n","import { StormWorkspaceConfig } from \"@storm-software/config/types\";\nimport {\n loadStormWorkspaceConfig,\n tryLoadStormWorkspaceConfig\n} from \"./create-storm-config\";\nimport { findWorkspaceRoot } from \"./utilities/find-workspace-root\";\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param workspaceRoot - The root directory of the workspace\n * @param skipLogs - Skip writing logs to the console\n * @returns The config for the current Storm workspace\n */\nexport function getConfig(\n workspaceRoot?: string,\n skipLogs = false\n): Promise<StormWorkspaceConfig> {\n return loadStormWorkspaceConfig(workspaceRoot, skipLogs);\n}\n\nexport type GetWorkspaceConfigOptions = {\n /**\n * The root directory of the workspace\n */\n workspaceRoot?: string;\n\n /**\n * A directory inside the monorepo to start searching from\n */\n cwd?: string;\n\n /**\n * Use the default config if no config file is found\n *\n * @defaultValue true\n */\n useDefault?: boolean;\n};\n\n/**\n * Get the config for the current Storm workspace\n *\n * @param skipLogs - Skip writing logs to the console\n * @param options - Options for getting the workspace config\n * @returns The config for the current Storm workspace, or throws an error if the config file could not be loaded\n */\nexport function getWorkspaceConfig(\n skipLogs = true,\n options: GetWorkspaceConfigOptions = {}\n): Promise<StormWorkspaceConfig> {\n let workspaceRoot = options.workspaceRoot;\n if (!workspaceRoot) {\n workspaceRoot = findWorkspaceRoot(options.cwd);\n }\n\n return getConfig(workspaceRoot, skipLogs);\n}\n\n/**\n * Try to get the config for the current Storm workspace\n *\n * @param skipLogs - Skip writing logs to the console\n * @param options - Options for getting the workspace config\n * @returns The config for the current Storm workspace, or undefined if the config file could not be loaded\n */\nexport async function tryGetWorkspaceConfig(\n skipLogs = true,\n options: GetWorkspaceConfigOptions = {}\n): Promise<StormWorkspaceConfig | undefined> {\n try {\n let workspaceRoot = options.workspaceRoot;\n if (!workspaceRoot) {\n workspaceRoot = findWorkspaceRoot(options.cwd);\n }\n\n return tryLoadStormWorkspaceConfig(\n workspaceRoot,\n skipLogs,\n options.useDefault\n );\n } catch {\n return undefined;\n }\n}\n"]}
|