UNPKG

@storm-stack/core

Version:

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

171 lines (166 loc) 7.31 kB
'use strict'; var chunk23BVYW67_cjs = require('./chunk-23BVYW67.cjs'); var chunkEG72EGDV_cjs = require('./chunk-EG72EGDV.cjs'); var chunk3ONWID2V_cjs = require('./chunk-3ONWID2V.cjs'); var core = require('@babel/core'); var types = require('@storm-software/config-tools/types'); var isParentPath = require('@stryke/path/is-parent-path'); var joinPaths = require('@stryke/path/join-paths'); var resolve = require('@stryke/path/resolve'); var isFunction = require('@stryke/type-checks/is-function'); var isSetString = require('@stryke/type-checks/is-set-string'); var chalk = require('chalk'); var defu = require('defu'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var chalk__default = /*#__PURE__*/_interopDefault(chalk); async function transform(log, context, source, options = {}) { try { const corePath = process.env.STORM_STACK_LOCAL ? joinPaths.joinPaths(context.options.workspaceRoot, "packages/core") : await resolve.resolvePackage("@storm-stack/core"); if (!corePath) { throw new Error("Could not resolve @storm-stack/core package location."); } let sourceFile = source; if (process.env.STORM_STACK_LOCAL && isParentPath.isParentPath(sourceFile.id, corePath) || options.skipAllTransforms || chunkEG72EGDV_cjs.getString(sourceFile.code).includes("/* @storm-ignore */") || chunkEG72EGDV_cjs.getString(sourceFile.code).includes("/* @storm-disable */")) { return sourceFile; } const babelOptions = { ...context.options.babel, ...options.babel }; if (!babelOptions || !babelOptions.plugins && !babelOptions.presets || Array.isArray(babelOptions.plugins) && babelOptions.plugins.length === 0 && Array.isArray(babelOptions.presets) && babelOptions.presets.length === 0) { log(types.LogLevelLabel.WARN, `No Babel plugins or presets configured for ${sourceFile.id}. Skipping Babel transformation.`); return sourceFile; } const plugins = babelOptions.plugins.reduce((ret, plugin) => { if (!chunk23BVYW67_cjs.isDuplicatePlugin(ret, plugin)) { if (Array.isArray(plugin) && plugin.length > 0 && plugin[0]) { if (plugin.length > 2 && plugin[2] && isFunction.isFunction(plugin[2].filter) && // eslint-disable-next-line ts/no-unsafe-call !plugin[2].filter(sourceFile)) { log(types.LogLevelLabel.DEBUG, `Skipping filtered Babel plugin ${chalk__default.default.bold.cyanBright(chunk23BVYW67_cjs.getPluginName(plugin) || "unnamed")} for ${sourceFile.id}`); return ret; } ret.push([ isFunction.isFunction(plugin[0]) ? plugin[0](context) : plugin[0], { ...plugin.length > 1 && plugin[1] ? plugin[1] : {}, options }, plugin.length > 2 ? plugin[2] : void 0 ]); } else { ret.push([ isFunction.isFunction(plugin) ? plugin(context) : plugin, { options }, void 0 ]); } } else { log(types.LogLevelLabel.INFO, `Skipping duplicate Babel plugin ${chunk23BVYW67_cjs.getPluginName(plugin)} for ${sourceFile.id}`); } return ret; }, []); const presets = babelOptions.presets.reduce((ret, preset) => { if (!chunk23BVYW67_cjs.isDuplicatePlugin(ret, preset)) { if (Array.isArray(preset) && preset.length > 0 && preset[0]) { if (preset.length > 2 && preset[2] && isFunction.isFunction(preset[2].filter) && // eslint-disable-next-line ts/no-unsafe-call !preset[2].filter(sourceFile)) { log(types.LogLevelLabel.INFO, `Skipping filtered Babel preset ${chunk23BVYW67_cjs.getPluginName(preset)} for ${sourceFile.id}`); return ret; } ret.push([ isFunction.isFunction(preset[0]) ? preset[0](context) : preset[0], { ...preset.length > 1 && preset[1] ? preset[1] : {}, options }, preset.length > 2 ? preset[2] : void 0 ]); } else { ret.push([ isFunction.isFunction(preset) ? preset(context) : preset, { options }, void 0 ]); } } else { log(types.LogLevelLabel.INFO, `Skipping duplicate Babel preset ${chunk23BVYW67_cjs.getPluginName(preset)} for ${sourceFile.id}`); } return ret; }, []); for (const plugin of plugins.filter((plugin2) => isFunction.isFunction(plugin2[2]?.onPreTransform))) { sourceFile = await Promise.resolve(plugin[2].onPreTransform(context, sourceFile)); } for (const preset of presets.filter((preset2) => isFunction.isFunction(preset2[2]?.onPreTransform))) { sourceFile = await Promise.resolve(preset[2].onPreTransform(context, sourceFile)); } log(types.LogLevelLabel.TRACE, `Transforming ${sourceFile.id} with Babel`); const result = await core.transformAsync(chunkEG72EGDV_cjs.getString(sourceFile.code), defu.defu({ filename: sourceFile.id, plugins: [ "@babel/plugin-syntax-typescript", ...plugins.map((plugin) => { return [ plugin[0], defu.defu(plugin.length > 1 && plugin[1] ? plugin[1] : {}, { options }), plugin[0]?.name ]; }) ], presets: presets.map((preset) => { return [ preset[0], defu.defu(preset.length > 1 && preset[1] ? preset[1] : {}, { options }), preset[0]?.name ]; }) }, babelOptions ? { ...babelOptions, plugins: [], presets: [] } : {}, { highlightCode: true, code: true, ast: false, cloneInputAst: false, comments: true, sourceType: "module", configFile: false, babelrc: false, envName: context.options.mode, caller: { name: "storm-stack" } })); if (!result?.code) { throw new Error(`BabelPluginStormStack failed to compile ${sourceFile.id}`); } log(types.LogLevelLabel.TRACE, `Completed Babel transformations of ${sourceFile.id}`); sourceFile.code = chunkEG72EGDV_cjs.getMagicString(result.code); for (const plugin of plugins.filter((plugin2) => isFunction.isFunction(plugin2[2]?.onPostTransform))) { sourceFile = await Promise.resolve(plugin[2].onPostTransform(context, sourceFile)); } for (const preset of presets.filter((preset2) => isFunction.isFunction(preset2[2]?.onPostTransform))) { sourceFile = await Promise.resolve(preset[2].onPostTransform(context, sourceFile)); } return sourceFile; } catch (error) { context.log(types.LogLevelLabel.ERROR, `Error during Babel transformation: ${error?.message ? isSetString.isSetString(error.message) ? error.message.length > 5e3 ? `${error.message.slice(0, 5e3)}... ${error.message.slice(-100)}` : error.message : error.message : "Unknown error"} ${error?.stack ? ` Stack trace: ${error.stack} ` : ""}`); throw new Error(`Babel transformation failed for ${source.id}`); } } chunk3ONWID2V_cjs.__name(transform, "transform"); exports.transform = transform; //# sourceMappingURL=chunk-YJTZDESI.cjs.map //# sourceMappingURL=chunk-YJTZDESI.cjs.map