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
@@ -1,8 +1,6 @@
1
1
  // @flow strict
2
-
3
- import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols';
4
-
5
2
  import inspect from '../jsutils/inspect';
3
+ import isAsyncIterable from '../jsutils/isAsyncIterable';
6
4
  import { addPath, pathToArray } from '../jsutils/Path';
7
5
 
8
6
  import { GraphQLError } from '../error/GraphQLError';
@@ -10,7 +8,8 @@ import { locatedError } from '../error/locatedError';
10
8
 
11
9
  import type { DocumentNode } from '../language/ast';
12
10
 
13
- import type { ExecutionResult } from '../execution/execute';
11
+ import type { ExecutionResult, ExecutionContext } from '../execution/execute';
12
+ import { getArgumentValues } from '../execution/values';
14
13
  import {
15
14
  assertValidExecutionArguments,
16
15
  buildExecutionContext,
@@ -18,7 +17,6 @@ import {
18
17
  collectFields,
19
18
  execute,
20
19
  getFieldDef,
21
- resolveFieldValueOrError,
22
20
  } from '../execution/execute';
23
21
 
24
22
  import type { GraphQLSchema } from '../type/schema';
@@ -63,7 +61,7 @@ export type SubscriptionArgs = {|
63
61
  declare function subscribe(
64
62
  SubscriptionArgs,
65
63
  ..._: []
66
- ): Promise<AsyncIterator<ExecutionResult> | ExecutionResult>;
64
+ ): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult>;
67
65
  /* eslint-disable no-redeclare */
68
66
  declare function subscribe(
69
67
  schema: GraphQLSchema,
@@ -106,7 +104,7 @@ export function subscribe(
106
104
  * an ExecutionResult, containing only errors and no data. Otherwise treat the
107
105
  * error as a system-class error and re-throw it.
108
106
  */
109
- function reportGraphQLError(error) {
107
+ function reportGraphQLError(error: mixed): ExecutionResult {
110
108
  if (error instanceof GraphQLError) {
111
109
  return { errors: [error] };
112
110
  }
@@ -115,7 +113,7 @@ function reportGraphQLError(error) {
115
113
 
116
114
  function subscribeImpl(
117
115
  args: SubscriptionArgs,
118
- ): Promise<AsyncIterator<ExecutionResult> | ExecutionResult> {
116
+ ): Promise<AsyncGenerator<ExecutionResult, void, void> | ExecutionResult> {
119
117
  const {
120
118
  schema,
121
119
  document,
@@ -160,7 +158,7 @@ function subscribeImpl(
160
158
  // Note: Flow can't refine isAsyncIterable, so explicit casts are used.
161
159
  isAsyncIterable(resultOrStream)
162
160
  ? mapAsyncIterator(
163
- ((resultOrStream: any): AsyncIterable<mixed>),
161
+ resultOrStream,
164
162
  mapSourceToResponse,
165
163
  reportGraphQLError,
166
164
  )
@@ -209,7 +207,7 @@ export function createSourceEventStream(
209
207
  // developer mistake which should throw an early error.
210
208
  assertValidExecutionArguments(schema, document, variableValues);
211
209
 
212
- try {
210
+ return new Promise((resolve) => {
213
211
  // If a valid context cannot be created due to incorrect arguments,
214
212
  // this will throw an error.
215
213
  const exeContext = buildExecutionContext(
@@ -222,91 +220,79 @@ export function createSourceEventStream(
222
220
  fieldResolver,
223
221
  );
224
222
 
225
- // Return early errors if execution context failed.
226
- if (Array.isArray(exeContext)) {
227
- return Promise.resolve({ errors: exeContext });
228
- }
229
-
230
- const type = getOperationRootType(schema, exeContext.operation);
231
- const fields = collectFields(
232
- exeContext,
233
- type,
234
- exeContext.operation.selectionSet,
235
- Object.create(null),
236
- Object.create(null),
223
+ resolve(
224
+ // Return early errors if execution context failed.
225
+ Array.isArray(exeContext)
226
+ ? { errors: exeContext }
227
+ : executeSubscription(exeContext),
237
228
  );
238
- const responseNames = Object.keys(fields);
239
- const responseName = responseNames[0];
240
- const fieldNodes = fields[responseName];
241
- const fieldNode = fieldNodes[0];
242
- const fieldName = fieldNode.name.value;
243
- const fieldDef = getFieldDef(schema, type, fieldName);
229
+ }).catch(reportGraphQLError);
230
+ }
244
231
 
245
- if (!fieldDef) {
246
- throw new GraphQLError(
247
- `The subscription field "${fieldName}" is not defined.`,
248
- fieldNodes,
249
- );
250
- }
232
+ function executeSubscription(
233
+ exeContext: ExecutionContext,
234
+ ): Promise<AsyncIterable<mixed>> {
235
+ const { schema, operation, variableValues, rootValue } = exeContext;
236
+ const type = getOperationRootType(schema, operation);
237
+ const fields = collectFields(
238
+ exeContext,
239
+ type,
240
+ operation.selectionSet,
241
+ Object.create(null),
242
+ Object.create(null),
243
+ );
244
+ const responseNames = Object.keys(fields);
245
+ const responseName = responseNames[0];
246
+ const fieldNodes = fields[responseName];
247
+ const fieldNode = fieldNodes[0];
248
+ const fieldName = fieldNode.name.value;
249
+ const fieldDef = getFieldDef(schema, type, fieldName);
251
250
 
252
- // Call the `subscribe()` resolver or the default resolver to produce an
253
- // AsyncIterable yielding raw payloads.
254
- const resolveFn = fieldDef.subscribe ?? exeContext.fieldResolver;
251
+ if (!fieldDef) {
252
+ throw new GraphQLError(
253
+ `The subscription field "${fieldName}" is not defined.`,
254
+ fieldNodes,
255
+ );
256
+ }
255
257
 
256
- const path = addPath(undefined, responseName, type.name);
258
+ const path = addPath(undefined, responseName, type.name);
259
+ const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path);
257
260
 
258
- const info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path);
261
+ // Coerce to Promise for easier error handling and consistent return type.
262
+ return new Promise((resolveResult) => {
263
+ // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
264
+ // It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
259
265
 
260
- // resolveFieldValueOrError implements the "ResolveFieldEventStream"
261
- // algorithm from GraphQL specification. It differs from
262
- // "ResolveFieldValue" due to providing a different `resolveFn`.
263
- const result = resolveFieldValueOrError(
264
- exeContext,
265
- fieldDef,
266
- fieldNodes,
267
- resolveFn,
268
- rootValue,
269
- info,
270
- );
266
+ // Build a JS object of arguments from the field.arguments AST, using the
267
+ // variables scope to fulfill any variable references.
268
+ const args = getArgumentValues(fieldDef, fieldNodes[0], variableValues);
271
269
 
272
- // Coerce to Promise for easier error handling and consistent return type.
273
- return Promise.resolve(result).then((eventStream) => {
274
- // If eventStream is an Error, rethrow a located error.
270
+ // The resolve function's optional third argument is a context value that
271
+ // is provided to every resolve function within an execution. It is commonly
272
+ // used to represent an authenticated user, or request-specific caches.
273
+ const contextValue = exeContext.contextValue;
274
+
275
+ // Call the `subscribe()` resolver or the default resolver to produce an
276
+ // AsyncIterable yielding raw payloads.
277
+ const resolveFn = fieldDef.subscribe ?? exeContext.fieldResolver;
278
+ resolveResult(resolveFn(rootValue, args, contextValue, info));
279
+ }).then(
280
+ (eventStream) => {
275
281
  if (eventStream instanceof Error) {
276
- return {
277
- errors: [locatedError(eventStream, fieldNodes, pathToArray(path))],
278
- };
282
+ throw locatedError(eventStream, fieldNodes, pathToArray(path));
279
283
  }
280
284
 
281
285
  // Assert field returned an event stream, otherwise yield an error.
282
- if (isAsyncIterable(eventStream)) {
283
- // Note: isAsyncIterable above ensures this will be correct.
284
- return ((eventStream: any): AsyncIterable<mixed>);
286
+ if (!isAsyncIterable(eventStream)) {
287
+ throw new Error(
288
+ 'Subscription field must return Async Iterable. ' +
289
+ `Received: ${inspect(eventStream)}.`,
290
+ );
285
291
  }
286
-
287
- throw new Error(
288
- 'Subscription field must return Async Iterable. ' +
289
- `Received: ${inspect(eventStream)}.`,
290
- );
291
- });
292
- } catch (error) {
293
- // As with reportGraphQLError above, if the error is a GraphQLError, report
294
- // it as an ExecutionResult; otherwise treat it as a system-class error and
295
- // re-throw it.
296
- return error instanceof GraphQLError
297
- ? Promise.resolve({ errors: [error] })
298
- : Promise.reject(error);
299
- }
300
- }
301
-
302
- /**
303
- * Returns true if the provided object implements the AsyncIterator protocol via
304
- * either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
305
- */
306
- function isAsyncIterable(maybeAsyncIterable: mixed): boolean {
307
- if (maybeAsyncIterable == null || typeof maybeAsyncIterable !== 'object') {
308
- return false;
309
- }
310
-
311
- return typeof maybeAsyncIterable[SYMBOL_ASYNC_ITERATOR] === 'function';
292
+ return eventStream;
293
+ },
294
+ (error) => {
295
+ throw locatedError(error, fieldNodes, pathToArray(path));
296
+ },
297
+ );
312
298
  }
@@ -1,11 +1,10 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
-
3
- import { SYMBOL_ASYNC_ITERATOR } from "../polyfills/symbols.mjs";
4
1
  import inspect from "../jsutils/inspect.mjs";
2
+ import isAsyncIterable from "../jsutils/isAsyncIterable.mjs";
5
3
  import { addPath, pathToArray } from "../jsutils/Path.mjs";
6
4
  import { GraphQLError } from "../error/GraphQLError.mjs";
7
5
  import { locatedError } from "../error/locatedError.mjs";
8
- import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef, resolveFieldValueOrError } from "../execution/execute.mjs";
6
+ import { getArgumentValues } from "../execution/values.mjs";
7
+ import { assertValidExecutionArguments, buildExecutionContext, buildResolveInfo, collectFields, execute, getFieldDef } from "../execution/execute.mjs";
9
8
  import { getOperationRootType } from "../utilities/getOperationRootType.mjs";
10
9
  import mapAsyncIterator from "./mapAsyncIterator.mjs";
11
10
  export function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
@@ -108,77 +107,66 @@ export function createSourceEventStream(schema, document, rootValue, contextValu
108
107
  // If arguments are missing or incorrectly typed, this is an internal
109
108
  // developer mistake which should throw an early error.
110
109
  assertValidExecutionArguments(schema, document, variableValues);
111
-
112
- try {
113
- var _fieldDef$subscribe;
114
-
110
+ return new Promise(function (resolve) {
115
111
  // If a valid context cannot be created due to incorrect arguments,
116
112
  // this will throw an error.
117
- var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed.
118
-
119
- if (Array.isArray(exeContext)) {
120
- return Promise.resolve({
121
- errors: exeContext
122
- });
123
- }
113
+ var exeContext = buildExecutionContext(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
114
+ resolve( // Return early errors if execution context failed.
115
+ Array.isArray(exeContext) ? {
116
+ errors: exeContext
117
+ } : executeSubscription(exeContext));
118
+ }).catch(reportGraphQLError);
119
+ }
124
120
 
125
- var type = getOperationRootType(schema, exeContext.operation);
126
- var fields = collectFields(exeContext, type, exeContext.operation.selectionSet, Object.create(null), Object.create(null));
127
- var responseNames = Object.keys(fields);
128
- var responseName = responseNames[0];
129
- var fieldNodes = fields[responseName];
130
- var fieldNode = fieldNodes[0];
131
- var fieldName = fieldNode.name.value;
132
- var fieldDef = getFieldDef(schema, type, fieldName);
133
-
134
- if (!fieldDef) {
135
- throw new GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
136
- } // Call the `subscribe()` resolver or the default resolver to produce an
137
- // AsyncIterable yielding raw payloads.
121
+ function executeSubscription(exeContext) {
122
+ var schema = exeContext.schema,
123
+ operation = exeContext.operation,
124
+ variableValues = exeContext.variableValues,
125
+ rootValue = exeContext.rootValue;
126
+ var type = getOperationRootType(schema, operation);
127
+ var fields = collectFields(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));
128
+ var responseNames = Object.keys(fields);
129
+ var responseName = responseNames[0];
130
+ var fieldNodes = fields[responseName];
131
+ var fieldNode = fieldNodes[0];
132
+ var fieldName = fieldNode.name.value;
133
+ var fieldDef = getFieldDef(schema, type, fieldName);
134
+
135
+ if (!fieldDef) {
136
+ throw new GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
137
+ }
138
138
 
139
+ var path = addPath(undefined, responseName, type.name);
140
+ var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type.
139
141
 
140
- var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
141
- var path = addPath(undefined, responseName, type.name);
142
- var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the "ResolveFieldEventStream"
143
- // algorithm from GraphQL specification. It differs from
144
- // "ResolveFieldValue" due to providing a different `resolveFn`.
142
+ return new Promise(function (resolveResult) {
143
+ var _fieldDef$subscribe;
145
144
 
146
- var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, rootValue, info); // Coerce to Promise for easier error handling and consistent return type.
145
+ // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
146
+ // It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
147
+ // Build a JS object of arguments from the field.arguments AST, using the
148
+ // variables scope to fulfill any variable references.
149
+ var args = getArgumentValues(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that
150
+ // is provided to every resolve function within an execution. It is commonly
151
+ // used to represent an authenticated user, or request-specific caches.
147
152
 
148
- return Promise.resolve(result).then(function (eventStream) {
149
- // If eventStream is an Error, rethrow a located error.
150
- if (eventStream instanceof Error) {
151
- return {
152
- errors: [locatedError(eventStream, fieldNodes, pathToArray(path))]
153
- };
154
- } // Assert field returned an event stream, otherwise yield an error.
153
+ var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an
154
+ // AsyncIterable yielding raw payloads.
155
155
 
156
+ var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
157
+ resolveResult(resolveFn(rootValue, args, contextValue, info));
158
+ }).then(function (eventStream) {
159
+ if (eventStream instanceof Error) {
160
+ throw locatedError(eventStream, fieldNodes, pathToArray(path));
161
+ } // Assert field returned an event stream, otherwise yield an error.
156
162
 
157
- if (isAsyncIterable(eventStream)) {
158
- // Note: isAsyncIterable above ensures this will be correct.
159
- return eventStream;
160
- }
161
163
 
164
+ if (!isAsyncIterable(eventStream)) {
162
165
  throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat(inspect(eventStream), "."));
163
- });
164
- } catch (error) {
165
- // As with reportGraphQLError above, if the error is a GraphQLError, report
166
- // it as an ExecutionResult; otherwise treat it as a system-class error and
167
- // re-throw it.
168
- return error instanceof GraphQLError ? Promise.resolve({
169
- errors: [error]
170
- }) : Promise.reject(error);
171
- }
172
- }
173
- /**
174
- * Returns true if the provided object implements the AsyncIterator protocol via
175
- * either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
176
- */
177
-
178
- function isAsyncIterable(maybeAsyncIterable) {
179
- if (maybeAsyncIterable == null || _typeof(maybeAsyncIterable) !== 'object') {
180
- return false;
181
- }
166
+ }
182
167
 
183
- return typeof maybeAsyncIterable[SYMBOL_ASYNC_ITERATOR] === 'function';
168
+ return eventStream;
169
+ }, function (error) {
170
+ throw locatedError(error, fieldNodes, pathToArray(path));
171
+ });
184
172
  }
@@ -183,6 +183,7 @@ interface _GraphQLList<T extends GraphQLType> {
183
183
  new (type: T): GraphQLList<T>;
184
184
  }
185
185
 
186
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
186
187
  export const GraphQLList: _GraphQLList<GraphQLType>;
187
188
 
188
189
  /**
@@ -217,6 +218,7 @@ interface _GraphQLNonNull<T extends GraphQLNullableType> {
217
218
  new (type: T): GraphQLNonNull<T>;
218
219
  }
219
220
 
221
+ // eslint-disable-next-line @typescript-eslint/no-redeclare
220
222
  export const GraphQLNonNull: _GraphQLNonNull<GraphQLNullableType>;
221
223
 
222
224
  export type GraphQLWrappingType = GraphQLList<any> | GraphQLNonNull<any>;
@@ -368,7 +370,7 @@ export interface GraphQLScalarTypeConfig<TInternal, TExternal> {
368
370
  * We've provided these template arguments because this is an open type and
369
371
  * you may find them useful.
370
372
  */
371
- export interface GraphQLObjectTypeExtensions<TSource = any, TContext = any> {
373
+ export interface GraphQLObjectTypeExtensions<_TSource = any, _TContext = any> {
372
374
  [attributeName: string]: any;
373
375
  }
374
376
 
@@ -499,9 +501,9 @@ export interface GraphQLResolveInfo {
499
501
  * you may find them useful.
500
502
  */
501
503
  export interface GraphQLFieldExtensions<
502
- TSource,
503
- TContext,
504
- TArgs = { [argName: string]: any }
504
+ _TSource,
505
+ _TContext,
506
+ _TArgs = { [argName: string]: any }
505
507
  > {
506
508
  [attributeName: string]: any;
507
509
  }
@@ -544,6 +546,7 @@ export interface GraphQLArgumentConfig {
544
546
  description?: Maybe<string>;
545
547
  type: GraphQLInputType;
546
548
  defaultValue?: any;
549
+ deprecationReason?: Maybe<string>;
547
550
  extensions?: Maybe<Readonly<GraphQLArgumentExtensions>>;
548
551
  astNode?: Maybe<InputValueDefinitionNode>;
549
552
  }
@@ -563,10 +566,12 @@ export interface GraphQLField<
563
566
  args: Array<GraphQLArgument>;
564
567
  resolve?: GraphQLFieldResolver<TSource, TContext, TArgs>;
565
568
  subscribe?: GraphQLFieldResolver<TSource, TContext, TArgs>;
566
- isDeprecated: boolean;
567
569
  deprecationReason: Maybe<string>;
568
570
  extensions: Maybe<Readonly<GraphQLFieldExtensions<TSource, TContext, TArgs>>>;
569
571
  astNode?: Maybe<FieldDefinitionNode>;
572
+
573
+ // @deprecated and will be removed in v16
574
+ isDeprecated: boolean;
570
575
  }
571
576
 
572
577
  export interface GraphQLArgument {
@@ -574,6 +579,7 @@ export interface GraphQLArgument {
574
579
  description: Maybe<string>;
575
580
  type: GraphQLInputType;
576
581
  defaultValue: any;
582
+ deprecationReason: Maybe<string>;
577
583
  extensions: Maybe<Readonly<GraphQLArgumentExtensions>>;
578
584
  astNode: Maybe<InputValueDefinitionNode>;
579
585
  }
@@ -827,10 +833,12 @@ export interface GraphQLEnumValue {
827
833
  name: string;
828
834
  description: Maybe<string>;
829
835
  value: any;
830
- isDeprecated: boolean;
831
836
  deprecationReason: Maybe<string>;
832
837
  extensions: Maybe<Readonly<GraphQLEnumValueExtensions>>;
833
838
  astNode?: Maybe<EnumValueDefinitionNode>;
839
+
840
+ // @deprecated and will be removed in v16
841
+ isDeprecated: boolean;
834
842
  }
835
843
 
836
844
  /**
@@ -913,6 +921,7 @@ export interface GraphQLInputFieldConfig {
913
921
  description?: Maybe<string>;
914
922
  type: GraphQLInputType;
915
923
  defaultValue?: any;
924
+ deprecationReason?: Maybe<string>;
916
925
  extensions?: Maybe<Readonly<GraphQLInputFieldExtensions>>;
917
926
  astNode?: Maybe<InputValueDefinitionNode>;
918
927
  }
@@ -926,6 +935,7 @@ export interface GraphQLInputField {
926
935
  description?: Maybe<string>;
927
936
  type: GraphQLInputType;
928
937
  defaultValue?: any;
938
+ deprecationReason: Maybe<string>;
929
939
  extensions: Maybe<Readonly<GraphQLInputFieldExtensions>>;
930
940
  astNode?: Maybe<InputValueDefinitionNode>;
931
941
  }
@@ -46,41 +46,41 @@ exports.isRequiredArgument = isRequiredArgument;
46
46
  exports.isRequiredInputField = isRequiredInputField;
47
47
  exports.GraphQLInputObjectType = exports.GraphQLEnumType = exports.GraphQLUnionType = exports.GraphQLInterfaceType = exports.GraphQLObjectType = exports.GraphQLScalarType = void 0;
48
48
 
49
- var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries"));
49
+ var _objectEntries = _interopRequireDefault(require("../polyfills/objectEntries.js"));
50
50
 
51
- var _symbols = require("../polyfills/symbols");
51
+ var _symbols = require("../polyfills/symbols.js");
52
52
 
53
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
53
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
54
54
 
55
- var _keyMap = _interopRequireDefault(require("../jsutils/keyMap"));
55
+ var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
56
56
 
57
- var _mapValue = _interopRequireDefault(require("../jsutils/mapValue"));
57
+ var _mapValue = _interopRequireDefault(require("../jsutils/mapValue.js"));
58
58
 
59
- var _toObjMap = _interopRequireDefault(require("../jsutils/toObjMap"));
59
+ var _toObjMap = _interopRequireDefault(require("../jsutils/toObjMap.js"));
60
60
 
61
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
61
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
62
62
 
63
- var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
63
+ var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
64
64
 
65
- var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf"));
65
+ var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf.js"));
66
66
 
67
- var _didYouMean = _interopRequireDefault(require("../jsutils/didYouMean"));
67
+ var _didYouMean = _interopRequireDefault(require("../jsutils/didYouMean.js"));
68
68
 
69
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
69
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
70
70
 
71
- var _identityFunc = _interopRequireDefault(require("../jsutils/identityFunc"));
71
+ var _identityFunc = _interopRequireDefault(require("../jsutils/identityFunc.js"));
72
72
 
73
- var _defineInspect = _interopRequireDefault(require("../jsutils/defineInspect"));
73
+ var _defineInspect = _interopRequireDefault(require("../jsutils/defineInspect.js"));
74
74
 
75
- var _suggestionList = _interopRequireDefault(require("../jsutils/suggestionList"));
75
+ var _suggestionList = _interopRequireDefault(require("../jsutils/suggestionList.js"));
76
76
 
77
- var _GraphQLError = require("../error/GraphQLError");
77
+ var _GraphQLError = require("../error/GraphQLError.js");
78
78
 
79
- var _kinds = require("../language/kinds");
79
+ var _kinds = require("../language/kinds.js");
80
80
 
81
- var _printer = require("../language/printer");
81
+ var _printer = require("../language/printer.js");
82
82
 
83
- var _valueFromASTUntyped = require("../utilities/valueFromASTUntyped");
83
+ var _valueFromASTUntyped = require("../utilities/valueFromASTUntyped.js");
84
84
 
85
85
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
86
86
 
@@ -299,8 +299,8 @@ function assertAbstractType(type) {
299
299
  * const PersonType = new GraphQLObjectType({
300
300
  * name: 'Person',
301
301
  * fields: () => ({
302
- * parents: { type: GraphQLList(PersonType) },
303
- * children: { type: GraphQLList(PersonType) },
302
+ * parents: { type: new GraphQLList(PersonType) },
303
+ * children: { type: new GraphQLList(PersonType) },
304
304
  * })
305
305
  * })
306
306
  *
@@ -318,6 +318,7 @@ declare class GraphQLList<+T: GraphQLType> {
318
318
 
319
319
 
320
320
  function GraphQLList(ofType) {
321
+ // istanbul ignore else (to be removed in v16.0.0)
321
322
  if (this instanceof GraphQLList) {
322
323
  this.ofType = assertType(ofType);
323
324
  } else {
@@ -355,7 +356,7 @@ Object.defineProperty(GraphQLList.prototype, _symbols.SYMBOL_TO_STRING_TAG, {
355
356
  * const RowType = new GraphQLObjectType({
356
357
  * name: 'Row',
357
358
  * fields: () => ({
358
- * id: { type: GraphQLNonNull(GraphQLString) },
359
+ * id: { type: new GraphQLNonNull(GraphQLString) },
359
360
  * })
360
361
  * })
361
362
  *
@@ -373,6 +374,7 @@ declare class GraphQLNonNull<+T: GraphQLNullableType> {
373
374
  */
374
375
 
375
376
  function GraphQLNonNull(ofType) {
377
+ // istanbul ignore else (to be removed in v16.0.0)
376
378
  if (this instanceof GraphQLNonNull) {
377
379
  this.ofType = assertNullableType(ofType);
378
380
  } else {
@@ -474,7 +476,7 @@ function getNamedType(type) {
474
476
 
475
477
 
476
478
  function resolveThunk(thunk) {
477
- // $FlowFixMe(>=0.90.0)
479
+ // $FlowFixMe[incompatible-use]
478
480
  return typeof thunk === 'function' ? thunk() : thunk;
479
481
  }
480
482
 
@@ -517,8 +519,8 @@ var GraphQLScalarType = /*#__PURE__*/function () {
517
519
  this.specifiedByUrl = config.specifiedByUrl;
518
520
  this.serialize = (_config$serialize = config.serialize) !== null && _config$serialize !== void 0 ? _config$serialize : _identityFunc.default;
519
521
  this.parseValue = parseValue;
520
- this.parseLiteral = (_config$parseLiteral = config.parseLiteral) !== null && _config$parseLiteral !== void 0 ? _config$parseLiteral : function (node) {
521
- return parseValue((0, _valueFromASTUntyped.valueFromASTUntyped)(node));
522
+ this.parseLiteral = (_config$parseLiteral = config.parseLiteral) !== null && _config$parseLiteral !== void 0 ? _config$parseLiteral : function (node, variables) {
523
+ return parseValue((0, _valueFromASTUntyped.valueFromASTUntyped)(node, variables));
522
524
  };
523
525
  this.extensions = config.extensions && (0, _toObjMap.default)(config.extensions);
524
526
  this.astNode = config.astNode;
@@ -556,7 +558,7 @@ var GraphQLScalarType = /*#__PURE__*/function () {
556
558
 
557
559
  _proto.toJSON = function toJSON() {
558
560
  return this.toString();
559
- } // $FlowFixMe Flow doesn't support computed properties yet
561
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
560
562
  ;
561
563
 
562
564
  _createClass(GraphQLScalarType, [{
@@ -661,7 +663,7 @@ var GraphQLObjectType = /*#__PURE__*/function () {
661
663
 
662
664
  _proto2.toJSON = function toJSON() {
663
665
  return this.toString();
664
- } // $FlowFixMe Flow doesn't support computed properties yet
666
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
665
667
  ;
666
668
 
667
669
  _createClass(GraphQLObjectType, [{
@@ -705,6 +707,7 @@ function defineFieldMap(config) {
705
707
  description: argConfig.description,
706
708
  type: argConfig.type,
707
709
  defaultValue: argConfig.defaultValue,
710
+ deprecationReason: argConfig.deprecationReason,
708
711
  extensions: argConfig.extensions && (0, _toObjMap.default)(argConfig.extensions),
709
712
  astNode: argConfig.astNode
710
713
  };
@@ -755,6 +758,7 @@ function argsToArgsConfig(args) {
755
758
  description: arg.description,
756
759
  type: arg.type,
757
760
  defaultValue: arg.defaultValue,
761
+ deprecationReason: arg.deprecationReason,
758
762
  extensions: arg.extensions,
759
763
  astNode: arg.astNode
760
764
  };
@@ -836,7 +840,7 @@ var GraphQLInterfaceType = /*#__PURE__*/function () {
836
840
 
837
841
  _proto3.toJSON = function toJSON() {
838
842
  return this.toString();
839
- } // $FlowFixMe Flow doesn't support computed properties yet
843
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
840
844
  ;
841
845
 
842
846
  _createClass(GraphQLInterfaceType, [{
@@ -919,7 +923,7 @@ var GraphQLUnionType = /*#__PURE__*/function () {
919
923
 
920
924
  _proto4.toJSON = function toJSON() {
921
925
  return this.toString();
922
- } // $FlowFixMe Flow doesn't support computed properties yet
926
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
923
927
  ;
924
928
 
925
929
  _createClass(GraphQLUnionType, [{
@@ -1069,7 +1073,7 @@ var GraphQLEnumType
1069
1073
 
1070
1074
  _proto5.toJSON = function toJSON() {
1071
1075
  return this.toString();
1072
- } // $FlowFixMe Flow doesn't support computed properties yet
1076
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
1073
1077
  ;
1074
1078
 
1075
1079
  _createClass(GraphQLEnumType, [{
@@ -1126,8 +1130,8 @@ function defineEnumValues(typeName, valueMap) {
1126
1130
  * const GeoPoint = new GraphQLInputObjectType({
1127
1131
  * name: 'GeoPoint',
1128
1132
  * fields: {
1129
- * lat: { type: GraphQLNonNull(GraphQLFloat) },
1130
- * lon: { type: GraphQLNonNull(GraphQLFloat) },
1133
+ * lat: { type: new GraphQLNonNull(GraphQLFloat) },
1134
+ * lon: { type: new GraphQLNonNull(GraphQLFloat) },
1131
1135
  * alt: { type: GraphQLFloat, defaultValue: 0 },
1132
1136
  * }
1133
1137
  * });
@@ -1182,7 +1186,7 @@ var GraphQLInputObjectType = /*#__PURE__*/function () {
1182
1186
 
1183
1187
  _proto6.toJSON = function toJSON() {
1184
1188
  return this.toString();
1185
- } // $FlowFixMe Flow doesn't support computed properties yet
1189
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
1186
1190
  ;
1187
1191
 
1188
1192
  _createClass(GraphQLInputObjectType, [{
@@ -1209,6 +1213,7 @@ function defineInputFieldMap(config) {
1209
1213
  description: fieldConfig.description,
1210
1214
  type: fieldConfig.type,
1211
1215
  defaultValue: fieldConfig.defaultValue,
1216
+ deprecationReason: fieldConfig.deprecationReason,
1212
1217
  extensions: fieldConfig.extensions && (0, _toObjMap.default)(fieldConfig.extensions),
1213
1218
  astNode: fieldConfig.astNode
1214
1219
  };