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
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2019 GraphQL Contributors
3
+ Copyright (c) GraphQL Contributors
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -115,6 +115,16 @@ directly on this branch:
115
115
  npm install graphql@git://github.com/graphql/graphql-js.git#npm
116
116
  ```
117
117
 
118
+ ### Experimental features
119
+
120
+ Each release of GraphQL.js will be accompanied by an experimental release containing support for the `@defer` and `@stream` directive proposal. We are hoping to get community feedback on these releases before the proposal is accepted into the GraphQL specification. You can use this experimental release of GraphQL.js by adding the following to your project's `package.json` file.
121
+
122
+ ```
123
+ "graphql": "experimental-stream-defer"
124
+ ```
125
+
126
+ Community feedback on this experimental release is much appreciated and can be provided on the [issue created for this purpose](https://github.com/graphql/graphql-js/issues/2848).
127
+
118
128
  ### Using in a Browser
119
129
 
120
130
  GraphQL.js is a general-purpose library and can be used both in a Node server
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
 
3
+ 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); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports.printError = printError;
7
9
  exports.GraphQLError = void 0;
8
10
 
9
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
11
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
10
12
 
11
- var _symbols = require("../polyfills/symbols");
13
+ var _symbols = require("../polyfills/symbols.js");
12
14
 
13
- var _location = require("../language/location");
15
+ var _location = require("../language/location.js");
14
16
 
15
- var _printLocation = require("../language/printLocation");
17
+ var _printLocation = require("../language/printLocation.js");
16
18
 
17
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
20
 
19
- 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); }
20
-
21
21
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
22
22
 
23
23
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
@@ -219,7 +219,7 @@ var GraphQLError = /*#__PURE__*/function (_Error) {
219
219
  }
220
220
  }); // Include (non-enumerable) stack trace.
221
221
 
222
- if (originalError === null || originalError === void 0 ? void 0 : originalError.stack) {
222
+ if (originalError !== null && originalError !== void 0 && originalError.stack) {
223
223
  Object.defineProperty(_assertThisInitialized(_this), 'stack', {
224
224
  value: originalError.stack,
225
225
  writable: true,
@@ -247,7 +247,7 @@ var GraphQLError = /*#__PURE__*/function (_Error) {
247
247
  value: function toString() {
248
248
  return printError(this);
249
249
  } // FIXME: workaround to not break chai comparisons, should be remove in v16
250
- // $FlowFixMe Flow doesn't support computed properties yet
250
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
251
251
 
252
252
  }, {
253
253
  key: _symbols.SYMBOL_TO_STRING_TAG,
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  // FIXME:
4
3
  // flowlint uninitialized-instance-property:off
5
4
 
@@ -85,7 +84,7 @@ export class GraphQLError extends Error {
85
84
  path?: ?$ReadOnlyArray<string | number>,
86
85
  originalError?: ?(Error & { +extensions?: mixed, ... }),
87
86
  extensions?: ?{ [key: string]: mixed, ... },
88
- ): void {
87
+ ) {
89
88
  super(message);
90
89
 
91
90
  // Compute list of blame nodes.
@@ -214,7 +213,7 @@ export class GraphQLError extends Error {
214
213
  }
215
214
 
216
215
  // FIXME: workaround to not break chai comparisons, should be remove in v16
217
- // $FlowFixMe Flow doesn't support computed properties yet
216
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
218
217
  get [SYMBOL_TO_STRING_TAG](): string {
219
218
  return 'Object';
220
219
  }
@@ -208,7 +208,7 @@ export var GraphQLError = /*#__PURE__*/function (_Error) {
208
208
  }
209
209
  }); // Include (non-enumerable) stack trace.
210
210
 
211
- if (originalError === null || originalError === void 0 ? void 0 : originalError.stack) {
211
+ if (originalError !== null && originalError !== void 0 && originalError.stack) {
212
212
  Object.defineProperty(_assertThisInitialized(_this), 'stack', {
213
213
  value: originalError.stack,
214
214
  writable: true,
@@ -236,7 +236,7 @@ export var GraphQLError = /*#__PURE__*/function (_Error) {
236
236
  value: function toString() {
237
237
  return printError(this);
238
238
  } // FIXME: workaround to not break chai comparisons, should be remove in v16
239
- // $FlowFixMe Flow doesn't support computed properties yet
239
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
240
240
 
241
241
  }, {
242
242
  key: SYMBOL_TO_STRING_TAG,
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.formatError = formatError;
7
7
 
8
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
8
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
11
 
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import devAssert from '../jsutils/devAssert';
4
3
 
5
4
  import type { SourceLocation } from '../language/location';
package/error/index.js CHANGED
@@ -34,10 +34,10 @@ Object.defineProperty(exports, "formatError", {
34
34
  }
35
35
  });
36
36
 
37
- var _GraphQLError = require("./GraphQLError");
37
+ var _GraphQLError = require("./GraphQLError.js");
38
38
 
39
- var _syntaxError = require("./syntaxError");
39
+ var _syntaxError = require("./syntaxError.js");
40
40
 
41
- var _locatedError = require("./locatedError");
41
+ var _locatedError = require("./locatedError.js");
42
42
 
43
- var _formatError = require("./formatError");
43
+ var _formatError = require("./formatError.js");
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  export { GraphQLError, printError } from './GraphQLError';
4
3
 
5
4
  export { syntaxError } from './syntaxError';
@@ -5,12 +5,12 @@ import { ASTNode } from '../language/ast';
5
5
  import { GraphQLError } from './GraphQLError';
6
6
 
7
7
  /**
8
- * Given an arbitrary Error, presumably thrown while attempting to execute a
8
+ * Given an arbitrary value, presumably thrown while attempting to execute a
9
9
  * GraphQL operation, produce a new GraphQLError aware of the location in the
10
10
  * document responsible for the original Error.
11
11
  */
12
12
  export function locatedError(
13
- originalError: Error | GraphQLError,
13
+ rawOriginalError: any,
14
14
  nodes: ASTNode | ReadonlyArray<ASTNode> | undefined,
15
15
  path?: Maybe<ReadonlyArray<string | number>>,
16
16
  ): GraphQLError;
@@ -5,18 +5,23 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.locatedError = locatedError;
7
7
 
8
- var _GraphQLError = require("./GraphQLError");
8
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
9
+
10
+ var _GraphQLError = require("./GraphQLError.js");
11
+
12
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
9
13
 
10
14
  /**
11
- * Given an arbitrary Error, presumably thrown while attempting to execute a
15
+ * Given an arbitrary value, presumably thrown while attempting to execute a
12
16
  * GraphQL operation, produce a new GraphQLError aware of the location in the
13
17
  * document responsible for the original Error.
14
18
  */
15
- function locatedError(originalError, nodes, path) {
19
+ function locatedError(rawOriginalError, nodes, path) {
16
20
  var _nodes;
17
21
 
18
- // Note: this uses a brand-check to support GraphQL errors originating from
19
- // other contexts.
22
+ // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
23
+ var originalError = rawOriginalError instanceof Error ? rawOriginalError : new Error('Unexpected error value: ' + (0, _inspect.default)(rawOriginalError)); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.
24
+
20
25
  if (Array.isArray(originalError.path)) {
21
26
  return originalError;
22
27
  }
@@ -1,21 +1,27 @@
1
1
  // @flow strict
2
+ import inspect from '../jsutils/inspect';
2
3
 
3
4
  import type { ASTNode } from '../language/ast';
4
5
 
5
6
  import { GraphQLError } from './GraphQLError';
6
7
 
7
8
  /**
8
- * Given an arbitrary Error, presumably thrown while attempting to execute a
9
+ * Given an arbitrary value, presumably thrown while attempting to execute a
9
10
  * GraphQL operation, produce a new GraphQLError aware of the location in the
10
11
  * document responsible for the original Error.
11
12
  */
12
13
  export function locatedError(
13
- originalError: Error | GraphQLError,
14
+ rawOriginalError: mixed,
14
15
  nodes: ASTNode | $ReadOnlyArray<ASTNode> | void | null,
15
16
  path?: ?$ReadOnlyArray<string | number>,
16
17
  ): GraphQLError {
17
- // Note: this uses a brand-check to support GraphQL errors originating from
18
- // other contexts.
18
+ // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
19
+ const originalError: Error | GraphQLError =
20
+ rawOriginalError instanceof Error
21
+ ? rawOriginalError
22
+ : new Error('Unexpected error value: ' + inspect(rawOriginalError));
23
+
24
+ // Note: this uses a brand-check to support GraphQL errors originating from other contexts.
19
25
  if (Array.isArray(originalError.path)) {
20
26
  return (originalError: any);
21
27
  }
@@ -1,15 +1,17 @@
1
+ import inspect from "../jsutils/inspect.mjs";
1
2
  import { GraphQLError } from "./GraphQLError.mjs";
2
3
  /**
3
- * Given an arbitrary Error, presumably thrown while attempting to execute a
4
+ * Given an arbitrary value, presumably thrown while attempting to execute a
4
5
  * GraphQL operation, produce a new GraphQLError aware of the location in the
5
6
  * document responsible for the original Error.
6
7
  */
7
8
 
8
- export function locatedError(originalError, nodes, path) {
9
+ export function locatedError(rawOriginalError, nodes, path) {
9
10
  var _nodes;
10
11
 
11
- // Note: this uses a brand-check to support GraphQL errors originating from
12
- // other contexts.
12
+ // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.
13
+ var originalError = rawOriginalError instanceof Error ? rawOriginalError : new Error('Unexpected error value: ' + inspect(rawOriginalError)); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.
14
+
13
15
  if (Array.isArray(originalError.path)) {
14
16
  return originalError;
15
17
  }
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.syntaxError = syntaxError;
7
7
 
8
- var _GraphQLError = require("./GraphQLError");
8
+ var _GraphQLError = require("./GraphQLError.js");
9
9
 
10
10
  /**
11
11
  * Produces a GraphQLError representing a syntax error, containing useful
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { Source } from '../language/source';
4
3
 
5
4
  import { GraphQLError } from './GraphQLError';
@@ -159,21 +159,6 @@ export function buildResolveInfo(
159
159
  path: Path,
160
160
  ): GraphQLResolveInfo;
161
161
 
162
- /**
163
- * Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
164
- * function. Returns the result of resolveFn or the abrupt-return Error object.
165
- *
166
- * @internal
167
- */
168
- export function resolveFieldValueOrError(
169
- exeContext: ExecutionContext,
170
- fieldDef: GraphQLField<any, any>,
171
- fieldNodes: ReadonlyArray<FieldNode>,
172
- resolveFn: GraphQLFieldResolver<any, any>,
173
- source: any,
174
- info: GraphQLResolveInfo,
175
- ): any;
176
-
177
162
  /**
178
163
  * If a resolveType function is not given, then a default resolve behavior is
179
164
  * used which attempts two strategies:
@@ -9,51 +9,48 @@ exports.assertValidExecutionArguments = assertValidExecutionArguments;
9
9
  exports.buildExecutionContext = buildExecutionContext;
10
10
  exports.collectFields = collectFields;
11
11
  exports.buildResolveInfo = buildResolveInfo;
12
- exports.resolveFieldValueOrError = resolveFieldValueOrError;
13
12
  exports.getFieldDef = getFieldDef;
14
13
  exports.defaultFieldResolver = exports.defaultTypeResolver = void 0;
15
14
 
16
- var _arrayFrom = _interopRequireDefault(require("../polyfills/arrayFrom"));
15
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
17
16
 
18
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
17
+ var _memoize = _interopRequireDefault(require("../jsutils/memoize3.js"));
19
18
 
20
- var _memoize = _interopRequireDefault(require("../jsutils/memoize3"));
19
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
21
20
 
22
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
21
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
23
22
 
24
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
23
+ var _isPromise = _interopRequireDefault(require("../jsutils/isPromise.js"));
25
24
 
26
- var _isPromise = _interopRequireDefault(require("../jsutils/isPromise"));
25
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
27
26
 
28
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
27
+ var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
29
28
 
30
- var _isCollection = _interopRequireDefault(require("../jsutils/isCollection"));
29
+ var _promiseReduce = _interopRequireDefault(require("../jsutils/promiseReduce.js"));
31
30
 
32
- var _promiseReduce = _interopRequireDefault(require("../jsutils/promiseReduce"));
31
+ var _promiseForObject = _interopRequireDefault(require("../jsutils/promiseForObject.js"));
33
32
 
34
- var _promiseForObject = _interopRequireDefault(require("../jsutils/promiseForObject"));
33
+ var _Path = require("../jsutils/Path.js");
35
34
 
36
- var _Path = require("../jsutils/Path");
35
+ var _GraphQLError = require("../error/GraphQLError.js");
37
36
 
38
- var _GraphQLError = require("../error/GraphQLError");
37
+ var _locatedError = require("../error/locatedError.js");
39
38
 
40
- var _locatedError = require("../error/locatedError");
39
+ var _kinds = require("../language/kinds.js");
41
40
 
42
- var _kinds = require("../language/kinds");
41
+ var _validate = require("../type/validate.js");
43
42
 
44
- var _validate = require("../type/validate");
43
+ var _introspection = require("../type/introspection.js");
45
44
 
46
- var _introspection = require("../type/introspection");
45
+ var _directives = require("../type/directives.js");
47
46
 
48
- var _directives = require("../type/directives");
47
+ var _definition = require("../type/definition.js");
49
48
 
50
- var _definition = require("../type/definition");
49
+ var _typeFromAST = require("../utilities/typeFromAST.js");
51
50
 
52
- var _typeFromAST = require("../utilities/typeFromAST");
51
+ var _getOperationRootType = require("../utilities/getOperationRootType.js");
53
52
 
54
- var _getOperationRootType = require("../utilities/getOperationRootType");
55
-
56
- var _values = require("./values");
53
+ var _values = require("./values.js");
57
54
 
58
55
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
59
56
 
@@ -234,8 +231,6 @@ function executeOperation(exeContext, operation, rootValue) {
234
231
  var path = undefined; // Errors from sub-fields of a NonNull type may propagate to the top level,
235
232
  // at which point we still log the error and null the parent field, which
236
233
  // in this case is the entire response.
237
- //
238
- // Similar to completeValueCatchingError.
239
234
 
240
235
  try {
241
236
  var result = operation.operation === 'mutation' ? executeFieldsSerially(exeContext, type, rootValue, path, fields) : executeFields(exeContext, type, rootValue, path, fields);
@@ -299,7 +294,7 @@ function executeFields(exeContext, parentType, sourceValue, path, fields) {
299
294
  if (result !== undefined) {
300
295
  results[responseName] = result;
301
296
 
302
- if (!containsPromise && (0, _isPromise.default)(result)) {
297
+ if ((0, _isPromise.default)(result)) {
303
298
  containsPromise = true;
304
299
  }
305
300
  }
@@ -453,43 +448,10 @@ function resolveField(exeContext, parentType, source, fieldNodes, path) {
453
448
  return;
454
449
  }
455
450
 
451
+ var returnType = fieldDef.type;
456
452
  var resolveFn = (_fieldDef$resolve = fieldDef.resolve) !== null && _fieldDef$resolve !== void 0 ? _fieldDef$resolve : exeContext.fieldResolver;
457
- var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal
458
- // or abrupt (error).
459
-
460
- var result = resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info);
461
- return completeValueCatchingError(exeContext, fieldDef.type, fieldNodes, info, path, result);
462
- }
463
- /**
464
- * @internal
465
- */
466
-
467
-
468
- function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
469
- // The resolve function's optional fourth argument is a collection of
470
- // information about the current execution state.
471
- return {
472
- fieldName: fieldDef.name,
473
- fieldNodes: fieldNodes,
474
- returnType: fieldDef.type,
475
- parentType: parentType,
476
- path: path,
477
- schema: exeContext.schema,
478
- fragments: exeContext.fragments,
479
- rootValue: exeContext.rootValue,
480
- operation: exeContext.operation,
481
- variableValues: exeContext.variableValues
482
- };
483
- }
484
- /**
485
- * Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
486
- * function. Returns the result of resolveFn or the abrupt-return Error object.
487
- *
488
- * @internal
489
- */
490
-
453
+ var info = buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path); // Get the resolve function, regardless of if its result is normal or abrupt (error).
491
454
 
492
- function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, source, info) {
493
455
  try {
494
456
  // Build a JS object of arguments from the field.arguments AST, using the
495
457
  // variables scope to fulfill any variable references.
@@ -500,26 +462,6 @@ function resolveFieldValueOrError(exeContext, fieldDef, fieldNodes, resolveFn, s
500
462
 
501
463
  var _contextValue = exeContext.contextValue;
502
464
  var result = resolveFn(source, args, _contextValue, info);
503
- return (0, _isPromise.default)(result) ? result.then(undefined, asErrorInstance) : result;
504
- } catch (error) {
505
- return asErrorInstance(error);
506
- }
507
- } // Sometimes a non-error is thrown, wrap it as an Error instance to ensure a
508
- // consistent Error interface.
509
-
510
-
511
- function asErrorInstance(error) {
512
- if (error instanceof Error) {
513
- return error;
514
- }
515
-
516
- return new Error('Unexpected error value: ' + (0, _inspect.default)(error));
517
- } // This is a small wrapper around completeValue which detects and logs errors
518
- // in the execution context.
519
-
520
-
521
- function completeValueCatchingError(exeContext, returnType, fieldNodes, info, path, result) {
522
- try {
523
465
  var completed;
524
466
 
525
467
  if ((0, _isPromise.default)(result)) {
@@ -533,21 +475,43 @@ function completeValueCatchingError(exeContext, returnType, fieldNodes, info, pa
533
475
  if ((0, _isPromise.default)(completed)) {
534
476
  // Note: we don't rely on a `catch` method, but we do expect "thenable"
535
477
  // to take a second callback for the error case.
536
- return completed.then(undefined, function (error) {
537
- return handleFieldError(error, fieldNodes, path, returnType, exeContext);
478
+ return completed.then(undefined, function (rawError) {
479
+ var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));
480
+ return handleFieldError(error, returnType, exeContext);
538
481
  });
539
482
  }
540
483
 
541
484
  return completed;
542
- } catch (error) {
543
- return handleFieldError(error, fieldNodes, path, returnType, exeContext);
485
+ } catch (rawError) {
486
+ var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(path));
487
+ return handleFieldError(error, returnType, exeContext);
544
488
  }
545
489
  }
490
+ /**
491
+ * @internal
492
+ */
546
493
 
547
- function handleFieldError(rawError, fieldNodes, path, returnType, exeContext) {
548
- var error = (0, _locatedError.locatedError)(asErrorInstance(rawError), fieldNodes, (0, _Path.pathToArray)(path)); // If the field type is non-nullable, then it is resolved without any
549
- // protection from errors, however it still properly locates the error.
550
494
 
495
+ function buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {
496
+ // The resolve function's optional fourth argument is a collection of
497
+ // information about the current execution state.
498
+ return {
499
+ fieldName: fieldDef.name,
500
+ fieldNodes: fieldNodes,
501
+ returnType: fieldDef.type,
502
+ parentType: parentType,
503
+ path: path,
504
+ schema: exeContext.schema,
505
+ fragments: exeContext.fragments,
506
+ rootValue: exeContext.rootValue,
507
+ operation: exeContext.operation,
508
+ variableValues: exeContext.variableValues
509
+ };
510
+ }
511
+
512
+ function handleFieldError(error, returnType, exeContext) {
513
+ // If the field type is non-nullable, then it is resolved without any
514
+ // protection from errors, however it still properly locates the error.
551
515
  if ((0, _definition.isNonNullType)(returnType)) {
552
516
  throw error;
553
517
  } // Otherwise, error protection is applied, logging the error and resolving
@@ -636,26 +600,47 @@ function completeValue(exeContext, returnType, fieldNodes, info, path, result) {
636
600
 
637
601
 
638
602
  function completeListValue(exeContext, returnType, fieldNodes, info, path, result) {
639
- if (!(0, _isCollection.default)(result)) {
640
- throw new _GraphQLError.GraphQLError("Expected Iterable, but did not find one for field \"".concat(info.parentType.name, ".").concat(info.fieldName, "\"."));
641
- } // This is specified as a simple map, however we're optimizing the path
603
+ // This is specified as a simple map, however we're optimizing the path
642
604
  // where the list contains no Promises by avoiding creating another Promise.
643
-
644
-
645
605
  var itemType = returnType.ofType;
646
606
  var containsPromise = false;
647
- var completedResults = (0, _arrayFrom.default)(result, function (item, index) {
607
+ var completedResults = (0, _safeArrayFrom.default)(result, function (item, index) {
648
608
  // No need to modify the info object containing the path,
649
609
  // since from here on it is not ever accessed by resolver functions.
650
- var fieldPath = (0, _Path.addPath)(path, index, undefined);
651
- var completedItem = completeValueCatchingError(exeContext, itemType, fieldNodes, info, fieldPath, item);
610
+ var itemPath = (0, _Path.addPath)(path, index, undefined);
652
611
 
653
- if (!containsPromise && (0, _isPromise.default)(completedItem)) {
654
- containsPromise = true;
655
- }
612
+ try {
613
+ var completedItem;
614
+
615
+ if ((0, _isPromise.default)(item)) {
616
+ completedItem = item.then(function (resolved) {
617
+ return completeValue(exeContext, itemType, fieldNodes, info, itemPath, resolved);
618
+ });
619
+ } else {
620
+ completedItem = completeValue(exeContext, itemType, fieldNodes, info, itemPath, item);
621
+ }
656
622
 
657
- return completedItem;
623
+ if ((0, _isPromise.default)(completedItem)) {
624
+ containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect "thenable"
625
+ // to take a second callback for the error case.
626
+
627
+ return completedItem.then(undefined, function (rawError) {
628
+ var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));
629
+ return handleFieldError(error, itemType, exeContext);
630
+ });
631
+ }
632
+
633
+ return completedItem;
634
+ } catch (rawError) {
635
+ var error = (0, _locatedError.locatedError)(rawError, fieldNodes, (0, _Path.pathToArray)(itemPath));
636
+ return handleFieldError(error, itemType, exeContext);
637
+ }
658
638
  });
639
+
640
+ if (completedResults == null) {
641
+ throw new _GraphQLError.GraphQLError("Expected Iterable, but did not find one for field \"".concat(info.parentType.name, ".").concat(info.fieldName, "\"."));
642
+ }
643
+
659
644
  return containsPromise ? Promise.all(completedResults) : completedResults;
660
645
  }
661
646
  /**
@@ -696,10 +681,25 @@ function completeAbstractValue(exeContext, returnType, fieldNodes, info, path, r
696
681
  }
697
682
 
698
683
  function ensureValidRuntimeType(runtimeTypeOrName, exeContext, returnType, fieldNodes, info, result) {
699
- var runtimeType = typeof runtimeTypeOrName === 'string' ? exeContext.schema.getType(runtimeTypeOrName) : runtimeTypeOrName;
684
+ if (runtimeTypeOrName == null) {
685
+ throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" must resolve to an Object type at runtime for field \"").concat(info.parentType.name, ".").concat(info.fieldName, "\". Either the \"").concat(returnType.name, "\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function."), fieldNodes);
686
+ } // FIXME: temporary workaround until support for passing object types would be removed in v16.0.0
687
+
688
+
689
+ var runtimeTypeName = (0, _definition.isNamedType)(runtimeTypeOrName) ? runtimeTypeOrName.name : runtimeTypeOrName;
690
+
691
+ if (typeof runtimeTypeName !== 'string') {
692
+ throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" must resolve to an Object type at runtime for field \"").concat(info.parentType.name, ".").concat(info.fieldName, "\" with ") + "value ".concat((0, _inspect.default)(result), ", received \"").concat((0, _inspect.default)(runtimeTypeOrName), "\"."));
693
+ }
694
+
695
+ var runtimeType = exeContext.schema.getType(runtimeTypeName);
696
+
697
+ if (runtimeType == null) {
698
+ throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" was resolve to a type \"").concat(runtimeTypeName, "\" that does not exist inside schema."), fieldNodes);
699
+ }
700
700
 
701
701
  if (!(0, _definition.isObjectType)(runtimeType)) {
702
- throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" must resolve to an Object type at runtime for field \"").concat(info.parentType.name, ".").concat(info.fieldName, "\" with ") + "value ".concat((0, _inspect.default)(result), ", received \"").concat((0, _inspect.default)(runtimeType), "\". ") + "Either the \"".concat(returnType.name, "\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function."), fieldNodes);
702
+ throw new _GraphQLError.GraphQLError("Abstract type \"".concat(returnType.name, "\" was resolve to a non-object type \"").concat(runtimeTypeName, "\"."), fieldNodes);
703
703
  }
704
704
 
705
705
  if (!exeContext.schema.isSubType(returnType, runtimeType)) {
@@ -801,7 +801,7 @@ var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info
801
801
  if ((0, _isPromise.default)(isTypeOfResult)) {
802
802
  promisedIsTypeOfResults[i] = isTypeOfResult;
803
803
  } else if (isTypeOfResult) {
804
- return type;
804
+ return type.name;
805
805
  }
806
806
  }
807
807
  }
@@ -810,7 +810,7 @@ var defaultTypeResolver = function defaultTypeResolver(value, contextValue, info
810
810
  return Promise.all(promisedIsTypeOfResults).then(function (isTypeOfResults) {
811
811
  for (var _i9 = 0; _i9 < isTypeOfResults.length; _i9++) {
812
812
  if (isTypeOfResults[_i9]) {
813
- return possibleTypes[_i9];
813
+ return possibleTypes[_i9].name;
814
814
  }
815
815
  }
816
816
  });