@storm-stack/core
Version:
A build toolkit and runtime used by Storm Software in TypeScript applications
1 lines • 6.48 kB
Source Map (JSON)
{"version":3,"sources":["../../src/lib/unbuild/loader.ts"],"names":["TS_EXTS","Set","getUnbuildLoader","context","input","options","test","path","output","contents","getContents","declaration","srcPath","match","cm","extension","push","has","transform","compiler","compile","Object","fromEntries","entries","esbuild","filter","key","loader","then","r","code","includes","isCjs","format","resolver","source","retainLines","replace","ext","startsWith"],"mappings":"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","file":"chunk-E34OWNIJ.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 type { Loader, LoaderResult } from \"@storm-software/unbuild/types\";\nimport { transform } from \"esbuild\";\nimport type { Context } from \"../../types/context\";\n\nconst TS_EXTS = new Set([\".ts\", \".mts\", \".cts\"]);\n\nexport const getUnbuildLoader = (context: Context): Loader => {\n return async (input, { options }) => {\n if (\n !/\\.(?:c|m)?[jt]sx?$/.test(input.path) ||\n /\\.d\\.[cm]?ts$/.test(input.path)\n ) {\n return;\n }\n\n const output: LoaderResult = [];\n\n let contents = await input.getContents();\n\n // declaration\n if (options.declaration && !input.srcPath?.match(/\\.d\\.[cm]?ts$/)) {\n const cm = input.srcPath?.match(/(?<=\\.)(?:c|m)(?=[jt]s$)/)?.[0] || \"\";\n const extension = `.d.${cm}ts`;\n output.push({\n contents,\n srcPath: input.srcPath,\n path: input.path,\n extension,\n declaration: true\n });\n }\n\n // typescript => js\n if (TS_EXTS.has(input.extension)) {\n contents = await transform(\n await context.compiler.compile(context, input.path, contents),\n {\n ...Object.fromEntries(\n Object.entries(options.esbuild ?? {}).filter(\n ([key]) => key !== \"absPaths\"\n )\n ),\n loader: \"ts\"\n }\n ).then(r => r.code);\n } else if ([\".tsx\", \".jsx\"].includes(input.extension)) {\n contents = await transform(\n await context.compiler.compile(context, input.path, contents),\n {\n loader: input.extension === \".tsx\" ? \"tsx\" : \"jsx\",\n ...Object.fromEntries(\n Object.entries(options.esbuild ?? {}).filter(\n ([key]) => key !== \"absPaths\"\n )\n )\n }\n ).then(r => r.code);\n }\n\n // esm => cjs\n const isCjs = options.format === \"cjs\";\n if (isCjs) {\n contents = context.resolver\n .transform({\n source: contents,\n retainLines: false\n })\n .replace(/^exports.default = /gm, \"module.exports = \")\n .replace(/^var _default = exports.default = /gm, \"module.exports = \")\n .replace(\"module.exports = void 0;\", \"\");\n }\n\n let extension = isCjs ? \".js\" : \".mjs\"; // TODO: Default to .cjs in next major version\n if (options.ext) {\n extension = options.ext.startsWith(\".\") ? options.ext : `.${options.ext}`;\n }\n\n output.push({\n contents,\n path: input.path,\n extension\n });\n\n return output;\n };\n};\n"]}