graphql 15.3.0 → 15.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -0
  3. package/error/GraphQLError.js +8 -8
  4. package/error/GraphQLError.js.flow +2 -3
  5. package/error/GraphQLError.mjs +2 -2
  6. package/error/formatError.js +1 -1
  7. package/error/formatError.js.flow +0 -1
  8. package/error/index.js +4 -4
  9. package/error/index.js.flow +0 -1
  10. package/error/locatedError.d.ts +2 -2
  11. package/error/locatedError.js +10 -5
  12. package/error/locatedError.js.flow +10 -4
  13. package/error/locatedError.mjs +6 -4
  14. package/error/syntaxError.js +1 -1
  15. package/error/syntaxError.js.flow +0 -1
  16. package/execution/execute.d.ts +0 -15
  17. package/execution/execute.js +104 -104
  18. package/execution/execute.js.flow +119 -133
  19. package/execution/execute.mjs +86 -82
  20. package/execution/index.js +3 -3
  21. package/execution/index.js.flow +0 -1
  22. package/execution/values.js +11 -11
  23. package/execution/values.js.flow +0 -1
  24. package/graphql.js +5 -5
  25. package/graphql.js.flow +0 -1
  26. package/index.d.ts +1 -0
  27. package/index.js +9 -9
  28. package/index.js.flow +0 -1
  29. package/jsutils/ObjMap.js.flow +0 -1
  30. package/jsutils/Path.js.flow +0 -1
  31. package/jsutils/PromiseOrValue.js.flow +0 -1
  32. package/jsutils/defineInspect.js +2 -2
  33. package/jsutils/defineInspect.js.flow +0 -1
  34. package/jsutils/devAssert.js.flow +0 -1
  35. package/jsutils/didYouMean.js.flow +0 -1
  36. package/jsutils/identityFunc.js.flow +0 -1
  37. package/jsutils/inspect.js +1 -2
  38. package/jsutils/inspect.js.flow +10 -8
  39. package/jsutils/inspect.mjs +1 -1
  40. package/jsutils/instanceOf.js +15 -9
  41. package/jsutils/instanceOf.js.flow +13 -7
  42. package/jsutils/instanceOf.mjs +13 -5
  43. package/jsutils/invariant.js.flow +0 -1
  44. package/jsutils/isAsyncIterable.js +13 -0
  45. package/jsutils/isAsyncIterable.js.flow +14 -0
  46. package/jsutils/isAsyncIterable.mjs +10 -0
  47. package/jsutils/isObjectLike.js.flow +0 -1
  48. package/jsutils/isPromise.js.flow +0 -1
  49. package/jsutils/keyMap.js.flow +0 -1
  50. package/jsutils/keyValMap.js.flow +0 -1
  51. package/jsutils/mapValue.js +1 -1
  52. package/jsutils/mapValue.js.flow +0 -1
  53. package/jsutils/memoize3.js +2 -5
  54. package/jsutils/memoize3.js.flow +2 -5
  55. package/jsutils/memoize3.mjs +2 -5
  56. package/jsutils/naturalCompare.js +69 -0
  57. package/jsutils/naturalCompare.js.flow +59 -0
  58. package/jsutils/naturalCompare.mjs +61 -0
  59. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  60. package/jsutils/printPathArray.js.flow +0 -1
  61. package/jsutils/promiseForObject.js.flow +0 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.js.flow +0 -1
  64. package/jsutils/safeArrayFrom.js +73 -0
  65. package/jsutils/safeArrayFrom.js.flow +59 -0
  66. package/jsutils/safeArrayFrom.mjs +66 -0
  67. package/jsutils/suggestionList.js +5 -1
  68. package/jsutils/suggestionList.js.flow +3 -2
  69. package/jsutils/suggestionList.mjs +3 -1
  70. package/jsutils/toObjMap.js +1 -1
  71. package/jsutils/toObjMap.js.flow +0 -1
  72. package/language/ast.js +1 -1
  73. package/language/ast.js.flow +0 -1
  74. package/language/blockString.d.ts +1 -1
  75. package/language/blockString.js +53 -32
  76. package/language/blockString.js.flow +51 -36
  77. package/language/blockString.mjs +54 -33
  78. package/language/directiveLocation.js.flow +0 -1
  79. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  80. package/language/experimentalOnlineParser/grammar.js +987 -0
  81. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  82. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  83. package/language/experimentalOnlineParser/index.d.ts +6 -0
  84. package/language/experimentalOnlineParser/index.js +31 -0
  85. package/language/experimentalOnlineParser/index.js.flow +7 -0
  86. package/language/experimentalOnlineParser/index.mjs +1 -0
  87. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  88. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  89. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  90. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  91. package/language/index.js +12 -12
  92. package/language/index.js.flow +0 -1
  93. package/language/kinds.js.flow +0 -1
  94. package/language/lexer.js +242 -183
  95. package/language/lexer.js.flow +188 -184
  96. package/language/lexer.mjs +238 -179
  97. package/language/location.js.flow +0 -1
  98. package/language/parser.js +73 -68
  99. package/language/parser.js.flow +62 -57
  100. package/language/parser.mjs +64 -60
  101. package/language/predicates.js +1 -1
  102. package/language/predicates.js.flow +0 -1
  103. package/language/printLocation.js +1 -1
  104. package/language/printLocation.js.flow +0 -1
  105. package/language/printer.js +20 -13
  106. package/language/printer.js.flow +26 -25
  107. package/language/printer.mjs +18 -11
  108. package/language/source.d.ts +7 -0
  109. package/language/source.js +20 -3
  110. package/language/source.js.flow +21 -3
  111. package/language/source.mjs +14 -1
  112. package/language/tokenKind.js.flow +0 -1
  113. package/language/visitor.js +2 -2
  114. package/language/visitor.js.flow +0 -1
  115. package/package.json +2 -3
  116. package/polyfills/arrayFrom.js +2 -2
  117. package/polyfills/arrayFrom.js.flow +1 -2
  118. package/polyfills/arrayFrom.mjs +1 -1
  119. package/polyfills/find.js +1 -1
  120. package/polyfills/find.js.flow +1 -2
  121. package/polyfills/find.mjs +1 -1
  122. package/polyfills/isFinite.js +1 -1
  123. package/polyfills/isFinite.js.flow +1 -2
  124. package/polyfills/isFinite.mjs +1 -1
  125. package/polyfills/isInteger.js +1 -1
  126. package/polyfills/isInteger.js.flow +1 -2
  127. package/polyfills/isInteger.mjs +1 -1
  128. package/polyfills/objectEntries.js +1 -1
  129. package/polyfills/objectEntries.js.flow +1 -2
  130. package/polyfills/objectEntries.mjs +1 -1
  131. package/polyfills/objectValues.js +1 -1
  132. package/polyfills/objectValues.js.flow +1 -2
  133. package/polyfills/objectValues.mjs +1 -1
  134. package/polyfills/symbols.js +3 -5
  135. package/polyfills/symbols.js.flow +9 -6
  136. package/polyfills/symbols.mjs +3 -5
  137. package/subscription/index.js +1 -1
  138. package/subscription/index.js.flow +0 -1
  139. package/subscription/mapAsyncIterator.js +2 -2
  140. package/subscription/mapAsyncIterator.js.flow +8 -9
  141. package/subscription/mapAsyncIterator.mjs +1 -1
  142. package/subscription/subscribe.js +61 -73
  143. package/subscription/subscribe.js.flow +71 -85
  144. package/subscription/subscribe.mjs +53 -65
  145. package/type/definition.d.ts +16 -6
  146. package/type/definition.js +37 -32
  147. package/type/definition.js.flow +93 -63
  148. package/type/definition.mjs +19 -14
  149. package/type/directives.js +17 -16
  150. package/type/directives.js.flow +20 -13
  151. package/type/directives.mjs +6 -5
  152. package/type/index.js +6 -6
  153. package/type/index.js.flow +0 -1
  154. package/type/introspection.js +86 -65
  155. package/type/introspection.js.flow +75 -43
  156. package/type/introspection.mjs +79 -58
  157. package/type/scalars.js +9 -9
  158. package/type/scalars.js.flow +1 -2
  159. package/type/scalars.mjs +1 -1
  160. package/type/schema.js +13 -13
  161. package/type/schema.js.flow +2 -3
  162. package/type/schema.mjs +1 -1
  163. package/type/validate.js +52 -19
  164. package/type/validate.js.flow +54 -8
  165. package/type/validate.mjs +43 -9
  166. package/utilities/TypeInfo.js +7 -7
  167. package/utilities/TypeInfo.js.flow +1 -2
  168. package/utilities/assertValidName.js +2 -2
  169. package/utilities/assertValidName.js.flow +0 -1
  170. package/utilities/astFromValue.js +14 -16
  171. package/utilities/astFromValue.js.flow +6 -7
  172. package/utilities/astFromValue.mjs +6 -7
  173. package/utilities/buildASTSchema.js +17 -27
  174. package/utilities/buildASTSchema.js.flow +5 -21
  175. package/utilities/buildASTSchema.mjs +11 -21
  176. package/utilities/buildClientSchema.js +16 -15
  177. package/utilities/buildClientSchema.js.flow +28 -12
  178. package/utilities/buildClientSchema.mjs +5 -4
  179. package/utilities/coerceInputValue.js +17 -18
  180. package/utilities/coerceInputValue.js.flow +12 -10
  181. package/utilities/coerceInputValue.mjs +7 -7
  182. package/utilities/concatAST.js +9 -8
  183. package/utilities/concatAST.js.flow +8 -8
  184. package/utilities/concatAST.mjs +9 -6
  185. package/utilities/extendSchema.js +26 -19
  186. package/utilities/extendSchema.js.flow +19 -7
  187. package/utilities/extendSchema.mjs +8 -1
  188. package/utilities/findBreakingChanges.js +15 -11
  189. package/utilities/findBreakingChanges.js.flow +6 -3
  190. package/utilities/findBreakingChanges.mjs +5 -2
  191. package/utilities/findDeprecatedUsages.js +2 -2
  192. package/utilities/findDeprecatedUsages.js.flow +0 -1
  193. package/utilities/getIntrospectionQuery.d.ts +6 -0
  194. package/utilities/getIntrospectionQuery.js +8 -2
  195. package/utilities/getIntrospectionQuery.js.flow +17 -5
  196. package/utilities/getIntrospectionQuery.mjs +8 -2
  197. package/utilities/getOperationAST.js +1 -1
  198. package/utilities/getOperationAST.js.flow +0 -1
  199. package/utilities/getOperationRootType.js +1 -1
  200. package/utilities/getOperationRootType.js.flow +0 -1
  201. package/utilities/index.d.ts +3 -0
  202. package/utilities/index.js +22 -22
  203. package/utilities/index.js.flow +0 -1
  204. package/utilities/introspectionFromSchema.js +7 -5
  205. package/utilities/introspectionFromSchema.js.flow +2 -1
  206. package/utilities/introspectionFromSchema.mjs +3 -1
  207. package/utilities/lexicographicSortSchema.js +13 -9
  208. package/utilities/lexicographicSortSchema.js.flow +21 -13
  209. package/utilities/lexicographicSortSchema.mjs +5 -2
  210. package/utilities/printSchema.js +15 -16
  211. package/utilities/printSchema.js.flow +23 -16
  212. package/utilities/printSchema.mjs +5 -6
  213. package/utilities/separateOperations.js +46 -42
  214. package/utilities/separateOperations.js.flow +46 -37
  215. package/utilities/separateOperations.mjs +44 -40
  216. package/utilities/stripIgnoredCharacters.js +6 -16
  217. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  218. package/utilities/stripIgnoredCharacters.mjs +3 -10
  219. package/utilities/typeComparators.js +1 -1
  220. package/utilities/typeComparators.js.flow +0 -1
  221. package/utilities/typeFromAST.js +6 -6
  222. package/utilities/typeFromAST.js.flow +2 -3
  223. package/utilities/typeFromAST.mjs +2 -2
  224. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  225. package/utilities/valueFromAST.js +6 -6
  226. package/utilities/valueFromAST.js.flow +4 -2
  227. package/utilities/valueFromASTUntyped.js +4 -4
  228. package/utilities/valueFromASTUntyped.js.flow +0 -1
  229. package/validation/ValidationContext.js +3 -3
  230. package/validation/ValidationContext.js.flow +3 -4
  231. package/validation/index.js +38 -38
  232. package/validation/index.js.flow +0 -1
  233. package/validation/rules/ExecutableDefinitions.js +1 -1
  234. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  235. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  236. package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
  237. package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
  238. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
  239. package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
  240. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  241. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
  242. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  243. package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
  244. package/validation/rules/KnownDirectivesRule.js +6 -6
  245. package/validation/rules/KnownDirectivesRule.js.flow +4 -3
  246. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  247. package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
  248. package/validation/rules/KnownTypeNamesRule.js +6 -6
  249. package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
  250. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  251. package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
  252. package/validation/rules/LoneSchemaDefinition.js +1 -1
  253. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  254. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  255. package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
  256. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  257. package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
  258. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  259. package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
  260. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  261. package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
  262. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  263. package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
  264. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  265. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
  266. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  267. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  268. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
  269. package/validation/rules/PossibleTypeExtensions.js +1 -1
  270. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  271. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  272. package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
  273. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  274. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
  275. package/validation/rules/ScalarLeafsRule.js +3 -3
  276. package/validation/rules/ScalarLeafsRule.js.flow +0 -1
  277. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  278. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
  279. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  280. package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
  281. package/validation/rules/UniqueDirectiveNames.js +1 -1
  282. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  283. package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
  284. package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
  285. package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
  286. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  287. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
  288. package/validation/rules/UniqueEnumValueNames.js +1 -1
  289. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  290. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  291. package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
  292. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  293. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  294. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  295. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
  296. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  297. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  298. package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
  299. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  300. package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
  301. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  302. package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
  303. package/validation/rules/UniqueOperationTypes.js +1 -1
  304. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  305. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  306. package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
  307. package/validation/rules/UniqueTypeNames.js +1 -1
  308. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  309. package/validation/rules/UniqueTypeNamesRule.js +2 -2
  310. package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
  311. package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
  312. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  313. package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
  314. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  315. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
  316. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  317. package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
  318. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  319. package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
  320. package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
  321. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
  322. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
  323. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
  324. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
  325. package/validation/specifiedRules.js +33 -33
  326. package/validation/specifiedRules.js.flow +0 -1
  327. package/validation/validate.js +7 -7
  328. package/validation/validate.js.flow +4 -5
  329. package/version.js +3 -3
  330. package/version.js.flow +3 -4
  331. package/version.mjs +3 -3
  332. package/jsutils/isCollection.js +0 -47
  333. package/jsutils/isCollection.js.flow +0 -39
  334. package/jsutils/isCollection.mjs +0 -40
  335. package/polyfills/flatMap.js +0 -30
  336. package/polyfills/flatMap.js.flow +0 -28
  337. package/polyfills/flatMap.mjs +0 -23
@@ -0,0 +1,980 @@
1
+ var grammar = {
2
+ Name: {
3
+ token: 'Name'
4
+ },
5
+ String: {
6
+ token: 'String'
7
+ },
8
+ BlockString: {
9
+ token: 'BlockString'
10
+ },
11
+ Document: {
12
+ listOfType: 'Definition'
13
+ },
14
+ Definition: {
15
+ peek: [{
16
+ ifCondition: {
17
+ token: 'Name',
18
+ oneOf: ['query', 'mutation', 'subscription']
19
+ },
20
+ expect: 'OperationDefinition'
21
+ }, {
22
+ ifCondition: {
23
+ token: 'Name',
24
+ ofValue: 'fragment'
25
+ },
26
+ expect: 'FragmentDefinition'
27
+ }, {
28
+ ifCondition: {
29
+ token: 'Name',
30
+ oneOf: ['schema', 'scalar', 'type', 'interface', 'union', 'enum', 'input', 'directive']
31
+ },
32
+ expect: 'TypeSystemDefinition'
33
+ }, {
34
+ ifCondition: {
35
+ token: 'Name',
36
+ ofValue: 'extend'
37
+ },
38
+ expect: 'TypeSystemExtension'
39
+ }, {
40
+ ifCondition: {
41
+ token: '{'
42
+ },
43
+ expect: 'OperationDefinition'
44
+ }, {
45
+ ifCondition: 'String',
46
+ expect: 'TypeSystemDefinition'
47
+ }, {
48
+ ifCondition: 'BlockString',
49
+ expect: 'TypeSystemDefinition'
50
+ }]
51
+ },
52
+ OperationDefinition: {
53
+ peek: [{
54
+ ifCondition: {
55
+ token: '{'
56
+ },
57
+ expect: 'SelectionSet'
58
+ }, {
59
+ ifCondition: {
60
+ token: 'Name',
61
+ oneOf: ['query', 'mutation', 'subscription']
62
+ },
63
+ expect: ['OperationType', {
64
+ token: 'Name',
65
+ optional: true,
66
+ tokenName: 'OperationName',
67
+ definitionName: true
68
+ }, {
69
+ ofType: 'VariableDefinitions',
70
+ optional: true
71
+ }, {
72
+ ofType: 'Directives',
73
+ optional: true
74
+ }, 'SelectionSet']
75
+ }]
76
+ },
77
+ OperationType: {
78
+ ofType: 'OperationTypeName'
79
+ },
80
+ OperationTypeName: {
81
+ token: 'Name',
82
+ oneOf: ['query', 'mutation', 'subscription'],
83
+ definitionName: true
84
+ },
85
+ SelectionSet: [{
86
+ token: '{'
87
+ }, {
88
+ listOfType: 'Selection'
89
+ }, {
90
+ token: '}'
91
+ }],
92
+ Selection: {
93
+ peek: [{
94
+ ifCondition: {
95
+ token: '...'
96
+ },
97
+ expect: 'Fragment'
98
+ }, {
99
+ ifCondition: {
100
+ token: 'Name'
101
+ },
102
+ expect: 'Field'
103
+ }]
104
+ },
105
+ Field: [{
106
+ ofType: 'Alias',
107
+ optional: true,
108
+ eatNextOnFail: true,
109
+ definitionName: true
110
+ }, {
111
+ token: 'Name',
112
+ tokenName: 'FieldName',
113
+ definitionName: true
114
+ }, {
115
+ ofType: 'Arguments',
116
+ optional: true
117
+ }, {
118
+ ofType: 'Directives',
119
+ optional: true
120
+ }, {
121
+ ofType: 'SelectionSet',
122
+ optional: true
123
+ }],
124
+ Arguments: [{
125
+ token: '('
126
+ }, {
127
+ listOfType: 'Argument'
128
+ }, {
129
+ token: ')'
130
+ }],
131
+ Argument: [{
132
+ token: 'Name',
133
+ tokenName: 'ArgumentName',
134
+ definitionName: true
135
+ }, {
136
+ token: ':'
137
+ }, 'Value'],
138
+ Alias: [{
139
+ token: 'Name',
140
+ tokenName: 'AliasName',
141
+ definitionName: true
142
+ }, {
143
+ token: ':'
144
+ }],
145
+ Fragment: [{
146
+ token: '...'
147
+ }, {
148
+ peek: [{
149
+ ifCondition: 'FragmentName',
150
+ expect: 'FragmentSpread'
151
+ }, {
152
+ ifCondition: {
153
+ token: 'Name',
154
+ ofValue: 'on'
155
+ },
156
+ expect: 'InlineFragment'
157
+ }, {
158
+ ifCondition: {
159
+ token: '@'
160
+ },
161
+ expect: 'InlineFragment'
162
+ }, {
163
+ ifCondition: {
164
+ token: '{'
165
+ },
166
+ expect: 'InlineFragment'
167
+ }]
168
+ }],
169
+ FragmentSpread: ['FragmentName', {
170
+ ofType: 'Directives',
171
+ optional: true
172
+ }],
173
+ FragmentDefinition: [{
174
+ token: 'Name',
175
+ ofValue: 'fragment',
176
+ tokenName: 'FragmentDefinitionKeyword'
177
+ }, 'FragmentName', 'TypeCondition', {
178
+ ofType: 'Directives',
179
+ optional: true
180
+ }, 'SelectionSet'],
181
+ FragmentName: {
182
+ token: 'Name',
183
+ butNot: {
184
+ token: 'Name',
185
+ ofValue: 'on'
186
+ },
187
+ definitionName: true
188
+ },
189
+ TypeCondition: [{
190
+ token: 'Name',
191
+ ofValue: 'on',
192
+ tokenName: 'OnKeyword'
193
+ }, 'TypeName'],
194
+ InlineFragment: [{
195
+ ofType: 'TypeCondition',
196
+ optional: true
197
+ }, {
198
+ ofType: 'Directives',
199
+ optional: true
200
+ }, 'SelectionSet'],
201
+ Value: {
202
+ peek: [{
203
+ ifCondition: {
204
+ token: '$'
205
+ },
206
+ expect: 'Variable'
207
+ }, {
208
+ ifCondition: 'IntValue',
209
+ expect: {
210
+ ofType: 'IntValue',
211
+ tokenName: 'NumberValue'
212
+ }
213
+ }, {
214
+ ifCondition: 'FloatValue',
215
+ expect: {
216
+ ofType: 'FloatValue',
217
+ tokenName: 'NumberValue'
218
+ }
219
+ }, {
220
+ ifCondition: 'BooleanValue',
221
+ expect: {
222
+ ofType: 'BooleanValue',
223
+ tokenName: 'BooleanValue'
224
+ }
225
+ }, {
226
+ ifCondition: 'EnumValue',
227
+ expect: {
228
+ ofType: 'EnumValue',
229
+ tokenName: 'EnumValue'
230
+ }
231
+ }, {
232
+ ifCondition: 'String',
233
+ expect: {
234
+ ofType: 'String',
235
+ tokenName: 'StringValue'
236
+ }
237
+ }, {
238
+ ifCondition: 'BlockString',
239
+ expect: {
240
+ ofType: 'BlockString',
241
+ tokenName: 'StringValue'
242
+ }
243
+ }, {
244
+ ifCondition: 'NullValue',
245
+ expect: {
246
+ ofType: 'NullValue',
247
+ tokenName: 'NullValue'
248
+ }
249
+ }, {
250
+ ifCondition: {
251
+ token: '['
252
+ },
253
+ expect: 'ListValue'
254
+ }, {
255
+ ifCondition: {
256
+ token: '{'
257
+ },
258
+ expect: 'ObjectValue'
259
+ }]
260
+ },
261
+ ConstValue: {
262
+ peek: [{
263
+ ifCondition: 'IntValue',
264
+ expect: {
265
+ ofType: 'IntValue'
266
+ }
267
+ }, {
268
+ ifCondition: 'FloatValue',
269
+ expect: {
270
+ ofType: 'FloatValue'
271
+ }
272
+ }, {
273
+ ifCondition: 'BooleanValue',
274
+ expect: 'BooleanValue'
275
+ }, {
276
+ ifCondition: 'EnumValue',
277
+ expect: 'EnumValue'
278
+ }, {
279
+ ifCondition: 'String',
280
+ expect: {
281
+ ofType: 'String',
282
+ tokenName: 'StringValue'
283
+ }
284
+ }, {
285
+ ifCondition: 'BlockString',
286
+ expect: {
287
+ token: 'BlockString',
288
+ tokenName: 'StringValue'
289
+ }
290
+ }, {
291
+ ifCondition: 'NullValue',
292
+ expect: 'NullValue'
293
+ }, {
294
+ ifCondition: {
295
+ token: '['
296
+ },
297
+ expect: 'ConstListValue'
298
+ }, {
299
+ ifCondition: {
300
+ token: '{'
301
+ },
302
+ expect: 'ObjectValue'
303
+ }]
304
+ },
305
+ IntValue: {
306
+ token: 'Int'
307
+ },
308
+ FloatValue: {
309
+ token: 'Float'
310
+ },
311
+ StringValue: {
312
+ peek: [{
313
+ ifCondition: {
314
+ token: 'String'
315
+ },
316
+ expect: {
317
+ token: 'String',
318
+ tokenName: 'StringValue'
319
+ }
320
+ }, {
321
+ ifCondition: {
322
+ token: 'BlockString'
323
+ },
324
+ expect: {
325
+ token: 'BlockString',
326
+ tokenName: 'StringValue'
327
+ }
328
+ }]
329
+ },
330
+ BooleanValue: {
331
+ token: 'Name',
332
+ oneOf: ['true', 'false'],
333
+ tokenName: 'BooleanValue'
334
+ },
335
+ NullValue: {
336
+ token: 'Name',
337
+ ofValue: 'null',
338
+ tokenName: 'NullValue'
339
+ },
340
+ EnumValue: {
341
+ token: 'Name',
342
+ butNot: {
343
+ token: 'Name',
344
+ oneOf: ['null', 'true', 'false']
345
+ },
346
+ tokenName: 'EnumValue'
347
+ },
348
+ ListValue: [{
349
+ token: '['
350
+ }, {
351
+ listOfType: 'Value',
352
+ optional: true
353
+ }, {
354
+ token: ']'
355
+ }],
356
+ ConstListValue: [{
357
+ token: '['
358
+ }, {
359
+ listOfType: 'ConstValue',
360
+ optional: true
361
+ }, {
362
+ token: ']'
363
+ }],
364
+ ObjectValue: [{
365
+ token: '{'
366
+ }, {
367
+ listOfType: 'ObjectField',
368
+ optional: true
369
+ }, {
370
+ token: '}'
371
+ }],
372
+ ObjectField: [{
373
+ token: 'Name',
374
+ tokenName: 'ObjectFieldName'
375
+ }, {
376
+ token: ':'
377
+ }, {
378
+ ofType: 'ConstValue'
379
+ }],
380
+ Variable: [{
381
+ token: '$',
382
+ tokenName: 'VariableName'
383
+ }, {
384
+ token: 'Name',
385
+ tokenName: 'VariableName'
386
+ }],
387
+ VariableDefinitions: [{
388
+ token: '('
389
+ }, {
390
+ listOfType: 'VariableDefinition'
391
+ }, {
392
+ token: ')'
393
+ }],
394
+ VariableDefinition: ['Variable', {
395
+ token: ':'
396
+ }, 'Type', {
397
+ ofType: 'DefaultValue',
398
+ optional: true
399
+ }],
400
+ DefaultValue: [{
401
+ token: '='
402
+ }, 'ConstValue'],
403
+ TypeName: {
404
+ token: 'Name',
405
+ tokenName: 'TypeName',
406
+ typeName: true
407
+ },
408
+ Type: {
409
+ peek: [{
410
+ ifCondition: {
411
+ token: 'Name'
412
+ },
413
+ expect: ['TypeName', {
414
+ token: '!',
415
+ optional: true
416
+ }]
417
+ }, {
418
+ ifCondition: {
419
+ token: '['
420
+ },
421
+ expect: 'ListType'
422
+ }]
423
+ },
424
+ ListType: [{
425
+ token: '['
426
+ }, {
427
+ listOfType: 'Type'
428
+ }, {
429
+ token: ']'
430
+ }, {
431
+ token: '!',
432
+ optional: true
433
+ }],
434
+ Directives: {
435
+ listOfType: 'Directive'
436
+ },
437
+ Directive: [{
438
+ token: '@',
439
+ tokenName: 'DirectiveName'
440
+ }, {
441
+ token: 'Name',
442
+ tokenName: 'DirectiveName'
443
+ }, {
444
+ ofType: 'Arguments',
445
+ optional: true
446
+ }],
447
+ TypeSystemDefinition: [{
448
+ ofType: 'Description',
449
+ optional: true
450
+ }, {
451
+ peek: [{
452
+ ifCondition: {
453
+ target: 'Name',
454
+ ofValue: 'schema'
455
+ },
456
+ expect: 'SchemaDefinition'
457
+ }, {
458
+ ifCondition: {
459
+ target: 'Name',
460
+ ofValue: 'scalar'
461
+ },
462
+ expect: 'ScalarTypeDefinition'
463
+ }, {
464
+ ifCondition: {
465
+ target: 'Name',
466
+ ofValue: 'type'
467
+ },
468
+ expect: 'ObjectTypeDefinition'
469
+ }, {
470
+ ifCondition: {
471
+ target: 'Name',
472
+ ofValue: 'interface'
473
+ },
474
+ expect: 'InterfaceTypeDefinition'
475
+ }, {
476
+ ifCondition: {
477
+ target: 'Name',
478
+ ofValue: 'union'
479
+ },
480
+ expect: 'UnionTypeDefinition'
481
+ }, {
482
+ ifCondition: {
483
+ target: 'Name',
484
+ ofValue: 'enum'
485
+ },
486
+ expect: 'EnumTypeDefinition'
487
+ }, {
488
+ ifCondition: {
489
+ target: 'Name',
490
+ ofValue: 'input'
491
+ },
492
+ expect: 'InputObjectTypeDefinition'
493
+ }, {
494
+ ifCondition: {
495
+ target: 'Name',
496
+ ofValue: 'directive'
497
+ },
498
+ expect: 'DirectiveDefinition'
499
+ }]
500
+ }],
501
+ TypeSystemExtension: {
502
+ peek: [{
503
+ ifCondition: {
504
+ target: 'Name',
505
+ ofValue: 'schema'
506
+ },
507
+ expect: 'SchemaExtension'
508
+ }, {
509
+ ifCondition: {
510
+ target: 'Name',
511
+ ofValue: 'scalar'
512
+ },
513
+ expect: 'ScalarTypeExtension'
514
+ }, {
515
+ ifCondition: {
516
+ target: 'Name',
517
+ ofValue: 'type'
518
+ },
519
+ expect: 'ObjectTypeExtension'
520
+ }, {
521
+ ifCondition: {
522
+ target: 'Name',
523
+ ofValue: 'interface'
524
+ },
525
+ expect: 'InterfaceTypeExtension'
526
+ }, {
527
+ ifCondition: {
528
+ target: 'Name',
529
+ ofValue: 'union'
530
+ },
531
+ expect: 'UnionTypeExtension'
532
+ }, {
533
+ ifCondition: {
534
+ target: 'Name',
535
+ ofValue: 'enum'
536
+ },
537
+ expect: 'EnumTypeExtension'
538
+ }, {
539
+ ifCondition: {
540
+ target: 'Name',
541
+ ofValue: 'input'
542
+ },
543
+ expect: 'InputObjectTypeExtension'
544
+ }]
545
+ },
546
+ SchemaDefinition: [{
547
+ token: 'Name',
548
+ ofValue: 'schema',
549
+ tokenName: 'SchemaDefinitionKeyword'
550
+ }, {
551
+ ofType: 'Directives',
552
+ optional: true
553
+ }, {
554
+ token: '{'
555
+ }, {
556
+ listOfType: 'RootOperationTypeDefinition'
557
+ }, {
558
+ token: '}'
559
+ }],
560
+ RootOperationTypeDefinition: ['OperationType', {
561
+ token: ':'
562
+ }, {
563
+ token: 'Name',
564
+ tokenName: 'OperationTypeDefinitionName'
565
+ }],
566
+ SchemaExtension: [{
567
+ token: 'Name',
568
+ ofValue: 'extend'
569
+ }, {
570
+ token: 'Name',
571
+ ofValue: 'schema'
572
+ }, 'Name', {
573
+ peek: [{
574
+ ifCondition: {
575
+ token: '@'
576
+ },
577
+ expect: ['Directives', {
578
+ ofType: [{
579
+ token: '{'
580
+ }, {
581
+ listOfType: 'RootOperationTypeDefinition'
582
+ }, {
583
+ token: '}'
584
+ }],
585
+ optional: true
586
+ }]
587
+ }, {
588
+ ifCondition: {
589
+ token: '{'
590
+ },
591
+ expect: [{
592
+ token: '{'
593
+ }, {
594
+ listOfType: 'RootOperationTypeDefinition'
595
+ }, {
596
+ token: '}'
597
+ }]
598
+ }]
599
+ }],
600
+ Description: 'StringValue',
601
+ ScalarTypeDefinition: [{
602
+ ofType: 'Description',
603
+ optional: true
604
+ }, {
605
+ token: 'Name',
606
+ ofValue: 'scalar',
607
+ tokenName: 'ScalarDefinitionKeyword'
608
+ }, 'TypeName', {
609
+ ofType: 'Directives',
610
+ optional: true
611
+ }],
612
+ ScalarTypeExtension: [{
613
+ token: 'Name',
614
+ ofValue: 'extend',
615
+ tokenName: 'ExtendDefinitionKeyword'
616
+ }, {
617
+ token: 'Name',
618
+ ofValue: 'scalar',
619
+ tokenName: 'ScalarDefinitionKeyword'
620
+ }, 'TypeName', 'Directives'],
621
+ ObjectTypeDefinition: [{
622
+ ofType: 'Description',
623
+ optional: true
624
+ }, {
625
+ token: 'Name',
626
+ ofValue: 'type',
627
+ tokenName: 'TypeDefinitionKeyword'
628
+ }, 'TypeName', {
629
+ ofType: 'ImplementsInterfaces',
630
+ optional: true
631
+ }, {
632
+ ofType: 'Directives',
633
+ optional: true
634
+ }, {
635
+ ofType: 'FieldsDefinition',
636
+ optional: true
637
+ }],
638
+ ImplementsInterfaces: [{
639
+ token: 'Name',
640
+ ofValue: 'implements',
641
+ tokenName: 'ImplementsKeyword'
642
+ }, {
643
+ token: '&',
644
+ optional: true
645
+ }, 'TypeName', {
646
+ listOfType: 'ImplementsAdditionalInterfaceName',
647
+ optional: true
648
+ }],
649
+ ImplementsAdditionalInterfaceName: [{
650
+ token: '&'
651
+ }, 'TypeName'],
652
+ FieldsDefinition: [{
653
+ token: '{'
654
+ }, {
655
+ listOfType: 'FieldDefinition'
656
+ }, {
657
+ token: '}'
658
+ }],
659
+ FieldDefinition: [{
660
+ ofType: 'Description',
661
+ optional: true
662
+ }, {
663
+ token: 'Name',
664
+ tokenName: 'AliasName',
665
+ definitionName: true
666
+ }, {
667
+ ofType: 'ArgumentsDefinition',
668
+ optional: true
669
+ }, {
670
+ token: ':'
671
+ }, 'Type', {
672
+ ofType: 'Directives',
673
+ optional: true
674
+ }],
675
+ ArgumentsDefinition: [{
676
+ token: '('
677
+ }, {
678
+ listOfType: 'InputValueDefinition'
679
+ }, {
680
+ token: ')'
681
+ }],
682
+ InputValueDefinition: [{
683
+ ofType: 'Description',
684
+ optional: true
685
+ }, {
686
+ token: 'Name',
687
+ tokenName: 'ArgumentName'
688
+ }, {
689
+ token: ':'
690
+ }, 'Type', {
691
+ ofType: 'DefaultValue',
692
+ optional: true
693
+ }, {
694
+ ofType: 'Directives',
695
+ optional: true
696
+ }],
697
+ ObjectTypeExtension: [{
698
+ token: 'Name',
699
+ ofValue: 'extend',
700
+ tokenName: 'ExtendDefinitionKeyword'
701
+ }, {
702
+ token: 'Name',
703
+ ofValue: 'type',
704
+ tokenName: 'TypeDefinitionKeyword'
705
+ }, 'TypeName', {
706
+ peek: [{
707
+ ifCondition: {
708
+ token: 'Name',
709
+ ofValue: 'interface'
710
+ },
711
+ expect: ['ImplementsInterfaces', {
712
+ peek: [{
713
+ ifCondition: {
714
+ token: '@'
715
+ },
716
+ expect: ['Directives', {
717
+ ofType: 'FieldsDefinition',
718
+ optional: true
719
+ }]
720
+ }, {
721
+ ifCondition: {
722
+ token: '{'
723
+ },
724
+ expect: 'FieldsDefinition'
725
+ }],
726
+ optional: true
727
+ }]
728
+ }, {
729
+ ifCondition: {
730
+ token: '@'
731
+ },
732
+ expect: ['Directives', {
733
+ ofType: 'FieldsDefinition',
734
+ optional: true
735
+ }]
736
+ }, {
737
+ ifCondition: {
738
+ token: '{'
739
+ },
740
+ expect: 'FieldsDefinition'
741
+ }]
742
+ }],
743
+ InterfaceTypeDefinition: [{
744
+ ofType: 'Description',
745
+ optional: true
746
+ }, {
747
+ token: 'Name',
748
+ ofValue: 'interface',
749
+ tokenName: 'InterfaceDefinitionKeyword'
750
+ }, 'TypeName', {
751
+ ofType: 'Directives',
752
+ optional: true
753
+ }, {
754
+ ofType: 'FieldsDefinition',
755
+ optional: true
756
+ }],
757
+ InterfaceTypeExtension: [{
758
+ token: 'Name',
759
+ ofValue: 'extend',
760
+ tokenName: 'ExtendDefinitionKeyword'
761
+ }, {
762
+ token: 'Name',
763
+ ofValue: 'interface',
764
+ tokenName: 'InterfaceDefinitionKeyword'
765
+ }, 'TypeName', {
766
+ peek: [{
767
+ ifCondition: {
768
+ token: '@'
769
+ },
770
+ expect: ['Directives', {
771
+ ofType: 'FieldsDefinition',
772
+ optional: true
773
+ }]
774
+ }, {
775
+ ifCondition: {
776
+ token: '{'
777
+ },
778
+ expect: 'FieldsDefinition'
779
+ }]
780
+ }],
781
+ UnionTypeDefinition: [{
782
+ ofType: 'Description',
783
+ optional: true
784
+ }, {
785
+ token: 'Name',
786
+ ofValue: 'union',
787
+ tokenName: 'UnionDefinitionKeyword'
788
+ }, 'TypeName', {
789
+ ofType: 'Directives',
790
+ optional: true
791
+ }, {
792
+ ofType: 'UnionMemberTypes',
793
+ optional: true
794
+ }],
795
+ UnionMemberTypes: [{
796
+ token: '='
797
+ }, {
798
+ token: '|',
799
+ optional: true
800
+ }, 'Name', {
801
+ listOfType: 'UnionMemberAdditionalTypeName',
802
+ optional: true
803
+ }],
804
+ UnionMemberAdditionalTypeName: [{
805
+ token: '|'
806
+ }, 'TypeName'],
807
+ UnionTypeExtension: [{
808
+ token: 'Name',
809
+ ofValue: 'extend',
810
+ tokenName: 'ExtendDefinitionKeyword'
811
+ }, {
812
+ token: 'Name',
813
+ ofValue: 'union',
814
+ tokenName: 'UnionDefinitionKeyword'
815
+ }, 'TypeName', {
816
+ peek: [{
817
+ ifCondition: {
818
+ token: '@'
819
+ },
820
+ expect: ['Directives', {
821
+ ofType: 'UnionMemberTypes',
822
+ optional: true
823
+ }]
824
+ }, {
825
+ ifCondition: {
826
+ token: '='
827
+ },
828
+ expect: 'UnionMemberTypes'
829
+ }]
830
+ }],
831
+ EnumTypeDefinition: [{
832
+ ofType: 'Description',
833
+ optional: true
834
+ }, {
835
+ token: 'Name',
836
+ ofValue: 'enum',
837
+ tokenName: 'EnumDefinitionKeyword'
838
+ }, 'TypeName', {
839
+ ofType: 'Directives',
840
+ optional: true
841
+ }, {
842
+ ofType: 'EnumValuesDefinition',
843
+ optional: true
844
+ }],
845
+ EnumValuesDefinition: [{
846
+ token: '{'
847
+ }, {
848
+ listOfType: 'EnumValueDefinition'
849
+ }, {
850
+ token: '}'
851
+ }],
852
+ EnumValueDefinition: [{
853
+ ofType: 'Description',
854
+ optional: true
855
+ }, 'EnumValue', {
856
+ ofType: 'Directives',
857
+ optional: true
858
+ }],
859
+ EnumTypeExtension: [{
860
+ token: 'Name',
861
+ ofValue: 'extend',
862
+ tokenName: 'ExtendDefinitionKeyword'
863
+ }, {
864
+ token: 'Name',
865
+ ofValue: 'enum',
866
+ tokenName: 'EnumDefinitionKeyword'
867
+ }, 'TypeName', {
868
+ peek: [{
869
+ ifCondition: {
870
+ token: '@'
871
+ },
872
+ expect: ['Directives', {
873
+ ofType: 'EnumValuesDefinition',
874
+ optional: true
875
+ }]
876
+ }, {
877
+ ifCondition: {
878
+ token: '{'
879
+ },
880
+ expect: 'EnumValuesDefinition'
881
+ }]
882
+ }],
883
+ InputObjectTypeDefinition: [{
884
+ ofType: 'Description',
885
+ optional: true
886
+ }, {
887
+ token: 'Name',
888
+ ofValue: 'input',
889
+ tokenName: 'InputDefinitionKeyword'
890
+ }, 'TypeName', {
891
+ ofType: 'Directives',
892
+ optional: true
893
+ }, {
894
+ ofType: 'InputFieldsDefinition',
895
+ optional: true
896
+ }],
897
+ InputFieldsDefinition: [{
898
+ token: '{'
899
+ }, {
900
+ listOfType: 'InputValueDefinition'
901
+ }, {
902
+ token: '}'
903
+ }],
904
+ InputObjectTypeExtension: [{
905
+ token: 'Name',
906
+ ofValue: 'extend',
907
+ tokenName: 'ExtendDefinitionKeyword'
908
+ }, {
909
+ token: 'Name',
910
+ ofValue: 'input',
911
+ tokenName: 'InputDefinitionKeyword'
912
+ }, 'TypeName', {
913
+ peek: [{
914
+ ifCondition: {
915
+ token: '@'
916
+ },
917
+ expect: ['Directives', {
918
+ ofType: 'InputFieldsDefinition',
919
+ optional: true
920
+ }]
921
+ }, {
922
+ ifCondition: {
923
+ token: '{'
924
+ },
925
+ expect: 'InputFieldsDefinition'
926
+ }]
927
+ }],
928
+ DirectiveDefinition: [{
929
+ ofType: 'Description',
930
+ optional: true
931
+ }, {
932
+ token: 'Name',
933
+ ofValue: 'directive',
934
+ tokenName: 'DirectiveDefinitionKeyword'
935
+ }, {
936
+ token: '@',
937
+ tokenName: 'DirectiveName'
938
+ }, {
939
+ token: 'Name',
940
+ tokenName: 'DirectiveName'
941
+ }, {
942
+ ofType: 'ArgumentsDefinition',
943
+ optional: true
944
+ }, {
945
+ token: 'Name',
946
+ ofValue: 'on',
947
+ tokenName: 'OnKeyword'
948
+ }, 'DirectiveLocations'],
949
+ DirectiveLocations: [{
950
+ token: '|',
951
+ optional: true
952
+ }, 'DirectiveLocation', {
953
+ listOfType: 'DirectiveLocationAdditionalName',
954
+ optional: true
955
+ }],
956
+ DirectiveLocationAdditionalName: [{
957
+ token: '|'
958
+ }, 'DirectiveLocation'],
959
+ DirectiveLocation: {
960
+ peek: [{
961
+ ifCondition: 'ExecutableDirectiveLocation',
962
+ expect: 'ExecutableDirectiveLocation'
963
+ }, {
964
+ ifCondition: 'TypeSystemDirectiveLocation',
965
+ expect: 'TypeSystemDirectiveLocation'
966
+ }]
967
+ },
968
+ ExecutableDirectiveLocation: {
969
+ token: 'Name',
970
+ oneOf: ['QUERY', 'MUTATION', 'SUBSCRIPTION', 'FIELD', 'FRAGMENT_DEFINITION', 'FRAGMENT_SPREAD', 'INLINE_FRAGMENT'],
971
+ tokenName: 'EnumValue'
972
+ },
973
+ TypeSystemDirectiveLocation: {
974
+ token: 'Name',
975
+ oneOf: ['SCHEMA', 'SCALAR', 'OBJECT', 'FIELD_DEFINITION', 'ARGUMENT_DEFINITION', 'INTERFACE', 'UNION', 'ENUM', 'ENUM_VALUE', 'INPUT_OBJECT', 'INPUT_FIELD_DEFINITION'],
976
+ tokenName: 'EnumValue'
977
+ } // FIXME: enforce proper typing
978
+
979
+ };
980
+ export default grammar;