UNPKG

@storm-software/config-tools

Version:

A package containing various utilities to support custom workspace configurations and environment management for Storm Software projects, including configuration file handling, environment variable management, and logging utilities.

162 lines (136 loc) 6.18 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _chunkPWT57ER4cjs = require('./chunk-PWT57ER4.cjs'); var _chunkCFXT4ZAWcjs = require('./chunk-CFXT4ZAW.cjs'); var _chunk3CNCDDWZcjs = require('./chunk-3CNCDDWZ.cjs'); var _chunkDLJF3QQScjs = require('./chunk-DLJF3QQS.cjs'); var _chunkB2CQPVVLcjs = require('./chunk-B2CQPVVL.cjs'); var _chunkNHILCONIcjs = require('./chunk-NHILCONI.cjs'); var _chunkBDATZ3UBcjs = require('./chunk-BDATZ3UB.cjs'); // src/create-storm-config.ts var _schema = require('@storm-software/config/schema'); var _defu = require('defu'); var _defu2 = _interopRequireDefault(_defu); var _fs = require('fs'); var _extension_cache = /* @__PURE__ */ new WeakMap(); var _static_cache = void 0; var createStormWorkspaceConfig = async (extensionName, schema, workspaceRoot, skipLogs = false, useDefault = true) => { let result; if (!_optionalChain([_static_cache, 'optionalAccess', _ => _.data]) || !_optionalChain([_static_cache, 'optionalAccess', _2 => _2.timestamp]) || _static_cache.timestamp < Date.now() - 8e3) { let _workspaceRoot = workspaceRoot; if (!_workspaceRoot) { _workspaceRoot = _chunk3CNCDDWZcjs.findWorkspaceRoot.call(void 0, ); } const configEnv = _chunkNHILCONIcjs.getConfigEnv.call(void 0, ); const configFile = await _chunkPWT57ER4cjs.getConfigFile.call(void 0, _workspaceRoot); if (!configFile) { if (!skipLogs) { _chunkDLJF3QQScjs.writeWarning.call(void 0, "No Storm Workspace configuration file found in the current repository. Please ensure this is the expected behavior - you can add a `storm-workspace.json` file to the root of your workspace if it is not.\n", { logLevel: "all" } ); } if (useDefault === false) { return void 0; } } const defaultConfig = await _chunkCFXT4ZAWcjs.getPackageJsonConfig.call(void 0, _workspaceRoot); const configInput = _defu2.default.call(void 0, configEnv, configFile, defaultConfig ); if (!configInput.variant) { configInput.variant = _fs.existsSync.call(void 0, _chunkBDATZ3UBcjs.joinPaths.call(void 0, _workspaceRoot, "nx.json")) || _fs.existsSync.call(void 0, _chunkBDATZ3UBcjs.joinPaths.call(void 0, _workspaceRoot, ".nx")) || _fs.existsSync.call(void 0, _chunkBDATZ3UBcjs.joinPaths.call(void 0, _workspaceRoot, "lerna.json")) || _fs.existsSync.call(void 0, _chunkBDATZ3UBcjs.joinPaths.call(void 0, _workspaceRoot, "turbo.json")) ? "monorepo" : "minimal"; } try { result = _chunkCFXT4ZAWcjs.applyDefaultConfig.call(void 0, await _schema.workspaceConfigSchema.parseAsync(configInput) ); result.workspaceRoot ??= _workspaceRoot; } catch (error) { throw new Error( `Failed to parse Storm Workspace configuration${_optionalChain([error, 'optionalAccess', _3 => _3.message]) ? `: ${error.message}` : ""} Please ensure your configuration file is valid JSON and matches the expected schema. The current workspace configuration input is: ${_chunkDLJF3QQScjs.formatLogMessage.call(void 0, configInput )}`, { cause: error } ); } } else { result = _static_cache.data; } if (schema && extensionName) { result.extensions = { ...result.extensions, [extensionName]: createConfigExtension(extensionName, schema) }; } _static_cache = { timestamp: Date.now(), data: result }; return result; }; var createConfigExtension = (extensionName, schema) => { const extension_cache_key = { extensionName }; if (_extension_cache.has(extension_cache_key)) { return _extension_cache.get(extension_cache_key); } let extension = _chunkNHILCONIcjs.getExtensionEnv.call(void 0, extensionName); if (schema) { extension = schema.parse(extension); } _extension_cache.set(extension_cache_key, extension); return extension; }; var loadStormWorkspaceConfig = async (workspaceRoot, skipLogs = false) => { const config = await createStormWorkspaceConfig( void 0, void 0, workspaceRoot, skipLogs, true ); _chunkB2CQPVVLcjs.setConfigEnv.call(void 0, config); if (!skipLogs && !config.skipConfigLogging) { _chunkDLJF3QQScjs.writeTrace.call(void 0, `\u2699\uFE0F Using Storm Workspace configuration: ${_chunkDLJF3QQScjs.formatLogMessage.call(void 0, config)}`, config ); } return config; }; var tryLoadStormWorkspaceConfig = async (workspaceRoot, skipLogs = true, useDefault = false) => { try { const config = await createStormWorkspaceConfig( void 0, void 0, workspaceRoot, skipLogs, useDefault ); if (!config) { return void 0; } _chunkB2CQPVVLcjs.setConfigEnv.call(void 0, config); if (!skipLogs && !config.skipConfigLogging) { _chunkDLJF3QQScjs.writeTrace.call(void 0, `\u2699\uFE0F Using Storm Workspace configuration: ${_chunkDLJF3QQScjs.formatLogMessage.call(void 0, config)}`, config ); } return config; } catch (error) { if (!skipLogs) { _chunkDLJF3QQScjs.writeWarning.call(void 0, `\u26A0\uFE0F Failed to load Storm Workspace configuration: ${error}`, { logLevel: "all" } ); } return void 0; } }; exports.createStormWorkspaceConfig = createStormWorkspaceConfig; exports.createConfigExtension = createConfigExtension; exports.loadStormWorkspaceConfig = loadStormWorkspaceConfig; exports.tryLoadStormWorkspaceConfig = tryLoadStormWorkspaceConfig;