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,10 +1,10 @@
1
1
  // @flow strict
2
-
3
2
  import objectValues from '../polyfills/objectValues';
4
3
 
5
4
  import keyMap from '../jsutils/keyMap';
6
5
  import inspect from '../jsutils/inspect';
7
6
  import invariant from '../jsutils/invariant';
7
+ import naturalCompare from '../jsutils/naturalCompare';
8
8
 
9
9
  import { print } from '../language/printer';
10
10
  import { visit } from '../language/visitor';
@@ -543,8 +543,11 @@ function stringifyValue(value: mixed, type: GraphQLInputType): string {
543
543
 
544
544
  const sortedAST = visit(ast, {
545
545
  ObjectValue(objectNode) {
546
- const fields = [...objectNode.fields].sort((fieldA, fieldB) =>
547
- fieldA.name.value.localeCompare(fieldB.name.value),
546
+ // Make a copy since sort mutates array
547
+ const fields = [...objectNode.fields];
548
+
549
+ fields.sort((fieldA, fieldB) =>
550
+ naturalCompare(fieldA.name.value, fieldB.name.value),
548
551
  );
549
552
  return { ...objectNode, fields };
550
553
  },
@@ -8,6 +8,7 @@ import objectValues from "../polyfills/objectValues.mjs";
8
8
  import keyMap from "../jsutils/keyMap.mjs";
9
9
  import inspect from "../jsutils/inspect.mjs";
10
10
  import invariant from "../jsutils/invariant.mjs";
11
+ import naturalCompare from "../jsutils/naturalCompare.mjs";
11
12
  import { print } from "../language/printer.mjs";
12
13
  import { visit } from "../language/visitor.mjs";
13
14
  import { isSpecifiedScalarType } from "../type/scalars.mjs";
@@ -444,8 +445,10 @@ function stringifyValue(value, type) {
444
445
  ast != null || invariant(0);
445
446
  var sortedAST = visit(ast, {
446
447
  ObjectValue: function ObjectValue(objectNode) {
447
- var fields = [].concat(objectNode.fields).sort(function (fieldA, fieldB) {
448
- return fieldA.name.value.localeCompare(fieldB.name.value);
448
+ // Make a copy since sort mutates array
449
+ var fields = [].concat(objectNode.fields);
450
+ fields.sort(function (fieldA, fieldB) {
451
+ return naturalCompare(fieldA.name.value, fieldB.name.value);
449
452
  });
450
453
  return _objectSpread(_objectSpread({}, objectNode), {}, {
451
454
  fields: fields
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.findDeprecatedUsages = findDeprecatedUsages;
7
7
 
8
- var _validate = require("../validation/validate");
8
+ var _validate = require("../validation/validate.js");
9
9
 
10
- var _NoDeprecatedCustomRule = require("../validation/rules/custom/NoDeprecatedCustomRule");
10
+ var _NoDeprecatedCustomRule = require("../validation/rules/custom/NoDeprecatedCustomRule.js");
11
11
 
12
12
  /**
13
13
  * A validation rule which reports deprecated usages.
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { GraphQLError } from '../error/GraphQLError';
4
3
 
5
4
  import type { DocumentNode } from '../language/ast';
@@ -18,6 +18,10 @@ export interface IntrospectionOptions {
18
18
  // Whether to include `description` field on schema.
19
19
  // Default: false
20
20
  schemaDescription?: boolean;
21
+
22
+ // Whether target GraphQL server support deprecation of input values.
23
+ // Default: false
24
+ inputValueDeprecation?: boolean;
21
25
  }
22
26
 
23
27
  export function getIntrospectionQuery(options?: IntrospectionOptions): string;
@@ -169,6 +173,8 @@ export interface IntrospectionInputValue {
169
173
  readonly description?: Maybe<string>;
170
174
  readonly type: IntrospectionInputTypeRef;
171
175
  readonly defaultValue?: Maybe<string>;
176
+ readonly isDeprecated?: boolean;
177
+ readonly deprecationReason?: Maybe<string>;
172
178
  }
173
179
 
174
180
  export interface IntrospectionEnumValue {
@@ -16,12 +16,18 @@ function getIntrospectionQuery(options) {
16
16
  descriptions: true,
17
17
  specifiedByUrl: false,
18
18
  directiveIsRepeatable: false,
19
- schemaDescription: false
19
+ schemaDescription: false,
20
+ inputValueDeprecation: false
20
21
  }, options);
21
22
 
22
23
  var descriptions = optionsWithDefault.descriptions ? 'description' : '';
23
24
  var specifiedByUrl = optionsWithDefault.specifiedByUrl ? 'specifiedByUrl' : '';
24
25
  var directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : '';
25
26
  var schemaDescription = optionsWithDefault.schemaDescription ? descriptions : '';
26
- return "\n query IntrospectionQuery {\n __schema {\n ".concat(schemaDescription, "\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ").concat(descriptions, "\n ").concat(directiveIsRepeatable, "\n locations\n args {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ").concat(descriptions, "\n ").concat(specifiedByUrl, "\n fields(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n args {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ").concat(descriptions, "\n type { ...TypeRef }\n defaultValue\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n ");
27
+
28
+ function inputDeprecation(str) {
29
+ return optionsWithDefault.inputValueDeprecation ? str : '';
30
+ }
31
+
32
+ return "\n query IntrospectionQuery {\n __schema {\n ".concat(schemaDescription, "\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ").concat(descriptions, "\n ").concat(directiveIsRepeatable, "\n locations\n args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ").concat(descriptions, "\n ").concat(specifiedByUrl, "\n fields(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ").concat(descriptions, "\n type { ...TypeRef }\n defaultValue\n ").concat(inputDeprecation('isDeprecated'), "\n ").concat(inputDeprecation('deprecationReason'), "\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n ");
27
33
  }
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { DirectiveLocationEnum } from '../language/directiveLocation';
4
3
 
5
4
  export type IntrospectionOptions = {|
@@ -18,6 +17,10 @@ export type IntrospectionOptions = {|
18
17
  // Whether to include `description` field on schema.
19
18
  // Default: false
20
19
  schemaDescription?: boolean,
20
+
21
+ // Whether target GraphQL server support deprecation of input values.
22
+ // Default: false
23
+ inputValueDeprecation?: boolean,
21
24
  |};
22
25
 
23
26
  export function getIntrospectionQuery(options?: IntrospectionOptions): string {
@@ -26,6 +29,7 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
26
29
  specifiedByUrl: false,
27
30
  directiveIsRepeatable: false,
28
31
  schemaDescription: false,
32
+ inputValueDeprecation: false,
29
33
  ...options,
30
34
  };
31
35
 
@@ -40,6 +44,10 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
40
44
  ? descriptions
41
45
  : '';
42
46
 
47
+ function inputDeprecation(str) {
48
+ return optionsWithDefault.inputValueDeprecation ? str : '';
49
+ }
50
+
43
51
  return `
44
52
  query IntrospectionQuery {
45
53
  __schema {
@@ -55,7 +63,7 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
55
63
  ${descriptions}
56
64
  ${directiveIsRepeatable}
57
65
  locations
58
- args {
66
+ args${inputDeprecation('(includeDeprecated: true)')} {
59
67
  ...InputValue
60
68
  }
61
69
  }
@@ -70,7 +78,7 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
70
78
  fields(includeDeprecated: true) {
71
79
  name
72
80
  ${descriptions}
73
- args {
81
+ args${inputDeprecation('(includeDeprecated: true)')} {
74
82
  ...InputValue
75
83
  }
76
84
  type {
@@ -79,7 +87,7 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
79
87
  isDeprecated
80
88
  deprecationReason
81
89
  }
82
- inputFields {
90
+ inputFields${inputDeprecation('(includeDeprecated: true)')} {
83
91
  ...InputValue
84
92
  }
85
93
  interfaces {
@@ -101,6 +109,8 @@ export function getIntrospectionQuery(options?: IntrospectionOptions): string {
101
109
  ${descriptions}
102
110
  type { ...TypeRef }
103
111
  defaultValue
112
+ ${inputDeprecation('isDeprecated')}
113
+ ${inputDeprecation('deprecationReason')}
104
114
  }
105
115
 
106
116
  fragment TypeRef on __Type {
@@ -175,7 +185,7 @@ export type IntrospectionScalarType = {|
175
185
  +kind: 'SCALAR',
176
186
  +name: string,
177
187
  +description?: ?string,
178
- +specifiedByUrl: ?string,
188
+ +specifiedByUrl?: ?string,
179
189
  |};
180
190
 
181
191
  export type IntrospectionObjectType = {|
@@ -282,6 +292,8 @@ export type IntrospectionInputValue = {|
282
292
  +description?: ?string,
283
293
  +type: IntrospectionInputTypeRef,
284
294
  +defaultValue: ?string,
295
+ +isDeprecated?: boolean,
296
+ +deprecationReason?: ?string,
285
297
  |};
286
298
 
287
299
  export type IntrospectionEnumValue = {|
@@ -9,12 +9,18 @@ export function getIntrospectionQuery(options) {
9
9
  descriptions: true,
10
10
  specifiedByUrl: false,
11
11
  directiveIsRepeatable: false,
12
- schemaDescription: false
12
+ schemaDescription: false,
13
+ inputValueDeprecation: false
13
14
  }, options);
14
15
 
15
16
  var descriptions = optionsWithDefault.descriptions ? 'description' : '';
16
17
  var specifiedByUrl = optionsWithDefault.specifiedByUrl ? 'specifiedByUrl' : '';
17
18
  var directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable ? 'isRepeatable' : '';
18
19
  var schemaDescription = optionsWithDefault.schemaDescription ? descriptions : '';
19
- return "\n query IntrospectionQuery {\n __schema {\n ".concat(schemaDescription, "\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ").concat(descriptions, "\n ").concat(directiveIsRepeatable, "\n locations\n args {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ").concat(descriptions, "\n ").concat(specifiedByUrl, "\n fields(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n args {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ").concat(descriptions, "\n type { ...TypeRef }\n defaultValue\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n ");
20
+
21
+ function inputDeprecation(str) {
22
+ return optionsWithDefault.inputValueDeprecation ? str : '';
23
+ }
24
+
25
+ return "\n query IntrospectionQuery {\n __schema {\n ".concat(schemaDescription, "\n queryType { name }\n mutationType { name }\n subscriptionType { name }\n types {\n ...FullType\n }\n directives {\n name\n ").concat(descriptions, "\n ").concat(directiveIsRepeatable, "\n locations\n args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n }\n }\n }\n\n fragment FullType on __Type {\n kind\n name\n ").concat(descriptions, "\n ").concat(specifiedByUrl, "\n fields(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n args").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n type {\n ...TypeRef\n }\n isDeprecated\n deprecationReason\n }\n inputFields").concat(inputDeprecation('(includeDeprecated: true)'), " {\n ...InputValue\n }\n interfaces {\n ...TypeRef\n }\n enumValues(includeDeprecated: true) {\n name\n ").concat(descriptions, "\n isDeprecated\n deprecationReason\n }\n possibleTypes {\n ...TypeRef\n }\n }\n\n fragment InputValue on __InputValue {\n name\n ").concat(descriptions, "\n type { ...TypeRef }\n defaultValue\n ").concat(inputDeprecation('isDeprecated'), "\n ").concat(inputDeprecation('deprecationReason'), "\n }\n\n fragment TypeRef on __Type {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n ofType {\n kind\n name\n }\n }\n }\n }\n }\n }\n }\n }\n ");
20
26
  }
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getOperationAST = getOperationAST;
7
7
 
8
- var _kinds = require("../language/kinds");
8
+ var _kinds = require("../language/kinds.js");
9
9
 
10
10
  /**
11
11
  * Returns an operation AST given a document AST and optionally an operation
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { DocumentNode, OperationDefinitionNode } from '../language/ast';
4
3
  import { Kind } from '../language/kinds';
5
4
 
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getOperationRootType = getOperationRootType;
7
7
 
8
- var _GraphQLError = require("../error/GraphQLError");
8
+ var _GraphQLError = require("../error/GraphQLError.js");
9
9
 
10
10
  /**
11
11
  * Extracts the root type of the operation from the schema.
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import { GraphQLError } from '../error/GraphQLError';
4
3
 
5
4
  import type {
@@ -112,5 +112,8 @@ export {
112
112
  DangerousChange,
113
113
  } from './findBreakingChanges';
114
114
 
115
+ // Wrapper type that contains DocumentNode and types that can be deduced from it.
116
+ export { TypedQueryDocumentNode } from './typedQueryDocumentNode';
117
+
115
118
  // @deprecated: Report all deprecated usage within a GraphQL document.
116
119
  export { findDeprecatedUsages } from './findDeprecatedUsages';
@@ -202,46 +202,46 @@ Object.defineProperty(exports, "findDeprecatedUsages", {
202
202
  }
203
203
  });
204
204
 
205
- var _getIntrospectionQuery = require("./getIntrospectionQuery");
205
+ var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
206
206
 
207
- var _getOperationAST = require("./getOperationAST");
207
+ var _getOperationAST = require("./getOperationAST.js");
208
208
 
209
- var _getOperationRootType = require("./getOperationRootType");
209
+ var _getOperationRootType = require("./getOperationRootType.js");
210
210
 
211
- var _introspectionFromSchema = require("./introspectionFromSchema");
211
+ var _introspectionFromSchema = require("./introspectionFromSchema.js");
212
212
 
213
- var _buildClientSchema = require("./buildClientSchema");
213
+ var _buildClientSchema = require("./buildClientSchema.js");
214
214
 
215
- var _buildASTSchema = require("./buildASTSchema");
215
+ var _buildASTSchema = require("./buildASTSchema.js");
216
216
 
217
- var _extendSchema = require("./extendSchema");
217
+ var _extendSchema = require("./extendSchema.js");
218
218
 
219
- var _lexicographicSortSchema = require("./lexicographicSortSchema");
219
+ var _lexicographicSortSchema = require("./lexicographicSortSchema.js");
220
220
 
221
- var _printSchema = require("./printSchema");
221
+ var _printSchema = require("./printSchema.js");
222
222
 
223
- var _typeFromAST = require("./typeFromAST");
223
+ var _typeFromAST = require("./typeFromAST.js");
224
224
 
225
- var _valueFromAST = require("./valueFromAST");
225
+ var _valueFromAST = require("./valueFromAST.js");
226
226
 
227
- var _valueFromASTUntyped = require("./valueFromASTUntyped");
227
+ var _valueFromASTUntyped = require("./valueFromASTUntyped.js");
228
228
 
229
- var _astFromValue = require("./astFromValue");
229
+ var _astFromValue = require("./astFromValue.js");
230
230
 
231
- var _TypeInfo = require("./TypeInfo");
231
+ var _TypeInfo = require("./TypeInfo.js");
232
232
 
233
- var _coerceInputValue = require("./coerceInputValue");
233
+ var _coerceInputValue = require("./coerceInputValue.js");
234
234
 
235
- var _concatAST = require("./concatAST");
235
+ var _concatAST = require("./concatAST.js");
236
236
 
237
- var _separateOperations = require("./separateOperations");
237
+ var _separateOperations = require("./separateOperations.js");
238
238
 
239
- var _stripIgnoredCharacters = require("./stripIgnoredCharacters");
239
+ var _stripIgnoredCharacters = require("./stripIgnoredCharacters.js");
240
240
 
241
- var _typeComparators = require("./typeComparators");
241
+ var _typeComparators = require("./typeComparators.js");
242
242
 
243
- var _assertValidName = require("./assertValidName");
243
+ var _assertValidName = require("./assertValidName.js");
244
244
 
245
- var _findBreakingChanges = require("./findBreakingChanges");
245
+ var _findBreakingChanges = require("./findBreakingChanges.js");
246
246
 
247
- var _findDeprecatedUsages = require("./findDeprecatedUsages");
247
+ var _findDeprecatedUsages = require("./findDeprecatedUsages.js");
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  // Produce the GraphQL query recommended for a full schema introspection.
4
3
  // Accepts optional IntrospectionOptions.
5
4
  export { getIntrospectionQuery } from './getIntrospectionQuery';
@@ -5,13 +5,13 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.introspectionFromSchema = introspectionFromSchema;
7
7
 
8
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
8
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
9
9
 
10
- var _parser = require("../language/parser");
10
+ var _parser = require("../language/parser.js");
11
11
 
12
- var _execute = require("../execution/execute");
12
+ var _execute = require("../execution/execute.js");
13
13
 
14
- var _getIntrospectionQuery = require("./getIntrospectionQuery");
14
+ var _getIntrospectionQuery = require("./getIntrospectionQuery.js");
15
15
 
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
 
@@ -32,8 +32,10 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
32
32
  */
33
33
  function introspectionFromSchema(schema, options) {
34
34
  var optionsWithDefaults = _objectSpread({
35
+ specifiedByUrl: true,
35
36
  directiveIsRepeatable: true,
36
- schemaDescription: true
37
+ schemaDescription: true,
38
+ inputValueDeprecation: true
37
39
  }, options);
38
40
 
39
41
  var document = (0, _parser.parse)((0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults));
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import invariant from '../jsutils/invariant';
4
3
 
5
4
  import { parse } from '../language/parser';
@@ -28,8 +27,10 @@ export function introspectionFromSchema(
28
27
  options?: IntrospectionOptions,
29
28
  ): IntrospectionQuery {
30
29
  const optionsWithDefaults = {
30
+ specifiedByUrl: true,
31
31
  directiveIsRepeatable: true,
32
32
  schemaDescription: true,
33
+ inputValueDeprecation: true,
33
34
  ...options,
34
35
  };
35
36
 
@@ -20,8 +20,10 @@ import { getIntrospectionQuery } from "./getIntrospectionQuery.mjs";
20
20
 
21
21
  export function introspectionFromSchema(schema, options) {
22
22
  var optionsWithDefaults = _objectSpread({
23
+ specifiedByUrl: true,
23
24
  directiveIsRepeatable: true,
24
- schemaDescription: true
25
+ schemaDescription: true,
26
+ inputValueDeprecation: true
25
27
  }, options);
26
28
 
27
29
  var document = parse(getIntrospectionQuery(optionsWithDefaults));
@@ -5,21 +5,23 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.lexicographicSortSchema = lexicographicSortSchema;
7
7
 
8
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
8
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
9
9
 
10
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
10
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
11
11
 
12
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
12
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
13
13
 
14
- var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap"));
14
+ var _keyValMap = _interopRequireDefault(require("../jsutils/keyValMap.js"));
15
15
 
16
- var _schema = require("../type/schema");
16
+ var _naturalCompare = _interopRequireDefault(require("../jsutils/naturalCompare.js"));
17
17
 
18
- var _directives = require("../type/directives");
18
+ var _schema = require("../type/schema.js");
19
19
 
20
- var _introspection = require("../type/introspection");
20
+ var _directives = require("../type/directives.js");
21
21
 
22
- var _definition = require("../type/definition");
22
+ var _introspection = require("../type/introspection.js");
23
+
24
+ var _definition = require("../type/definition.js");
23
25
 
24
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
27
 
@@ -49,8 +51,10 @@ function lexicographicSortSchema(schema) {
49
51
 
50
52
  function replaceType(type) {
51
53
  if ((0, _definition.isListType)(type)) {
54
+ // $FlowFixMe[incompatible-return]
52
55
  return new _definition.GraphQLList(replaceType(type.ofType));
53
56
  } else if ((0, _definition.isNonNullType)(type)) {
57
+ // $FlowFixMe[incompatible-return]
54
58
  return new _definition.GraphQLNonNull(replaceType(type.ofType));
55
59
  }
56
60
 
@@ -193,6 +197,6 @@ function sortBy(array, mapToKey) {
193
197
  return array.slice().sort(function (obj1, obj2) {
194
198
  var key1 = mapToKey(obj1);
195
199
  var key2 = mapToKey(obj2);
196
- return key1.localeCompare(key2);
200
+ return (0, _naturalCompare.default)(key1, key2);
197
201
  });
198
202
  }
@@ -1,24 +1,30 @@
1
1
  // @flow strict
2
-
3
2
  import objectValues from '../polyfills/objectValues';
4
3
 
5
4
  import type { ObjMap } from '../jsutils/ObjMap';
6
5
  import inspect from '../jsutils/inspect';
7
6
  import invariant from '../jsutils/invariant';
8
7
  import keyValMap from '../jsutils/keyValMap';
9
-
10
- import type { GraphQLNamedType } from '../type/definition';
8
+ import naturalCompare from '../jsutils/naturalCompare';
9
+
10
+ import type {
11
+ GraphQLType,
12
+ GraphQLNamedType,
13
+ GraphQLFieldConfigMap,
14
+ GraphQLFieldConfigArgumentMap,
15
+ GraphQLInputFieldConfigMap,
16
+ } from '../type/definition';
11
17
  import { GraphQLSchema } from '../type/schema';
12
18
  import { GraphQLDirective } from '../type/directives';
13
19
  import { isIntrospectionType } from '../type/introspection';
14
20
  import {
21
+ GraphQLList,
22
+ GraphQLNonNull,
15
23
  GraphQLObjectType,
16
24
  GraphQLInterfaceType,
17
25
  GraphQLUnionType,
18
26
  GraphQLEnumType,
19
27
  GraphQLInputObjectType,
20
- GraphQLList,
21
- GraphQLNonNull,
22
28
  isListType,
23
29
  isNonNullType,
24
30
  isScalarType,
@@ -51,10 +57,12 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
51
57
  subscription: replaceMaybeType(schemaConfig.subscription),
52
58
  });
53
59
 
54
- function replaceType(type) {
60
+ function replaceType<T: GraphQLType>(type: T): T {
55
61
  if (isListType(type)) {
62
+ // $FlowFixMe[incompatible-return]
56
63
  return new GraphQLList(replaceType(type.ofType));
57
64
  } else if (isNonNullType(type)) {
65
+ // $FlowFixMe[incompatible-return]
58
66
  return new GraphQLNonNull(replaceType(type.ofType));
59
67
  }
60
68
  return replaceNamedType(type);
@@ -64,11 +72,11 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
64
72
  return ((typeMap[type.name]: any): T);
65
73
  }
66
74
 
67
- function replaceMaybeType(maybeType) {
75
+ function replaceMaybeType<T: ?GraphQLNamedType>(maybeType: T): T {
68
76
  return maybeType && replaceNamedType(maybeType);
69
77
  }
70
78
 
71
- function sortDirective(directive) {
79
+ function sortDirective(directive: GraphQLDirective) {
72
80
  const config = directive.toConfig();
73
81
  return new GraphQLDirective({
74
82
  ...config,
@@ -77,14 +85,14 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
77
85
  });
78
86
  }
79
87
 
80
- function sortArgs(args) {
88
+ function sortArgs(args: GraphQLFieldConfigArgumentMap) {
81
89
  return sortObjMap(args, (arg) => ({
82
90
  ...arg,
83
91
  type: replaceType(arg.type),
84
92
  }));
85
93
  }
86
94
 
87
- function sortFields(fieldsMap) {
95
+ function sortFields(fieldsMap: GraphQLFieldConfigMap<mixed, mixed>) {
88
96
  return sortObjMap(fieldsMap, (field) => ({
89
97
  ...field,
90
98
  type: replaceType(field.type),
@@ -92,7 +100,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
92
100
  }));
93
101
  }
94
102
 
95
- function sortInputFields(fieldsMap) {
103
+ function sortInputFields(fieldsMap: GraphQLInputFieldConfigMap) {
96
104
  return sortObjMap(fieldsMap, (field) => ({
97
105
  ...field,
98
106
  type: replaceType(field.type),
@@ -103,7 +111,7 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema {
103
111
  return sortByName(arr).map(replaceNamedType);
104
112
  }
105
113
 
106
- function sortNamedType(type) {
114
+ function sortNamedType(type: GraphQLNamedType): GraphQLNamedType {
107
115
  if (isScalarType(type) || isIntrospectionType(type)) {
108
116
  return type;
109
117
  }
@@ -174,6 +182,6 @@ function sortBy<T>(
174
182
  return array.slice().sort((obj1, obj2) => {
175
183
  const key1 = mapToKey(obj1);
176
184
  const key2 = mapToKey(obj2);
177
- return key1.localeCompare(key2);
185
+ return naturalCompare(key1, key2);
178
186
  });
179
187
  }
@@ -8,10 +8,11 @@ import objectValues from "../polyfills/objectValues.mjs";
8
8
  import inspect from "../jsutils/inspect.mjs";
9
9
  import invariant from "../jsutils/invariant.mjs";
10
10
  import keyValMap from "../jsutils/keyValMap.mjs";
11
+ import naturalCompare from "../jsutils/naturalCompare.mjs";
11
12
  import { GraphQLSchema } from "../type/schema.mjs";
12
13
  import { GraphQLDirective } from "../type/directives.mjs";
13
14
  import { isIntrospectionType } from "../type/introspection.mjs";
14
- import { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
15
+ import { GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from "../type/definition.mjs";
15
16
  /**
16
17
  * Sort GraphQLSchema.
17
18
  *
@@ -33,8 +34,10 @@ export function lexicographicSortSchema(schema) {
33
34
 
34
35
  function replaceType(type) {
35
36
  if (isListType(type)) {
37
+ // $FlowFixMe[incompatible-return]
36
38
  return new GraphQLList(replaceType(type.ofType));
37
39
  } else if (isNonNullType(type)) {
40
+ // $FlowFixMe[incompatible-return]
38
41
  return new GraphQLNonNull(replaceType(type.ofType));
39
42
  }
40
43
 
@@ -177,6 +180,6 @@ function sortBy(array, mapToKey) {
177
180
  return array.slice().sort(function (obj1, obj2) {
178
181
  var key1 = mapToKey(obj1);
179
182
  var key2 = mapToKey(obj2);
180
- return key1.localeCompare(key2);
183
+ return naturalCompare(key1, key2);
181
184
  });
182
185
  }