graphql 15.1.0 → 15.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -12
  3. package/error/GraphQLError.js +5 -5
  4. package/error/GraphQLError.js.flow +5 -5
  5. package/error/GraphQLError.mjs +1 -1
  6. package/error/formatError.js +1 -1
  7. package/error/formatError.js.flow +2 -3
  8. package/error/index.js +4 -4
  9. package/error/index.js.flow +0 -1
  10. package/error/locatedError.d.ts +2 -2
  11. package/error/locatedError.js +10 -5
  12. package/error/locatedError.js.flow +11 -5
  13. package/error/locatedError.mjs +6 -4
  14. package/error/syntaxError.js +1 -1
  15. package/error/syntaxError.js.flow +1 -2
  16. package/execution/execute.d.ts +24 -16
  17. package/execution/execute.js +123 -105
  18. package/execution/execute.js.flow +169 -153
  19. package/execution/execute.mjs +101 -82
  20. package/execution/index.d.ts +2 -0
  21. package/execution/index.js +9 -3
  22. package/execution/index.js.flow +12 -3
  23. package/execution/index.mjs +1 -1
  24. package/execution/values.js +11 -11
  25. package/execution/values.js.flow +10 -14
  26. package/graphql.js +5 -5
  27. package/graphql.js.flow +9 -9
  28. package/index.d.ts +19 -1
  29. package/index.js +27 -9
  30. package/index.js.flow +10 -3
  31. package/index.mjs +4 -3
  32. package/jsutils/ObjMap.js.flow +0 -1
  33. package/jsutils/Path.d.ts +6 -1
  34. package/jsutils/Path.js +3 -2
  35. package/jsutils/Path.js.flow +3 -2
  36. package/jsutils/Path.mjs +3 -2
  37. package/jsutils/PromiseOrValue.js.flow +0 -1
  38. package/jsutils/defineInspect.js +2 -2
  39. package/jsutils/defineInspect.js.flow +0 -1
  40. package/jsutils/devAssert.js.flow +0 -1
  41. package/jsutils/didYouMean.js.flow +0 -1
  42. package/jsutils/identityFunc.js.flow +0 -1
  43. package/jsutils/inspect.js +1 -2
  44. package/jsutils/inspect.js.flow +10 -8
  45. package/jsutils/inspect.mjs +1 -1
  46. package/jsutils/instanceOf.js.flow +2 -3
  47. package/jsutils/invariant.js.flow +0 -1
  48. package/jsutils/isAsyncIterable.js +19 -0
  49. package/jsutils/isAsyncIterable.js.flow +18 -0
  50. package/jsutils/isAsyncIterable.mjs +16 -0
  51. package/jsutils/isCollection.js +1 -1
  52. package/jsutils/isCollection.js.flow +0 -1
  53. package/jsutils/isObjectLike.js.flow +0 -1
  54. package/jsutils/isPromise.js.flow +0 -1
  55. package/jsutils/keyMap.js.flow +1 -2
  56. package/jsutils/keyValMap.js.flow +1 -2
  57. package/jsutils/mapValue.js +1 -1
  58. package/jsutils/mapValue.js.flow +1 -2
  59. package/jsutils/memoize3.js +2 -5
  60. package/jsutils/memoize3.js.flow +2 -5
  61. package/jsutils/memoize3.mjs +2 -5
  62. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  63. package/jsutils/printPathArray.js.flow +0 -1
  64. package/jsutils/promiseForObject.js.flow +1 -2
  65. package/jsutils/promiseReduce.js +1 -1
  66. package/jsutils/promiseReduce.js.flow +1 -1
  67. package/jsutils/promiseReduce.mjs +1 -1
  68. package/jsutils/suggestionList.js.flow +1 -2
  69. package/jsutils/toObjMap.js +1 -1
  70. package/jsutils/toObjMap.js.flow +5 -6
  71. package/language/ast.js +1 -1
  72. package/language/ast.js.flow +2 -3
  73. package/language/blockString.d.ts +1 -1
  74. package/language/blockString.js +53 -32
  75. package/language/blockString.js.flow +49 -34
  76. package/language/blockString.mjs +54 -33
  77. package/language/directiveLocation.js.flow +0 -1
  78. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  79. package/language/experimentalOnlineParser/grammar.js +987 -0
  80. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  81. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  82. package/language/experimentalOnlineParser/index.d.ts +6 -0
  83. package/language/experimentalOnlineParser/index.js +31 -0
  84. package/language/experimentalOnlineParser/index.js.flow +7 -0
  85. package/language/experimentalOnlineParser/index.mjs +1 -0
  86. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  87. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  88. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  89. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  90. package/language/index.js +12 -12
  91. package/language/index.js.flow +0 -1
  92. package/language/kinds.js.flow +0 -1
  93. package/language/lexer.js +242 -183
  94. package/language/lexer.js.flow +191 -186
  95. package/language/lexer.mjs +239 -180
  96. package/language/location.js.flow +1 -2
  97. package/language/parser.js +73 -68
  98. package/language/parser.js.flow +112 -106
  99. package/language/parser.mjs +66 -62
  100. package/language/predicates.js +1 -1
  101. package/language/predicates.js.flow +1 -2
  102. package/language/printLocation.js +1 -1
  103. package/language/printLocation.js.flow +4 -4
  104. package/language/printer.js +20 -13
  105. package/language/printer.js.flow +27 -25
  106. package/language/printer.mjs +18 -11
  107. package/language/source.d.ts +12 -6
  108. package/language/source.js +25 -9
  109. package/language/source.js.flow +25 -8
  110. package/language/source.mjs +19 -7
  111. package/language/tokenKind.js.flow +0 -1
  112. package/language/visitor.d.ts +3 -3
  113. package/language/visitor.js +5 -5
  114. package/language/visitor.js.flow +5 -5
  115. package/language/visitor.mjs +3 -3
  116. package/package.json +1 -1
  117. package/polyfills/arrayFrom.js +2 -2
  118. package/polyfills/arrayFrom.js.flow +1 -2
  119. package/polyfills/arrayFrom.mjs +1 -1
  120. package/polyfills/find.js +1 -1
  121. package/polyfills/find.js.flow +1 -2
  122. package/polyfills/find.mjs +1 -1
  123. package/polyfills/isFinite.js +1 -1
  124. package/polyfills/isFinite.js.flow +1 -2
  125. package/polyfills/isFinite.mjs +1 -1
  126. package/polyfills/isInteger.js +1 -1
  127. package/polyfills/isInteger.js.flow +1 -2
  128. package/polyfills/isInteger.mjs +1 -1
  129. package/polyfills/objectEntries.js +1 -1
  130. package/polyfills/objectEntries.js.flow +2 -3
  131. package/polyfills/objectEntries.mjs +1 -1
  132. package/polyfills/objectValues.js +1 -1
  133. package/polyfills/objectValues.js.flow +2 -3
  134. package/polyfills/objectValues.mjs +1 -1
  135. package/polyfills/symbols.js +3 -5
  136. package/polyfills/symbols.js.flow +9 -6
  137. package/polyfills/symbols.mjs +3 -5
  138. package/subscription/index.js +1 -1
  139. package/subscription/index.js.flow +0 -1
  140. package/subscription/mapAsyncIterator.js +2 -2
  141. package/subscription/mapAsyncIterator.js.flow +9 -10
  142. package/subscription/mapAsyncIterator.mjs +1 -1
  143. package/subscription/subscribe.js +61 -73
  144. package/subscription/subscribe.js.flow +74 -88
  145. package/subscription/subscribe.mjs +53 -65
  146. package/type/definition.d.ts +181 -31
  147. package/type/definition.js +37 -32
  148. package/type/definition.js.flow +66 -51
  149. package/type/definition.mjs +20 -18
  150. package/type/directives.d.ts +17 -3
  151. package/type/directives.js +17 -16
  152. package/type/directives.js.flow +20 -21
  153. package/type/directives.mjs +6 -5
  154. package/type/index.d.ts +12 -0
  155. package/type/index.js +6 -6
  156. package/type/index.js.flow +0 -1
  157. package/type/introspection.js +86 -68
  158. package/type/introspection.js.flow +85 -54
  159. package/type/introspection.mjs +79 -61
  160. package/type/scalars.js +9 -9
  161. package/type/scalars.js.flow +3 -3
  162. package/type/scalars.mjs +1 -1
  163. package/type/schema.d.ts +17 -4
  164. package/type/schema.js +13 -13
  165. package/type/schema.js.flow +18 -16
  166. package/type/schema.mjs +1 -1
  167. package/type/validate.js +52 -19
  168. package/type/validate.js.flow +67 -18
  169. package/type/validate.mjs +44 -10
  170. package/utilities/TypeInfo.js +7 -7
  171. package/utilities/TypeInfo.js.flow +16 -18
  172. package/utilities/TypeInfo.mjs +1 -1
  173. package/utilities/assertValidName.js +2 -2
  174. package/utilities/assertValidName.js.flow +0 -1
  175. package/utilities/astFromValue.js +10 -10
  176. package/utilities/astFromValue.js.flow +2 -3
  177. package/utilities/buildASTSchema.js +17 -27
  178. package/utilities/buildASTSchema.js.flow +11 -28
  179. package/utilities/buildASTSchema.mjs +11 -21
  180. package/utilities/buildClientSchema.js +14 -14
  181. package/utilities/buildClientSchema.js.flow +41 -29
  182. package/utilities/buildClientSchema.mjs +5 -5
  183. package/utilities/coerceInputValue.js +14 -14
  184. package/utilities/coerceInputValue.js.flow +7 -6
  185. package/utilities/coerceInputValue.mjs +2 -2
  186. package/utilities/concatAST.js +9 -8
  187. package/utilities/concatAST.js.flow +9 -9
  188. package/utilities/concatAST.mjs +9 -6
  189. package/utilities/extendSchema.js +26 -19
  190. package/utilities/extendSchema.js.flow +58 -45
  191. package/utilities/extendSchema.mjs +9 -2
  192. package/utilities/findBreakingChanges.js +9 -9
  193. package/utilities/findBreakingChanges.js.flow +12 -11
  194. package/utilities/findDeprecatedUsages.d.ts +9 -1
  195. package/utilities/findDeprecatedUsages.js +11 -27
  196. package/utilities/findDeprecatedUsages.js.flow +15 -44
  197. package/utilities/findDeprecatedUsages.mjs +11 -25
  198. package/utilities/getIntrospectionQuery.js.flow +2 -3
  199. package/utilities/getOperationAST.js +1 -1
  200. package/utilities/getOperationAST.js.flow +1 -5
  201. package/utilities/getOperationAST.mjs +1 -1
  202. package/utilities/getOperationRootType.js +1 -1
  203. package/utilities/getOperationRootType.js.flow +5 -6
  204. package/utilities/index.d.ts +4 -1
  205. package/utilities/index.js +22 -22
  206. package/utilities/index.js.flow +1 -2
  207. package/utilities/index.mjs +1 -1
  208. package/utilities/introspectionFromSchema.js +6 -8
  209. package/utilities/introspectionFromSchema.js.flow +10 -10
  210. package/utilities/introspectionFromSchema.mjs +3 -4
  211. package/utilities/lexicographicSortSchema.js +10 -8
  212. package/utilities/lexicographicSortSchema.js.flow +19 -12
  213. package/utilities/lexicographicSortSchema.mjs +3 -1
  214. package/utilities/printSchema.js +15 -16
  215. package/utilities/printSchema.js.flow +34 -25
  216. package/utilities/printSchema.mjs +6 -7
  217. package/utilities/separateOperations.js +2 -2
  218. package/utilities/separateOperations.js.flow +2 -6
  219. package/utilities/separateOperations.mjs +1 -1
  220. package/utilities/stripIgnoredCharacters.js +6 -16
  221. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  222. package/utilities/stripIgnoredCharacters.mjs +3 -10
  223. package/utilities/typeComparators.js +1 -1
  224. package/utilities/typeComparators.js.flow +2 -4
  225. package/utilities/typeFromAST.js +6 -6
  226. package/utilities/typeFromAST.js.flow +11 -14
  227. package/utilities/typeFromAST.mjs +2 -2
  228. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  229. package/utilities/valueFromAST.js +6 -6
  230. package/utilities/valueFromAST.js.flow +7 -5
  231. package/utilities/valueFromASTUntyped.js +4 -4
  232. package/utilities/valueFromASTUntyped.js.flow +2 -3
  233. package/validation/ValidationContext.d.ts +3 -0
  234. package/validation/ValidationContext.js +7 -3
  235. package/validation/ValidationContext.js.flow +28 -22
  236. package/validation/ValidationContext.mjs +4 -0
  237. package/validation/index.d.ts +4 -0
  238. package/validation/index.js +52 -36
  239. package/validation/index.js.flow +4 -1
  240. package/validation/index.mjs +4 -1
  241. package/validation/rules/ExecutableDefinitions.js +1 -1
  242. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  243. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  244. package/validation/rules/ExecutableDefinitionsRule.js.flow +2 -3
  245. package/validation/rules/FieldsOnCorrectTypeRule.js +5 -5
  246. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +9 -8
  247. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  248. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +2 -3
  249. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  250. package/validation/rules/KnownArgumentNamesRule.js.flow +5 -5
  251. package/validation/rules/KnownDirectivesRule.js +6 -6
  252. package/validation/rules/KnownDirectivesRule.js.flow +10 -11
  253. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  254. package/validation/rules/KnownFragmentNamesRule.js.flow +3 -3
  255. package/validation/rules/KnownTypeNamesRule.js +12 -10
  256. package/validation/rules/KnownTypeNamesRule.js.flow +14 -11
  257. package/validation/rules/KnownTypeNamesRule.mjs +6 -5
  258. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  259. package/validation/rules/LoneAnonymousOperationRule.js.flow +2 -3
  260. package/validation/rules/LoneSchemaDefinition.js +1 -1
  261. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  262. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  263. package/validation/rules/LoneSchemaDefinitionRule.js.flow +2 -3
  264. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  265. package/validation/rules/NoFragmentCyclesRule.js.flow +4 -5
  266. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  267. package/validation/rules/NoUndefinedVariablesRule.js.flow +3 -3
  268. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  269. package/validation/rules/NoUnusedFragmentsRule.js.flow +3 -3
  270. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  271. package/validation/rules/NoUnusedVariablesRule.js.flow +3 -3
  272. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  273. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +29 -27
  274. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  275. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  276. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +7 -4
  277. package/validation/rules/PossibleTypeExtensions.js +1 -1
  278. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  279. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  280. package/validation/rules/PossibleTypeExtensionsRule.js.flow +8 -6
  281. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  282. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +7 -6
  283. package/validation/rules/ScalarLeafsRule.js +3 -3
  284. package/validation/rules/ScalarLeafsRule.js.flow +3 -4
  285. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  286. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +3 -4
  287. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  288. package/validation/rules/UniqueArgumentNamesRule.js.flow +2 -3
  289. package/validation/rules/UniqueDirectiveNames.js +1 -1
  290. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  291. package/validation/rules/UniqueDirectiveNamesRule.js +1 -1
  292. package/validation/rules/UniqueDirectiveNamesRule.js.flow +2 -3
  293. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  294. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +4 -5
  295. package/validation/rules/UniqueEnumValueNames.js +1 -1
  296. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  297. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  298. package/validation/rules/UniqueEnumValueNamesRule.js.flow +11 -4
  299. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  300. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  301. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  302. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +17 -6
  303. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  304. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  305. package/validation/rules/UniqueFragmentNamesRule.js.flow +3 -3
  306. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  307. package/validation/rules/UniqueInputFieldNamesRule.js.flow +3 -3
  308. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  309. package/validation/rules/UniqueOperationNamesRule.js.flow +3 -3
  310. package/validation/rules/UniqueOperationTypes.js +1 -1
  311. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  312. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  313. package/validation/rules/UniqueOperationTypesRule.js.flow +10 -4
  314. package/validation/rules/UniqueTypeNames.js +1 -1
  315. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  316. package/validation/rules/UniqueTypeNamesRule.js +1 -1
  317. package/validation/rules/UniqueTypeNamesRule.js.flow +3 -4
  318. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  319. package/validation/rules/UniqueVariableNamesRule.js.flow +3 -4
  320. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  321. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +3 -4
  322. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  323. package/validation/rules/VariablesAreInputTypesRule.js.flow +3 -4
  324. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  325. package/validation/rules/VariablesInAllowedPositionRule.js.flow +6 -6
  326. package/validation/rules/custom/NoDeprecatedCustomRule.d.ts +14 -0
  327. package/validation/rules/custom/NoDeprecatedCustomRule.js +79 -0
  328. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +94 -0
  329. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +68 -0
  330. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.d.ts +16 -0
  331. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +34 -0
  332. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +38 -0
  333. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.mjs +25 -0
  334. package/validation/specifiedRules.js +33 -33
  335. package/validation/specifiedRules.js.flow +0 -1
  336. package/validation/validate.js +7 -7
  337. package/validation/validate.js.flow +4 -9
  338. package/version.js +2 -2
  339. package/version.js.flow +2 -3
  340. package/version.mjs +2 -2
  341. package/polyfills/flatMap.js +0 -30
  342. package/polyfills/flatMap.js.flow +0 -28
  343. package/polyfills/flatMap.mjs +0 -23
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
 
@@ -118,7 +117,7 @@ npm install graphql@git://github.com/graphql/graphql-js.git#npm
118
117
 
119
118
  ### Using in a Browser
120
119
 
121
- GraphQL.js is a general purpose library and can be used both in a Node server
120
+ GraphQL.js is a general-purpose library and can be used both in a Node server
122
121
  and in the browser. As an example, the [GraphiQL](https://github.com/graphql/graphiql/)
123
122
  tool is built with GraphQL.js!
124
123
 
@@ -130,8 +129,7 @@ custom build configurations look for `.mjs` files!
130
129
 
131
130
  ### Contributing
132
131
 
133
- We actively welcome pull requests, learn how to
134
- [contribute](https://github.com/graphql/graphql-js/blob/master/.github/CONTRIBUTING.md).
132
+ We actively welcome pull requests. Learn how to [contribute](./.github/CONTRIBUTING.md).
135
133
 
136
134
  ### Changelog
137
135
 
@@ -139,7 +137,7 @@ Changes are tracked as [GitHub releases](https://github.com/graphql/graphql-js/r
139
137
 
140
138
  ### License
141
139
 
142
- GraphQL.js is [MIT-licensed](https://github.com/graphql/graphql-js/blob/master/LICENSE).
140
+ GraphQL.js is [MIT-licensed](./LICENSE).
143
141
 
144
142
  ### Credits
145
143
 
@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.printError = printError;
7
7
  exports.GraphQLError = void 0;
8
8
 
9
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
9
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
10
10
 
11
- var _symbols = require("../polyfills/symbols");
11
+ var _symbols = require("../polyfills/symbols.js");
12
12
 
13
- var _location = require("../language/location");
13
+ var _location = require("../language/location.js");
14
14
 
15
- var _printLocation = require("../language/printLocation");
15
+ var _printLocation = require("../language/printLocation.js");
16
16
 
17
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
18
18
 
@@ -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,14 +1,14 @@
1
1
  // @flow strict
2
-
3
2
  // FIXME:
4
3
  // flowlint uninitialized-instance-property:off
5
4
 
6
5
  import isObjectLike from '../jsutils/isObjectLike';
7
6
  import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols';
8
7
 
9
- import { type ASTNode } from '../language/ast';
10
- import { type Source } from '../language/source';
11
- import { type SourceLocation, getLocation } from '../language/location';
8
+ import type { ASTNode } from '../language/ast';
9
+ import type { Source } from '../language/source';
10
+ import type { SourceLocation } from '../language/location';
11
+ import { getLocation } from '../language/location';
12
12
  import { printLocation, printSourceLocation } from '../language/printLocation';
13
13
 
14
14
  /**
@@ -213,7 +213,7 @@ export class GraphQLError extends Error {
213
213
  }
214
214
 
215
215
  // FIXME: workaround to not break chai comparisons, should be remove in v16
216
- // $FlowFixMe Flow doesn't support computed properties yet
216
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
217
217
  get [SYMBOL_TO_STRING_TAG](): string {
218
218
  return 'Object';
219
219
  }
@@ -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,10 +1,9 @@
1
1
  // @flow strict
2
-
3
2
  import devAssert from '../jsutils/devAssert';
4
3
 
5
- import { type SourceLocation } from '../language/location';
4
+ import type { SourceLocation } from '../language/location';
6
5
 
7
- import { type GraphQLError } from './GraphQLError';
6
+ import type { GraphQLError } from './GraphQLError';
8
7
 
9
8
  /**
10
9
  * Given a GraphQLError, format it according to the rules described by the
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
- import { type ASTNode } from '../language/ast';
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,6 +1,5 @@
1
1
  // @flow strict
2
-
3
- import { type Source } from '../language/source';
2
+ import type { Source } from '../language/source';
4
3
 
5
4
  import { GraphQLError } from './GraphQLError';
6
5
 
@@ -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,
@@ -43,11 +44,26 @@ export interface ExecutionContext {
43
44
  *
44
45
  * - `errors` is included when any errors occurred as a non-empty array.
45
46
  * - `data` is the result of a successful execution of the query.
47
+ * - `extensions` is reserved for adding non-standard properties.
46
48
  */
47
- export interface ExecutionResult<TData = { [key: string]: any }> {
49
+ export interface ExecutionResult<
50
+ TData = { [key: string]: any },
51
+ TExtensions = { [key: string]: any }
52
+ > {
48
53
  errors?: ReadonlyArray<GraphQLError>;
49
54
  // TS_SPECIFIC: TData. Motivation: https://github.com/graphql/graphql-js/pull/2490#issuecomment-639154229
50
55
  data?: TData | null;
56
+ extensions?: TExtensions;
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;
51
67
  }
52
68
 
53
69
  export interface ExecutionArgs {
@@ -85,6 +101,13 @@ export function execute(
85
101
  typeResolver?: Maybe<GraphQLTypeResolver<any, any>>,
86
102
  ): PromiseOrValue<ExecutionResult>;
87
103
 
104
+ /**
105
+ * Also implements the "Evaluating requests" section of the GraphQL specification.
106
+ * However, it guarantees to complete synchronously (or throw an error) assuming
107
+ * that all field resolvers are also synchronous.
108
+ */
109
+ export function executeSync(args: ExecutionArgs): ExecutionResult;
110
+
88
111
  /**
89
112
  * Essential assertions before executing to provide developer feedback for
90
113
  * improper use of the GraphQL library.
@@ -136,21 +159,6 @@ export function buildResolveInfo(
136
159
  path: Path,
137
160
  ): GraphQLResolveInfo;
138
161
 
139
- /**
140
- * Isolates the "ReturnOrAbrupt" behavior to not de-opt the `resolveField`
141
- * function. Returns the result of resolveFn or the abrupt-return Error object.
142
- *
143
- * @internal
144
- */
145
- export function resolveFieldValueOrError(
146
- exeContext: ExecutionContext,
147
- fieldDef: GraphQLField<any, any>,
148
- fieldNodes: ReadonlyArray<FieldNode>,
149
- resolveFn: GraphQLFieldResolver<any, any>,
150
- source: any,
151
- info: GraphQLResolveInfo,
152
- ): any;
153
-
154
162
  /**
155
163
  * If a resolveType function is not given, then a default resolve behavior is
156
164
  * used which attempts two strategies: