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