graphql 15.1.0 → 15.4.0

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 (343) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -12
  3. package/error/GraphQLError.js +5 -5
  4. package/error/GraphQLError.js.flow +5 -5
  5. package/error/GraphQLError.mjs +1 -1
  6. package/error/formatError.js +1 -1
  7. package/error/formatError.js.flow +2 -3
  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 +11 -5
  13. package/error/locatedError.mjs +6 -4
  14. package/error/syntaxError.js +1 -1
  15. package/error/syntaxError.js.flow +1 -2
  16. package/execution/execute.d.ts +24 -16
  17. package/execution/execute.js +123 -105
  18. package/execution/execute.js.flow +169 -153
  19. package/execution/execute.mjs +101 -82
  20. package/execution/index.d.ts +2 -0
  21. package/execution/index.js +9 -3
  22. package/execution/index.js.flow +12 -3
  23. package/execution/index.mjs +1 -1
  24. package/execution/values.js +11 -11
  25. package/execution/values.js.flow +10 -14
  26. package/graphql.js +5 -5
  27. package/graphql.js.flow +9 -9
  28. package/index.d.ts +19 -1
  29. package/index.js +27 -9
  30. package/index.js.flow +10 -3
  31. package/index.mjs +4 -3
  32. package/jsutils/ObjMap.js.flow +0 -1
  33. package/jsutils/Path.d.ts +6 -1
  34. package/jsutils/Path.js +3 -2
  35. package/jsutils/Path.js.flow +3 -2
  36. package/jsutils/Path.mjs +3 -2
  37. package/jsutils/PromiseOrValue.js.flow +0 -1
  38. package/jsutils/defineInspect.js +2 -2
  39. package/jsutils/defineInspect.js.flow +0 -1
  40. package/jsutils/devAssert.js.flow +0 -1
  41. package/jsutils/didYouMean.js.flow +0 -1
  42. package/jsutils/identityFunc.js.flow +0 -1
  43. package/jsutils/inspect.js +1 -2
  44. package/jsutils/inspect.js.flow +10 -8
  45. package/jsutils/inspect.mjs +1 -1
  46. package/jsutils/instanceOf.js.flow +2 -3
  47. package/jsutils/invariant.js.flow +0 -1
  48. package/jsutils/isAsyncIterable.js +19 -0
  49. package/jsutils/isAsyncIterable.js.flow +18 -0
  50. package/jsutils/isAsyncIterable.mjs +16 -0
  51. package/jsutils/isCollection.js +1 -1
  52. package/jsutils/isCollection.js.flow +0 -1
  53. package/jsutils/isObjectLike.js.flow +0 -1
  54. package/jsutils/isPromise.js.flow +0 -1
  55. package/jsutils/keyMap.js.flow +1 -2
  56. package/jsutils/keyValMap.js.flow +1 -2
  57. package/jsutils/mapValue.js +1 -1
  58. package/jsutils/mapValue.js.flow +1 -2
  59. package/jsutils/memoize3.js +2 -5
  60. package/jsutils/memoize3.js.flow +2 -5
  61. package/jsutils/memoize3.mjs +2 -5
  62. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  63. package/jsutils/printPathArray.js.flow +0 -1
  64. package/jsutils/promiseForObject.js.flow +1 -2
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.js.flow +1 -1
  67. package/jsutils/promiseReduce.mjs +1 -1
  68. package/jsutils/suggestionList.js.flow +1 -2
  69. package/jsutils/toObjMap.js +1 -1
  70. package/jsutils/toObjMap.js.flow +5 -6
  71. package/language/ast.js +1 -1
  72. package/language/ast.js.flow +2 -3
  73. package/language/blockString.d.ts +1 -1
  74. package/language/blockString.js +53 -32
  75. package/language/blockString.js.flow +49 -34
  76. package/language/blockString.mjs +54 -33
  77. package/language/directiveLocation.js.flow +0 -1
  78. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  79. package/language/experimentalOnlineParser/grammar.js +987 -0
  80. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  81. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  82. package/language/experimentalOnlineParser/index.d.ts +6 -0
  83. package/language/experimentalOnlineParser/index.js +31 -0
  84. package/language/experimentalOnlineParser/index.js.flow +7 -0
  85. package/language/experimentalOnlineParser/index.mjs +1 -0
  86. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  87. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  88. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  89. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  90. package/language/index.js +12 -12
  91. package/language/index.js.flow +0 -1
  92. package/language/kinds.js.flow +0 -1
  93. package/language/lexer.js +242 -183
  94. package/language/lexer.js.flow +191 -186
  95. package/language/lexer.mjs +239 -180
  96. package/language/location.js.flow +1 -2
  97. package/language/parser.js +73 -68
  98. package/language/parser.js.flow +112 -106
  99. package/language/parser.mjs +66 -62
  100. package/language/predicates.js +1 -1
  101. package/language/predicates.js.flow +1 -2
  102. package/language/printLocation.js +1 -1
  103. package/language/printLocation.js.flow +4 -4
  104. package/language/printer.js +20 -13
  105. package/language/printer.js.flow +27 -25
  106. package/language/printer.mjs +18 -11
  107. package/language/source.d.ts +12 -6
  108. package/language/source.js +25 -9
  109. package/language/source.js.flow +25 -8
  110. package/language/source.mjs +19 -7
  111. package/language/tokenKind.js.flow +0 -1
  112. package/language/visitor.d.ts +3 -3
  113. package/language/visitor.js +5 -5
  114. package/language/visitor.js.flow +5 -5
  115. package/language/visitor.mjs +3 -3
  116. package/package.json +1 -1
  117. package/polyfills/arrayFrom.js +2 -2
  118. package/polyfills/arrayFrom.js.flow +1 -2
  119. package/polyfills/arrayFrom.mjs +1 -1
  120. package/polyfills/find.js +1 -1
  121. package/polyfills/find.js.flow +1 -2
  122. package/polyfills/find.mjs +1 -1
  123. package/polyfills/isFinite.js +1 -1
  124. package/polyfills/isFinite.js.flow +1 -2
  125. package/polyfills/isFinite.mjs +1 -1
  126. package/polyfills/isInteger.js +1 -1
  127. package/polyfills/isInteger.js.flow +1 -2
  128. package/polyfills/isInteger.mjs +1 -1
  129. package/polyfills/objectEntries.js +1 -1
  130. package/polyfills/objectEntries.js.flow +2 -3
  131. package/polyfills/objectEntries.mjs +1 -1
  132. package/polyfills/objectValues.js +1 -1
  133. package/polyfills/objectValues.js.flow +2 -3
  134. package/polyfills/objectValues.mjs +1 -1
  135. package/polyfills/symbols.js +3 -5
  136. package/polyfills/symbols.js.flow +9 -6
  137. package/polyfills/symbols.mjs +3 -5
  138. package/subscription/index.js +1 -1
  139. package/subscription/index.js.flow +0 -1
  140. package/subscription/mapAsyncIterator.js +2 -2
  141. package/subscription/mapAsyncIterator.js.flow +9 -10
  142. package/subscription/mapAsyncIterator.mjs +1 -1
  143. package/subscription/subscribe.js +61 -73
  144. package/subscription/subscribe.js.flow +74 -88
  145. package/subscription/subscribe.mjs +53 -65
  146. package/type/definition.d.ts +181 -31
  147. package/type/definition.js +37 -32
  148. package/type/definition.js.flow +66 -51
  149. package/type/definition.mjs +20 -18
  150. package/type/directives.d.ts +17 -3
  151. package/type/directives.js +17 -16
  152. package/type/directives.js.flow +20 -21
  153. package/type/directives.mjs +6 -5
  154. package/type/index.d.ts +12 -0
  155. package/type/index.js +6 -6
  156. package/type/index.js.flow +0 -1
  157. package/type/introspection.js +86 -68
  158. package/type/introspection.js.flow +85 -54
  159. package/type/introspection.mjs +79 -61
  160. package/type/scalars.js +9 -9
  161. package/type/scalars.js.flow +3 -3
  162. package/type/scalars.mjs +1 -1
  163. package/type/schema.d.ts +17 -4
  164. package/type/schema.js +13 -13
  165. package/type/schema.js.flow +18 -16
  166. package/type/schema.mjs +1 -1
  167. package/type/validate.js +52 -19
  168. package/type/validate.js.flow +67 -18
  169. package/type/validate.mjs +44 -10
  170. package/utilities/TypeInfo.js +7 -7
  171. package/utilities/TypeInfo.js.flow +16 -18
  172. package/utilities/TypeInfo.mjs +1 -1
  173. package/utilities/assertValidName.js +2 -2
  174. package/utilities/assertValidName.js.flow +0 -1
  175. package/utilities/astFromValue.js +10 -10
  176. package/utilities/astFromValue.js.flow +2 -3
  177. package/utilities/buildASTSchema.js +17 -27
  178. package/utilities/buildASTSchema.js.flow +11 -28
  179. package/utilities/buildASTSchema.mjs +11 -21
  180. package/utilities/buildClientSchema.js +14 -14
  181. package/utilities/buildClientSchema.js.flow +41 -29
  182. package/utilities/buildClientSchema.mjs +5 -5
  183. package/utilities/coerceInputValue.js +14 -14
  184. package/utilities/coerceInputValue.js.flow +7 -6
  185. package/utilities/coerceInputValue.mjs +2 -2
  186. package/utilities/concatAST.js +9 -8
  187. package/utilities/concatAST.js.flow +9 -9
  188. package/utilities/concatAST.mjs +9 -6
  189. package/utilities/extendSchema.js +26 -19
  190. package/utilities/extendSchema.js.flow +58 -45
  191. package/utilities/extendSchema.mjs +9 -2
  192. package/utilities/findBreakingChanges.js +9 -9
  193. package/utilities/findBreakingChanges.js.flow +12 -11
  194. package/utilities/findDeprecatedUsages.d.ts +9 -1
  195. package/utilities/findDeprecatedUsages.js +11 -27
  196. package/utilities/findDeprecatedUsages.js.flow +15 -44
  197. package/utilities/findDeprecatedUsages.mjs +11 -25
  198. package/utilities/getIntrospectionQuery.js.flow +2 -3
  199. package/utilities/getOperationAST.js +1 -1
  200. package/utilities/getOperationAST.js.flow +1 -5
  201. package/utilities/getOperationAST.mjs +1 -1
  202. package/utilities/getOperationRootType.js +1 -1
  203. package/utilities/getOperationRootType.js.flow +5 -6
  204. package/utilities/index.d.ts +4 -1
  205. package/utilities/index.js +22 -22
  206. package/utilities/index.js.flow +1 -2
  207. package/utilities/index.mjs +1 -1
  208. package/utilities/introspectionFromSchema.js +6 -8
  209. package/utilities/introspectionFromSchema.js.flow +10 -10
  210. package/utilities/introspectionFromSchema.mjs +3 -4
  211. package/utilities/lexicographicSortSchema.js +10 -8
  212. package/utilities/lexicographicSortSchema.js.flow +19 -12
  213. package/utilities/lexicographicSortSchema.mjs +3 -1
  214. package/utilities/printSchema.js +15 -16
  215. package/utilities/printSchema.js.flow +34 -25
  216. package/utilities/printSchema.mjs +6 -7
  217. package/utilities/separateOperations.js +2 -2
  218. package/utilities/separateOperations.js.flow +2 -6
  219. package/utilities/separateOperations.mjs +1 -1
  220. package/utilities/stripIgnoredCharacters.js +6 -16
  221. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  222. package/utilities/stripIgnoredCharacters.mjs +3 -10
  223. package/utilities/typeComparators.js +1 -1
  224. package/utilities/typeComparators.js.flow +2 -4
  225. package/utilities/typeFromAST.js +6 -6
  226. package/utilities/typeFromAST.js.flow +11 -14
  227. package/utilities/typeFromAST.mjs +2 -2
  228. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  229. package/utilities/valueFromAST.js +6 -6
  230. package/utilities/valueFromAST.js.flow +7 -5
  231. package/utilities/valueFromASTUntyped.js +4 -4
  232. package/utilities/valueFromASTUntyped.js.flow +2 -3
  233. package/validation/ValidationContext.d.ts +3 -0
  234. package/validation/ValidationContext.js +7 -3
  235. package/validation/ValidationContext.js.flow +28 -22
  236. package/validation/ValidationContext.mjs +4 -0
  237. package/validation/index.d.ts +4 -0
  238. package/validation/index.js +52 -36
  239. package/validation/index.js.flow +4 -1
  240. package/validation/index.mjs +4 -1
  241. package/validation/rules/ExecutableDefinitions.js +1 -1
  242. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  243. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  244. package/validation/rules/ExecutableDefinitionsRule.js.flow +2 -3
  245. package/validation/rules/FieldsOnCorrectTypeRule.js +5 -5
  246. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +9 -8
  247. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  248. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +2 -3
  249. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  250. package/validation/rules/KnownArgumentNamesRule.js.flow +5 -5
  251. package/validation/rules/KnownDirectivesRule.js +6 -6
  252. package/validation/rules/KnownDirectivesRule.js.flow +10 -11
  253. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  254. package/validation/rules/KnownFragmentNamesRule.js.flow +3 -3
  255. package/validation/rules/KnownTypeNamesRule.js +12 -10
  256. package/validation/rules/KnownTypeNamesRule.js.flow +14 -11
  257. package/validation/rules/KnownTypeNamesRule.mjs +6 -5
  258. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  259. package/validation/rules/LoneAnonymousOperationRule.js.flow +2 -3
  260. package/validation/rules/LoneSchemaDefinition.js +1 -1
  261. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  262. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  263. package/validation/rules/LoneSchemaDefinitionRule.js.flow +2 -3
  264. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  265. package/validation/rules/NoFragmentCyclesRule.js.flow +4 -5
  266. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  267. package/validation/rules/NoUndefinedVariablesRule.js.flow +3 -3
  268. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  269. package/validation/rules/NoUnusedFragmentsRule.js.flow +3 -3
  270. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  271. package/validation/rules/NoUnusedVariablesRule.js.flow +3 -3
  272. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  273. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +29 -27
  274. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  275. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  276. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +7 -4
  277. package/validation/rules/PossibleTypeExtensions.js +1 -1
  278. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  279. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  280. package/validation/rules/PossibleTypeExtensionsRule.js.flow +8 -6
  281. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  282. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +7 -6
  283. package/validation/rules/ScalarLeafsRule.js +3 -3
  284. package/validation/rules/ScalarLeafsRule.js.flow +3 -4
  285. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  286. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +3 -4
  287. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  288. package/validation/rules/UniqueArgumentNamesRule.js.flow +2 -3
  289. package/validation/rules/UniqueDirectiveNames.js +1 -1
  290. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  291. package/validation/rules/UniqueDirectiveNamesRule.js +1 -1
  292. package/validation/rules/UniqueDirectiveNamesRule.js.flow +2 -3
  293. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  294. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +4 -5
  295. package/validation/rules/UniqueEnumValueNames.js +1 -1
  296. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  297. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  298. package/validation/rules/UniqueEnumValueNamesRule.js.flow +11 -4
  299. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  300. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  301. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  302. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +17 -6
  303. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  304. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  305. package/validation/rules/UniqueFragmentNamesRule.js.flow +3 -3
  306. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  307. package/validation/rules/UniqueInputFieldNamesRule.js.flow +3 -3
  308. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  309. package/validation/rules/UniqueOperationNamesRule.js.flow +3 -3
  310. package/validation/rules/UniqueOperationTypes.js +1 -1
  311. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  312. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  313. package/validation/rules/UniqueOperationTypesRule.js.flow +10 -4
  314. package/validation/rules/UniqueTypeNames.js +1 -1
  315. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  316. package/validation/rules/UniqueTypeNamesRule.js +1 -1
  317. package/validation/rules/UniqueTypeNamesRule.js.flow +3 -4
  318. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  319. package/validation/rules/UniqueVariableNamesRule.js.flow +3 -4
  320. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  321. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +3 -4
  322. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  323. package/validation/rules/VariablesAreInputTypesRule.js.flow +3 -4
  324. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  325. package/validation/rules/VariablesInAllowedPositionRule.js.flow +6 -6
  326. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +14 -0
  327. package/validation/rules/custom/NoDeprecatedCustomRule.js +79 -0
  328. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +94 -0
  329. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +68 -0
  330. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +16 -0
  331. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +34 -0
  332. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +38 -0
  333. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +25 -0
  334. package/validation/specifiedRules.js +33 -33
  335. package/validation/specifiedRules.js.flow +0 -1
  336. package/validation/validate.js +7 -7
  337. package/validation/validate.js.flow +4 -9
  338. package/version.js +2 -2
  339. package/version.js.flow +2 -3
  340. package/version.mjs +2 -2
  341. package/polyfills/flatMap.js +0 -30
  342. package/polyfills/flatMap.js.flow +0 -28
  343. package/polyfills/flatMap.mjs +0 -23
@@ -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);
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
  }
@@ -1,28 +1,26 @@
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';
9
7
  import { locatedError } from '../error/locatedError';
10
8
 
11
- import { type DocumentNode } from '../language/ast';
9
+ import type { DocumentNode } from '../language/ast';
12
10
 
11
+ import type { ExecutionResult, ExecutionContext } from '../execution/execute';
12
+ import { getArgumentValues } from '../execution/values';
13
13
  import {
14
- type ExecutionResult,
15
14
  assertValidExecutionArguments,
16
15
  buildExecutionContext,
17
16
  buildResolveInfo,
18
17
  collectFields,
19
18
  execute,
20
19
  getFieldDef,
21
- resolveFieldValueOrError,
22
20
  } from '../execution/execute';
23
21
 
24
- import { type GraphQLSchema } from '../type/schema';
25
- import { type GraphQLFieldResolver } from '../type/definition';
22
+ import type { GraphQLSchema } from '../type/schema';
23
+ import type { GraphQLFieldResolver } from '../type/definition';
26
24
 
27
25
  import { getOperationRootType } from '../utilities/getOperationRootType';
28
26
 
@@ -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);
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);
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
  }