UNPKG

1.17 kBTypeScriptView Raw
1import * as AST from '../types/nodes';
2import { VisitorKey } from '../types/visitor-keys';
3import Path from './path';
4export interface FullNodeTraversal<N extends AST.Node> {
5 enter?(node: N, path: Path<N>): void;
6 exit?(node: N, path: Path<N>): void;
7 keys?: KeysVisitor<N>;
8}
9export declare type NodeHandler<N extends AST.Node> = (node: N, path: Path<N>) => void;
10export declare type NodeTraversal<N extends AST.Node> = FullNodeTraversal<N> | NodeHandler<N>;
11export declare type NodeVisitor = {
12 [P in keyof AST.Nodes]?: NodeTraversal<AST.Nodes[P]>;
13} & {
14 All?: NodeTraversal<AST.Node>;
15};
16export interface FullKeyTraversal<N extends AST.Node, K extends string> {
17 enter?(node: N, key: K): void;
18 exit?(node: N, key: K): void;
19}
20export declare type KeyHandler<N extends AST.Node, K extends VisitorKey<N>> = (node: N, key: K) => void;
21export declare type KeyTraversal<N extends AST.Node, K extends VisitorKey<N>> = FullKeyTraversal<N, K> | KeyHandler<N, K>;
22export declare type KeysVisitor<N extends AST.Node> = {
23 [P in VisitorKey<N>]?: KeyTraversal<N, P>;
24} & {
25 All?: KeyTraversal<N, VisitorKey<N>>;
26};
27//# sourceMappingURL=visitor.d.ts.map
\No newline at end of file