astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
21 lines (16 loc) • 2.47 kB
JavaScript
export default function forEachNode(t, paths, nodeTypes, iteratee) {
const visited = new Set()
function visitNode(path) {
if (visited.has(path.node)) return
visited.add(path.node)
iteratee(path)
this.traverse(path)
}
const visitor = {}
for (const nodeType of nodeTypes) {
visitor[`visit${nodeType}`] = visitNode
}
paths.forEach((path) => {
t.visit(path.node, visitor)
})
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmb3JFYWNoTm9kZSIsInQiLCJwYXRocyIsIm5vZGVUeXBlcyIsIml0ZXJhdGVlIiwidmlzaXRlZCIsIlNldCIsInZpc2l0Tm9kZSIsInBhdGgiLCJoYXMiLCJub2RlIiwiYWRkIiwidHJhdmVyc2UiLCJ2aXNpdG9yIiwibm9kZVR5cGUiLCJmb3JFYWNoIiwidmlzaXQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mb3JFYWNoTm9kZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBBc3RUeXBlcyBmcm9tICdhc3QtdHlwZXMnXG5pbXBvcnQgeyBOb2RlVHlwZSwgTm9kZVBhdGggfSBmcm9tICcuLi90eXBlcydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZm9yRWFjaE5vZGUoXG4gIHQ6IHR5cGVvZiBBc3RUeXBlcyxcbiAgcGF0aHM6IHJlYWRvbmx5IE5vZGVQYXRoW10sXG4gIG5vZGVUeXBlczogcmVhZG9ubHkgTm9kZVR5cGVbXSxcbiAgaXRlcmF0ZWU6IChwYXRoOiBOb2RlUGF0aCkgPT4gdm9pZFxuKTogdm9pZCB7XG4gIGNvbnN0IHZpc2l0ZWQgPSBuZXcgU2V0KClcbiAgZnVuY3Rpb24gdmlzaXROb2RlKHRoaXM6IGFueSwgcGF0aDogTm9kZVBhdGgpIHtcbiAgICBpZiAodmlzaXRlZC5oYXMocGF0aC5ub2RlKSkgcmV0dXJuXG4gICAgdmlzaXRlZC5hZGQocGF0aC5ub2RlKVxuICAgIGl0ZXJhdGVlKHBhdGgpXG4gICAgdGhpcy50cmF2ZXJzZShwYXRoKVxuICB9XG4gIGNvbnN0IHZpc2l0b3I6IEFzdFR5cGVzLlZpc2l0b3IgPSB7fVxuICBmb3IgKGNvbnN0IG5vZGVUeXBlIG9mIG5vZGVUeXBlcykge1xuICAgIDsodmlzaXRvciBhcyBhbnkpW2B2aXNpdCR7bm9kZVR5cGV9YF0gPSB2aXNpdE5vZGVcbiAgfVxuICBwYXRocy5mb3JFYWNoKChwYXRoOiBOb2RlUGF0aCkgPT4ge1xuICAgIHQudmlzaXQocGF0aC5ub2RlLCB2aXNpdG9yKVxuICB9KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7QUFHQSxlQUFlLFNBQVNBLFdBQVQ7QUFDYkMsQ0FEYTtBQUViQyxLQUZhO0FBR2JDLFNBSGE7QUFJYkMsUUFKYTtBQUtQO0VBQ04sTUFBTUMsT0FBTyxHQUFHLElBQUlDLEdBQUosRUFBaEI7RUFDQSxTQUFTQyxTQUFULENBQThCQyxJQUE5QixFQUE4QztJQUM1QyxJQUFJSCxPQUFPLENBQUNJLEdBQVIsQ0FBWUQsSUFBSSxDQUFDRSxJQUFqQixDQUFKLEVBQTRCO0lBQzVCTCxPQUFPLENBQUNNLEdBQVIsQ0FBWUgsSUFBSSxDQUFDRSxJQUFqQjtJQUNBTixRQUFRLENBQUNJLElBQUQsQ0FBUjtJQUNBLEtBQUtJLFFBQUwsQ0FBY0osSUFBZDtFQUNEO0VBQ0QsTUFBTUssT0FBeUIsR0FBRyxFQUFsQztFQUNBLEtBQUssTUFBTUMsUUFBWCxJQUF1QlgsU0FBdkIsRUFBa0M7SUFDaEMsQ0FBRVUsT0FBRCxDQUFrQixRQUFPQyxRQUFTLEVBQWxDLElBQXVDUCxTQUF2QztFQUNGO0VBQ0RMLEtBQUssQ0FBQ2EsT0FBTixDQUFjLENBQUNQLElBQUQsS0FBb0I7SUFDaENQLENBQUMsQ0FBQ2UsS0FBRixDQUFRUixJQUFJLENBQUNFLElBQWIsRUFBbUJHLE9BQW5CO0VBQ0QsQ0FGRDtBQUdEIn0=