import { transform } from 'typescript'; import * as ts from 'typescript'; const pluginName = 'rollup-plugin-es6-module-transform'; function getInputTSModule(input: string): ts.ModuleDeclaration { return ts.parseModule(input, { type: 'module', exports: {}, }); } function getOutputTSModule(inputTSModule: ts.ModuleDeclaration): ts.ModuleDeclaration { return ts.createModuleDeclaration( inputTSModule.name.name, inputTSModule.body, { type: 'module', exports: inputTSModule.exports, }, ); } function transformES6Module(input: string, inputTSModule: ts.ModuleDeclaration, outputTSModule: ts.ModuleDeclaration): string { const inputFileName = inputTSModule.name.name + '.js'; const outputFileName = outputTSModule.name.name + '.js'; return ts.transform(input, { outDir: 'build', module: 'ES6', sourcemap: true, typescript: getInputTSModule, rename: (_, name) => name, sourcemapName: outputFileName, }) .then((result) => result.code) .then((code) => { return code.replace(/\$\{[a-z]+}/g, (match) => { const variableName = match.replace(/\[.+?\]/g, ''); return `$${variableName}`; }); }) .then(() => outputFileName); } const plugin = { name: pluginName, transform, }; export default plugin;