123456789101112131415161718192021222324 |
- 'use strict';
- exports.__esModule = true;
- exports.default = function visit(node, keys, visitorSpec) {
- if (!node || !keys) {
- return;
- }
- const type = node.type;
- if (typeof visitorSpec[type] === 'function') {
- visitorSpec[type](node);
- }
- const childFields = keys[type];
- if (!childFields) {
- return;
- }
- childFields.forEach((fieldName) => {
- [].concat(node[fieldName]).forEach((item) => {
- visit(item, keys, visitorSpec);
- });
- });
- if (typeof visitorSpec[`${type}:Exit`] === 'function') {
- visitorSpec[`${type}:Exit`](node);
- }
- };
|