graphql 15.2.0 → 15.5.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 (338) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +19 -10
  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 +11 -15
  17. package/execution/execute.js +110 -110
  18. package/execution/execute.js.flow +132 -139
  19. package/execution/execute.mjs +92 -88
  20. package/execution/index.d.ts +1 -0
  21. package/execution/index.js +3 -3
  22. package/execution/index.js.flow +6 -2
  23. package/execution/values.js +11 -11
  24. package/execution/values.js.flow +0 -1
  25. package/graphql.js +5 -5
  26. package/graphql.js.flow +0 -1
  27. package/index.d.ts +2 -0
  28. package/index.js +9 -9
  29. package/index.js.flow +5 -2
  30. package/jsutils/ObjMap.js.flow +0 -1
  31. package/jsutils/Path.js.flow +0 -1
  32. package/jsutils/PromiseOrValue.js.flow +0 -1
  33. package/jsutils/defineInspect.js +2 -2
  34. package/jsutils/defineInspect.js.flow +0 -1
  35. package/jsutils/devAssert.js.flow +0 -1
  36. package/jsutils/didYouMean.js.flow +0 -1
  37. package/jsutils/identityFunc.js.flow +0 -1
  38. package/jsutils/inspect.js +1 -2
  39. package/jsutils/inspect.js.flow +10 -8
  40. package/jsutils/inspect.mjs +1 -1
  41. package/jsutils/instanceOf.js.flow +2 -3
  42. package/jsutils/invariant.js.flow +0 -1
  43. package/jsutils/isAsyncIterable.js +13 -0
  44. package/jsutils/isAsyncIterable.js.flow +14 -0
  45. package/jsutils/isAsyncIterable.mjs +10 -0
  46. package/jsutils/isObjectLike.js.flow +0 -1
  47. package/jsutils/isPromise.js.flow +0 -1
  48. package/jsutils/keyMap.js.flow +0 -1
  49. package/jsutils/keyValMap.js.flow +0 -1
  50. package/jsutils/mapValue.js +1 -1
  51. package/jsutils/mapValue.js.flow +0 -1
  52. package/jsutils/memoize3.js +2 -5
  53. package/jsutils/memoize3.js.flow +2 -5
  54. package/jsutils/memoize3.mjs +2 -5
  55. package/jsutils/naturalCompare.js +69 -0
  56. package/jsutils/naturalCompare.js.flow +59 -0
  57. package/jsutils/naturalCompare.mjs +61 -0
  58. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  59. package/jsutils/printPathArray.js.flow +0 -1
  60. package/jsutils/promiseForObject.js.flow +0 -1
  61. package/jsutils/promiseReduce.js +1 -1
  62. package/jsutils/promiseReduce.js.flow +0 -1
  63. package/jsutils/safeArrayFrom.js +73 -0
  64. package/jsutils/safeArrayFrom.js.flow +59 -0
  65. package/jsutils/safeArrayFrom.mjs +66 -0
  66. package/jsutils/suggestionList.js +5 -1
  67. package/jsutils/suggestionList.js.flow +3 -2
  68. package/jsutils/suggestionList.mjs +3 -1
  69. package/jsutils/toObjMap.js +1 -1
  70. package/jsutils/toObjMap.js.flow +0 -1
  71. package/language/ast.js +1 -1
  72. package/language/ast.js.flow +0 -1
  73. package/language/blockString.d.ts +1 -1
  74. package/language/blockString.js +53 -32
  75. package/language/blockString.js.flow +51 -36
  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 +188 -184
  95. package/language/lexer.mjs +238 -179
  96. package/language/location.js.flow +0 -1
  97. package/language/parser.js +73 -68
  98. package/language/parser.js.flow +62 -57
  99. package/language/parser.mjs +64 -60
  100. package/language/predicates.js +1 -1
  101. package/language/predicates.js.flow +0 -1
  102. package/language/printLocation.js +1 -1
  103. package/language/printLocation.js.flow +0 -1
  104. package/language/printer.js +20 -13
  105. package/language/printer.js.flow +26 -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 +26 -9
  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 +3 -4
  115. package/language/visitor.mjs +3 -3
  116. package/package.json +2 -3
  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 +1 -2
  131. package/polyfills/objectEntries.mjs +1 -1
  132. package/polyfills/objectValues.js +1 -1
  133. package/polyfills/objectValues.js.flow +1 -2
  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 +8 -9
  142. package/subscription/mapAsyncIterator.mjs +1 -1
  143. package/subscription/subscribe.js +61 -73
  144. package/subscription/subscribe.js.flow +71 -85
  145. package/subscription/subscribe.mjs +53 -65
  146. package/type/definition.d.ts +17 -9
  147. package/type/definition.js +37 -32
  148. package/type/definition.js.flow +93 -63
  149. package/type/definition.mjs +19 -14
  150. package/type/directives.js +17 -16
  151. package/type/directives.js.flow +20 -13
  152. package/type/directives.mjs +6 -5
  153. package/type/index.js +6 -6
  154. package/type/index.js.flow +0 -1
  155. package/type/introspection.js +86 -65
  156. package/type/introspection.js.flow +75 -43
  157. package/type/introspection.mjs +79 -58
  158. package/type/scalars.js +9 -9
  159. package/type/scalars.js.flow +1 -2
  160. package/type/scalars.mjs +1 -1
  161. package/type/schema.js +13 -13
  162. package/type/schema.js.flow +2 -3
  163. package/type/schema.mjs +1 -1
  164. package/type/validate.js +52 -19
  165. package/type/validate.js.flow +54 -8
  166. package/type/validate.mjs +43 -9
  167. package/utilities/TypeInfo.js +7 -7
  168. package/utilities/TypeInfo.js.flow +1 -2
  169. package/utilities/assertValidName.js +2 -2
  170. package/utilities/assertValidName.js.flow +0 -1
  171. package/utilities/astFromValue.js +14 -16
  172. package/utilities/astFromValue.js.flow +6 -7
  173. package/utilities/astFromValue.mjs +6 -7
  174. package/utilities/buildASTSchema.js +17 -27
  175. package/utilities/buildASTSchema.js.flow +5 -21
  176. package/utilities/buildASTSchema.mjs +11 -21
  177. package/utilities/buildClientSchema.js +16 -15
  178. package/utilities/buildClientSchema.js.flow +28 -12
  179. package/utilities/buildClientSchema.mjs +5 -4
  180. package/utilities/coerceInputValue.js +17 -18
  181. package/utilities/coerceInputValue.js.flow +12 -10
  182. package/utilities/coerceInputValue.mjs +7 -7
  183. package/utilities/concatAST.js +9 -8
  184. package/utilities/concatAST.js.flow +8 -8
  185. package/utilities/concatAST.mjs +9 -6
  186. package/utilities/extendSchema.js +26 -19
  187. package/utilities/extendSchema.js.flow +19 -7
  188. package/utilities/extendSchema.mjs +8 -1
  189. package/utilities/findBreakingChanges.js +15 -11
  190. package/utilities/findBreakingChanges.js.flow +6 -3
  191. package/utilities/findBreakingChanges.mjs +5 -2
  192. package/utilities/findDeprecatedUsages.js +2 -2
  193. package/utilities/findDeprecatedUsages.js.flow +0 -1
  194. package/utilities/getIntrospectionQuery.d.ts +6 -0
  195. package/utilities/getIntrospectionQuery.js +8 -2
  196. package/utilities/getIntrospectionQuery.js.flow +17 -5
  197. package/utilities/getIntrospectionQuery.mjs +8 -2
  198. package/utilities/getOperationAST.js +1 -1
  199. package/utilities/getOperationAST.js.flow +0 -1
  200. package/utilities/getOperationRootType.js +1 -1
  201. package/utilities/getOperationRootType.js.flow +0 -1
  202. package/utilities/index.d.ts +3 -0
  203. package/utilities/index.js +22 -22
  204. package/utilities/index.js.flow +0 -1
  205. package/utilities/introspectionFromSchema.js +7 -5
  206. package/utilities/introspectionFromSchema.js.flow +2 -1
  207. package/utilities/introspectionFromSchema.mjs +3 -1
  208. package/utilities/lexicographicSortSchema.js +13 -9
  209. package/utilities/lexicographicSortSchema.js.flow +21 -13
  210. package/utilities/lexicographicSortSchema.mjs +5 -2
  211. package/utilities/printSchema.js +15 -16
  212. package/utilities/printSchema.js.flow +23 -16
  213. package/utilities/printSchema.mjs +5 -6
  214. package/utilities/separateOperations.js +46 -42
  215. package/utilities/separateOperations.js.flow +46 -37
  216. package/utilities/separateOperations.mjs +44 -40
  217. package/utilities/stripIgnoredCharacters.js +6 -16
  218. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  219. package/utilities/stripIgnoredCharacters.mjs +3 -10
  220. package/utilities/typeComparators.js +1 -1
  221. package/utilities/typeComparators.js.flow +0 -1
  222. package/utilities/typeFromAST.js +6 -6
  223. package/utilities/typeFromAST.js.flow +2 -3
  224. package/utilities/typeFromAST.mjs +2 -2
  225. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  226. package/utilities/valueFromAST.js +6 -6
  227. package/utilities/valueFromAST.js.flow +4 -2
  228. package/utilities/valueFromASTUntyped.js +4 -4
  229. package/utilities/valueFromASTUntyped.js.flow +0 -1
  230. package/validation/ValidationContext.js +3 -3
  231. package/validation/ValidationContext.js.flow +3 -4
  232. package/validation/index.js +38 -38
  233. package/validation/index.js.flow +0 -1
  234. package/validation/rules/ExecutableDefinitions.js +1 -1
  235. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  236. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  237. package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
  238. package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
  239. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
  240. package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
  241. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  242. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
  243. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  244. package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
  245. package/validation/rules/KnownDirectivesRule.js +6 -6
  246. package/validation/rules/KnownDirectivesRule.js.flow +4 -3
  247. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  248. package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
  249. package/validation/rules/KnownTypeNamesRule.js +6 -6
  250. package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
  251. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  252. package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
  253. package/validation/rules/LoneSchemaDefinition.js +1 -1
  254. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  255. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  256. package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
  257. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  258. package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
  259. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  260. package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
  261. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  262. package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
  263. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  264. package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
  265. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  266. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
  267. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  268. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  269. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
  270. package/validation/rules/PossibleTypeExtensions.js +1 -1
  271. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  272. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  273. package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
  274. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  275. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
  276. package/validation/rules/ScalarLeafsRule.js +3 -3
  277. package/validation/rules/ScalarLeafsRule.js.flow +0 -1
  278. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  279. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
  280. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  281. package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
  282. package/validation/rules/UniqueDirectiveNames.js +1 -1
  283. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  284. package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
  285. package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
  286. package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
  287. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  288. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
  289. package/validation/rules/UniqueEnumValueNames.js +1 -1
  290. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  291. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  292. package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
  293. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  294. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  295. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  296. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
  297. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  298. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  299. package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
  300. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  301. package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
  302. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  303. package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
  304. package/validation/rules/UniqueOperationTypes.js +1 -1
  305. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  306. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  307. package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
  308. package/validation/rules/UniqueTypeNames.js +1 -1
  309. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  310. package/validation/rules/UniqueTypeNamesRule.js +2 -2
  311. package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
  312. package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
  313. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  314. package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
  315. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  316. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
  317. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  318. package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
  319. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  320. package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
  321. package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
  322. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
  323. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
  324. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
  325. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
  326. package/validation/specifiedRules.js +33 -33
  327. package/validation/specifiedRules.js.flow +0 -1
  328. package/validation/validate.js +7 -7
  329. package/validation/validate.js.flow +4 -5
  330. package/version.js +2 -2
  331. package/version.js.flow +2 -3
  332. package/version.mjs +2 -2
  333. package/jsutils/isCollection.js +0 -47
  334. package/jsutils/isCollection.js.flow +0 -39
  335. package/jsutils/isCollection.mjs +0 -40
  336. package/polyfills/flatMap.js +0 -30
  337. package/polyfills/flatMap.js.flow +0 -28
  338. package/polyfills/flatMap.mjs +0 -23
@@ -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
  });
@@ -840,12 +840,12 @@ var defaultFieldResolver = function defaultFieldResolver(source, args, contextVa
840
840
  };
841
841
  /**
842
842
  * This method looks up the field on the given type definition.
843
- * It has special casing for the two introspection fields, __schema
844
- * and __typename. __typename is special because it can always be
845
- * queried as a field, even in situations where no other fields
846
- * are allowed, like on a Union. __schema could get automatically
847
- * added to the query type, but that would require mutating type
848
- * definitions, which would cause issues.
843
+ * It has special casing for the three introspection fields,
844
+ * __schema, __type and __typename. __typename is special because
845
+ * it can always be queried as a field, even in situations where no
846
+ * other fields are allowed, like on a Union. __schema and __type
847
+ * could get automatically added to the query type, but that would
848
+ * require mutating type definitions, which would cause issues.
849
849
  *
850
850
  * @internal
851
851
  */