Documentation
¶
Overview ¶
Package ast represents all types from the GraphQL specification in code.
The names of the Go types, whenever possible, match 1:1 with the names from the specification.
Index ¶
- type Argument
- type ArgumentList
- type ArgumentsDefinition
- type Directive
- type DirectiveDefinition
- type DirectiveList
- type EnumTypeDefinition
- type EnumValueDefinition
- type ExecutableDefinition
- type Extension
- type Field
- type FieldDefinition
- type FieldsDefinition
- type Fragment
- type FragmentDefinition
- type FragmentList
- type FragmentSpread
- type Ident
- type InlineFragment
- type InputObject
- type InputValueDefinition
- type InputValueDefinitionList
- type InterfaceTypeDefinition
- type List
- type ListValue
- type NamedType
- type NonNull
- type NullValue
- type ObjectField
- type ObjectTypeDefinition
- type ObjectValue
- type OperationDefinition
- type OperationList
- type OperationType
- type PrimitiveValue
- type ScalarTypeDefinition
- type Schema
- type SchemaDefinition
- type Selection
- type SelectionSet
- type Type
- type TypeName
- type Union
- type Value
- type Variable
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Argument ¶
type Argument struct {
Name Ident
Value Value
Directives DirectiveList
}
Argument is a representation of the GraphQL Argument.
type ArgumentList ¶
type ArgumentList []*Argument
ArgumentList is a collection of GraphQL Arguments.
func (ArgumentList) Get ¶
func (l ArgumentList) Get(name string) (Value, bool)
Returns a Value in the ArgumentList by name.
func (ArgumentList) MustGet ¶
func (l ArgumentList) MustGet(name string) Value
MustGet returns a Value in the ArgumentList by name. MustGet will panic if the argument name is not found in the ArgumentList.
type ArgumentsDefinition ¶
type ArgumentsDefinition []*InputValueDefinition
func (ArgumentsDefinition) Get ¶
func (a ArgumentsDefinition) Get(name string) *InputValueDefinition
Get returns an InputValueDefinition in the ArgumentsDefinition by name or nil if not found.
func (ArgumentsDefinition) Names ¶
func (a ArgumentsDefinition) Names() []string
Names returns a slice of ArgumentsDefinition names.
type Directive ¶
type Directive struct {
Name Ident
Arguments ArgumentList
}
Directive is a representation of the GraphQL Directive.
type DirectiveDefinition ¶
type DirectiveDefinition struct {
Name string
Desc string
Repeatable bool
Locations []string
Arguments ArgumentsDefinition
Loc errors.Location
}
DirectiveDefinition is a representation of the GraphQL DirectiveDefinition.
type DirectiveList ¶
type DirectiveList []*Directive
func (DirectiveList) Get ¶
func (l DirectiveList) Get(name string) *Directive
Returns the Directive in the DirectiveList by name or nil if not found.
type EnumTypeDefinition ¶
type EnumTypeDefinition struct {
Name string
EnumValuesDefinition []*EnumValueDefinition
Desc string
Directives DirectiveList
Loc errors.Location
}
EnumTypeDefinition defines a set of possible enum values.
Like scalar types, an EnumTypeDefinition also represents a leaf value in a GraphQL type system.
http://spec.graphql.org/draft/#sec-Enums
func (*EnumTypeDefinition) Description ¶
func (t *EnumTypeDefinition) Description() string
func (*EnumTypeDefinition) Kind ¶
func (*EnumTypeDefinition) Kind() string
func (*EnumTypeDefinition) String ¶
func (t *EnumTypeDefinition) String() string
func (*EnumTypeDefinition) TypeName ¶
func (t *EnumTypeDefinition) TypeName() string
type EnumValueDefinition ¶
type EnumValueDefinition struct {
EnumValue string
Directives DirectiveList
Desc string
Loc errors.Location
}
EnumValueDefinition are unique values that may be serialized as a string: the name of the represented value.
type ExecutableDefinition ¶
type ExecutableDefinition struct {
Operations OperationList
Fragments FragmentList
}
ExecutableDefinition represents a set of operations or fragments that can be executed against a schema.
type Extension ¶
type Extension struct {
Type NamedType
Directives DirectiveList
Loc errors.Location
}
Extension type defines a GraphQL type extension. Schemas, Objects, Inputs and Scalars can be extended.
type Field ¶
type Field struct {
Alias Ident
Name Ident
Arguments ArgumentList
Directives DirectiveList
SelectionSet SelectionSet
SelectionSetLoc errors.Location
}
Field represents a field used in a query.
type FieldDefinition ¶
type FieldDefinition struct {
Name string
Arguments ArgumentsDefinition
Type Type
Directives DirectiveList
Desc string
Loc errors.Location
}
FieldDefinition is a representation of a GraphQL FieldDefinition.
type FieldsDefinition ¶
type FieldsDefinition []*FieldDefinition
FieldsDefinition is a list of an ObjectTypeDefinition's Fields.
https://spec.graphql.org/draft/#FieldsDefinition
func (FieldsDefinition) Get ¶
func (l FieldsDefinition) Get(name string) *FieldDefinition
Get returns a FieldDefinition in a FieldsDefinition by name or nil if not found.
func (FieldsDefinition) Names ¶
func (l FieldsDefinition) Names() []string
Names returns a slice of FieldDefinition names.
type Fragment ¶
type Fragment struct {
On TypeName
Selections SelectionSet
}
type FragmentDefinition ¶
type FragmentDefinition struct {
Fragment
Name Ident
Directives DirectiveList
Loc errors.Location
}
FragmentDefinition is a representation of the GraphQL FragmentDefinition.
type FragmentList ¶
type FragmentList []*FragmentDefinition
func (FragmentList) Get ¶
func (l FragmentList) Get(name string) *FragmentDefinition
Returns a FragmentDefinition by name or nil if not found.
type FragmentSpread ¶
type FragmentSpread struct {
Name Ident
Directives DirectiveList
Loc errors.Location
}
FragmentSpread is a representation of the GraphQL FragmentSpread.
type InlineFragment ¶
type InlineFragment struct {
Fragment
Directives DirectiveList
Loc errors.Location
}
InlineFragment is a representation of the GraphQL InlineFragment.
type InputObject ¶
type InputObject struct {
Name string
Desc string
Values ArgumentsDefinition
Directives DirectiveList
Loc errors.Location
}
InputObject types define a set of input fields; the input fields are either scalars, enums, or other input objects.
This allows arguments to accept arbitrarily complex structs.
http://spec.graphql.org/draft/#sec-Input-Objects
func (*InputObject) Description ¶
func (t *InputObject) Description() string
func (*InputObject) Kind ¶
func (*InputObject) Kind() string
func (*InputObject) String ¶
func (t *InputObject) String() string
func (*InputObject) TypeName ¶
func (t *InputObject) TypeName() string
type InputValueDefinition ¶
type InputValueDefinition struct {
Name Ident
Type Type
Default Value
Desc string
Directives DirectiveList
Loc errors.Location
TypeLoc errors.Location
}
InputValueDefinition is a representation of the GraphQL InputValueDefinition.
type InputValueDefinitionList ¶
type InputValueDefinitionList []*InputValueDefinition
func (InputValueDefinitionList) Get ¶
func (l InputValueDefinitionList) Get(name string) *InputValueDefinition
Returns an InputValueDefinition by name or nil if not found.
type InterfaceTypeDefinition ¶
type InterfaceTypeDefinition struct {
Name string
PossibleTypes []*ObjectTypeDefinition
Fields FieldsDefinition
Desc string
Directives DirectiveList
Loc errors.Location
Interfaces []*InterfaceTypeDefinition
}
InterfaceTypeDefinition recusrively defines list of named fields with their arguments via the implementation chain of interfaces.
GraphQL objects can then implement these interfaces which requires that the object type will define all fields defined by those interfaces.
http://spec.graphql.org/draft/#sec-Interfaces
func (*InterfaceTypeDefinition) Description ¶
func (t *InterfaceTypeDefinition) Description() string
func (*InterfaceTypeDefinition) Kind ¶
func (*InterfaceTypeDefinition) Kind() string
func (*InterfaceTypeDefinition) String ¶
func (t *InterfaceTypeDefinition) String() string
func (*InterfaceTypeDefinition) TypeName ¶
func (t *InterfaceTypeDefinition) TypeName() string
type List ¶
type List struct {
// OfType represents the inner-type of a List type.
// For example, the List type `[Foo]` has an OfType of Foo.
OfType Type
}
List represents a GraphQL ListType.
type ListValue ¶
ListValue represents a literal list Value in the GraphQL specification.
http://spec.graphql.org/draft/#sec-List-Value
func (*ListValue) Deserialize ¶
type NonNull ¶
type NonNull struct {
// OfType represents the inner-type of a NonNull type.
// For example, the NonNull type `Foo!` has an OfType of Foo.
OfType Type
}
NonNull represents a GraphQL NonNullType.
type NullValue ¶
NullValue represents a literal `null` Value in the GraphQL specification.
http://spec.graphql.org/draft/#sec-Null-Value
func (*NullValue) Deserialize ¶
type ObjectField ¶
ObjectField represents field/value pairs in a literal ObjectValue.
type ObjectTypeDefinition ¶
type ObjectTypeDefinition struct {
Name string
Interfaces []*InterfaceTypeDefinition
Fields FieldsDefinition
Desc string
Directives DirectiveList
InterfaceNames []string
Loc errors.Location
}
ObjectTypeDefinition represents a GraphQL ObjectTypeDefinition.
type FooObject {
foo: String
}
https://spec.graphql.org/draft/#sec-Objects
func (*ObjectTypeDefinition) Description ¶
func (t *ObjectTypeDefinition) Description() string
func (*ObjectTypeDefinition) Kind ¶
func (*ObjectTypeDefinition) Kind() string
func (*ObjectTypeDefinition) String ¶
func (t *ObjectTypeDefinition) String() string
func (*ObjectTypeDefinition) TypeName ¶
func (t *ObjectTypeDefinition) TypeName() string
type ObjectValue ¶
type ObjectValue struct {
Fields []*ObjectField
Loc errors.Location
}
ObjectValue represents a literal object Value in the GraphQL specification.
http://spec.graphql.org/draft/#sec-Object-Value
func (*ObjectValue) Deserialize ¶
func (val *ObjectValue) Deserialize(vars map[string]interface{}) interface{}
func (*ObjectValue) Location ¶
func (val *ObjectValue) Location() errors.Location
func (*ObjectValue) String ¶
func (val *ObjectValue) String() string
type OperationDefinition ¶
type OperationDefinition struct {
Type OperationType
Name Ident
Vars ArgumentsDefinition
Selections SelectionSet
Directives DirectiveList
Loc errors.Location
}
OperationDefinition represents a GraphQL Operation.
type OperationList ¶
type OperationList []*OperationDefinition
func (OperationList) Get ¶
func (l OperationList) Get(name string) *OperationDefinition
Get returns an OperationDefinition by name or nil if not found.
type OperationType ¶
type OperationType string
type PrimitiveValue ¶
PrimitiveValue represents one of the following GraphQL scalars: Int, Float, String, or Boolean
func (*PrimitiveValue) Deserialize ¶
func (val *PrimitiveValue) Deserialize(vars map[string]interface{}) interface{}
func (*PrimitiveValue) Location ¶
func (val *PrimitiveValue) Location() errors.Location
func (*PrimitiveValue) String ¶
func (val *PrimitiveValue) String() string
type ScalarTypeDefinition ¶
type ScalarTypeDefinition struct {
Name string
Desc string
Directives DirectiveList
Loc errors.Location
}
ScalarTypeDefinition types represent primitive leaf values (e.g. a string or an integer) in a GraphQL type system.
GraphQL responses take the form of a hierarchical tree; the leaves on these trees are GraphQL scalars.
http://spec.graphql.org/draft/#sec-Scalars
func (*ScalarTypeDefinition) Description ¶
func (t *ScalarTypeDefinition) Description() string
func (*ScalarTypeDefinition) Kind ¶
func (*ScalarTypeDefinition) Kind() string
func (*ScalarTypeDefinition) String ¶
func (t *ScalarTypeDefinition) String() string
func (*ScalarTypeDefinition) TypeName ¶
func (t *ScalarTypeDefinition) TypeName() string
type Schema ¶
type Schema struct {
// SchemaDefinition corresponds to the `schema` sdl keyword.
SchemaDefinition
// Types are the fundamental unit of any GraphQL schema.
// There are six kinds of named type definitions in GraphQL, and two wrapping types.
//
// http://spec.graphql.org/draft/#sec-Types
Types map[string]NamedType
// Directives are used to annotate various parts of a GraphQL document as an indicator that they
// should be evaluated differently by a validator, executor, or client tool such as a code
// generator.
//
// http://spec.graphql.org/#sec-Type-System.Directives
Directives map[string]*DirectiveDefinition
Objects []*ObjectTypeDefinition
Unions []*Union
Enums []*EnumTypeDefinition
Extensions []*Extension
SchemaString string
}
Schema represents a GraphQL service's collective type system capabilities. A schema is defined in terms of the types and directives it supports as well as the root operation types for each kind of operation: `query`, `mutation`, and `subscription`.
For a more formal definition, read the relevant section in the specification:
type SchemaDefinition ¶
type SchemaDefinition struct {
// Present is true if the schema definition is not omitted, false otherwise. For example, in the following schema
//
// type Query {
// hello: String!
// }
//
// the schema keyword is omitted since the default name for Query is used. In that case Present would be false.
Present bool
// RootOperationTypes determines the place in the type system where `query`, `mutation`, and
// `subscription` operations begin.
//
// http://spec.graphql.org/draft/#sec-Root-Operation-Types
RootOperationTypes map[string]NamedType
EntryPointNames map[string]string
Desc string
Directives DirectiveList
Loc errors.Location
}
SchemaDefinition is an optional schema block. If the schema definition is present it might contain a description and directives. It also contains a map of root operations. For example:
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
type Query {
# query fields go here
}
type Mutation {
# mutation fields go here
}
type Subscription {
# subscription fields go here
}
If the root operations have default names (i.e. Query, Mutation and Subscription), then the schema definition can be omitted. For example, this is equivalent to the above schema:
type Query {
# query fields go here
}
type Mutation {
# mutation fields go here
}
type Subscription {
# subscription fields go here
}
type Selection ¶
type Selection interface {
// contains filtered or unexported methods
}
A Selection is a field requested in a GraphQL operation.
type SelectionSet ¶
type SelectionSet []Selection
A SelectionSet represents a collection of Selections
type Type ¶
type Type interface {
// Kind returns one possible GraphQL type kind. A type kind must be
// valid as defined by the GraphQL spec.
//
// https://spec.graphql.org/draft/#sec-Type-Kinds
Kind() string
// String serializes a Type into a GraphQL specification format type.
//
// http://spec.graphql.org/draft/#sec-Serialization-Format
String() string
}
type TypeName ¶
type TypeName struct {
Ident
}
TypeName is a base building block for GraphQL type references.
type Union ¶
type Union struct {
Name string
UnionMemberTypes []*ObjectTypeDefinition
Desc string
Directives DirectiveList
TypeNames []string
Loc errors.Location
}
Union types represent objects that could be one of a list of GraphQL object types, but provides no guaranteed fields between those types.
They also differ from interfaces in that object types declare what interfaces they implement, but are not aware of what unions contain them.
http://spec.graphql.org/draft/#sec-Unions
func (*Union) Description ¶
type Value ¶
type Value interface {
// Deserialize transforms a GraphQL specification format literal into a Go type.
Deserialize(vars map[string]interface{}) interface{}
// String serializes a Value into a GraphQL specification format literal.
String() string
Location() errors.Location
}
Value represents a literal input or literal default value in the GraphQL Specification.
type Variable ¶
Variable is used in GraphQL operations to parameterize an input value.
http://spec.graphql.org/draft/#Variable