UNPKG

@storm-stack/core

Version:

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

175 lines (169 loc) 6.43 kB
'use strict'; var chunkI435ABVN_cjs = require('./chunk-I435ABVN.cjs'); var chunkGRNJVY7I_cjs = require('./chunk-GRNJVY7I.cjs'); var getConfig = require('@storm-software/config-tools/get-config'); var exists = require('@stryke/fs/exists'); var getWorkspaceRoot = require('@stryke/fs/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] } : {}); } chunkGRNJVY7I_cjs.__name(loadUserConfigFile, "loadUserConfigFile"); async function resolveConfig(context, inlineConfig, userConfig, projectRoot) { const resolvedProjectRoot = projectRoot || inlineConfig.root || userConfig?.root || getWorkspaceRoot.getProjectRoot() || process.cwd(); const workspaceConfig = defu__default.default(await getConfig.getWorkspaceConfig(), { workspaceRoot: context.options.workspaceConfig?.workspaceRoot ?? getWorkspaceRoot.getWorkspaceRoot() }); if (!workspaceConfig) { throw new Error("The workspace root could not be determined. Please ensure you are in a Storm Stack project."); } const mergedUserConfig = defu__default.default({ config: userConfig ?? {} }, await loadUserConfigFile(resolvedProjectRoot, context.resolver, context.options.command, inlineConfig.mode || userConfig?.mode || context.options.workspaceConfig?.mode || "production")); const resolvedOptions = defu__default.default({ inlineConfig, userConfig: mergedUserConfig, workspaceConfig, projectRoot: resolvedProjectRoot, workspaceRoot: workspaceConfig.workspaceRoot }, inlineConfig, mergedUserConfig.config ?? {}, { ...context.options, tsconfig: chunkI435ABVN_cjs.getTsconfigFilePath(resolvedProjectRoot, context.options.tsconfig ?? "tsconfig.json") }, { platform: "neutral", mode: "production", projectType: "application", logLevel: "info", isSsrBuild: false, isPreview: false, babel: { plugins: [], presets: [] }, build: {}, override: {} }); resolvedOptions.output = defu__default.default(resolvedOptions.output ?? {}, { outputPath: resolvedOptions.tsconfigRaw?.compilerOptions?.outDir, outputMode: resolvedOptions.output?.outputMode }, { outputPath: resolvedProjectRoot === workspaceConfig.workspaceRoot ? "dist" : joinPaths.joinPaths("dist", resolvedProjectRoot), outputMode: "virtual", 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 ??= chunkI435ABVN_cjs.getTsconfigFilePath(resolvedOptions.projectRoot, resolvedOptions.tsconfig); context.options = 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 ??= {}; context.options.userConfig.plugins = mergedUserConfig.plugins ?? []; context.options.plugins = { config: { additionalFiles: [] } }; return resolvedOptions; } chunkGRNJVY7I_cjs.__name(resolveConfig, "resolveConfig"); function defaultEnvironmentName(options) { if (options.isSsrBuild) { return "ssr"; } if (options.isPreview) { return "preview"; } if (options.platform === "node" || options.isSsrBuild) { return "server"; } if (options.platform === "browser") { return "client"; } return "shared"; } chunkGRNJVY7I_cjs.__name(defaultEnvironmentName, "defaultEnvironmentName"); exports.defaultEnvironmentName = defaultEnvironmentName; exports.loadUserConfigFile = loadUserConfigFile; exports.resolveConfig = resolveConfig;