UNPKG

@storm-stack/core

Version:

A build toolkit and runtime used by Storm Software in TypeScript applications

185 lines (180 loc) 6.96 kB
'use strict'; var chunkZ72ISLE5_cjs = require('./chunk-Z72ISLE5.cjs'); var chunk3ONWID2V_cjs = require('./chunk-3ONWID2V.cjs'); var getConfig = require('@storm-software/config-tools/get-config'); var colors = require('@storm-software/config-tools/utilities/colors'); var exists = require('@stryke/path/exists'); var getWorkspaceRoot = require('@stryke/path/get-workspace-root'); var joinPaths = require('@stryke/path/join-paths'); var isFunction = require('@stryke/type-checks/is-function'); var isSetObject = require('@stryke/type-checks/is-set-object'); var c12 = require('c12'); var defu = require('defu'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var defu__default = /*#__PURE__*/_interopDefault(defu); async function loadUserConfigFile(projectRoot, jiti, command, mode) { let resolvedUserConfig = {}; const resolvedUserConfigFile = exists.existsSync(joinPaths.joinPaths(projectRoot, "storm.config.ts")) ? joinPaths.joinPaths(projectRoot, "storm.config.ts") : exists.existsSync(joinPaths.joinPaths(projectRoot, "storm.config.js")) ? joinPaths.joinPaths(projectRoot, "storm.config.js") : exists.existsSync(joinPaths.joinPaths(projectRoot, "storm.config.mts")) ? joinPaths.joinPaths(projectRoot, "storm.config.mts") : exists.existsSync(joinPaths.joinPaths(projectRoot, "storm.config.mjs")) ? joinPaths.joinPaths(projectRoot, "storm.config.mjs") : void 0; if (resolvedUserConfigFile) { const resolved = await jiti.import(jiti.esmResolve(resolvedUserConfigFile)); if (resolved) { let config = {}; if (isFunction.isFunction(resolved)) { config = await Promise.resolve(resolved({ command, mode: mode || "production", isSsrBuild: false, isPreview: false })); } if (isSetObject.isSetObject(config)) { resolvedUserConfig = { ...config, config, configFile: resolvedUserConfigFile }; } } } const result = await Promise.all([ c12.loadConfig({ cwd: projectRoot, name: "storm", envName: mode, globalRc: true, packageJson: true, dotenv: true, jiti }), c12.loadConfig({ cwd: projectRoot, name: "storm.config", rcFile: false, globalRc: false, packageJson: false, dotenv: false, jiti }), c12.loadConfig({ cwd: projectRoot, name: "storm-stack", envName: mode, globalRc: true, packageJson: "stormStack", jiti }) ]); return defu__default.default(resolvedUserConfig, isSetObject.isSetObject(result[0]?.config) ? { ...result[0].config, ...result[0] } : {}, isSetObject.isSetObject(result[1]?.config) ? { ...result[1].config, ...result[1] } : {}, isSetObject.isSetObject(result[2]?.config) ? { ...result[2].config, ...result[2] } : {}); } chunk3ONWID2V_cjs.__name(loadUserConfigFile, "loadUserConfigFile"); async function resolveConfig(context, inlineConfig, userConfig, projectRoot) { const resolvedProjectRoot = projectRoot || inlineConfig.root || userConfig?.root || getWorkspaceRoot.getProjectRoot() || process.cwd(); const workspaceRoot = context.options.workspaceConfig?.workspaceRoot ?? getWorkspaceRoot.getWorkspaceRoot(); if (!context.options.workspaceConfig) { const workspaceConfig2 = await getConfig.getWorkspaceConfig(); context.options.workspaceConfig = defu__default.default(workspaceConfig2, { workspaceRoot }); } if (!context.options.workspaceConfig?.workspaceRoot) { throw new Error("The workspace root could not be determined. Please ensure you are in a Storm Stack project."); } const mode = inlineConfig.mode || userConfig?.mode || context.options.workspaceConfig?.mode || "production"; const resolvedUserConfig = await loadUserConfigFile(resolvedProjectRoot, context.resolver, context.options.command, mode); const workspaceConfig = { ...context.options.workspaceConfig }; delete workspaceConfig.name; const mergedUserConfig = defu__default.default(userConfig ?? {}, resolvedUserConfig); const resolvedOptions = defu__default.default({ inlineConfig, userConfig: mergedUserConfig, projectRoot: resolvedProjectRoot, workspaceConfig: context.options.workspaceConfig }, inlineConfig, mergedUserConfig.config ?? {}, { ...context.options, mode, tsconfig: chunkZ72ISLE5_cjs.getTsconfigFilePath(resolvedProjectRoot, context.options.tsconfig || "tsconfig.json") }, workspaceConfig, { platform: "neutral", mode: "production", projectType: "application", logLevel: "info", templates: joinPaths.joinPaths(resolvedProjectRoot, "templates"), isSsrBuild: false, isPreview: false, babel: { plugins: [], presets: [] }, esbuild: { override: {} }, unbuild: { override: {}, loaders: [] } }); resolvedOptions.output = defu__default.default(resolvedOptions.output ?? {}, { outputPath: resolvedOptions.tsconfigRaw?.compilerOptions?.outDir, outputMode: resolvedOptions.output?.outputMode }, { outputPath: resolvedProjectRoot === workspaceRoot ? "dist" : joinPaths.joinPaths("dist", resolvedProjectRoot), outputMode: "memory", assets: [ { input: resolvedProjectRoot, glob: "README.md", output: "/" }, { input: resolvedProjectRoot, glob: "CHANGELOG.md", output: "/" }, { input: "", glob: "LICENSE", output: "/" } ] }); resolvedOptions.environment ??= defaultEnvironmentName(resolvedOptions); resolvedOptions.sourceRoot ??= joinPaths.joinPaths(resolvedOptions.projectRoot, "src"); resolvedOptions.tsconfig ??= chunkZ72ISLE5_cjs.getTsconfigFilePath(resolvedOptions.projectRoot, resolvedOptions.tsconfig); context.options = resolvedOptions; context.options.colors = colors.getColors(resolvedOptions); context.options.logLevel = context.options.logLevel === "silent" ? null : context.options.logLevel === "success" ? "info" : context.options.logLevel === "trace" || context.options.logLevel === "all" ? "debug" : context.options.logLevel; context.options.userConfig.plugins = mergedUserConfig.plugins ?? []; context.options.plugins = { config: { additionalFiles: [] } }; return resolvedOptions; } chunk3ONWID2V_cjs.__name(resolveConfig, "resolveConfig"); function defaultEnvironmentName(options) { if (options.platform === "node" || options.isSsrBuild) { return "server"; } if (options.platform === "browser") { return "client"; } return "shared"; } chunk3ONWID2V_cjs.__name(defaultEnvironmentName, "defaultEnvironmentName"); exports.defaultEnvironmentName = defaultEnvironmentName; exports.loadUserConfigFile = loadUserConfigFile; exports.resolveConfig = resolveConfig; //# sourceMappingURL=chunk-HVMPQ543.cjs.map //# sourceMappingURL=chunk-HVMPQ543.cjs.map