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