@storm-stack/core
Version:
A build toolkit and runtime used by Storm Software in TypeScript applications
185 lines (180 loc) • 6.96 kB
JavaScript
'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