@ima/plugin-cli
Version:
IMA.js Plugin CLI tool to build, link, develop IMA.js plugins.
51 lines • 1.66 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSwcTransformer = createSwcTransformer;
exports.swcTransformer = swcTransformer;
const core_1 = require("@swc/core");
const EXTENSION_TRANSFORM_RE = /\.(t|j)sx?$/;
/**
* Helper function to create basic swc transformer config.
*/
function createSwcTransformer({ type, target, syntax, development, jsxRuntime, sourceMaps, }) {
return swcTransformer({
isModule: true,
sourceMaps: sourceMaps ?? true,
module: {
type: type ?? 'es6',
},
jsc: {
target,
parser: {
syntax: syntax ?? 'ecmascript',
decorators: false,
dynamicImport: true,
[syntax === 'typescript' ? 'tsx' : 'jsx']: true,
},
transform: {
react: {
useBuiltins: true,
development: !!development,
runtime: jsxRuntime,
},
},
},
});
}
function swcTransformer(options) {
return async ({ source, context }) => {
const newFilename = context.fileName.replace(EXTENSION_TRANSFORM_RE, '.js');
const { code, map } = await (0, core_1.transform)(source.code, {
...options,
filename: newFilename,
sourceFileName: newFilename,
inputSourceMap: source.map,
});
return {
fileName: newFilename,
code: map ? code + `\n//# sourceMappingURL=${newFilename}.map` : code,
map,
};
};
}
//# sourceMappingURL=swcTransformer.js.map