forked from webpack/webpack-cli
-
Notifications
You must be signed in to change notification settings - Fork 0
/
NodePath.ts
95 lines (89 loc) · 2.41 KB
/
NodePath.ts
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
export interface Node extends Object {
id?: {
name: string;
};
arguments?: Node[];
body?: Node[];
elements?: Node[];
expression?: {
left: {
computed: boolean;
object: Node;
property: Node;
type: string;
};
operator: string;
right: Node;
type: string;
value?: string;
};
filter?: (p: (p: Node) => boolean) => Node;
find?: (objectExpression: object, filterExpression?: object) => Node;
forEach?: (p: (p: Node) => void) => Node;
get?: (property: string) => Node;
remove?: () => void;
nodes?: () => Node[];
pop?: () => Node;
key?: {
name: string;
value: Node | string;
};
node?: Node;
name?: string;
object?: object;
parent?: Node;
properties?: Node[];
property?: Node;
prune?: Function;
replaceWith?: (objectExpression: object) => Node;
size?: () => number;
type?: string;
value?: Node | string | Node[];
toSource?: (object: { quote?: string }) => string;
source?: string;
ast?: Node;
rules?: ModuleRule[];
declarations?: Node[];
__paths?: Node[];
}
interface ModuleRule {
loader?: string;
}
interface ExpressionObject {
name?: string;
}
export interface JSCodeshift extends Object {
(source?: Node | string): Node;
withParser?: (parser: string) => JSCodeshift;
identifier?: (key: string) => Node;
literal?: (key: valueType) => Node;
memberExpression?: (node1: Node, node2: Node, bool?: boolean) => Node;
objectProperty?: (key: Node, property: valueType) => Node;
objectExpression?: (properties: Node[]) => Node;
newExpression?: (expression: Node, args: Node[]) => Node;
callExpression?: (expression: Node, args: Node[]) => Node;
variableDeclarator?: (key: Node, args: Node) => Node;
variableDeclaration?: (key: string, args: Node[]) => Node;
arrayExpression?: (args?: Node[]) => Node;
property?: (type: string, key: Node, value: Node) => Node;
program?: (nodes: Node[]) => Node;
booleanLiteral?: (bool: boolean) => Node;
Property?: ExpressionObject;
NewExpression?: ExpressionObject;
CallExpression?: ExpressionObject;
VariableDeclarator?: ExpressionObject;
Identifier?: ExpressionObject;
Literal?: ExpressionObject;
ArrayExpression?: ExpressionObject;
MemberExpression?: ExpressionObject;
FunctionExpression?: ExpressionObject;
ObjectExpression?: ExpressionObject;
BlockStatement?: ExpressionObject;
Program?: ExpressionObject;
filters?: {
VariableDeclarator: {
requiresModule: Function;
};
};
}
export type valueType = string | number | boolean | Node | null;