Mirror: The spec-compliant minimum of client-side GraphQL.
1import type { Kind } from './kind'; 2 3export interface Location { 4 readonly start: number; 5 readonly end: number; 6 readonly source: Source; 7} 8 9export interface Source { 10 body: string; 11 name: string; 12 locationOffset: { 13 line: number; 14 column: number; 15 }; 16} 17 18export declare type ASTNode = 19 | NameNode 20 | DocumentNode 21 | OperationDefinitionNode 22 | VariableDefinitionNode 23 | VariableNode 24 | SelectionSetNode 25 | FieldNode 26 | ArgumentNode 27 | FragmentSpreadNode 28 | InlineFragmentNode 29 | FragmentDefinitionNode 30 | IntValueNode 31 | FloatValueNode 32 | StringValueNode 33 | BooleanValueNode 34 | NullValueNode 35 | EnumValueNode 36 | ListValueNode 37 | ObjectValueNode 38 | ObjectFieldNode 39 | DirectiveNode 40 | NamedTypeNode 41 | ListTypeNode 42 | NonNullTypeNode; 43 44export interface NameNode { 45 readonly kind: Kind.NAME; 46 readonly value: string; 47} 48 49export interface DocumentNode { 50 readonly kind: Kind.DOCUMENT; 51 readonly definitions: ReadonlyArray<ExecutableDefinitionNode>; 52 readonly loc?: Location; 53} 54 55export type DefinitionNode = 56 | OperationDefinitionNode 57 | FragmentDefinitionNode; 58export type ExecutableDefinitionNode = 59 | OperationDefinitionNode 60 | FragmentDefinitionNode; 61 62export interface OperationDefinitionNode { 63 readonly kind: Kind.OPERATION_DEFINITION; 64 readonly operation: OperationTypeNode; 65 readonly name?: NameNode; 66 readonly variableDefinitions?: ReadonlyArray<VariableDefinitionNode>; 67 readonly directives?: ReadonlyArray<DirectiveNode>; 68 readonly selectionSet: SelectionSetNode; 69} 70 71export const enum OperationTypeNode { 72 QUERY = 'query', 73 MUTATION = 'mutation', 74 SUBSCRIPTION = 'subscription', 75} 76 77export interface VariableDefinitionNode { 78 readonly kind: Kind.VARIABLE_DEFINITION; 79 readonly variable: VariableNode; 80 readonly type: TypeNode; 81 readonly defaultValue?: ConstValueNode; 82 readonly directives?: ReadonlyArray<ConstDirectiveNode>; 83} 84 85export interface VariableNode { 86 readonly kind: Kind.VARIABLE; 87 readonly name: NameNode; 88} 89 90export interface SelectionSetNode { 91 kind: Kind.SELECTION_SET; 92 selections: ReadonlyArray<SelectionNode>; 93} 94 95export declare type SelectionNode = 96 | FieldNode 97 | FragmentSpreadNode 98 | InlineFragmentNode; 99 100export interface FieldNode { 101 readonly kind: Kind.FIELD; 102 readonly alias?: NameNode; 103 readonly name: NameNode; 104 readonly arguments?: ReadonlyArray<ArgumentNode>; 105 readonly directives?: ReadonlyArray<DirectiveNode>; 106 readonly selectionSet?: SelectionSetNode; 107} 108 109export interface ArgumentNode { 110 readonly kind: Kind.ARGUMENT; 111 readonly name: NameNode; 112 readonly value: ValueNode; 113} 114 115export interface ConstArgumentNode { 116 readonly kind: Kind.ARGUMENT; 117 readonly name: NameNode; 118 readonly value: ConstValueNode; 119} 120 121export interface FragmentSpreadNode { 122 readonly kind: Kind.FRAGMENT_SPREAD; 123 readonly name: NameNode; 124 readonly directives?: ReadonlyArray<DirectiveNode>; 125} 126 127export interface InlineFragmentNode { 128 readonly kind: Kind.INLINE_FRAGMENT; 129 readonly typeCondition?: NamedTypeNode; 130 readonly directives?: ReadonlyArray<DirectiveNode>; 131 readonly selectionSet: SelectionSetNode; 132} 133 134export interface FragmentDefinitionNode { 135 readonly kind: Kind.FRAGMENT_DEFINITION; 136 readonly name: NameNode; 137 readonly typeCondition: NamedTypeNode; 138 readonly directives?: ReadonlyArray<DirectiveNode>; 139 readonly selectionSet: SelectionSetNode; 140} 141 142export type ValueNode = 143 | VariableNode 144 | IntValueNode 145 | FloatValueNode 146 | StringValueNode 147 | BooleanValueNode 148 | NullValueNode 149 | EnumValueNode 150 | ListValueNode 151 | ObjectValueNode; 152 153export type ConstValueNode = 154 | IntValueNode 155 | FloatValueNode 156 | StringValueNode 157 | BooleanValueNode 158 | NullValueNode 159 | EnumValueNode 160 | ConstListValueNode 161 | ConstObjectValueNode; 162 163export interface IntValueNode { 164 readonly kind: Kind.INT; 165 readonly value: string; 166} 167 168export interface FloatValueNode { 169 readonly kind: Kind.FLOAT; 170 readonly value: string; 171} 172export interface StringValueNode { 173 readonly kind: Kind.STRING; 174 readonly value: string; 175 readonly block?: boolean; 176} 177 178export interface BooleanValueNode { 179 readonly kind: Kind.BOOLEAN; 180 readonly value: boolean; 181} 182 183export interface NullValueNode { 184 readonly kind: Kind.NULL; 185} 186 187export interface EnumValueNode { 188 readonly kind: Kind.ENUM; 189 readonly value: string; 190} 191 192export interface ListValueNode { 193 readonly kind: Kind.LIST; 194 readonly values: ReadonlyArray<ValueNode>; 195} 196 197export interface ConstListValueNode { 198 readonly kind: Kind.LIST; 199 readonly values: ReadonlyArray<ConstValueNode>; 200} 201 202export interface ObjectValueNode { 203 readonly kind: Kind.OBJECT; 204 readonly fields: ReadonlyArray<ObjectFieldNode>; 205} 206 207export interface ConstObjectValueNode { 208 readonly kind: Kind.OBJECT; 209 readonly fields: ReadonlyArray<ConstObjectFieldNode>; 210} 211 212export interface ObjectFieldNode { 213 readonly kind: Kind.OBJECT_FIELD; 214 readonly name: NameNode; 215 readonly value: ValueNode; 216} 217 218export interface ConstObjectFieldNode { 219 readonly kind: Kind.OBJECT_FIELD; 220 readonly name: NameNode; 221 readonly value: ConstValueNode; 222} 223 224export interface DirectiveNode { 225 readonly kind: Kind.DIRECTIVE; 226 readonly name: NameNode; 227 readonly arguments?: ReadonlyArray<ArgumentNode>; 228} 229 230export interface ConstDirectiveNode { 231 readonly kind: Kind.DIRECTIVE; 232 readonly name: NameNode; 233 readonly arguments?: ReadonlyArray<ConstArgumentNode>; 234} 235 236export declare type TypeNode = NamedTypeNode | ListTypeNode | NonNullTypeNode; 237 238export interface NamedTypeNode { 239 readonly kind: Kind.NAMED_TYPE; 240 readonly name: NameNode; 241} 242 243export interface ListTypeNode { 244 readonly kind: Kind.LIST_TYPE; 245 readonly type: TypeNode; 246} 247 248export interface NonNullTypeNode { 249 readonly kind: Kind.NON_NULL_TYPE; 250 readonly type: NamedTypeNode | ListTypeNode; 251}