| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = _default;var _t = require("@babel/types");const {  assignmentExpression,  cloneNode,  isIdentifier,  isLiteral,  isMemberExpression,  isPrivateName,  isPureish,  isSuper,  memberExpression,  toComputedKey} = _t;function getObjRef(node, nodes, scope) {  let ref;  if (isIdentifier(node)) {    if (scope.hasBinding(node.name)) {      return node;    } else {      ref = node;    }  } else if (isMemberExpression(node)) {    ref = node.object;    if (isSuper(ref) || isIdentifier(ref) && scope.hasBinding(ref.name)) {      return ref;    }  } else {    throw new Error(`We can't explode this node type ${node["type"]}`);  }  const temp = scope.generateUidIdentifierBasedOnNode(ref);  scope.push({    id: temp  });  nodes.push(assignmentExpression("=", cloneNode(temp), cloneNode(ref)));  return temp;}function getPropRef(node, nodes, scope) {  const prop = node.property;  if (isPrivateName(prop)) {    throw new Error("We can't generate property ref for private name, please install `@babel/plugin-proposal-class-properties`");  }  const key = toComputedKey(node, prop);  if (isLiteral(key) && isPureish(key)) return key;  const temp = scope.generateUidIdentifierBasedOnNode(prop);  scope.push({    id: temp  });  nodes.push(assignmentExpression("=", cloneNode(temp), cloneNode(prop)));  return temp;}function _default(node, nodes, file, scope, allowedSingleIdent) {  let obj;  if (isIdentifier(node) && allowedSingleIdent) {    obj = node;  } else {    obj = getObjRef(node, nodes, scope);  }  let ref, uid;  if (isIdentifier(node)) {    ref = cloneNode(node);    uid = obj;  } else {    const prop = getPropRef(node, nodes, scope);    const computed = node.computed || isLiteral(prop);    uid = memberExpression(cloneNode(obj), cloneNode(prop), computed);    ref = memberExpression(cloneNode(obj), cloneNode(prop), computed);  }  return {    uid: uid,    ref: ref  };}
 |