2023-02-15 19:09:38 +00:00

204 lines
3.4 KiB
Plaintext

# Copyright 2019-present, GraphQL Foundation
# Mini-language for AST definition.
# All AST nodes extend AstNode.
# All AST nodes are visitible.
# All AST fields have a getter and a setter and are a constructor argument.
# We have concrete types (code T) and unions (code U).
# S for singular field, P for plural, ? for nullable.
# O for option in a union.
# Scalar type ontology: string, boolean
# Definitions other than OperationDefinition and FragmentDefinition
# are experimental additions for schema parsing. (We don't support
# nested unions in the AST mini-language, so I've flattened and elided
# TypeSystemDefinition and TypeDefinition.)
U Definition
O OperationDefinition
O FragmentDefinition
O SchemaDefinition
O ScalarTypeDefinition
O ObjectTypeDefinition
O InterfaceTypeDefinition
O UnionTypeDefinition
O EnumTypeDefinition
O InputObjectTypeDefinition
O TypeExtensionDefinition
O DirectiveDefinition
T Document
P Definition definitions
T OperationDefinition
S OperationKind operation
S? Name name
P? VariableDefinition variableDefinitions
P? Directive directives
S SelectionSet selectionSet
T VariableDefinition
S Variable variable
S Type type
S? Value defaultValue
T SelectionSet
P Selection selections
U Selection
O Field
O FragmentSpread
O InlineFragment
T Field
S? Name alias
S Name name
P? Argument arguments
P? Directive directives
S? SelectionSet selectionSet
T Argument
S Name name
S Value value
T FragmentSpread
S Name name
P? Directive directives
T InlineFragment
S? NamedType typeCondition
P? Directive directives
S SelectionSet selectionSet
T FragmentDefinition
S Name name
S NamedType typeCondition
P? Directive directives
S SelectionSet selectionSet
U Value
O Variable
O IntValue
O FloatValue
O StringValue
O BooleanValue
O NullValue
O EnumValue
O ListValue
O ObjectValue
T Variable
S Name name
T IntValue
S string value
T FloatValue
S string value
T StringValue
S string value
T BooleanValue
S boolean value
T NullValue
T EnumValue
S string value
T ListValue
P Value values
T ObjectValue
P ObjectField fields
T ObjectField
S Name name
S Value value
T Directive
S Name name
P? Argument arguments
U Type
O NamedType
O ListType
O NonNullType
T NamedType
S Name name
T ListType
S Type type
T NonNullType
# JS version prohibits nesting nonnull in nonnull, we can't because we
# can't support multiple unions. Fix?
S Type type
T Name
S string value
T SchemaDefinition
P? Directive directives
P OperationTypeDefinition operationTypes
T OperationTypeDefinition
S OperationKind operation
S NamedType type
T ScalarTypeDefinition
S Name name
P? Directive directives
T ObjectTypeDefinition
S Name name
P? NamedType interfaces
P? Directive directives
P FieldDefinition fields
T FieldDefinition
S Name name
P? InputValueDefinition arguments
S Type type
P? Directive directives
T InputValueDefinition
S Name name
S Type type
S? Value defaultValue
P? Directive directives
T InterfaceTypeDefinition
S Name name
P? Directive directives
P FieldDefinition fields
T UnionTypeDefinition
S Name name
P? Directive directives
P NamedType types
T EnumTypeDefinition
S Name name
P? Directive directives
P EnumValueDefinition values
T EnumValueDefinition
S Name name
P? Directive directives
T InputObjectTypeDefinition
S Name name
P? Directive directives
P InputValueDefinition fields
T TypeExtensionDefinition
S ObjectTypeDefinition definition
T DirectiveDefinition
S Name name
P? InputValueDefinition arguments
P Name locations