| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = void 0;var _helperPluginUtils = require("@babel/helper-plugin-utils");var _default = exports.default = (0, _helperPluginUtils.declare)(api => {  api.assertVersion("^7.0.0-0 || >8.0.0-alpha <8.0.0-beta");  const {    types: t,    template  } = api;  function build(left, right) {    return t.callExpression(t.memberExpression(t.identifier("Math"), t.identifier("pow")), [left, right]);  }  function maybeMemoize(node, scope) {    if (scope.isStatic(node)) {      return {        assign: node,        ref: t.cloneNode(node)      };    }    if (scope.path.isPattern()) {      return null;    }    const id = scope.generateUidIdentifierBasedOnNode(node);    scope.push({      id    });    return {      assign: t.assignmentExpression("=", t.cloneNode(id), node),      ref: t.cloneNode(id)    };  }  return {    name: "transform-exponentiation-operator",    visitor: {      AssignmentExpression(path) {        const {          node,          scope        } = path;        if (node.operator !== "**=") return;        if (t.isMemberExpression(node.left)) {          let member1;          let member2;          const object = maybeMemoize(node.left.object, scope);          if (!object) {            path.replaceWith(template.expression.ast`(() => ${path.node})()`);            return;          }          const {            property,            computed          } = node.left;          if (computed) {            const prop = maybeMemoize(property, scope);            member1 = t.memberExpression(object.assign, prop.assign, true);            member2 = t.memberExpression(object.ref, prop.ref, true);          } else {            member1 = t.memberExpression(object.assign, property, false);            member2 = t.memberExpression(object.ref, t.cloneNode(property), false);          }          path.replaceWith(t.assignmentExpression("=", member1, build(member2, node.right)));        } else {          path.replaceWith(t.assignmentExpression("=", node.left, build(t.cloneNode(node.left), node.right)));        }      },      BinaryExpression(path) {        const {          node        } = path;        if (node.operator === "**") {          path.replaceWith(build(node.left, node.right));        }      }    }  };});//# sourceMappingURL=index.js.map
 |