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
@@ -0,0 +1,587 @@
1
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
2
+
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
4
+
5
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
6
+
7
+ import { Lexer } from "../lexer.mjs";
8
+ import { Source } from "../source.mjs";
9
+ import GraphQLGrammar from "./grammar.mjs";
10
+ export var TokenKind = {
11
+ NAME: 'Name',
12
+ INT: 'Int',
13
+ FLOAT: 'Float',
14
+ STRING: 'String',
15
+ BLOCK_STRING: 'BlockString',
16
+ COMMENT: 'Comment',
17
+ PUNCTUATION: 'Punctuation',
18
+ EOF: '<EOF>',
19
+ INVALID: 'Invalid'
20
+ };
21
+ export var RuleKind = {
22
+ TOKEN_CONSTRAINT: 'TokenConstraint',
23
+ OF_TYPE_CONSTRAINT: 'OfTypeConstraint',
24
+ LIST_OF_TYPE_CONSTRAINT: 'ListOfTypeConstraint',
25
+ PEEK_CONSTRAINT: 'PeekConstraint',
26
+ CONSTRAINTS_SET: 'ConstraintsSet',
27
+ CONSTRAINTS_SET_ROOT: 'ConstraintsSetRoot',
28
+ RULE_NAME: 'RuleName',
29
+ INVALID: 'Invalid'
30
+ };
31
+ export var OnlineParser = /*#__PURE__*/function () {
32
+ function OnlineParser(source, state, config) {
33
+ var _config$tabSize;
34
+
35
+ this.state = state || OnlineParser.startState();
36
+ this._config = {
37
+ tabSize: (_config$tabSize = config === null || config === void 0 ? void 0 : config.tabSize) !== null && _config$tabSize !== void 0 ? _config$tabSize : 2
38
+ };
39
+ this._lexer = new Lexer(new Source(source));
40
+ }
41
+
42
+ OnlineParser.startState = function startState() {
43
+ return {
44
+ rules: [// $FlowFixMe[cannot-spread-interface]
45
+ _objectSpread(_objectSpread({
46
+ name: 'Document',
47
+ state: 'Document',
48
+ kind: 'ListOfTypeConstraint'
49
+ }, GraphQLGrammar.Document), {}, {
50
+ expanded: false,
51
+ depth: 1,
52
+ step: 1
53
+ })],
54
+ name: null,
55
+ type: null,
56
+ levels: [],
57
+ indentLevel: 0,
58
+ kind: function kind() {
59
+ var _this$rules;
60
+
61
+ return ((_this$rules = this.rules[this.rules.length - 1]) === null || _this$rules === void 0 ? void 0 : _this$rules.state) || '';
62
+ },
63
+ step: function step() {
64
+ var _this$rules2;
65
+
66
+ return ((_this$rules2 = this.rules[this.rules.length - 1]) === null || _this$rules2 === void 0 ? void 0 : _this$rules2.step) || 0;
67
+ }
68
+ };
69
+ };
70
+
71
+ OnlineParser.copyState = function copyState(state) {
72
+ return {
73
+ name: state.name,
74
+ type: state.type,
75
+ rules: JSON.parse(JSON.stringify(state.rules)),
76
+ levels: [].concat(state.levels),
77
+ indentLevel: state.indentLevel,
78
+ kind: function kind() {
79
+ var _this$rules3;
80
+
81
+ return ((_this$rules3 = this.rules[this.rules.length - 1]) === null || _this$rules3 === void 0 ? void 0 : _this$rules3.state) || '';
82
+ },
83
+ step: function step() {
84
+ var _this$rules4;
85
+
86
+ return ((_this$rules4 = this.rules[this.rules.length - 1]) === null || _this$rules4 === void 0 ? void 0 : _this$rules4.step) || 0;
87
+ }
88
+ };
89
+ };
90
+
91
+ var _proto = OnlineParser.prototype;
92
+
93
+ _proto.sol = function sol() {
94
+ return this._lexer.source.locationOffset.line === 1 && this._lexer.source.locationOffset.column === 1;
95
+ };
96
+
97
+ _proto.parseToken = function parseToken() {
98
+ var rule = this._getNextRule();
99
+
100
+ if (this.sol()) {
101
+ this.state.indentLevel = Math.floor(this.indentation() / this._config.tabSize);
102
+ }
103
+
104
+ if (!rule) {
105
+ return {
106
+ kind: TokenKind.INVALID,
107
+ value: ''
108
+ };
109
+ }
110
+
111
+ var token;
112
+
113
+ if (this._lookAhead().kind === '<EOF>') {
114
+ return {
115
+ kind: TokenKind.EOF,
116
+ value: '',
117
+ ruleName: rule.name
118
+ };
119
+ }
120
+
121
+ switch (rule.kind) {
122
+ case RuleKind.TOKEN_CONSTRAINT:
123
+ token = this._parseTokenConstraint(rule);
124
+ break;
125
+
126
+ case RuleKind.LIST_OF_TYPE_CONSTRAINT:
127
+ token = this._parseListOfTypeConstraint(rule);
128
+ break;
129
+
130
+ case RuleKind.OF_TYPE_CONSTRAINT:
131
+ token = this._parseOfTypeConstraint(rule);
132
+ break;
133
+
134
+ case RuleKind.PEEK_CONSTRAINT:
135
+ token = this._parsePeekConstraint(rule);
136
+ break;
137
+
138
+ case RuleKind.CONSTRAINTS_SET_ROOT:
139
+ token = this._parseConstraintsSetRule(rule);
140
+ break;
141
+
142
+ default:
143
+ return {
144
+ kind: TokenKind.INVALID,
145
+ value: '',
146
+ ruleName: rule.name
147
+ };
148
+ }
149
+
150
+ if (token && token.kind === TokenKind.INVALID) {
151
+ if (rule.optional === true) {
152
+ this.state.rules.pop();
153
+ } else {
154
+ this._rollbackRule();
155
+ }
156
+
157
+ return this.parseToken() || token;
158
+ }
159
+
160
+ return token;
161
+ };
162
+
163
+ _proto.indentation = function indentation() {
164
+ var match = this._lexer.source.body.match(/\s*/);
165
+
166
+ var indent = 0;
167
+
168
+ if (match && match.length === 0) {
169
+ var whiteSpaces = match[0];
170
+ var pos = 0;
171
+
172
+ while (whiteSpaces.length > pos) {
173
+ if (whiteSpaces.charCodeAt(pos) === 9) {
174
+ indent += 2;
175
+ } else {
176
+ indent++;
177
+ }
178
+
179
+ pos++;
180
+ }
181
+ }
182
+
183
+ return indent;
184
+ };
185
+
186
+ _proto._parseTokenConstraint = function _parseTokenConstraint(rule) {
187
+ rule.expanded = true;
188
+
189
+ var token = this._lookAhead();
190
+
191
+ if (!this._matchToken(token, rule)) {
192
+ return {
193
+ kind: TokenKind.INVALID,
194
+ value: '',
195
+ tokenName: rule.tokenName,
196
+ ruleName: rule.name
197
+ };
198
+ }
199
+
200
+ this._advanceToken();
201
+
202
+ var parserToken = this._transformLexerToken(token, rule);
203
+
204
+ this._popMatchedRule(parserToken);
205
+
206
+ return parserToken;
207
+ };
208
+
209
+ _proto._parseListOfTypeConstraint = function _parseListOfTypeConstraint(rule) {
210
+ this._pushRule(GraphQLGrammar[rule.listOfType], rule.depth + 1, rule.listOfType, 1, rule.state);
211
+
212
+ rule.expanded = true;
213
+ var token = this.parseToken();
214
+ return token;
215
+ };
216
+
217
+ _proto._parseOfTypeConstraint = function _parseOfTypeConstraint(rule) {
218
+ if (rule.expanded) {
219
+ this._popMatchedRule();
220
+
221
+ return this.parseToken();
222
+ }
223
+
224
+ this._pushRule(rule.ofType, rule.depth + 1, rule.tokenName, 1, rule.state);
225
+
226
+ rule.expanded = true;
227
+ var token = this.parseToken();
228
+ return token;
229
+ };
230
+
231
+ _proto._parsePeekConstraint = function _parsePeekConstraint(rule) {
232
+ if (rule.expanded) {
233
+ this._popMatchedRule();
234
+
235
+ return this.parseToken();
236
+ }
237
+
238
+ while (!rule.matched && rule.index < rule.peek.length - 1) {
239
+ rule.index++;
240
+ var constraint = rule.peek[rule.index];
241
+ var ifCondition = constraint.ifCondition;
242
+
243
+ if (typeof ifCondition === 'string') {
244
+ ifCondition = GraphQLGrammar[ifCondition];
245
+ }
246
+
247
+ var token = this._lookAhead();
248
+
249
+ if (ifCondition && this._matchToken(token, ifCondition)) {
250
+ rule.matched = true;
251
+ rule.expanded = true;
252
+
253
+ this._pushRule(constraint.expect, rule.depth + 1, '', 1, rule.state);
254
+
255
+ token = this.parseToken();
256
+ return token;
257
+ }
258
+ }
259
+
260
+ return {
261
+ kind: TokenKind.INVALID,
262
+ value: '',
263
+ ruleName: rule.name
264
+ };
265
+ };
266
+
267
+ _proto._parseConstraintsSetRule = function _parseConstraintsSetRule(rule) {
268
+ if (rule.expanded) {
269
+ this._popMatchedRule();
270
+
271
+ return this.parseToken();
272
+ }
273
+
274
+ for (var index = rule.constraints.length - 1; index >= 0; index--) {
275
+ this._pushRule(rule.constraints[index], rule.depth + 1, '', index, rule.state);
276
+ }
277
+
278
+ rule.expanded = true;
279
+ return this.parseToken();
280
+ };
281
+
282
+ _proto._matchToken = function _matchToken(token, rule) {
283
+ if (typeof token.value === 'string') {
284
+ if (typeof rule.ofValue === 'string' && token.value !== rule.ofValue || Array.isArray(rule.oneOf) && !rule.oneOf.includes(token.value) || typeof rule.ofValue !== 'string' && !Array.isArray(rule.oneOf) && token.kind !== rule.token) {
285
+ return false;
286
+ }
287
+
288
+ return this._butNot(token, rule);
289
+ }
290
+
291
+ if (token.kind !== rule.token) {
292
+ return false;
293
+ }
294
+
295
+ return this._butNot(token, rule);
296
+ };
297
+
298
+ _proto._butNot = function _butNot(token, rule) {
299
+ var _this = this;
300
+
301
+ if (rule.butNot) {
302
+ if (Array.isArray(rule.butNot)) {
303
+ if (rule.butNot.reduce(function (matched, constraint) {
304
+ return matched || _this._matchToken(token, constraint);
305
+ }, false)) {
306
+ return false;
307
+ }
308
+
309
+ return true;
310
+ }
311
+
312
+ return !this._matchToken(token, rule.butNot);
313
+ }
314
+
315
+ return true;
316
+ };
317
+
318
+ _proto._transformLexerToken = function _transformLexerToken(lexerToken, rule) {
319
+ var token;
320
+ var ruleName = rule.name || '';
321
+ var tokenName = rule.tokenName || '';
322
+
323
+ if (lexerToken.kind === '<EOF>' || lexerToken.value !== undefined) {
324
+ token = {
325
+ kind: lexerToken.kind,
326
+ value: lexerToken.value || '',
327
+ tokenName: tokenName,
328
+ ruleName: ruleName
329
+ };
330
+
331
+ if (token.kind === TokenKind.STRING) {
332
+ token.value = "\"".concat(token.value, "\"");
333
+ } else if (token.kind === TokenKind.BLOCK_STRING) {
334
+ token.value = "\"\"\"".concat(token.value, "\"\"\"");
335
+ }
336
+ } else {
337
+ token = {
338
+ kind: TokenKind.PUNCTUATION,
339
+ value: lexerToken.kind,
340
+ tokenName: tokenName,
341
+ ruleName: ruleName
342
+ };
343
+
344
+ if (/^[{([]/.test(token.value)) {
345
+ if (this.state.indentLevel !== undefined) {
346
+ this.state.levels = this.state.levels.concat(this.state.indentLevel + 1);
347
+ }
348
+ } else if (/^[})\]]/.test(token.value)) {
349
+ this.state.levels.pop();
350
+ }
351
+ }
352
+
353
+ return token;
354
+ };
355
+
356
+ _proto._getNextRule = function _getNextRule() {
357
+ return this.state.rules[this.state.rules.length - 1] || null;
358
+ };
359
+
360
+ _proto._popMatchedRule = function _popMatchedRule(token) {
361
+ var rule = this.state.rules.pop();
362
+
363
+ if (!rule) {
364
+ return;
365
+ }
366
+
367
+ if (token && rule.kind === RuleKind.TOKEN_CONSTRAINT) {
368
+ var constraint = rule;
369
+
370
+ if (typeof constraint.definitionName === 'string') {
371
+ this.state.name = token.value || null;
372
+ } else if (typeof constraint.typeName === 'string') {
373
+ this.state.type = token.value || null;
374
+ }
375
+ }
376
+
377
+ var nextRule = this._getNextRule();
378
+
379
+ if (!nextRule) {
380
+ return;
381
+ }
382
+
383
+ if (nextRule.depth === rule.depth - 1 && nextRule.expanded && nextRule.kind === RuleKind.CONSTRAINTS_SET_ROOT) {
384
+ this.state.rules.pop();
385
+ }
386
+
387
+ if (nextRule.depth === rule.depth - 1 && nextRule.expanded && nextRule.kind === RuleKind.LIST_OF_TYPE_CONSTRAINT) {
388
+ nextRule.expanded = false;
389
+ nextRule.optional = true;
390
+ }
391
+ };
392
+
393
+ _proto._rollbackRule = function _rollbackRule() {
394
+ var _this2 = this;
395
+
396
+ if (!this.state.rules.length) {
397
+ return;
398
+ }
399
+
400
+ var popRule = function popRule() {
401
+ var lastPoppedRule = _this2.state.rules.pop();
402
+
403
+ if (lastPoppedRule.eatNextOnFail === true) {
404
+ _this2.state.rules.pop();
405
+ }
406
+ };
407
+
408
+ var poppedRule = this.state.rules.pop();
409
+
410
+ if (!poppedRule) {
411
+ return;
412
+ }
413
+
414
+ var popped = 0;
415
+
416
+ var nextRule = this._getNextRule();
417
+
418
+ while (nextRule && (poppedRule.kind !== RuleKind.LIST_OF_TYPE_CONSTRAINT || nextRule.expanded) && nextRule.depth > poppedRule.depth - 1) {
419
+ this.state.rules.pop();
420
+ popped++;
421
+ nextRule = this._getNextRule();
422
+ }
423
+
424
+ if (nextRule && nextRule.expanded) {
425
+ if (nextRule.optional === true) {
426
+ popRule();
427
+ } else {
428
+ if (nextRule.kind === RuleKind.LIST_OF_TYPE_CONSTRAINT && popped === 1) {
429
+ this.state.rules.pop();
430
+ return;
431
+ }
432
+
433
+ this._rollbackRule();
434
+ }
435
+ }
436
+ };
437
+
438
+ _proto._pushRule = function _pushRule(baseRule, depth, name, step, state) {
439
+ var _this$_getNextRule, _this$_getNextRule2, _this$_getNextRule3, _this$_getNextRule4, _this$_getNextRule5, _this$_getNextRule6, _this$_getNextRule7, _this$_getNextRule8, _this$_getNextRule9, _this$_getNextRule10;
440
+
441
+ this.state.name = null;
442
+ this.state.type = null;
443
+ var rule = baseRule;
444
+
445
+ switch (this._getRuleKind(rule)) {
446
+ case RuleKind.RULE_NAME:
447
+ rule = rule;
448
+
449
+ this._pushRule(GraphQLGrammar[rule], depth, (typeof name === 'string' ? name : undefined) || rule, step, state);
450
+
451
+ break;
452
+
453
+ case RuleKind.CONSTRAINTS_SET:
454
+ rule = rule;
455
+ this.state.rules.push({
456
+ name: name || '',
457
+ depth: depth,
458
+ expanded: false,
459
+ constraints: rule,
460
+ constraintsSet: true,
461
+ kind: RuleKind.CONSTRAINTS_SET_ROOT,
462
+ state: (typeof name === 'string' ? name : undefined) || (typeof state === 'string' ? state : undefined) || ((_this$_getNextRule = this._getNextRule()) === null || _this$_getNextRule === void 0 ? void 0 : _this$_getNextRule.state) || '',
463
+ step: typeof step === 'number' ? step : (((_this$_getNextRule2 = this._getNextRule()) === null || _this$_getNextRule2 === void 0 ? void 0 : _this$_getNextRule2.step) || 0) + 1
464
+ });
465
+ break;
466
+
467
+ case RuleKind.OF_TYPE_CONSTRAINT:
468
+ rule = rule;
469
+ this.state.rules.push({
470
+ name: name || '',
471
+ ofType: rule.ofType,
472
+ optional: Boolean(rule.optional),
473
+ butNot: rule.butNot,
474
+ eatNextOnFail: Boolean(rule.eatNextOnFail),
475
+ depth: depth,
476
+ expanded: false,
477
+ kind: RuleKind.OF_TYPE_CONSTRAINT,
478
+ state: (typeof rule.tokenName === 'string' ? rule.tokenName : undefined) || (typeof name === 'string' ? name : undefined) || (typeof state === 'string' ? state : undefined) || ((_this$_getNextRule3 = this._getNextRule()) === null || _this$_getNextRule3 === void 0 ? void 0 : _this$_getNextRule3.state) || '',
479
+ step: typeof step === 'number' ? step : (((_this$_getNextRule4 = this._getNextRule()) === null || _this$_getNextRule4 === void 0 ? void 0 : _this$_getNextRule4.step) || 0) + 1
480
+ });
481
+ break;
482
+
483
+ case RuleKind.LIST_OF_TYPE_CONSTRAINT:
484
+ rule = rule;
485
+ this.state.rules.push({
486
+ listOfType: rule.listOfType,
487
+ optional: Boolean(rule.optional),
488
+ butNot: rule.butNot,
489
+ eatNextOnFail: Boolean(rule.eatNextOnFail),
490
+ name: name || '',
491
+ depth: depth,
492
+ expanded: false,
493
+ kind: RuleKind.LIST_OF_TYPE_CONSTRAINT,
494
+ state: (typeof name === 'string' ? name : undefined) || (typeof state === 'string' ? state : undefined) || ((_this$_getNextRule5 = this._getNextRule()) === null || _this$_getNextRule5 === void 0 ? void 0 : _this$_getNextRule5.state) || '',
495
+ step: typeof step === 'number' ? step : (((_this$_getNextRule6 = this._getNextRule()) === null || _this$_getNextRule6 === void 0 ? void 0 : _this$_getNextRule6.step) || 0) + 1
496
+ });
497
+ break;
498
+
499
+ case RuleKind.TOKEN_CONSTRAINT:
500
+ rule = rule;
501
+ this.state.rules.push({
502
+ token: rule.token,
503
+ ofValue: rule.ofValue,
504
+ oneOf: rule.oneOf,
505
+ definitionName: Boolean(rule.definitionName),
506
+ typeName: Boolean(rule.typeName),
507
+ optional: Boolean(rule.optional),
508
+ butNot: rule.butNot,
509
+ eatNextOnFail: Boolean(rule.eatNextOnFail),
510
+ name: name || '',
511
+ depth: depth,
512
+ expanded: false,
513
+ kind: RuleKind.TOKEN_CONSTRAINT,
514
+ state: (typeof rule.tokenName === 'string' ? rule.tokenName : undefined) || (typeof state === 'string' ? state : undefined) || ((_this$_getNextRule7 = this._getNextRule()) === null || _this$_getNextRule7 === void 0 ? void 0 : _this$_getNextRule7.state) || '',
515
+ step: typeof step === 'number' ? step : (((_this$_getNextRule8 = this._getNextRule()) === null || _this$_getNextRule8 === void 0 ? void 0 : _this$_getNextRule8.step) || 0) + 1
516
+ });
517
+ break;
518
+
519
+ case RuleKind.PEEK_CONSTRAINT:
520
+ rule = rule;
521
+ this.state.rules.push({
522
+ peek: rule.peek,
523
+ optional: Boolean(rule.optional),
524
+ butNot: rule.butNot,
525
+ eatNextOnFail: Boolean(rule.eatNextOnFail),
526
+ name: name || '',
527
+ depth: depth,
528
+ index: -1,
529
+ matched: false,
530
+ expanded: false,
531
+ kind: RuleKind.PEEK_CONSTRAINT,
532
+ state: (typeof state === 'string' ? state : undefined) || ((_this$_getNextRule9 = this._getNextRule()) === null || _this$_getNextRule9 === void 0 ? void 0 : _this$_getNextRule9.state) || '',
533
+ step: typeof step === 'number' ? step : (((_this$_getNextRule10 = this._getNextRule()) === null || _this$_getNextRule10 === void 0 ? void 0 : _this$_getNextRule10.step) || 0) + 1
534
+ });
535
+ break;
536
+ }
537
+ };
538
+
539
+ _proto._getRuleKind = function _getRuleKind(rule) {
540
+ if (Array.isArray(rule)) {
541
+ return RuleKind.CONSTRAINTS_SET;
542
+ }
543
+
544
+ if (rule.constraintsSet === true) {
545
+ return RuleKind.CONSTRAINTS_SET_ROOT;
546
+ }
547
+
548
+ if (typeof rule === 'string') {
549
+ return RuleKind.RULE_NAME;
550
+ }
551
+
552
+ if (Object.prototype.hasOwnProperty.call(rule, 'ofType')) {
553
+ return RuleKind.OF_TYPE_CONSTRAINT;
554
+ }
555
+
556
+ if (Object.prototype.hasOwnProperty.call(rule, 'listOfType')) {
557
+ return RuleKind.LIST_OF_TYPE_CONSTRAINT;
558
+ }
559
+
560
+ if (Object.prototype.hasOwnProperty.call(rule, 'peek')) {
561
+ return RuleKind.PEEK_CONSTRAINT;
562
+ }
563
+
564
+ if (Object.prototype.hasOwnProperty.call(rule, 'token')) {
565
+ return RuleKind.TOKEN_CONSTRAINT;
566
+ }
567
+
568
+ return RuleKind.INVALID;
569
+ };
570
+
571
+ _proto._advanceToken = function _advanceToken() {
572
+ return this._lexer.advance();
573
+ };
574
+
575
+ _proto._lookAhead = function _lookAhead() {
576
+ try {
577
+ return this._lexer.lookahead();
578
+ } catch (err) {
579
+ return {
580
+ kind: TokenKind.INVALID,
581
+ value: ''
582
+ };
583
+ }
584
+ };
585
+
586
+ return OnlineParser;
587
+ }();
package/language/index.js CHANGED
@@ -166,26 +166,26 @@ Object.defineProperty(exports, "DirectiveLocation", {
166
166
  }
167
167
  });
168
168
 
169
- var _source = require("./source");
169
+ var _source = require("./source.js");
170
170
 
171
- var _location = require("./location");
171
+ var _location = require("./location.js");
172
172
 
173
- var _printLocation = require("./printLocation");
173
+ var _printLocation = require("./printLocation.js");
174
174
 
175
- var _kinds = require("./kinds");
175
+ var _kinds = require("./kinds.js");
176
176
 
177
- var _tokenKind = require("./tokenKind");
177
+ var _tokenKind = require("./tokenKind.js");
178
178
 
179
- var _lexer = require("./lexer");
179
+ var _lexer = require("./lexer.js");
180
180
 
181
- var _parser = require("./parser");
181
+ var _parser = require("./parser.js");
182
182
 
183
- var _printer = require("./printer");
183
+ var _printer = require("./printer.js");
184
184
 
185
- var _visitor = require("./visitor");
185
+ var _visitor = require("./visitor.js");
186
186
 
187
- var _ast = require("./ast");
187
+ var _ast = require("./ast.js");
188
188
 
189
- var _predicates = require("./predicates");
189
+ var _predicates = require("./predicates.js");
190
190
 
191
- var _directiveLocation = require("./directiveLocation");
191
+ var _directiveLocation = require("./directiveLocation.js");
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  export { Source } from './source';
4
3
 
5
4
  export { getLocation } from './location';
@@ -1,5 +1,4 @@
1
1
  // @flow strict
2
-
3
2
  /**
4
3
  * The set of allowed kind values for AST nodes.
5
4
  */