An error occurred while loading the file. Please try again.
misc.js 3.05 KiB
"use strict";
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.injectInitialization = injectInitialization;
exports.extractComputedKeys = extractComputedKeys;
var _core = require("@babel/core");
var _helperReplaceSupers = require("@babel/helper-replace-supers");
const findBareSupers = _core.traverse.visitors.merge([{
  Super(path) {
    const {
      node,
      parentPath
    } = path;
    if (parentPath.isCallExpression({
      callee: node
    })) {
      this.push(parentPath);
}, _helperReplaceSupers.environmentVisitor]);
const referenceVisitor = {
  "TSTypeAnnotation|TypeAnnotation"(path) {
    path.skip();
  ReferencedIdentifier(path) {
    if (this.scope.hasOwnBinding(path.node.name)) {
      this.scope.rename(path.node.name);
      path.skip();
const classFieldDefinitionEvaluationTDZVisitor = _core.traverse.visitors.merge([{
  ReferencedIdentifier(path) {
    if (this.classBinding && this.classBinding === path.scope.getBinding(path.node.name)) {
      const classNameTDZError = this.file.addHelper("classNameTDZError");
      const throwNode = _core.types.callExpression(classNameTDZError, [_core.types.stringLiteral(path.node.name)]);
      path.replaceWith(_core.types.sequenceExpression([throwNode, path.node]));
      path.skip();
}, _helperReplaceSupers.environmentVisitor]);
function injectInitialization(path, constructor, nodes, renamer) {
  if (!nodes.length) return;
  const isDerived = !!path.node.superClass;
  if (!constructor) {
    const newConstructor = _core.types.classMethod("constructor", _core.types.identifier("constructor"), [], _core.types.blockStatement([]));
    if (isDerived) {
      newConstructor.params = [_core.types.restElement(_core.types.identifier("args"))];
      newConstructor.body.body.push(_core.template.statement.ast`super(...args)`);
    [constructor] = path.get("body").unshiftContainer("body", newConstructor);
if (renamer) { renamer(referenceVisitor, { scope: constructor.scope }); } if (isDerived) { const bareSupers = []; constructor.traverse(findBareSupers, bareSupers); for (const bareSuper of bareSupers) { bareSuper.insertAfter(nodes); } } else { constructor.get("body").unshiftContainer("body", nodes); } } function extractComputedKeys(ref, path, computedPaths, file) { const declarations = []; for (const computedPath of computedPaths) { computedPath.traverse(classFieldDefinitionEvaluationTDZVisitor, { classBinding: path.node.id && path.scope.getBinding(path.node.id.name), file }); const computedNode = computedPath.node; if (!computedPath.get("key").isConstantExpression()) { const ident = path.scope.generateUidIdentifierBasedOnNode(computedNode.key); path.scope.push({ id: ident, kind: "let" }); declarations.push(_core.types.expressionStatement(_core.types.assignmentExpression("=", _core.types.cloneNode(ident), computedNode.key))); computedNode.key = _core.types.cloneNode(ident); } } return declarations; }