graphql 15.3.0 → 15.5.1

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 (337) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -0
  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 +0 -15
  17. package/execution/execute.js +104 -104
  18. package/execution/execute.js.flow +119 -133
  19. package/execution/execute.mjs +86 -82
  20. package/execution/index.js +3 -3
  21. package/execution/index.js.flow +0 -1
  22. package/execution/values.js +11 -11
  23. package/execution/values.js.flow +0 -1
  24. package/graphql.js +5 -5
  25. package/graphql.js.flow +0 -1
  26. package/index.d.ts +1 -0
  27. package/index.js +9 -9
  28. package/index.js.flow +0 -1
  29. package/jsutils/ObjMap.js.flow +0 -1
  30. package/jsutils/Path.js.flow +0 -1
  31. package/jsutils/PromiseOrValue.js.flow +0 -1
  32. package/jsutils/defineInspect.js +2 -2
  33. package/jsutils/defineInspect.js.flow +0 -1
  34. package/jsutils/devAssert.js.flow +0 -1
  35. package/jsutils/didYouMean.js.flow +0 -1
  36. package/jsutils/identityFunc.js.flow +0 -1
  37. package/jsutils/inspect.js +1 -2
  38. package/jsutils/inspect.js.flow +10 -8
  39. package/jsutils/inspect.mjs +1 -1
  40. package/jsutils/instanceOf.js +15 -9
  41. package/jsutils/instanceOf.js.flow +13 -7
  42. package/jsutils/instanceOf.mjs +13 -5
  43. package/jsutils/invariant.js.flow +0 -1
  44. package/jsutils/isAsyncIterable.js +13 -0
  45. package/jsutils/isAsyncIterable.js.flow +14 -0
  46. package/jsutils/isAsyncIterable.mjs +10 -0
  47. package/jsutils/isObjectLike.js.flow +0 -1
  48. package/jsutils/isPromise.js.flow +0 -1
  49. package/jsutils/keyMap.js.flow +0 -1
  50. package/jsutils/keyValMap.js.flow +0 -1
  51. package/jsutils/mapValue.js +1 -1
  52. package/jsutils/mapValue.js.flow +0 -1
  53. package/jsutils/memoize3.js +2 -5
  54. package/jsutils/memoize3.js.flow +2 -5
  55. package/jsutils/memoize3.mjs +2 -5
  56. package/jsutils/naturalCompare.js +69 -0
  57. package/jsutils/naturalCompare.js.flow +59 -0
  58. package/jsutils/naturalCompare.mjs +61 -0
  59. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  60. package/jsutils/printPathArray.js.flow +0 -1
  61. package/jsutils/promiseForObject.js.flow +0 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.js.flow +0 -1
  64. package/jsutils/safeArrayFrom.js +73 -0
  65. package/jsutils/safeArrayFrom.js.flow +59 -0
  66. package/jsutils/safeArrayFrom.mjs +66 -0
  67. package/jsutils/suggestionList.js +5 -1
  68. package/jsutils/suggestionList.js.flow +3 -2
  69. package/jsutils/suggestionList.mjs +3 -1
  70. package/jsutils/toObjMap.js +1 -1
  71. package/jsutils/toObjMap.js.flow +0 -1
  72. package/language/ast.js +1 -1
  73. package/language/ast.js.flow +0 -1
  74. package/language/blockString.d.ts +1 -1
  75. package/language/blockString.js +53 -32
  76. package/language/blockString.js.flow +51 -36
  77. package/language/blockString.mjs +54 -33
  78. package/language/directiveLocation.js.flow +0 -1
  79. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  80. package/language/experimentalOnlineParser/grammar.js +987 -0
  81. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  82. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  83. package/language/experimentalOnlineParser/index.d.ts +6 -0
  84. package/language/experimentalOnlineParser/index.js +31 -0
  85. package/language/experimentalOnlineParser/index.js.flow +7 -0
  86. package/language/experimentalOnlineParser/index.mjs +1 -0
  87. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  88. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  89. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  90. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  91. package/language/index.js +12 -12
  92. package/language/index.js.flow +0 -1
  93. package/language/kinds.js.flow +0 -1
  94. package/language/lexer.js +242 -183
  95. package/language/lexer.js.flow +188 -184
  96. package/language/lexer.mjs +238 -179
  97. package/language/location.js.flow +0 -1
  98. package/language/parser.js +73 -68
  99. package/language/parser.js.flow +62 -57
  100. package/language/parser.mjs +64 -60
  101. package/language/predicates.js +1 -1
  102. package/language/predicates.js.flow +0 -1
  103. package/language/printLocation.js +1 -1
  104. package/language/printLocation.js.flow +0 -1
  105. package/language/printer.js +20 -13
  106. package/language/printer.js.flow +26 -25
  107. package/language/printer.mjs +18 -11
  108. package/language/source.d.ts +7 -0
  109. package/language/source.js +20 -3
  110. package/language/source.js.flow +21 -3
  111. package/language/source.mjs +14 -1
  112. package/language/tokenKind.js.flow +0 -1
  113. package/language/visitor.js +2 -2
  114. package/language/visitor.js.flow +0 -1
  115. package/package.json +2 -3
  116. package/polyfills/arrayFrom.js +2 -2
  117. package/polyfills/arrayFrom.js.flow +1 -2
  118. package/polyfills/arrayFrom.mjs +1 -1
  119. package/polyfills/find.js +1 -1
  120. package/polyfills/find.js.flow +1 -2
  121. package/polyfills/find.mjs +1 -1
  122. package/polyfills/isFinite.js +1 -1
  123. package/polyfills/isFinite.js.flow +1 -2
  124. package/polyfills/isFinite.mjs +1 -1
  125. package/polyfills/isInteger.js +1 -1
  126. package/polyfills/isInteger.js.flow +1 -2
  127. package/polyfills/isInteger.mjs +1 -1
  128. package/polyfills/objectEntries.js +1 -1
  129. package/polyfills/objectEntries.js.flow +1 -2
  130. package/polyfills/objectEntries.mjs +1 -1
  131. package/polyfills/objectValues.js +1 -1
  132. package/polyfills/objectValues.js.flow +1 -2
  133. package/polyfills/objectValues.mjs +1 -1
  134. package/polyfills/symbols.js +3 -5
  135. package/polyfills/symbols.js.flow +9 -6
  136. package/polyfills/symbols.mjs +3 -5
  137. package/subscription/index.js +1 -1
  138. package/subscription/index.js.flow +0 -1
  139. package/subscription/mapAsyncIterator.js +2 -2
  140. package/subscription/mapAsyncIterator.js.flow +8 -9
  141. package/subscription/mapAsyncIterator.mjs +1 -1
  142. package/subscription/subscribe.js +61 -73
  143. package/subscription/subscribe.js.flow +71 -85
  144. package/subscription/subscribe.mjs +53 -65
  145. package/type/definition.d.ts +16 -6
  146. package/type/definition.js +37 -32
  147. package/type/definition.js.flow +93 -63
  148. package/type/definition.mjs +19 -14
  149. package/type/directives.js +17 -16
  150. package/type/directives.js.flow +20 -13
  151. package/type/directives.mjs +6 -5
  152. package/type/index.js +6 -6
  153. package/type/index.js.flow +0 -1
  154. package/type/introspection.js +86 -65
  155. package/type/introspection.js.flow +75 -43
  156. package/type/introspection.mjs +79 -58
  157. package/type/scalars.js +9 -9
  158. package/type/scalars.js.flow +1 -2
  159. package/type/scalars.mjs +1 -1
  160. package/type/schema.js +13 -13
  161. package/type/schema.js.flow +2 -3
  162. package/type/schema.mjs +1 -1
  163. package/type/validate.js +52 -19
  164. package/type/validate.js.flow +54 -8
  165. package/type/validate.mjs +43 -9
  166. package/utilities/TypeInfo.js +7 -7
  167. package/utilities/TypeInfo.js.flow +1 -2
  168. package/utilities/assertValidName.js +2 -2
  169. package/utilities/assertValidName.js.flow +0 -1
  170. package/utilities/astFromValue.js +14 -16
  171. package/utilities/astFromValue.js.flow +6 -7
  172. package/utilities/astFromValue.mjs +6 -7
  173. package/utilities/buildASTSchema.js +17 -27
  174. package/utilities/buildASTSchema.js.flow +5 -21
  175. package/utilities/buildASTSchema.mjs +11 -21
  176. package/utilities/buildClientSchema.js +16 -15
  177. package/utilities/buildClientSchema.js.flow +28 -12
  178. package/utilities/buildClientSchema.mjs +5 -4
  179. package/utilities/coerceInputValue.js +17 -18
  180. package/utilities/coerceInputValue.js.flow +12 -10
  181. package/utilities/coerceInputValue.mjs +7 -7
  182. package/utilities/concatAST.js +9 -8
  183. package/utilities/concatAST.js.flow +8 -8
  184. package/utilities/concatAST.mjs +9 -6
  185. package/utilities/extendSchema.js +26 -19
  186. package/utilities/extendSchema.js.flow +19 -7
  187. package/utilities/extendSchema.mjs +8 -1
  188. package/utilities/findBreakingChanges.js +15 -11
  189. package/utilities/findBreakingChanges.js.flow +6 -3
  190. package/utilities/findBreakingChanges.mjs +5 -2
  191. package/utilities/findDeprecatedUsages.js +2 -2
  192. package/utilities/findDeprecatedUsages.js.flow +0 -1
  193. package/utilities/getIntrospectionQuery.d.ts +6 -0
  194. package/utilities/getIntrospectionQuery.js +8 -2
  195. package/utilities/getIntrospectionQuery.js.flow +17 -5
  196. package/utilities/getIntrospectionQuery.mjs +8 -2
  197. package/utilities/getOperationAST.js +1 -1
  198. package/utilities/getOperationAST.js.flow +0 -1
  199. package/utilities/getOperationRootType.js +1 -1
  200. package/utilities/getOperationRootType.js.flow +0 -1
  201. package/utilities/index.d.ts +3 -0
  202. package/utilities/index.js +22 -22
  203. package/utilities/index.js.flow +0 -1
  204. package/utilities/introspectionFromSchema.js +7 -5
  205. package/utilities/introspectionFromSchema.js.flow +2 -1
  206. package/utilities/introspectionFromSchema.mjs +3 -1
  207. package/utilities/lexicographicSortSchema.js +13 -9
  208. package/utilities/lexicographicSortSchema.js.flow +21 -13
  209. package/utilities/lexicographicSortSchema.mjs +5 -2
  210. package/utilities/printSchema.js +15 -16
  211. package/utilities/printSchema.js.flow +23 -16
  212. package/utilities/printSchema.mjs +5 -6
  213. package/utilities/separateOperations.js +46 -42
  214. package/utilities/separateOperations.js.flow +46 -37
  215. package/utilities/separateOperations.mjs +44 -40
  216. package/utilities/stripIgnoredCharacters.js +6 -16
  217. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  218. package/utilities/stripIgnoredCharacters.mjs +3 -10
  219. package/utilities/typeComparators.js +1 -1
  220. package/utilities/typeComparators.js.flow +0 -1
  221. package/utilities/typeFromAST.js +6 -6
  222. package/utilities/typeFromAST.js.flow +2 -3
  223. package/utilities/typeFromAST.mjs +2 -2
  224. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  225. package/utilities/valueFromAST.js +6 -6
  226. package/utilities/valueFromAST.js.flow +4 -2
  227. package/utilities/valueFromASTUntyped.js +4 -4
  228. package/utilities/valueFromASTUntyped.js.flow +0 -1
  229. package/validation/ValidationContext.js +3 -3
  230. package/validation/ValidationContext.js.flow +3 -4
  231. package/validation/index.js +38 -38
  232. package/validation/index.js.flow +0 -1
  233. package/validation/rules/ExecutableDefinitions.js +1 -1
  234. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  235. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  236. package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
  237. package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
  238. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
  239. package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
  240. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  241. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
  242. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  243. package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
  244. package/validation/rules/KnownDirectivesRule.js +6 -6
  245. package/validation/rules/KnownDirectivesRule.js.flow +4 -3
  246. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  247. package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
  248. package/validation/rules/KnownTypeNamesRule.js +6 -6
  249. package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
  250. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  251. package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
  252. package/validation/rules/LoneSchemaDefinition.js +1 -1
  253. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  254. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  255. package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
  256. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  257. package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
  258. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  259. package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
  260. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  261. package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
  262. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  263. package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
  264. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  265. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
  266. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  267. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  268. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
  269. package/validation/rules/PossibleTypeExtensions.js +1 -1
  270. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  271. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  272. package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
  273. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  274. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
  275. package/validation/rules/ScalarLeafsRule.js +3 -3
  276. package/validation/rules/ScalarLeafsRule.js.flow +0 -1
  277. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  278. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
  279. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  280. package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
  281. package/validation/rules/UniqueDirectiveNames.js +1 -1
  282. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  283. package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
  284. package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
  285. package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
  286. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  287. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
  288. package/validation/rules/UniqueEnumValueNames.js +1 -1
  289. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  290. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  291. package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
  292. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  293. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  294. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  295. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
  296. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  297. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  298. package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
  299. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  300. package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
  301. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  302. package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
  303. package/validation/rules/UniqueOperationTypes.js +1 -1
  304. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  305. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  306. package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
  307. package/validation/rules/UniqueTypeNames.js +1 -1
  308. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  309. package/validation/rules/UniqueTypeNamesRule.js +2 -2
  310. package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
  311. package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
  312. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  313. package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
  314. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  315. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
  316. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  317. package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
  318. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  319. package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
  320. package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
  321. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
  322. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
  323. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
  324. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
  325. package/validation/specifiedRules.js +33 -33
  326. package/validation/specifiedRules.js.flow +0 -1
  327. package/validation/validate.js +7 -7
  328. package/validation/validate.js.flow +4 -5
  329. package/version.js +3 -3
  330. package/version.js.flow +3 -4
  331. package/version.mjs +3 -3
  332. package/jsutils/isCollection.js +0 -47
  333. package/jsutils/isCollection.js.flow +0 -39
  334. package/jsutils/isCollection.mjs +0 -40
  335. package/polyfills/flatMap.js +0 -30
  336. package/polyfills/flatMap.js.flow +0 -28
  337. package/polyfills/flatMap.mjs +0 -23
@@ -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
  }
@@ -7,25 +7,25 @@ exports.printSchema = printSchema;
7
7
  exports.printIntrospectionSchema = printIntrospectionSchema;
8
8
  exports.printType = printType;
9
9
 
10
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues.js"));
11
11
 
12
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
12
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
13
13
 
14
- var _invariant = _interopRequireDefault(require("../jsutils/invariant"));
14
+ var _invariant = _interopRequireDefault(require("../jsutils/invariant.js"));
15
15
 
16
- var _printer = require("../language/printer");
16
+ var _printer = require("../language/printer.js");
17
17
 
18
- var _blockString = require("../language/blockString");
18
+ var _blockString = require("../language/blockString.js");
19
19
 
20
- var _introspection = require("../type/introspection");
20
+ var _introspection = require("../type/introspection.js");
21
21
 
22
- var _scalars = require("../type/scalars");
22
+ var _scalars = require("../type/scalars.js");
23
23
 
24
- var _directives = require("../type/directives");
24
+ var _directives = require("../type/directives.js");
25
25
 
26
- var _definition = require("../type/definition");
26
+ var _definition = require("../type/definition.js");
27
27
 
28
- var _astFromValue = require("./astFromValue");
28
+ var _astFromValue = require("./astFromValue.js");
29
29
 
30
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
31
 
@@ -179,7 +179,7 @@ function printUnion(type, options) {
179
179
 
180
180
  function printEnum(type, options) {
181
181
  var values = type.getValues().map(function (value, i) {
182
- return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);
182
+ return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value.deprecationReason);
183
183
  });
184
184
  return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
185
185
  }
@@ -193,7 +193,7 @@ function printInputObject(type, options) {
193
193
 
194
194
  function printFields(options, type) {
195
195
  var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
196
- return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);
196
+ return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);
197
197
  });
198
198
  return printBlock(fields);
199
199
  }
@@ -229,19 +229,18 @@ function printInputValue(arg) {
229
229
  argDecl += " = ".concat((0, _printer.print)(defaultAST));
230
230
  }
231
231
 
232
- return argDecl;
232
+ return argDecl + printDeprecated(arg.deprecationReason);
233
233
  }
234
234
 
235
235
  function printDirective(directive, options) {
236
236
  return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');
237
237
  }
238
238
 
239
- function printDeprecated(fieldOrEnumVal) {
240
- if (!fieldOrEnumVal.isDeprecated) {
239
+ function printDeprecated(reason) {
240
+ if (reason == null) {
241
241
  return '';
242
242
  }
243
243
 
244
- var reason = fieldOrEnumVal.deprecationReason;
245
244
  var reasonAST = (0, _astFromValue.astFromValue)(reason, _scalars.GraphQLString);
246
245
 
247
246
  if (reasonAST && reason !== _directives.DEFAULT_DEPRECATION_REASON) {
@@ -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';
@@ -12,6 +11,8 @@ import type { GraphQLSchema } from '../type/schema';
12
11
  import type { GraphQLDirective } from '../type/directives';
13
12
  import type {
14
13
  GraphQLNamedType,
14
+ GraphQLArgument,
15
+ GraphQLInputField,
15
16
  GraphQLScalarType,
16
17
  GraphQLEnumType,
17
18
  GraphQLObjectType,
@@ -232,7 +233,7 @@ function printEnum(type: GraphQLEnumType, options): string {
232
233
  printDescription(options, value, ' ', !i) +
233
234
  ' ' +
234
235
  value.name +
235
- printDeprecated(value),
236
+ printDeprecated(value.deprecationReason),
236
237
  );
237
238
 
238
239
  return (
@@ -250,7 +251,10 @@ function printInputObject(type: GraphQLInputObjectType, options): string {
250
251
  );
251
252
  }
252
253
 
253
- function printFields(options, type) {
254
+ function printFields(
255
+ options,
256
+ type: GraphQLObjectType | GraphQLInterfaceType,
257
+ ): string {
254
258
  const fields = objectValues(type.getFields()).map(
255
259
  (f, i) =>
256
260
  printDescription(options, f, ' ', !i) +
@@ -259,16 +263,20 @@ function printFields(options, type) {
259
263
  printArgs(options, f.args, ' ') +
260
264
  ': ' +
261
265
  String(f.type) +
262
- printDeprecated(f),
266
+ printDeprecated(f.deprecationReason),
263
267
  );
264
268
  return printBlock(fields);
265
269
  }
266
270
 
267
- function printBlock(items) {
271
+ function printBlock(items: $ReadOnlyArray<string>): string {
268
272
  return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
269
273
  }
270
274
 
271
- function printArgs(options, args, indentation = '') {
275
+ function printArgs(
276
+ options,
277
+ args: Array<GraphQLArgument>,
278
+ indentation: string = '',
279
+ ): string {
272
280
  if (args.length === 0) {
273
281
  return '';
274
282
  }
@@ -295,16 +303,16 @@ function printArgs(options, args, indentation = '') {
295
303
  );
296
304
  }
297
305
 
298
- function printInputValue(arg) {
306
+ function printInputValue(arg: GraphQLInputField): string {
299
307
  const defaultAST = astFromValue(arg.defaultValue, arg.type);
300
308
  let argDecl = arg.name + ': ' + String(arg.type);
301
309
  if (defaultAST) {
302
310
  argDecl += ` = ${print(defaultAST)}`;
303
311
  }
304
- return argDecl;
312
+ return argDecl + printDeprecated(arg.deprecationReason);
305
313
  }
306
314
 
307
- function printDirective(directive, options) {
315
+ function printDirective(directive: GraphQLDirective, options): string {
308
316
  return (
309
317
  printDescription(options, directive) +
310
318
  'directive @' +
@@ -316,11 +324,10 @@ function printDirective(directive, options) {
316
324
  );
317
325
  }
318
326
 
319
- function printDeprecated(fieldOrEnumVal) {
320
- if (!fieldOrEnumVal.isDeprecated) {
327
+ function printDeprecated(reason: ?string): string {
328
+ if (reason == null) {
321
329
  return '';
322
330
  }
323
- const reason = fieldOrEnumVal.deprecationReason;
324
331
  const reasonAST = astFromValue(reason, GraphQLString);
325
332
  if (reasonAST && reason !== DEFAULT_DEPRECATION_REASON) {
326
333
  return ' @deprecated(reason: ' + print(reasonAST) + ')';
@@ -328,7 +335,7 @@ function printDeprecated(fieldOrEnumVal) {
328
335
  return ' @deprecated';
329
336
  }
330
337
 
331
- function printSpecifiedByUrl(scalar: GraphQLScalarType) {
338
+ function printSpecifiedByUrl(scalar: GraphQLScalarType): string {
332
339
  if (scalar.specifiedByUrl == null) {
333
340
  return '';
334
341
  }
@@ -343,9 +350,9 @@ function printSpecifiedByUrl(scalar: GraphQLScalarType) {
343
350
 
344
351
  function printDescription(
345
352
  options,
346
- def,
347
- indentation = '',
348
- firstInBlock = true,
353
+ def: { +description: ?string, ... },
354
+ indentation: string = '',
355
+ firstInBlock: boolean = true,
349
356
  ): string {
350
357
  const { description } = def;
351
358
  if (description == null) {
@@ -158,7 +158,7 @@ function printUnion(type, options) {
158
158
 
159
159
  function printEnum(type, options) {
160
160
  var values = type.getValues().map(function (value, i) {
161
- return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);
161
+ return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value.deprecationReason);
162
162
  });
163
163
  return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
164
164
  }
@@ -172,7 +172,7 @@ function printInputObject(type, options) {
172
172
 
173
173
  function printFields(options, type) {
174
174
  var fields = objectValues(type.getFields()).map(function (f, i) {
175
- return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);
175
+ return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f.deprecationReason);
176
176
  });
177
177
  return printBlock(fields);
178
178
  }
@@ -208,19 +208,18 @@ function printInputValue(arg) {
208
208
  argDecl += " = ".concat(print(defaultAST));
209
209
  }
210
210
 
211
- return argDecl;
211
+ return argDecl + printDeprecated(arg.deprecationReason);
212
212
  }
213
213
 
214
214
  function printDirective(directive, options) {
215
215
  return printDescription(options, directive) + 'directive @' + directive.name + printArgs(options, directive.args) + (directive.isRepeatable ? ' repeatable' : '') + ' on ' + directive.locations.join(' | ');
216
216
  }
217
217
 
218
- function printDeprecated(fieldOrEnumVal) {
219
- if (!fieldOrEnumVal.isDeprecated) {
218
+ function printDeprecated(reason) {
219
+ if (reason == null) {
220
220
  return '';
221
221
  }
222
222
 
223
- var reason = fieldOrEnumVal.deprecationReason;
224
223
  var reasonAST = astFromValue(reason, GraphQLString);
225
224
 
226
225
  if (reasonAST && reason !== DEFAULT_DEPRECATION_REASON) {
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.separateOperations = separateOperations;
7
7
 
8
- var _kinds = require("../language/kinds");
8
+ var _kinds = require("../language/kinds.js");
9
9
 
10
- var _visitor = require("../language/visitor");
10
+ var _visitor = require("../language/visitor.js");
11
11
 
12
12
  /**
13
13
  * separateOperations accepts a single AST document which may contain many
@@ -17,72 +17,76 @@ var _visitor = require("../language/visitor");
17
17
  */
18
18
  function separateOperations(documentAST) {
19
19
  var operations = [];
20
- var depGraph = Object.create(null);
21
- var fromName; // Populate metadata and build a dependency graph.
22
-
23
- (0, _visitor.visit)(documentAST, {
24
- OperationDefinition: function OperationDefinition(node) {
25
- fromName = opName(node);
26
- operations.push(node);
27
- },
28
- FragmentDefinition: function FragmentDefinition(node) {
29
- fromName = node.name.value;
30
- },
31
- FragmentSpread: function FragmentSpread(node) {
32
- var toName = node.name.value;
33
- var dependents = depGraph[fromName];
20
+ var depGraph = Object.create(null); // Populate metadata and build a dependency graph.
34
21
 
35
- if (dependents === undefined) {
36
- dependents = depGraph[fromName] = Object.create(null);
37
- }
22
+ for (var _i2 = 0, _documentAST$definiti2 = documentAST.definitions; _i2 < _documentAST$definiti2.length; _i2++) {
23
+ var definitionNode = _documentAST$definiti2[_i2];
38
24
 
39
- dependents[toName] = true;
25
+ switch (definitionNode.kind) {
26
+ case _kinds.Kind.OPERATION_DEFINITION:
27
+ operations.push(definitionNode);
28
+ break;
29
+
30
+ case _kinds.Kind.FRAGMENT_DEFINITION:
31
+ depGraph[definitionNode.name.value] = collectDependencies(definitionNode.selectionSet);
32
+ break;
40
33
  }
41
- }); // For each operation, produce a new synthesized AST which includes only what
34
+ } // For each operation, produce a new synthesized AST which includes only what
42
35
  // is necessary for completing that operation.
43
36
 
37
+
44
38
  var separatedDocumentASTs = Object.create(null);
45
39
 
46
- var _loop = function _loop(_i2) {
47
- var operation = operations[_i2];
48
- var operationName = opName(operation);
49
- var dependencies = Object.create(null);
50
- collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted
40
+ var _loop = function _loop(_i4) {
41
+ var operation = operations[_i4];
42
+ var dependencies = new Set();
43
+
44
+ for (var _i6 = 0, _collectDependencies2 = collectDependencies(operation.selectionSet); _i6 < _collectDependencies2.length; _i6++) {
45
+ var fragmentName = _collectDependencies2[_i6];
46
+ collectTransitiveDependencies(dependencies, depGraph, fragmentName);
47
+ } // Provides the empty string for anonymous operations.
48
+
49
+
50
+ var operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted
51
51
  // to retain the same order as the original document.
52
52
 
53
53
  separatedDocumentASTs[operationName] = {
54
54
  kind: _kinds.Kind.DOCUMENT,
55
55
  definitions: documentAST.definitions.filter(function (node) {
56
- return node === operation || node.kind === _kinds.Kind.FRAGMENT_DEFINITION && dependencies[node.name.value];
56
+ return node === operation || node.kind === _kinds.Kind.FRAGMENT_DEFINITION && dependencies.has(node.name.value);
57
57
  })
58
58
  };
59
59
  };
60
60
 
61
- for (var _i2 = 0; _i2 < operations.length; _i2++) {
62
- _loop(_i2);
61
+ for (var _i4 = 0; _i4 < operations.length; _i4++) {
62
+ _loop(_i4);
63
63
  }
64
64
 
65
65
  return separatedDocumentASTs;
66
66
  }
67
67
 
68
- // Provides the empty string for anonymous operations.
69
- function opName(operation) {
70
- return operation.name ? operation.name.value : '';
71
- } // From a dependency graph, collects a list of transitive dependencies by
68
+ // From a dependency graph, collects a list of transitive dependencies by
72
69
  // recursing through a dependency graph.
73
-
74
-
75
70
  function collectTransitiveDependencies(collected, depGraph, fromName) {
76
- var immediateDeps = depGraph[fromName];
71
+ if (!collected.has(fromName)) {
72
+ collected.add(fromName);
73
+ var immediateDeps = depGraph[fromName];
77
74
 
78
- if (immediateDeps) {
79
- for (var _i4 = 0, _Object$keys2 = Object.keys(immediateDeps); _i4 < _Object$keys2.length; _i4++) {
80
- var toName = _Object$keys2[_i4];
81
-
82
- if (!collected[toName]) {
83
- collected[toName] = true;
75
+ if (immediateDeps !== undefined) {
76
+ for (var _i8 = 0; _i8 < immediateDeps.length; _i8++) {
77
+ var toName = immediateDeps[_i8];
84
78
  collectTransitiveDependencies(collected, depGraph, toName);
85
79
  }
86
80
  }
87
81
  }
88
82
  }
83
+
84
+ function collectDependencies(selectionSet) {
85
+ var dependencies = [];
86
+ (0, _visitor.visit)(selectionSet, {
87
+ FragmentSpread: function FragmentSpread(node) {
88
+ dependencies.push(node.name.value);
89
+ }
90
+ });
91
+ return dependencies;
92
+ }