| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = traverseFast; |
| |
| var _definitions = require("../definitions"); |
| |
| function traverseFast(node, enter, opts) { |
| if (!node) return; |
| const keys = _definitions.VISITOR_KEYS[node.type]; |
| if (!keys) return; |
| opts = opts || {}; |
| enter(node, opts); |
| |
| for (const key of keys) { |
| const subNode = node[key]; |
| |
| if (Array.isArray(subNode)) { |
| for (const node of subNode) { |
| traverseFast(node, enter, opts); |
| } |
| } else { |
| traverseFast(subNode, enter, opts); |
| } |
| } |
| } |