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
@@ -0,0 +1,114 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.dedentBlockStringValue = dedentBlockStringValue;
7
+ exports.getBlockStringIndentation = getBlockStringIndentation;
8
+ exports.printBlockString = printBlockString;
9
+
10
+ /**
11
+ * Copyright (c) Facebook, Inc. and its affiliates.
12
+ *
13
+ * This source code is licensed under the MIT license found in the
14
+ * LICENSE file in the root directory of this source tree.
15
+ *
16
+ *
17
+ */
18
+
19
+ /**
20
+ * Produces the value of a block string from its parsed raw value, similar to
21
+ * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
22
+ *
23
+ * This implements the GraphQL spec's BlockStringValue() static algorithm.
24
+ */
25
+ function dedentBlockStringValue(rawString) {
26
+ // Expand a block string's raw value into independent lines.
27
+ var lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first.
28
+
29
+ var commonIndent = getBlockStringIndentation(lines);
30
+
31
+ if (commonIndent !== 0) {
32
+ for (var i = 1; i < lines.length; i++) {
33
+ lines[i] = lines[i].slice(commonIndent);
34
+ }
35
+ } // Remove leading and trailing blank lines.
36
+
37
+
38
+ while (lines.length > 0 && isBlank(lines[0])) {
39
+ lines.shift();
40
+ }
41
+
42
+ while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
43
+ lines.pop();
44
+ } // Return a string of the lines joined with U+000A.
45
+
46
+
47
+ return lines.join('\n');
48
+ } // @internal
49
+
50
+
51
+ function getBlockStringIndentation(lines) {
52
+ var commonIndent = null;
53
+
54
+ for (var i = 1; i < lines.length; i++) {
55
+ var line = lines[i];
56
+ var indent = leadingWhitespace(line);
57
+
58
+ if (indent === line.length) {
59
+ continue; // skip empty lines
60
+ }
61
+
62
+ if (commonIndent === null || indent < commonIndent) {
63
+ commonIndent = indent;
64
+
65
+ if (commonIndent === 0) {
66
+ break;
67
+ }
68
+ }
69
+ }
70
+
71
+ return commonIndent === null ? 0 : commonIndent;
72
+ }
73
+
74
+ function leadingWhitespace(str) {
75
+ var i = 0;
76
+
77
+ while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
78
+ i++;
79
+ }
80
+
81
+ return i;
82
+ }
83
+
84
+ function isBlank(str) {
85
+ return leadingWhitespace(str) === str.length;
86
+ }
87
+ /**
88
+ * Print a block string in the indented block form by adding a leading and
89
+ * trailing blank line. However, if a block string starts with whitespace and is
90
+ * a single-line, adding a leading blank line would strip that whitespace.
91
+ */
92
+
93
+
94
+ function printBlockString(value) {
95
+ var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
96
+ var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
97
+ var isSingleLine = value.indexOf('\n') === -1;
98
+ var hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
99
+ var hasTrailingQuote = value[value.length - 1] === '"';
100
+ var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;
101
+ var result = ''; // Format a multi-line block quote to account for leading space.
102
+
103
+ if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
104
+ result += '\n' + indentation;
105
+ }
106
+
107
+ result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
108
+
109
+ if (printAsMultipleLines) {
110
+ result += '\n';
111
+ }
112
+
113
+ return '"""' + result.replace(/"""/g, '\\"""') + '"""';
114
+ }
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ /**
11
+ * Produces the value of a block string from its parsed raw value, similar to
12
+ * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
13
+ *
14
+ * This implements the GraphQL spec's BlockStringValue() static algorithm.
15
+ */
16
+ export function dedentBlockStringValue(rawString: string): string {
17
+ // Expand a block string's raw value into independent lines.
18
+ const lines = rawString.split(/\r\n|[\n\r]/g);
19
+
20
+ // Remove common indentation from all lines but first.
21
+ const commonIndent = getBlockStringIndentation(lines);
22
+
23
+ if (commonIndent !== 0) {
24
+ for (let i = 1; i < lines.length; i++) {
25
+ lines[i] = lines[i].slice(commonIndent);
26
+ }
27
+ }
28
+
29
+ // Remove leading and trailing blank lines.
30
+ while (lines.length > 0 && isBlank(lines[0])) {
31
+ lines.shift();
32
+ }
33
+ while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
34
+ lines.pop();
35
+ }
36
+
37
+ // Return a string of the lines joined with U+000A.
38
+ return lines.join('\n');
39
+ }
40
+
41
+ // @internal
42
+ export function getBlockStringIndentation(lines: Array<string>): number {
43
+ let commonIndent = null;
44
+
45
+ for (let i = 1; i < lines.length; i++) {
46
+ const line = lines[i];
47
+ const indent = leadingWhitespace(line);
48
+ if (indent === line.length) {
49
+ continue; // skip empty lines
50
+ }
51
+
52
+ if (commonIndent === null || indent < commonIndent) {
53
+ commonIndent = indent;
54
+ if (commonIndent === 0) {
55
+ break;
56
+ }
57
+ }
58
+ }
59
+
60
+ return commonIndent === null ? 0 : commonIndent;
61
+ }
62
+
63
+ function leadingWhitespace(str) {
64
+ let i = 0;
65
+ while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
66
+ i++;
67
+ }
68
+ return i;
69
+ }
70
+
71
+ function isBlank(str) {
72
+ return leadingWhitespace(str) === str.length;
73
+ }
74
+
75
+ /**
76
+ * Print a block string in the indented block form by adding a leading and
77
+ * trailing blank line. However, if a block string starts with whitespace and is
78
+ * a single-line, adding a leading blank line would strip that whitespace.
79
+ */
80
+ export function printBlockString(
81
+ value: string,
82
+ indentation?: string = '',
83
+ preferMultipleLines?: boolean = false,
84
+ ): string {
85
+ const isSingleLine = value.indexOf('\n') === -1;
86
+ const hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
87
+ const hasTrailingQuote = value[value.length - 1] === '"';
88
+ const printAsMultipleLines =
89
+ !isSingleLine || hasTrailingQuote || preferMultipleLines;
90
+
91
+ let result = '';
92
+ // Format a multi-line block quote to account for leading space.
93
+ if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
94
+ result += '\n' + indentation;
95
+ }
96
+ result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
97
+ if (printAsMultipleLines) {
98
+ result += '\n';
99
+ }
100
+
101
+ return '"""' + result.replace(/"""/g, '\\"""') + '"""';
102
+ }
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Copyright (c) Facebook, Inc. and its affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ */
9
+
10
+ /**
11
+ * Produces the value of a block string from its parsed raw value, similar to
12
+ * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.
13
+ *
14
+ * This implements the GraphQL spec's BlockStringValue() static algorithm.
15
+ */
16
+ export function dedentBlockStringValue(rawString) {
17
+ // Expand a block string's raw value into independent lines.
18
+ var lines = rawString.split(/\r\n|[\n\r]/g); // Remove common indentation from all lines but first.
19
+
20
+ var commonIndent = getBlockStringIndentation(lines);
21
+
22
+ if (commonIndent !== 0) {
23
+ for (var i = 1; i < lines.length; i++) {
24
+ lines[i] = lines[i].slice(commonIndent);
25
+ }
26
+ } // Remove leading and trailing blank lines.
27
+
28
+
29
+ while (lines.length > 0 && isBlank(lines[0])) {
30
+ lines.shift();
31
+ }
32
+
33
+ while (lines.length > 0 && isBlank(lines[lines.length - 1])) {
34
+ lines.pop();
35
+ } // Return a string of the lines joined with U+000A.
36
+
37
+
38
+ return lines.join('\n');
39
+ } // @internal
40
+
41
+ export function getBlockStringIndentation(lines) {
42
+ var commonIndent = null;
43
+
44
+ for (var i = 1; i < lines.length; i++) {
45
+ var line = lines[i];
46
+ var indent = leadingWhitespace(line);
47
+
48
+ if (indent === line.length) {
49
+ continue; // skip empty lines
50
+ }
51
+
52
+ if (commonIndent === null || indent < commonIndent) {
53
+ commonIndent = indent;
54
+
55
+ if (commonIndent === 0) {
56
+ break;
57
+ }
58
+ }
59
+ }
60
+
61
+ return commonIndent === null ? 0 : commonIndent;
62
+ }
63
+
64
+ function leadingWhitespace(str) {
65
+ var i = 0;
66
+
67
+ while (i < str.length && (str[i] === ' ' || str[i] === '\t')) {
68
+ i++;
69
+ }
70
+
71
+ return i;
72
+ }
73
+
74
+ function isBlank(str) {
75
+ return leadingWhitespace(str) === str.length;
76
+ }
77
+ /**
78
+ * Print a block string in the indented block form by adding a leading and
79
+ * trailing blank line. However, if a block string starts with whitespace and is
80
+ * a single-line, adding a leading blank line would strip that whitespace.
81
+ */
82
+
83
+
84
+ export function printBlockString(value) {
85
+ var indentation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
86
+ var preferMultipleLines = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
87
+ var isSingleLine = value.indexOf('\n') === -1;
88
+ var hasLeadingSpace = value[0] === ' ' || value[0] === '\t';
89
+ var hasTrailingQuote = value[value.length - 1] === '"';
90
+ var printAsMultipleLines = !isSingleLine || hasTrailingQuote || preferMultipleLines;
91
+ var result = ''; // Format a multi-line block quote to account for leading space.
92
+
93
+ if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {
94
+ result += '\n' + indentation;
95
+ }
96
+
97
+ result += indentation ? value.replace(/\n/g, '\n' + indentation) : value;
98
+
99
+ if (printAsMultipleLines) {
100
+ result += '\n';
101
+ }
102
+
103
+ return '"""' + result.replace(/"""/g, '\\"""') + '"""';
104
+ }
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.DirectiveLocation = void 0;
7
7
 
8
8
  /**
9
- * Copyright (c) 2015-present, Facebook, Inc.
9
+ * Copyright (c) Facebook, Inc. and its affiliates.
10
10
  *
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
@@ -44,4 +44,4 @@ var DirectiveLocation = Object.freeze({
44
44
  * The enum type representing the directive location values.
45
45
  */
46
46
 
47
- exports.DirectiveLocation = DirectiveLocation;
47
+ exports.DirectiveLocation = DirectiveLocation;
@@ -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.
@@ -35,4 +35,4 @@ export var DirectiveLocation = Object.freeze({
35
35
  });
36
36
  /**
37
37
  * The enum type representing the directive location values.
38
- */
38
+ */
package/language/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "Source", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _source.Source;
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "getLocation", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -51,12 +57,6 @@ Object.defineProperty(exports, "print", {
51
57
  return _printer.print;
52
58
  }
53
59
  });
54
- Object.defineProperty(exports, "Source", {
55
- enumerable: true,
56
- get: function get() {
57
- return _source.Source;
58
- }
59
- });
60
60
  Object.defineProperty(exports, "visit", {
61
61
  enumerable: true,
62
62
  get: function get() {
@@ -148,6 +148,8 @@ Object.defineProperty(exports, "DirectiveLocation", {
148
148
  }
149
149
  });
150
150
 
151
+ var _source = require("./source");
152
+
151
153
  var _location = require("./location");
152
154
 
153
155
  var _kinds = require("./kinds");
@@ -158,10 +160,8 @@ var _parser = require("./parser");
158
160
 
159
161
  var _printer = require("./printer");
160
162
 
161
- var _source = require("./source");
162
-
163
163
  var _visitor = require("./visitor");
164
164
 
165
165
  var _predicates = require("./predicates");
166
166
 
167
- var _directiveLocation = require("./directiveLocation");
167
+ var _directiveLocation = require("./directiveLocation");
@@ -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,14 +7,22 @@
7
7
  * @flow strict
8
8
  */
9
9
 
10
+ export { Source } from './source';
11
+
10
12
  export { getLocation } from './location';
11
13
  export type { SourceLocation } from './location';
14
+
12
15
  export { Kind } from './kinds';
13
16
  export type { KindEnum } from './kinds';
17
+
14
18
  export { createLexer, TokenKind } from './lexer';
19
+ export type { Lexer, TokenKindEnum } from './lexer';
20
+
15
21
  export { parse, parseValue, parseType } from './parser';
22
+ export type { ParseOptions } from './parser';
23
+
16
24
  export { print } from './printer';
17
- export { Source } from './source';
25
+
18
26
  export {
19
27
  visit,
20
28
  visitInParallel,
@@ -24,9 +32,6 @@ export {
24
32
  } from './visitor';
25
33
  export type { ASTVisitor, Visitor, VisitFn, VisitorKeyMap } from './visitor';
26
34
 
27
- export type { Lexer, TokenKindEnum } from './lexer';
28
- export type { ParseOptions } from './parser';
29
-
30
35
  export type {
31
36
  Location,
32
37
  Token,
@@ -1,17 +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
+ export { Source } from './source';
9
10
  export { getLocation } from './location';
10
11
  export { Kind } from './kinds';
11
12
  export { createLexer, TokenKind } from './lexer';
12
13
  export { parse, parseValue, parseType } from './parser';
13
14
  export { print } from './printer';
14
- export { Source } from './source';
15
15
  export { visit, visitInParallel, visitWithTypeInfo, getVisitFn, BREAK } from './visitor';
16
16
  export { isDefinitionNode, isExecutableDefinitionNode, isSelectionNode, isValueNode, isTypeNode, isTypeSystemDefinitionNode, isTypeDefinitionNode, isTypeSystemExtensionNode, isTypeExtensionNode } from './predicates';
17
- export { DirectiveLocation } from './directiveLocation';
17
+ export { DirectiveLocation } from './directiveLocation';
package/language/kinds.js CHANGED
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Kind = void 0;
7
7
 
8
8
  /**
9
- * Copyright (c) 2015-present, Facebook, Inc.
9
+ * Copyright (c) Facebook, Inc. and its affiliates.
10
10
  *
11
11
  * This source code is licensed under the MIT license found in the
12
12
  * LICENSE file in the root directory of this source tree.
@@ -77,4 +77,4 @@ var Kind = Object.freeze({
77
77
  * The enum type representing the possible kind values of AST nodes.
78
78
  */
79
79
 
80
- exports.Kind = Kind;
80
+ exports.Kind = Kind;
@@ -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.
@@ -68,4 +68,4 @@ export var Kind = Object.freeze({
68
68
  });
69
69
  /**
70
70
  * The enum type representing the possible kind values of AST nodes.
71
- */
71
+ */