UNPKG

cosmiconfig-typescript-swc-loader

Version:
27 lines (26 loc) 934 B
import { transformSync } from "@swc/core"; import vm from "vm"; export function TypeScriptSWCLoader(options) { return (_path, content) => { const script = transformSync(content, { // TODO: migrate to `ts-config.json` based config (#3) module: { type: "commonjs", }, jsc: { target: "es3", parser: { syntax: "typescript", }, }, ...options, }); const vmScript = new vm.Script(script.code); const sandbox = { module: { exports: {} }, exports: {} }; vmScript.runInNewContext(sandbox, options); return Object.keys(sandbox.module.exports).length > 0 ? sandbox.module.exports : // eslint-disable-next-line @typescript-eslint/no-explicit-any sandbox.exports.default || sandbox.exports; }; }