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.
@@ -10,7 +10,7 @@ import inspect from '../jsutils/inspect';
10
10
  import defineToJSON from '../jsutils/defineToJSON';
11
11
  import { Source } from './source';
12
12
  import { syntaxError } from '../error';
13
- import { createLexer, TokenKind, getTokenDesc } from './lexer';
13
+ import { TokenKind, getTokenDesc, createLexer } from './lexer';
14
14
  import { Kind } from './kinds';
15
15
  import { DirectiveLocation } from './directiveLocation';
16
16
  /**
@@ -45,9 +45,9 @@ export function parse(source, options) {
45
45
  export function parseValue(source, options) {
46
46
  var sourceObj = typeof source === 'string' ? new Source(source) : source;
47
47
  var lexer = createLexer(sourceObj, options || {});
48
- expect(lexer, TokenKind.SOF);
48
+ expectToken(lexer, TokenKind.SOF);
49
49
  var value = parseValueLiteral(lexer, false);
50
- expect(lexer, TokenKind.EOF);
50
+ expectToken(lexer, TokenKind.EOF);
51
51
  return value;
52
52
  }
53
53
  /**
@@ -64,9 +64,9 @@ export function parseValue(source, options) {
64
64
  export function parseType(source, options) {
65
65
  var sourceObj = typeof source === 'string' ? new Source(source) : source;
66
66
  var lexer = createLexer(sourceObj, options || {});
67
- expect(lexer, TokenKind.SOF);
67
+ expectToken(lexer, TokenKind.SOF);
68
68
  var type = parseTypeReference(lexer);
69
- expect(lexer, TokenKind.EOF);
69
+ expectToken(lexer, TokenKind.EOF);
70
70
  return type;
71
71
  }
72
72
  /**
@@ -74,7 +74,7 @@ export function parseType(source, options) {
74
74
  */
75
75
 
76
76
  function parseName(lexer) {
77
- var token = expect(lexer, TokenKind.NAME);
77
+ var token = expectToken(lexer, TokenKind.NAME);
78
78
  return {
79
79
  kind: Kind.NAME,
80
80
  value: token.value,
@@ -203,7 +203,7 @@ function parseOperationDefinition(lexer) {
203
203
 
204
204
 
205
205
  function parseOperationType(lexer) {
206
- var operationToken = expect(lexer, TokenKind.NAME);
206
+ var operationToken = expectToken(lexer, TokenKind.NAME);
207
207
 
208
208
  switch (operationToken.value) {
209
209
  case 'query':
@@ -236,8 +236,8 @@ function parseVariableDefinition(lexer) {
236
236
  return {
237
237
  kind: Kind.VARIABLE_DEFINITION,
238
238
  variable: parseVariable(lexer),
239
- type: (expect(lexer, TokenKind.COLON), parseTypeReference(lexer)),
240
- defaultValue: skip(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,
239
+ type: (expectToken(lexer, TokenKind.COLON), parseTypeReference(lexer)),
240
+ defaultValue: expectOptionalToken(lexer, TokenKind.EQUALS) ? parseValueLiteral(lexer, true) : undefined,
241
241
  directives: parseDirectives(lexer, true),
242
242
  loc: loc(lexer, start)
243
243
  };
@@ -249,7 +249,7 @@ function parseVariableDefinition(lexer) {
249
249
 
250
250
  function parseVariable(lexer) {
251
251
  var start = lexer.token;
252
- expect(lexer, TokenKind.DOLLAR);
252
+ expectToken(lexer, TokenKind.DOLLAR);
253
253
  return {
254
254
  kind: Kind.VARIABLE,
255
255
  name: parseName(lexer),
@@ -293,7 +293,7 @@ function parseField(lexer) {
293
293
  var alias;
294
294
  var name;
295
295
 
296
- if (skip(lexer, TokenKind.COLON)) {
296
+ if (expectOptionalToken(lexer, TokenKind.COLON)) {
297
297
  alias = nameOrAlias;
298
298
  name = parseName(lexer);
299
299
  } else {
@@ -326,10 +326,12 @@ function parseArguments(lexer, isConst) {
326
326
 
327
327
  function parseArgument(lexer) {
328
328
  var start = lexer.token;
329
+ var name = parseName(lexer);
330
+ expectToken(lexer, TokenKind.COLON);
329
331
  return {
330
332
  kind: Kind.ARGUMENT,
331
- name: parseName(lexer),
332
- value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, false)),
333
+ name: name,
334
+ value: parseValueLiteral(lexer, false),
333
335
  loc: loc(lexer, start)
334
336
  };
335
337
  }
@@ -339,7 +341,7 @@ function parseConstArgument(lexer) {
339
341
  return {
340
342
  kind: Kind.ARGUMENT,
341
343
  name: parseName(lexer),
342
- value: (expect(lexer, TokenKind.COLON), parseConstValue(lexer)),
344
+ value: (expectToken(lexer, TokenKind.COLON), parseConstValue(lexer)),
343
345
  loc: loc(lexer, start)
344
346
  };
345
347
  } // Implements the parsing rules in the Fragments section.
@@ -355,8 +357,8 @@ function parseConstArgument(lexer) {
355
357
 
356
358
  function parseFragment(lexer) {
357
359
  var start = lexer.token;
358
- expect(lexer, TokenKind.SPREAD);
359
- var hasTypeCondition = skipKeyword(lexer, 'on');
360
+ expectToken(lexer, TokenKind.SPREAD);
361
+ var hasTypeCondition = expectOptionalKeyword(lexer, 'on');
360
362
 
361
363
  if (!hasTypeCondition && peek(lexer, TokenKind.NAME)) {
362
364
  return {
@@ -550,16 +552,14 @@ function parseList(lexer, isConst) {
550
552
 
551
553
  function parseObject(lexer, isConst) {
552
554
  var start = lexer.token;
553
- expect(lexer, TokenKind.BRACE_L);
554
- var fields = [];
555
555
 
556
- while (!skip(lexer, TokenKind.BRACE_R)) {
557
- fields.push(parseObjectField(lexer, isConst));
558
- }
556
+ var item = function item() {
557
+ return parseObjectField(lexer, isConst);
558
+ };
559
559
 
560
560
  return {
561
561
  kind: Kind.OBJECT,
562
- fields: fields,
562
+ fields: any(lexer, TokenKind.BRACE_L, item, TokenKind.BRACE_R),
563
563
  loc: loc(lexer, start)
564
564
  };
565
565
  }
@@ -570,10 +570,12 @@ function parseObject(lexer, isConst) {
570
570
 
571
571
  function parseObjectField(lexer, isConst) {
572
572
  var start = lexer.token;
573
+ var name = parseName(lexer);
574
+ expectToken(lexer, TokenKind.COLON);
573
575
  return {
574
576
  kind: Kind.OBJECT_FIELD,
575
- name: parseName(lexer),
576
- value: (expect(lexer, TokenKind.COLON), parseValueLiteral(lexer, isConst)),
577
+ name: name,
578
+ value: parseValueLiteral(lexer, isConst),
577
579
  loc: loc(lexer, start)
578
580
  };
579
581
  } // Implements the parsing rules in the Directives section.
@@ -599,7 +601,7 @@ function parseDirectives(lexer, isConst) {
599
601
 
600
602
  function parseDirective(lexer, isConst) {
601
603
  var start = lexer.token;
602
- expect(lexer, TokenKind.AT);
604
+ expectToken(lexer, TokenKind.AT);
603
605
  return {
604
606
  kind: Kind.DIRECTIVE,
605
607
  name: parseName(lexer),
@@ -620,9 +622,9 @@ export function parseTypeReference(lexer) {
620
622
  var start = lexer.token;
621
623
  var type;
622
624
 
623
- if (skip(lexer, TokenKind.BRACKET_L)) {
625
+ if (expectOptionalToken(lexer, TokenKind.BRACKET_L)) {
624
626
  type = parseTypeReference(lexer);
625
- expect(lexer, TokenKind.BRACKET_R);
627
+ expectToken(lexer, TokenKind.BRACKET_R);
626
628
  type = {
627
629
  kind: Kind.LIST_TYPE,
628
630
  type: type,
@@ -632,7 +634,7 @@ export function parseTypeReference(lexer) {
632
634
  type = parseNamedType(lexer);
633
635
  }
634
636
 
635
- if (skip(lexer, TokenKind.BANG)) {
637
+ if (expectOptionalToken(lexer, TokenKind.BANG)) {
636
638
  return {
637
639
  kind: Kind.NON_NULL_TYPE,
638
640
  type: type,
@@ -743,7 +745,7 @@ function parseSchemaDefinition(lexer) {
743
745
  function parseOperationTypeDefinition(lexer) {
744
746
  var start = lexer.token;
745
747
  var operation = parseOperationType(lexer);
746
- expect(lexer, TokenKind.COLON);
748
+ expectToken(lexer, TokenKind.COLON);
747
749
  var type = parseNamedType(lexer);
748
750
  return {
749
751
  kind: Kind.OPERATION_TYPE_DEFINITION,
@@ -806,13 +808,13 @@ function parseObjectTypeDefinition(lexer) {
806
808
  function parseImplementsInterfaces(lexer) {
807
809
  var types = [];
808
810
 
809
- if (skipKeyword(lexer, 'implements')) {
811
+ if (expectOptionalKeyword(lexer, 'implements')) {
810
812
  // Optional leading ampersand
811
- skip(lexer, TokenKind.AMP);
813
+ expectOptionalToken(lexer, TokenKind.AMP);
812
814
 
813
815
  do {
814
816
  types.push(parseNamedType(lexer));
815
- } while (skip(lexer, TokenKind.AMP) || // Legacy support for the SDL?
817
+ } while (expectOptionalToken(lexer, TokenKind.AMP) || // Legacy support for the SDL?
816
818
  lexer.options.allowLegacySDLImplementsInterfaces && peek(lexer, TokenKind.NAME));
817
819
  }
818
820
 
@@ -844,7 +846,7 @@ function parseFieldDefinition(lexer) {
844
846
  var description = parseDescription(lexer);
845
847
  var name = parseName(lexer);
846
848
  var args = parseArgumentDefs(lexer);
847
- expect(lexer, TokenKind.COLON);
849
+ expectToken(lexer, TokenKind.COLON);
848
850
  var type = parseTypeReference(lexer);
849
851
  var directives = parseDirectives(lexer, true);
850
852
  return {
@@ -879,11 +881,11 @@ function parseInputValueDef(lexer) {
879
881
  var start = lexer.token;
880
882
  var description = parseDescription(lexer);
881
883
  var name = parseName(lexer);
882
- expect(lexer, TokenKind.COLON);
884
+ expectToken(lexer, TokenKind.COLON);
883
885
  var type = parseTypeReference(lexer);
884
886
  var defaultValue;
885
887
 
886
- if (skip(lexer, TokenKind.EQUALS)) {
888
+ if (expectOptionalToken(lexer, TokenKind.EQUALS)) {
887
889
  defaultValue = parseConstValue(lexer);
888
890
  }
889
891
 
@@ -952,13 +954,13 @@ function parseUnionTypeDefinition(lexer) {
952
954
  function parseUnionMemberTypes(lexer) {
953
955
  var types = [];
954
956
 
955
- if (skip(lexer, TokenKind.EQUALS)) {
957
+ if (expectOptionalToken(lexer, TokenKind.EQUALS)) {
956
958
  // Optional leading pipe
957
- skip(lexer, TokenKind.PIPE);
959
+ expectOptionalToken(lexer, TokenKind.PIPE);
958
960
 
959
961
  do {
960
962
  types.push(parseNamedType(lexer));
961
- } while (skip(lexer, TokenKind.PIPE));
963
+ } while (expectOptionalToken(lexer, TokenKind.PIPE));
962
964
  }
963
965
 
964
966
  return types;
@@ -1285,7 +1287,7 @@ function parseDirectiveDefinition(lexer) {
1285
1287
  var start = lexer.token;
1286
1288
  var description = parseDescription(lexer);
1287
1289
  expectKeyword(lexer, 'directive');
1288
- expect(lexer, TokenKind.AT);
1290
+ expectToken(lexer, TokenKind.AT);
1289
1291
  var name = parseName(lexer);
1290
1292
  var args = parseArgumentDefs(lexer);
1291
1293
  expectKeyword(lexer, 'on');
@@ -1308,12 +1310,12 @@ function parseDirectiveDefinition(lexer) {
1308
1310
 
1309
1311
  function parseDirectiveLocations(lexer) {
1310
1312
  // Optional leading pipe
1311
- skip(lexer, TokenKind.PIPE);
1313
+ expectOptionalToken(lexer, TokenKind.PIPE);
1312
1314
  var locations = [];
1313
1315
 
1314
1316
  do {
1315
1317
  locations.push(parseDirectiveLocation(lexer));
1316
- } while (skip(lexer, TokenKind.PIPE));
1318
+ } while (expectOptionalToken(lexer, TokenKind.PIPE));
1317
1319
 
1318
1320
  return locations;
1319
1321
  }
@@ -1350,7 +1352,7 @@ function parseDirectiveLocation(lexer) {
1350
1352
  var start = lexer.token;
1351
1353
  var name = parseName(lexer);
1352
1354
 
1353
- if (DirectiveLocation.hasOwnProperty(name.value)) {
1355
+ if (DirectiveLocation[name.value] !== undefined) {
1354
1356
  return name;
1355
1357
  }
1356
1358
 
@@ -1392,26 +1394,28 @@ function peek(lexer, kind) {
1392
1394
  return lexer.token.kind === kind;
1393
1395
  }
1394
1396
  /**
1395
- * If the next token is of the given kind, return true after advancing
1396
- * the lexer. Otherwise, do not change the parser state and return false.
1397
+ * If the next token is of the given kind, return that token after advancing
1398
+ * the lexer. Otherwise, do not change the parser state and throw an error.
1397
1399
  */
1398
1400
 
1399
1401
 
1400
- function skip(lexer, kind) {
1401
- if (lexer.token.kind === kind) {
1402
+ function expectToken(lexer, kind) {
1403
+ var token = lexer.token;
1404
+
1405
+ if (token.kind === kind) {
1402
1406
  lexer.advance();
1403
- return true;
1407
+ return token;
1404
1408
  }
1405
1409
 
1406
- return false;
1410
+ throw syntaxError(lexer.source, token.start, "Expected ".concat(kind, ", found ").concat(getTokenDesc(token)));
1407
1411
  }
1408
1412
  /**
1409
1413
  * If the next token is of the given kind, return that token after advancing
1410
- * the lexer. Otherwise, do not change the parser state and throw an error.
1414
+ * the lexer. Otherwise, do not change the parser state and return undefined.
1411
1415
  */
1412
1416
 
1413
1417
 
1414
- function expect(lexer, kind) {
1418
+ function expectOptionalToken(lexer, kind) {
1415
1419
  var token = lexer.token;
1416
1420
 
1417
1421
  if (token.kind === kind) {
@@ -1419,35 +1423,39 @@ function expect(lexer, kind) {
1419
1423
  return token;
1420
1424
  }
1421
1425
 
1422
- throw syntaxError(lexer.source, token.start, "Expected ".concat(kind, ", found ").concat(getTokenDesc(token)));
1426
+ return undefined;
1423
1427
  }
1424
1428
  /**
1425
- * If the next token is a keyword with the given value, return true after advancing
1426
- * the lexer. Otherwise, do not change the parser state and return false.
1429
+ * If the next token is a given keyword, return that token after advancing
1430
+ * the lexer. Otherwise, do not change the parser state and throw an error.
1427
1431
  */
1428
1432
 
1429
1433
 
1430
- function skipKeyword(lexer, value) {
1434
+ function expectKeyword(lexer, value) {
1431
1435
  var token = lexer.token;
1432
1436
 
1433
1437
  if (token.kind === TokenKind.NAME && token.value === value) {
1434
1438
  lexer.advance();
1435
- return true;
1439
+ return token;
1436
1440
  }
1437
1441
 
1438
- return false;
1442
+ throw syntaxError(lexer.source, token.start, "Expected \"".concat(value, "\", found ").concat(getTokenDesc(token)));
1439
1443
  }
1440
1444
  /**
1441
- * If the next token is a keyword with the given value, return that token after
1442
- * advancing the lexer. Otherwise, do not change the parser state and throw
1443
- * an error.
1445
+ * If the next token is a given keyword, return that token after advancing
1446
+ * the lexer. Otherwise, do not change the parser state and return undefined.
1444
1447
  */
1445
1448
 
1446
1449
 
1447
- function expectKeyword(lexer, value) {
1448
- if (!skipKeyword(lexer, value)) {
1449
- throw syntaxError(lexer.source, lexer.token.start, "Expected \"".concat(value, "\", found ").concat(getTokenDesc(lexer.token)));
1450
+ function expectOptionalKeyword(lexer, value) {
1451
+ var token = lexer.token;
1452
+
1453
+ if (token.kind === TokenKind.NAME && token.value === value) {
1454
+ lexer.advance();
1455
+ return token;
1450
1456
  }
1457
+
1458
+ return undefined;
1451
1459
  }
1452
1460
  /**
1453
1461
  * Helper function for creating an error when an unexpected lexed token
@@ -1468,10 +1476,10 @@ function unexpected(lexer, atToken) {
1468
1476
 
1469
1477
 
1470
1478
  function any(lexer, openKind, parseFn, closeKind) {
1471
- expect(lexer, openKind);
1479
+ expectToken(lexer, openKind);
1472
1480
  var nodes = [];
1473
1481
 
1474
- while (!skip(lexer, closeKind)) {
1482
+ while (!expectOptionalToken(lexer, closeKind)) {
1475
1483
  nodes.push(parseFn(lexer));
1476
1484
  }
1477
1485
 
@@ -1486,12 +1494,12 @@ function any(lexer, openKind, parseFn, closeKind) {
1486
1494
 
1487
1495
 
1488
1496
  function many(lexer, openKind, parseFn, closeKind) {
1489
- expect(lexer, openKind);
1497
+ expectToken(lexer, openKind);
1490
1498
  var nodes = [parseFn(lexer)];
1491
1499
 
1492
- while (!skip(lexer, closeKind)) {
1500
+ while (!expectOptionalToken(lexer, closeKind)) {
1493
1501
  nodes.push(parseFn(lexer));
1494
1502
  }
1495
1503
 
1496
1504
  return nodes;
1497
- }
1505
+ }
@@ -16,7 +16,7 @@ exports.isTypeExtensionNode = isTypeExtensionNode;
16
16
  var _kinds = require("./kinds");
17
17
 
18
18
  /**
19
- * Copyright (c) 2018-present, Facebook, Inc.
19
+ * Copyright (c) Facebook, Inc. and its affiliates.
20
20
  *
21
21
  * This source code is licensed under the MIT license found in the
22
22
  * LICENSE file in the root directory of this source tree.
@@ -57,4 +57,4 @@ function isTypeSystemExtensionNode(node) {
57
57
 
58
58
  function isTypeExtensionNode(node) {
59
59
  return node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION || node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION || node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION || node.kind === _kinds.Kind.UNION_TYPE_EXTENSION || node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION || node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;
60
- }
60
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-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,7 +7,7 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
- import type { ASTNode } from './ast';
10
+ import { type ASTNode } from './ast';
11
11
  import { Kind } from './kinds';
12
12
 
13
13
  export function isDefinitionNode(node: ASTNode): boolean %checks {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Copyright (c) 2018-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.
@@ -33,4 +33,4 @@ export function isTypeSystemExtensionNode(node) {
33
33
  }
34
34
  export function isTypeExtensionNode(node) {
35
35
  return node.kind === Kind.SCALAR_TYPE_EXTENSION || node.kind === Kind.OBJECT_TYPE_EXTENSION || node.kind === Kind.INTERFACE_TYPE_EXTENSION || node.kind === Kind.UNION_TYPE_EXTENSION || node.kind === Kind.ENUM_TYPE_EXTENSION || node.kind === Kind.INPUT_OBJECT_TYPE_EXTENSION;
36
- }
36
+ }
@@ -7,8 +7,10 @@ exports.print = print;
7
7
 
8
8
  var _visitor = require("./visitor");
9
9
 
10
+ var _blockString = require("./blockString");
11
+
10
12
  /**
11
- * Copyright (c) 2015-present, Facebook, Inc.
13
+ * Copyright (c) Facebook, Inc. and its affiliates.
12
14
  *
13
15
  * This source code is licensed under the MIT license found in the
14
16
  * LICENSE file in the root directory of this source tree.
@@ -24,7 +26,8 @@ function print(ast) {
24
26
  return (0, _visitor.visit)(ast, {
25
27
  leave: printDocASTReducer
26
28
  });
27
- }
29
+ } // TODO: provide better type coverage in future
30
+
28
31
 
29
32
  var printDocASTReducer = {
30
33
  Name: function Name(node) {
@@ -106,7 +109,7 @@ var printDocASTReducer = {
106
109
  StringValue: function StringValue(_ref10, key) {
107
110
  var value = _ref10.value,
108
111
  isBlockString = _ref10.block;
109
- return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);
112
+ return isBlockString ? (0, _blockString.printBlockString)(value, key === 'description' ? '' : ' ') : JSON.stringify(value);
110
113
  },
111
114
  BooleanValue: function BooleanValue(_ref11) {
112
115
  var value = _ref11.value;
@@ -312,14 +315,3 @@ function isMultiline(string) {
312
315
  function hasMultilineItems(maybeArray) {
313
316
  return maybeArray && maybeArray.some(isMultiline);
314
317
  }
315
- /**
316
- * Print a block string in the indented block form by adding a leading and
317
- * trailing blank line. However, if a block string starts with whitespace and is
318
- * a single-line, adding a leading blank line would strip that whitespace.
319
- */
320
-
321
-
322
- function printBlockString(value, isDescription) {
323
- var escaped = value.replace(/"""/g, '\\"""');
324
- return isMultiline(value) || value[0] !== ' ' && value[0] !== '\t' ? "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"") : "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"");
325
- }
@@ -1,23 +1,26 @@
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
- * @noflow
7
+ * @flow strict
8
8
  */
9
9
 
10
+ import { type ASTNode } from './ast';
10
11
  import { visit } from './visitor';
12
+ import { printBlockString } from './blockString';
11
13
 
12
14
  /**
13
15
  * Converts an AST into a string, using one set of reasonable
14
16
  * formatting rules.
15
17
  */
16
- export function print(ast) {
18
+ export function print(ast: ASTNode): string {
17
19
  return visit(ast, { leave: printDocASTReducer });
18
20
  }
19
21
 
20
- const printDocASTReducer = {
22
+ // TODO: provide better type coverage in future
23
+ const printDocASTReducer: any = {
21
24
  Name: node => node.value,
22
25
  Variable: node => '$' + node.name,
23
26
 
@@ -88,7 +91,7 @@ const printDocASTReducer = {
88
91
  FloatValue: ({ value }) => value,
89
92
  StringValue: ({ value, block: isBlockString }, key) =>
90
93
  isBlockString
91
- ? printBlockString(value, key === 'description')
94
+ ? printBlockString(value, key === 'description' ? '' : ' ')
92
95
  : JSON.stringify(value),
93
96
  BooleanValue: ({ value }) => (value ? 'true' : 'false'),
94
97
  NullValue: () => 'null',
@@ -271,15 +274,3 @@ function isMultiline(string) {
271
274
  function hasMultilineItems(maybeArray) {
272
275
  return maybeArray && maybeArray.some(isMultiline);
273
276
  }
274
-
275
- /**
276
- * Print a block string in the indented block form by adding a leading and
277
- * trailing blank line. However, if a block string starts with whitespace and is
278
- * a single-line, adding a leading blank line would strip that whitespace.
279
- */
280
- function printBlockString(value, isDescription) {
281
- const escaped = value.replace(/"""/g, '\\"""');
282
- return isMultiline(value) || (value[0] !== ' ' && value[0] !== '\t')
283
- ? `"""\n${isDescription ? escaped : indent(escaped)}\n"""`
284
- : `"""${escaped.replace(/"$/, '"\n')}"""`;
285
- }
@@ -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,6 +7,7 @@
7
7
  *
8
8
  */
9
9
  import { visit } from './visitor';
10
+ import { printBlockString } from './blockString';
10
11
  /**
11
12
  * Converts an AST into a string, using one set of reasonable
12
13
  * formatting rules.
@@ -16,7 +17,8 @@ export function print(ast) {
16
17
  return visit(ast, {
17
18
  leave: printDocASTReducer
18
19
  });
19
- }
20
+ } // TODO: provide better type coverage in future
21
+
20
22
  var printDocASTReducer = {
21
23
  Name: function Name(node) {
22
24
  return node.value;
@@ -97,7 +99,7 @@ var printDocASTReducer = {
97
99
  StringValue: function StringValue(_ref10, key) {
98
100
  var value = _ref10.value,
99
101
  isBlockString = _ref10.block;
100
- return isBlockString ? printBlockString(value, key === 'description') : JSON.stringify(value);
102
+ return isBlockString ? printBlockString(value, key === 'description' ? '' : ' ') : JSON.stringify(value);
101
103
  },
102
104
  BooleanValue: function BooleanValue(_ref11) {
103
105
  var value = _ref11.value;
@@ -303,14 +305,3 @@ function isMultiline(string) {
303
305
  function hasMultilineItems(maybeArray) {
304
306
  return maybeArray && maybeArray.some(isMultiline);
305
307
  }
306
- /**
307
- * Print a block string in the indented block form by adding a leading and
308
- * trailing blank line. However, if a block string starts with whitespace and is
309
- * a single-line, adding a leading blank line would strip that whitespace.
310
- */
311
-
312
-
313
- function printBlockString(value, isDescription) {
314
- var escaped = value.replace(/"""/g, '\\"""');
315
- return isMultiline(value) || value[0] !== ' ' && value[0] !== '\t' ? "\"\"\"\n".concat(isDescription ? escaped : indent(escaped), "\n\"\"\"") : "\"\"\"".concat(escaped.replace(/"$/, '"\n'), "\"\"\"");
316
- }
@@ -12,7 +12,7 @@ var _defineToStringTag = _interopRequireDefault(require("../jsutils/defineToStri
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
14
  /**
15
- * Copyright (c) 2015-present, Facebook, Inc.
15
+ * Copyright (c) Facebook, Inc. and its affiliates.
16
16
  *
17
17
  * This source code is licensed under the MIT license found in the
18
18
  * LICENSE file in the root directory of this source tree.
@@ -41,4 +41,4 @@ var Source = function Source(body, name, locationOffset) {
41
41
 
42
42
 
43
43
  exports.Source = Source;
44
- (0, _defineToStringTag.default)(Source);
44
+ (0, _defineToStringTag.default)(Source);
@@ -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.
@@ -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.
@@ -28,4 +28,4 @@ export var Source = function Source(body, name, locationOffset) {
28
28
  !(this.locationOffset.column > 0) ? invariant(0, 'column in locationOffset is 1-indexed and must be positive') : void 0;
29
29
  }; // Conditionally apply `[Symbol.toStringTag]` if `Symbol`s are supported
30
30
 
31
- defineToStringTag(Source);
31
+ defineToStringTag(Source);
@@ -14,7 +14,7 @@ var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
16
  /**
17
- * Copyright (c) 2015-present, Facebook, Inc.
17
+ * Copyright (c) Facebook, Inc. and its affiliates.
18
18
  *
19
19
  * This source code is licensed under the MIT license found in the
20
20
  * LICENSE file in the root directory of this source tree.
@@ -192,10 +192,8 @@ function visit(root, visitor) {
192
192
  } else {
193
193
  var clone = {};
194
194
 
195
- var _arr = Object.keys(node);
196
-
197
- for (var _i = 0; _i < _arr.length; _i++) {
198
- var k = _arr[_i];
195
+ for (var _i = 0, _Object$keys = Object.keys(node); _i < _Object$keys.length; _i++) {
196
+ var k = _Object$keys[_i];
199
197
  clone[k] = node[k];
200
198
  }
201
199
 
@@ -448,4 +446,4 @@ function getVisitFn(visitor, kind, isLeaving) {
448
446
  }
449
447
  }
450
448
  }
451
- }
449
+ }
@@ -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,8 @@
8
8
  */
9
9
 
10
10
  import inspect from '../jsutils/inspect';
11
- import type { ASTNode, ASTKindToNode } from './ast';
12
- import type { TypeInfo } from '../utilities/TypeInfo';
11
+ import { type ASTNode, type ASTKindToNode } from './ast';
12
+ import { type TypeInfo } from '../utilities/TypeInfo';
13
13
 
14
14
  /**
15
15
  * A visitor is provided to visit, it contains the collection of