UNPKG

2.6 kBTypeScriptView Raw
1import {Node} from 'acorn';
2
3declare module "acorn-walk" {
4 type FullWalkerCallback<TState> = (
5 node: Node,
6 state: TState,
7 type: string
8 ) => void;
9
10 type FullAncestorWalkerCallback<TState> = (
11 node: Node,
12 state: TState | Node[],
13 ancestors: Node[],
14 type: string
15 ) => void;
16 type WalkerCallback<TState> = (node: Node, state: TState) => void;
17
18 type SimpleWalkerFn<TState> = (
19 node: Node,
20 state: TState
21 ) => void;
22
23 type AncestorWalkerFn<TState> = (
24 node: Node,
25 state: TState| Node[],
26 ancestors: Node[]
27 ) => void;
28
29 type RecursiveWalkerFn<TState> = (
30 node: Node,
31 state: TState,
32 callback: WalkerCallback<TState>
33 ) => void;
34
35 type SimpleVisitors<TState> = {
36 [type: string]: SimpleWalkerFn<TState>
37 };
38
39 type AncestorVisitors<TState> = {
40 [type: string]: AncestorWalkerFn<TState>
41 };
42
43 type RecursiveVisitors<TState> = {
44 [type: string]: RecursiveWalkerFn<TState>
45 };
46
47 type FindPredicate = (type: string, node: Node) => boolean;
48
49 interface Found<TState> {
50 node: Node,
51 state: TState
52 }
53
54 export function simple<TState>(
55 node: Node,
56 visitors: SimpleVisitors<TState>,
57 base?: RecursiveVisitors<TState>,
58 state?: TState
59 ): void;
60
61 export function ancestor<TState>(
62 node: Node,
63 visitors: AncestorVisitors<TState>,
64 base?: RecursiveVisitors<TState>,
65 state?: TState
66 ): void;
67
68 export function recursive<TState>(
69 node: Node,
70 state: TState,
71 functions: RecursiveVisitors<TState>,
72 base?: RecursiveVisitors<TState>
73 ): void;
74
75 export function full<TState>(
76 node: Node,
77 callback: FullWalkerCallback<TState>,
78 base?: RecursiveVisitors<TState>,
79 state?: TState
80 ): void;
81
82 export function fullAncestor<TState>(
83 node: Node,
84 callback: FullAncestorWalkerCallback<TState>,
85 base?: RecursiveVisitors<TState>,
86 state?: TState
87 ): void;
88
89 export function make<TState>(
90 functions: RecursiveVisitors<TState>,
91 base?: RecursiveVisitors<TState>
92 ): RecursiveVisitors<TState>;
93
94 export function findNodeAt<TState>(
95 node: Node,
96 start: number | undefined,
97 end: number | undefined,
98 type: string,
99 base?: RecursiveVisitors<TState>,
100 state?: TState
101 ): Found<TState> | undefined;
102
103 export function findNodeAt<TState>(
104 node: Node,
105 start: number | undefined,
106 end: number | undefined,
107 type?: FindPredicate,
108 base?: RecursiveVisitors<TState>,
109 state?: TState
110 ): Found<TState> | undefined;
111
112 export const findNodeAround: typeof findNodeAt;
113
114 export const findNodeAfter: typeof findNodeAt;
115}