| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 | "use strict";Object.defineProperty(exports, "__esModule", {  value: true});exports.default = exports.SHOULD_STOP = exports.SHOULD_SKIP = exports.REMOVED = void 0;var virtualTypes = require("./lib/virtual-types");var _debug = require("debug");var _index = require("../index");var _scope = require("../scope");var _t = require("@babel/types");var t = _t;var _cache = require("../cache");var _generator = require("@babel/generator");var NodePath_ancestry = require("./ancestry");var NodePath_inference = require("./inference");var NodePath_replacement = require("./replacement");var NodePath_evaluation = require("./evaluation");var NodePath_conversion = require("./conversion");var NodePath_introspection = require("./introspection");var NodePath_context = require("./context");var NodePath_removal = require("./removal");var NodePath_modification = require("./modification");var NodePath_family = require("./family");var NodePath_comments = require("./comments");const {  validate} = _t;const debug = _debug("babel");const REMOVED = 1 << 0;exports.REMOVED = REMOVED;const SHOULD_STOP = 1 << 1;exports.SHOULD_STOP = SHOULD_STOP;const SHOULD_SKIP = 1 << 2;exports.SHOULD_SKIP = SHOULD_SKIP;class NodePath {  constructor(hub, parent) {    this.contexts = [];    this.state = null;    this.opts = null;    this._traverseFlags = 0;    this.skipKeys = null;    this.parentPath = null;    this.container = null;    this.listKey = null;    this.key = null;    this.node = null;    this.type = null;    this.parent = parent;    this.hub = hub;    this.data = null;    this.context = null;    this.scope = null;  }  static get({    hub,    parentPath,    parent,    container,    listKey,    key  }) {    if (!hub && parentPath) {      hub = parentPath.hub;    }    if (!parent) {      throw new Error("To get a node path the parent needs to exist");    }    const targetNode = container[key];    let paths = _cache.path.get(parent);    if (!paths) {      paths = new Map();      _cache.path.set(parent, paths);    }    let path = paths.get(targetNode);    if (!path) {      path = new NodePath(hub, parent);      if (targetNode) paths.set(targetNode, path);    }    path.setup(parentPath, container, listKey, key);    return path;  }  getScope(scope) {    return this.isScope() ? new _scope.default(this) : scope;  }  setData(key, val) {    if (this.data == null) {      this.data = Object.create(null);    }    return this.data[key] = val;  }  getData(key, def) {    if (this.data == null) {      this.data = Object.create(null);    }    let val = this.data[key];    if (val === undefined && def !== undefined) val = this.data[key] = def;    return val;  }  buildCodeFrameError(msg, Error = SyntaxError) {    return this.hub.buildError(this.node, msg, Error);  }  traverse(visitor, state) {    (0, _index.default)(this.node, visitor, this.scope, state, this);  }  set(key, node) {    validate(this.node, key, node);    this.node[key] = node;  }  getPathLocation() {    const parts = [];    let path = this;    do {      let key = path.key;      if (path.inList) key = `${path.listKey}[${key}]`;      parts.unshift(key);    } while (path = path.parentPath);    return parts.join(".");  }  debug(message) {    if (!debug.enabled) return;    debug(`${this.getPathLocation()} ${this.type}: ${message}`);  }  toString() {    return (0, _generator.default)(this.node).code;  }  get inList() {    return !!this.listKey;  }  set inList(inList) {    if (!inList) {      this.listKey = null;    }  }  get parentKey() {    return this.listKey || this.key;  }  get shouldSkip() {    return !!(this._traverseFlags & SHOULD_SKIP);  }  set shouldSkip(v) {    if (v) {      this._traverseFlags |= SHOULD_SKIP;    } else {      this._traverseFlags &= ~SHOULD_SKIP;    }  }  get shouldStop() {    return !!(this._traverseFlags & SHOULD_STOP);  }  set shouldStop(v) {    if (v) {      this._traverseFlags |= SHOULD_STOP;    } else {      this._traverseFlags &= ~SHOULD_STOP;    }  }  get removed() {    return !!(this._traverseFlags & REMOVED);  }  set removed(v) {    if (v) {      this._traverseFlags |= REMOVED;    } else {      this._traverseFlags &= ~REMOVED;    }  }}Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments);for (const type of t.TYPES) {  const typeKey = `is${type}`;  const fn = t[typeKey];  NodePath.prototype[typeKey] = function (opts) {    return fn(this.node, opts);  };  NodePath.prototype[`assert${type}`] = function (opts) {    if (!fn(this.node, opts)) {      throw new TypeError(`Expected node path of type ${type}`);    }  };}for (const type of Object.keys(virtualTypes)) {  if (type[0] === "_") continue;  if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type);  const virtualType = virtualTypes[type];  NodePath.prototype[`is${type}`] = function (opts) {    return virtualType.checkPath(this, opts);  };}var _default = NodePath;exports.default = _default;
 |