UNPKG

4.72 kBTypeScriptView Raw
1// Type definitions for ESTree AST extensions for Facebook Flow
2// Project: https://github.com/estree/estree
3// Definitions by: RReverser <https://github.com/RReverser>
4// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
5
6
7
8declare namespace ESTree {
9 interface FlowTypeAnnotation extends Node {}
10
11 interface FlowBaseTypeAnnotation extends FlowTypeAnnotation {}
12
13 interface FlowLiteralTypeAnnotation extends FlowTypeAnnotation, Literal {}
14
15 interface FlowDeclaration extends Declaration {}
16
17 interface AnyTypeAnnotation extends FlowBaseTypeAnnotation {}
18
19 interface ArrayTypeAnnotation extends FlowTypeAnnotation {
20 elementType: FlowTypeAnnotation;
21 }
22
23 interface BooleanLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
24
25 interface BooleanTypeAnnotation extends FlowBaseTypeAnnotation {}
26
27 interface ClassImplements extends Node {
28 id: Identifier;
29 typeParameters?: TypeParameterInstantiation | null;
30 }
31
32 interface ClassProperty {
33 key: Expression;
34 value?: Expression | null;
35 typeAnnotation?: TypeAnnotation | null;
36 computed: boolean;
37 static: boolean;
38 }
39
40 interface DeclareClass extends FlowDeclaration {
41 id: Identifier;
42 typeParameters?: TypeParameterDeclaration | null;
43 body: ObjectTypeAnnotation;
44 extends: Array<InterfaceExtends>;
45 }
46
47 interface DeclareFunction extends FlowDeclaration {
48 id: Identifier;
49 }
50
51 interface DeclareModule extends FlowDeclaration {
52 id: Literal | Identifier;
53 body: BlockStatement;
54 }
55
56 interface DeclareVariable extends FlowDeclaration {
57 id: Identifier;
58 }
59
60 interface FunctionTypeAnnotation extends FlowTypeAnnotation {
61 params: Array<FunctionTypeParam>;
62 returnType: FlowTypeAnnotation;
63 rest?: FunctionTypeParam | null;
64 typeParameters?: TypeParameterDeclaration | null;
65 }
66
67 interface FunctionTypeParam {
68 name: Identifier;
69 typeAnnotation: FlowTypeAnnotation;
70 optional: boolean;
71 }
72
73 interface GenericTypeAnnotation extends FlowTypeAnnotation {
74 id: Identifier | QualifiedTypeIdentifier;
75 typeParameters?: TypeParameterInstantiation | null;
76 }
77
78 interface InterfaceExtends extends Node {
79 id: Identifier | QualifiedTypeIdentifier;
80 typeParameters?: TypeParameterInstantiation | null;
81 }
82
83 interface InterfaceDeclaration extends FlowDeclaration {
84 id: Identifier;
85 typeParameters?: TypeParameterDeclaration | null;
86 extends: Array<InterfaceExtends>;
87 body: ObjectTypeAnnotation;
88 }
89
90 interface IntersectionTypeAnnotation extends FlowTypeAnnotation {
91 types: Array<FlowTypeAnnotation>;
92 }
93
94 interface MixedTypeAnnotation extends FlowBaseTypeAnnotation {}
95
96 interface NullableTypeAnnotation extends FlowTypeAnnotation {
97 typeAnnotation: TypeAnnotation;
98 }
99
100 interface NumberLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
101
102 interface NumberTypeAnnotation extends FlowBaseTypeAnnotation {}
103
104 interface StringLiteralTypeAnnotation extends FlowLiteralTypeAnnotation {}
105
106 interface StringTypeAnnotation extends FlowBaseTypeAnnotation {}
107
108 interface TupleTypeAnnotation extends FlowTypeAnnotation {
109 types: Array<FlowTypeAnnotation>;
110 }
111
112 interface TypeofTypeAnnotation extends FlowTypeAnnotation {
113 argument: FlowTypeAnnotation;
114 }
115
116 interface TypeAlias extends FlowDeclaration {
117 id: Identifier;
118 typeParameters?: TypeParameterDeclaration | null;
119 right: FlowTypeAnnotation;
120 }
121
122 interface TypeAnnotation extends Node {
123 typeAnnotation: FlowTypeAnnotation;
124 }
125
126 interface TypeCastExpression extends Expression {
127 expression: Expression;
128 typeAnnotation: TypeAnnotation;
129 }
130
131 interface TypeParameterDeclaration extends Node {
132 params: Array<Identifier>;
133 }
134
135 interface TypeParameterInstantiation extends Node {
136 params: Array<FlowTypeAnnotation>;
137 }
138
139 interface ObjectTypeAnnotation extends FlowTypeAnnotation {
140 properties: Array<ObjectTypeProperty>;
141 indexers: Array<ObjectTypeIndexer>;
142 callProperties: Array<ObjectTypeCallProperty>;
143 }
144
145 interface ObjectTypeCallProperty extends Node {
146 value: FunctionTypeAnnotation;
147 static: boolean;
148 }
149
150 interface ObjectTypeIndexer extends Node {
151 id: Identifier;
152 key: FlowTypeAnnotation;
153 value: FlowTypeAnnotation;
154 static: boolean;
155 }
156
157 interface ObjectTypeProperty extends Node {
158 key: Expression;
159 value: FlowTypeAnnotation;
160 optional: boolean;
161 static: boolean;
162 }
163
164 interface QualifiedTypeIdentifier extends Node {
165 qualification: Identifier | QualifiedTypeIdentifier;
166 id: Identifier;
167 }
168
169 interface UnionTypeAnnotation extends FlowTypeAnnotation {
170 types: Array<FlowTypeAnnotation>;
171 }
172
173 interface VoidTypeAnnotation extends FlowBaseTypeAnnotation {}
174}