summaryrefslogtreecommitdiff
path: root/school/node_modules/acorn-walk/dist/walk.d.ts
blob: 00cc005f1245c5d445a518a50838445652e550a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import {Node} from 'acorn';

declare module "acorn-walk" {
  type FullWalkerCallback<TState> = (
    node: Node,
    state: TState,
    type: string
  ) => void;

  type FullAncestorWalkerCallback<TState> = (
    node: Node,
    state: TState | Node[],
    ancestors: Node[],
    type: string
  ) => void;
  type WalkerCallback<TState> = (node: Node, state: TState) => void;

  type SimpleWalkerFn<TState> = (
    node: Node,
    state: TState
  ) => void;
  
  type AncestorWalkerFn<TState> = (
    node: Node,
    state: TState| Node[],
    ancestors: Node[]
  ) => void;

  type RecursiveWalkerFn<TState> = (
    node: Node,
    state: TState,
    callback: WalkerCallback<TState>
  ) => void;
  
  type SimpleVisitors<TState> = {
    [type: string]: SimpleWalkerFn<TState>
  };

  type AncestorVisitors<TState> = {
    [type: string]: AncestorWalkerFn<TState>
  };
  
  type RecursiveVisitors<TState> = {
    [type: string]: RecursiveWalkerFn<TState>
  };

  type FindPredicate = (type: string, node: Node) => boolean;

  interface Found<TState> {
    node: Node,
    state: TState
  }

  export function simple<TState>(
    node: Node,
    visitors: SimpleVisitors<TState>,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): void;

  export function ancestor<TState>(
    node: Node,
    visitors: AncestorVisitors<TState>,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): void;

  export function recursive<TState>(
    node: Node,
    state: TState,
    functions: RecursiveVisitors<TState>,
    base?: RecursiveVisitors<TState>
  ): void;

  export function full<TState>(
    node: Node,
    callback: FullWalkerCallback<TState>,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): void;

  export function fullAncestor<TState>(
    node: Node,
    callback: FullAncestorWalkerCallback<TState>,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): void;

  export function make<TState>(
    functions: RecursiveVisitors<TState>,
    base?: RecursiveVisitors<TState>
  ): RecursiveVisitors<TState>;

  export function findNodeAt<TState>(
    node: Node,
    start: number | undefined,
    end?: number | undefined,
    type?: FindPredicate | string,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): Found<TState> | undefined;

  export function findNodeAround<TState>(
    node: Node,
    start: number | undefined,
    type?: FindPredicate | string,
    base?: RecursiveVisitors<TState>,
    state?: TState
  ): Found<TState> | undefined;

  export const findNodeAfter: typeof findNodeAround;
}