| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = void 0;var _helperPluginUtils = require("@babel/helper-plugin-utils");var _pluginSyntaxPrivatePropertyInObject = require("@babel/plugin-syntax-private-property-in-object");var _helperCreateClassFeaturesPlugin = require("@babel/helper-create-class-features-plugin");var _helperAnnotateAsPure = require("@babel/helper-annotate-as-pure");var _default = (0, _helperPluginUtils.declare)(({  assertVersion,  types: t,  template}, {  loose}) => {  assertVersion(7);  const classWeakSets = new WeakMap();  const fieldsWeakSets = new WeakMap();  function unshadow(name, targetScope, scope) {    while (scope !== targetScope) {      if (scope.hasOwnBinding(name)) scope.rename(name);      scope = scope.parent;    }  }  function injectToFieldInit(fieldPath, expr, before = false) {    if (fieldPath.node.value) {      if (before) {        fieldPath.get("value").insertBefore(expr);      } else {        fieldPath.get("value").insertAfter(expr);      }    } else {      fieldPath.set("value", t.unaryExpression("void", expr));    }  }  function injectInitialization(classPath, init) {    let firstFieldPath;    let consturctorPath;    for (const el of classPath.get("body.body")) {      if ((el.isClassProperty() || el.isClassPrivateProperty()) && !el.node.static) {        firstFieldPath = el;        break;      }      if (!consturctorPath && el.isClassMethod({        kind: "constructor"      })) {        consturctorPath = el;      }    }    if (firstFieldPath) {      injectToFieldInit(firstFieldPath, init, true);    } else {      (0, _helperCreateClassFeaturesPlugin.injectInitialization)(classPath, consturctorPath, [t.expressionStatement(init)]);    }  }  function getWeakSetId(weakSets, outerClass, reference, name = "", inject) {    let id = classWeakSets.get(reference.node);    if (!id) {      id = outerClass.scope.generateUidIdentifier(`${name || ""} brandCheck`);      classWeakSets.set(reference.node, id);      inject(reference, template.expression.ast`${t.cloneNode(id)}.add(this)`);      const newExpr = t.newExpression(t.identifier("WeakSet"), []);      (0, _helperAnnotateAsPure.default)(newExpr);      outerClass.insertBefore(template.ast`var ${id} = ${newExpr}`);    }    return t.cloneNode(id);  }  return {    name: "proposal-private-property-in-object",    inherits: _pluginSyntaxPrivatePropertyInObject.default,    pre() {      (0, _helperCreateClassFeaturesPlugin.enableFeature)(this.file, _helperCreateClassFeaturesPlugin.FEATURES.privateIn, loose);    },    visitor: {      BinaryExpression(path) {        const {          node        } = path;        if (node.operator !== "in") return;        if (!t.isPrivateName(node.left)) return;        const {          name        } = node.left.id;        let privateElement;        const outerClass = path.findParent(path => {          if (!path.isClass()) return false;          privateElement = path.get("body.body").find(({            node          }) => t.isPrivate(node) && node.key.id.name === name);          return !!privateElement;        });        if (outerClass.parentPath.scope.path.isPattern()) {          outerClass.replaceWith(template.ast`(() => ${outerClass.node})()`);          return;        }        if (privateElement.isMethod()) {          if (privateElement.node.static) {            if (outerClass.node.id) {              unshadow(outerClass.node.id.name, outerClass.scope, path.scope);            } else {              outerClass.set("id", path.scope.generateUidIdentifier("class"));            }            path.replaceWith(template.expression.ast`                ${t.cloneNode(outerClass.node.id)} === ${path.node.right}              `);          } else {            var _outerClass$node$id;            const id = getWeakSetId(classWeakSets, outerClass, outerClass, (_outerClass$node$id = outerClass.node.id) == null ? void 0 : _outerClass$node$id.name, injectInitialization);            path.replaceWith(template.expression.ast`${id}.has(${path.node.right})`);          }        } else {          const id = getWeakSetId(fieldsWeakSets, outerClass, privateElement, privateElement.node.key.id.name, injectToFieldInit);          path.replaceWith(template.expression.ast`${id}.has(${path.node.right})`);        }      }    }  };});exports.default = _default;
 |