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
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import objectValues from '../polyfills/objectValues';
4
3
 
5
4
  import inspect from '../jsutils/inspect';
@@ -10,7 +9,12 @@ import isObjectLike from '../jsutils/isObjectLike';
10
9
  import { parseValue } from '../language/parser';
11
10
 
12
11
  import type { GraphQLSchemaValidationOptions } from '../type/schema';
13
- import type { GraphQLType, GraphQLNamedType } from '../type/definition';
12
+ import type {
13
+ GraphQLType,
14
+ GraphQLNamedType,
15
+ GraphQLFieldConfig,
16
+ GraphQLFieldConfigMap,
17
+ } from '../type/definition';
14
18
  import { GraphQLSchema } from '../type/schema';
15
19
  import { GraphQLDirective } from '../type/directives';
16
20
  import { specifiedScalarTypes } from '../type/scalars';
@@ -18,14 +22,14 @@ import { introspectionTypes, TypeKind } from '../type/introspection';
18
22
  import {
19
23
  isInputType,
20
24
  isOutputType,
25
+ GraphQLList,
26
+ GraphQLNonNull,
21
27
  GraphQLScalarType,
22
28
  GraphQLObjectType,
23
29
  GraphQLInterfaceType,
24
30
  GraphQLUnionType,
25
31
  GraphQLEnumType,
26
32
  GraphQLInputObjectType,
27
- GraphQLList,
28
- GraphQLNonNull,
29
33
  assertNullableType,
30
34
  assertObjectType,
31
35
  assertInterfaceType,
@@ -33,6 +37,9 @@ import {
33
37
 
34
38
  import type {
35
39
  IntrospectionQuery,
40
+ IntrospectionDirective,
41
+ IntrospectionField,
42
+ IntrospectionInputValue,
36
43
  IntrospectionType,
37
44
  IntrospectionScalarType,
38
45
  IntrospectionObjectType,
@@ -123,7 +130,7 @@ export function buildClientSchema(
123
130
  if (!itemRef) {
124
131
  throw new Error('Decorated type deeper than introspection query.');
125
132
  }
126
- return GraphQLList(getType(itemRef));
133
+ return new GraphQLList(getType(itemRef));
127
134
  }
128
135
  if (typeRef.kind === TypeKind.NON_NULL) {
129
136
  const nullableRef = typeRef.ofType;
@@ -131,7 +138,7 @@ export function buildClientSchema(
131
138
  throw new Error('Decorated type deeper than introspection query.');
132
139
  }
133
140
  const nullableType = getType(nullableRef);
134
- return GraphQLNonNull(assertNullableType(nullableType));
141
+ return new GraphQLNonNull(assertNullableType(nullableType));
135
142
  }
136
143
  return getNamedType(typeRef);
137
144
  }
@@ -205,7 +212,7 @@ export function buildClientSchema(
205
212
  implementingIntrospection:
206
213
  | IntrospectionObjectType
207
214
  | IntrospectionInterfaceType,
208
- ) {
215
+ ): Array<GraphQLInterfaceType> {
209
216
  // TODO: Temporary workaround until GraphQL ecosystem will fully support
210
217
  // 'interfaces' on interface types.
211
218
  if (
@@ -302,7 +309,9 @@ export function buildClientSchema(
302
309
  });
303
310
  }
304
311
 
305
- function buildFieldDefMap(typeIntrospection) {
312
+ function buildFieldDefMap(
313
+ typeIntrospection: IntrospectionObjectType | IntrospectionInterfaceType,
314
+ ): GraphQLFieldConfigMap<mixed, mixed> {
306
315
  if (!typeIntrospection.fields) {
307
316
  throw new Error(
308
317
  `Introspection result missing fields: ${inspect(typeIntrospection)}.`,
@@ -316,7 +325,9 @@ export function buildClientSchema(
316
325
  );
317
326
  }
318
327
 
319
- function buildField(fieldIntrospection) {
328
+ function buildField(
329
+ fieldIntrospection: IntrospectionField,
330
+ ): GraphQLFieldConfig<mixed, mixed> {
320
331
  const type = getType(fieldIntrospection.type);
321
332
  if (!isOutputType(type)) {
322
333
  const typeStr = inspect(type);
@@ -340,7 +351,9 @@ export function buildClientSchema(
340
351
  };
341
352
  }
342
353
 
343
- function buildInputValueDefMap(inputValueIntrospections) {
354
+ function buildInputValueDefMap(
355
+ inputValueIntrospections: $ReadOnlyArray<IntrospectionInputValue>,
356
+ ) {
344
357
  return keyValMap(
345
358
  inputValueIntrospections,
346
359
  (inputValue) => inputValue.name,
@@ -348,7 +361,7 @@ export function buildClientSchema(
348
361
  );
349
362
  }
350
363
 
351
- function buildInputValue(inputValueIntrospection) {
364
+ function buildInputValue(inputValueIntrospection: IntrospectionInputValue) {
352
365
  const type = getType(inputValueIntrospection.type);
353
366
  if (!isInputType(type)) {
354
367
  const typeStr = inspect(type);
@@ -365,10 +378,13 @@ export function buildClientSchema(
365
378
  description: inputValueIntrospection.description,
366
379
  type,
367
380
  defaultValue,
381
+ deprecationReason: inputValueIntrospection.deprecationReason,
368
382
  };
369
383
  }
370
384
 
371
- function buildDirective(directiveIntrospection) {
385
+ function buildDirective(
386
+ directiveIntrospection: IntrospectionDirective,
387
+ ): GraphQLDirective {
372
388
  if (!directiveIntrospection.args) {
373
389
  const directiveIntrospectionStr = inspect(directiveIntrospection);
374
390
  throw new Error(
@@ -8,7 +8,7 @@ import { GraphQLSchema } from "../type/schema.mjs";
8
8
  import { GraphQLDirective } from "../type/directives.mjs";
9
9
  import { specifiedScalarTypes } from "../type/scalars.mjs";
10
10
  import { introspectionTypes, TypeKind } from "../type/introspection.mjs";
11
- import { isInputType, isOutputType, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, assertNullableType, assertObjectType, assertInterfaceType } from "../type/definition.mjs";
11
+ import { isInputType, isOutputType, GraphQLList, GraphQLNonNull, GraphQLScalarType, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, assertNullableType, assertObjectType, assertInterfaceType } from "../type/definition.mjs";
12
12
  import { valueFromAST } from "./valueFromAST.mjs";
13
13
  /**
14
14
  * Build a GraphQLSchema for use by client tools.
@@ -69,7 +69,7 @@ export function buildClientSchema(introspection, options) {
69
69
  throw new Error('Decorated type deeper than introspection query.');
70
70
  }
71
71
 
72
- return GraphQLList(getType(itemRef));
72
+ return new GraphQLList(getType(itemRef));
73
73
  }
74
74
 
75
75
  if (typeRef.kind === TypeKind.NON_NULL) {
@@ -80,7 +80,7 @@ export function buildClientSchema(introspection, options) {
80
80
  }
81
81
 
82
82
  var nullableType = getType(nullableRef);
83
- return GraphQLNonNull(assertNullableType(nullableType));
83
+ return new GraphQLNonNull(assertNullableType(nullableType));
84
84
  }
85
85
 
86
86
  return getNamedType(typeRef);
@@ -287,7 +287,8 @@ export function buildClientSchema(introspection, options) {
287
287
  return {
288
288
  description: inputValueIntrospection.description,
289
289
  type: type,
290
- defaultValue: defaultValue
290
+ defaultValue: defaultValue,
291
+ deprecationReason: inputValueIntrospection.deprecationReason
291
292
  };
292
293
  }
293
294
 
@@ -5,29 +5,27 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.coerceInputValue = coerceInputValue;
7
7
 
8
- var _arrayFrom = _interopRequireDefault(require("../polyfills/arrayFrom"));
8
+ var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues.js"));
9
9
 
10
- var _objectValues3 = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
11
11
 
12
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
12
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
13
13
 
14
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
14
+ var _didYouMean = _interopRequireDefault(require("../jsutils/didYouMean.js"));
15
15
 
16
- var _didYouMean = _interopRequireDefault(require("../jsutils/didYouMean"));
16
+ var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike.js"));
17
17
 
18
- var _isObjectLike = _interopRequireDefault(require("../jsutils/isObjectLike"));
18
+ var _safeArrayFrom = _interopRequireDefault(require("../jsutils/safeArrayFrom.js"));
19
19
 
20
- var _isCollection = _interopRequireDefault(require("../jsutils/isCollection"));
20
+ var _suggestionList = _interopRequireDefault(require("../jsutils/suggestionList.js"));
21
21
 
22
- var _suggestionList = _interopRequireDefault(require("../jsutils/suggestionList"));
22
+ var _printPathArray = _interopRequireDefault(require("../jsutils/printPathArray.js"));
23
23
 
24
- var _printPathArray = _interopRequireDefault(require("../jsutils/printPathArray"));
24
+ var _Path = require("../jsutils/Path.js");
25
25
 
26
- var _Path = require("../jsutils/Path");
26
+ var _GraphQLError = require("../error/GraphQLError.js");
27
27
 
28
- var _GraphQLError = require("../error/GraphQLError");
29
-
30
- var _definition = require("../type/definition");
28
+ var _definition = require("../type/definition.js");
31
29
 
32
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
31
 
@@ -67,12 +65,13 @@ function coerceInputValueImpl(inputValue, type, onError, path) {
67
65
 
68
66
  if ((0, _definition.isListType)(type)) {
69
67
  var itemType = type.ofType;
68
+ var coercedList = (0, _safeArrayFrom.default)(inputValue, function (itemValue, index) {
69
+ var itemPath = (0, _Path.addPath)(path, index, undefined);
70
+ return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
71
+ });
70
72
 
71
- if ((0, _isCollection.default)(inputValue)) {
72
- return (0, _arrayFrom.default)(inputValue, function (itemValue, index) {
73
- var itemPath = (0, _Path.addPath)(path, index, undefined);
74
- return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
75
- });
73
+ if (coercedList != null) {
74
+ return coercedList;
76
75
  } // Lists accept a non-list value as a list of one.
77
76
 
78
77
 
@@ -1,6 +1,4 @@
1
1
  // @flow strict
2
-
3
- import arrayFrom from '../polyfills/arrayFrom';
4
2
  import objectValues from '../polyfills/objectValues';
5
3
 
6
4
  import type { Path } from '../jsutils/Path';
@@ -8,7 +6,7 @@ import inspect from '../jsutils/inspect';
8
6
  import invariant from '../jsutils/invariant';
9
7
  import didYouMean from '../jsutils/didYouMean';
10
8
  import isObjectLike from '../jsutils/isObjectLike';
11
- import isCollection from '../jsutils/isCollection';
9
+ import safeArrayFrom from '../jsutils/safeArrayFrom';
12
10
  import suggestionList from '../jsutils/suggestionList';
13
11
  import printPathArray from '../jsutils/printPathArray';
14
12
  import { addPath, pathToArray } from '../jsutils/Path';
@@ -35,7 +33,7 @@ type OnErrorCB = (
35
33
  export function coerceInputValue(
36
34
  inputValue: mixed,
37
35
  type: GraphQLInputType,
38
- onError?: OnErrorCB = defaultOnError,
36
+ onError: OnErrorCB = defaultOnError,
39
37
  ): mixed {
40
38
  return coerceInputValueImpl(inputValue, type, onError);
41
39
  }
@@ -44,7 +42,7 @@ function defaultOnError(
44
42
  path: $ReadOnlyArray<string | number>,
45
43
  invalidValue: mixed,
46
44
  error: GraphQLError,
47
- ) {
45
+ ): void {
48
46
  let errorPrefix = 'Invalid value ' + inspect(invalidValue);
49
47
  if (path.length > 0) {
50
48
  errorPrefix += ` at "value${printPathArray(path)}"`;
@@ -80,12 +78,16 @@ function coerceInputValueImpl(
80
78
 
81
79
  if (isListType(type)) {
82
80
  const itemType = type.ofType;
83
- if (isCollection(inputValue)) {
84
- return arrayFrom(inputValue, (itemValue, index) => {
85
- const itemPath = addPath(path, index, undefined);
86
- return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
87
- });
81
+
82
+ const coercedList = safeArrayFrom(inputValue, (itemValue, index) => {
83
+ const itemPath = addPath(path, index, undefined);
84
+ return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
85
+ });
86
+
87
+ if (coercedList != null) {
88
+ return coercedList;
88
89
  }
90
+
89
91
  // Lists accept a non-list value as a list of one.
90
92
  return [coerceInputValueImpl(inputValue, itemType, onError, path)];
91
93
  }
@@ -1,10 +1,9 @@
1
- import arrayFrom from "../polyfills/arrayFrom.mjs";
2
1
  import objectValues from "../polyfills/objectValues.mjs";
3
2
  import inspect from "../jsutils/inspect.mjs";
4
3
  import invariant from "../jsutils/invariant.mjs";
5
4
  import didYouMean from "../jsutils/didYouMean.mjs";
6
5
  import isObjectLike from "../jsutils/isObjectLike.mjs";
7
- import isCollection from "../jsutils/isCollection.mjs";
6
+ import safeArrayFrom from "../jsutils/safeArrayFrom.mjs";
8
7
  import suggestionList from "../jsutils/suggestionList.mjs";
9
8
  import printPathArray from "../jsutils/printPathArray.mjs";
10
9
  import { addPath, pathToArray } from "../jsutils/Path.mjs";
@@ -47,12 +46,13 @@ function coerceInputValueImpl(inputValue, type, onError, path) {
47
46
 
48
47
  if (isListType(type)) {
49
48
  var itemType = type.ofType;
49
+ var coercedList = safeArrayFrom(inputValue, function (itemValue, index) {
50
+ var itemPath = addPath(path, index, undefined);
51
+ return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
52
+ });
50
53
 
51
- if (isCollection(inputValue)) {
52
- return arrayFrom(inputValue, function (itemValue, index) {
53
- var itemPath = addPath(path, index, undefined);
54
- return coerceInputValueImpl(itemValue, itemType, onError, itemPath);
55
- });
54
+ if (coercedList != null) {
55
+ return coercedList;
56
56
  } // Lists accept a non-list value as a list of one.
57
57
 
58
58
 
@@ -5,20 +5,21 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.concatAST = concatAST;
7
7
 
8
- var _flatMap = _interopRequireDefault(require("../polyfills/flatMap"));
9
-
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
8
  /**
13
9
  * Provided a collection of ASTs, presumably each from different files,
14
10
  * concatenate the ASTs together into batched AST, useful for validating many
15
11
  * GraphQL source files which together represent one conceptual application.
16
12
  */
17
- function concatAST(asts) {
13
+ function concatAST(documents) {
14
+ var definitions = [];
15
+
16
+ for (var _i2 = 0; _i2 < documents.length; _i2++) {
17
+ var doc = documents[_i2];
18
+ definitions = definitions.concat(doc.definitions);
19
+ }
20
+
18
21
  return {
19
22
  kind: 'Document',
20
- definitions: (0, _flatMap.default)(asts, function (ast) {
21
- return ast.definitions;
22
- })
23
+ definitions: definitions
23
24
  };
24
25
  }
@@ -1,7 +1,4 @@
1
1
  // @flow strict
2
-
3
- import flatMap from '../polyfills/flatMap';
4
-
5
2
  import type { DocumentNode } from '../language/ast';
6
3
 
7
4
  /**
@@ -9,9 +6,12 @@ import type { DocumentNode } from '../language/ast';
9
6
  * concatenate the ASTs together into batched AST, useful for validating many
10
7
  * GraphQL source files which together represent one conceptual application.
11
8
  */
12
- export function concatAST(asts: $ReadOnlyArray<DocumentNode>): DocumentNode {
13
- return {
14
- kind: 'Document',
15
- definitions: flatMap(asts, (ast) => ast.definitions),
16
- };
9
+ export function concatAST(
10
+ documents: $ReadOnlyArray<DocumentNode>,
11
+ ): DocumentNode {
12
+ let definitions = [];
13
+ for (const doc of documents) {
14
+ definitions = definitions.concat(doc.definitions);
15
+ }
16
+ return { kind: 'Document', definitions };
17
17
  }
@@ -1,15 +1,18 @@
1
- import flatMap from "../polyfills/flatMap.mjs";
2
-
3
1
  /**
4
2
  * Provided a collection of ASTs, presumably each from different files,
5
3
  * concatenate the ASTs together into batched AST, useful for validating many
6
4
  * GraphQL source files which together represent one conceptual application.
7
5
  */
8
- export function concatAST(asts) {
6
+ export function concatAST(documents) {
7
+ var definitions = [];
8
+
9
+ for (var _i2 = 0; _i2 < documents.length; _i2++) {
10
+ var doc = documents[_i2];
11
+ definitions = definitions.concat(doc.definitions);
12
+ }
13
+
9
14
  return {
10
15
  kind: 'Document',
11
- definitions: flatMap(asts, function (ast) {
12
- return ast.definitions;
13
- })
16
+ definitions: definitions
14
17
  };
15
18
  }
@@ -7,41 +7,41 @@ exports.extendSchema = extendSchema;
7
7
  exports.extendSchemaImpl = extendSchemaImpl;
8
8
  exports.getDescription = getDescription;
9
9
 
10
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
11
11
 
12
- var _keyMap = _interopRequireDefault(require("../jsutils/keyMap"));
12
+ var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
13
13
 
14
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
14
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
15
15
 
16
- var _mapValue = _interopRequireDefault(require("../jsutils/mapValue"));
16
+ var _mapValue = _interopRequireDefault(require("../jsutils/mapValue.js"));
17
17
 
18
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
18
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
19
19
 
20
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
20
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
21
21
 
22
- var _kinds = require("../language/kinds");
22
+ var _kinds = require("../language/kinds.js");
23
23
 
24
- var _tokenKind = require("../language/tokenKind");
24
+ var _tokenKind = require("../language/tokenKind.js");
25
25
 
26
- var _blockString = require("../language/blockString");
26
+ var _blockString = require("../language/blockString.js");
27
27
 
28
- var _predicates = require("../language/predicates");
28
+ var _predicates = require("../language/predicates.js");
29
29
 
30
- var _validate = require("../validation/validate");
30
+ var _validate = require("../validation/validate.js");
31
31
 
32
- var _values = require("../execution/values");
32
+ var _values = require("../execution/values.js");
33
33
 
34
- var _schema = require("../type/schema");
34
+ var _schema = require("../type/schema.js");
35
35
 
36
- var _scalars = require("../type/scalars");
36
+ var _scalars = require("../type/scalars.js");
37
37
 
38
- var _introspection = require("../type/introspection");
38
+ var _introspection = require("../type/introspection.js");
39
39
 
40
- var _directives = require("../type/directives");
40
+ var _directives = require("../type/directives.js");
41
41
 
42
- var _definition = require("../type/definition");
42
+ var _definition = require("../type/definition.js");
43
43
 
44
- var _valueFromAST = require("./valueFromAST");
44
+ var _valueFromAST = require("./valueFromAST.js");
45
45
 
46
46
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
47
 
@@ -160,8 +160,12 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
160
160
 
161
161
  function replaceType(type) {
162
162
  if ((0, _definition.isListType)(type)) {
163
+ // $FlowFixMe[incompatible-return]
163
164
  return new _definition.GraphQLList(replaceType(type.ofType));
164
- } else if ((0, _definition.isNonNullType)(type)) {
165
+ }
166
+
167
+ if ((0, _definition.isNonNullType)(type)) {
168
+ // $FlowFixMe[incompatible-return]
165
169
  return new _definition.GraphQLNonNull(replaceType(type.ofType));
166
170
  }
167
171
 
@@ -313,6 +317,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
313
317
  function extendField(field) {
314
318
  return _objectSpread(_objectSpread({}, field), {}, {
315
319
  type: replaceType(field.type),
320
+ // $FlowFixMe[incompatible-call]
316
321
  args: (0, _mapValue.default)(field.args, extendArg)
317
322
  });
318
323
  }
@@ -428,6 +433,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
428
433
  type: type,
429
434
  description: getDescription(arg, options),
430
435
  defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),
436
+ deprecationReason: getDeprecationReason(arg),
431
437
  astNode: arg
432
438
  };
433
439
  }
@@ -455,6 +461,7 @@ function extendSchemaImpl(schemaConfig, documentAST, options) {
455
461
  type: type,
456
462
  description: getDescription(field, options),
457
463
  defaultValue: (0, _valueFromAST.valueFromAST)(field.defaultValue, type),
464
+ deprecationReason: getDeprecationReason(field),
458
465
  astNode: field
459
466
  };
460
467
  }
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import objectValues from '../polyfills/objectValues';
4
3
 
5
4
  import keyMap from '../jsutils/keyMap';
@@ -54,10 +53,12 @@ import type {
54
53
  import type {
55
54
  GraphQLType,
56
55
  GraphQLNamedType,
56
+ GraphQLFieldConfig,
57
57
  GraphQLFieldConfigMap,
58
+ GraphQLArgumentConfig,
59
+ GraphQLFieldConfigArgumentMap,
58
60
  GraphQLEnumValueConfigMap,
59
61
  GraphQLInputFieldConfigMap,
60
- GraphQLFieldConfigArgumentMap,
61
62
  } from '../type/definition';
62
63
  import { assertSchema, GraphQLSchema } from '../type/schema';
63
64
  import { specifiedScalarTypes, isSpecifiedScalarType } from '../type/scalars';
@@ -239,10 +240,13 @@ export function extendSchemaImpl(
239
240
  // Below are functions used for producing this schema that have closed over
240
241
  // this scope and have access to the schema, cache, and newly defined types.
241
242
 
242
- function replaceType(type) {
243
+ function replaceType<T: GraphQLType>(type: T): T {
243
244
  if (isListType(type)) {
245
+ // $FlowFixMe[incompatible-return]
244
246
  return new GraphQLList(replaceType(type.ofType));
245
- } else if (isNonNullType(type)) {
247
+ }
248
+ if (isNonNullType(type)) {
249
+ // $FlowFixMe[incompatible-return]
246
250
  return new GraphQLNonNull(replaceType(type.ofType));
247
251
  }
248
252
  return replaceNamedType(type);
@@ -393,15 +397,18 @@ export function extendSchemaImpl(
393
397
  });
394
398
  }
395
399
 
396
- function extendField(field) {
400
+ function extendField(
401
+ field: GraphQLFieldConfig<mixed, mixed>,
402
+ ): GraphQLFieldConfig<mixed, mixed> {
397
403
  return {
398
404
  ...field,
399
405
  type: replaceType(field.type),
406
+ // $FlowFixMe[incompatible-call]
400
407
  args: mapValue(field.args, extendArg),
401
408
  };
402
409
  }
403
410
 
404
- function extendArg(arg) {
411
+ function extendArg(arg: GraphQLArgumentConfig) {
405
412
  return {
406
413
  ...arg,
407
414
  type: replaceType(arg.type),
@@ -512,6 +519,7 @@ export function extendSchemaImpl(
512
519
  type,
513
520
  description: getDescription(arg, options),
514
521
  defaultValue: valueFromAST(arg.defaultValue, type),
522
+ deprecationReason: getDeprecationReason(arg),
515
523
  astNode: arg,
516
524
  };
517
525
  }
@@ -538,6 +546,7 @@ export function extendSchemaImpl(
538
546
  type,
539
547
  description: getDescription(field, options),
540
548
  defaultValue: valueFromAST(field.defaultValue, type),
549
+ deprecationReason: getDeprecationReason(field),
541
550
  astNode: field,
542
551
  };
543
552
  }
@@ -706,7 +715,10 @@ const stdTypeMap = keyMap(
706
715
  * deprecation reason.
707
716
  */
708
717
  function getDeprecationReason(
709
- node: EnumValueDefinitionNode | FieldDefinitionNode,
718
+ node:
719
+ | EnumValueDefinitionNode
720
+ | FieldDefinitionNode
721
+ | InputValueDefinitionNode,
710
722
  ): ?string {
711
723
  const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node);
712
724
  return (deprecated?.reason: any);
@@ -131,8 +131,12 @@ export function extendSchemaImpl(schemaConfig, documentAST, options) {
131
131
 
132
132
  function replaceType(type) {
133
133
  if (isListType(type)) {
134
+ // $FlowFixMe[incompatible-return]
134
135
  return new GraphQLList(replaceType(type.ofType));
135
- } else if (isNonNullType(type)) {
136
+ }
137
+
138
+ if (isNonNullType(type)) {
139
+ // $FlowFixMe[incompatible-return]
136
140
  return new GraphQLNonNull(replaceType(type.ofType));
137
141
  }
138
142
 
@@ -284,6 +288,7 @@ export function extendSchemaImpl(schemaConfig, documentAST, options) {
284
288
  function extendField(field) {
285
289
  return _objectSpread(_objectSpread({}, field), {}, {
286
290
  type: replaceType(field.type),
291
+ // $FlowFixMe[incompatible-call]
287
292
  args: mapValue(field.args, extendArg)
288
293
  });
289
294
  }
@@ -399,6 +404,7 @@ export function extendSchemaImpl(schemaConfig, documentAST, options) {
399
404
  type: type,
400
405
  description: getDescription(arg, options),
401
406
  defaultValue: valueFromAST(arg.defaultValue, type),
407
+ deprecationReason: getDeprecationReason(arg),
402
408
  astNode: arg
403
409
  };
404
410
  }
@@ -426,6 +432,7 @@ export function extendSchemaImpl(schemaConfig, documentAST, options) {
426
432
  type: type,
427
433
  description: getDescription(field, options),
428
434
  defaultValue: valueFromAST(field.defaultValue, type),
435
+ deprecationReason: getDeprecationReason(field),
429
436
  astNode: field
430
437
  };
431
438
  }
@@ -7,23 +7,25 @@ exports.findBreakingChanges = findBreakingChanges;
7
7
  exports.findDangerousChanges = findDangerousChanges;
8
8
  exports.DangerousChangeType = exports.BreakingChangeType = void 0;
9
9
 
10
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
11
11
 
12
- var _keyMap = _interopRequireDefault(require("../jsutils/keyMap"));
12
+ var _keyMap = _interopRequireDefault(require("../jsutils/keyMap.js"));
13
13
 
14
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
14
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
15
15
 
16
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
16
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
17
17
 
18
- var _printer = require("../language/printer");
18
+ var _naturalCompare = _interopRequireDefault(require("../jsutils/naturalCompare.js"));
19
19
 
20
- var _visitor = require("../language/visitor");
20
+ var _printer = require("../language/printer.js");
21
21
 
22
- var _scalars = require("../type/scalars");
22
+ var _visitor = require("../language/visitor.js");
23
23
 
24
- var _definition = require("../type/definition");
24
+ var _scalars = require("../type/scalars.js");
25
25
 
26
- var _astFromValue = require("./astFromValue");
26
+ var _definition = require("../type/definition.js");
27
+
28
+ var _astFromValue = require("./astFromValue.js");
27
29
 
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
31
 
@@ -467,8 +469,10 @@ function stringifyValue(value, type) {
467
469
  ast != null || (0, _invariant.default)(0);
468
470
  var sortedAST = (0, _visitor.visit)(ast, {
469
471
  ObjectValue: function ObjectValue(objectNode) {
470
- var fields = [].concat(objectNode.fields).sort(function (fieldA, fieldB) {
471
- return fieldA.name.value.localeCompare(fieldB.name.value);
472
+ // Make a copy since sort mutates array
473
+ var fields = [].concat(objectNode.fields);
474
+ fields.sort(function (fieldA, fieldB) {
475
+ return (0, _naturalCompare.default)(fieldA.name.value, fieldB.name.value);
472
476
  });
473
477
  return _objectSpread(_objectSpread({}, objectNode), {}, {
474
478
  fields: fields