graphql 15.3.0 → 15.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +10 -0
  3. package/error/GraphQLError.js +8 -8
  4. package/error/GraphQLError.js.flow +2 -3
  5. package/error/GraphQLError.mjs +2 -2
  6. package/error/formatError.js +1 -1
  7. package/error/formatError.js.flow +0 -1
  8. package/error/index.js +4 -4
  9. package/error/index.js.flow +0 -1
  10. package/error/locatedError.d.ts +2 -2
  11. package/error/locatedError.js +10 -5
  12. package/error/locatedError.js.flow +10 -4
  13. package/error/locatedError.mjs +6 -4
  14. package/error/syntaxError.js +1 -1
  15. package/error/syntaxError.js.flow +0 -1
  16. package/execution/execute.d.ts +0 -15
  17. package/execution/execute.js +104 -104
  18. package/execution/execute.js.flow +119 -133
  19. package/execution/execute.mjs +86 -82
  20. package/execution/index.js +3 -3
  21. package/execution/index.js.flow +0 -1
  22. package/execution/values.js +11 -11
  23. package/execution/values.js.flow +0 -1
  24. package/graphql.js +5 -5
  25. package/graphql.js.flow +0 -1
  26. package/index.d.ts +1 -0
  27. package/index.js +9 -9
  28. package/index.js.flow +0 -1
  29. package/jsutils/ObjMap.js.flow +0 -1
  30. package/jsutils/Path.js.flow +0 -1
  31. package/jsutils/PromiseOrValue.js.flow +0 -1
  32. package/jsutils/defineInspect.js +2 -2
  33. package/jsutils/defineInspect.js.flow +0 -1
  34. package/jsutils/devAssert.js.flow +0 -1
  35. package/jsutils/didYouMean.js.flow +0 -1
  36. package/jsutils/identityFunc.js.flow +0 -1
  37. package/jsutils/inspect.js +1 -2
  38. package/jsutils/inspect.js.flow +10 -8
  39. package/jsutils/inspect.mjs +1 -1
  40. package/jsutils/instanceOf.js +15 -9
  41. package/jsutils/instanceOf.js.flow +13 -7
  42. package/jsutils/instanceOf.mjs +13 -5
  43. package/jsutils/invariant.js.flow +0 -1
  44. package/jsutils/isAsyncIterable.js +13 -0
  45. package/jsutils/isAsyncIterable.js.flow +14 -0
  46. package/jsutils/isAsyncIterable.mjs +10 -0
  47. package/jsutils/isObjectLike.js.flow +0 -1
  48. package/jsutils/isPromise.js.flow +0 -1
  49. package/jsutils/keyMap.js.flow +0 -1
  50. package/jsutils/keyValMap.js.flow +0 -1
  51. package/jsutils/mapValue.js +1 -1
  52. package/jsutils/mapValue.js.flow +0 -1
  53. package/jsutils/memoize3.js +2 -5
  54. package/jsutils/memoize3.js.flow +2 -5
  55. package/jsutils/memoize3.mjs +2 -5
  56. package/jsutils/naturalCompare.js +69 -0
  57. package/jsutils/naturalCompare.js.flow +59 -0
  58. package/jsutils/naturalCompare.mjs +61 -0
  59. package/jsutils/nodejsCustomInspectSymbol.js.flow +0 -1
  60. package/jsutils/printPathArray.js.flow +0 -1
  61. package/jsutils/promiseForObject.js.flow +0 -1
  62. package/jsutils/promiseReduce.js +1 -1
  63. package/jsutils/promiseReduce.js.flow +0 -1
  64. package/jsutils/safeArrayFrom.js +73 -0
  65. package/jsutils/safeArrayFrom.js.flow +59 -0
  66. package/jsutils/safeArrayFrom.mjs +66 -0
  67. package/jsutils/suggestionList.js +5 -1
  68. package/jsutils/suggestionList.js.flow +3 -2
  69. package/jsutils/suggestionList.mjs +3 -1
  70. package/jsutils/toObjMap.js +1 -1
  71. package/jsutils/toObjMap.js.flow +0 -1
  72. package/language/ast.js +1 -1
  73. package/language/ast.js.flow +0 -1
  74. package/language/blockString.d.ts +1 -1
  75. package/language/blockString.js +53 -32
  76. package/language/blockString.js.flow +51 -36
  77. package/language/blockString.mjs +54 -33
  78. package/language/directiveLocation.js.flow +0 -1
  79. package/language/experimentalOnlineParser/grammar.d.ts +1006 -0
  80. package/language/experimentalOnlineParser/grammar.js +987 -0
  81. package/language/experimentalOnlineParser/grammar.js.flow +1000 -0
  82. package/language/experimentalOnlineParser/grammar.mjs +980 -0
  83. package/language/experimentalOnlineParser/index.d.ts +6 -0
  84. package/language/experimentalOnlineParser/index.js +31 -0
  85. package/language/experimentalOnlineParser/index.js.flow +7 -0
  86. package/language/experimentalOnlineParser/index.mjs +1 -0
  87. package/language/experimentalOnlineParser/onlineParser.d.ts +125 -0
  88. package/language/experimentalOnlineParser/onlineParser.js +604 -0
  89. package/language/experimentalOnlineParser/onlineParser.js.flow +723 -0
  90. package/language/experimentalOnlineParser/onlineParser.mjs +587 -0
  91. package/language/index.js +12 -12
  92. package/language/index.js.flow +0 -1
  93. package/language/kinds.js.flow +0 -1
  94. package/language/lexer.js +242 -183
  95. package/language/lexer.js.flow +188 -184
  96. package/language/lexer.mjs +238 -179
  97. package/language/location.js.flow +0 -1
  98. package/language/parser.js +73 -68
  99. package/language/parser.js.flow +62 -57
  100. package/language/parser.mjs +64 -60
  101. package/language/predicates.js +1 -1
  102. package/language/predicates.js.flow +0 -1
  103. package/language/printLocation.js +1 -1
  104. package/language/printLocation.js.flow +0 -1
  105. package/language/printer.js +20 -13
  106. package/language/printer.js.flow +26 -25
  107. package/language/printer.mjs +18 -11
  108. package/language/source.d.ts +7 -0
  109. package/language/source.js +20 -3
  110. package/language/source.js.flow +21 -3
  111. package/language/source.mjs +14 -1
  112. package/language/tokenKind.js.flow +0 -1
  113. package/language/visitor.js +2 -2
  114. package/language/visitor.js.flow +0 -1
  115. package/package.json +2 -3
  116. package/polyfills/arrayFrom.js +2 -2
  117. package/polyfills/arrayFrom.js.flow +1 -2
  118. package/polyfills/arrayFrom.mjs +1 -1
  119. package/polyfills/find.js +1 -1
  120. package/polyfills/find.js.flow +1 -2
  121. package/polyfills/find.mjs +1 -1
  122. package/polyfills/isFinite.js +1 -1
  123. package/polyfills/isFinite.js.flow +1 -2
  124. package/polyfills/isFinite.mjs +1 -1
  125. package/polyfills/isInteger.js +1 -1
  126. package/polyfills/isInteger.js.flow +1 -2
  127. package/polyfills/isInteger.mjs +1 -1
  128. package/polyfills/objectEntries.js +1 -1
  129. package/polyfills/objectEntries.js.flow +1 -2
  130. package/polyfills/objectEntries.mjs +1 -1
  131. package/polyfills/objectValues.js +1 -1
  132. package/polyfills/objectValues.js.flow +1 -2
  133. package/polyfills/objectValues.mjs +1 -1
  134. package/polyfills/symbols.js +3 -5
  135. package/polyfills/symbols.js.flow +9 -6
  136. package/polyfills/symbols.mjs +3 -5
  137. package/subscription/index.js +1 -1
  138. package/subscription/index.js.flow +0 -1
  139. package/subscription/mapAsyncIterator.js +2 -2
  140. package/subscription/mapAsyncIterator.js.flow +8 -9
  141. package/subscription/mapAsyncIterator.mjs +1 -1
  142. package/subscription/subscribe.js +61 -73
  143. package/subscription/subscribe.js.flow +71 -85
  144. package/subscription/subscribe.mjs +53 -65
  145. package/type/definition.d.ts +16 -6
  146. package/type/definition.js +37 -32
  147. package/type/definition.js.flow +93 -63
  148. package/type/definition.mjs +19 -14
  149. package/type/directives.js +17 -16
  150. package/type/directives.js.flow +20 -13
  151. package/type/directives.mjs +6 -5
  152. package/type/index.js +6 -6
  153. package/type/index.js.flow +0 -1
  154. package/type/introspection.js +86 -65
  155. package/type/introspection.js.flow +75 -43
  156. package/type/introspection.mjs +79 -58
  157. package/type/scalars.js +9 -9
  158. package/type/scalars.js.flow +1 -2
  159. package/type/scalars.mjs +1 -1
  160. package/type/schema.js +13 -13
  161. package/type/schema.js.flow +2 -3
  162. package/type/schema.mjs +1 -1
  163. package/type/validate.js +52 -19
  164. package/type/validate.js.flow +54 -8
  165. package/type/validate.mjs +43 -9
  166. package/utilities/TypeInfo.js +7 -7
  167. package/utilities/TypeInfo.js.flow +1 -2
  168. package/utilities/assertValidName.js +2 -2
  169. package/utilities/assertValidName.js.flow +0 -1
  170. package/utilities/astFromValue.js +14 -16
  171. package/utilities/astFromValue.js.flow +6 -7
  172. package/utilities/astFromValue.mjs +6 -7
  173. package/utilities/buildASTSchema.js +17 -27
  174. package/utilities/buildASTSchema.js.flow +5 -21
  175. package/utilities/buildASTSchema.mjs +11 -21
  176. package/utilities/buildClientSchema.js +16 -15
  177. package/utilities/buildClientSchema.js.flow +28 -12
  178. package/utilities/buildClientSchema.mjs +5 -4
  179. package/utilities/coerceInputValue.js +17 -18
  180. package/utilities/coerceInputValue.js.flow +12 -10
  181. package/utilities/coerceInputValue.mjs +7 -7
  182. package/utilities/concatAST.js +9 -8
  183. package/utilities/concatAST.js.flow +8 -8
  184. package/utilities/concatAST.mjs +9 -6
  185. package/utilities/extendSchema.js +26 -19
  186. package/utilities/extendSchema.js.flow +19 -7
  187. package/utilities/extendSchema.mjs +8 -1
  188. package/utilities/findBreakingChanges.js +15 -11
  189. package/utilities/findBreakingChanges.js.flow +6 -3
  190. package/utilities/findBreakingChanges.mjs +5 -2
  191. package/utilities/findDeprecatedUsages.js +2 -2
  192. package/utilities/findDeprecatedUsages.js.flow +0 -1
  193. package/utilities/getIntrospectionQuery.d.ts +6 -0
  194. package/utilities/getIntrospectionQuery.js +8 -2
  195. package/utilities/getIntrospectionQuery.js.flow +17 -5
  196. package/utilities/getIntrospectionQuery.mjs +8 -2
  197. package/utilities/getOperationAST.js +1 -1
  198. package/utilities/getOperationAST.js.flow +0 -1
  199. package/utilities/getOperationRootType.js +1 -1
  200. package/utilities/getOperationRootType.js.flow +0 -1
  201. package/utilities/index.d.ts +3 -0
  202. package/utilities/index.js +22 -22
  203. package/utilities/index.js.flow +0 -1
  204. package/utilities/introspectionFromSchema.js +7 -5
  205. package/utilities/introspectionFromSchema.js.flow +2 -1
  206. package/utilities/introspectionFromSchema.mjs +3 -1
  207. package/utilities/lexicographicSortSchema.js +13 -9
  208. package/utilities/lexicographicSortSchema.js.flow +21 -13
  209. package/utilities/lexicographicSortSchema.mjs +5 -2
  210. package/utilities/printSchema.js +15 -16
  211. package/utilities/printSchema.js.flow +23 -16
  212. package/utilities/printSchema.mjs +5 -6
  213. package/utilities/separateOperations.js +46 -42
  214. package/utilities/separateOperations.js.flow +46 -37
  215. package/utilities/separateOperations.mjs +44 -40
  216. package/utilities/stripIgnoredCharacters.js +6 -16
  217. package/utilities/stripIgnoredCharacters.js.flow +4 -13
  218. package/utilities/stripIgnoredCharacters.mjs +3 -10
  219. package/utilities/typeComparators.js +1 -1
  220. package/utilities/typeComparators.js.flow +0 -1
  221. package/utilities/typeFromAST.js +6 -6
  222. package/utilities/typeFromAST.js.flow +2 -3
  223. package/utilities/typeFromAST.mjs +2 -2
  224. package/utilities/typedQueryDocumentNode.d.ts +20 -0
  225. package/utilities/valueFromAST.js +6 -6
  226. package/utilities/valueFromAST.js.flow +4 -2
  227. package/utilities/valueFromASTUntyped.js +4 -4
  228. package/utilities/valueFromASTUntyped.js.flow +0 -1
  229. package/validation/ValidationContext.js +3 -3
  230. package/validation/ValidationContext.js.flow +3 -4
  231. package/validation/index.js +38 -38
  232. package/validation/index.js.flow +0 -1
  233. package/validation/rules/ExecutableDefinitions.js +1 -1
  234. package/validation/rules/ExecutableDefinitions.js.flow +0 -1
  235. package/validation/rules/ExecutableDefinitionsRule.js +3 -3
  236. package/validation/rules/ExecutableDefinitionsRule.js.flow +0 -1
  237. package/validation/rules/FieldsOnCorrectTypeRule.js +8 -6
  238. package/validation/rules/FieldsOnCorrectTypeRule.js.flow +2 -2
  239. package/validation/rules/FieldsOnCorrectTypeRule.mjs +2 -1
  240. package/validation/rules/FragmentsOnCompositeTypesRule.js +4 -4
  241. package/validation/rules/FragmentsOnCompositeTypesRule.js.flow +0 -1
  242. package/validation/rules/KnownArgumentNamesRule.js +5 -5
  243. package/validation/rules/KnownArgumentNamesRule.js.flow +1 -1
  244. package/validation/rules/KnownDirectivesRule.js +6 -6
  245. package/validation/rules/KnownDirectivesRule.js.flow +4 -3
  246. package/validation/rules/KnownFragmentNamesRule.js +1 -1
  247. package/validation/rules/KnownFragmentNamesRule.js.flow +0 -1
  248. package/validation/rules/KnownTypeNamesRule.js +6 -6
  249. package/validation/rules/KnownTypeNamesRule.js.flow +1 -2
  250. package/validation/rules/LoneAnonymousOperationRule.js +2 -2
  251. package/validation/rules/LoneAnonymousOperationRule.js.flow +0 -1
  252. package/validation/rules/LoneSchemaDefinition.js +1 -1
  253. package/validation/rules/LoneSchemaDefinition.js.flow +0 -1
  254. package/validation/rules/LoneSchemaDefinitionRule.js +1 -1
  255. package/validation/rules/LoneSchemaDefinitionRule.js.flow +0 -1
  256. package/validation/rules/NoFragmentCyclesRule.js +1 -1
  257. package/validation/rules/NoFragmentCyclesRule.js.flow +1 -2
  258. package/validation/rules/NoUndefinedVariablesRule.js +1 -1
  259. package/validation/rules/NoUndefinedVariablesRule.js.flow +0 -1
  260. package/validation/rules/NoUnusedFragmentsRule.js +1 -1
  261. package/validation/rules/NoUnusedFragmentsRule.js.flow +0 -1
  262. package/validation/rules/NoUnusedVariablesRule.js +1 -1
  263. package/validation/rules/NoUnusedVariablesRule.js.flow +0 -1
  264. package/validation/rules/OverlappingFieldsCanBeMergedRule.js +20 -20
  265. package/validation/rules/OverlappingFieldsCanBeMergedRule.js.flow +14 -14
  266. package/validation/rules/OverlappingFieldsCanBeMergedRule.mjs +12 -12
  267. package/validation/rules/PossibleFragmentSpreadsRule.js +5 -5
  268. package/validation/rules/PossibleFragmentSpreadsRule.js.flow +5 -2
  269. package/validation/rules/PossibleTypeExtensions.js +1 -1
  270. package/validation/rules/PossibleTypeExtensions.js.flow +0 -1
  271. package/validation/rules/PossibleTypeExtensionsRule.js +8 -8
  272. package/validation/rules/PossibleTypeExtensionsRule.js.flow +6 -4
  273. package/validation/rules/ProvidedRequiredArgumentsRule.js +7 -7
  274. package/validation/rules/ProvidedRequiredArgumentsRule.js.flow +4 -3
  275. package/validation/rules/ScalarLeafsRule.js +3 -3
  276. package/validation/rules/ScalarLeafsRule.js.flow +0 -1
  277. package/validation/rules/SingleFieldSubscriptionsRule.js +1 -1
  278. package/validation/rules/SingleFieldSubscriptionsRule.js.flow +0 -1
  279. package/validation/rules/UniqueArgumentNamesRule.js +1 -1
  280. package/validation/rules/UniqueArgumentNamesRule.js.flow +0 -1
  281. package/validation/rules/UniqueDirectiveNames.js +1 -1
  282. package/validation/rules/UniqueDirectiveNames.js.flow +0 -1
  283. package/validation/rules/UniqueDirectiveNamesRule.js +2 -2
  284. package/validation/rules/UniqueDirectiveNamesRule.js.flow +0 -1
  285. package/validation/rules/UniqueDirectiveNamesRule.mjs +1 -1
  286. package/validation/rules/UniqueDirectivesPerLocationRule.js +4 -4
  287. package/validation/rules/UniqueDirectivesPerLocationRule.js.flow +0 -1
  288. package/validation/rules/UniqueEnumValueNames.js +1 -1
  289. package/validation/rules/UniqueEnumValueNames.js.flow +0 -1
  290. package/validation/rules/UniqueEnumValueNamesRule.js +2 -2
  291. package/validation/rules/UniqueEnumValueNamesRule.js.flow +7 -2
  292. package/validation/rules/UniqueFieldDefinitionNames.js +1 -1
  293. package/validation/rules/UniqueFieldDefinitionNames.js.flow +0 -1
  294. package/validation/rules/UniqueFieldDefinitionNamesRule.js +3 -3
  295. package/validation/rules/UniqueFieldDefinitionNamesRule.js.flow +13 -4
  296. package/validation/rules/UniqueFieldDefinitionNamesRule.mjs +1 -1
  297. package/validation/rules/UniqueFragmentNamesRule.js +1 -1
  298. package/validation/rules/UniqueFragmentNamesRule.js.flow +0 -1
  299. package/validation/rules/UniqueInputFieldNamesRule.js +1 -1
  300. package/validation/rules/UniqueInputFieldNamesRule.js.flow +0 -1
  301. package/validation/rules/UniqueOperationNamesRule.js +1 -1
  302. package/validation/rules/UniqueOperationNamesRule.js.flow +0 -1
  303. package/validation/rules/UniqueOperationTypes.js +1 -1
  304. package/validation/rules/UniqueOperationTypes.js.flow +0 -1
  305. package/validation/rules/UniqueOperationTypesRule.js +1 -1
  306. package/validation/rules/UniqueOperationTypesRule.js.flow +7 -2
  307. package/validation/rules/UniqueTypeNames.js +1 -1
  308. package/validation/rules/UniqueTypeNames.js.flow +0 -1
  309. package/validation/rules/UniqueTypeNamesRule.js +2 -2
  310. package/validation/rules/UniqueTypeNamesRule.js.flow +0 -1
  311. package/validation/rules/UniqueTypeNamesRule.mjs +1 -1
  312. package/validation/rules/UniqueVariableNamesRule.js +1 -1
  313. package/validation/rules/UniqueVariableNamesRule.js.flow +0 -1
  314. package/validation/rules/ValuesOfCorrectTypeRule.js +8 -8
  315. package/validation/rules/ValuesOfCorrectTypeRule.js.flow +0 -1
  316. package/validation/rules/VariablesAreInputTypesRule.js +4 -4
  317. package/validation/rules/VariablesAreInputTypesRule.js.flow +0 -1
  318. package/validation/rules/VariablesInAllowedPositionRule.js +6 -6
  319. package/validation/rules/VariablesInAllowedPositionRule.js.flow +0 -1
  320. package/validation/rules/custom/NoDeprecatedCustomRule.js +47 -9
  321. package/validation/rules/custom/NoDeprecatedCustomRule.js.flow +56 -13
  322. package/validation/rules/custom/NoDeprecatedCustomRule.mjs +43 -8
  323. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js +3 -3
  324. package/validation/rules/custom/NoSchemaIntrospectionCustomRule.js.flow +0 -1
  325. package/validation/specifiedRules.js +33 -33
  326. package/validation/specifiedRules.js.flow +0 -1
  327. package/validation/validate.js +7 -7
  328. package/validation/validate.js.flow +4 -5
  329. package/version.js +3 -3
  330. package/version.js.flow +3 -4
  331. package/version.mjs +3 -3
  332. package/jsutils/isCollection.js +0 -47
  333. package/jsutils/isCollection.js.flow +0 -39
  334. package/jsutils/isCollection.mjs +0 -40
  335. package/polyfills/flatMap.js +0 -30
  336. package/polyfills/flatMap.js.flow +0 -28
  337. package/polyfills/flatMap.mjs +0 -23
@@ -1,10 +1,8 @@
1
- import inspect from "../jsutils/inspect.mjs";
2
- import devAssert from "../jsutils/devAssert.mjs";
3
1
  import { syntaxError } from "../error/syntaxError.mjs";
4
2
  import { Kind } from "./kinds.mjs";
5
3
  import { Location } from "./ast.mjs";
6
- import { Source } from "./source.mjs";
7
4
  import { TokenKind } from "./tokenKind.mjs";
5
+ import { Source, isSource } from "./source.mjs";
8
6
  import { DirectiveLocation } from "./directiveLocation.mjs";
9
7
  import { Lexer, isPunctuatorTokenKind } from "./lexer.mjs";
10
8
  /**
@@ -55,11 +53,21 @@ export function parseType(source, options) {
55
53
  parser.expectToken(TokenKind.EOF);
56
54
  return type;
57
55
  }
56
+ /**
57
+ * This class is exported only to assist people in implementing their own parsers
58
+ * without duplicating too much code and should be used only as last resort for cases
59
+ * such as experimental syntax or if certain features could not be contributed upstream.
60
+ *
61
+ * It is still part of the internal API and is versioned, so any changes to it are never
62
+ * considered breaking changes. If you still need to support multiple versions of the
63
+ * library, please use the `versionInfo` variable for version detection.
64
+ *
65
+ * @internal
66
+ */
58
67
 
59
- var Parser = /*#__PURE__*/function () {
68
+ export var Parser = /*#__PURE__*/function () {
60
69
  function Parser(source, options) {
61
- var sourceObj = typeof source === 'string' ? new Source(source) : source;
62
- sourceObj instanceof Source || devAssert(0, "Must provide Source. Received: ".concat(inspect(sourceObj), "."));
70
+ var sourceObj = isSource(source) ? source : new Source(source);
63
71
  this._lexer = new Lexer(sourceObj);
64
72
  this._options = options;
65
73
  }
@@ -804,21 +812,25 @@ var Parser = /*#__PURE__*/function () {
804
812
  ;
805
813
 
806
814
  _proto.parseImplementsInterfaces = function parseImplementsInterfaces() {
807
- var types = [];
815
+ var _this$_options2;
816
+
817
+ if (!this.expectOptionalKeyword('implements')) {
818
+ return [];
819
+ }
820
+
821
+ if (((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true) {
822
+ var types = []; // Optional leading ampersand
808
823
 
809
- if (this.expectOptionalKeyword('implements')) {
810
- // Optional leading ampersand
811
824
  this.expectOptionalToken(TokenKind.AMP);
812
825
 
813
826
  do {
814
- var _this$_options2;
815
-
816
827
  types.push(this.parseNamedType());
817
- } while (this.expectOptionalToken(TokenKind.AMP) || // Legacy support for the SDL?
818
- ((_this$_options2 = this._options) === null || _this$_options2 === void 0 ? void 0 : _this$_options2.allowLegacySDLImplementsInterfaces) === true && this.peek(TokenKind.NAME));
828
+ } while (this.expectOptionalToken(TokenKind.AMP) || this.peek(TokenKind.NAME));
829
+
830
+ return types;
819
831
  }
820
832
 
821
- return types;
833
+ return this.delimitedMany(TokenKind.AMP, this.parseNamedType);
822
834
  }
823
835
  /**
824
836
  * FieldsDefinition : { FieldDefinition+ }
@@ -954,18 +966,7 @@ var Parser = /*#__PURE__*/function () {
954
966
  ;
955
967
 
956
968
  _proto.parseUnionMemberTypes = function parseUnionMemberTypes() {
957
- var types = [];
958
-
959
- if (this.expectOptionalToken(TokenKind.EQUALS)) {
960
- // Optional leading pipe
961
- this.expectOptionalToken(TokenKind.PIPE);
962
-
963
- do {
964
- types.push(this.parseNamedType());
965
- } while (this.expectOptionalToken(TokenKind.PIPE));
966
- }
967
-
968
- return types;
969
+ return this.expectOptionalToken(TokenKind.EQUALS) ? this.delimitedMany(TokenKind.PIPE, this.parseNamedType) : [];
969
970
  }
970
971
  /**
971
972
  * EnumTypeDefinition :
@@ -1316,15 +1317,7 @@ var Parser = /*#__PURE__*/function () {
1316
1317
  ;
1317
1318
 
1318
1319
  _proto.parseDirectiveLocations = function parseDirectiveLocations() {
1319
- // Optional leading pipe
1320
- this.expectOptionalToken(TokenKind.PIPE);
1321
- var locations = [];
1322
-
1323
- do {
1324
- locations.push(this.parseDirectiveLocation());
1325
- } while (this.expectOptionalToken(TokenKind.PIPE));
1326
-
1327
- return locations;
1320
+ return this.delimitedMany(TokenKind.PIPE, this.parseDirectiveLocation);
1328
1321
  }
1329
1322
  /*
1330
1323
  * DirectiveLocation :
@@ -1367,8 +1360,7 @@ var Parser = /*#__PURE__*/function () {
1367
1360
  } // Core parsing utility functions
1368
1361
 
1369
1362
  /**
1370
- * Returns a location object, used to identify the place in
1371
- * the source that created a given parsed object.
1363
+ * Returns a location object, used to identify the place in the source that created a given parsed object.
1372
1364
  */
1373
1365
  ;
1374
1366
 
@@ -1388,8 +1380,8 @@ var Parser = /*#__PURE__*/function () {
1388
1380
  return this._lexer.token.kind === kind;
1389
1381
  }
1390
1382
  /**
1391
- * If the next token is of the given kind, return that token after advancing
1392
- * the lexer. Otherwise, do not change the parser state and throw an error.
1383
+ * If the next token is of the given kind, return that token after advancing the lexer.
1384
+ * Otherwise, do not change the parser state and throw an error.
1393
1385
  */
1394
1386
  ;
1395
1387
 
@@ -1405,8 +1397,8 @@ var Parser = /*#__PURE__*/function () {
1405
1397
  throw syntaxError(this._lexer.source, token.start, "Expected ".concat(getTokenKindDesc(kind), ", found ").concat(getTokenDesc(token), "."));
1406
1398
  }
1407
1399
  /**
1408
- * If the next token is of the given kind, return that token after advancing
1409
- * the lexer. Otherwise, do not change the parser state and return undefined.
1400
+ * If the next token is of the given kind, return that token after advancing the lexer.
1401
+ * Otherwise, do not change the parser state and return undefined.
1410
1402
  */
1411
1403
  ;
1412
1404
 
@@ -1437,8 +1429,8 @@ var Parser = /*#__PURE__*/function () {
1437
1429
  }
1438
1430
  }
1439
1431
  /**
1440
- * If the next token is a given keyword, return "true" after advancing
1441
- * the lexer. Otherwise, do not change the parser state and return "false".
1432
+ * If the next token is a given keyword, return "true" after advancing the lexer.
1433
+ * Otherwise, do not change the parser state and return "false".
1442
1434
  */
1443
1435
  ;
1444
1436
 
@@ -1454,8 +1446,7 @@ var Parser = /*#__PURE__*/function () {
1454
1446
  return false;
1455
1447
  }
1456
1448
  /**
1457
- * Helper function for creating an error when an unexpected lexed token
1458
- * is encountered.
1449
+ * Helper function for creating an error when an unexpected lexed token is encountered.
1459
1450
  */
1460
1451
  ;
1461
1452
 
@@ -1464,10 +1455,9 @@ var Parser = /*#__PURE__*/function () {
1464
1455
  return syntaxError(this._lexer.source, token.start, "Unexpected ".concat(getTokenDesc(token), "."));
1465
1456
  }
1466
1457
  /**
1467
- * Returns a possibly empty list of parse nodes, determined by
1468
- * the parseFn. This list begins with a lex token of openKind
1469
- * and ends with a lex token of closeKind. Advances the parser
1470
- * to the next lex token after the closing token.
1458
+ * Returns a possibly empty list of parse nodes, determined by the parseFn.
1459
+ * This list begins with a lex token of openKind and ends with a lex token of closeKind.
1460
+ * Advances the parser to the next lex token after the closing token.
1471
1461
  */
1472
1462
  ;
1473
1463
 
@@ -1483,10 +1473,9 @@ var Parser = /*#__PURE__*/function () {
1483
1473
  }
1484
1474
  /**
1485
1475
  * Returns a list of parse nodes, determined by the parseFn.
1486
- * It can be empty only if open token is missing otherwise it will always
1487
- * return non-empty list that begins with a lex token of openKind and ends
1488
- * with a lex token of closeKind. Advances the parser to the next lex token
1489
- * after the closing token.
1476
+ * It can be empty only if open token is missing otherwise it will always return non-empty list
1477
+ * that begins with a lex token of openKind and ends with a lex token of closeKind.
1478
+ * Advances the parser to the next lex token after the closing token.
1490
1479
  */
1491
1480
  ;
1492
1481
 
@@ -1504,10 +1493,9 @@ var Parser = /*#__PURE__*/function () {
1504
1493
  return [];
1505
1494
  }
1506
1495
  /**
1507
- * Returns a non-empty list of parse nodes, determined by
1508
- * the parseFn. This list begins with a lex token of openKind
1509
- * and ends with a lex token of closeKind. Advances the parser
1510
- * to the next lex token after the closing token.
1496
+ * Returns a non-empty list of parse nodes, determined by the parseFn.
1497
+ * This list begins with a lex token of openKind and ends with a lex token of closeKind.
1498
+ * Advances the parser to the next lex token after the closing token.
1511
1499
  */
1512
1500
  ;
1513
1501
 
@@ -1519,22 +1507,38 @@ var Parser = /*#__PURE__*/function () {
1519
1507
  nodes.push(parseFn.call(this));
1520
1508
  } while (!this.expectOptionalToken(closeKind));
1521
1509
 
1510
+ return nodes;
1511
+ }
1512
+ /**
1513
+ * Returns a non-empty list of parse nodes, determined by the parseFn.
1514
+ * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.
1515
+ * Advances the parser to the next lex token after last item in the list.
1516
+ */
1517
+ ;
1518
+
1519
+ _proto.delimitedMany = function delimitedMany(delimiterKind, parseFn) {
1520
+ this.expectOptionalToken(delimiterKind);
1521
+ var nodes = [];
1522
+
1523
+ do {
1524
+ nodes.push(parseFn.call(this));
1525
+ } while (this.expectOptionalToken(delimiterKind));
1526
+
1522
1527
  return nodes;
1523
1528
  };
1524
1529
 
1525
1530
  return Parser;
1526
1531
  }();
1527
1532
  /**
1528
- * A helper function to describe a token as a string for debugging
1533
+ * A helper function to describe a token as a string for debugging.
1529
1534
  */
1530
1535
 
1531
-
1532
1536
  function getTokenDesc(token) {
1533
1537
  var value = token.value;
1534
1538
  return getTokenKindDesc(token.kind) + (value != null ? " \"".concat(value, "\"") : '');
1535
1539
  }
1536
1540
  /**
1537
- * A helper function to describe a token kind as a string for debugging
1541
+ * A helper function to describe a token kind as a string for debugging.
1538
1542
  */
1539
1543
 
1540
1544
 
@@ -13,7 +13,7 @@ exports.isTypeDefinitionNode = isTypeDefinitionNode;
13
13
  exports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;
14
14
  exports.isTypeExtensionNode = isTypeExtensionNode;
15
15
 
16
- var _kinds = require("./kinds");
16
+ var _kinds = require("./kinds.js");
17
17
 
18
18
  function isDefinitionNode(node) {
19
19
  return isExecutableDefinitionNode(node) || isTypeSystemDefinitionNode(node) || isTypeSystemExtensionNode(node);
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { ASTNode } from './ast';
4
3
  import { Kind } from './kinds';
5
4
 
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.printLocation = printLocation;
7
7
  exports.printSourceLocation = printSourceLocation;
8
8
 
9
- var _location = require("./location");
9
+ var _location = require("./location.js");
10
10
 
11
11
  /**
12
12
  * Render a helpful description of the location in the GraphQL Source document.
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { Source } from './source';
4
3
  import type { Location } from './ast';
5
4
  import type { SourceLocation } from './location';
@@ -5,9 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.print = print;
7
7
 
8
- var _visitor = require("./visitor");
8
+ var _visitor = require("./visitor.js");
9
9
 
10
- var _blockString = require("./blockString");
10
+ var _blockString = require("./blockString.js");
11
11
 
12
12
  /**
13
13
  * Converts an AST into a string, using one set of reasonable
@@ -17,8 +17,9 @@ function print(ast) {
17
17
  return (0, _visitor.visit)(ast, {
18
18
  leave: printDocASTReducer
19
19
  });
20
- } // TODO: provide better type coverage in future
20
+ }
21
21
 
22
+ var MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future
22
23
 
23
24
  var printDocASTReducer = {
24
25
  Name: function Name(node) {
@@ -58,7 +59,14 @@ var printDocASTReducer = {
58
59
  args = _ref3.arguments,
59
60
  directives = _ref3.directives,
60
61
  selectionSet = _ref3.selectionSet;
61
- return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');
62
+ var prefix = wrap('', alias, ': ') + name;
63
+ var argsLine = prefix + wrap('(', join(args, ', '), ')');
64
+
65
+ if (argsLine.length > MAX_LINE_LENGTH) {
66
+ argsLine = prefix + wrap('(\n', indent(join(args, '\n')), '\n)');
67
+ }
68
+
69
+ return join([argsLine, join(directives, ' '), selectionSet], ' ');
62
70
  },
63
71
  Argument: function Argument(_ref4) {
64
72
  var name = _ref4.name,
@@ -289,27 +297,26 @@ function join(maybeArray) {
289
297
 
290
298
 
291
299
  function block(array) {
292
- return array && array.length !== 0 ? '{\n' + indent(join(array, '\n')) + '\n}' : '';
300
+ return wrap('{\n', indent(join(array, '\n')), '\n}');
293
301
  }
294
302
  /**
295
- * If maybeString is not null or empty, then wrap with start and end, otherwise
296
- * print an empty string.
303
+ * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.
297
304
  */
298
305
 
299
306
 
300
307
  function wrap(start, maybeString) {
301
308
  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
302
- return maybeString ? start + maybeString + end : '';
309
+ return maybeString != null && maybeString !== '' ? start + maybeString + end : '';
303
310
  }
304
311
 
305
- function indent(maybeString) {
306
- return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
312
+ function indent(str) {
313
+ return wrap(' ', str.replace(/\n/g, '\n '));
307
314
  }
308
315
 
309
- function isMultiline(string) {
310
- return string.indexOf('\n') !== -1;
316
+ function isMultiline(str) {
317
+ return str.indexOf('\n') !== -1;
311
318
  }
312
319
 
313
320
  function hasMultilineItems(maybeArray) {
314
- return maybeArray && maybeArray.some(isMultiline);
321
+ return maybeArray != null && maybeArray.some(isMultiline);
315
322
  }
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  import type { ASTNode } from './ast';
4
3
 
5
4
  import { visit } from './visitor';
@@ -13,6 +12,8 @@ export function print(ast: ASTNode): string {
13
12
  return visit(ast, { leave: printDocASTReducer });
14
13
  }
15
14
 
15
+ const MAX_LINE_LENGTH = 80;
16
+
16
17
  // TODO: provide better type coverage in future
17
18
  const printDocASTReducer: any = {
18
19
  Name: (node) => node.value,
@@ -43,15 +44,16 @@ const printDocASTReducer: any = {
43
44
  wrap(' ', join(directives, ' ')),
44
45
  SelectionSet: ({ selections }) => block(selections),
45
46
 
46
- Field: ({ alias, name, arguments: args, directives, selectionSet }) =>
47
- join(
48
- [
49
- wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'),
50
- join(directives, ' '),
51
- selectionSet,
52
- ],
53
- ' ',
54
- ),
47
+ Field: ({ alias, name, arguments: args, directives, selectionSet }) => {
48
+ const prefix = wrap('', alias, ': ') + name;
49
+ let argsLine = prefix + wrap('(', join(args, ', '), ')');
50
+
51
+ if (argsLine.length > MAX_LINE_LENGTH) {
52
+ argsLine = prefix + wrap('(\n', indent(join(args, '\n')), '\n)');
53
+ }
54
+
55
+ return join([argsLine, join(directives, ' '), selectionSet], ' ');
56
+ },
55
57
 
56
58
  Argument: ({ name, value }) => name + ': ' + value,
57
59
 
@@ -256,7 +258,7 @@ function addDescription(cb) {
256
258
  * Given maybeArray, print an empty string if it is null or empty, otherwise
257
259
  * print all items together separated by separator if provided
258
260
  */
259
- function join(maybeArray: ?Array<string>, separator = '') {
261
+ function join(maybeArray: ?Array<string>, separator = ''): string {
260
262
  return maybeArray?.filter((x) => x).join(separator) ?? '';
261
263
  }
262
264
 
@@ -264,28 +266,27 @@ function join(maybeArray: ?Array<string>, separator = '') {
264
266
  * Given array, print each item on its own line, wrapped in an
265
267
  * indented "{ }" block.
266
268
  */
267
- function block(array) {
268
- return array && array.length !== 0
269
- ? '{\n' + indent(join(array, '\n')) + '\n}'
270
- : '';
269
+ function block(array: ?Array<string>): string {
270
+ return wrap('{\n', indent(join(array, '\n')), '\n}');
271
271
  }
272
272
 
273
273
  /**
274
- * If maybeString is not null or empty, then wrap with start and end, otherwise
275
- * print an empty string.
274
+ * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.
276
275
  */
277
- function wrap(start, maybeString, end = '') {
278
- return maybeString ? start + maybeString + end : '';
276
+ function wrap(start: string, maybeString: ?string, end: string = ''): string {
277
+ return maybeString != null && maybeString !== ''
278
+ ? start + maybeString + end
279
+ : '';
279
280
  }
280
281
 
281
- function indent(maybeString) {
282
- return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
282
+ function indent(str: string): string {
283
+ return wrap(' ', str.replace(/\n/g, '\n '));
283
284
  }
284
285
 
285
- function isMultiline(string) {
286
- return string.indexOf('\n') !== -1;
286
+ function isMultiline(str: string): boolean {
287
+ return str.indexOf('\n') !== -1;
287
288
  }
288
289
 
289
- function hasMultilineItems(maybeArray) {
290
- return maybeArray && maybeArray.some(isMultiline);
290
+ function hasMultilineItems(maybeArray: ?Array<string>): boolean {
291
+ return maybeArray != null && maybeArray.some(isMultiline);
291
292
  }
@@ -9,7 +9,8 @@ export function print(ast) {
9
9
  return visit(ast, {
10
10
  leave: printDocASTReducer
11
11
  });
12
- } // TODO: provide better type coverage in future
12
+ }
13
+ var MAX_LINE_LENGTH = 80; // TODO: provide better type coverage in future
13
14
 
14
15
  var printDocASTReducer = {
15
16
  Name: function Name(node) {
@@ -49,7 +50,14 @@ var printDocASTReducer = {
49
50
  args = _ref3.arguments,
50
51
  directives = _ref3.directives,
51
52
  selectionSet = _ref3.selectionSet;
52
- return join([wrap('', alias, ': ') + name + wrap('(', join(args, ', '), ')'), join(directives, ' '), selectionSet], ' ');
53
+ var prefix = wrap('', alias, ': ') + name;
54
+ var argsLine = prefix + wrap('(', join(args, ', '), ')');
55
+
56
+ if (argsLine.length > MAX_LINE_LENGTH) {
57
+ argsLine = prefix + wrap('(\n', indent(join(args, '\n')), '\n)');
58
+ }
59
+
60
+ return join([argsLine, join(directives, ' '), selectionSet], ' ');
53
61
  },
54
62
  Argument: function Argument(_ref4) {
55
63
  var name = _ref4.name,
@@ -280,27 +288,26 @@ function join(maybeArray) {
280
288
 
281
289
 
282
290
  function block(array) {
283
- return array && array.length !== 0 ? '{\n' + indent(join(array, '\n')) + '\n}' : '';
291
+ return wrap('{\n', indent(join(array, '\n')), '\n}');
284
292
  }
285
293
  /**
286
- * If maybeString is not null or empty, then wrap with start and end, otherwise
287
- * print an empty string.
294
+ * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.
288
295
  */
289
296
 
290
297
 
291
298
  function wrap(start, maybeString) {
292
299
  var end = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
293
- return maybeString ? start + maybeString + end : '';
300
+ return maybeString != null && maybeString !== '' ? start + maybeString + end : '';
294
301
  }
295
302
 
296
- function indent(maybeString) {
297
- return maybeString && ' ' + maybeString.replace(/\n/g, '\n ');
303
+ function indent(str) {
304
+ return wrap(' ', str.replace(/\n/g, '\n '));
298
305
  }
299
306
 
300
- function isMultiline(string) {
301
- return string.indexOf('\n') !== -1;
307
+ function isMultiline(str) {
308
+ return str.indexOf('\n') !== -1;
302
309
  }
303
310
 
304
311
  function hasMultilineItems(maybeArray) {
305
- return maybeArray && maybeArray.some(isMultiline);
312
+ return maybeArray != null && maybeArray.some(isMultiline);
306
313
  }
@@ -16,3 +16,10 @@ export class Source {
16
16
  locationOffset: Location;
17
17
  constructor(body: string, name?: string, locationOffset?: Location);
18
18
  }
19
+
20
+ /**
21
+ * Test if the given value is a Source object.
22
+ *
23
+ * @internal
24
+ */
25
+ export function isSource(source: any): source is Source;
@@ -3,11 +3,16 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.isSource = isSource;
6
7
  exports.Source = void 0;
7
8
 
8
- var _symbols = require("../polyfills/symbols");
9
+ var _symbols = require("../polyfills/symbols.js");
9
10
 
10
- var _devAssert = _interopRequireDefault(require("../jsutils/devAssert"));
11
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
12
+
13
+ var _devAssert = _interopRequireDefault(require("../jsutils/devAssert.js"));
14
+
15
+ var _instanceOf = _interopRequireDefault(require("../jsutils/instanceOf.js"));
11
16
 
12
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
18
 
@@ -29,12 +34,13 @@ var Source = /*#__PURE__*/function () {
29
34
  line: 1,
30
35
  column: 1
31
36
  };
37
+ typeof body === 'string' || (0, _devAssert.default)(0, "Body must be a string. Received: ".concat((0, _inspect.default)(body), "."));
32
38
  this.body = body;
33
39
  this.name = name;
34
40
  this.locationOffset = locationOffset;
35
41
  this.locationOffset.line > 0 || (0, _devAssert.default)(0, 'line in locationOffset is 1-indexed and must be positive.');
36
42
  this.locationOffset.column > 0 || (0, _devAssert.default)(0, 'column in locationOffset is 1-indexed and must be positive.');
37
- } // $FlowFixMe Flow doesn't support computed properties yet
43
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
38
44
 
39
45
 
40
46
  _createClass(Source, [{
@@ -46,5 +52,16 @@ var Source = /*#__PURE__*/function () {
46
52
 
47
53
  return Source;
48
54
  }();
55
+ /**
56
+ * Test if the given value is a Source object.
57
+ *
58
+ * @internal
59
+ */
60
+
49
61
 
50
62
  exports.Source = Source;
63
+
64
+ // eslint-disable-next-line no-redeclare
65
+ function isSource(source) {
66
+ return (0, _instanceOf.default)(source, Source);
67
+ }
@@ -1,8 +1,9 @@
1
1
  // @flow strict
2
-
3
2
  import { SYMBOL_TO_STRING_TAG } from '../polyfills/symbols';
4
3
 
4
+ import inspect from '../jsutils/inspect';
5
5
  import devAssert from '../jsutils/devAssert';
6
+ import instanceOf from '../jsutils/instanceOf';
6
7
 
7
8
  type Location = {|
8
9
  line: number,
@@ -25,7 +26,12 @@ export class Source {
25
26
  body: string,
26
27
  name: string = 'GraphQL request',
27
28
  locationOffset: Location = { line: 1, column: 1 },
28
- ): void {
29
+ ) {
30
+ devAssert(
31
+ typeof body === 'string',
32
+ `Body must be a string. Received: ${inspect(body)}.`,
33
+ );
34
+
29
35
  this.body = body;
30
36
  this.name = name;
31
37
  this.locationOffset = locationOffset;
@@ -39,8 +45,20 @@ export class Source {
39
45
  );
40
46
  }
41
47
 
42
- // $FlowFixMe Flow doesn't support computed properties yet
48
+ // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
43
49
  get [SYMBOL_TO_STRING_TAG]() {
44
50
  return 'Source';
45
51
  }
46
52
  }
53
+
54
+ /**
55
+ * Test if the given value is a Source object.
56
+ *
57
+ * @internal
58
+ */
59
+ declare function isSource(source: mixed): boolean %checks(source instanceof
60
+ Source);
61
+ // eslint-disable-next-line no-redeclare
62
+ export function isSource(source) {
63
+ return instanceOf(source, Source);
64
+ }
@@ -3,7 +3,9 @@ function _defineProperties(target, props) { for (var i = 0; i < props.length; i+
3
3
  function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
4
4
 
5
5
  import { SYMBOL_TO_STRING_TAG } from "../polyfills/symbols.mjs";
6
+ import inspect from "../jsutils/inspect.mjs";
6
7
  import devAssert from "../jsutils/devAssert.mjs";
8
+ import instanceOf from "../jsutils/instanceOf.mjs";
7
9
 
8
10
  /**
9
11
  * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are
@@ -19,12 +21,13 @@ export var Source = /*#__PURE__*/function () {
19
21
  line: 1,
20
22
  column: 1
21
23
  };
24
+ typeof body === 'string' || devAssert(0, "Body must be a string. Received: ".concat(inspect(body), "."));
22
25
  this.body = body;
23
26
  this.name = name;
24
27
  this.locationOffset = locationOffset;
25
28
  this.locationOffset.line > 0 || devAssert(0, 'line in locationOffset is 1-indexed and must be positive.');
26
29
  this.locationOffset.column > 0 || devAssert(0, 'column in locationOffset is 1-indexed and must be positive.');
27
- } // $FlowFixMe Flow doesn't support computed properties yet
30
+ } // $FlowFixMe[unsupported-syntax] Flow doesn't support computed properties yet
28
31
 
29
32
 
30
33
  _createClass(Source, [{
@@ -36,3 +39,13 @@ export var Source = /*#__PURE__*/function () {
36
39
 
37
40
  return Source;
38
41
  }();
42
+ /**
43
+ * Test if the given value is a Source object.
44
+ *
45
+ * @internal
46
+ */
47
+
48
+ // eslint-disable-next-line no-redeclare
49
+ export function isSource(source) {
50
+ return instanceOf(source, Source);
51
+ }
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  /**
4
3
  * An exported enum describing the different kinds of tokens that the
5
4
  * lexer emits.
@@ -8,9 +8,9 @@ exports.visitInParallel = visitInParallel;
8
8
  exports.getVisitFn = getVisitFn;
9
9
  exports.BREAK = exports.QueryDocumentKeys = void 0;
10
10
 
11
- var _inspect = _interopRequireDefault(require("../jsutils/inspect"));
11
+ var _inspect = _interopRequireDefault(require("../jsutils/inspect.js"));
12
12
 
13
- var _ast = require("./ast");
13
+ var _ast = require("./ast.js");
14
14
 
15
15
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
16