| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = hoistVariables;var _t = require("@babel/types");const {  assignmentExpression,  expressionStatement,  identifier} = _t;const visitor = {  Scope(path, state) {    if (state.kind === "let") path.skip();  },  FunctionParent(path) {    path.skip();  },  VariableDeclaration(path, state) {    if (state.kind && path.node.kind !== state.kind) return;    const nodes = [];    const declarations = path.get("declarations");    let firstId;    for (const declar of declarations) {      firstId = declar.node.id;      if (declar.node.init) {        nodes.push(expressionStatement(assignmentExpression("=", declar.node.id, declar.node.init)));      }      for (const name of Object.keys(declar.getBindingIdentifiers())) {        state.emit(identifier(name), name, declar.node.init !== null);      }    }    if (path.parentPath.isFor({      left: path.node    })) {      path.replaceWith(firstId);    } else {      path.replaceWithMultiple(nodes);    }  }};function hoistVariables(path, emit, kind = "var") {  path.traverse(visitor, {    kind,    emit  });}
 |