node_modules.graphql.language.ast.js.flow Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of apollo-client-maven-plugin Show documentation
Show all versions of apollo-client-maven-plugin Show documentation
Maven plugin for generating graphql clients
The newest version!
/* @flow */
/**
* Copyright (c) 2015, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
import type { Source } from './source';
/**
* Contains a range of UTF-8 character offsets and token references that
* identify the region of the source from which the AST derived.
*/
export type Location = {
/**
* The character offset at which this Node begins.
*/
start: number;
/**
* The character offset at which this Node ends.
*/
end: number;
/**
* The Token at which this Node begins.
*/
startToken: Token;
/**
* The Token at which this Node ends.
*/
endToken: Token;
/**
* The Source document the AST represents.
*/
source: Source;
};
/**
* Represents the different kinds of tokens in a GraphQL document.
* This type is not inlined in `Token` to fix syntax highlighting on GitHub
* *only*.
*/
type TokenKind = ''
| ''
| '!'
| '$'
| '('
| ')'
| '...'
| ':'
| '='
| '@'
| '['
| ']'
| '{'
| '|'
| '}'
| 'Name'
| 'Int'
| 'Float'
| 'String'
| 'Comment';
/**
* Represents a range of characters represented by a lexical token
* within a Source.
*/
export type Token = {
/**
* The kind of Token.
*/
kind: TokenKind;
/**
* The character offset at which this Node begins.
*/
start: number;
/**
* The character offset at which this Node ends.
*/
end: number;
/**
* The 1-indexed line number on which this Token appears.
*/
line: number;
/**
* The 1-indexed column number at which this Token begins.
*/
column: number;
/**
* For non-punctuation tokens, represents the interpreted value of the token.
*/
value: string | void;
/**
* Tokens exist as nodes in a double-linked-list amongst all tokens
* including ignored tokens. is always the first node and
* the last.
*/
prev: Token | null;
next: Token | null;
};
/**
* The list of all possible AST node types.
*/
export type ASTNode =
| NameNode
| DocumentNode
| OperationDefinitionNode
| VariableDefinitionNode
| VariableNode
| SelectionSetNode
| FieldNode
| ArgumentNode
| FragmentSpreadNode
| InlineFragmentNode
| FragmentDefinitionNode
| IntValueNode
| FloatValueNode
| StringValueNode
| BooleanValueNode
| NullValueNode
| EnumValueNode
| ListValueNode
| ObjectValueNode
| ObjectFieldNode
| DirectiveNode
| NamedTypeNode
| ListTypeNode
| NonNullTypeNode
| SchemaDefinitionNode
| OperationTypeDefinitionNode
| ScalarTypeDefinitionNode
| ObjectTypeDefinitionNode
| FieldDefinitionNode
| InputValueDefinitionNode
| InterfaceTypeDefinitionNode
| UnionTypeDefinitionNode
| EnumTypeDefinitionNode
| EnumValueDefinitionNode
| InputObjectTypeDefinitionNode
| TypeExtensionDefinitionNode
| DirectiveDefinitionNode;
// Name
export type NameNode = {
kind: 'Name';
loc?: Location;
value: string;
};
// Document
export type DocumentNode = {
kind: 'Document';
loc?: Location;
definitions: Array;
};
export type DefinitionNode =
| OperationDefinitionNode
| FragmentDefinitionNode
| TypeSystemDefinitionNode; // experimental non-spec addition.
export type OperationDefinitionNode = {
kind: 'OperationDefinition';
loc?: Location;
operation: OperationTypeNode;
name?: ?NameNode;
variableDefinitions?: ?Array;
directives?: ?Array;
selectionSet: SelectionSetNode;
};
// Note: subscription is an experimental non-spec addition.
export type OperationTypeNode = 'query' | 'mutation' | 'subscription';
export type VariableDefinitionNode = {
kind: 'VariableDefinition';
loc?: Location;
variable: VariableNode;
type: TypeNode;
defaultValue?: ?ValueNode;
};
export type VariableNode = {
kind: 'Variable';
loc?: Location;
name: NameNode;
};
export type SelectionSetNode = {
kind: 'SelectionSet';
loc?: Location;
selections: Array;
};
export type SelectionNode =
| FieldNode
| FragmentSpreadNode
| InlineFragmentNode;
export type FieldNode = {
kind: 'Field';
loc?: Location;
alias?: ?NameNode;
name: NameNode;
arguments?: ?Array;
directives?: ?Array;
selectionSet?: ?SelectionSetNode;
};
export type ArgumentNode = {
kind: 'Argument';
loc?: Location;
name: NameNode;
value: ValueNode;
};
// Fragments
export type FragmentSpreadNode = {
kind: 'FragmentSpread';
loc?: Location;
name: NameNode;
directives?: ?Array;
};
export type InlineFragmentNode = {
kind: 'InlineFragment';
loc?: Location;
typeCondition?: ?NamedTypeNode;
directives?: ?Array;
selectionSet: SelectionSetNode;
};
export type FragmentDefinitionNode = {
kind: 'FragmentDefinition';
loc?: Location;
name: NameNode;
typeCondition: NamedTypeNode;
directives?: ?Array;
selectionSet: SelectionSetNode;
};
// Values
export type ValueNode =
| VariableNode
| IntValueNode
| FloatValueNode
| StringValueNode
| BooleanValueNode
| NullValueNode
| EnumValueNode
| ListValueNode
| ObjectValueNode;
export type IntValueNode = {
kind: 'IntValue';
loc?: Location;
value: string;
};
export type FloatValueNode = {
kind: 'FloatValue';
loc?: Location;
value: string;
};
export type StringValueNode = {
kind: 'StringValue';
loc?: Location;
value: string;
};
export type BooleanValueNode = {
kind: 'BooleanValue';
loc?: Location;
value: boolean;
};
export type NullValueNode = {
kind: 'NullValue';
loc?: Location;
};
export type EnumValueNode = {
kind: 'EnumValue';
loc?: Location;
value: string;
};
export type ListValueNode = {
kind: 'ListValue';
loc?: Location;
values: Array;
};
export type ObjectValueNode = {
kind: 'ObjectValue';
loc?: Location;
fields: Array;
};
export type ObjectFieldNode = {
kind: 'ObjectField';
loc?: Location;
name: NameNode;
value: ValueNode;
};
// Directives
export type DirectiveNode = {
kind: 'Directive';
loc?: Location;
name: NameNode;
arguments?: ?Array;
};
// Type Reference
export type TypeNode =
| NamedTypeNode
| ListTypeNode
| NonNullTypeNode;
export type NamedTypeNode = {
kind: 'NamedType';
loc?: Location;
name: NameNode;
};
export type ListTypeNode = {
kind: 'ListType';
loc?: Location;
type: TypeNode;
};
export type NonNullTypeNode = {
kind: 'NonNullType';
loc?: Location;
type: NamedTypeNode | ListTypeNode;
};
// Type System Definition
export type TypeSystemDefinitionNode =
| SchemaDefinitionNode
| TypeDefinitionNode
| TypeExtensionDefinitionNode
| DirectiveDefinitionNode;
export type SchemaDefinitionNode = {
kind: 'SchemaDefinition';
loc?: Location;
directives: Array;
operationTypes: Array;
};
export type OperationTypeDefinitionNode = {
kind: 'OperationTypeDefinition';
loc?: Location;
operation: OperationTypeNode;
type: NamedTypeNode;
};
export type TypeDefinitionNode =
| ScalarTypeDefinitionNode
| ObjectTypeDefinitionNode
| InterfaceTypeDefinitionNode
| UnionTypeDefinitionNode
| EnumTypeDefinitionNode
| InputObjectTypeDefinitionNode;
export type ScalarTypeDefinitionNode = {
kind: 'ScalarTypeDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
};
export type ObjectTypeDefinitionNode = {
kind: 'ObjectTypeDefinition';
loc?: Location;
name: NameNode;
interfaces?: ?Array;
directives?: ?Array;
fields: Array;
};
export type FieldDefinitionNode = {
kind: 'FieldDefinition';
loc?: Location;
name: NameNode;
arguments: Array;
type: TypeNode;
directives?: ?Array;
};
export type InputValueDefinitionNode = {
kind: 'InputValueDefinition';
loc?: Location;
name: NameNode;
type: TypeNode;
defaultValue?: ?ValueNode;
directives?: ?Array;
};
export type InterfaceTypeDefinitionNode = {
kind: 'InterfaceTypeDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
fields: Array;
};
export type UnionTypeDefinitionNode = {
kind: 'UnionTypeDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
types: Array;
};
export type EnumTypeDefinitionNode = {
kind: 'EnumTypeDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
values: Array;
};
export type EnumValueDefinitionNode = {
kind: 'EnumValueDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
};
export type InputObjectTypeDefinitionNode = {
kind: 'InputObjectTypeDefinition';
loc?: Location;
name: NameNode;
directives?: ?Array;
fields: Array;
};
export type TypeExtensionDefinitionNode = {
kind: 'TypeExtensionDefinition';
loc?: Location;
definition: ObjectTypeDefinitionNode;
};
export type DirectiveDefinitionNode = {
kind: 'DirectiveDefinition';
loc?: Location;
name: NameNode;
arguments?: ?Array;
locations: Array;
};