siphon-cli
Version:
Simple bundler for web applications. 📦🔧🧡
46 lines (45 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("../../../../../types");
var creator_1 = require("../helpers/creator");
function rewrite_destructured_variables(node, path) {
for (var i = 0; node.declarations[i]; i++) {
var dec = node.declarations[i];
if (dec.id instanceof types_1.ObjectPattern) {
var settlerObject = (0, creator_1.newIdentifier)("_s" +
(Math.random() * 10).toPrecision(1) +
Math.random().toString(16).slice(11) +
"$$_");
for (var j = 0; dec.id.properties[j]; j++) {
var property = dec.id.properties[j];
if (!property.computed && property.value instanceof types_1.Identifier) {
var newDec = new types_1.VariableDeclarator(dec.loc.start);
newDec.id = (0, creator_1.newIdentifier)(property.value.name);
newDec.init = (0, creator_1.memberExpression)(settlerObject, property.key);
newDec.loc.end = dec.loc.end;
node.declarations.push(newDec);
}
}
dec.id = settlerObject;
}
else if (dec.id instanceof types_1.ArrayPattern) {
var k = 0;
var settlerObject = (0, creator_1.newIdentifier)("_si" +
(Math.random() * 10).toPrecision(1) +
Math.random().toString(16).slice(8) +
"$$_");
for (var j = 0; dec.id.elements[j]; j++) {
var element = dec.id.elements[j];
if (element instanceof types_1.Identifier) {
var newDec = new types_1.VariableDeclarator(dec.loc.start);
newDec.id = (0, creator_1.newIdentifier)(element.name);
newDec.init = (0, creator_1.memberExpression)(settlerObject, (0, creator_1.numberLiteral)(k++), true);
node.declarations.push(newDec);
}
}
dec.id = settlerObject;
}
}
return node;
}
exports.default = rewrite_destructured_variables;