rollup-plugin-insert
Version:
string mutation plugin for Rollup
51 lines (48 loc) • 1.89 kB
JavaScript
import { createFilter } from 'rollup-pluginutils';
import MagicString from 'magic-string';
const transform = (insert, options = {}) => {
const filter = createFilter(options.include, options.exclude);
const sourceMap = options.sourceMap !== false;
return {
name: 'insert',
transform(code, id) {
if (!filter(id))
return;
let magicString = new MagicString(code);
const output = insert(magicString, code, id);
if (typeof output === 'string') {
magicString.overwrite(0, code.length, output);
}
else if (output instanceof MagicString) {
magicString = output;
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
}
else if (output != null) {
let received;
try {
received = JSON.stringify(output);
}
catch (_a) {
/* istanbul ignore next */
received = String(output);
}
throw new TypeError(`The output content should be an instance of string or MagicString, but received: ${received}`);
}
return {
code: magicString.toString(),
map: sourceMap ? magicString.generateMap() : undefined,
};
},
};
};
const append = (append, options) => transform((magicString) => magicString.append(append), options);
const prepend = (prepend, options) => transform((magicString) => magicString.prepend(prepend), options);
const wrap = (begin, end, options) => transform((magicString) => magicString.prepend(begin).append(end), options);
var index = {
transform,
append,
prepend,
wrap,
};
export default index;
export { append, prepend, transform, wrap };