| 123456789101112131415161718192021222324252627282930 | 'use strict';exports.__esModule = true;/** @type {import('./visit').default} */exports.default = function visit(node, keys, visitorSpec) {  if (!node || !keys) {    return;  }  const type = node.type;  const visitor = visitorSpec[type];  if (typeof visitor === 'function') {    visitor(node);  }  const childFields = keys[type];  if (!childFields) {    return;  }  childFields.forEach((fieldName) => {    // @ts-expect-error TS sucks with concat    [].concat(node[fieldName]).forEach((item) => {      visit(item, keys, visitorSpec);    });  });  const exit = visitorSpec[`${type}:Exit`];  if (typeof exit === 'function') {    exit(node);  }};
 |