1234567891011121314151617181920212223242526272829303132333435 |
- // @ts-check
- import { SyncWalker } from './sync.js';
- import { AsyncWalker } from './async.js';
- /** @typedef { import('estree').BaseNode} BaseNode */
- /** @typedef { import('./sync.js').SyncHandler} SyncHandler */
- /** @typedef { import('./async.js').AsyncHandler} AsyncHandler */
- /**
- *
- * @param {BaseNode} ast
- * @param {{
- * enter?: SyncHandler
- * leave?: SyncHandler
- * }} walker
- * @returns {BaseNode}
- */
- export function walk(ast, { enter, leave }) {
- const instance = new SyncWalker(enter, leave);
- return instance.visit(ast, null);
- }
- /**
- *
- * @param {BaseNode} ast
- * @param {{
- * enter?: AsyncHandler
- * leave?: AsyncHandler
- * }} walker
- * @returns {Promise<BaseNode>}
- */
- export async function asyncWalk(ast, { enter, leave }) {
- const instance = new AsyncWalker(enter, leave);
- return await instance.visit(ast, null);
- }
|