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
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -7,13 +7,21 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ import flatMap from '../polyfills/flatMap';
10
11
  import objectValues from '../polyfills/objectValues';
11
- import isNullish from '../jsutils/isNullish';
12
- import isInvalid from '../jsutils/isInvalid';
12
+ import inspect from '../jsutils/inspect';
13
13
  import { astFromValue } from '../utilities/astFromValue';
14
14
  import { print } from '../language/printer';
15
- import type { GraphQLSchema } from '../type/schema';
15
+ import { printBlockString } from '../language/blockString';
16
+ import { type GraphQLSchema } from '../type/schema';
16
17
  import {
18
+ type GraphQLNamedType,
19
+ type GraphQLScalarType,
20
+ type GraphQLEnumType,
21
+ type GraphQLObjectType,
22
+ type GraphQLInterfaceType,
23
+ type GraphQLUnionType,
24
+ type GraphQLInputObjectType,
17
25
  isScalarType,
18
26
  isObjectType,
19
27
  isInterfaceType,
@@ -21,15 +29,6 @@ import {
21
29
  isEnumType,
22
30
  isInputObjectType,
23
31
  } from '../type/definition';
24
- import type {
25
- GraphQLNamedType,
26
- GraphQLScalarType,
27
- GraphQLEnumType,
28
- GraphQLObjectType,
29
- GraphQLInterfaceType,
30
- GraphQLUnionType,
31
- GraphQLInputObjectType,
32
- } from '../type/definition';
33
32
  import { GraphQLString, isSpecifiedScalarType } from '../type/scalars';
34
33
  import {
35
34
  GraphQLDirective,
@@ -175,8 +174,10 @@ export function printType(type: GraphQLNamedType, options?: Options): string {
175
174
  } else if (isInputObjectType(type)) {
176
175
  return printInputObject(type, options);
177
176
  }
177
+
178
+ // Not reachable. All possible types have been considered.
178
179
  /* istanbul ignore next */
179
- throw new Error(`Unknown type: ${(type: empty)}.`);
180
+ throw new Error(`Unexpected type: "${inspect((type: empty))}".`);
180
181
  }
181
182
 
182
183
  function printScalar(type: GraphQLScalarType, options): string {
@@ -190,82 +191,67 @@ function printObject(type: GraphQLObjectType, options): string {
190
191
  : '';
191
192
  return (
192
193
  printDescription(options, type) +
193
- `type ${type.name}${implementedInterfaces} {\n` +
194
- printFields(options, type) +
195
- '\n' +
196
- '}'
194
+ `type ${type.name}${implementedInterfaces}` +
195
+ printFields(options, type)
197
196
  );
198
197
  }
199
198
 
200
199
  function printInterface(type: GraphQLInterfaceType, options): string {
201
200
  return (
202
201
  printDescription(options, type) +
203
- `interface ${type.name} {\n` +
204
- printFields(options, type) +
205
- '\n' +
206
- '}'
202
+ `interface ${type.name}` +
203
+ printFields(options, type)
207
204
  );
208
205
  }
209
206
 
210
207
  function printUnion(type: GraphQLUnionType, options): string {
211
- return (
212
- printDescription(options, type) +
213
- `union ${type.name} = ${type.getTypes().join(' | ')}`
214
- );
208
+ const types = type.getTypes();
209
+ const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
210
+ return printDescription(options, type) + 'union ' + type.name + possibleTypes;
215
211
  }
216
212
 
217
213
  function printEnum(type: GraphQLEnumType, options): string {
218
- return (
219
- printDescription(options, type) +
220
- `enum ${type.name} {\n` +
221
- printEnumValues(type.getValues(), options) +
222
- '\n' +
223
- '}'
224
- );
225
- }
226
-
227
- function printEnumValues(values, options): string {
228
- return values
214
+ const values = type
215
+ .getValues()
229
216
  .map(
230
217
  (value, i) =>
231
218
  printDescription(options, value, ' ', !i) +
232
219
  ' ' +
233
220
  value.name +
234
221
  printDeprecated(value),
235
- )
236
- .join('\n');
222
+ );
223
+
224
+ return (
225
+ printDescription(options, type) + `enum ${type.name}` + printBlock(values)
226
+ );
237
227
  }
238
228
 
239
229
  function printInputObject(type: GraphQLInputObjectType, options): string {
240
- const fields = objectValues(type.getFields());
230
+ const fields = objectValues(type.getFields()).map(
231
+ (f, i) =>
232
+ printDescription(options, f, ' ', !i) + ' ' + printInputValue(f),
233
+ );
241
234
  return (
242
- printDescription(options, type) +
243
- `input ${type.name} {\n` +
244
- fields
245
- .map(
246
- (f, i) =>
247
- printDescription(options, f, ' ', !i) + ' ' + printInputValue(f),
248
- )
249
- .join('\n') +
250
- '\n' +
251
- '}'
235
+ printDescription(options, type) + `input ${type.name}` + printBlock(fields)
252
236
  );
253
237
  }
254
238
 
255
239
  function printFields(options, type) {
256
- const fields = objectValues(type.getFields());
257
- return fields
258
- .map(
259
- (f, i) =>
260
- printDescription(options, f, ' ', !i) +
261
- ' ' +
262
- f.name +
263
- printArgs(options, f.args, ' ') +
264
- ': ' +
265
- String(f.type) +
266
- printDeprecated(f),
267
- )
268
- .join('\n');
240
+ const fields = objectValues(type.getFields()).map(
241
+ (f, i) =>
242
+ printDescription(options, f, ' ', !i) +
243
+ ' ' +
244
+ f.name +
245
+ printArgs(options, f.args, ' ') +
246
+ ': ' +
247
+ String(f.type) +
248
+ printDeprecated(f),
249
+ );
250
+ return printBlock(fields);
251
+ }
252
+
253
+ function printBlock(items) {
254
+ return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
269
255
  }
270
256
 
271
257
  function printArgs(options, args, indentation = '') {
@@ -296,9 +282,10 @@ function printArgs(options, args, indentation = '') {
296
282
  }
297
283
 
298
284
  function printInputValue(arg) {
285
+ const defaultAST = astFromValue(arg.defaultValue, arg.type);
299
286
  let argDecl = arg.name + ': ' + String(arg.type);
300
- if (!isInvalid(arg.defaultValue)) {
301
- argDecl += ` = ${print(astFromValue(arg.defaultValue, arg.type))}`;
287
+ if (defaultAST) {
288
+ argDecl += ` = ${print(defaultAST)}`;
302
289
  }
303
290
  return argDecl;
304
291
  }
@@ -319,16 +306,11 @@ function printDeprecated(fieldOrEnumVal) {
319
306
  return '';
320
307
  }
321
308
  const reason = fieldOrEnumVal.deprecationReason;
322
- if (
323
- isNullish(reason) ||
324
- reason === '' ||
325
- reason === DEFAULT_DEPRECATION_REASON
326
- ) {
327
- return ' @deprecated';
309
+ const reasonAST = astFromValue(reason, GraphQLString);
310
+ if (reasonAST && reason !== '' && reason !== DEFAULT_DEPRECATION_REASON) {
311
+ return ' @deprecated(reason: ' + print(reasonAST) + ')';
328
312
  }
329
- return (
330
- ' @deprecated(reason: ' + print(astFromValue(reason, GraphQLString)) + ')'
331
- );
313
+ return ' @deprecated';
332
314
  }
333
315
 
334
316
  function printDescription(
@@ -346,37 +328,13 @@ function printDescription(
346
328
  return printDescriptionWithComments(lines, indentation, firstInBlock);
347
329
  }
348
330
 
349
- let description =
350
- indentation && !firstInBlock
351
- ? '\n' + indentation + '"""'
352
- : indentation + '"""';
353
-
354
- // In some circumstances, a single line can be used for the description.
355
- if (
356
- lines.length === 1 &&
357
- lines[0].length < 70 &&
358
- lines[0][lines[0].length - 1] !== '"'
359
- ) {
360
- return description + escapeQuote(lines[0]) + '"""\n';
361
- }
362
-
363
- // Format a multi-line block quote to account for leading space.
364
- const hasLeadingSpace = lines[0][0] === ' ' || lines[0][0] === '\t';
365
- if (!hasLeadingSpace) {
366
- description += '\n';
367
- }
368
- for (let i = 0; i < lines.length; i++) {
369
- if (i !== 0 || !hasLeadingSpace) {
370
- description += indentation;
371
- }
372
- description += escapeQuote(lines[i]) + '\n';
373
- }
374
- description += indentation + '"""\n';
375
- return description;
376
- }
331
+ const text = lines.join('\n');
332
+ const preferMultipleLines = text.length > 70;
333
+ const blockString = printBlockString(text, '', preferMultipleLines);
334
+ const prefix =
335
+ indentation && !firstInBlock ? '\n' + indentation : indentation;
377
336
 
378
- function escapeQuote(line) {
379
- return line.replace(/"""/g, '\\"""');
337
+ return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
380
338
  }
381
339
 
382
340
  function printDescriptionWithComments(lines, indentation, firstInBlock) {
@@ -392,27 +350,18 @@ function printDescriptionWithComments(lines, indentation, firstInBlock) {
392
350
  }
393
351
 
394
352
  function descriptionLines(description: string, maxLen: number): Array<string> {
395
- const lines = [];
396
353
  const rawLines = description.split('\n');
397
- for (let i = 0; i < rawLines.length; i++) {
398
- if (rawLines[i] === '') {
399
- lines.push(rawLines[i]);
400
- } else {
401
- // For > 120 character long lines, cut at space boundaries into sublines
402
- // of ~80 chars.
403
- const sublines = breakLine(rawLines[i], maxLen);
404
- for (let j = 0; j < sublines.length; j++) {
405
- lines.push(sublines[j]);
406
- }
354
+ return flatMap(rawLines, line => {
355
+ if (line.length < maxLen + 5) {
356
+ return line;
407
357
  }
408
- }
409
- return lines;
358
+ // For > 120 character long lines, cut at space boundaries into sublines
359
+ // of ~80 chars.
360
+ return breakLine(line, maxLen);
361
+ });
410
362
  }
411
363
 
412
364
  function breakLine(line: string, maxLen: number): Array<string> {
413
- if (line.length < maxLen + 5) {
414
- return [line];
415
- }
416
365
  const parts = line.split(new RegExp(`((?: |^).{15,${maxLen - 40}}(?= |$))`));
417
366
  if (parts.length < 4) {
418
367
  return [line];
@@ -1,16 +1,17 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  *
8
8
  */
9
+ import flatMap from '../polyfills/flatMap';
9
10
  import objectValues from '../polyfills/objectValues';
10
- import isNullish from '../jsutils/isNullish';
11
- import isInvalid from '../jsutils/isInvalid';
11
+ import inspect from '../jsutils/inspect';
12
12
  import { astFromValue } from '../utilities/astFromValue';
13
13
  import { print } from '../language/printer';
14
+ import { printBlockString } from '../language/blockString';
14
15
  import { isScalarType, isObjectType, isInterfaceType, isUnionType, isEnumType, isInputObjectType } from '../type/definition';
15
16
  import { GraphQLString, isSpecifiedScalarType } from '../type/scalars';
16
17
  import { GraphQLDirective, DEFAULT_DEPRECATION_REASON, isSpecifiedDirective } from '../type/directives';
@@ -124,11 +125,12 @@ export function printType(type, options) {
124
125
  return printEnum(type, options);
125
126
  } else if (isInputObjectType(type)) {
126
127
  return printInputObject(type, options);
127
- }
128
+ } // Not reachable. All possible types have been considered.
129
+
128
130
  /* istanbul ignore next */
129
131
 
130
132
 
131
- throw new Error("Unknown type: ".concat(type, "."));
133
+ throw new Error("Unexpected type: \"".concat(inspect(type), "\"."));
132
134
  }
133
135
 
134
136
  function printScalar(type, options) {
@@ -140,39 +142,42 @@ function printObject(type, options) {
140
142
  var implementedInterfaces = interfaces.length ? ' implements ' + interfaces.map(function (i) {
141
143
  return i.name;
142
144
  }).join(' & ') : '';
143
- return printDescription(options, type) + "type ".concat(type.name).concat(implementedInterfaces, " {\n") + printFields(options, type) + '\n' + '}';
145
+ return printDescription(options, type) + "type ".concat(type.name).concat(implementedInterfaces) + printFields(options, type);
144
146
  }
145
147
 
146
148
  function printInterface(type, options) {
147
- return printDescription(options, type) + "interface ".concat(type.name, " {\n") + printFields(options, type) + '\n' + '}';
149
+ return printDescription(options, type) + "interface ".concat(type.name) + printFields(options, type);
148
150
  }
149
151
 
150
152
  function printUnion(type, options) {
151
- return printDescription(options, type) + "union ".concat(type.name, " = ").concat(type.getTypes().join(' | '));
153
+ var types = type.getTypes();
154
+ var possibleTypes = types.length ? ' = ' + types.join(' | ') : '';
155
+ return printDescription(options, type) + 'union ' + type.name + possibleTypes;
152
156
  }
153
157
 
154
158
  function printEnum(type, options) {
155
- return printDescription(options, type) + "enum ".concat(type.name, " {\n") + printEnumValues(type.getValues(), options) + '\n' + '}';
156
- }
157
-
158
- function printEnumValues(values, options) {
159
- return values.map(function (value, i) {
159
+ var values = type.getValues().map(function (value, i) {
160
160
  return printDescription(options, value, ' ', !i) + ' ' + value.name + printDeprecated(value);
161
- }).join('\n');
161
+ });
162
+ return printDescription(options, type) + "enum ".concat(type.name) + printBlock(values);
162
163
  }
163
164
 
164
165
  function printInputObject(type, options) {
165
- var fields = objectValues(type.getFields());
166
- return printDescription(options, type) + "input ".concat(type.name, " {\n") + fields.map(function (f, i) {
166
+ var fields = objectValues(type.getFields()).map(function (f, i) {
167
167
  return printDescription(options, f, ' ', !i) + ' ' + printInputValue(f);
168
- }).join('\n') + '\n' + '}';
168
+ });
169
+ return printDescription(options, type) + "input ".concat(type.name) + printBlock(fields);
169
170
  }
170
171
 
171
172
  function printFields(options, type) {
172
- var fields = objectValues(type.getFields());
173
- return fields.map(function (f, i) {
173
+ var fields = objectValues(type.getFields()).map(function (f, i) {
174
174
  return printDescription(options, f, ' ', !i) + ' ' + f.name + printArgs(options, f.args, ' ') + ': ' + String(f.type) + printDeprecated(f);
175
- }).join('\n');
175
+ });
176
+ return printBlock(fields);
177
+ }
178
+
179
+ function printBlock(items) {
180
+ return items.length !== 0 ? ' {\n' + items.join('\n') + '\n}' : '';
176
181
  }
177
182
 
178
183
  function printArgs(options, args) {
@@ -195,10 +200,11 @@ function printArgs(options, args) {
195
200
  }
196
201
 
197
202
  function printInputValue(arg) {
203
+ var defaultAST = astFromValue(arg.defaultValue, arg.type);
198
204
  var argDecl = arg.name + ': ' + String(arg.type);
199
205
 
200
- if (!isInvalid(arg.defaultValue)) {
201
- argDecl += " = ".concat(print(astFromValue(arg.defaultValue, arg.type)));
206
+ if (defaultAST) {
207
+ argDecl += " = ".concat(print(defaultAST));
202
208
  }
203
209
 
204
210
  return argDecl;
@@ -214,12 +220,13 @@ function printDeprecated(fieldOrEnumVal) {
214
220
  }
215
221
 
216
222
  var reason = fieldOrEnumVal.deprecationReason;
223
+ var reasonAST = astFromValue(reason, GraphQLString);
217
224
 
218
- if (isNullish(reason) || reason === '' || reason === DEFAULT_DEPRECATION_REASON) {
219
- return ' @deprecated';
225
+ if (reasonAST && reason !== '' && reason !== DEFAULT_DEPRECATION_REASON) {
226
+ return ' @deprecated(reason: ' + print(reasonAST) + ')';
220
227
  }
221
228
 
222
- return ' @deprecated(reason: ' + print(astFromValue(reason, GraphQLString)) + ')';
229
+ return ' @deprecated';
223
230
  }
224
231
 
225
232
  function printDescription(options, def) {
@@ -236,33 +243,11 @@ function printDescription(options, def) {
236
243
  return printDescriptionWithComments(lines, indentation, firstInBlock);
237
244
  }
238
245
 
239
- var description = indentation && !firstInBlock ? '\n' + indentation + '"""' : indentation + '"""'; // In some circumstances, a single line can be used for the description.
240
-
241
- if (lines.length === 1 && lines[0].length < 70 && lines[0][lines[0].length - 1] !== '"') {
242
- return description + escapeQuote(lines[0]) + '"""\n';
243
- } // Format a multi-line block quote to account for leading space.
244
-
245
-
246
- var hasLeadingSpace = lines[0][0] === ' ' || lines[0][0] === '\t';
247
-
248
- if (!hasLeadingSpace) {
249
- description += '\n';
250
- }
251
-
252
- for (var i = 0; i < lines.length; i++) {
253
- if (i !== 0 || !hasLeadingSpace) {
254
- description += indentation;
255
- }
256
-
257
- description += escapeQuote(lines[i]) + '\n';
258
- }
259
-
260
- description += indentation + '"""\n';
261
- return description;
262
- }
263
-
264
- function escapeQuote(line) {
265
- return line.replace(/"""/g, '\\"""');
246
+ var text = lines.join('\n');
247
+ var preferMultipleLines = text.length > 70;
248
+ var blockString = printBlockString(text, '', preferMultipleLines);
249
+ var prefix = indentation && !firstInBlock ? '\n' + indentation : indentation;
250
+ return prefix + blockString.replace(/\n/g, '\n' + indentation) + '\n';
266
251
  }
267
252
 
268
253
  function printDescriptionWithComments(lines, indentation, firstInBlock) {
@@ -280,31 +265,19 @@ function printDescriptionWithComments(lines, indentation, firstInBlock) {
280
265
  }
281
266
 
282
267
  function descriptionLines(description, maxLen) {
283
- var lines = [];
284
268
  var rawLines = description.split('\n');
269
+ return flatMap(rawLines, function (line) {
270
+ if (line.length < maxLen + 5) {
271
+ return line;
272
+ } // For > 120 character long lines, cut at space boundaries into sublines
273
+ // of ~80 chars.
285
274
 
286
- for (var i = 0; i < rawLines.length; i++) {
287
- if (rawLines[i] === '') {
288
- lines.push(rawLines[i]);
289
- } else {
290
- // For > 120 character long lines, cut at space boundaries into sublines
291
- // of ~80 chars.
292
- var sublines = breakLine(rawLines[i], maxLen);
293
-
294
- for (var j = 0; j < sublines.length; j++) {
295
- lines.push(sublines[j]);
296
- }
297
- }
298
- }
299
275
 
300
- return lines;
276
+ return breakLine(line, maxLen);
277
+ });
301
278
  }
302
279
 
303
280
  function breakLine(line, maxLen) {
304
- if (line.length < maxLen + 5) {
305
- return [line];
306
- }
307
-
308
281
  var parts = line.split(new RegExp("((?: |^).{15,".concat(maxLen - 40, "}(?= |$))")));
309
282
 
310
283
  if (parts.length < 4) {
@@ -318,4 +291,4 @@ function breakLine(line, maxLen) {
318
291
  }
319
292
 
320
293
  return sublines;
321
- }
294
+ }
@@ -8,7 +8,7 @@ exports.separateOperations = separateOperations;
8
8
  var _visitor = require("../language/visitor");
9
9
 
10
10
  /**
11
- * Copyright (c) 2015-present, Facebook, Inc.
11
+ * Copyright (c) Facebook, Inc. and its affiliates.
12
12
  *
13
13
  * This source code is licensed under the MIT license found in the
14
14
  * LICENSE file in the root directory of this source tree.
@@ -50,8 +50,8 @@ function separateOperations(documentAST) {
50
50
 
51
51
  var separatedDocumentASTs = Object.create(null);
52
52
 
53
- for (var _i = 0; _i < operations.length; _i++) {
54
- var operation = operations[_i];
53
+ for (var _i = 0, _operations = operations; _i < _operations.length; _i++) {
54
+ var operation = _operations[_i];
55
55
  var operationName = opName(operation);
56
56
  var dependencies = Object.create(null);
57
57
  collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted
@@ -59,10 +59,8 @@ function separateOperations(documentAST) {
59
59
 
60
60
  var definitions = [operation];
61
61
 
62
- var _arr = Object.keys(dependencies);
63
-
64
- for (var _i2 = 0; _i2 < _arr.length; _i2++) {
65
- var name = _arr[_i2];
62
+ for (var _i2 = 0, _Object$keys = Object.keys(dependencies); _i2 < _Object$keys.length; _i2++) {
63
+ var name = _Object$keys[_i2];
66
64
  definitions.push(fragments[name]);
67
65
  }
68
66
 
@@ -89,10 +87,8 @@ function collectTransitiveDependencies(collected, depGraph, fromName) {
89
87
  var immediateDeps = depGraph[fromName];
90
88
 
91
89
  if (immediateDeps) {
92
- var _arr2 = Object.keys(immediateDeps);
93
-
94
- for (var _i3 = 0; _i3 < _arr2.length; _i3++) {
95
- var toName = _arr2[_i3];
90
+ for (var _i3 = 0, _Object$keys2 = Object.keys(immediateDeps); _i3 < _Object$keys2.length; _i3++) {
91
+ var toName = _Object$keys2[_i3];
96
92
 
97
93
  if (!collected[toName]) {
98
94
  collected[toName] = true;
@@ -100,4 +96,4 @@ function collectTransitiveDependencies(collected, depGraph, fromName) {
100
96
  }
101
97
  }
102
98
  }
103
- }
99
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -8,8 +8,11 @@
8
8
  */
9
9
 
10
10
  import { visit } from '../language/visitor';
11
- import type { ObjMap } from '../jsutils/ObjMap';
12
- import type { DocumentNode, OperationDefinitionNode } from '../language/ast';
11
+ import { type ObjMap } from '../jsutils/ObjMap';
12
+ import {
13
+ type DocumentNode,
14
+ type OperationDefinitionNode,
15
+ } from '../language/ast';
13
16
 
14
17
  /**
15
18
  * separateOperations accepts a single AST document which may contain many
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2015-present, Facebook, Inc.
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
3
  *
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
@@ -42,8 +42,8 @@ export function separateOperations(documentAST) {
42
42
 
43
43
  var separatedDocumentASTs = Object.create(null);
44
44
 
45
- for (var _i = 0; _i < operations.length; _i++) {
46
- var operation = operations[_i];
45
+ for (var _i = 0, _operations = operations; _i < _operations.length; _i++) {
46
+ var operation = _operations[_i];
47
47
  var operationName = opName(operation);
48
48
  var dependencies = Object.create(null);
49
49
  collectTransitiveDependencies(dependencies, depGraph, operationName); // The list of definition nodes to be included for this operation, sorted
@@ -51,10 +51,8 @@ export function separateOperations(documentAST) {
51
51
 
52
52
  var definitions = [operation];
53
53
 
54
- var _arr = Object.keys(dependencies);
55
-
56
- for (var _i2 = 0; _i2 < _arr.length; _i2++) {
57
- var name = _arr[_i2];
54
+ for (var _i2 = 0, _Object$keys = Object.keys(dependencies); _i2 < _Object$keys.length; _i2++) {
55
+ var name = _Object$keys[_i2];
58
56
  definitions.push(fragments[name]);
59
57
  }
60
58
 
@@ -81,10 +79,8 @@ function collectTransitiveDependencies(collected, depGraph, fromName) {
81
79
  var immediateDeps = depGraph[fromName];
82
80
 
83
81
  if (immediateDeps) {
84
- var _arr2 = Object.keys(immediateDeps);
85
-
86
- for (var _i3 = 0; _i3 < _arr2.length; _i3++) {
87
- var toName = _arr2[_i3];
82
+ for (var _i3 = 0, _Object$keys2 = Object.keys(immediateDeps); _i3 < _Object$keys2.length; _i3++) {
83
+ var toName = _Object$keys2[_i3];
88
84
 
89
85
  if (!collected[toName]) {
90
86
  collected[toName] = true;
@@ -92,4 +88,4 @@ function collectTransitiveDependencies(collected, depGraph, fromName) {
92
88
  }
93
89
  }
94
90
  }
95
- }
91
+ }