7b071ce8fd40fc8fc793e254e2149a1b50b7254f5715f9db036192da7361aabef04ec4cf073da59857ff01feec194060462dd5b45fa37a4ddc3670fe78d622 961 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.default = traverseFast;
  6. var _index = require("../definitions/index.js");
  7. const _skip = Symbol();
  8. const _stop = Symbol();
  9. function traverseFast(node, enter, opts) {
  10. if (!node) return false;
  11. const keys = _index.VISITOR_KEYS[node.type];
  12. if (!keys) return false;
  13. opts = opts || {};
  14. const ret = enter(node, opts);
  15. if (ret !== undefined) {
  16. switch (ret) {
  17. case _skip:
  18. return false;
  19. case _stop:
  20. return true;
  21. }
  22. }
  23. for (const key of keys) {
  24. const subNode = node[key];
  25. if (!subNode) continue;
  26. if (Array.isArray(subNode)) {
  27. for (const node of subNode) {
  28. if (traverseFast(node, enter, opts)) return true;
  29. }
  30. } else {
  31. if (traverseFast(subNode, enter, opts)) return true;
  32. }
  33. }
  34. return false;
  35. }
  36. traverseFast.skip = _skip;
  37. traverseFast.stop = _stop;
  38. //# sourceMappingURL=traverseFast.js.map