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,
107 {
108 readonly kind: Kind.OPERATION_DEFINITION;
109 readonly operation: OperationTypeNode;
110 readonly name?: NameNode;
111 readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>;
112 readonly directives?: ReadonlyArray<DirectiveNode>;
113 readonly selectionSet: SelectionSetNode;
114 readonly loc?: Location;
115 }
116>;
117
118export type VariableDefinitionNode = Or<
119 GraphQL.VariableDefinitionNode,
120 {
121 readonly kind: Kind.VARIABLE_DEFINITION;
122 readonly variable: VariableNode;
123 readonly type: TypeNode;
124 readonly defaultValue?: ConstValueNode;
125 readonly directives?: ReadonlyArray<ConstDirectiveNode>;
126 readonly loc?: Location;
127 }
128>;
129
130export type VariableNode = Or<
131 GraphQL.VariableNode,
132 {
133 readonly kind: Kind.VARIABLE;
134 readonly name: NameNode;
135 readonly loc?: Location;
136 }
137>;
138
139export type SelectionSetNode = Or<
140 GraphQL.SelectionSetNode,
141 {
142 readonly kind: Kind.SELECTION_SET;
143 readonly selections: ReadonlyArray<SelectionNode>;
144 readonly loc?: Location;
145 }
146>;
147
148export declare type SelectionNode = Or<
149 GraphQL.SelectionNode,
150 FieldNode | FragmentSpreadNode | InlineFragmentNode
151>;
152
153export type FieldNode = Or<
154 GraphQL.FieldNode,
155 {
156 readonly kind: Kind.FIELD;
157 readonly alias?: NameNode;
158 readonly name: NameNode;
159 readonly arguments?: ReadonlyArray<ArgumentNode>;
160 readonly directives?: ReadonlyArray<DirectiveNode>;
161 readonly selectionSet?: SelectionSetNode;
162 readonly loc?: Location;
163 }
164>;
165
166export type ArgumentNode = Or<
167 GraphQL.ArgumentNode,
168 {
169 readonly kind: Kind.ARGUMENT;
170 readonly name: NameNode;
171 readonly value: ValueNode;
172 readonly loc?: Location;
173 }
174>;
175
176export type ConstArgumentNode = Or<
177 GraphQL.ConstArgumentNode,
178 {
179 readonly kind: Kind.ARGUMENT;
180 readonly name: NameNode;
181 readonly value: ConstValueNode;
182 readonly loc?: Location;
183 }
184>;
185
186export type FragmentSpreadNode = Or<
187 GraphQL.FragmentSpreadNode,
188 {
189 readonly kind: Kind.FRAGMENT_SPREAD;
190 readonly name: NameNode;
191 readonly directives?: ReadonlyArray<DirectiveNode>;
192 readonly loc?: Location;
193 }
194>;
195
196export type InlineFragmentNode = Or<
197 GraphQL.InlineFragmentNode,
198 {
199 readonly kind: Kind.INLINE_FRAGMENT;
200 readonly typeCondition?: NamedTypeNode;
201 readonly directives?: ReadonlyArray<DirectiveNode>;
202 readonly selectionSet: SelectionSetNode;
203 readonly loc?: Location;
204 }
205>;
206
207export type FragmentDefinitionNode = Or<
208 GraphQL.FragmentDefinitionNode,
209 {
210 readonly kind: Kind.FRAGMENT_DEFINITION;
211 readonly name: NameNode;
212 readonly typeCondition: NamedTypeNode;
213 readonly directives?: ReadonlyArray<DirectiveNode>;
214 readonly selectionSet: SelectionSetNode;
215 readonly loc?: Location;
216 }
217>;
218
219export type ValueNode = Or<
220 GraphQL.ValueNode,
221 | VariableNode
222 | IntValueNode
223 | FloatValueNode
224 | StringValueNode
225 | BooleanValueNode
226 | NullValueNode
227 | EnumValueNode
228 | ListValueNode
229 | ObjectValueNode
230>;
231
232export type ConstValueNode = Or<
233 GraphQL.ConstValueNode,
234 | IntValueNode
235 | FloatValueNode
236 | StringValueNode
237 | BooleanValueNode
238 | NullValueNode
239 | EnumValueNode
240 | ConstListValueNode
241 | ConstObjectValueNode
242>;
243
244export type IntValueNode = Or<
245 GraphQL.IntValueNode,
246 {
247 readonly kind: Kind.INT;
248 readonly value: string;
249 readonly loc?: Location;
250 }
251>;
252
253export type FloatValueNode = Or<
254 GraphQL.FloatValueNode,
255 {
256 readonly kind: Kind.FLOAT;
257 readonly value: string;
258 readonly loc?: Location;
259 }
260>;
261
262export type StringValueNode = Or<
263 GraphQL.FloatValueNode,
264 {
265 readonly kind: Kind.STRING;
266 readonly value: string;
267 readonly block?: boolean;
268 readonly loc?: Location;
269 }
270>;
271
272export type BooleanValueNode = Or<
273 GraphQL.BooleanValueNode,
274 {
275 readonly kind: Kind.BOOLEAN;
276 readonly value: boolean;
277 readonly loc?: Location;
278 }
279>;
280
281export type NullValueNode = Or<
282 GraphQL.NullValueNode,
283 {
284 readonly kind: Kind.NULL;
285 readonly loc?: Location;
286 }
287>;
288
289export type EnumValueNode = Or<
290 GraphQL.EnumValueNode,
291 {
292 readonly kind: Kind.ENUM;
293 readonly value: string;
294 readonly loc?: Location;
295 }
296>;
297
298export type ListValueNode = Or<
299 GraphQL.ListValueNode,
300 {
301 readonly kind: Kind.LIST;
302 readonly values: ReadonlyArray<ValueNode>;
303 readonly loc?: Location;
304 }
305>;
306
307export type ConstListValueNode = Or<
308 GraphQL.ConstListValueNode,
309 {
310 readonly kind: Kind.LIST;
311 readonly values: ReadonlyArray<ConstValueNode>;
312 readonly loc?: Location;
313 }
314>;
315
316export type ObjectValueNode = Or<
317 GraphQL.ObjectValueNode,
318 {
319 readonly kind: Kind.OBJECT;
320 readonly fields: ReadonlyArray<ObjectFieldNode>;
321 readonly loc?: Location;
322 }
323>;
324
325export type ConstObjectValueNode = Or<
326 GraphQL.ConstObjectValueNode,
327 {
328 readonly kind: Kind.OBJECT;
329 readonly fields: ReadonlyArray<ConstObjectFieldNode>;
330 readonly loc?: Location;
331 }
332>;
333
334export type ObjectFieldNode = Or<
335 GraphQL.ObjectFieldNode,
336 {
337 readonly kind: Kind.OBJECT_FIELD;
338 readonly name: NameNode;
339 readonly value: ValueNode;
340 readonly loc?: Location;
341 }
342>;
343
344export type ConstObjectFieldNode = Or<
345 GraphQL.ConstObjectFieldNode,
346 {
347 readonly kind: Kind.OBJECT_FIELD;
348 readonly name: NameNode;
349 readonly value: ConstValueNode;
350 readonly loc?: Location;
351 }
352>;
353
354export type DirectiveNode = Or<
355 GraphQL.DirectiveNode,
356 {
357 readonly kind: Kind.DIRECTIVE;
358 readonly name: NameNode;
359 readonly arguments?: ReadonlyArray<ArgumentNode>;
360 readonly loc?: Location;
361 }
362>;
363
364export type ConstDirectiveNode = Or<
365 GraphQL.ConstDirectiveNode,
366 {
367 readonly kind: Kind.DIRECTIVE;
368 readonly name: NameNode;
369 readonly arguments?: ReadonlyArray<ConstArgumentNode>;
370 readonly loc?: Location;
371 }
372>;
373
374export type TypeNode = Or<GraphQL.TypeNode, NamedTypeNode | ListTypeNode | NonNullTypeNode>;
375
376export type NamedTypeNode = Or<
377 GraphQL.NamedTypeNode,
378 {
379 readonly kind: Kind.NAMED_TYPE;
380 readonly name: NameNode;
381 readonly loc?: Location;
382 }
383>;
384
385export type ListTypeNode = Or<
386 GraphQL.ListTypeNode,
387 {
388 readonly kind: Kind.LIST_TYPE;
389 readonly type: TypeNode;
390 readonly loc?: Location;
391 }
392>;
393
394export type NonNullTypeNode = Or<
395 GraphQL.NonNullTypeNode,
396 {
397 readonly kind: Kind.NON_NULL_TYPE;
398 readonly type: NamedTypeNode | ListTypeNode;
399 readonly loc?: Location;
400 }
401>;