UNPKG

@storm-stack/core

Version:

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

1 lines 18.2 kB
{"version":3,"sources":["../../src/lib/babel/transform.ts"],"names":["transform","log","context","source","options","corePath","process","env","STORM_STACK_LOCAL","joinPaths","workspaceRoot","resolvePackage","Error","sourceFile","isParentPath","id","skipAllTransforms","getString","code","includes","babelOptions","babel","plugins","presets","Array","isArray","length","LogLevelLabel","WARN","reduce","ret","plugin","isDuplicatePlugin","isFunction","filter","DEBUG","chalk","bold","cyanBright","getPluginName","push","undefined","INFO","preset","onPreTransform","Promise","resolve","TRACE","result","transformAsync","defu","filename","map","name","highlightCode","ast","cloneInputAst","comments","sourceType","configFile","babelrc","envName","mode","caller","getMagicString","onPostTransform","error","ERROR","message","isSetString","slice","stack"],"mappings":"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","file":"chunk-YJTZDESI.cjs","sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Storm Stack\n\n This code was released as part of the Storm Stack project. Storm Stack\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/storm-stack.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/storm-stack\n Documentation: https://docs.stormsoftware.com/projects/storm-stack\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { transformAsync } from \"@babel/core\";\nimport { LogLevelLabel } from \"@storm-software/config-tools/types\";\nimport { isParentPath } from \"@stryke/path/is-parent-path\";\nimport { joinPaths } from \"@stryke/path/join-paths\";\nimport { resolvePackage } from \"@stryke/path/resolve\";\nimport { isFunction } from \"@stryke/type-checks/is-function\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport chalk from \"chalk\";\nimport { defu } from \"defu\";\nimport { BabelPlugin, ResolvedBabelPluginItem } from \"../../types/babel\";\nimport { CompilerOptions, SourceFile } from \"../../types/compiler\";\nimport { LogFn } from \"../../types/config\";\nimport { Context } from \"../../types/context\";\nimport { getMagicString, getString } from \"../utilities/source-file\";\nimport { getPluginName, isDuplicatePlugin } from \"./helpers\";\n\n/**\n * Transform the code using the Storm Stack Babel plugin.\n *\n * @param log - The logging function to use.\n * @param context - The context of the transformation.\n * @param source - The source file to transform.\n * @param options - The options for the transformation.\n * @returns The transformed source file.\n */\nexport async function transform(\n log: LogFn,\n context: Context,\n source: SourceFile,\n options: CompilerOptions = {}\n): Promise<SourceFile> {\n try {\n const corePath = process.env.STORM_STACK_LOCAL\n ? joinPaths(context.options.workspaceRoot, \"packages/core\")\n : await resolvePackage(\"@storm-stack/core\");\n if (!corePath) {\n throw new Error(\"Could not resolve @storm-stack/core package location.\");\n }\n\n let sourceFile = source;\n if (\n (process.env.STORM_STACK_LOCAL &&\n isParentPath(sourceFile.id, corePath)) ||\n options.skipAllTransforms ||\n getString(sourceFile.code).includes(\"/* @storm-ignore */\") ||\n getString(sourceFile.code).includes(\"/* @storm-disable */\")\n ) {\n return sourceFile;\n }\n\n const babelOptions = { ...context.options.babel, ...options.babel };\n if (\n !babelOptions ||\n (!babelOptions.plugins && !babelOptions.presets) ||\n (Array.isArray(babelOptions.plugins) &&\n babelOptions.plugins.length === 0 &&\n Array.isArray(babelOptions.presets) &&\n babelOptions.presets.length === 0)\n ) {\n log(\n LogLevelLabel.WARN,\n `No Babel plugins or presets configured for ${sourceFile.id}. Skipping Babel transformation.`\n );\n return sourceFile;\n }\n\n const plugins = babelOptions.plugins.reduce<ResolvedBabelPluginItem[]>(\n (ret, plugin) => {\n if (!isDuplicatePlugin(ret, plugin)) {\n if (Array.isArray(plugin) && plugin.length > 0 && plugin[0]) {\n if (\n plugin.length > 2 &&\n plugin[2] &&\n isFunction(plugin[2].filter) &&\n // eslint-disable-next-line ts/no-unsafe-call\n !plugin[2].filter(sourceFile)\n ) {\n log(\n LogLevelLabel.DEBUG,\n `Skipping filtered Babel plugin ${chalk.bold.cyanBright(\n getPluginName(plugin) || \"unnamed\"\n )} for ${sourceFile.id}`\n );\n return ret;\n }\n\n ret.push([\n isFunction(plugin[0]) ? plugin[0](context) : plugin[0],\n {\n ...(plugin.length > 1 && plugin[1] ? plugin[1] : {}),\n options\n },\n plugin.length > 2 ? plugin[2] : undefined\n ] as ResolvedBabelPluginItem);\n } else {\n ret.push([\n isFunction(plugin) ? plugin(context) : plugin,\n {\n options\n },\n undefined\n ] as ResolvedBabelPluginItem);\n }\n } else {\n log(\n LogLevelLabel.INFO,\n `Skipping duplicate Babel plugin ${getPluginName(plugin)} for ${sourceFile.id}`\n );\n }\n\n return ret;\n },\n []\n );\n const presets = babelOptions.presets.reduce<ResolvedBabelPluginItem[]>(\n (ret, preset) => {\n if (!isDuplicatePlugin(ret, preset)) {\n if (Array.isArray(preset) && preset.length > 0 && preset[0]) {\n if (\n preset.length > 2 &&\n preset[2] &&\n isFunction(preset[2].filter) &&\n // eslint-disable-next-line ts/no-unsafe-call\n !preset[2].filter(sourceFile)\n ) {\n log(\n LogLevelLabel.INFO,\n `Skipping filtered Babel preset ${getPluginName(preset)} for ${sourceFile.id}`\n );\n return ret;\n }\n\n ret.push([\n isFunction(preset[0]) ? preset[0](context) : preset[0],\n {\n ...(preset.length > 1 && preset[1] ? preset[1] : {}),\n options\n },\n preset.length > 2 ? preset[2] : undefined\n ] as ResolvedBabelPluginItem);\n } else {\n ret.push([\n isFunction(preset) ? preset(context) : preset,\n {\n options\n },\n undefined\n ] as ResolvedBabelPluginItem);\n }\n } else {\n log(\n LogLevelLabel.INFO,\n `Skipping duplicate Babel preset ${getPluginName(preset)} for ${sourceFile.id}`\n );\n }\n\n return ret;\n },\n []\n );\n\n for (const plugin of plugins.filter(plugin =>\n isFunction(plugin[2]?.onPreTransform)\n )) {\n sourceFile = await Promise.resolve(\n plugin[2]!.onPreTransform!(context, sourceFile)\n );\n }\n\n for (const preset of presets.filter(preset =>\n isFunction(preset[2]?.onPreTransform)\n )) {\n sourceFile = await Promise.resolve(\n preset[2]!.onPreTransform!(context, sourceFile)\n );\n }\n\n log(LogLevelLabel.TRACE, `Transforming ${sourceFile.id} with Babel`);\n\n const result = await transformAsync(\n getString(sourceFile.code),\n defu(\n {\n filename: sourceFile.id,\n plugins: [\n \"@babel/plugin-syntax-typescript\",\n ...plugins.map(plugin => {\n return [\n plugin[0],\n defu(plugin.length > 1 && plugin[1] ? plugin[1] : {}, {\n options\n }),\n (plugin[0] as BabelPlugin)?.name\n ];\n })\n ],\n presets: presets.map(preset => {\n return [\n preset[0],\n defu(preset.length > 1 && preset[1] ? preset[1] : {}, {\n options\n }),\n (preset[0] as BabelPlugin)?.name\n ];\n })\n },\n babelOptions\n ? {\n ...babelOptions,\n plugins: [],\n presets: []\n }\n : {},\n {\n highlightCode: true,\n code: true,\n ast: false,\n cloneInputAst: false,\n comments: true,\n sourceType: \"module\",\n configFile: false,\n babelrc: false,\n envName: context.options.mode,\n caller: {\n name: \"storm-stack\"\n }\n }\n ) as Parameters<typeof transformAsync>[1]\n );\n if (!result?.code) {\n throw new Error(\n `BabelPluginStormStack failed to compile ${sourceFile.id}`\n );\n }\n\n log(\n LogLevelLabel.TRACE,\n `Completed Babel transformations of ${sourceFile.id}`\n );\n\n sourceFile.code = getMagicString(result.code);\n\n for (const plugin of plugins.filter(plugin =>\n isFunction(plugin[2]?.onPostTransform)\n )) {\n sourceFile = await Promise.resolve(\n plugin[2]!.onPostTransform!(context, sourceFile)\n );\n }\n\n for (const preset of presets.filter(preset =>\n isFunction(preset[2]?.onPostTransform)\n )) {\n sourceFile = await Promise.resolve(\n preset[2]!.onPostTransform!(context, sourceFile)\n );\n }\n\n return sourceFile;\n } catch (error) {\n context.log(\n LogLevelLabel.ERROR,\n `Error during Babel transformation: ${\n error?.message\n ? isSetString(error.message)\n ? error.message.length > 5000\n ? `${(error.message as string).slice(0, 5000)}... ${(\n error.message as string\n ).slice(-100)}`\n : error.message\n : error.message\n : \"Unknown error\"\n }\\n${error?.stack ? `\\nStack trace:\\n${error.stack}\\n` : \"\"}`\n );\n\n throw new Error(`Babel transformation failed for ${source.id}`);\n }\n}\n"]}