31 lines
561 B
JavaScript
31 lines
561 B
JavaScript
|
|
const { map } = require('ramda');
|
|
|
|
const visit = (node, visitor) => {
|
|
if (!node || (typeof node !== 'object' && !Array.isArray(node))) {
|
|
return node;
|
|
}
|
|
|
|
return map(value => {
|
|
if (value && visitor[value.type]) {
|
|
return visitor[value.type](value);
|
|
}
|
|
|
|
return visit(value, visitor);
|
|
}, node);
|
|
};
|
|
|
|
module.exports = ast => {
|
|
let shouldSkip = false;
|
|
|
|
ast = visit(ast, {
|
|
RegExpLiteral(node) {
|
|
// WORKAROUND: https://github.com/babel/@babel/eslint-parser/issues/838
|
|
shouldSkip = true;
|
|
return node;
|
|
},
|
|
});
|
|
|
|
return { ast, shouldSkip };
|
|
};
|