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
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
@@ -13,7 +13,7 @@ Looking for help? Find resources [from the community](https://graphql.org/commun
13
13
 
14
14
  ## Getting Started
15
15
 
16
- An overview of GraphQL in general is available in the
16
+ A general overview of GraphQL is available in the
17
17
  [README](https://github.com/graphql/graphql-spec/blob/master/README.md) for the
18
18
  [Specification for GraphQL](https://github.com/graphql/graphql-spec). That overview
19
19
  describes a simple set of GraphQL examples that exist as [tests](src/__tests__)
@@ -30,16 +30,16 @@ With npm:
30
30
  npm install --save graphql
31
31
  ```
32
32
 
33
- or alternatively using yarn:
33
+ or using yarn:
34
34
 
35
35
  ```sh
36
36
  yarn add graphql
37
37
  ```
38
38
 
39
- GraphQL.js provides two important capabilities: building a type schema, and
39
+ GraphQL.js provides two important capabilities: building a type schema and
40
40
  serving queries against that type schema.
41
41
 
42
- First, build a GraphQL type schema which maps to your code base.
42
+ First, build a GraphQL type schema which maps to your codebase.
43
43
 
44
44
  ```js
45
45
  import {
@@ -64,10 +64,9 @@ var schema = new GraphQLSchema({
64
64
  });
65
65
  ```
66
66
 
67
- This defines a simple schema with one type and one field, that resolves
67
+ This defines a simple schema, with one type and one field, that resolves
68
68
  to a fixed value. The `resolve` function can return a value, a promise,
69
- or an array of promises. A more complex example is included in the top
70
- level [tests](src/__tests__) directory.
69
+ or an array of promises. A more complex example is included in the top-level [tests](src/__tests__) directory.
71
70
 
72
71
  Then, serve the result of a query against that type schema.
73
72
 
@@ -102,7 +101,7 @@ graphql(schema, query).then((result) => {
102
101
  });
103
102
  ```
104
103
 
105
- **Note**: Please don't forget to set `NODE_ENV=production` if you are running a production server it will disable some checks that can be useful during development but will significantly improve performance.
104
+ **Note**: Please don't forget to set `NODE_ENV=production` if you are running a production server. It will disable some checks that can be useful during development but will significantly improve performance.
106
105
 
107
106
  ### Want to ride the bleeding edge?
108
107
 
@@ -116,9 +115,19 @@ directly on this branch:
116
115
  npm install graphql@git://github.com/graphql/graphql-js.git#npm
117
116
  ```
118
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
+
119
128
  ### Using in a Browser
120
129
 
121
- GraphQL.js is a general purpose library and can be used both in a Node server
130
+ GraphQL.js is a general-purpose library and can be used both in a Node server
122
131
  and in the browser. As an example, the [GraphiQL](https://github.com/graphql/graphiql/)
123
132
  tool is built with GraphQL.js!
124
133
 
@@ -130,7 +139,7 @@ custom build configurations look for `.mjs` files!
130
139
 
131
140
  ### Contributing
132
141
 
133
- We actively welcome pull requests, learn how to [contribute](./.github/CONTRIBUTING.md).
142
+ We actively welcome pull requests. Learn how to [contribute](./.github/CONTRIBUTING.md).
134
143
 
135
144
  ### Changelog
136
145
 
@@ -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';
@@ -4,6 +4,7 @@ import { PromiseOrValue } from '../jsutils/PromiseOrValue';
4
4
  import { Path } from '../jsutils/Path';
5
5
 
6
6
  import { GraphQLError } from '../error/GraphQLError';
7
+ import { GraphQLFormattedError } from '../error/formatError';
7
8
 
8
9
  import {
9
10
  DocumentNode,
@@ -55,6 +56,16 @@ export interface ExecutionResult<
55
56
  extensions?: TExtensions;
56
57
  }
57
58
 
59
+ export interface FormattedExecutionResult<
60
+ TData = { [key: string]: any },
61
+ TExtensions = { [key: string]: any }
62
+ > {
63
+ errors?: ReadonlyArray<GraphQLFormattedError>;
64
+ // TS_SPECIFIC: TData. Motivation: https://github.com/graphql/graphql-js/pull/2490#issuecomment-639154229
65
+ data?: TData | null;
66
+ extensions?: TExtensions;
67
+ }
68
+
58
69
  export interface ExecutionArgs {
59
70
  schema: GraphQLSchema;
60
71
  document: DocumentNode;
@@ -148,21 +159,6 @@ export function buildResolveInfo(
148
159
  path: Path,
149
160
  ): GraphQLResolveInfo;
150
161
 
151
- /**
152
- * Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
153
- * function. Returns the result of resolveFn or the abrupt-return Error object.
154
- *
155
- * @internal
156
- */
157
- export function resolveFieldValueOrError(
158
- exeContext: ExecutionContext,
159
- fieldDef: GraphQLField<any, any>,
160
- fieldNodes: ReadonlyArray<FieldNode>,
161
- resolveFn: GraphQLFieldResolver<any, any>,
162
- source: any,
163
- info: GraphQLResolveInfo,
164
- ): any;
165
-
166
162
  /**
167
163
  * If a resolveType function is not given, then a default resolve behavior is
168
164
  * used which attempts two strategies: