line_push/node_modules/rewrite-imports/dist/rewrite.js
2022-07-17 13:16:16 +08:00

26 lines
858 B
JavaScript

'use strict';
var UNNAMED = /(^|;|\s+)import\s*['"]([^'"]+)['"](?=($|;|\s))/gi;
var NAMED = /(^|[;\s]+)?import\s*(\*\s*as)?\s*(\w*?)\s*,?\s*(?:\{([\s\S]*?)\})?\s*from\s*['"]([^'"]+)['"];?/gi;
function destruct(keys, target) {
var out=[];
while (keys.length) out.push(keys.shift().trim().replace(/ as /g, ':'));
return 'const { ' + out.join(', ') + ' } = ' + target + ';';
}
function generate(keys, dep, base, fn) {
dep = fn + "('" + dep + "')";
if (keys.length && !base) return destruct(keys, dep);
return 'const ' + base + ' = ' + dep + ';' + (keys.length ? '\n' + destruct(keys, base) : '');
}
module.exports = function (str, fn) {
fn = fn || 'require';
return str
.replace(UNNAMED, "$1" + fn + "('$2')")
.replace(NAMED, function (x, y, z, base, req, dep) {
return (y || '') + generate(req ? req.split(',') : [], dep, base, fn);
});
}