Files
react-native-devtools-frontend/node_modules/eslint-module-utils/visit.js
T
Tim van der Lippe bc3a0b7a2b Upgrade eslint-plugin-import
R=jacktfranklin@chromium.org

Bug: none
Change-Id: I0ad7ba9133af3db19c448a284d79bdfc08101dea
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3268294
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Jack Franklin <jacktfranklin@chromium.org>
2021-11-08 16:05:33 +00:00

25 lines
569 B
JavaScript

'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);
}
};