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,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import inspect from '../jsutils/inspect';
4
3
 
5
4
  import type { ASTNode, ASTKindToNode } from './ast';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql",
3
- "version": "15.3.0",
3
+ "version": "15.5.1",
4
4
  "description": "A Query Language and Runtime which can target any service.",
5
5
  "license": "MIT",
6
6
  "main": "index",
@@ -21,6 +21,5 @@
21
21
  ],
22
22
  "engines": {
23
23
  "node": ">= 10.x"
24
- },
25
- "dependencies": {}
24
+ }
26
25
  }
@@ -5,10 +5,10 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
- var _symbols = require("./symbols");
8
+ var _symbols = require("./symbols.js");
9
9
 
10
10
  /* eslint-disable no-redeclare */
11
- // $FlowFixMe
11
+ // $FlowFixMe[name-already-bound]
12
12
  var arrayFrom = Array.from || function (obj, mapFn, thisArg) {
13
13
  if (obj == null) {
14
14
  throw new TypeError('Array.from requires an array-like object - not null or undefined');
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import { SYMBOL_ITERATOR } from './symbols';
4
3
 
5
4
  declare function arrayFrom<T>(arrayLike: Iterable<T>): Array<T>;
@@ -11,7 +10,7 @@ declare function arrayFrom<T: mixed>(
11
10
  ): Array<T>;
12
11
 
13
12
  /* eslint-disable no-redeclare */
14
- // $FlowFixMe
13
+ // $FlowFixMe[name-already-bound]
15
14
  const arrayFrom =
16
15
  Array.from ||
17
16
  function (obj, mapFn, thisArg) {
@@ -1,7 +1,7 @@
1
1
  import { SYMBOL_ITERATOR } from "./symbols.mjs";
2
2
 
3
3
  /* eslint-disable no-redeclare */
4
- // $FlowFixMe
4
+ // $FlowFixMe[name-already-bound]
5
5
  var arrayFrom = Array.from || function (obj, mapFn, thisArg) {
6
6
  if (obj == null) {
7
7
  throw new TypeError('Array.from requires an array-like object - not null or undefined');
package/polyfills/find.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
 
8
8
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe
9
+ // $FlowFixMe[name-already-bound]
10
10
  var find = Array.prototype.find ? function (list, predicate) {
11
11
  return Array.prototype.find.call(list, predicate);
12
12
  } : function (list, predicate) {
@@ -1,12 +1,11 @@
1
1
  // @flow strict
2
-
3
2
  declare function find<T>(
4
3
  list: $ReadOnlyArray<T>,
5
4
  predicate: (item: T) => boolean,
6
5
  ): T | void;
7
6
 
8
7
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe
8
+ // $FlowFixMe[name-already-bound]
10
9
  const find = Array.prototype.find
11
10
  ? function (list, predicate) {
12
11
  return Array.prototype.find.call(list, predicate);
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-redeclare */
2
- // $FlowFixMe
2
+ // $FlowFixMe[name-already-bound]
3
3
  var find = Array.prototype.find ? function (list, predicate) {
4
4
  return Array.prototype.find.call(list, predicate);
5
5
  } : function (list, predicate) {
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
 
8
8
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
9
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
10
10
  var isFinitePolyfill = Number.isFinite || function (value) {
11
11
  return typeof value === 'number' && isFinite(value);
12
12
  };
@@ -1,11 +1,10 @@
1
1
  // @flow strict
2
-
3
2
  declare function isFinitePolyfill(
4
3
  value: mixed,
5
4
  ): boolean %checks(typeof value === 'number');
6
5
 
7
6
  /* eslint-disable no-redeclare */
8
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
7
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
9
8
  const isFinitePolyfill =
10
9
  Number.isFinite ||
11
10
  function (value) {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-redeclare */
2
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
2
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
3
3
  var isFinitePolyfill = Number.isFinite || function (value) {
4
4
  return typeof value === 'number' && isFinite(value);
5
5
  };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
 
8
8
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
9
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
10
10
  var isInteger = Number.isInteger || function (value) {
11
11
  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
12
12
  };
@@ -1,10 +1,9 @@
1
1
  // @flow strict
2
-
3
2
  declare function isInteger(value: mixed): boolean %checks(typeof value ===
4
3
  'number');
5
4
 
6
5
  /* eslint-disable no-redeclare */
7
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
6
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
8
7
  const isInteger =
9
8
  Number.isInteger ||
10
9
  function (value) {
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-redeclare */
2
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/4441
2
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
3
3
  var isInteger = Number.isInteger || function (value) {
4
4
  return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
5
5
  };
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
 
8
8
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
9
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
10
10
  var objectEntries = Object.entries || function (obj) {
11
11
  return Object.keys(obj).map(function (key) {
12
12
  return [key, obj[key]];
@@ -1,11 +1,10 @@
1
1
  // @flow strict
2
-
3
2
  import type { ObjMap } from '../jsutils/ObjMap';
4
3
 
5
4
  declare function objectEntries<T>(obj: ObjMap<T>): Array<[string, T]>;
6
5
 
7
6
  /* eslint-disable no-redeclare */
8
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
7
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
9
8
  const objectEntries =
10
9
  Object.entries || ((obj) => Object.keys(obj).map((key) => [key, obj[key]]));
11
10
 
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-redeclare */
2
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/5838
2
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
3
3
  var objectEntries = Object.entries || function (obj) {
4
4
  return Object.keys(obj).map(function (key) {
5
5
  return [key, obj[key]];
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.default = void 0;
7
7
 
8
8
  /* eslint-disable no-redeclare */
9
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221
9
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
10
10
  var objectValues = Object.values || function (obj) {
11
11
  return Object.keys(obj).map(function (key) {
12
12
  return obj[key];
@@ -1,11 +1,10 @@
1
1
  // @flow strict
2
-
3
2
  import type { ObjMap } from '../jsutils/ObjMap';
4
3
 
5
4
  declare function objectValues<T>(obj: ObjMap<T>): Array<T>;
6
5
 
7
6
  /* eslint-disable no-redeclare */
8
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221
7
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
9
8
  const objectValues =
10
9
  Object.values || ((obj) => Object.keys(obj).map((key) => obj[key]));
11
10
  export default objectValues;
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable no-redeclare */
2
- // $FlowFixMe workaround for: https://github.com/facebook/flow/issues/2221
2
+ // $FlowFixMe[name-already-bound] workaround for: https://github.com/facebook/flow/issues/4441
3
3
  var objectValues = Object.values || function (obj) {
4
4
  return Object.keys(obj).map(function (key) {
5
5
  return obj[key];
@@ -6,14 +6,12 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.SYMBOL_TO_STRING_TAG = exports.SYMBOL_ASYNC_ITERATOR = exports.SYMBOL_ITERATOR = void 0;
7
7
  // In ES2015 (or a polyfilled) environment, this will be Symbol.iterator
8
8
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
9
- var SYMBOL_ITERATOR = typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator
9
+ var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator
10
10
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
11
11
 
12
12
  exports.SYMBOL_ITERATOR = SYMBOL_ITERATOR;
13
- var SYMBOL_ASYNC_ITERATOR = // $FlowFixMe Flow doesn't define `Symbol.asyncIterator` yet
14
- typeof Symbol === 'function' ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
13
+ var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
15
14
 
16
15
  exports.SYMBOL_ASYNC_ITERATOR = SYMBOL_ASYNC_ITERATOR;
17
- var SYMBOL_TO_STRING_TAG = // $FlowFixMe Flow doesn't define `Symbol.toStringTag` yet
18
- typeof Symbol === 'function' ? Symbol.toStringTag : '@@toStringTag';
16
+ var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';
19
17
  exports.SYMBOL_TO_STRING_TAG = SYMBOL_TO_STRING_TAG;
@@ -1,17 +1,20 @@
1
1
  // @flow strict
2
-
3
2
  // In ES2015 (or a polyfilled) environment, this will be Symbol.iterator
4
3
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
5
4
  export const SYMBOL_ITERATOR: string =
6
- typeof Symbol === 'function' ? Symbol.iterator : '@@iterator';
5
+ typeof Symbol === 'function' && Symbol.iterator != null
6
+ ? Symbol.iterator
7
+ : '@@iterator';
7
8
 
8
9
  // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator
9
10
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
10
11
  export const SYMBOL_ASYNC_ITERATOR: string =
11
- // $FlowFixMe Flow doesn't define `Symbol.asyncIterator` yet
12
- typeof Symbol === 'function' ? Symbol.asyncIterator : '@@asyncIterator';
12
+ typeof Symbol === 'function' && Symbol.asyncIterator != null
13
+ ? Symbol.asyncIterator
14
+ : '@@asyncIterator';
13
15
 
14
16
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
15
17
  export const SYMBOL_TO_STRING_TAG: string =
16
- // $FlowFixMe Flow doesn't define `Symbol.toStringTag` yet
17
- typeof Symbol === 'function' ? Symbol.toStringTag : '@@toStringTag';
18
+ typeof Symbol === 'function' && Symbol.toStringTag != null
19
+ ? Symbol.toStringTag
20
+ : '@@toStringTag';
@@ -1,10 +1,8 @@
1
1
  // In ES2015 (or a polyfilled) environment, this will be Symbol.iterator
2
2
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
3
- export var SYMBOL_ITERATOR = typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator
3
+ export var SYMBOL_ITERATOR = typeof Symbol === 'function' && Symbol.iterator != null ? Symbol.iterator : '@@iterator'; // In ES2017 (or a polyfilled) environment, this will be Symbol.asyncIterator
4
4
  // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
5
5
 
6
- export var SYMBOL_ASYNC_ITERATOR = // $FlowFixMe Flow doesn't define `Symbol.asyncIterator` yet
7
- typeof Symbol === 'function' ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
6
+ export var SYMBOL_ASYNC_ITERATOR = typeof Symbol === 'function' && Symbol.asyncIterator != null ? Symbol.asyncIterator : '@@asyncIterator'; // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2317')
8
7
 
9
- export var SYMBOL_TO_STRING_TAG = // $FlowFixMe Flow doesn't define `Symbol.toStringTag` yet
10
- typeof Symbol === 'function' ? Symbol.toStringTag : '@@toStringTag';
8
+ export var SYMBOL_TO_STRING_TAG = typeof Symbol === 'function' && Symbol.toStringTag != null ? Symbol.toStringTag : '@@toStringTag';
@@ -16,4 +16,4 @@ Object.defineProperty(exports, "createSourceEventStream", {
16
16
  }
17
17
  });
18
18
 
19
- var _subscribe = require("./subscribe");
19
+ var _subscribe = require("./subscribe.js");
@@ -1,4 +1,3 @@
1
1
  // @flow strict
2
-
3
2
  export { subscribe, createSourceEventStream } from './subscribe';
4
3
  export type { SubscriptionArgs } from './subscribe';
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = mapAsyncIterator;
7
7
 
8
- var _symbols = require("../polyfills/symbols");
8
+ var _symbols = require("../polyfills/symbols.js");
9
9
 
10
10
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11
11
 
@@ -14,7 +14,7 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
14
14
  * which produces values mapped via calling the callback function.
15
15
  */
16
16
  function mapAsyncIterator(iterable, callback, rejectCallback) {
17
- // $FlowFixMe
17
+ // $FlowFixMe[prop-missing]
18
18
  var iteratorMethod = iterable[_symbols.SYMBOL_ASYNC_ITERATOR];
19
19
  var iterator = iteratorMethod.call(iterable);
20
20
  var $return;
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import { SYMBOL_ASYNC_ITERATOR } from '../polyfills/symbols';
4
3
 
5
4
  import type { PromiseOrValue } from '../jsutils/PromiseOrValue';
@@ -9,24 +8,24 @@ import type { PromiseOrValue } from '../jsutils/PromiseOrValue';
9
8
  * which produces values mapped via calling the callback function.
10
9
  */
11
10
  export default function mapAsyncIterator<T, U>(
12
- iterable: AsyncIterable<T>,
11
+ iterable: AsyncIterable<T> | AsyncGenerator<T, void, void>,
13
12
  callback: (T) => PromiseOrValue<U>,
14
13
  rejectCallback?: (any) => PromiseOrValue<U>,
15
14
  ): AsyncGenerator<U, void, void> {
16
- // $FlowFixMe
15
+ // $FlowFixMe[prop-missing]
17
16
  const iteratorMethod = iterable[SYMBOL_ASYNC_ITERATOR];
18
17
  const iterator: any = iteratorMethod.call(iterable);
19
18
  let $return: any;
20
19
  let abruptClose;
21
20
  if (typeof iterator.return === 'function') {
22
21
  $return = iterator.return;
23
- abruptClose = (error) => {
22
+ abruptClose = (error: mixed) => {
24
23
  const rethrow = () => Promise.reject(error);
25
24
  return $return.call(iterator).then(rethrow, rethrow);
26
25
  };
27
26
  }
28
27
 
29
- function mapResult(result) {
28
+ function mapResult(result: IteratorResult<T, void>) {
30
29
  return result.done
31
30
  ? result
32
31
  : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);
@@ -36,14 +35,14 @@ export default function mapAsyncIterator<T, U>(
36
35
  if (rejectCallback) {
37
36
  // Capture rejectCallback to ensure it cannot be null.
38
37
  const reject = rejectCallback;
39
- mapReject = (error) =>
38
+ mapReject = (error: mixed) =>
40
39
  asyncMapValue(error, reject).then(iteratorResult, abruptClose);
41
40
  }
42
41
 
43
42
  /* TODO: Flow doesn't support symbols as keys:
44
43
  https://github.com/facebook/flow/issues/3258 */
45
44
  return ({
46
- next() {
45
+ next(): Promise<IteratorResult<U, void>> {
47
46
  return iterator.next().then(mapResult, mapReject);
48
47
  },
49
48
  return() {
@@ -51,7 +50,7 @@ export default function mapAsyncIterator<T, U>(
51
50
  ? $return.call(iterator).then(mapResult, mapReject)
52
51
  : Promise.resolve({ value: undefined, done: true });
53
52
  },
54
- throw(error) {
53
+ throw(error?: mixed): Promise<IteratorResult<U, void>> {
55
54
  if (typeof iterator.throw === 'function') {
56
55
  return iterator.throw(error).then(mapResult, mapReject);
57
56
  }
@@ -60,7 +59,7 @@ export default function mapAsyncIterator<T, U>(
60
59
  [SYMBOL_ASYNC_ITERATOR]() {
61
60
  return this;
62
61
  },
63
- }: any);
62
+ }: $FlowFixMe);
64
63
  }
65
64
 
66
65
  function asyncMapValue<T, U>(
@@ -7,7 +7,7 @@ import { SYMBOL_ASYNC_ITERATOR } from "../polyfills/symbols.mjs";
7
7
  * which produces values mapped via calling the callback function.
8
8
  */
9
9
  export default function mapAsyncIterator(iterable, callback, rejectCallback) {
10
- // $FlowFixMe
10
+ // $FlowFixMe[prop-missing]
11
11
  var iteratorMethod = iterable[SYMBOL_ASYNC_ITERATOR];
12
12
  var iterator = iteratorMethod.call(iterable);
13
13
  var $return;
@@ -6,25 +6,25 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.subscribe = subscribe;
7
7
  exports.createSourceEventStream = createSourceEventStream;
8
8
 
9
- var _symbols = require("../polyfills/symbols");
9
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
10
10
 
11
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
11
+ var _isAsyncIterable = _interopRequireDefault(require("../jsutils/isAsyncIterable.js"));
12
12
 
13
- var _Path = require("../jsutils/Path");
13
+ var _Path = require("../jsutils/Path.js");
14
14
 
15
- var _GraphQLError = require("../error/GraphQLError");
15
+ var _GraphQLError = require("../error/GraphQLError.js");
16
16
 
17
- var _locatedError = require("../error/locatedError");
17
+ var _locatedError = require("../error/locatedError.js");
18
18
 
19
- var _execute = require("../execution/execute");
19
+ var _values = require("../execution/values.js");
20
20
 
21
- var _getOperationRootType = require("../utilities/getOperationRootType");
21
+ var _execute = require("../execution/execute.js");
22
22
 
23
- var _mapAsyncIterator = _interopRequireDefault(require("./mapAsyncIterator"));
23
+ var _getOperationRootType = require("../utilities/getOperationRootType.js");
24
24
 
25
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+ var _mapAsyncIterator = _interopRequireDefault(require("./mapAsyncIterator.js"));
26
26
 
27
- 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); }
27
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
28
28
 
29
29
  function subscribe(argsOrSchema, document, rootValue, contextValue, variableValues, operationName, fieldResolver, subscribeFieldResolver) {
30
30
  /* eslint-enable no-redeclare */
@@ -89,7 +89,7 @@ function subscribeImpl(args) {
89
89
 
90
90
  return sourcePromise.then(function (resultOrStream) {
91
91
  return (// Note: Flow can't refine isAsyncIterable, so explicit casts are used.
92
- isAsyncIterable(resultOrStream) ? (0, _mapAsyncIterator.default)(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream
92
+ (0, _isAsyncIterable.default)(resultOrStream) ? (0, _mapAsyncIterator.default)(resultOrStream, mapSourceToResponse, reportGraphQLError) : resultOrStream
93
93
  );
94
94
  });
95
95
  }
@@ -127,78 +127,66 @@ function createSourceEventStream(schema, document, rootValue, contextValue, vari
127
127
  // If arguments are missing or incorrectly typed, this is an internal
128
128
  // developer mistake which should throw an early error.
129
129
  (0, _execute.assertValidExecutionArguments)(schema, document, variableValues);
130
-
131
- try {
132
- var _fieldDef$subscribe;
133
-
130
+ return new Promise(function (resolve) {
134
131
  // If a valid context cannot be created due to incorrect arguments,
135
132
  // this will throw an error.
136
- var exeContext = (0, _execute.buildExecutionContext)(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver); // Return early errors if execution context failed.
137
-
138
- if (Array.isArray(exeContext)) {
139
- return Promise.resolve({
140
- errors: exeContext
141
- });
142
- }
133
+ var exeContext = (0, _execute.buildExecutionContext)(schema, document, rootValue, contextValue, variableValues, operationName, fieldResolver);
134
+ resolve( // Return early errors if execution context failed.
135
+ Array.isArray(exeContext) ? {
136
+ errors: exeContext
137
+ } : executeSubscription(exeContext));
138
+ }).catch(reportGraphQLError);
139
+ }
143
140
 
144
- var type = (0, _getOperationRootType.getOperationRootType)(schema, exeContext.operation);
145
- var fields = (0, _execute.collectFields)(exeContext, type, exeContext.operation.selectionSet, Object.create(null), Object.create(null));
146
- var responseNames = Object.keys(fields);
147
- var responseName = responseNames[0];
148
- var fieldNodes = fields[responseName];
149
- var fieldNode = fieldNodes[0];
150
- var fieldName = fieldNode.name.value;
151
- var fieldDef = (0, _execute.getFieldDef)(schema, type, fieldName);
152
-
153
- if (!fieldDef) {
154
- throw new _GraphQLError.GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
155
- } // Call the `subscribe()` resolver or the default resolver to produce an
156
- // AsyncIterable yielding raw payloads.
141
+ function executeSubscription(exeContext) {
142
+ var schema = exeContext.schema,
143
+ operation = exeContext.operation,
144
+ variableValues = exeContext.variableValues,
145
+ rootValue = exeContext.rootValue;
146
+ var type = (0, _getOperationRootType.getOperationRootType)(schema, operation);
147
+ var fields = (0, _execute.collectFields)(exeContext, type, operation.selectionSet, Object.create(null), Object.create(null));
148
+ var responseNames = Object.keys(fields);
149
+ var responseName = responseNames[0];
150
+ var fieldNodes = fields[responseName];
151
+ var fieldNode = fieldNodes[0];
152
+ var fieldName = fieldNode.name.value;
153
+ var fieldDef = (0, _execute.getFieldDef)(schema, type, fieldName);
154
+
155
+ if (!fieldDef) {
156
+ throw new _GraphQLError.GraphQLError("The subscription field \"".concat(fieldName, "\" is not defined."), fieldNodes);
157
+ }
157
158
 
159
+ var path = (0, _Path.addPath)(undefined, responseName, type.name);
160
+ var info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, type, path); // Coerce to Promise for easier error handling and consistent return type.
158
161
 
159
- var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
160
- var path = (0, _Path.addPath)(undefined, responseName, type.name);
161
- var info = (0, _execute.buildResolveInfo)(exeContext, fieldDef, fieldNodes, type, path); // resolveFieldValueOrError implements the "ResolveFieldEventStream"
162
- // algorithm from GraphQL specification. It differs from
163
- // "ResolveFieldValue" due to providing a different `resolveFn`.
162
+ return new Promise(function (resolveResult) {
163
+ var _fieldDef$subscribe;
164
164
 
165
- var result = (0, _execute.resolveFieldValueOrError)(exeContext, fieldDef, fieldNodes, resolveFn, rootValue, info); // Coerce to Promise for easier error handling and consistent return type.
165
+ // Implements the "ResolveFieldEventStream" algorithm from GraphQL specification.
166
+ // It differs from "ResolveFieldValue" due to providing a different `resolveFn`.
167
+ // Build a JS object of arguments from the field.arguments AST, using the
168
+ // variables scope to fulfill any variable references.
169
+ var args = (0, _values.getArgumentValues)(fieldDef, fieldNodes[0], variableValues); // The resolve function's optional third argument is a context value that
170
+ // is provided to every resolve function within an execution. It is commonly
171
+ // used to represent an authenticated user, or request-specific caches.
166
172
 
167
- return Promise.resolve(result).then(function (eventStream) {
168
- // If eventStream is an Error, rethrow a located error.
169
- if (eventStream instanceof Error) {
170
- return {
171
- errors: [(0, _locatedError.locatedError)(eventStream, fieldNodes, (0, _Path.pathToArray)(path))]
172
- };
173
- } // Assert field returned an event stream, otherwise yield an error.
173
+ var contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an
174
+ // AsyncIterable yielding raw payloads.
174
175
 
176
+ var resolveFn = (_fieldDef$subscribe = fieldDef.subscribe) !== null && _fieldDef$subscribe !== void 0 ? _fieldDef$subscribe : exeContext.fieldResolver;
177
+ resolveResult(resolveFn(rootValue, args, contextValue, info));
178
+ }).then(function (eventStream) {
179
+ if (eventStream instanceof Error) {
180
+ throw (0, _locatedError.locatedError)(eventStream, fieldNodes, (0, _Path.pathToArray)(path));
181
+ } // Assert field returned an event stream, otherwise yield an error.
175
182
 
176
- if (isAsyncIterable(eventStream)) {
177
- // Note: isAsyncIterable above ensures this will be correct.
178
- return eventStream;
179
- }
180
183
 
184
+ if (!(0, _isAsyncIterable.default)(eventStream)) {
181
185
  throw new Error('Subscription field must return Async Iterable. ' + "Received: ".concat((0, _inspect.default)(eventStream), "."));
182
- });
183
- } catch (error) {
184
- // As with reportGraphQLError above, if the error is a GraphQLError, report
185
- // it as an ExecutionResult; otherwise treat it as a system-class error and
186
- // re-throw it.
187
- return error instanceof _GraphQLError.GraphQLError ? Promise.resolve({
188
- errors: [error]
189
- }) : Promise.reject(error);
190
- }
191
- }
192
- /**
193
- * Returns true if the provided object implements the AsyncIterator protocol via
194
- * either implementing a `Symbol.asyncIterator` or `"@@asyncIterator"` method.
195
- */
196
-
197
-
198
- function isAsyncIterable(maybeAsyncIterable) {
199
- if (maybeAsyncIterable == null || _typeof(maybeAsyncIterable) !== 'object') {
200
- return false;
201
- }
186
+ }
202
187
 
203
- return typeof maybeAsyncIterable[_symbols.SYMBOL_ASYNC_ITERATOR] === 'function';
188
+ return eventStream;
189
+ }, function (error) {
190
+ throw (0, _locatedError.locatedError)(error, fieldNodes, (0, _Path.pathToArray)(path));
191
+ });
204
192
  }