| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = void 0;var _traverse = require("@babel/traverse");var _helperPluginUtils = require("@babel/helper-plugin-utils");var _default = exports.default = (0, _helperPluginUtils.declare)(({  types: t,  assertVersion}) => {  assertVersion(7);  const containsClassExpressionVisitor = {    ClassExpression(path, state) {      state.found = true;      path.stop();    },    Function(path) {      path.skip();    }  };  const containsYieldOrAwaitVisitor = _traverse.visitors.environmentVisitor({    YieldExpression(path, state) {      state.yield = true;      if (state.await) path.stop();    },    AwaitExpression(path, state) {      state.await = true;      if (state.yield) path.stop();    }  });  function containsClassExpression(path) {    if (t.isClassExpression(path.node)) return true;    if (t.isFunction(path.node)) return false;    const state = {      found: false    };    path.traverse(containsClassExpressionVisitor, state);    return state.found;  }  function wrap(path) {    const context = {      yield: t.isYieldExpression(path.node),      await: t.isAwaitExpression(path.node)    };    path.traverse(containsYieldOrAwaitVisitor, context);    let replacement;    if (context.yield) {      const fn = t.functionExpression(null, [], t.blockStatement([t.returnStatement(path.node)]), true, context.await);      replacement = t.yieldExpression(t.callExpression(t.memberExpression(fn, t.identifier("call")), [t.thisExpression(), t.identifier("arguments")]), true);    } else {      const fn = t.arrowFunctionExpression([], path.node, context.await);      replacement = t.callExpression(fn, []);      if (context.await) replacement = t.awaitExpression(replacement);    }    path.replaceWith(replacement);  }  return {    name: "bugfix-firefox-class-in-computed-class-key",    visitor: {      Class(path) {        const hasPrivateElement = path.node.body.body.some(node => t.isPrivate(node));        if (!hasPrivateElement) return;        for (const elem of path.get("body.body")) {          if ("computed" in elem.node && elem.node.computed && containsClassExpression(elem.get("key"))) {            wrap(elem.get("key"));          }        }      }    }  };});//# sourceMappingURL=index.js.map
 |