graphql 14.1.1 → 14.3.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 (377) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1 -1
  3. package/error/GraphQLError.js +12 -10
  4. package/error/GraphQLError.js.flow +11 -6
  5. package/error/GraphQLError.mjs +20 -3
  6. package/error/formatError.js +2 -2
  7. package/error/formatError.js.flow +3 -3
  8. package/error/formatError.mjs +2 -2
  9. package/error/index.js +1 -1
  10. package/error/index.js.flow +5 -2
  11. package/error/index.mjs +2 -2
  12. package/error/locatedError.js +2 -2
  13. package/error/locatedError.js.flow +2 -2
  14. package/error/locatedError.mjs +2 -2
  15. package/error/printError.js +2 -2
  16. package/error/printError.js.flow +4 -5
  17. package/error/printError.mjs +2 -2
  18. package/error/syntaxError.js +2 -2
  19. package/error/syntaxError.js.flow +2 -2
  20. package/error/syntaxError.mjs +2 -2
  21. package/execution/execute.js +52 -37
  22. package/execution/execute.js.flow +66 -51
  23. package/execution/execute.mjs +50 -38
  24. package/execution/index.js +7 -1
  25. package/execution/index.js.flow +9 -4
  26. package/execution/index.mjs +3 -3
  27. package/execution/values.js +11 -11
  28. package/execution/values.js.flow +23 -19
  29. package/execution/values.mjs +11 -11
  30. package/graphql.js +13 -9
  31. package/graphql.js.flow +28 -10
  32. package/graphql.mjs +10 -9
  33. package/index.js +83 -53
  34. package/index.js.flow +60 -47
  35. package/index.mjs +26 -23
  36. package/jsutils/ObjMap.js +1 -1
  37. package/jsutils/ObjMap.js.flow +1 -1
  38. package/jsutils/ObjMap.mjs +1 -0
  39. package/jsutils/PromiseOrValue.js +1 -0
  40. package/jsutils/{MaybePromise.js.flow → PromiseOrValue.js.flow} +2 -2
  41. package/jsutils/PromiseOrValue.mjs +1 -0
  42. package/jsutils/dedent.js +2 -2
  43. package/jsutils/dedent.js.flow +1 -1
  44. package/jsutils/dedent.mjs +2 -2
  45. package/jsutils/defineToJSON.js +2 -2
  46. package/jsutils/defineToJSON.js.flow +1 -1
  47. package/jsutils/defineToJSON.mjs +2 -2
  48. package/jsutils/defineToStringTag.js +2 -2
  49. package/jsutils/defineToStringTag.js.flow +1 -1
  50. package/jsutils/defineToStringTag.mjs +2 -2
  51. package/jsutils/inspect.js +94 -19
  52. package/jsutils/inspect.js.flow +98 -20
  53. package/jsutils/inspect.mjs +94 -20
  54. package/jsutils/instanceOf.js +2 -2
  55. package/jsutils/instanceOf.js.flow +1 -1
  56. package/jsutils/instanceOf.mjs +2 -2
  57. package/jsutils/invariant.js +5 -3
  58. package/jsutils/invariant.js.flow +3 -2
  59. package/jsutils/invariant.mjs +5 -3
  60. package/jsutils/isInvalid.js +2 -2
  61. package/jsutils/isInvalid.js.flow +1 -1
  62. package/jsutils/isInvalid.mjs +2 -2
  63. package/jsutils/isNullish.js +2 -2
  64. package/jsutils/isNullish.js.flow +1 -1
  65. package/jsutils/isNullish.mjs +2 -2
  66. package/jsutils/isPromise.js +2 -2
  67. package/jsutils/isPromise.js.flow +1 -1
  68. package/jsutils/isPromise.mjs +2 -2
  69. package/jsutils/keyMap.js +4 -3
  70. package/jsutils/keyMap.js.flow +6 -6
  71. package/jsutils/keyMap.mjs +4 -3
  72. package/jsutils/keyValMap.js +4 -3
  73. package/jsutils/keyValMap.js.flow +6 -6
  74. package/jsutils/keyValMap.mjs +4 -3
  75. package/jsutils/mapValue.js +2 -2
  76. package/jsutils/mapValue.js.flow +2 -2
  77. package/jsutils/mapValue.mjs +2 -2
  78. package/jsutils/memoize3.js +3 -3
  79. package/jsutils/memoize3.js.flow +2 -2
  80. package/jsutils/memoize3.mjs +3 -3
  81. package/jsutils/nodejsCustomInspectSymbol.js +2 -2
  82. package/jsutils/nodejsCustomInspectSymbol.js.flow +1 -1
  83. package/jsutils/nodejsCustomInspectSymbol.mjs +2 -2
  84. package/jsutils/orList.js +2 -2
  85. package/jsutils/orList.js.flow +1 -1
  86. package/jsutils/orList.mjs +2 -2
  87. package/jsutils/promiseForObject.js +2 -2
  88. package/jsutils/promiseForObject.js.flow +2 -2
  89. package/jsutils/promiseForObject.mjs +2 -2
  90. package/jsutils/promiseReduce.js +2 -2
  91. package/jsutils/promiseReduce.js.flow +5 -5
  92. package/jsutils/promiseReduce.mjs +2 -2
  93. package/jsutils/quotedOrList.js +2 -2
  94. package/jsutils/quotedOrList.js.flow +1 -1
  95. package/jsutils/quotedOrList.mjs +2 -2
  96. package/jsutils/suggestionList.js +2 -2
  97. package/jsutils/suggestionList.js.flow +1 -1
  98. package/jsutils/suggestionList.mjs +2 -2
  99. package/language/ast.js +1 -1
  100. package/language/ast.js.flow +3 -3
  101. package/language/ast.mjs +1 -0
  102. package/language/blockString.js +114 -0
  103. package/language/blockString.js.flow +102 -0
  104. package/language/blockString.mjs +104 -0
  105. package/language/directiveLocation.js +2 -2
  106. package/language/directiveLocation.js.flow +1 -1
  107. package/language/directiveLocation.mjs +2 -2
  108. package/language/index.js +9 -9
  109. package/language/index.js.flow +10 -5
  110. package/language/index.mjs +3 -3
  111. package/language/kinds.js +2 -2
  112. package/language/kinds.js.flow +1 -1
  113. package/language/kinds.mjs +2 -2
  114. package/language/lexer.js +52 -44
  115. package/language/lexer.js.flow +65 -54
  116. package/language/lexer.mjs +49 -43
  117. package/language/location.js +2 -2
  118. package/language/location.js.flow +2 -2
  119. package/language/location.mjs +2 -2
  120. package/language/parser.js +75 -67
  121. package/language/parser.js.flow +138 -127
  122. package/language/parser.mjs +76 -68
  123. package/language/predicates.js +2 -2
  124. package/language/predicates.js.flow +2 -2
  125. package/language/predicates.mjs +2 -2
  126. package/language/printer.js +6 -14
  127. package/language/printer.js.flow +8 -17
  128. package/language/printer.mjs +5 -14
  129. package/language/source.js +2 -2
  130. package/language/source.js.flow +1 -1
  131. package/language/source.mjs +2 -2
  132. package/language/visitor.js +4 -6
  133. package/language/visitor.js.flow +3 -3
  134. package/language/visitor.mjs +4 -6
  135. package/package.json +1 -1
  136. package/polyfills/find.js +2 -2
  137. package/polyfills/find.js.flow +1 -1
  138. package/polyfills/find.mjs +2 -2
  139. package/polyfills/flatMap.js +38 -0
  140. package/polyfills/flatMap.js.flow +34 -0
  141. package/polyfills/flatMap.mjs +30 -0
  142. package/polyfills/isFinite.js +2 -2
  143. package/polyfills/isFinite.js.flow +1 -1
  144. package/polyfills/isFinite.mjs +2 -2
  145. package/polyfills/isInteger.js +2 -2
  146. package/polyfills/isInteger.js.flow +1 -1
  147. package/polyfills/isInteger.mjs +2 -2
  148. package/polyfills/objectEntries.js +2 -2
  149. package/polyfills/objectEntries.js.flow +2 -2
  150. package/polyfills/objectEntries.mjs +2 -2
  151. package/polyfills/objectValues.js +2 -2
  152. package/polyfills/objectValues.js.flow +2 -2
  153. package/polyfills/objectValues.mjs +2 -2
  154. package/subscription/asyncIteratorReject.js +1 -1
  155. package/subscription/asyncIteratorReject.js.flow +1 -1
  156. package/subscription/asyncIteratorReject.mjs +2 -2
  157. package/subscription/index.js +1 -1
  158. package/subscription/index.js.flow +1 -1
  159. package/subscription/index.mjs +2 -2
  160. package/subscription/mapAsyncIterator.js +1 -1
  161. package/subscription/mapAsyncIterator.js.flow +5 -5
  162. package/subscription/mapAsyncIterator.mjs +2 -2
  163. package/subscription/subscribe.js +2 -2
  164. package/subscription/subscribe.js.flow +6 -6
  165. package/subscription/subscribe.mjs +2 -2
  166. package/type/definition.js +138 -22
  167. package/type/definition.js.flow +184 -36
  168. package/type/definition.mjs +136 -23
  169. package/type/directives.js +14 -3
  170. package/type/directives.js.flow +24 -11
  171. package/type/directives.mjs +16 -5
  172. package/type/index.js +7 -7
  173. package/type/index.js.flow +8 -4
  174. package/type/index.mjs +10 -6
  175. package/type/introspection.js +14 -9
  176. package/type/introspection.js.flow +12 -18
  177. package/type/introspection.mjs +14 -9
  178. package/type/scalars.js +5 -4
  179. package/type/scalars.js.flow +4 -10
  180. package/type/scalars.mjs +7 -6
  181. package/type/schema.js +55 -3
  182. package/type/schema.js.flow +73 -17
  183. package/type/schema.mjs +56 -4
  184. package/type/validate.js +19 -47
  185. package/type/validate.js.flow +17 -29
  186. package/type/validate.mjs +18 -47
  187. package/utilities/TypeInfo.js +93 -73
  188. package/utilities/TypeInfo.js.flow +30 -23
  189. package/utilities/TypeInfo.mjs +93 -73
  190. package/utilities/assertValidName.js +2 -2
  191. package/utilities/assertValidName.js.flow +2 -2
  192. package/utilities/assertValidName.mjs +2 -2
  193. package/utilities/astFromValue.js +5 -4
  194. package/utilities/astFromValue.js.flow +8 -7
  195. package/utilities/astFromValue.mjs +7 -6
  196. package/utilities/buildASTSchema.js +63 -62
  197. package/utilities/buildASTSchema.js.flow +92 -108
  198. package/utilities/buildASTSchema.mjs +61 -62
  199. package/utilities/buildClientSchema.js +38 -45
  200. package/utilities/buildClientSchema.js.flow +66 -79
  201. package/utilities/buildClientSchema.mjs +37 -44
  202. package/utilities/coerceValue.js +6 -7
  203. package/utilities/coerceValue.js.flow +5 -4
  204. package/utilities/coerceValue.mjs +7 -8
  205. package/utilities/concatAST.js +9 -13
  206. package/utilities/concatAST.js.flow +4 -10
  207. package/utilities/concatAST.mjs +6 -13
  208. package/utilities/extendSchema.js +219 -511
  209. package/utilities/extendSchema.js.flow +195 -304
  210. package/utilities/extendSchema.mjs +218 -512
  211. package/utilities/findBreakingChanges.js +54 -95
  212. package/utilities/findBreakingChanges.js.flow +49 -47
  213. package/utilities/findBreakingChanges.mjs +80 -95
  214. package/utilities/findDeprecatedUsages.js +4 -4
  215. package/utilities/findDeprecatedUsages.js.flow +5 -5
  216. package/utilities/findDeprecatedUsages.mjs +4 -4
  217. package/utilities/getOperationAST.js +2 -2
  218. package/utilities/getOperationAST.js.flow +5 -2
  219. package/utilities/getOperationAST.mjs +2 -2
  220. package/utilities/getOperationRootType.js +24 -24
  221. package/utilities/getOperationRootType.js.flow +40 -35
  222. package/utilities/getOperationRootType.mjs +24 -24
  223. package/utilities/index.js +9 -1
  224. package/utilities/index.js.flow +13 -6
  225. package/utilities/index.mjs +13 -8
  226. package/utilities/introspectionFromSchema.js +6 -4
  227. package/utilities/introspectionFromSchema.js.flow +8 -7
  228. package/utilities/introspectionFromSchema.mjs +6 -5
  229. package/utilities/introspectionQuery.js +2 -2
  230. package/utilities/introspectionQuery.js.flow +2 -2
  231. package/utilities/introspectionQuery.mjs +2 -2
  232. package/utilities/isValidJSValue.js +4 -2
  233. package/utilities/isValidJSValue.js.flow +3 -2
  234. package/utilities/isValidJSValue.mjs +4 -2
  235. package/utilities/isValidLiteralValue.js +2 -2
  236. package/utilities/isValidLiteralValue.js.flow +4 -4
  237. package/utilities/isValidLiteralValue.mjs +2 -2
  238. package/utilities/lexicographicSortSchema.js +84 -123
  239. package/utilities/lexicographicSortSchema.js.flow +68 -96
  240. package/utilities/lexicographicSortSchema.mjs +84 -123
  241. package/utilities/schemaPrinter.js +47 -73
  242. package/utilities/schemaPrinter.js.flow +69 -120
  243. package/utilities/schemaPrinter.mjs +45 -72
  244. package/utilities/separateOperations.js +8 -12
  245. package/utilities/separateOperations.js.flow +6 -3
  246. package/utilities/separateOperations.mjs +8 -12
  247. package/utilities/stripIgnoredCharacters.js +140 -0
  248. package/utilities/stripIgnoredCharacters.js.flow +129 -0
  249. package/utilities/stripIgnoredCharacters.mjs +127 -0
  250. package/utilities/typeComparators.js +2 -2
  251. package/utilities/typeComparators.js.flow +4 -3
  252. package/utilities/typeComparators.mjs +2 -2
  253. package/utilities/typeFromAST.js +9 -4
  254. package/utilities/typeFromAST.js.flow +15 -9
  255. package/utilities/typeFromAST.mjs +6 -4
  256. package/utilities/valueFromAST.js +7 -4
  257. package/utilities/valueFromAST.js.flow +7 -5
  258. package/utilities/valueFromAST.mjs +6 -4
  259. package/utilities/valueFromASTUntyped.js +11 -6
  260. package/utilities/valueFromASTUntyped.js.flow +9 -5
  261. package/utilities/valueFromASTUntyped.mjs +10 -6
  262. package/validation/ValidationContext.js +1 -1
  263. package/validation/ValidationContext.js.flow +19 -20
  264. package/validation/ValidationContext.mjs +2 -2
  265. package/validation/index.js +1 -1
  266. package/validation/index.js.flow +2 -1
  267. package/validation/index.mjs +3 -2
  268. package/validation/rules/ExecutableDefinitions.js +3 -3
  269. package/validation/rules/ExecutableDefinitions.js.flow +4 -4
  270. package/validation/rules/ExecutableDefinitions.mjs +3 -3
  271. package/validation/rules/FieldsOnCorrectType.js +3 -3
  272. package/validation/rules/FieldsOnCorrectType.js.flow +7 -7
  273. package/validation/rules/FieldsOnCorrectType.mjs +3 -3
  274. package/validation/rules/FragmentsOnCompositeTypes.js +4 -4
  275. package/validation/rules/FragmentsOnCompositeTypes.js.flow +5 -5
  276. package/validation/rules/FragmentsOnCompositeTypes.mjs +4 -4
  277. package/validation/rules/KnownArgumentNames.js +1 -1
  278. package/validation/rules/KnownArgumentNames.js.flow +5 -5
  279. package/validation/rules/KnownArgumentNames.mjs +2 -2
  280. package/validation/rules/KnownDirectives.js +8 -6
  281. package/validation/rules/KnownDirectives.js.flow +11 -9
  282. package/validation/rules/KnownDirectives.mjs +8 -6
  283. package/validation/rules/KnownFragmentNames.js +3 -3
  284. package/validation/rules/KnownFragmentNames.js.flow +4 -4
  285. package/validation/rules/KnownFragmentNames.mjs +3 -3
  286. package/validation/rules/KnownTypeNames.js +2 -2
  287. package/validation/rules/KnownTypeNames.js.flow +6 -6
  288. package/validation/rules/KnownTypeNames.mjs +2 -2
  289. package/validation/rules/LoneAnonymousOperation.js +3 -3
  290. package/validation/rules/LoneAnonymousOperation.js.flow +4 -4
  291. package/validation/rules/LoneAnonymousOperation.mjs +3 -3
  292. package/validation/rules/LoneSchemaDefinition.js +2 -2
  293. package/validation/rules/LoneSchemaDefinition.js.flow +3 -3
  294. package/validation/rules/LoneSchemaDefinition.mjs +2 -2
  295. package/validation/rules/NoFragmentCycles.js +2 -2
  296. package/validation/rules/NoFragmentCycles.js.flow +4 -4
  297. package/validation/rules/NoFragmentCycles.mjs +2 -2
  298. package/validation/rules/NoUndefinedVariables.js +2 -2
  299. package/validation/rules/NoUndefinedVariables.js.flow +3 -3
  300. package/validation/rules/NoUndefinedVariables.mjs +2 -2
  301. package/validation/rules/NoUnusedFragments.js +7 -7
  302. package/validation/rules/NoUnusedFragments.js.flow +4 -4
  303. package/validation/rules/NoUnusedFragments.mjs +7 -7
  304. package/validation/rules/NoUnusedVariables.js +5 -5
  305. package/validation/rules/NoUnusedVariables.js.flow +6 -5
  306. package/validation/rules/NoUnusedVariables.mjs +5 -5
  307. package/validation/rules/OverlappingFieldsCanBeMerged.js +26 -23
  308. package/validation/rules/OverlappingFieldsCanBeMerged.js.flow +17 -17
  309. package/validation/rules/OverlappingFieldsCanBeMerged.mjs +26 -23
  310. package/validation/rules/PossibleFragmentSpreads.js +4 -4
  311. package/validation/rules/PossibleFragmentSpreads.js.flow +5 -5
  312. package/validation/rules/PossibleFragmentSpreads.mjs +4 -4
  313. package/validation/rules/PossibleTypeExtensions.js +3 -3
  314. package/validation/rules/PossibleTypeExtensions.js.flow +5 -5
  315. package/validation/rules/PossibleTypeExtensions.mjs +4 -4
  316. package/validation/rules/ProvidedRequiredArguments.js +6 -8
  317. package/validation/rules/ProvidedRequiredArguments.js.flow +8 -8
  318. package/validation/rules/ProvidedRequiredArguments.mjs +7 -9
  319. package/validation/rules/ScalarLeafs.js +4 -4
  320. package/validation/rules/ScalarLeafs.js.flow +6 -6
  321. package/validation/rules/ScalarLeafs.mjs +4 -4
  322. package/validation/rules/SingleFieldSubscriptions.js +2 -2
  323. package/validation/rules/SingleFieldSubscriptions.js.flow +4 -4
  324. package/validation/rules/SingleFieldSubscriptions.mjs +2 -2
  325. package/validation/rules/UniqueArgumentNames.js +2 -2
  326. package/validation/rules/UniqueArgumentNames.js.flow +3 -3
  327. package/validation/rules/UniqueArgumentNames.mjs +2 -2
  328. package/validation/rules/UniqueDirectiveNames.js +2 -2
  329. package/validation/rules/UniqueDirectiveNames.js.flow +3 -3
  330. package/validation/rules/UniqueDirectiveNames.mjs +2 -2
  331. package/validation/rules/UniqueDirectivesPerLocation.js +3 -2
  332. package/validation/rules/UniqueDirectivesPerLocation.js.flow +4 -4
  333. package/validation/rules/UniqueDirectivesPerLocation.mjs +3 -2
  334. package/validation/rules/UniqueEnumValueNames.js +4 -8
  335. package/validation/rules/UniqueEnumValueNames.js.flow +6 -8
  336. package/validation/rules/UniqueEnumValueNames.mjs +4 -8
  337. package/validation/rules/UniqueFieldDefinitionNames.js +4 -8
  338. package/validation/rules/UniqueFieldDefinitionNames.js.flow +6 -8
  339. package/validation/rules/UniqueFieldDefinitionNames.mjs +4 -8
  340. package/validation/rules/UniqueFragmentNames.js +2 -2
  341. package/validation/rules/UniqueFragmentNames.js.flow +3 -3
  342. package/validation/rules/UniqueFragmentNames.mjs +2 -2
  343. package/validation/rules/UniqueInputFieldNames.js +2 -4
  344. package/validation/rules/UniqueInputFieldNames.js.flow +3 -4
  345. package/validation/rules/UniqueInputFieldNames.mjs +2 -4
  346. package/validation/rules/UniqueOperationNames.js +2 -2
  347. package/validation/rules/UniqueOperationNames.js.flow +3 -3
  348. package/validation/rules/UniqueOperationNames.mjs +2 -2
  349. package/validation/rules/UniqueOperationTypes.js +2 -2
  350. package/validation/rules/UniqueOperationTypes.js.flow +3 -3
  351. package/validation/rules/UniqueOperationTypes.mjs +2 -2
  352. package/validation/rules/UniqueTypeNames.js +2 -2
  353. package/validation/rules/UniqueTypeNames.js.flow +4 -4
  354. package/validation/rules/UniqueTypeNames.mjs +2 -2
  355. package/validation/rules/UniqueVariableNames.js +2 -2
  356. package/validation/rules/UniqueVariableNames.js.flow +4 -4
  357. package/validation/rules/UniqueVariableNames.mjs +2 -2
  358. package/validation/rules/ValuesOfCorrectType.js +2 -2
  359. package/validation/rules/ValuesOfCorrectType.js.flow +5 -5
  360. package/validation/rules/ValuesOfCorrectType.mjs +2 -2
  361. package/validation/rules/VariablesAreInputTypes.js +3 -3
  362. package/validation/rules/VariablesAreInputTypes.js.flow +5 -5
  363. package/validation/rules/VariablesAreInputTypes.mjs +3 -3
  364. package/validation/rules/VariablesInAllowedPosition.js +3 -3
  365. package/validation/rules/VariablesInAllowedPosition.js.flow +7 -8
  366. package/validation/rules/VariablesInAllowedPosition.mjs +3 -3
  367. package/validation/specifiedRules.js +2 -2
  368. package/validation/specifiedRules.js.flow +13 -6
  369. package/validation/specifiedRules.mjs +7 -7
  370. package/validation/validate.js +2 -2
  371. package/validation/validate.js.flow +10 -6
  372. package/validation/validate.mjs +2 -2
  373. package/jsutils/MaybePromise.js +0 -1
  374. package/jsutils/MaybePromise.mjs +0 -0
  375. package/language/blockStringValue.js +0 -73
  376. package/language/blockStringValue.js.flow +0 -64
  377. package/language/blockStringValue.mjs +0 -66
@@ -3,7 +3,7 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
3
3
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
4
 
5
5
  /**
6
- * Copyright (c) 2015-present, Facebook, Inc.
6
+ * Copyright (c) Facebook, Inc. and its affiliates.
7
7
  *
8
8
  * This source code is licensed under the MIT license found in the
9
9
  * LICENSE file in the root directory of this source tree.
@@ -11,174 +11,135 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
11
11
  *
12
12
  */
13
13
  import objectValues from '../polyfills/objectValues';
14
+ import inspect from '../jsutils/inspect';
14
15
  import keyValMap from '../jsutils/keyValMap';
15
16
  import { GraphQLSchema } from '../type/schema';
16
17
  import { GraphQLDirective } from '../type/directives';
17
18
  import { GraphQLObjectType, GraphQLInterfaceType, GraphQLUnionType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, isListType, isNonNullType, isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';
18
- import { isSpecifiedScalarType } from '../type/scalars';
19
19
  import { isIntrospectionType } from '../type/introspection';
20
20
  /**
21
21
  * Sort GraphQLSchema.
22
22
  */
23
23
 
24
24
  export function lexicographicSortSchema(schema) {
25
- var cache = Object.create(null);
26
-
27
- var sortMaybeType = function sortMaybeType(maybeType) {
28
- return maybeType && sortNamedType(maybeType);
29
- };
30
-
31
- return new GraphQLSchema({
32
- types: sortTypes(objectValues(schema.getTypeMap())),
33
- directives: sortByName(schema.getDirectives()).map(sortDirective),
34
- query: sortMaybeType(schema.getQueryType()),
35
- mutation: sortMaybeType(schema.getMutationType()),
36
- subscription: sortMaybeType(schema.getSubscriptionType()),
37
- astNode: schema.astNode
38
- });
25
+ var schemaConfig = schema.toConfig();
26
+ var typeMap = keyValMap(sortByName(schemaConfig.types), function (type) {
27
+ return type.name;
28
+ }, sortNamedType);
29
+ return new GraphQLSchema(_objectSpread({}, schemaConfig, {
30
+ types: objectValues(typeMap),
31
+ directives: sortByName(schemaConfig.directives).map(sortDirective),
32
+ query: replaceMaybeType(schemaConfig.query),
33
+ mutation: replaceMaybeType(schemaConfig.mutation),
34
+ subscription: replaceMaybeType(schemaConfig.subscription)
35
+ }));
36
+
37
+ function replaceType(type) {
38
+ if (isListType(type)) {
39
+ return new GraphQLList(replaceType(type.ofType));
40
+ } else if (isNonNullType(type)) {
41
+ return new GraphQLNonNull(replaceType(type.ofType));
42
+ }
43
+
44
+ return replaceNamedType(type);
45
+ }
46
+
47
+ function replaceNamedType(type) {
48
+ return typeMap[type.name];
49
+ }
50
+
51
+ function replaceMaybeType(maybeType) {
52
+ return maybeType && replaceNamedType(maybeType);
53
+ }
39
54
 
40
55
  function sortDirective(directive) {
41
- return new GraphQLDirective({
42
- name: directive.name,
43
- description: directive.description,
44
- locations: sortBy(directive.locations, function (x) {
56
+ var config = directive.toConfig();
57
+ return new GraphQLDirective(_objectSpread({}, config, {
58
+ locations: sortBy(config.locations, function (x) {
45
59
  return x;
46
60
  }),
47
- args: sortArgs(directive.args),
48
- astNode: directive.astNode
49
- });
61
+ args: sortArgs(config.args)
62
+ }));
50
63
  }
51
64
 
52
65
  function sortArgs(args) {
53
- return keyValMap(sortByName(args), function (arg) {
54
- return arg.name;
55
- }, function (arg) {
66
+ return sortObjMap(args, function (arg) {
56
67
  return _objectSpread({}, arg, {
57
- type: sortType(arg.type)
68
+ type: replaceType(arg.type)
58
69
  });
59
70
  });
60
71
  }
61
72
 
62
73
  function sortFields(fieldsMap) {
63
74
  return sortObjMap(fieldsMap, function (field) {
64
- return {
65
- type: sortType(field.type),
66
- args: sortArgs(field.args),
67
- resolve: field.resolve,
68
- subscribe: field.subscribe,
69
- deprecationReason: field.deprecationReason,
70
- description: field.description,
71
- astNode: field.astNode
72
- };
75
+ return _objectSpread({}, field, {
76
+ type: replaceType(field.type),
77
+ args: sortArgs(field.args)
78
+ });
73
79
  });
74
80
  }
75
81
 
76
82
  function sortInputFields(fieldsMap) {
77
83
  return sortObjMap(fieldsMap, function (field) {
78
- return {
79
- type: sortType(field.type),
80
- defaultValue: field.defaultValue,
81
- description: field.description,
82
- astNode: field.astNode
83
- };
84
+ return _objectSpread({}, field, {
85
+ type: replaceType(field.type)
86
+ });
84
87
  });
85
88
  }
86
89
 
87
- function sortType(type) {
88
- if (isListType(type)) {
89
- return new GraphQLList(sortType(type.ofType));
90
- } else if (isNonNullType(type)) {
91
- return new GraphQLNonNull(sortType(type.ofType));
92
- }
93
-
94
- return sortNamedType(type);
95
- }
96
-
97
90
  function sortTypes(arr) {
98
- return sortByName(arr).map(sortNamedType);
91
+ return sortByName(arr).map(replaceNamedType);
99
92
  }
100
93
 
101
94
  function sortNamedType(type) {
102
- if (isSpecifiedScalarType(type) || isIntrospectionType(type)) {
103
- return type;
104
- }
105
-
106
- var sortedType = cache[type.name];
107
-
108
- if (!sortedType) {
109
- sortedType = sortNamedTypeImpl(type);
110
- cache[type.name] = sortedType;
111
- }
112
-
113
- return sortedType;
114
- }
115
-
116
- function sortNamedTypeImpl(type) {
117
- if (isScalarType(type)) {
95
+ if (isScalarType(type) || isIntrospectionType(type)) {
118
96
  return type;
119
97
  } else if (isObjectType(type)) {
120
- return new GraphQLObjectType({
121
- name: type.name,
98
+ var config = type.toConfig();
99
+ return new GraphQLObjectType(_objectSpread({}, config, {
122
100
  interfaces: function interfaces() {
123
- return sortTypes(type.getInterfaces());
101
+ return sortTypes(config.interfaces);
124
102
  },
125
103
  fields: function fields() {
126
- return sortFields(type.getFields());
127
- },
128
- isTypeOf: type.isTypeOf,
129
- description: type.description,
130
- astNode: type.astNode,
131
- extensionASTNodes: type.extensionASTNodes
132
- });
104
+ return sortFields(config.fields);
105
+ }
106
+ }));
133
107
  } else if (isInterfaceType(type)) {
134
- return new GraphQLInterfaceType({
135
- name: type.name,
108
+ var _config = type.toConfig();
109
+
110
+ return new GraphQLInterfaceType(_objectSpread({}, _config, {
136
111
  fields: function fields() {
137
- return sortFields(type.getFields());
138
- },
139
- resolveType: type.resolveType,
140
- description: type.description,
141
- astNode: type.astNode,
142
- extensionASTNodes: type.extensionASTNodes
143
- });
112
+ return sortFields(_config.fields);
113
+ }
114
+ }));
144
115
  } else if (isUnionType(type)) {
145
- return new GraphQLUnionType({
146
- name: type.name,
116
+ var _config2 = type.toConfig();
117
+
118
+ return new GraphQLUnionType(_objectSpread({}, _config2, {
147
119
  types: function types() {
148
- return sortTypes(type.getTypes());
149
- },
150
- resolveType: type.resolveType,
151
- description: type.description,
152
- astNode: type.astNode
153
- });
120
+ return sortTypes(_config2.types);
121
+ }
122
+ }));
154
123
  } else if (isEnumType(type)) {
155
- return new GraphQLEnumType({
156
- name: type.name,
157
- values: keyValMap(sortByName(type.getValues()), function (val) {
158
- return val.name;
159
- }, function (val) {
160
- return {
161
- value: val.value,
162
- deprecationReason: val.deprecationReason,
163
- description: val.description,
164
- astNode: val.astNode
165
- };
166
- }),
167
- description: type.description,
168
- astNode: type.astNode
169
- });
124
+ var _config3 = type.toConfig();
125
+
126
+ return new GraphQLEnumType(_objectSpread({}, _config3, {
127
+ values: sortObjMap(_config3.values)
128
+ }));
170
129
  } else if (isInputObjectType(type)) {
171
- return new GraphQLInputObjectType({
172
- name: type.name,
130
+ var _config4 = type.toConfig();
131
+
132
+ return new GraphQLInputObjectType(_objectSpread({}, _config4, {
173
133
  fields: function fields() {
174
- return sortInputFields(type.getFields());
175
- },
176
- description: type.description,
177
- astNode: type.astNode
178
- });
179
- }
134
+ return sortInputFields(_config4.fields);
135
+ }
136
+ }));
137
+ } // Not reachable. All possible types have been considered.
138
+
139
+ /* istanbul ignore next */
180
140
 
181
- throw new Error("Unknown type: \"".concat(type, "\""));
141
+
142
+ throw new Error("Unexpected type: \"".concat(inspect(type), "\"."));
182
143
  }
183
144
  }
184
145
 
@@ -188,8 +149,8 @@ function sortObjMap(map, sortValueFn) {
188
149
  return x;
189
150
  });
190
151
 
191
- for (var _i = 0; _i < sortedKeys.length; _i++) {
192
- var key = sortedKeys[_i];
152
+ for (var _i = 0, _sortedKeys = sortedKeys; _i < _sortedKeys.length; _i++) {
153
+ var key = _sortedKeys[_i];
193
154
  var value = map[key];
194
155
  sortedMap[key] = sortValueFn ? sortValueFn(value) : value;
195
156
  }
@@ -209,4 +170,4 @@ function sortBy(array, mapToKey) {
209
170
  var key2 = mapToKey(obj2);
210
171
  return key1.localeCompare(key2);
211
172
  });
212
- }
173
+ }
@@ -7,16 +7,18 @@ exports.printSchema = printSchema;
7
7
  exports.printIntrospectionSchema = printIntrospectionSchema;
8
8
  exports.printType = printType;
9
9
 
10
- var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
10
+ var _flatMap = _interopRequireDefault(require("../polyfills/flatMap"));
11
11
 
12
- var _isNullish = _interopRequireDefault(require("../jsutils/isNullish"));
12
+ var _objectValues = _interopRequireDefault(require("../polyfills/objectValues"));
13
13
 
14
- var _isInvalid = _interopRequireDefault(require("../jsutils/isInvalid"));
14
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
15
15
 
16
16
  var _astFromValue = require("../utilities/astFromValue");
17
17
 
18
18
  var _printer = require("../language/printer");
19
19
 
20
+ var _blockString = require("../language/blockString");
21
+
20
22
  var _definition = require("../type/definition");
21
23
 
22
24
  var _scalars = require("../type/scalars");
@@ -28,7 +30,7 @@ var _introspection = require("../type/introspection");
28
30
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
31
 
30
32
  /**
31
- * Copyright (c) 2015-present, Facebook, Inc.
33
+ * Copyright (c) Facebook, Inc. and its affiliates.
32
34
  *
33
35
  * This source code is licensed under the MIT license found in the
34
36
  * LICENSE file in the root directory of this source tree.
@@ -145,11 +147,12 @@ function printType(type, options) {
145
147
  return printEnum(type, options);
146
148
  } else if ((0, _definition.isInputObjectType)(type)) {
147
149
  return printInputObject(type, options);
148
- }
150
+ } // Not reachable. All possible types have been considered.
151
+
149
152
  /* istanbul ignore next */
150
153
 
151
154
 
152
- throw new Error("Unknown type: ".concat(type, "."));
155
+ throw new Error("Unexpected type: \"".concat((0, _inspect.default)(type), "\"."));
153
156
  }
154
157
 
155
158
  function printScalar(type, options) {
@@ -161,39 +164,42 @@ function printObject(type, options) {
161
164
  var implementedInterfaces = interfaces.length ? ' implements ' + interfaces.map(function (i) {
162
165
  return i.name;
163
166
  }).join(' & ') : '';
164
- return printDescription(options, type) + "type ".concat(type.name).concat(implementedInterfaces, " {\n") + printFields(options, type) + '\n' + '}';
167
+ return printDescription(options, type) + "type ".concat(type.name).concat(implementedInterfaces) + printFields(options, type);
165
168
  }
166
169
 
167
170
  function printInterface(type, options) {
168
- return printDescription(options, type) + "interface ".concat(type.name, " {\n") + printFields(options, type) + '\n' + '}';
171
+ return printDescription(options, type) + "interface ".concat(type.name) + printFields(options, type);
169
172
  }
170
173
 
171
174
  function printUnion(type, options) {
172
- return printDescription(options, type) + "union ".concat(type.name, " = ").concat(type.getTypes().join(' | '));
175
+ var types = type.getTypes();
176
+ var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
177
+ return printDescription(options, type) + 'union ' + type.name + possibleTypes;
173
178
  }
174
179
 
175
180
  function printEnum(type, options) {
176
- return printDescription(options, type) + "enum ".concat(type.name, " {\n") + printEnumValues(type.getValues(), options) + '\n' + '}';
177
- }
178
-
179
- function printEnumValues(values, options) {
180
- return values.map(function (value, i) {
181
+ var values = type.getValues().map(function (value, i) {
181
182
  return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);
182
- }).join('\n');
183
+ });
184
+ return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
183
185
  }
184
186
 
185
187
  function printInputObject(type, options) {
186
- var fields = (0, _objectValues.default)(type.getFields());
187
- return printDescription(options, type) + "input ".concat(type.name, " {\n") + fields.map(function (f, i) {
188
+ var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
188
189
  return printDescription(options, f, ' ', !i) + ' ' + printInputValue(f);
189
- }).join('\n') + '\n' + '}';
190
+ });
191
+ return printDescription(options, type) + "input ".concat(type.name) + printBlock(fields);
190
192
  }
191
193
 
192
194
  function printFields(options, type) {
193
- var fields = (0, _objectValues.default)(type.getFields());
194
- return fields.map(function (f, i) {
195
+ var fields = (0, _objectValues.default)(type.getFields()).map(function (f, i) {
195
196
  return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);
196
- }).join('\n');
197
+ });
198
+ return printBlock(fields);
199
+ }
200
+
201
+ function printBlock(items) {
202
+ return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
197
203
  }
198
204
 
199
205
  function printArgs(options, args) {
@@ -216,10 +222,11 @@ function printArgs(options, args) {
216
222
  }
217
223
 
218
224
  function printInputValue(arg) {
225
+ var defaultAST = (0, _astFromValue.astFromValue)(arg.defaultValue, arg.type);
219
226
  var argDecl = arg.name + ': ' + String(arg.type);
220
227
 
221
- if (!(0, _isInvalid.default)(arg.defaultValue)) {
222
- argDecl += " = ".concat((0, _printer.print)((0, _astFromValue.astFromValue)(arg.defaultValue, arg.type)));
228
+ if (defaultAST) {
229
+ argDecl += " = ".concat((0, _printer.print)(defaultAST));
223
230
  }
224
231
 
225
232
  return argDecl;
@@ -235,12 +242,13 @@ function printDeprecated(fieldOrEnumVal) {
235
242
  }
236
243
 
237
244
  var reason = fieldOrEnumVal.deprecationReason;
245
+ var reasonAST = (0, _astFromValue.astFromValue)(reason, _scalars.GraphQLString);
238
246
 
239
- if ((0, _isNullish.default)(reason) || reason === '' || reason === _directives.DEFAULT_DEPRECATION_REASON) {
240
- return ' @deprecated';
247
+ if (reasonAST && reason !== '' && reason !== _directives.DEFAULT_DEPRECATION_REASON) {
248
+ return ' @deprecated(reason: ' + (0, _printer.print)(reasonAST) + ')';
241
249
  }
242
250
 
243
- return ' @deprecated(reason: ' + (0, _printer.print)((0, _astFromValue.astFromValue)(reason, _scalars.GraphQLString)) + ')';
251
+ return ' @deprecated';
244
252
  }
245
253
 
246
254
  function printDescription(options, def) {
@@ -257,33 +265,11 @@ function printDescription(options, def) {
257
265
  return printDescriptionWithComments(lines, indentation, firstInBlock);
258
266
  }
259
267
 
260
- var description = indentation && !firstInBlock ? '\n' + indentation + '"""' : indentation + '"""'; // In some circumstances, a single line can be used for the description.
261
-
262
- if (lines.length === 1 && lines[0].length < 70 && lines[0][lines[0].length - 1] !== '"') {
263
- return description + escapeQuote(lines[0]) + '"""\n';
264
- } // Format a multi-line block quote to account for leading space.
265
-
266
-
267
- var hasLeadingSpace = lines[0][0] === ' ' || lines[0][0] === '\t';
268
-
269
- if (!hasLeadingSpace) {
270
- description += '\n';
271
- }
272
-
273
- for (var i = 0; i < lines.length; i++) {
274
- if (i !== 0 || !hasLeadingSpace) {
275
- description += indentation;
276
- }
277
-
278
- description += escapeQuote(lines[i]) + '\n';
279
- }
280
-
281
- description += indentation + '"""\n';
282
- return description;
283
- }
284
-
285
- function escapeQuote(line) {
286
- return line.replace(/"""/g, '\\"""');
268
+ var text = lines.join('\n');
269
+ var preferMultipleLines = text.length > 70;
270
+ var blockString = (0, _blockString.printBlockString)(text, '', preferMultipleLines);
271
+ var prefix = indentation && !firstInBlock ? '\n' + indentation : indentation;
272
+ return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
287
273
  }
288
274
 
289
275
  function printDescriptionWithComments(lines, indentation, firstInBlock) {
@@ -301,31 +287,19 @@ function printDescriptionWithComments(lines, indentation, firstInBlock) {
301
287
  }
302
288
 
303
289
  function descriptionLines(description, maxLen) {
304
- var lines = [];
305
290
  var rawLines = description.split('\n');
291
+ return (0, _flatMap.default)(rawLines, function (line) {
292
+ if (line.length < maxLen + 5) {
293
+ return line;
294
+ } // For > 120 character long lines, cut at space boundaries into sublines
295
+ // of ~80 chars.
306
296
 
307
- for (var i = 0; i < rawLines.length; i++) {
308
- if (rawLines[i] === '') {
309
- lines.push(rawLines[i]);
310
- } else {
311
- // For > 120 character long lines, cut at space boundaries into sublines
312
- // of ~80 chars.
313
- var sublines = breakLine(rawLines[i], maxLen);
314
297
 
315
- for (var j = 0; j < sublines.length; j++) {
316
- lines.push(sublines[j]);
317
- }
318
- }
319
- }
320
-
321
- return lines;
298
+ return breakLine(line, maxLen);
299
+ });
322
300
  }
323
301
 
324
302
  function breakLine(line, maxLen) {
325
- if (line.length < maxLen + 5) {
326
- return [line];
327
- }
328
-
329
303
  var parts = line.split(new RegExp("((?: |^).{15,".concat(maxLen - 40, "}(?= |$))")));
330
304
 
331
305
  if (parts.length < 4) {
@@ -339,4 +313,4 @@ function breakLine(line, maxLen) {
339
313
  }
340
314
 
341
315
  return sublines;
342
- }
316
+ }