Skip to content

Commit ace9871

Browse files
committed
[RFC] GraphQL IDL additions
This adds the type definition syntax to the GraphQL specification.
1 parent bb45a6f commit ace9871

File tree

3 files changed

+317
-21
lines changed

3 files changed

+317
-21
lines changed

spec/Appendix B -- Grammar Summary.md

+56-1
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,14 @@ EscapedUnicode :: /[0-9A-Fa-f]{4}/
8282
EscapedCharacter :: one of `"` \ `/` b f n r t
8383

8484

85-
## Query Document
85+
## Document
8686

8787
Document : Definition+
8888

8989
Definition :
9090
- OperationDefinition
9191
- FragmentDefinition
92+
- TypeSystemDefinition
9293

9394
OperationDefinition :
9495
- SelectionSet
@@ -169,3 +170,57 @@ NonNullType :
169170
Directives : Directive+
170171

171172
Directive : @ Name Arguments?
173+
174+
TypeSystemDefinition :
175+
- SchemaDefinition
176+
- TypeDefinition
177+
- TypeExtensionDefinition
178+
- DirectiveDefinition
179+
180+
SchemaDefinition : schema { OperationTypeDefinition+ }
181+
182+
OperationTypeDefinition : OperationType : NamedType
183+
184+
TypeDefinition :
185+
- ScalarTypeDefinition
186+
- ObjectTypeDefinition
187+
- InterfaceTypeDefinition
188+
- UnionTypeDefinition
189+
- EnumTypeDefinition
190+
- InputObjectTypeDefinition
191+
192+
ScalarTypeDefinition : scalar Name
193+
194+
ObjectTypeDefinition : type Name ImplementsInterfaces? { FieldDefinition+ }
195+
196+
ImplementsInterfaces : implements NamedType+
197+
198+
FieldDefinition : Name ArgumentsDefinition? : Type
199+
200+
ArgumentsDefinition : ( InputValueDefinition+ )
201+
202+
InputValueDefinition : Name : Type DefaultValue?
203+
204+
InterfaceTypeDefinition : interface Name { FieldDefinition+ }
205+
206+
UnionTypeDefinition : union Name = UnionMembers
207+
208+
UnionMembers :
209+
- NamedType
210+
- UnionMembers | NamedType
211+
212+
EnumTypeDefinition : enum Name { EnumValueDefinition+ }
213+
214+
EnumValueDefinition : EnumValue
215+
216+
EnumValue : Name
217+
218+
InputObjectTypeDefinition : input Name { InputValueDefinition+ }
219+
220+
TypeExtensionDefinition : extend ObjectTypeDefinition
221+
222+
DirectiveDefinition : directive @ Name ArgumentsDefinition? on DirectiveLocations
223+
224+
DirectiveLocations :
225+
- Name
226+
- DirectiveLocations | Name

0 commit comments

Comments
 (0)