Mirror: The spec-compliant minimum of client-side GraphQL.
1import type * as GraphQL from 'graphql';
2
3import type { Kind, OperationTypeNode } from './kind';
4import type { Or, Location } from './types';
5
6import type {
7 TypeSystemDefinitionNode,
8 TypeSystemExtensionNode,
9 SchemaDefinitionNode,
10 OperationTypeDefinitionNode,
11 ScalarTypeDefinitionNode,
12 ObjectTypeDefinitionNode,
13 FieldDefinitionNode,
14 InputValueDefinitionNode,
15 InterfaceTypeDefinitionNode,
16 UnionTypeDefinitionNode,
17 EnumTypeDefinitionNode,
18 EnumValueDefinitionNode,
19 InputObjectTypeDefinitionNode,
20 DirectiveDefinitionNode,
21 SchemaExtensionNode,
22 ScalarTypeExtensionNode,
23 ObjectTypeExtensionNode,
24 InterfaceTypeExtensionNode,
25 UnionTypeExtensionNode,
26 EnumTypeExtensionNode,
27 InputObjectTypeExtensionNode,
28} from './schemaAst';
29
30export type ASTNode = Or<
31 GraphQL.ASTNode,
32 | NameNode
33 | DocumentNode
34 | OperationDefinitionNode
35 | VariableDefinitionNode
36 | VariableNode
37 | SelectionSetNode
38 | FieldNode
39 | ArgumentNode
40 | FragmentSpreadNode
41 | InlineFragmentNode
42 | FragmentDefinitionNode
43 | IntValueNode
44 | FloatValueNode
45 | StringValueNode
46 | BooleanValueNode
47 | NullValueNode
48 | EnumValueNode
49 | ListValueNode
50 | ObjectValueNode
51 | ObjectFieldNode
52 | DirectiveNode
53 | NamedTypeNode
54 | ListTypeNode
55 | NonNullTypeNode
56 | SchemaDefinitionNode
57 | OperationTypeDefinitionNode
58 | ScalarTypeDefinitionNode
59 | ObjectTypeDefinitionNode
60 | FieldDefinitionNode
61 | InputValueDefinitionNode
62 | InterfaceTypeDefinitionNode
63 | UnionTypeDefinitionNode
64 | EnumTypeDefinitionNode
65 | EnumValueDefinitionNode
66 | InputObjectTypeDefinitionNode
67 | DirectiveDefinitionNode
68 | SchemaExtensionNode
69 | ScalarTypeExtensionNode
70 | ObjectTypeExtensionNode
71 | InterfaceTypeExtensionNode
72 | UnionTypeExtensionNode
73 | EnumTypeExtensionNode
74 | InputObjectTypeExtensionNode
75>;
76
77export type NameNode = Or<
78 GraphQL.NameNode,
79 {
80 readonly kind: Kind.NAME;
81 readonly value: string;
82 readonly loc?: Location;
83 }
84>;
85
86export type DocumentNode = Or<
87 GraphQL.DocumentNode,
88 {
89 readonly kind: Kind.DOCUMENT;
90 readonly definitions: ReadonlyArray<DefinitionNode>;
91 readonly loc?: Location;
92 }
93>;
94
95export type DefinitionNode = Or<
96 GraphQL.DefinitionNode,
97 ExecutableDefinitionNode | TypeSystemDefinitionNode | TypeSystemExtensionNode
98>;
99
100export type ExecutableDefinitionNode = Or<
101 GraphQL.ExecutableDefinitionNode,
102 OperationDefinitionNode | FragmentDefinitionNode
103>;
104
105export type OperationDefinitionNode = Or<
106 GraphQL.OperationDefinitionNode & { description?: StringValueNode },
107 {
108 readonly kind: Kind.OPERATION_DEFINITION;
109 readonly operation: OperationTypeNode;
110 readonly name?: NameNode;
111 readonly description?: StringValueNode;
112 readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;
113 readonly directives?: ReadonlyArray<DirectiveNode>;
114 readonly selectionSet: SelectionSetNode;
115 readonly loc?: Location;
116 }
117>;
118
119export type VariableDefinitionNode = Or<
120 GraphQL.VariableDefinitionNode & { description?: StringValueNode },
121 {
122 readonly kind: Kind.VARIABLE_DEFINITION;
123 readonly variable: VariableNode;
124 readonly type: TypeNode;
125 readonly defaultValue?: ConstValueNode;
126 readonly description?: StringValueNode;
127 readonly directives?: ReadonlyArray<ConstDirectiveNode>;
128 readonly loc?: Location;
129 }
130>;
131
132export type VariableNode = Or<
133 GraphQL.VariableNode,
134 {
135 readonly kind: Kind.VARIABLE;
136 readonly name: NameNode;
137 readonly loc?: Location;
138 }
139>;
140
141export type SelectionSetNode = Or<
142 GraphQL.SelectionSetNode,
143 {
144 readonly kind: Kind.SELECTION_SET;
145 readonly selections: ReadonlyArray<SelectionNode>;
146 readonly loc?: Location;
147 }
148>;
149
150export declare type SelectionNode = Or<
151 GraphQL.SelectionNode,
152 FieldNode | FragmentSpreadNode | InlineFragmentNode
153>;
154
155export type FieldNode = Or<
156 GraphQL.FieldNode,
157 {
158 readonly kind: Kind.FIELD;
159 readonly alias?: NameNode;
160 readonly name: NameNode;
161 readonly arguments?: ReadonlyArray<ArgumentNode>;
162 readonly directives?: ReadonlyArray<DirectiveNode>;
163 readonly selectionSet?: SelectionSetNode;
164 readonly loc?: Location;
165 }
166>;
167
168export type ArgumentNode = Or<
169 GraphQL.ArgumentNode,
170 {
171 readonly kind: Kind.ARGUMENT;
172 readonly name: NameNode;
173 readonly value: ValueNode;
174 readonly loc?: Location;
175 }
176>;
177
178export type ConstArgumentNode = Or<
179 GraphQL.ConstArgumentNode,
180 {
181 readonly kind: Kind.ARGUMENT;
182 readonly name: NameNode;
183 readonly value: ConstValueNode;
184 readonly loc?: Location;
185 }
186>;
187
188export type FragmentSpreadNode = Or<
189 GraphQL.FragmentSpreadNode,
190 {
191 readonly kind: Kind.FRAGMENT_SPREAD;
192 readonly name: NameNode;
193 readonly directives?: ReadonlyArray<DirectiveNode>;
194 readonly loc?: Location;
195 }
196>;
197
198export type InlineFragmentNode = Or<
199 GraphQL.InlineFragmentNode,
200 {
201 readonly kind: Kind.INLINE_FRAGMENT;
202 readonly typeCondition?: NamedTypeNode;
203 readonly directives?: ReadonlyArray<DirectiveNode>;
204 readonly selectionSet: SelectionSetNode;
205 readonly loc?: Location;
206 }
207>;
208
209export type FragmentDefinitionNode = Or<
210 GraphQL.FragmentDefinitionNode & { description?: StringValueNode },
211 {
212 readonly kind: Kind.FRAGMENT_DEFINITION;
213 readonly name: NameNode;
214 readonly description?: StringValueNode;
215 readonly typeCondition: NamedTypeNode;
216 readonly directives?: ReadonlyArray<DirectiveNode>;
217 readonly selectionSet: SelectionSetNode;
218 readonly loc?: Location;
219 }
220>;
221
222export type ValueNode = Or<
223 GraphQL.ValueNode,
224 | VariableNode
225 | IntValueNode
226 | FloatValueNode
227 | StringValueNode
228 | BooleanValueNode
229 | NullValueNode
230 | EnumValueNode
231 | ListValueNode
232 | ObjectValueNode
233>;
234
235export type ConstValueNode = Or<
236 GraphQL.ConstValueNode,
237 | IntValueNode
238 | FloatValueNode
239 | StringValueNode
240 | BooleanValueNode
241 | NullValueNode
242 | EnumValueNode
243 | ConstListValueNode
244 | ConstObjectValueNode
245>;
246
247export type IntValueNode = Or<
248 GraphQL.IntValueNode,
249 {
250 readonly kind: Kind.INT;
251 readonly value: string;
252 readonly loc?: Location;
253 }
254>;
255
256export type FloatValueNode = Or<
257 GraphQL.FloatValueNode,
258 {
259 readonly kind: Kind.FLOAT;
260 readonly value: string;
261 readonly loc?: Location;
262 }
263>;
264
265export type StringValueNode = Or<
266 GraphQL.StringValueNode,
267 {
268 readonly kind: Kind.STRING;
269 readonly value: string;
270 readonly block?: boolean;
271 readonly loc?: Location;
272 }
273>;
274
275export type BooleanValueNode = Or<
276 GraphQL.BooleanValueNode,
277 {
278 readonly kind: Kind.BOOLEAN;
279 readonly value: boolean;
280 readonly loc?: Location;
281 }
282>;
283
284export type NullValueNode = Or<
285 GraphQL.NullValueNode,
286 {
287 readonly kind: Kind.NULL;
288 readonly loc?: Location;
289 }
290>;
291
292export type EnumValueNode = Or<
293 GraphQL.EnumValueNode,
294 {
295 readonly kind: Kind.ENUM;
296 readonly value: string;
297 readonly loc?: Location;
298 }
299>;
300
301export type ListValueNode = Or<
302 GraphQL.ListValueNode,
303 {
304 readonly kind: Kind.LIST;
305 readonly values: ReadonlyArray<ValueNode>;
306 readonly loc?: Location;
307 }
308>;
309
310export type ConstListValueNode = Or<
311 GraphQL.ConstListValueNode,
312 {
313 readonly kind: Kind.LIST;
314 readonly values: ReadonlyArray<ConstValueNode>;
315 readonly loc?: Location;
316 }
317>;
318
319export type ObjectValueNode = Or<
320 GraphQL.ObjectValueNode,
321 {
322 readonly kind: Kind.OBJECT;
323 readonly fields: ReadonlyArray<ObjectFieldNode>;
324 readonly loc?: Location;
325 }
326>;
327
328export type ConstObjectValueNode = Or<
329 GraphQL.ConstObjectValueNode,
330 {
331 readonly kind: Kind.OBJECT;
332 readonly fields: ReadonlyArray<ConstObjectFieldNode>;
333 readonly loc?: Location;
334 }
335>;
336
337export type ObjectFieldNode = Or<
338 GraphQL.ObjectFieldNode,
339 {
340 readonly kind: Kind.OBJECT_FIELD;
341 readonly name: NameNode;
342 readonly value: ValueNode;
343 readonly loc?: Location;
344 }
345>;
346
347export type ConstObjectFieldNode = Or<
348 GraphQL.ConstObjectFieldNode,
349 {
350 readonly kind: Kind.OBJECT_FIELD;
351 readonly name: NameNode;
352 readonly value: ConstValueNode;
353 readonly loc?: Location;
354 }
355>;
356
357export type DirectiveNode = Or<
358 GraphQL.DirectiveNode,
359 {
360 readonly kind: Kind.DIRECTIVE;
361 readonly name: NameNode;
362 readonly arguments?: ReadonlyArray<ArgumentNode>;
363 readonly loc?: Location;
364 }
365>;
366
367export type ConstDirectiveNode = Or<
368 GraphQL.ConstDirectiveNode,
369 {
370 readonly kind: Kind.DIRECTIVE;
371 readonly name: NameNode;
372 readonly arguments?: ReadonlyArray<ConstArgumentNode>;
373 readonly loc?: Location;
374 }
375>;
376
377export type TypeNode = Or<GraphQL.TypeNode, NamedTypeNode | ListTypeNode | NonNullTypeNode>;
378
379export type NamedTypeNode = Or<
380 GraphQL.NamedTypeNode,
381 {
382 readonly kind: Kind.NAMED_TYPE;
383 readonly name: NameNode;
384 readonly loc?: Location;
385 }
386>;
387
388export type ListTypeNode = Or<
389 GraphQL.ListTypeNode,
390 {
391 readonly kind: Kind.LIST_TYPE;
392 readonly type: TypeNode;
393 readonly loc?: Location;
394 }
395>;
396
397export type NonNullTypeNode = Or<
398 GraphQL.NonNullTypeNode,
399 {
400 readonly kind: Kind.NON_NULL_TYPE;
401 readonly type: NamedTypeNode | ListTypeNode;
402 readonly loc?: Location;
403 }
404>;