description and source-code1 = function () {
var REASSIGN_REMAP_SKIP = (0, _symbol2.default)();
var reassignmentVisitor = {
ReferencedIdentifier: function ReferencedIdentifier(path) {
var name = path.node.name;
var remap = this.remaps[name];
if (!remap) return;
if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
if (path.parentPath.isCallExpression({ callee: path.node })) {
path.replaceWith(t.sequenceExpression([t.numericLiteral(0), remap]));
} else if (path.isJSXIdentifier() && t.isMemberExpression(remap)) {
var object = remap.object,
property = remap.property;
path.replaceWith(t.JSXMemberExpression(t.JSXIdentifier(object.name), t.JSXIdentifier(property.name)));
} else {
path.replaceWith(remap);
}
this.requeueInParent(path);
},
AssignmentExpression: function AssignmentExpression(path) {
var node = path.node;
if (node[REASSIGN_REMAP_SKIP]) return;
var left = path.get("left");
if (!left.isIdentifier()) return;
var name = left.node.name;
var exports = this.exports[name];
if (!exports) return;
if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
node[REASSIGN_REMAP_SKIP] = true;
for (var _iterator = exports, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : (0, _getIterator3
.default)(_iterator);;) {
var _ref;
if (_isArray) {
if (_i >= _iterator.length) break;
_ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
_ref = _i.value;
}
var reid = _ref;
node = buildExportsAssignment(reid, node).expression;
}
path.replaceWith(node);
this.requeueInParent(path);
},
UpdateExpression: function UpdateExpression(path) {
var arg = path.get("argument");
if (!arg.isIdentifier()) return;
var name = arg.node.name;
var exports = this.exports[name];
if (!exports) return;
if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
var node = t.assignmentExpression(path.node.operator[0] + "=", arg.node, t.numericLiteral(1));
if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord() || path.node.prefix) {
path.replaceWith(node);
this.requeueInParent(path);
return;
}
var nodes = [];
nodes.push(node);
var operator = void 0;
if (path.node.operator === "--") {
operator = "+";
} else {
operator = "-";
}
nodes.push(t.binaryExpression(operator, arg.node, t.numericLiteral(1)));
path.replaceWithMultiple(t.sequenceExpression(nodes));
}
};
return {
inherits: require("babel-plugin-transform-strict-mode"),
visitor: {
ThisExpression: function ThisExpression(path, state) {
if (this.ranCommonJS) return;
if (state.opts.allowTopLevelThis !== true && !path.findParent(function (path) {
return !path.is("shadow") && THIS_BREAK_KEYS.indexOf(path.type) >= 0;
})) {
path.replaceWith(t.identifier("undefined"));
}
},
Program: {
exit: function exit(path) {
this.ranCommonJS = true;
var strict = !!this.opts.strict;
var noInterop = !!this.opts.noInterop;
var scope = path.scope;
scope.rename("module");
scope.rename("exports");
scope.rename("require");
var hasExports = false;
var hasImports = false;
var body = path.get("body");
var imports = (0, _create2.default)(null);
var exports = (0, _create2.default)(null);
var nonHoistedExportNames = (0, _create2.default)(null);
var topNodes = [];
var remaps = (0, _create2.default)(null);
var requires = (0, _create2.default)(null);
function addRequire(source, blockHoist) {
var cached = requires[source]; ...