@apipass/design-system 3.3.0 → 4.1.0

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 (78) hide show
  1. package/dist/lib/embedded-styles.js +1 -1
  2. package/dist/lib/json-viewer.index.cjs +2 -0
  3. package/dist/lib/json-viewer.index.cjs.map +1 -0
  4. package/dist/lib/json-viewer.index.js +7 -0
  5. package/dist/lib/json-viewer.index.js.map +1 -0
  6. package/dist/lib/lib.index.cjs +1 -1
  7. package/dist/lib/lib.index.js +742 -744
  8. package/dist/lib/lib.index.js.map +1 -1
  9. package/dist/lib/style.css +1 -1
  10. package/dist/lib/ui/primitives/JsonViewer/JsonEditor.cjs +2 -0
  11. package/dist/lib/ui/primitives/JsonViewer/JsonEditor.cjs.map +1 -0
  12. package/dist/lib/ui/primitives/JsonViewer/JsonEditor.js +95 -0
  13. package/dist/lib/ui/primitives/JsonViewer/JsonEditor.js.map +1 -0
  14. package/dist/lib/ui/primitives/JsonViewer/JsonViewer.cjs +1 -1
  15. package/dist/lib/ui/primitives/JsonViewer/JsonViewer.cjs.map +1 -1
  16. package/dist/lib/ui/primitives/JsonViewer/JsonViewer.js +37 -88
  17. package/dist/lib/ui/primitives/JsonViewer/JsonViewer.js.map +1 -1
  18. package/dist/lib/ui/primitives/JsonViewer/json-code-mirror.cjs +2 -0
  19. package/dist/lib/ui/primitives/JsonViewer/json-code-mirror.cjs.map +1 -0
  20. package/dist/lib/ui/primitives/JsonViewer/json-code-mirror.js +64 -0
  21. package/dist/lib/ui/primitives/JsonViewer/json-code-mirror.js.map +1 -0
  22. package/dist/lib/ui/primitives/Menu/Menu.cjs +1 -1
  23. package/dist/lib/ui/primitives/Menu/Menu.cjs.map +1 -1
  24. package/dist/lib/ui/primitives/Menu/Menu.js +71 -51
  25. package/dist/lib/ui/primitives/Menu/Menu.js.map +1 -1
  26. package/dist/lib/ui/primitives/PermissionGate/PermissionGate.cjs.map +1 -1
  27. package/dist/lib/ui/primitives/PermissionGate/PermissionGate.js.map +1 -1
  28. package/dist/types/json-viewer.index.d.ts +2 -0
  29. package/dist/types/ui/primitives/JsonViewer/JsonEditor.d.ts +18 -0
  30. package/dist/types/ui/primitives/JsonViewer/json-code-mirror.d.ts +17 -0
  31. package/dist/types/ui/primitives/Menu/Menu.d.ts +1 -1
  32. package/dist/types/ui/primitives/PermissionGate/PermissionGate.d.ts +20 -0
  33. package/dist/types/ui/primitives/index.d.ts +0 -1
  34. package/package.json +34 -7
  35. package/dist/lib/vendor/@codemirror/lang-json/dist/index.cjs +0 -2
  36. package/dist/lib/vendor/@codemirror/lang-json/dist/index.cjs.map +0 -1
  37. package/dist/lib/vendor/@codemirror/lang-json/dist/index.js +0 -28
  38. package/dist/lib/vendor/@codemirror/lang-json/dist/index.js.map +0 -1
  39. package/dist/lib/vendor/@codemirror/language/dist/index.cjs +0 -2
  40. package/dist/lib/vendor/@codemirror/language/dist/index.cjs.map +0 -1
  41. package/dist/lib/vendor/@codemirror/language/dist/index.js +0 -791
  42. package/dist/lib/vendor/@codemirror/language/dist/index.js.map +0 -1
  43. package/dist/lib/vendor/@codemirror/state/dist/index.cjs +0 -6
  44. package/dist/lib/vendor/@codemirror/state/dist/index.cjs.map +0 -1
  45. package/dist/lib/vendor/@codemirror/state/dist/index.js +0 -2633
  46. package/dist/lib/vendor/@codemirror/state/dist/index.js.map +0 -1
  47. package/dist/lib/vendor/@codemirror/view/dist/index.cjs +0 -5
  48. package/dist/lib/vendor/@codemirror/view/dist/index.cjs.map +0 -1
  49. package/dist/lib/vendor/@codemirror/view/dist/index.js +0 -6068
  50. package/dist/lib/vendor/@codemirror/view/dist/index.js.map +0 -1
  51. package/dist/lib/vendor/@lezer/common/dist/index.cjs +0 -2
  52. package/dist/lib/vendor/@lezer/common/dist/index.cjs.map +0 -1
  53. package/dist/lib/vendor/@lezer/common/dist/index.js +0 -1392
  54. package/dist/lib/vendor/@lezer/common/dist/index.js.map +0 -1
  55. package/dist/lib/vendor/@lezer/highlight/dist/index.cjs +0 -2
  56. package/dist/lib/vendor/@lezer/highlight/dist/index.cjs.map +0 -1
  57. package/dist/lib/vendor/@lezer/highlight/dist/index.js +0 -638
  58. package/dist/lib/vendor/@lezer/highlight/dist/index.js.map +0 -1
  59. package/dist/lib/vendor/@lezer/json/dist/index.cjs +0 -2
  60. package/dist/lib/vendor/@lezer/json/dist/index.cjs.map +0 -1
  61. package/dist/lib/vendor/@lezer/json/dist/index.js +0 -35
  62. package/dist/lib/vendor/@lezer/json/dist/index.js.map +0 -1
  63. package/dist/lib/vendor/@lezer/lr/dist/index.cjs +0 -2
  64. package/dist/lib/vendor/@lezer/lr/dist/index.cjs.map +0 -1
  65. package/dist/lib/vendor/@lezer/lr/dist/index.js +0 -1269
  66. package/dist/lib/vendor/@lezer/lr/dist/index.js.map +0 -1
  67. package/dist/lib/vendor/@marijn/find-cluster-break/src/index.cjs +0 -2
  68. package/dist/lib/vendor/@marijn/find-cluster-break/src/index.cjs.map +0 -1
  69. package/dist/lib/vendor/@marijn/find-cluster-break/src/index.js +0 -70
  70. package/dist/lib/vendor/@marijn/find-cluster-break/src/index.js.map +0 -1
  71. package/dist/lib/vendor/style-mod/src/style-mod.cjs +0 -4
  72. package/dist/lib/vendor/style-mod/src/style-mod.cjs.map +0 -1
  73. package/dist/lib/vendor/style-mod/src/style-mod.js +0 -110
  74. package/dist/lib/vendor/style-mod/src/style-mod.js.map +0 -1
  75. package/dist/lib/vendor/w3c-keyname/index.cjs +0 -2
  76. package/dist/lib/vendor/w3c-keyname/index.cjs.map +0 -1
  77. package/dist/lib/vendor/w3c-keyname/index.js +0 -89
  78. package/dist/lib/vendor/w3c-keyname/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@lezer/highlight/dist/index.js"],"sourcesContent":["import { NodeProp } from '@lezer/common';\n\nlet nextTagID = 0;\n/**\nHighlighting tags are markers that denote a highlighting category.\nThey are [associated](#highlight.styleTags) with parts of a syntax\ntree by a language mode, and then mapped to an actual CSS style by\na [highlighter](#highlight.Highlighter).\n\nBecause syntax tree node types and highlight styles have to be\nable to talk the same language, CodeMirror uses a mostly _closed_\n[vocabulary](#highlight.tags) of syntax tags (as opposed to\ntraditional open string-based systems, which make it hard for\nhighlighting themes to cover all the tokens produced by the\nvarious languages).\n\nIt _is_ possible to [define](#highlight.Tag^define) your own\nhighlighting tags for system-internal use (where you control both\nthe language package and the highlighter), but such tags will not\nbe picked up by regular highlighters (though you can derive them\nfrom standard tags to allow highlighters to fall back to those).\n*/\nclass Tag {\n /**\n @internal\n */\n constructor(\n /**\n The optional name of the base tag @internal\n */\n name, \n /**\n The set of this tag and all its parent tags, starting with\n this one itself and sorted in order of decreasing specificity.\n */\n set, \n /**\n The base unmodified tag that this one is based on, if it's\n modified @internal\n */\n base, \n /**\n The modifiers applied to this.base @internal\n */\n modified) {\n this.name = name;\n this.set = set;\n this.base = base;\n this.modified = modified;\n /**\n @internal\n */\n this.id = nextTagID++;\n }\n toString() {\n let { name } = this;\n for (let mod of this.modified)\n if (mod.name)\n name = `${mod.name}(${name})`;\n return name;\n }\n static define(nameOrParent, parent) {\n let name = typeof nameOrParent == \"string\" ? nameOrParent : \"?\";\n if (nameOrParent instanceof Tag)\n parent = nameOrParent;\n if (parent === null || parent === void 0 ? void 0 : parent.base)\n throw new Error(\"Can not derive from a modified tag\");\n let tag = new Tag(name, [], null, []);\n tag.set.push(tag);\n if (parent)\n for (let t of parent.set)\n tag.set.push(t);\n return tag;\n }\n /**\n Define a tag _modifier_, which is a function that, given a tag,\n will return a tag that is a subtag of the original. Applying the\n same modifier to a twice tag will return the same value (`m1(t1)\n == m1(t1)`) and applying multiple modifiers will, regardless or\n order, produce the same tag (`m1(m2(t1)) == m2(m1(t1))`).\n \n When multiple modifiers are applied to a given base tag, each\n smaller set of modifiers is registered as a parent, so that for\n example `m1(m2(m3(t1)))` is a subtype of `m1(m2(t1))`,\n `m1(m3(t1)`, and so on.\n */\n static defineModifier(name) {\n let mod = new Modifier(name);\n return (tag) => {\n if (tag.modified.indexOf(mod) > -1)\n return tag;\n return Modifier.get(tag.base || tag, tag.modified.concat(mod).sort((a, b) => a.id - b.id));\n };\n }\n}\nlet nextModifierID = 0;\nclass Modifier {\n constructor(name) {\n this.name = name;\n this.instances = [];\n this.id = nextModifierID++;\n }\n static get(base, mods) {\n if (!mods.length)\n return base;\n let exists = mods[0].instances.find(t => t.base == base && sameArray(mods, t.modified));\n if (exists)\n return exists;\n let set = [], tag = new Tag(base.name, set, base, mods);\n for (let m of mods)\n m.instances.push(tag);\n let configs = powerSet(mods);\n for (let parent of base.set)\n if (!parent.modified.length)\n for (let config of configs)\n set.push(Modifier.get(parent, config));\n return tag;\n }\n}\nfunction sameArray(a, b) {\n return a.length == b.length && a.every((x, i) => x == b[i]);\n}\nfunction powerSet(array) {\n let sets = [[]];\n for (let i = 0; i < array.length; i++) {\n for (let j = 0, e = sets.length; j < e; j++) {\n sets.push(sets[j].concat(array[i]));\n }\n }\n return sets.sort((a, b) => b.length - a.length);\n}\n/**\nThis function is used to add a set of tags to a language syntax\nvia [`NodeSet.extend`](#common.NodeSet.extend) or\n[`LRParser.configure`](#lr.LRParser.configure).\n\nThe argument object maps node selectors to [highlighting\ntags](#highlight.Tag) or arrays of tags.\n\nNode selectors may hold one or more (space-separated) node paths.\nSuch a path can be a [node name](#common.NodeType.name), or\nmultiple node names (or `*` wildcards) separated by slash\ncharacters, as in `\"Block/Declaration/VariableName\"`. Such a path\nmatches the final node but only if its direct parent nodes are the\nother nodes mentioned. A `*` in such a path matches any parent,\nbut only a single level—wildcards that match multiple parents\naren't supported, both for efficiency reasons and because Lezer\ntrees make it rather hard to reason about what they would match.)\n\nA path can be ended with `/...` to indicate that the tag assigned\nto the node should also apply to all child nodes, even if they\nmatch their own style (by default, only the innermost style is\nused).\n\nWhen a path ends in `!`, as in `Attribute!`, no further matching\nhappens for the node's child nodes, and the entire node gets the\ngiven style.\n\nIn this notation, node names that contain `/`, `!`, `*`, or `...`\nmust be quoted as JSON strings.\n\nFor example:\n\n```javascript\nparser.configure({props: [\n styleTags({\n // Style Number and BigNumber nodes\n \"Number BigNumber\": tags.number,\n // Style Escape nodes whose parent is String\n \"String/Escape\": tags.escape,\n // Style anything inside Attributes nodes\n \"Attributes!\": tags.meta,\n // Add a style to all content inside Italic nodes\n \"Italic/...\": tags.emphasis,\n // Style InvalidString nodes as both `string` and `invalid`\n \"InvalidString\": [tags.string, tags.invalid],\n // Style the node named \"/\" as punctuation\n '\"/\"': tags.punctuation\n })\n]})\n```\n*/\nfunction styleTags(spec) {\n let byName = Object.create(null);\n for (let prop in spec) {\n let tags = spec[prop];\n if (!Array.isArray(tags))\n tags = [tags];\n for (let part of prop.split(\" \"))\n if (part) {\n let pieces = [], mode = 2 /* Mode.Normal */, rest = part;\n for (let pos = 0;;) {\n if (rest == \"...\" && pos > 0 && pos + 3 == part.length) {\n mode = 1 /* Mode.Inherit */;\n break;\n }\n let m = /^\"(?:[^\"\\\\]|\\\\.)*?\"|[^\\/!]+/.exec(rest);\n if (!m)\n throw new RangeError(\"Invalid path: \" + part);\n pieces.push(m[0] == \"*\" ? \"\" : m[0][0] == '\"' ? JSON.parse(m[0]) : m[0]);\n pos += m[0].length;\n if (pos == part.length)\n break;\n let next = part[pos++];\n if (pos == part.length && next == \"!\") {\n mode = 0 /* Mode.Opaque */;\n break;\n }\n if (next != \"/\")\n throw new RangeError(\"Invalid path: \" + part);\n rest = part.slice(pos);\n }\n let last = pieces.length - 1, inner = pieces[last];\n if (!inner)\n throw new RangeError(\"Invalid path: \" + part);\n let rule = new Rule(tags, mode, last > 0 ? pieces.slice(0, last) : null);\n byName[inner] = rule.sort(byName[inner]);\n }\n }\n return ruleNodeProp.add(byName);\n}\nconst ruleNodeProp = new NodeProp({\n combine(a, b) {\n let cur, root, take;\n while (a || b) {\n if (!a || b && a.depth >= b.depth) {\n take = b;\n b = b.next;\n }\n else {\n take = a;\n a = a.next;\n }\n if (cur && cur.mode == take.mode && !take.context && !cur.context)\n continue;\n let copy = new Rule(take.tags, take.mode, take.context);\n if (cur)\n cur.next = copy;\n else\n root = copy;\n cur = copy;\n }\n return root;\n }\n});\nclass Rule {\n constructor(tags, mode, context, next) {\n this.tags = tags;\n this.mode = mode;\n this.context = context;\n this.next = next;\n }\n get opaque() { return this.mode == 0 /* Mode.Opaque */; }\n get inherit() { return this.mode == 1 /* Mode.Inherit */; }\n sort(other) {\n if (!other || other.depth < this.depth) {\n this.next = other;\n return this;\n }\n other.next = this.sort(other.next);\n return other;\n }\n get depth() { return this.context ? this.context.length : 0; }\n}\nRule.empty = new Rule([], 2 /* Mode.Normal */, null);\n/**\nDefine a [highlighter](#highlight.Highlighter) from an array of\ntag/class pairs. Classes associated with more specific tags will\ntake precedence.\n*/\nfunction tagHighlighter(tags, options) {\n let map = Object.create(null);\n for (let style of tags) {\n if (!Array.isArray(style.tag))\n map[style.tag.id] = style.class;\n else\n for (let tag of style.tag)\n map[tag.id] = style.class;\n }\n let { scope, all = null } = options || {};\n return {\n style: (tags) => {\n let cls = all;\n for (let tag of tags) {\n for (let sub of tag.set) {\n let tagClass = map[sub.id];\n if (tagClass) {\n cls = cls ? cls + \" \" + tagClass : tagClass;\n break;\n }\n }\n }\n return cls;\n },\n scope\n };\n}\nfunction highlightTags(highlighters, tags) {\n let result = null;\n for (let highlighter of highlighters) {\n let value = highlighter.style(tags);\n if (value)\n result = result ? result + \" \" + value : value;\n }\n return result;\n}\n/**\nHighlight the given [tree](#common.Tree) with the given\n[highlighter](#highlight.Highlighter). Often, the higher-level\n[`highlightCode`](#highlight.highlightCode) function is easier to\nuse.\n*/\nfunction highlightTree(tree, highlighter, \n/**\nAssign styling to a region of the text. Will be called, in order\nof position, for any ranges where more than zero classes apply.\n`classes` is a space separated string of CSS classes.\n*/\nputStyle, \n/**\nThe start of the range to highlight.\n*/\nfrom = 0, \n/**\nThe end of the range.\n*/\nto = tree.length) {\n let builder = new HighlightBuilder(from, Array.isArray(highlighter) ? highlighter : [highlighter], putStyle);\n builder.highlightRange(tree.cursor(), from, to, \"\", builder.highlighters);\n builder.flush(to);\n}\n/**\nHighlight the given tree with the given highlighter, calling\n`putText` for every piece of text, either with a set of classes or\nwith the empty string when unstyled, and `putBreak` for every line\nbreak.\n*/\nfunction highlightCode(code, tree, highlighter, putText, putBreak, from = 0, to = code.length) {\n let pos = from;\n function writeTo(p, classes) {\n if (p <= pos)\n return;\n for (let text = code.slice(pos, p), i = 0;;) {\n let nextBreak = text.indexOf(\"\\n\", i);\n let upto = nextBreak < 0 ? text.length : nextBreak;\n if (upto > i)\n putText(text.slice(i, upto), classes);\n if (nextBreak < 0)\n break;\n putBreak();\n i = nextBreak + 1;\n }\n pos = p;\n }\n highlightTree(tree, highlighter, (from, to, classes) => {\n writeTo(from, \"\");\n writeTo(to, classes);\n }, from, to);\n writeTo(to, \"\");\n}\nclass HighlightBuilder {\n constructor(at, highlighters, span) {\n this.at = at;\n this.highlighters = highlighters;\n this.span = span;\n this.class = \"\";\n }\n startSpan(at, cls) {\n if (cls != this.class) {\n this.flush(at);\n if (at > this.at)\n this.at = at;\n this.class = cls;\n }\n }\n flush(to) {\n if (to > this.at && this.class)\n this.span(this.at, to, this.class);\n }\n highlightRange(cursor, from, to, inheritedClass, highlighters) {\n let { type, from: start, to: end } = cursor;\n if (start >= to || end <= from)\n return;\n if (type.isTop)\n highlighters = this.highlighters.filter(h => !h.scope || h.scope(type));\n let cls = inheritedClass;\n let rule = getStyleTags(cursor) || Rule.empty;\n let tagCls = highlightTags(highlighters, rule.tags);\n if (tagCls) {\n if (cls)\n cls += \" \";\n cls += tagCls;\n if (rule.mode == 1 /* Mode.Inherit */)\n inheritedClass += (inheritedClass ? \" \" : \"\") + tagCls;\n }\n this.startSpan(Math.max(from, start), cls);\n if (rule.opaque)\n return;\n let mounted = cursor.tree && cursor.tree.prop(NodeProp.mounted);\n if (mounted && mounted.overlay) {\n let inner = cursor.node.enter(mounted.overlay[0].from + start, 1);\n let innerHighlighters = this.highlighters.filter(h => !h.scope || h.scope(mounted.tree.type));\n let hasChild = cursor.firstChild();\n for (let i = 0, pos = start;; i++) {\n let next = i < mounted.overlay.length ? mounted.overlay[i] : null;\n let nextPos = next ? next.from + start : end;\n let rangeFrom = Math.max(from, pos), rangeTo = Math.min(to, nextPos);\n if (rangeFrom < rangeTo && hasChild) {\n while (cursor.from < rangeTo) {\n this.highlightRange(cursor, rangeFrom, rangeTo, inheritedClass, highlighters);\n this.startSpan(Math.min(rangeTo, cursor.to), cls);\n if (cursor.to >= nextPos || !cursor.nextSibling())\n break;\n }\n }\n if (!next || nextPos > to)\n break;\n pos = next.to + start;\n if (pos > from) {\n this.highlightRange(inner.cursor(), Math.max(from, next.from + start), Math.min(to, pos), \"\", innerHighlighters);\n this.startSpan(Math.min(to, pos), cls);\n }\n }\n if (hasChild)\n cursor.parent();\n }\n else if (cursor.firstChild()) {\n if (mounted)\n inheritedClass = \"\";\n do {\n if (cursor.to <= from)\n continue;\n if (cursor.from >= to)\n break;\n this.highlightRange(cursor, from, to, inheritedClass, highlighters);\n this.startSpan(Math.min(to, cursor.to), cls);\n } while (cursor.nextSibling());\n cursor.parent();\n }\n }\n}\n/**\nMatch a syntax node's [highlight rules](#highlight.styleTags). If\nthere's a match, return its set of tags, and whether it is\nopaque (uses a `!`) or applies to all child nodes (`/...`).\n*/\nfunction getStyleTags(node) {\n let rule = node.type.prop(ruleNodeProp);\n while (rule && rule.context && !node.matchContext(rule.context))\n rule = rule.next;\n return rule || null;\n}\nconst t = Tag.define;\nconst comment = t(), name = t(), typeName = t(name), propertyName = t(name), literal = t(), string = t(literal), number = t(literal), content = t(), heading = t(content), keyword = t(), operator = t(), punctuation = t(), bracket = t(punctuation), meta = t();\n/**\nThe default set of highlighting [tags](#highlight.Tag).\n\nThis collection is heavily biased towards programming languages,\nand necessarily incomplete. A full ontology of syntactic\nconstructs would fill a stack of books, and be impractical to\nwrite themes for. So try to make do with this set. If all else\nfails, [open an\nissue](https://github.com/codemirror/codemirror.next) to propose a\nnew tag, or [define](#highlight.Tag^define) a local custom tag for\nyour use case.\n\nNote that it is not obligatory to always attach the most specific\ntag possible to an element—if your grammar can't easily\ndistinguish a certain type of element (such as a local variable),\nit is okay to style it as its more general variant (a variable).\n\nFor tags that extend some parent tag, the documentation links to\nthe parent.\n*/\nconst tags = {\n /**\n A comment.\n */\n comment,\n /**\n A line [comment](#highlight.tags.comment).\n */\n lineComment: t(comment),\n /**\n A block [comment](#highlight.tags.comment).\n */\n blockComment: t(comment),\n /**\n A documentation [comment](#highlight.tags.comment).\n */\n docComment: t(comment),\n /**\n Any kind of identifier.\n */\n name,\n /**\n The [name](#highlight.tags.name) of a variable.\n */\n variableName: t(name),\n /**\n A type [name](#highlight.tags.name).\n */\n typeName: typeName,\n /**\n A tag name (subtag of [`typeName`](#highlight.tags.typeName)).\n */\n tagName: t(typeName),\n /**\n A property or field [name](#highlight.tags.name).\n */\n propertyName: propertyName,\n /**\n An attribute name (subtag of [`propertyName`](#highlight.tags.propertyName)).\n */\n attributeName: t(propertyName),\n /**\n The [name](#highlight.tags.name) of a class.\n */\n className: t(name),\n /**\n A label [name](#highlight.tags.name).\n */\n labelName: t(name),\n /**\n A namespace [name](#highlight.tags.name).\n */\n namespace: t(name),\n /**\n The [name](#highlight.tags.name) of a macro.\n */\n macroName: t(name),\n /**\n A literal value.\n */\n literal,\n /**\n A string [literal](#highlight.tags.literal).\n */\n string,\n /**\n A documentation [string](#highlight.tags.string).\n */\n docString: t(string),\n /**\n A character literal (subtag of [string](#highlight.tags.string)).\n */\n character: t(string),\n /**\n An attribute value (subtag of [string](#highlight.tags.string)).\n */\n attributeValue: t(string),\n /**\n A number [literal](#highlight.tags.literal).\n */\n number,\n /**\n An integer [number](#highlight.tags.number) literal.\n */\n integer: t(number),\n /**\n A floating-point [number](#highlight.tags.number) literal.\n */\n float: t(number),\n /**\n A boolean [literal](#highlight.tags.literal).\n */\n bool: t(literal),\n /**\n Regular expression [literal](#highlight.tags.literal).\n */\n regexp: t(literal),\n /**\n An escape [literal](#highlight.tags.literal), for example a\n backslash escape in a string.\n */\n escape: t(literal),\n /**\n A color [literal](#highlight.tags.literal).\n */\n color: t(literal),\n /**\n A URL [literal](#highlight.tags.literal).\n */\n url: t(literal),\n /**\n A language keyword.\n */\n keyword,\n /**\n The [keyword](#highlight.tags.keyword) for the self or this\n object.\n */\n self: t(keyword),\n /**\n The [keyword](#highlight.tags.keyword) for null.\n */\n null: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) denoting some atomic value.\n */\n atom: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that represents a unit.\n */\n unit: t(keyword),\n /**\n A modifier [keyword](#highlight.tags.keyword).\n */\n modifier: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that acts as an operator.\n */\n operatorKeyword: t(keyword),\n /**\n A control-flow related [keyword](#highlight.tags.keyword).\n */\n controlKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) that defines something.\n */\n definitionKeyword: t(keyword),\n /**\n A [keyword](#highlight.tags.keyword) related to defining or\n interfacing with modules.\n */\n moduleKeyword: t(keyword),\n /**\n An operator.\n */\n operator,\n /**\n An [operator](#highlight.tags.operator) that dereferences something.\n */\n derefOperator: t(operator),\n /**\n Arithmetic-related [operator](#highlight.tags.operator).\n */\n arithmeticOperator: t(operator),\n /**\n Logical [operator](#highlight.tags.operator).\n */\n logicOperator: t(operator),\n /**\n Bit [operator](#highlight.tags.operator).\n */\n bitwiseOperator: t(operator),\n /**\n Comparison [operator](#highlight.tags.operator).\n */\n compareOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that updates its operand.\n */\n updateOperator: t(operator),\n /**\n [Operator](#highlight.tags.operator) that defines something.\n */\n definitionOperator: t(operator),\n /**\n Type-related [operator](#highlight.tags.operator).\n */\n typeOperator: t(operator),\n /**\n Control-flow [operator](#highlight.tags.operator).\n */\n controlOperator: t(operator),\n /**\n Program or markup punctuation.\n */\n punctuation,\n /**\n [Punctuation](#highlight.tags.punctuation) that separates\n things.\n */\n separator: t(punctuation),\n /**\n Bracket-style [punctuation](#highlight.tags.punctuation).\n */\n bracket,\n /**\n Angle [brackets](#highlight.tags.bracket) (usually `<` and `>`\n tokens).\n */\n angleBracket: t(bracket),\n /**\n Square [brackets](#highlight.tags.bracket) (usually `[` and `]`\n tokens).\n */\n squareBracket: t(bracket),\n /**\n Parentheses (usually `(` and `)` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n paren: t(bracket),\n /**\n Braces (usually `{` and `}` tokens). Subtag of\n [bracket](#highlight.tags.bracket).\n */\n brace: t(bracket),\n /**\n Content, for example plain text in XML or markup documents.\n */\n content,\n /**\n [Content](#highlight.tags.content) that represents a heading.\n */\n heading,\n /**\n A level 1 [heading](#highlight.tags.heading).\n */\n heading1: t(heading),\n /**\n A level 2 [heading](#highlight.tags.heading).\n */\n heading2: t(heading),\n /**\n A level 3 [heading](#highlight.tags.heading).\n */\n heading3: t(heading),\n /**\n A level 4 [heading](#highlight.tags.heading).\n */\n heading4: t(heading),\n /**\n A level 5 [heading](#highlight.tags.heading).\n */\n heading5: t(heading),\n /**\n A level 6 [heading](#highlight.tags.heading).\n */\n heading6: t(heading),\n /**\n A prose [content](#highlight.tags.content) separator (such as a horizontal rule).\n */\n contentSeparator: t(content),\n /**\n [Content](#highlight.tags.content) that represents a list.\n */\n list: t(content),\n /**\n [Content](#highlight.tags.content) that represents a quote.\n */\n quote: t(content),\n /**\n [Content](#highlight.tags.content) that is emphasized.\n */\n emphasis: t(content),\n /**\n [Content](#highlight.tags.content) that is styled strong.\n */\n strong: t(content),\n /**\n [Content](#highlight.tags.content) that is part of a link.\n */\n link: t(content),\n /**\n [Content](#highlight.tags.content) that is styled as code or\n monospace.\n */\n monospace: t(content),\n /**\n [Content](#highlight.tags.content) that has a strike-through\n style.\n */\n strikethrough: t(content),\n /**\n Inserted text in a change-tracking format.\n */\n inserted: t(),\n /**\n Deleted text.\n */\n deleted: t(),\n /**\n Changed text.\n */\n changed: t(),\n /**\n An invalid or unsyntactic element.\n */\n invalid: t(),\n /**\n Metadata or meta-instruction.\n */\n meta,\n /**\n [Metadata](#highlight.tags.meta) that applies to the entire\n document.\n */\n documentMeta: t(meta),\n /**\n [Metadata](#highlight.tags.meta) that annotates or adds\n attributes to a given syntactic element.\n */\n annotation: t(meta),\n /**\n Processing instruction or preprocessor directive. Subtag of\n [meta](#highlight.tags.meta).\n */\n processingInstruction: t(meta),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that a\n given element is being defined. Expected to be used with the\n various [name](#highlight.tags.name) tags.\n */\n definition: Tag.defineModifier(\"definition\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates that\n something is constant. Mostly expected to be used with\n [variable names](#highlight.tags.variableName).\n */\n constant: Tag.defineModifier(\"constant\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) used to indicate that\n a [variable](#highlight.tags.variableName) or [property\n name](#highlight.tags.propertyName) is being called or defined\n as a function.\n */\n function: Tag.defineModifier(\"function\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that can be applied to\n [names](#highlight.tags.name) to indicate that they belong to\n the language's standard environment.\n */\n standard: Tag.defineModifier(\"standard\"),\n /**\n [Modifier](#highlight.Tag^defineModifier) that indicates a given\n [names](#highlight.tags.name) is local to some scope.\n */\n local: Tag.defineModifier(\"local\"),\n /**\n A generic variant [modifier](#highlight.Tag^defineModifier) that\n can be used to tag language-specific alternative variants of\n some common tag. It is recommended for themes to define special\n forms of at least the [string](#highlight.tags.string) and\n [variable name](#highlight.tags.variableName) tags, since those\n come up a lot.\n */\n special: Tag.defineModifier(\"special\")\n};\nfor (let name in tags) {\n let val = tags[name];\n if (val instanceof Tag)\n val.name = name;\n}\n/**\nThis is a highlighter that adds stable, predictable classes to\ntokens, for styling with external CSS.\n\nThe following tags are mapped to their name prefixed with `\"tok-\"`\n(for example `\"tok-comment\"`):\n\n* [`link`](#highlight.tags.link)\n* [`heading`](#highlight.tags.heading)\n* [`emphasis`](#highlight.tags.emphasis)\n* [`strong`](#highlight.tags.strong)\n* [`keyword`](#highlight.tags.keyword)\n* [`atom`](#highlight.tags.atom)\n* [`bool`](#highlight.tags.bool)\n* [`url`](#highlight.tags.url)\n* [`labelName`](#highlight.tags.labelName)\n* [`inserted`](#highlight.tags.inserted)\n* [`deleted`](#highlight.tags.deleted)\n* [`literal`](#highlight.tags.literal)\n* [`string`](#highlight.tags.string)\n* [`number`](#highlight.tags.number)\n* [`variableName`](#highlight.tags.variableName)\n* [`typeName`](#highlight.tags.typeName)\n* [`namespace`](#highlight.tags.namespace)\n* [`className`](#highlight.tags.className)\n* [`macroName`](#highlight.tags.macroName)\n* [`propertyName`](#highlight.tags.propertyName)\n* [`operator`](#highlight.tags.operator)\n* [`comment`](#highlight.tags.comment)\n* [`meta`](#highlight.tags.meta)\n* [`punctuation`](#highlight.tags.punctuation)\n* [`invalid`](#highlight.tags.invalid)\n\nIn addition, these mappings are provided:\n\n* [`regexp`](#highlight.tags.regexp),\n [`escape`](#highlight.tags.escape), and\n [`special`](#highlight.tags.special)[`(string)`](#highlight.tags.string)\n are mapped to `\"tok-string2\"`\n* [`special`](#highlight.tags.special)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName2\"`\n* [`local`](#highlight.tags.local)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-local\"`\n* [`definition`](#highlight.tags.definition)[`(variableName)`](#highlight.tags.variableName)\n to `\"tok-variableName tok-definition\"`\n* [`definition`](#highlight.tags.definition)[`(propertyName)`](#highlight.tags.propertyName)\n to `\"tok-propertyName tok-definition\"`\n*/\nconst classHighlighter = tagHighlighter([\n { tag: tags.link, class: \"tok-link\" },\n { tag: tags.heading, class: \"tok-heading\" },\n { tag: tags.emphasis, class: \"tok-emphasis\" },\n { tag: tags.strong, class: \"tok-strong\" },\n { tag: tags.keyword, class: \"tok-keyword\" },\n { tag: tags.atom, class: \"tok-atom\" },\n { tag: tags.bool, class: \"tok-bool\" },\n { tag: tags.url, class: \"tok-url\" },\n { tag: tags.labelName, class: \"tok-labelName\" },\n { tag: tags.inserted, class: \"tok-inserted\" },\n { tag: tags.deleted, class: \"tok-deleted\" },\n { tag: tags.literal, class: \"tok-literal\" },\n { tag: tags.string, class: \"tok-string\" },\n { tag: tags.number, class: \"tok-number\" },\n { tag: [tags.regexp, tags.escape, tags.special(tags.string)], class: \"tok-string2\" },\n { tag: tags.variableName, class: \"tok-variableName\" },\n { tag: tags.local(tags.variableName), class: \"tok-variableName tok-local\" },\n { tag: tags.definition(tags.variableName), class: \"tok-variableName tok-definition\" },\n { tag: tags.special(tags.variableName), class: \"tok-variableName2\" },\n { tag: tags.definition(tags.propertyName), class: \"tok-propertyName tok-definition\" },\n { tag: tags.typeName, class: \"tok-typeName\" },\n { tag: tags.namespace, class: \"tok-namespace\" },\n { tag: tags.className, class: \"tok-className\" },\n { tag: tags.macroName, class: \"tok-macroName\" },\n { tag: tags.propertyName, class: \"tok-propertyName\" },\n { tag: tags.operator, class: \"tok-operator\" },\n { tag: tags.comment, class: \"tok-comment\" },\n { tag: tags.meta, class: \"tok-meta\" },\n { tag: tags.invalid, class: \"tok-invalid\" },\n { tag: tags.punctuation, class: \"tok-punctuation\" }\n]);\n\nexport { Tag, classHighlighter, getStyleTags, highlightCode, highlightTree, styleTags, tagHighlighter, tags };\n"],"names":["nextTagID","Tag","name","set","base","modified","mod","nameOrParent","parent","tag","t","Modifier","a","b","nextModifierID","mods","exists","sameArray","m","configs","powerSet","config","x","i","array","sets","j","e","styleTags","spec","byName","prop","tags","part","pieces","mode","rest","pos","next","last","inner","rule","Rule","ruleNodeProp","NodeProp","cur","root","take","copy","context","other","tagHighlighter","options","map","style","scope","all","cls","sub","tagClass","highlightTags","highlighters","result","highlighter","value","highlightTree","tree","putStyle","from","to","builder","HighlightBuilder","at","span","cursor","inheritedClass","type","start","end","h","getStyleTags","tagCls","mounted","innerHighlighters","hasChild","nextPos","rangeFrom","rangeTo","node","comment","typeName","propertyName","literal","string","number","content","heading","keyword","operator","punctuation","bracket","meta","val"],"mappings":";AAEA,IAAIA,IAAY;AAoBhB,MAAMC,EAAI;AAAA;AAAA;AAAA;AAAA,EAIN,YAIAC,GAKAC,GAKAC,GAIAC,GAAU;AACN,SAAK,OAAOH,GACZ,KAAK,MAAMC,GACX,KAAK,OAAOC,GACZ,KAAK,WAAWC,GAIhB,KAAK,KAAKL;AAAA,EACd;AAAA,EACA,WAAW;AACP,QAAI,EAAE,MAAAE,EAAI,IAAK;AACf,aAASI,KAAO,KAAK;AACjB,MAAIA,EAAI,SACJJ,IAAO,GAAGI,EAAI,IAAI,IAAIJ,CAAI;AAClC,WAAOA;AAAA,EACX;AAAA,EACA,OAAO,OAAOK,GAAcC,GAAQ;AAChC,QAAIN,IAAO,OAAOK,KAAgB,WAAWA,IAAe;AAG5D,QAFIA,aAAwBN,MACxBO,IAASD,IACTC,KAAW,QAAqCA,EAAO;AACvD,YAAM,IAAI,MAAM,oCAAoC;AACxD,QAAIC,IAAM,IAAIR,EAAIC,GAAM,CAAA,GAAI,MAAM,EAAE;AAEpC,QADAO,EAAI,IAAI,KAAKA,CAAG,GACZD;AACA,eAASE,KAAKF,EAAO;AACjB,QAAAC,EAAI,IAAI,KAAKC,CAAC;AACtB,WAAOD;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,eAAeP,GAAM;AACxB,QAAII,IAAM,IAAIK,EAAST,CAAI;AAC3B,WAAO,CAACO,MACAA,EAAI,SAAS,QAAQH,CAAG,IAAI,KACrBG,IACJE,EAAS,IAAIF,EAAI,QAAQA,GAAKA,EAAI,SAAS,OAAOH,CAAG,EAAE,KAAK,CAACM,GAAGC,MAAMD,EAAE,KAAKC,EAAE,EAAE,CAAC;AAAA,EAEjG;AACJ;AACA,IAAIC,IAAiB;AACrB,MAAMH,EAAS;AAAA,EACX,YAAYT,GAAM;AACd,SAAK,OAAOA,GACZ,KAAK,YAAY,CAAA,GACjB,KAAK,KAAKY;AAAA,EACd;AAAA,EACA,OAAO,IAAIV,GAAMW,GAAM;AACnB,QAAI,CAACA,EAAK;AACN,aAAOX;AACX,QAAIY,IAASD,EAAK,CAAC,EAAE,UAAU,KAAK,CAAAL,MAAKA,EAAE,QAAQN,KAAQa,EAAUF,GAAML,EAAE,QAAQ,CAAC;AACtF,QAAIM;AACA,aAAOA;AACX,QAAIb,IAAM,IAAIM,IAAM,IAAIR,EAAIG,EAAK,MAAMD,GAAKC,GAAMW,CAAI;AACtD,aAASG,KAAKH;AACV,MAAAG,EAAE,UAAU,KAAKT,CAAG;AACxB,QAAIU,IAAUC,EAASL,CAAI;AAC3B,aAASP,KAAUJ,EAAK;AACpB,UAAI,CAACI,EAAO,SAAS;AACjB,iBAASa,KAAUF;AACf,UAAAhB,EAAI,KAAKQ,EAAS,IAAIH,GAAQa,CAAM,CAAC;AACjD,WAAOZ;AAAA,EACX;AACJ;AACA,SAASQ,EAAUL,GAAGC,GAAG;AACrB,SAAOD,EAAE,UAAUC,EAAE,UAAUD,EAAE,MAAM,CAACU,GAAGC,MAAMD,KAAKT,EAAEU,CAAC,CAAC;AAC9D;AACA,SAASH,EAASI,GAAO;AACrB,MAAIC,IAAO,CAAC,EAAE;AACd,WAASF,IAAI,GAAGA,IAAIC,EAAM,QAAQD;AAC9B,aAASG,IAAI,GAAGC,IAAIF,EAAK,QAAQC,IAAIC,GAAGD;AACpC,MAAAD,EAAK,KAAKA,EAAKC,CAAC,EAAE,OAAOF,EAAMD,CAAC,CAAC,CAAC;AAG1C,SAAOE,EAAK,KAAK,CAAC,GAAGZ,MAAMA,EAAE,SAAS,EAAE,MAAM;AAClD;AAoDA,SAASe,EAAUC,GAAM;AACrB,MAAIC,IAAS,uBAAO,OAAO,IAAI;AAC/B,WAASC,KAAQF,GAAM;AACnB,QAAIG,IAAOH,EAAKE,CAAI;AACpB,IAAK,MAAM,QAAQC,CAAI,MACnBA,IAAO,CAACA,CAAI;AAChB,aAASC,KAAQF,EAAK,MAAM,GAAG;AAC3B,UAAIE,GAAM;AACN,YAAIC,IAAS,CAAA,GAAIC,IAAO,GAAqBC,IAAOH;AACpD,iBAASI,IAAM,OAAK;AAChB,cAAID,KAAQ,SAASC,IAAM,KAAKA,IAAM,KAAKJ,EAAK,QAAQ;AACpD,YAAAE,IAAO;AACP;AAAA,UACJ;AACA,cAAIjB,IAAI,8BAA8B,KAAKkB,CAAI;AAC/C,cAAI,CAAClB;AACD,kBAAM,IAAI,WAAW,mBAAmBe,CAAI;AAGhD,cAFAC,EAAO,KAAKhB,EAAE,CAAC,KAAK,MAAM,KAAKA,EAAE,CAAC,EAAE,CAAC,KAAK,MAAM,KAAK,MAAMA,EAAE,CAAC,CAAC,IAAIA,EAAE,CAAC,CAAC,GACvEmB,KAAOnB,EAAE,CAAC,EAAE,QACRmB,KAAOJ,EAAK;AACZ;AACJ,cAAIK,IAAOL,EAAKI,GAAK;AACrB,cAAIA,KAAOJ,EAAK,UAAUK,KAAQ,KAAK;AACnC,YAAAH,IAAO;AACP;AAAA,UACJ;AACA,cAAIG,KAAQ;AACR,kBAAM,IAAI,WAAW,mBAAmBL,CAAI;AAChD,UAAAG,IAAOH,EAAK,MAAMI,CAAG;AAAA,QACzB;AACA,YAAIE,IAAOL,EAAO,SAAS,GAAGM,IAAQN,EAAOK,CAAI;AACjD,YAAI,CAACC;AACD,gBAAM,IAAI,WAAW,mBAAmBP,CAAI;AAChD,YAAIQ,IAAO,IAAIC,EAAKV,GAAMG,GAAMI,IAAO,IAAIL,EAAO,MAAM,GAAGK,CAAI,IAAI,IAAI;AACvE,QAAAT,EAAOU,CAAK,IAAIC,EAAK,KAAKX,EAAOU,CAAK,CAAC;AAAA,MAC3C;AAAA,EACR;AACA,SAAOG,EAAa,IAAIb,CAAM;AAClC;AACA,MAAMa,IAAe,IAAIC,EAAS;AAAA,EAC9B,QAAQhC,GAAGC,GAAG;AACV,QAAIgC,GAAKC,GAAMC;AACf,WAAOnC,KAAKC,KAAG;AASX,UARI,CAACD,KAAKC,KAAKD,EAAE,SAASC,EAAE,SACxBkC,IAAOlC,GACPA,IAAIA,EAAE,SAGNkC,IAAOnC,GACPA,IAAIA,EAAE,OAENiC,KAAOA,EAAI,QAAQE,EAAK,QAAQ,CAACA,EAAK,WAAW,CAACF,EAAI;AACtD;AACJ,UAAIG,IAAO,IAAIN,EAAKK,EAAK,MAAMA,EAAK,MAAMA,EAAK,OAAO;AACtD,MAAIF,IACAA,EAAI,OAAOG,IAEXF,IAAOE,GACXH,IAAMG;AAAA,IACV;AACA,WAAOF;AAAA,EACX;AACJ,CAAC;AACD,MAAMJ,EAAK;AAAA,EACP,YAAYV,GAAMG,GAAMc,GAASX,GAAM;AACnC,SAAK,OAAON,GACZ,KAAK,OAAOG,GACZ,KAAK,UAAUc,GACf,KAAK,OAAOX;AAAA,EAChB;AAAA,EACA,IAAI,SAAS;AAAE,WAAO,KAAK,QAAQ;AAAA,EAAqB;AAAA,EACxD,IAAI,UAAU;AAAE,WAAO,KAAK,QAAQ;AAAA,EAAsB;AAAA,EAC1D,KAAKY,GAAO;AACR,WAAI,CAACA,KAASA,EAAM,QAAQ,KAAK,SAC7B,KAAK,OAAOA,GACL,SAEXA,EAAM,OAAO,KAAK,KAAKA,EAAM,IAAI,GAC1BA;AAAA,EACX;AAAA,EACA,IAAI,QAAQ;AAAE,WAAO,KAAK,UAAU,KAAK,QAAQ,SAAS;AAAA,EAAG;AACjE;AACAR,EAAK,QAAQ,IAAIA,EAAK,CAAA,GAAI,GAAqB,IAAI;AAMnD,SAASS,EAAenB,GAAMoB,GAAS;AACnC,MAAIC,IAAM,uBAAO,OAAO,IAAI;AAC5B,WAASC,KAAStB;AACd,QAAI,CAAC,MAAM,QAAQsB,EAAM,GAAG;AACxB,MAAAD,EAAIC,EAAM,IAAI,EAAE,IAAIA,EAAM;AAAA;AAE1B,eAAS7C,KAAO6C,EAAM;AAClB,QAAAD,EAAI5C,EAAI,EAAE,IAAI6C,EAAM;AAEhC,MAAI,EAAE,OAAAC,GAAO,KAAAC,IAAM,KAAI,IAAKJ,KAAW,CAAA;AACvC,SAAO;AAAA,IACH,OAAO,CAACpB,MAAS;AACb,UAAIyB,IAAMD;AACV,eAAS/C,KAAOuB;AACZ,iBAAS0B,KAAOjD,EAAI,KAAK;AACrB,cAAIkD,IAAWN,EAAIK,EAAI,EAAE;AACzB,cAAIC,GAAU;AACV,YAAAF,IAAMA,IAAMA,IAAM,MAAME,IAAWA;AACnC;AAAA,UACJ;AAAA,QACJ;AAEJ,aAAOF;AAAA,IACX;AAAA,IACA,OAAAF;AAAA,EACR;AACA;AACA,SAASK,EAAcC,GAAc7B,GAAM;AACvC,MAAI8B,IAAS;AACb,WAASC,KAAeF,GAAc;AAClC,QAAIG,IAAQD,EAAY,MAAM/B,CAAI;AAClC,IAAIgC,MACAF,IAASA,IAASA,IAAS,MAAME,IAAQA;AAAA,EACjD;AACA,SAAOF;AACX;AAOA,SAASG,EAAcC,GAAMH,GAM7BI,GAIAC,IAAO,GAIPC,IAAKH,EAAK,QAAQ;AACd,MAAII,IAAU,IAAIC,EAAiBH,GAAM,MAAM,QAAQL,CAAW,IAAIA,IAAc,CAACA,CAAW,GAAGI,CAAQ;AAC3G,EAAAG,EAAQ,eAAeJ,EAAK,OAAM,GAAIE,GAAMC,GAAI,IAAIC,EAAQ,YAAY,GACxEA,EAAQ,MAAMD,CAAE;AACpB;AA8BA,MAAME,EAAiB;AAAA,EACnB,YAAYC,GAAIX,GAAcY,GAAM;AAChC,SAAK,KAAKD,GACV,KAAK,eAAeX,GACpB,KAAK,OAAOY,GACZ,KAAK,QAAQ;AAAA,EACjB;AAAA,EACA,UAAUD,GAAIf,GAAK;AACf,IAAIA,KAAO,KAAK,UACZ,KAAK,MAAMe,CAAE,GACTA,IAAK,KAAK,OACV,KAAK,KAAKA,IACd,KAAK,QAAQf;AAAA,EAErB;AAAA,EACA,MAAMY,GAAI;AACN,IAAIA,IAAK,KAAK,MAAM,KAAK,SACrB,KAAK,KAAK,KAAK,IAAIA,GAAI,KAAK,KAAK;AAAA,EACzC;AAAA,EACA,eAAeK,GAAQN,GAAMC,GAAIM,GAAgBd,GAAc;AAC3D,QAAI,EAAE,MAAAe,GAAM,MAAMC,GAAO,IAAIC,EAAG,IAAKJ;AACrC,QAAIG,KAASR,KAAMS,KAAOV;AACtB;AACJ,IAAIQ,EAAK,UACLf,IAAe,KAAK,aAAa,OAAO,CAAAkB,MAAK,CAACA,EAAE,SAASA,EAAE,MAAMH,CAAI,CAAC;AAC1E,QAAInB,IAAMkB,GACNlC,IAAOuC,EAAaN,CAAM,KAAKhC,EAAK,OACpCuC,IAASrB,EAAcC,GAAcpB,EAAK,IAAI;AASlD,QARIwC,MACIxB,MACAA,KAAO,MACXA,KAAOwB,GACHxC,EAAK,QAAQ,MACbkC,MAAmBA,IAAiB,MAAM,MAAMM,KAExD,KAAK,UAAU,KAAK,IAAIb,GAAMS,CAAK,GAAGpB,CAAG,GACrChB,EAAK;AACL;AACJ,QAAIyC,IAAUR,EAAO,QAAQA,EAAO,KAAK,KAAK9B,EAAS,OAAO;AAC9D,QAAIsC,KAAWA,EAAQ,SAAS;AAC5B,UAAI1C,IAAQkC,EAAO,KAAK,MAAMQ,EAAQ,QAAQ,CAAC,EAAE,OAAOL,GAAO,CAAC,GAC5DM,IAAoB,KAAK,aAAa,OAAO,CAAAJ,MAAK,CAACA,EAAE,SAASA,EAAE,MAAMG,EAAQ,KAAK,IAAI,CAAC,GACxFE,IAAWV,EAAO,WAAU;AAChC,eAASnD,IAAI,GAAGc,IAAMwC,KAAQtD,KAAK;AAC/B,YAAIe,IAAOf,IAAI2D,EAAQ,QAAQ,SAASA,EAAQ,QAAQ3D,CAAC,IAAI,MACzD8D,IAAU/C,IAAOA,EAAK,OAAOuC,IAAQC,GACrCQ,IAAY,KAAK,IAAIlB,GAAM/B,CAAG,GAAGkD,IAAU,KAAK,IAAIlB,GAAIgB,CAAO;AACnE,YAAIC,IAAYC,KAAWH;AACvB,iBAAOV,EAAO,OAAOa,MACjB,KAAK,eAAeb,GAAQY,GAAWC,GAASZ,GAAgBd,CAAY,GAC5E,KAAK,UAAU,KAAK,IAAI0B,GAASb,EAAO,EAAE,GAAGjB,CAAG,GAC5C,EAAAiB,EAAO,MAAMW,KAAW,CAACX,EAAO,YAAW;AAA/C;AAIR,YAAI,CAACpC,KAAQ+C,IAAUhB;AACnB;AACJ,QAAAhC,IAAMC,EAAK,KAAKuC,GACZxC,IAAM+B,MACN,KAAK,eAAe5B,EAAM,OAAM,GAAI,KAAK,IAAI4B,GAAM9B,EAAK,OAAOuC,CAAK,GAAG,KAAK,IAAIR,GAAIhC,CAAG,GAAG,IAAI8C,CAAiB,GAC/G,KAAK,UAAU,KAAK,IAAId,GAAIhC,CAAG,GAAGoB,CAAG;AAAA,MAE7C;AACA,MAAI2B,KACAV,EAAO,OAAM;AAAA,IACrB,WACSA,EAAO,cAAc;AAC1B,MAAIQ,MACAP,IAAiB;AACrB;AACI,YAAI,EAAAD,EAAO,MAAMN,IAEjB;AAAA,cAAIM,EAAO,QAAQL;AACf;AACJ,eAAK,eAAeK,GAAQN,GAAMC,GAAIM,GAAgBd,CAAY,GAClE,KAAK,UAAU,KAAK,IAAIQ,GAAIK,EAAO,EAAE,GAAGjB,CAAG;AAAA;AAAA,aACtCiB,EAAO,YAAW;AAC3B,MAAAA,EAAO,OAAM;AAAA,IACjB;AAAA,EACJ;AACJ;AAMA,SAASM,EAAaQ,GAAM;AACxB,MAAI/C,IAAO+C,EAAK,KAAK,KAAK7C,CAAY;AACtC,SAAOF,KAAQA,EAAK,WAAW,CAAC+C,EAAK,aAAa/C,EAAK,OAAO;AAC1D,IAAAA,IAAOA,EAAK;AAChB,SAAOA,KAAQ;AACnB;AACA,MAAM/B,IAAIT,EAAI,QACRwF,IAAU/E,EAAC,GAAIR,IAAOQ,EAAC,GAAIgF,IAAWhF,EAAER,CAAI,GAAGyF,IAAejF,EAAER,CAAI,GAAG0F,IAAUlF,EAAC,GAAImF,IAASnF,EAAEkF,CAAO,GAAGE,IAASpF,EAAEkF,CAAO,GAAGG,IAAUrF,EAAC,GAAIsF,IAAUtF,EAAEqF,CAAO,GAAGE,IAAUvF,KAAKwF,IAAWxF,KAAKyF,IAAczF,KAAK0F,IAAU1F,EAAEyF,CAAW,GAAGE,IAAO3F,EAAC,GAqBzPsB,IAAO;AAAA;AAAA;AAAA;AAAA,EAIT,SAAAyD;AAAA;AAAA;AAAA;AAAA,EAIA,aAAa/E,EAAE+E,CAAO;AAAA;AAAA;AAAA;AAAA,EAItB,cAAc/E,EAAE+E,CAAO;AAAA;AAAA;AAAA;AAAA,EAIvB,YAAY/E,EAAE+E,CAAO;AAAA;AAAA;AAAA;AAAA,EAIrB,MAAAvF;AAAA;AAAA;AAAA;AAAA,EAIA,cAAcQ,EAAER,CAAI;AAAA;AAAA;AAAA;AAAA,EAIpB,UAAUwF;AAAA;AAAA;AAAA;AAAA,EAIV,SAAShF,EAAEgF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAInB,cAAcC;AAAA;AAAA;AAAA;AAAA,EAId,eAAejF,EAAEiF,CAAY;AAAA;AAAA;AAAA;AAAA,EAI7B,WAAWjF,EAAER,CAAI;AAAA;AAAA;AAAA;AAAA,EAIjB,WAAWQ,EAAER,CAAI;AAAA;AAAA;AAAA;AAAA,EAIjB,WAAWQ,EAAER,CAAI;AAAA;AAAA;AAAA;AAAA,EAIjB,WAAWQ,EAAER,CAAI;AAAA;AAAA;AAAA;AAAA,EAIjB,SAAA0F;AAAA;AAAA;AAAA;AAAA,EAIA,QAAAC;AAAA;AAAA;AAAA;AAAA,EAIA,WAAWnF,EAAEmF,CAAM;AAAA;AAAA;AAAA;AAAA,EAInB,WAAWnF,EAAEmF,CAAM;AAAA;AAAA;AAAA;AAAA,EAInB,gBAAgBnF,EAAEmF,CAAM;AAAA;AAAA;AAAA;AAAA,EAIxB,QAAAC;AAAA;AAAA;AAAA;AAAA,EAIA,SAASpF,EAAEoF,CAAM;AAAA;AAAA;AAAA;AAAA,EAIjB,OAAOpF,EAAEoF,CAAM;AAAA;AAAA;AAAA;AAAA,EAIf,MAAMpF,EAAEkF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,QAAQlF,EAAEkF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKjB,QAAQlF,EAAEkF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIjB,OAAOlF,EAAEkF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhB,KAAKlF,EAAEkF,CAAO;AAAA;AAAA;AAAA;AAAA,EAId,SAAAK;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAMvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,MAAMvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,MAAMvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,MAAMvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,UAAUvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,iBAAiBvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAI1B,gBAAgBvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIzB,mBAAmBvF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAK5B,eAAevF,EAAEuF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIxB,UAAAC;AAAA;AAAA;AAAA;AAAA,EAIA,eAAexF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAIzB,oBAAoBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,eAAexF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAIzB,iBAAiBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI3B,iBAAiBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI3B,gBAAgBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI1B,oBAAoBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI9B,cAAcxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAIxB,iBAAiBxF,EAAEwF,CAAQ;AAAA;AAAA;AAAA;AAAA,EAI3B,aAAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,WAAWzF,EAAEyF,CAAW;AAAA;AAAA;AAAA;AAAA,EAIxB,SAAAC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc1F,EAAE0F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB,eAAe1F,EAAE0F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxB,OAAO1F,EAAE0F,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKhB,OAAO1F,EAAE0F,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhB,SAAAL;AAAA;AAAA;AAAA;AAAA,EAIA,SAAAC;AAAA;AAAA;AAAA;AAAA,EAIA,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,UAAUtF,EAAEsF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,kBAAkBtF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAI3B,MAAMrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIf,OAAOrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIhB,UAAUrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAInB,QAAQrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIjB,MAAMrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKf,WAAWrF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,eAAerF,EAAEqF,CAAO;AAAA;AAAA;AAAA;AAAA,EAIxB,UAAUrF,EAAC;AAAA;AAAA;AAAA;AAAA,EAIX,SAASA,EAAC;AAAA;AAAA;AAAA;AAAA,EAIV,SAASA,EAAC;AAAA;AAAA;AAAA;AAAA,EAIV,SAASA,EAAC;AAAA;AAAA;AAAA;AAAA,EAIV,MAAA2F;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc3F,EAAE2F,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,YAAY3F,EAAE2F,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKlB,uBAAuB3F,EAAE2F,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM7B,YAAYpG,EAAI,eAAe,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAM3C,UAAUA,EAAI,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOvC,UAAUA,EAAI,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMvC,UAAUA,EAAI,eAAe,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvC,OAAOA,EAAI,eAAe,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASjC,SAASA,EAAI,eAAe,SAAS;AACzC;AACA,SAASC,KAAQ8B,GAAM;AACnB,MAAIsE,IAAMtE,EAAK9B,CAAI;AACnB,EAAIoG,aAAerG,MACfqG,EAAI,OAAOpG;AACnB;AAiDyBiD,EAAe;AAAA,EACpC,EAAE,KAAKnB,EAAK,MAAM,OAAO,WAAU;AAAA,EACnC,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,UAAU,OAAO,eAAc;AAAA,EAC3C,EAAE,KAAKA,EAAK,QAAQ,OAAO,aAAY;AAAA,EACvC,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,MAAM,OAAO,WAAU;AAAA,EACnC,EAAE,KAAKA,EAAK,MAAM,OAAO,WAAU;AAAA,EACnC,EAAE,KAAKA,EAAK,KAAK,OAAO,UAAS;AAAA,EACjC,EAAE,KAAKA,EAAK,WAAW,OAAO,gBAAe;AAAA,EAC7C,EAAE,KAAKA,EAAK,UAAU,OAAO,eAAc;AAAA,EAC3C,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,QAAQ,OAAO,aAAY;AAAA,EACvC,EAAE,KAAKA,EAAK,QAAQ,OAAO,aAAY;AAAA,EACvC,EAAE,KAAK,CAACA,EAAK,QAAQA,EAAK,QAAQA,EAAK,QAAQA,EAAK,MAAM,CAAC,GAAG,OAAO,cAAa;AAAA,EAClF,EAAE,KAAKA,EAAK,cAAc,OAAO,mBAAkB;AAAA,EACnD,EAAE,KAAKA,EAAK,MAAMA,EAAK,YAAY,GAAG,OAAO,6BAA4B;AAAA,EACzE,EAAE,KAAKA,EAAK,WAAWA,EAAK,YAAY,GAAG,OAAO,kCAAiC;AAAA,EACnF,EAAE,KAAKA,EAAK,QAAQA,EAAK,YAAY,GAAG,OAAO,oBAAmB;AAAA,EAClE,EAAE,KAAKA,EAAK,WAAWA,EAAK,YAAY,GAAG,OAAO,kCAAiC;AAAA,EACnF,EAAE,KAAKA,EAAK,UAAU,OAAO,eAAc;AAAA,EAC3C,EAAE,KAAKA,EAAK,WAAW,OAAO,gBAAe;AAAA,EAC7C,EAAE,KAAKA,EAAK,WAAW,OAAO,gBAAe;AAAA,EAC7C,EAAE,KAAKA,EAAK,WAAW,OAAO,gBAAe;AAAA,EAC7C,EAAE,KAAKA,EAAK,cAAc,OAAO,mBAAkB;AAAA,EACnD,EAAE,KAAKA,EAAK,UAAU,OAAO,eAAc;AAAA,EAC3C,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,MAAM,OAAO,WAAU;AAAA,EACnC,EAAE,KAAKA,EAAK,SAAS,OAAO,cAAa;AAAA,EACzC,EAAE,KAAKA,EAAK,aAAa,OAAO,kBAAiB;AACrD,CAAC;","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("../../lr/dist/index.cjs"),O=require("../../highlight/dist/index.cjs"),P=O.styleTags({String:O.tags.string,Number:O.tags.number,"True False":O.tags.bool,PropertyName:O.tags.propertyName,Null:O.tags.null,", :":O.tags.separator,"[ ]":O.tags.squareBracket,"{ }":O.tags.brace}),r=e.LRParser.deserialize({version:14,states:"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",stateData:"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",goto:"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",nodeNames:"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",maxTerm:25,nodeProps:[["isolate",-2,6,11,""],["openedBy",7,"{",14,"["],["closedBy",8,"}",15,"]"]],propSources:[P],skippedNodes:[0],repeatNodeCount:2,tokenData:"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",tokenizers:[0],topRules:{JsonText:[0,1]},tokenPrec:0});exports.parser=r;
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../node_modules/@lezer/json/dist/index.js"],"sourcesContent":["import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n String: tags.string,\n Number: tags.number,\n \"True False\": tags.bool,\n PropertyName: tags.propertyName,\n Null: tags.null,\n \", :\": tags.separator,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n maxTerm: 25,\n nodeProps: [\n [\"isolate\", -2,6,11,\"\"],\n [\"openedBy\", 7,\"{\",14,\"[\"],\n [\"closedBy\", 8,\"}\",15,\"]\"]\n ],\n propSources: [jsonHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n tokenizers: [0],\n topRules: {\"JsonText\":[0,1]},\n tokenPrec: 0\n});\n\nexport { parser };\n"],"names":["jsonHighlighting","styleTags","tags","parser","LRParser"],"mappings":"uKAGMA,EAAmBC,EAAAA,UAAU,CACjC,OAAQC,EAAAA,KAAK,OACb,OAAQA,EAAAA,KAAK,OACb,aAAcA,EAAAA,KAAK,KACnB,aAAcA,EAAAA,KAAK,aACnB,KAAMA,EAAAA,KAAK,KACX,MAAOA,EAAAA,KAAK,UACZ,MAAOA,EAAAA,KAAK,cACZ,MAAOA,EAAAA,KAAK,KACd,CAAC,EAGKC,EAASC,EAAAA,SAAS,YAAY,CAClC,QAAS,GACT,OAAQ,mRACR,UAAW,iGACX,KAAM,kFACN,UAAW,0FACX,QAAS,GACT,UAAW,CACT,CAAC,UAAW,GAAG,EAAE,GAAG,EAAE,EACtB,CAAC,WAAY,EAAE,IAAI,GAAG,GAAG,EACzB,CAAC,WAAY,EAAE,IAAI,GAAG,GAAG,CAC7B,EACE,YAAa,CAACJ,CAAgB,EAC9B,aAAc,CAAC,CAAC,EAChB,gBAAiB,EACjB,UAAW,omBACX,WAAY,CAAC,CAAC,EACd,SAAU,CAAC,SAAW,CAAC,EAAE,CAAC,CAAC,EAC3B,UAAW,CACb,CAAC","x_google_ignoreList":[0]}
@@ -1,35 +0,0 @@
1
- import { LRParser as P } from "../../lr/dist/index.js";
2
- import { styleTags as e, tags as O } from "../../highlight/dist/index.js";
3
- const Q = e({
4
- String: O.string,
5
- Number: O.number,
6
- "True False": O.bool,
7
- PropertyName: O.propertyName,
8
- Null: O.null,
9
- ", :": O.separator,
10
- "[ ]": O.squareBracket,
11
- "{ }": O.brace
12
- }), o = P.deserialize({
13
- version: 14,
14
- states: "$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l",
15
- stateData: "#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O",
16
- goto: "!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R",
17
- nodeNames: "⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array",
18
- maxTerm: 25,
19
- nodeProps: [
20
- ["isolate", -2, 6, 11, ""],
21
- ["openedBy", 7, "{", 14, "["],
22
- ["closedBy", 8, "}", 15, "]"]
23
- ],
24
- propSources: [Q],
25
- skippedNodes: [0],
26
- repeatNodeCount: 2,
27
- tokenData: "(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~",
28
- tokenizers: [0],
29
- topRules: { JsonText: [0, 1] },
30
- tokenPrec: 0
31
- });
32
- export {
33
- o as parser
34
- };
35
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../node_modules/@lezer/json/dist/index.js"],"sourcesContent":["import { LRParser } from '@lezer/lr';\nimport { styleTags, tags } from '@lezer/highlight';\n\nconst jsonHighlighting = styleTags({\n String: tags.string,\n Number: tags.number,\n \"True False\": tags.bool,\n PropertyName: tags.propertyName,\n Null: tags.null,\n \", :\": tags.separator,\n \"[ ]\": tags.squareBracket,\n \"{ }\": tags.brace\n});\n\n// This file was generated by lezer-generator. You probably shouldn't edit it.\nconst parser = LRParser.deserialize({\n version: 14,\n states: \"$bOVQPOOOOQO'#Cb'#CbOnQPO'#CeOvQPO'#ClOOQO'#Cr'#CrQOQPOOOOQO'#Cg'#CgO}QPO'#CfO!SQPO'#CtOOQO,59P,59PO![QPO,59PO!aQPO'#CuOOQO,59W,59WO!iQPO,59WOVQPO,59QOqQPO'#CmO!nQPO,59`OOQO1G.k1G.kOVQPO'#CnO!vQPO,59aOOQO1G.r1G.rOOQO1G.l1G.lOOQO,59X,59XOOQO-E6k-E6kOOQO,59Y,59YOOQO-E6l-E6l\",\n stateData: \"#O~OeOS~OQSORSOSSOTSOWQO_ROgPO~OVXOgUO~O^[O~PVO[^O~O]_OVhX~OVaO~O]bO^iX~O^dO~O]_OVha~O]bO^ia~O\",\n goto: \"!kjPPPPPPkPPkqwPPPPk{!RPPP!XP!e!hXSOR^bQWQRf_TVQ_Q`WRg`QcZRicQTOQZRQe^RhbRYQR]R\",\n nodeNames: \"⚠ JsonText True False Null Number String } { Object Property PropertyName : , ] [ Array\",\n maxTerm: 25,\n nodeProps: [\n [\"isolate\", -2,6,11,\"\"],\n [\"openedBy\", 7,\"{\",14,\"[\"],\n [\"closedBy\", 8,\"}\",15,\"]\"]\n ],\n propSources: [jsonHighlighting],\n skippedNodes: [0],\n repeatNodeCount: 2,\n tokenData: \"(|~RaXY!WYZ!W]^!Wpq!Wrs!]|}$u}!O$z!Q!R%T!R![&c![!]&t!}#O&y#P#Q'O#Y#Z'T#b#c'r#h#i(Z#o#p(r#q#r(w~!]Oe~~!`Wpq!]qr!]rs!xs#O!]#O#P!}#P;'S!];'S;=`$o<%lO!]~!}Og~~#QXrs!]!P!Q!]#O#P!]#U#V!]#Y#Z!]#b#c!]#f#g!]#h#i!]#i#j#m~#pR!Q![#y!c!i#y#T#Z#y~#|R!Q![$V!c!i$V#T#Z$V~$YR!Q![$c!c!i$c#T#Z$c~$fR!Q![!]!c!i!]#T#Z!]~$rP;=`<%l!]~$zO]~~$}Q!Q!R%T!R![&c~%YRT~!O!P%c!g!h%w#X#Y%w~%fP!Q![%i~%nRT~!Q![%i!g!h%w#X#Y%w~%zR{|&T}!O&T!Q![&Z~&WP!Q![&Z~&`PT~!Q![&Z~&hST~!O!P%c!Q![&c!g!h%w#X#Y%w~&yO[~~'OO_~~'TO^~~'WP#T#U'Z~'^P#`#a'a~'dP#g#h'g~'jP#X#Y'm~'rOR~~'uP#i#j'x~'{P#`#a(O~(RP#`#a(U~(ZOS~~(^P#f#g(a~(dP#i#j(g~(jP#X#Y(m~(rOQ~~(wOW~~(|OV~\",\n tokenizers: [0],\n topRules: {\"JsonText\":[0,1]},\n tokenPrec: 0\n});\n\nexport { parser };\n"],"names":["jsonHighlighting","styleTags","tags","parser","LRParser"],"mappings":";;AAGA,MAAMA,IAAmBC,EAAU;AAAA,EACjC,QAAQC,EAAK;AAAA,EACb,QAAQA,EAAK;AAAA,EACb,cAAcA,EAAK;AAAA,EACnB,cAAcA,EAAK;AAAA,EACnB,MAAMA,EAAK;AAAA,EACX,OAAOA,EAAK;AAAA,EACZ,OAAOA,EAAK;AAAA,EACZ,OAAOA,EAAK;AACd,CAAC,GAGKC,IAASC,EAAS,YAAY;AAAA,EAClC,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,MAAM;AAAA,EACN,WAAW;AAAA,EACX,SAAS;AAAA,EACT,WAAW;AAAA,IACT,CAAC,WAAW,IAAG,GAAE,IAAG,EAAE;AAAA,IACtB,CAAC,YAAY,GAAE,KAAI,IAAG,GAAG;AAAA,IACzB,CAAC,YAAY,GAAE,KAAI,IAAG,GAAG;AAAA,EAC7B;AAAA,EACE,aAAa,CAACJ,CAAgB;AAAA,EAC9B,cAAc,CAAC,CAAC;AAAA,EAChB,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,YAAY,CAAC,CAAC;AAAA,EACd,UAAU,EAAC,UAAW,CAAC,GAAE,CAAC,EAAC;AAAA,EAC3B,WAAW;AACb,CAAC;","x_google_ignoreList":[0]}
@@ -1,2 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../../common/dist/index.cjs");class b{constructor(t,e,s,i,h,r,n,o,a,f=0,l){this.p=t,this.stack=e,this.state=s,this.reducePos=i,this.pos=h,this.score=r,this.buffer=n,this.bufferBase=o,this.curContext=a,this.lookAhead=f,this.parent=l}toString(){return`[${this.stack.filter((t,e)=>e%3==0).concat(this.state)}]@${this.pos}${this.score?"!"+this.score:""}`}static start(t,e,s=0){let i=t.parser.context;return new b(t,[],e,s,s,0,[],0,i?new w(i,i.start):null,0,null)}get context(){return this.curContext?this.curContext.context:null}pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffer.length),this.state=t}reduce(t){var e;let s=t>>19,i=t&65535,{parser:h}=this.p,r=this.reducePos<this.pos-25&&this.setLookAhead(this.pos),n=h.dynamicPrecedence(i);if(n&&(this.score+=n),s==0){i<h.minRepeatTerm&&this.reducePos<this.pos&&(this.reducePos=this.pos),this.pushState(h.getGoto(this.state,i,!0),this.reducePos),i<h.minRepeatTerm&&this.storeNode(i,this.reducePos,this.reducePos,r?8:4,!0),this.reduceContext(i,this.reducePos);return}let o=this.stack.length-(s-1)*3-(t&262144?6:0),a=o?this.stack[o-2]:this.p.ranges[0].from;i<h.minRepeatTerm&&a==this.reducePos&&this.reducePos<this.pos&&(this.reducePos=this.pos);let f=this.reducePos-a;f>=2e3&&!(!((e=this.p.parser.nodeSet.types[i])===null||e===void 0)&&e.isAnonymous)&&(a==this.p.lastBigReductionStart?(this.p.bigReductionCount++,this.p.lastBigReductionSize=f):this.p.lastBigReductionSize<f&&(this.p.bigReductionCount=1,this.p.lastBigReductionStart=a,this.p.lastBigReductionSize=f));let l=o?this.stack[o-1]:0,p=this.bufferBase+this.buffer.length-l;if(i<h.minRepeatTerm||t&131072){let c=h.stateFlag(this.state,1)?this.pos:this.reducePos;this.storeNode(i,a,c,p+4,!0)}if(t&262144)this.state=this.stack[o];else{let c=this.stack[o-3];this.state=h.getGoto(c,i,!0)}for(;this.stack.length>o;)this.stack.pop();this.reduceContext(i,a)}storeNode(t,e,s,i=4,h=!1){if(t==0&&(!this.stack.length||this.stack[this.stack.length-1]<this.buffer.length+this.bufferBase)){let r=this.buffer.length;if(r>0&&this.buffer[r-4]==0&&this.buffer[r-1]>-1){if(e==s)return;if(this.buffer[r-2]>=e){this.buffer[r-2]=s;return}}}if(!h||this.pos==s)this.buffer.push(t,e,s,i);else{let r=this.buffer.length;if(r>0&&(this.buffer[r-4]!=0||this.buffer[r-1]<0)){let n=!1;for(let o=r;o>0&&this.buffer[o-2]>s;o-=4)if(this.buffer[o-1]>=0){n=!0;break}if(n)for(;r>0&&this.buffer[r-2]>s;)this.buffer[r]=this.buffer[r-4],this.buffer[r+1]=this.buffer[r-3],this.buffer[r+2]=this.buffer[r-2],this.buffer[r+3]=this.buffer[r-1],r-=4,i>4&&(i-=4)}this.buffer[r]=t,this.buffer[r+1]=e,this.buffer[r+2]=s,this.buffer[r+3]=i}}shift(t,e,s,i){if(t&131072)this.pushState(t&65535,this.pos);else if((t&262144)==0){let h=t,{parser:r}=this.p;this.pos=i;let n=r.stateFlag(h,1);!n&&(i>s||e<=r.maxNode)&&(this.reducePos=i),this.pushState(h,n?s:Math.min(s,this.reducePos)),this.shiftContext(e,s),e<=r.maxNode&&this.buffer.push(e,s,i,4)}else this.pos=i,this.shiftContext(e,s),e<=this.p.parser.maxNode&&this.buffer.push(e,s,i,4)}apply(t,e,s,i){t&65536?this.reduce(t):this.shift(t,e,s,i)}useNode(t,e){let s=this.p.reused.length-1;(s<0||this.p.reused[s]!=t)&&(this.p.reused.push(t),s++);let i=this.pos;this.reducePos=this.pos=i+t.length,this.pushState(e,i),this.buffer.push(s,i,this.reducePos,-1),this.curContext&&this.updateContext(this.curContext.tracker.reuse(this.curContext.context,t,this,this.p.stream.reset(this.pos-t.length)))}split(){let t=this,e=t.buffer.length;for(e&&t.buffer[e-4]==0&&(e-=4);e>0&&t.buffer[e-2]>t.reducePos;)e-=4;let s=t.buffer.slice(e),i=t.bufferBase+e;for(;t&&i==t.bufferBase;)t=t.parent;return new b(this.p,this.stack.slice(),this.state,this.reducePos,this.pos,this.score,s,i,this.curContext,this.lookAhead,t)}recoverByDelete(t,e){let s=t<=this.p.parser.maxNode;s&&this.storeNode(t,this.pos,e,4),this.storeNode(0,this.pos,e,s?8:4),this.pos=this.reducePos=e,this.score-=190}canShift(t){for(let e=new F(this);;){let s=this.p.parser.stateSlot(e.state,4)||this.p.parser.hasAction(e.state,t);if(s==0)return!1;if((s&65536)==0)return!0;e.reduce(s)}}recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.parser.nextStates(this.state);if(e.length>8||this.stack.length>=120){let i=[];for(let h=0,r;h<e.length;h+=2)(r=e[h+1])!=this.state&&this.p.parser.hasAction(r,t)&&i.push(e[h],r);if(this.stack.length<120)for(let h=0;i.length<8&&h<e.length;h+=2){let r=e[h+1];i.some((n,o)=>o&1&&n==r)||i.push(e[h],r)}e=i}let s=[];for(let i=0;i<e.length&&s.length<4;i+=2){let h=e[i+1];if(h==this.state)continue;let r=this.split();r.pushState(h,this.pos),r.storeNode(0,r.pos,r.pos,4,!0),r.shiftContext(e[i],this.pos),r.reducePos=this.pos,r.score-=200,s.push(r)}return s}forceReduce(){let{parser:t}=this.p,e=t.stateSlot(this.state,5);if((e&65536)==0)return!1;if(!t.validAction(this.state,e)){let s=e>>19,i=e&65535,h=this.stack.length-s*3;if(h<0||t.getGoto(this.stack[h],i,!1)<0){let r=this.findForcedReduction();if(r==null)return!1;e=r}this.storeNode(0,this.pos,this.pos,4,!0),this.score-=100}return this.reducePos=this.pos,this.reduce(e),!0}findForcedReduction(){let{parser:t}=this.p,e=[],s=(i,h)=>{if(!e.includes(i))return e.push(i),t.allActions(i,r=>{if(!(r&393216))if(r&65536){let n=(r>>19)-h;if(n>1){let o=r&65535,a=this.stack.length-n*3;if(a>=0&&t.getGoto(this.stack[a],o,!1)>=0)return n<<19|65536|o}}else{let n=s(r,h+1);if(n!=null)return n}})};return s(this.state,0)}forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.forceReduce()){this.storeNode(0,this.pos,this.pos,4,!0);break}return this}get deadEnd(){if(this.stack.length!=3)return!1;let{parser:t}=this.p;return t.data[t.stateSlot(this.state,1)]==65535&&!t.stateSlot(this.state,4)}restart(){this.storeNode(0,this.pos,this.pos,4,!0),this.state=this.stack[0],this.stack.length=0}sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length)return!1;for(let e=0;e<this.stack.length;e+=3)if(this.stack[e]!=t.stack[e])return!1;return!0}get parser(){return this.p.parser}dialectEnabled(t){return this.p.parser.dialect.flags[t]}shiftContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.shift(this.curContext.context,t,this,this.p.stream.reset(e)))}reduceContext(t,e){this.curContext&&this.updateContext(this.curContext.tracker.reduce(this.curContext.context,t,this,this.p.stream.reset(e)))}emitContext(){let t=this.buffer.length-1;(t<0||this.buffer[t]!=-3)&&this.buffer.push(this.curContext.hash,this.pos,this.pos,-3)}emitLookAhead(){let t=this.buffer.length-1;(t<0||this.buffer[t]!=-4)&&this.buffer.push(this.lookAhead,this.pos,this.pos,-4)}updateContext(t){if(t!=this.curContext.context){let e=new w(this.curContext.tracker,t);e.hash!=this.curContext.hash&&this.emitContext(),this.curContext=e}}setLookAhead(t){return t<=this.lookAhead?!1:(this.emitLookAhead(),this.lookAhead=t,!0)}close(){this.curContext&&this.curContext.tracker.strict&&this.emitContext(),this.lookAhead>0&&this.emitLookAhead()}}class w{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.hash(e):0}}class F{constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this.base=this.stack.length}reduce(t){let e=t&65535,s=t>>19;s==0?(this.stack==this.start.stack&&(this.stack=this.stack.slice()),this.stack.push(this.state,0,0),this.base+=3):this.base-=(s-1)*3;let i=this.start.p.parser.getGoto(this.stack[this.base-3],e,!0);this.state=i}}class A{constructor(t,e,s){this.stack=t,this.pos=e,this.index=s,this.buffer=t.buffer,this.index==0&&this.maybeNext()}static create(t,e=t.bufferBase+t.buffer.length){return new A(t,e,e-t.bufferBase)}maybeNext(){let t=this.stack.parent;t!=null&&(this.index=this.stack.bufferBase-t.bufferBase,this.stack=t,this.buffer=t.buffer)}get id(){return this.buffer[this.index-4]}get start(){return this.buffer[this.index-3]}get end(){return this.buffer[this.index-2]}get size(){return this.buffer[this.index-1]}next(){this.index-=4,this.pos-=4,this.index==0&&this.maybeNext()}fork(){return new A(this.stack,this.pos,this.index)}}function P(u,t=Uint16Array){if(typeof u!="string")return u;let e=null;for(let s=0,i=0;s<u.length;){let h=0;for(;;){let r=u.charCodeAt(s++),n=!1;if(r==126){h=65535;break}r>=92&&r--,r>=34&&r--;let o=r-32;if(o>=46&&(o-=46,n=!0),h+=o,n)break;h*=46}e?e[i++]=h:e=new t(h)}return e}class v{constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1,this.lookAhead=0,this.mask=0,this.context=0}}const y=new v;class D{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOff=0,this.chunk2="",this.chunk2Pos=0,this.next=-1,this.token=y,this.rangeIndex=0,this.pos=this.chunkPos=e[0].from,this.range=e[0],this.end=e[e.length-1].to,this.readNext()}resolveOffset(t,e){let s=this.range,i=this.rangeIndex,h=this.pos+t;for(;h<s.from;){if(!i)return null;let r=this.ranges[--i];h-=s.from-r.to,s=r}for(;e<0?h>s.to:h>=s.to;){if(i==this.ranges.length-1)return null;let r=this.ranges[++i];h+=r.from-s.to,s=r}return h}clipPos(t){if(t>=this.range.from&&t<this.range.to)return t;for(let e of this.ranges)if(e.to>t)return Math.max(t,e.from);return this.end}peek(t){let e=this.chunkOff+t,s,i;if(e>=0&&e<this.chunk.length)s=this.pos+t,i=this.chunk.charCodeAt(e);else{let h=this.resolveOffset(t,1);if(h==null)return-1;if(s=h,s>=this.chunk2Pos&&s<this.chunk2Pos+this.chunk2.length)i=this.chunk2.charCodeAt(s-this.chunk2Pos);else{let r=this.rangeIndex,n=this.range;for(;n.to<=s;)n=this.ranges[++r];this.chunk2=this.input.chunk(this.chunk2Pos=s),s+this.chunk2.length>n.to&&(this.chunk2=this.chunk2.slice(0,n.to-s)),i=this.chunk2.charCodeAt(0)}}return s>=this.token.lookAhead&&(this.token.lookAhead=s+1),i}acceptToken(t,e=0){let s=e?this.resolveOffset(e,-1):this.pos;if(s==null||s<this.token.start)throw new RangeError("Token end out of bounds");this.token.value=t,this.token.end=s}acceptTokenTo(t,e){this.token.value=t,this.token.end=e}getChunk(){if(this.pos>=this.chunk2Pos&&this.pos<this.chunk2Pos+this.chunk2.length){let{chunk:t,chunkPos:e}=this;this.chunk=this.chunk2,this.chunkPos=this.chunk2Pos,this.chunk2=t,this.chunk2Pos=e,this.chunkOff=this.pos-this.chunkPos}else{this.chunk2=this.chunk,this.chunk2Pos=this.chunkPos;let t=this.input.chunk(this.pos),e=this.pos+t.length;this.chunk=e>this.range.to?t.slice(0,this.range.to-this.pos):t,this.chunkPos=this.pos,this.chunkOff=0}}readNext(){return this.chunkOff>=this.chunk.length&&(this.getChunk(),this.chunkOff==this.chunk.length)?this.next=-1:this.next=this.chunk.charCodeAt(this.chunkOff)}advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.rangeIndex==this.ranges.length-1)return this.setDone();t-=this.range.to-this.pos,this.range=this.ranges[++this.rangeIndex],this.pos=this.range.from}return this.pos+=t,this.pos>=this.token.lookAhead&&(this.token.lookAhead=this.pos+1),this.readNext()}setDone(){return this.pos=this.chunkPos=this.end,this.range=this.ranges[this.rangeIndex=this.ranges.length-1],this.chunk="",this.next=-1}reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.extended=-1):this.token=y,this.pos!=t){if(this.pos=t,t==this.end)return this.setDone(),this;for(;t<this.range.from;)this.range=this.ranges[--this.rangeIndex];for(;t>=this.range.to;)this.range=this.ranges[++this.rangeIndex];t>=this.chunkPos&&t<this.chunkPos+this.chunk.length?this.chunkOff=t-this.chunkPos:(this.chunk="",this.chunkOff=0),this.readNext()}return this}read(t,e){if(t>=this.chunkPos&&e<=this.chunkPos+this.chunk.length)return this.chunk.slice(t-this.chunkPos,e-this.chunkPos);if(t>=this.chunk2Pos&&e<=this.chunk2Pos+this.chunk2.length)return this.chunk2.slice(t-this.chunk2Pos,e-this.chunk2Pos);if(t>=this.range.from&&e<=this.range.to)return this.input.read(t,e);let s="";for(let i of this.ranges){if(i.from>=e)break;i.to>t&&(s+=this.input.read(Math.max(i.from,t),Math.min(i.to,e)))}return s}}class x{constructor(t,e){this.data=t,this.id=e}token(t,e){let{parser:s}=e.p;O(this.data,t,e,this.id,s.data,s.tokenPrecTable)}}x.prototype.contextual=x.prototype.fallback=x.prototype.extend=!1;x.prototype.fallback=x.prototype.extend=!1;function O(u,t,e,s,i,h){let r=0,n=1<<s,{dialect:o}=e.p.parser;t:for(;(n&u[r])!=0;){let a=u[r+1];for(let c=r+3;c<a;c+=2)if((u[c+1]&n)>0){let d=u[c];if(o.allows(d)&&(t.token.value==-1||t.token.value==d||M(d,t.token.value,i,h))){t.acceptToken(d);break}}let f=t.next,l=0,p=u[r+2];if(t.next<0&&p>l&&u[a+p*3-3]==65535){r=u[a+p*3-1];continue t}for(;l<p;){let c=l+p>>1,d=a+c+(c<<1),S=u[d],B=u[d+1]||65536;if(f<S)p=c;else if(f>=B)l=c+1;else{r=u[d+2],t.advance();continue t}}break}}function N(u,t,e){for(let s=t,i;(i=u[s])!=65535;s++)if(i==e)return s-t;return-1}function M(u,t,e,s){let i=N(e,s,t);return i<0||N(e,s,u)<i}const g=typeof process<"u"&&process.env&&/\bparse\b/.test(process.env.LOG);let T=null;function R(u,t,e){let s=u.cursor(k.IterMode.IncludeAnonymous);for(s.moveTo(t);;)if(!(e<0?s.childBefore(t):s.childAfter(t)))for(;;){if((e<0?s.to<t:s.from>t)&&!s.type.isError)return e<0?Math.max(0,Math.min(s.to-1,t-25)):Math.min(u.length,Math.max(s.from+1,t+25));if(e<0?s.prevSibling():s.nextSibling())break;if(!s.parent())return e<0?0:u.length}}class L{constructor(t,e){this.fragments=t,this.nodeSet=e,this.i=0,this.fragment=null,this.safeFrom=-1,this.safeTo=-1,this.trees=[],this.start=[],this.index=[],this.nextFragment()}nextFragment(){let t=this.fragment=this.i==this.fragments.length?null:this.fragments[this.i++];if(t){for(this.safeFrom=t.openStart?R(t.tree,t.from+t.offset,1)-t.offset:t.from,this.safeTo=t.openEnd?R(t.tree,t.to+t.offset,-1)-t.offset:t.to;this.trees.length;)this.trees.pop(),this.start.pop(),this.index.pop();this.trees.push(t.tree),this.start.push(-t.offset),this.index.push(0),this.nextStart=this.safeFrom}else this.nextStart=1e9}nodeAt(t){if(t<this.nextStart)return null;for(;this.fragment&&this.safeTo<=t;)this.nextFragment();if(!this.fragment)return null;for(;;){let e=this.trees.length-1;if(e<0)return this.nextFragment(),null;let s=this.trees[e],i=this.index[e];if(i==s.children.length){this.trees.pop(),this.start.pop(),this.index.pop();continue}let h=s.children[i],r=this.start[e]+s.positions[i];if(r>t)return this.nextStart=r,null;if(h instanceof k.Tree){if(r==t){if(r<this.safeFrom)return null;let n=r+h.length;if(n<=this.safeTo){let o=h.prop(k.NodeProp.lookAhead);if(!o||n+o<this.fragment.to)return h}}this.index[e]++,r+h.length>=Math.max(this.safeFrom,t)&&(this.trees.push(h),this.start.push(r),this.index.push(0))}else this.index[e]++,this.nextStart=r+h.length}}}class ${constructor(t,e){this.stream=e,this.tokens=[],this.mainToken=null,this.actions=[],this.tokens=t.tokenizers.map(s=>new v)}getActions(t){let e=0,s=null,{parser:i}=t.p,{tokenizers:h}=i,r=i.stateSlot(t.state,3),n=t.curContext?t.curContext.hash:0,o=0;for(let a=0;a<h.length;a++){if((1<<a&r)==0)continue;let f=h[a],l=this.tokens[a];if(!(s&&!f.fallback)&&((f.contextual||l.start!=t.pos||l.mask!=r||l.context!=n)&&(this.updateCachedToken(l,f,t),l.mask=r,l.context=n),l.lookAhead>l.end+25&&(o=Math.max(l.lookAhead,o)),l.value!=0)){let p=e;if(l.extended>-1&&(e=this.addActions(t,l.extended,l.end,e)),e=this.addActions(t,l.value,l.end,e),!f.extend&&(s=l,e>p))break}}for(;this.actions.length>e;)this.actions.pop();return o&&t.setLookAhead(o),!s&&t.pos==this.stream.end&&(s=new v,s.value=t.p.parser.eofTerm,s.start=s.end=t.pos,e=this.addActions(t,s.value,s.end,e)),this.mainToken=s,this.actions}getMainToken(t){if(this.mainToken)return this.mainToken;let e=new v,{pos:s,p:i}=t;return e.start=s,e.end=Math.min(s+1,i.stream.end),e.value=s==i.stream.end?i.parser.eofTerm:0,e}updateCachedToken(t,e,s){let i=this.stream.clipPos(s.pos);if(e.token(this.stream.reset(i,t),s),t.value>-1){let{parser:h}=s.p;for(let r=0;r<h.specialized.length;r++)if(h.specialized[r]==t.value){let n=h.specializers[r](this.stream.read(t.start,t.end),s);if(n>=0&&s.p.parser.dialect.allows(n>>1)){(n&1)==0?t.value=n>>1:t.extended=n>>1;break}}}else t.value=0,t.end=this.stream.clipPos(i+1)}putAction(t,e,s,i){for(let h=0;h<i;h+=3)if(this.actions[h]==t)return i;return this.actions[i++]=t,this.actions[i++]=e,this.actions[i++]=s,i}addActions(t,e,s,i){let{state:h}=t,{parser:r}=t.p,{data:n}=r;for(let o=0;o<2;o++)for(let a=r.stateSlot(h,o?2:1);;a+=3){if(n[a]==65535)if(n[a+1]==1)a=m(n,a+2);else{i==0&&n[a+1]==2&&(i=this.putAction(m(n,a+2),e,s,i));break}n[a]==e&&(i=this.putAction(m(n,a+1),e,s,i))}return i}}class j{constructor(t,e,s,i){this.parser=t,this.input=e,this.ranges=i,this.recovering=0,this.nextStackID=9812,this.minStackPos=0,this.reused=[],this.stoppedAt=null,this.lastBigReductionStart=-1,this.lastBigReductionSize=0,this.bigReductionCount=0,this.stream=new D(e,i),this.tokens=new $(t,this.stream),this.topTerm=t.top[1];let{from:h}=i[0];this.stacks=[b.start(this,t.top[0],h)],this.fragments=s.length&&this.stream.end-h>t.bufferLength*4?new L(s,t.nodeSet):null}get parsedPos(){return this.minStackPos}advance(){let t=this.stacks,e=this.minStackPos,s=this.stacks=[],i,h;if(this.bigReductionCount>300&&t.length==1){let[r]=t;for(;r.forceReduce()&&r.stack.length&&r.stack[r.stack.length-2]>=this.lastBigReductionStart;);this.bigReductionCount=this.lastBigReductionSize=0}for(let r=0;r<t.length;r++){let n=t[r];for(;;){if(this.tokens.mainToken=null,n.pos>e)s.push(n);else{if(this.advanceStack(n,s,t))continue;{i||(i=[],h=[]),i.push(n);let o=this.tokens.getMainToken(n);h.push(o.value,o.end)}}break}}if(!s.length){let r=i&&G(i);if(r)return g&&console.log("Finish with "+this.stackID(r)),this.stackToTree(r);if(this.parser.strict)throw g&&i&&console.log("Stuck with token "+(this.tokens.mainToken?this.parser.getName(this.tokens.mainToken.value):"none")),new SyntaxError("No parse at "+e);this.recovering||(this.recovering=5)}if(this.recovering&&i){let r=this.stoppedAt!=null&&i[0].pos>this.stoppedAt?i[0]:this.runRecovery(i,h,s);if(r)return g&&console.log("Force-finish "+this.stackID(r)),this.stackToTree(r.forceAll())}if(this.recovering){let r=this.recovering==1?1:this.recovering*3;if(s.length>r)for(s.sort((n,o)=>o.score-n.score);s.length>r;)s.pop();s.some(n=>n.reducePos>e)&&this.recovering--}else if(s.length>1){t:for(let r=0;r<s.length-1;r++){let n=s[r];for(let o=r+1;o<s.length;o++){let a=s[o];if(n.sameState(a)||n.buffer.length>500&&a.buffer.length>500)if((n.score-a.score||n.buffer.length-a.buffer.length)>0)s.splice(o--,1);else{s.splice(r--,1);continue t}}}s.length>12&&(s.sort((r,n)=>n.score-r.score),s.splice(12,s.length-12))}this.minStackPos=s[0].pos;for(let r=1;r<s.length;r++)s[r].pos<this.minStackPos&&(this.minStackPos=s[r].pos);return null}stopAt(t){if(this.stoppedAt!=null&&this.stoppedAt<t)throw new RangeError("Can't move stoppedAt forward");this.stoppedAt=t}advanceStack(t,e,s){let i=t.pos,{parser:h}=this,r=g?this.stackID(t)+" -> ":"";if(this.stoppedAt!=null&&i>this.stoppedAt)return t.forceReduce()?t:null;if(this.fragments){let a=t.curContext&&t.curContext.tracker.strict,f=a?t.curContext.hash:0;for(let l=this.fragments.nodeAt(i);l;){let p=this.parser.nodeSet.types[l.type.id]==l.type?h.getGoto(t.state,l.type.id):-1;if(p>-1&&l.length&&(!a||(l.prop(k.NodeProp.contextHash)||0)==f))return t.useNode(l,p),g&&console.log(r+this.stackID(t)+` (via reuse of ${h.getName(l.type.id)})`),!0;if(!(l instanceof k.Tree)||l.children.length==0||l.positions[0]>0)break;let c=l.children[0];if(c instanceof k.Tree&&l.positions[0]==0)l=c;else break}}let n=h.stateSlot(t.state,4);if(n>0)return t.reduce(n),g&&console.log(r+this.stackID(t)+` (via always-reduce ${h.getName(n&65535)})`),!0;if(t.stack.length>=8400)for(;t.stack.length>6e3&&t.forceReduce(););let o=this.tokens.getActions(t);for(let a=0;a<o.length;){let f=o[a++],l=o[a++],p=o[a++],c=a==o.length||!s,d=c?t:t.split(),S=this.tokens.mainToken;if(d.apply(f,l,S?S.start:d.pos,p),g&&console.log(r+this.stackID(d)+` (via ${(f&65536)==0?"shift":`reduce of ${h.getName(f&65535)}`} for ${h.getName(l)} @ ${i}${d==t?"":", split"})`),c)return!0;d.pos>i?e.push(d):s.push(d)}return!1}advanceFully(t,e){let s=t.pos;for(;;){if(!this.advanceStack(t,null,null))return!1;if(t.pos>s)return z(t,e),!0}}runRecovery(t,e,s){let i=null,h=!1;for(let r=0;r<t.length;r++){let n=t[r],o=e[r<<1],a=e[(r<<1)+1],f=g?this.stackID(n)+" -> ":"";if(n.deadEnd&&(h||(h=!0,n.restart(),g&&console.log(f+this.stackID(n)+" (restarted)"),this.advanceFully(n,s))))continue;let l=n.split(),p=f;for(let c=0;c<10&&l.forceReduce()&&(g&&console.log(p+this.stackID(l)+" (via force-reduce)"),!this.advanceFully(l,s));c++)g&&(p=this.stackID(l)+" -> ");for(let c of n.recoverByInsert(o))g&&console.log(f+this.stackID(c)+" (via recover-insert)"),this.advanceFully(c,s);this.stream.end>n.pos?(a==n.pos&&(a++,o=0),n.recoverByDelete(o,a),g&&console.log(f+this.stackID(n)+` (via recover-delete ${this.parser.getName(o)})`),z(n,s)):(!i||i.score<l.score)&&(i=l)}return i}stackToTree(t){return t.close(),k.Tree.build({buffer:A.create(t),nodeSet:this.parser.nodeSet,topID:this.topTerm,maxBufferLength:this.parser.bufferLength,reused:this.reused,start:this.ranges[0].from,length:t.pos-this.ranges[0].from,minRepeatType:this.parser.minRepeatTerm})}stackID(t){let e=(T||(T=new WeakMap)).get(t);return e||T.set(t,e=String.fromCodePoint(this.nextStackID++)),e+t}}function z(u,t){for(let e=0;e<t.length;e++){let s=t[e];if(s.pos==u.pos&&s.sameState(u)){t[e].score<u.score&&(t[e]=u);return}}t.push(u)}class E{constructor(t,e,s){this.source=t,this.flags=e,this.disabled=s}allows(t){return!this.disabled||this.disabled[t]==0}}class C extends k.Parser{constructor(t){if(super(),this.wrappers=[],t.version!=14)throw new RangeError(`Parser version (${t.version}) doesn't match runtime version (14)`);let e=t.nodeNames.split(" ");this.minRepeatTerm=e.length;for(let n=0;n<t.repeatNodeCount;n++)e.push("");let s=Object.keys(t.topRules).map(n=>t.topRules[n][1]),i=[];for(let n=0;n<e.length;n++)i.push([]);function h(n,o,a){i[n].push([o,o.deserialize(String(a))])}if(t.nodeProps)for(let n of t.nodeProps){let o=n[0];typeof o=="string"&&(o=k.NodeProp[o]);for(let a=1;a<n.length;){let f=n[a++];if(f>=0)h(f,o,n[a++]);else{let l=n[a+-f];for(let p=-f;p>0;p--)h(n[a++],o,l);a++}}}this.nodeSet=new k.NodeSet(e.map((n,o)=>k.NodeType.define({name:o>=this.minRepeatTerm?void 0:n,id:o,props:i[o],top:s.indexOf(o)>-1,error:o==0,skipped:t.skippedNodes&&t.skippedNodes.indexOf(o)>-1}))),t.propSources&&(this.nodeSet=this.nodeSet.extend(...t.propSources)),this.strict=!1,this.bufferLength=k.DefaultBufferLength;let r=P(t.tokenData);this.context=t.context,this.specializerSpecs=t.specialized||[],this.specialized=new Uint16Array(this.specializerSpecs.length);for(let n=0;n<this.specializerSpecs.length;n++)this.specialized[n]=this.specializerSpecs[n].term;this.specializers=this.specializerSpecs.map(I),this.states=P(t.states,Uint32Array),this.data=P(t.stateData),this.goto=P(t.goto),this.maxTerm=t.maxTerm,this.tokenizers=t.tokenizers.map(n=>typeof n=="number"?new x(r,n):n),this.topRules=t.topRules,this.dialects=t.dialects||{},this.dynamicPrecedences=t.dynamicPrecedences||null,this.tokenPrecTable=t.tokenPrec,this.termNames=t.termNames||null,this.maxNode=this.nodeSet.types.length-1,this.dialect=this.parseDialect(),this.top=this.topRules[Object.keys(this.topRules)[0]]}createParse(t,e,s){let i=new j(this,t,e,s);for(let h of this.wrappers)i=h(i,t,e,s);return i}getGoto(t,e,s=!1){let i=this.goto;if(e>=i[0])return-1;for(let h=i[e+1];;){let r=i[h++],n=r&1,o=i[h++];if(n&&s)return o;for(let a=h+(r>>1);h<a;h++)if(i[h]==t)return o;if(n)return-1}}hasAction(t,e){let s=this.data;for(let i=0;i<2;i++)for(let h=this.stateSlot(t,i?2:1),r;;h+=3){if((r=s[h])==65535)if(s[h+1]==1)r=s[h=m(s,h+2)];else{if(s[h+1]==2)return m(s,h+2);break}if(r==e||r==0)return m(s,h+1)}return 0}stateSlot(t,e){return this.states[t*6+e]}stateFlag(t,e){return(this.stateSlot(t,0)&e)>0}validAction(t,e){return!!this.allActions(t,s=>s==e?!0:null)}allActions(t,e){let s=this.stateSlot(t,4),i=s?e(s):void 0;for(let h=this.stateSlot(t,1);i==null;h+=3){if(this.data[h]==65535)if(this.data[h+1]==1)h=m(this.data,h+2);else break;i=e(m(this.data,h+1))}return i}nextStates(t){let e=[];for(let s=this.stateSlot(t,1);;s+=3){if(this.data[s]==65535)if(this.data[s+1]==1)s=m(this.data,s+2);else break;if((this.data[s+2]&1)==0){let i=this.data[s+1];e.some((h,r)=>r&1&&h==i)||e.push(this.data[s],i)}}return e}configure(t){let e=Object.assign(Object.create(C.prototype),this);if(t.props&&(e.nodeSet=this.nodeSet.extend(...t.props)),t.top){let s=this.topRules[t.top];if(!s)throw new RangeError(`Invalid top rule name ${t.top}`);e.top=s}return t.tokenizers&&(e.tokenizers=this.tokenizers.map(s=>{let i=t.tokenizers.find(h=>h.from==s);return i?i.to:s})),t.specializers&&(e.specializers=this.specializers.slice(),e.specializerSpecs=this.specializerSpecs.map((s,i)=>{let h=t.specializers.find(n=>n.from==s.external);if(!h)return s;let r=Object.assign(Object.assign({},s),{external:h.to});return e.specializers[i]=I(r),r})),t.contextTracker&&(e.context=t.contextTracker),t.dialect&&(e.dialect=this.parseDialect(t.dialect)),t.strict!=null&&(e.strict=t.strict),t.wrap&&(e.wrappers=e.wrappers.concat(t.wrap)),t.bufferLength!=null&&(e.bufferLength=t.bufferLength),e}hasWrappers(){return this.wrappers.length>0}getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxNode&&this.nodeSet.types[t].name||t)}get eofTerm(){return this.maxNode+1}get topNode(){return this.nodeSet.types[this.top[1]]}dynamicPrecedence(t){let e=this.dynamicPrecedences;return e==null?0:e[t]||0}parseDialect(t){let e=Object.keys(this.dialects),s=e.map(()=>!1);if(t)for(let h of t.split(" ")){let r=e.indexOf(h);r>=0&&(s[r]=!0)}let i=null;for(let h=0;h<e.length;h++)if(!s[h])for(let r=this.dialects[e[h]],n;(n=this.data[r++])!=65535;)(i||(i=new Uint8Array(this.maxTerm+1)))[n]=1;return new E(t,s,i)}static deserialize(t){return new C(t)}}function m(u,t){return u[t]|u[t+1]<<16}function G(u){let t=null;for(let e of u){let s=e.p.stoppedAt;(e.pos==e.p.stream.end||s!=null&&e.pos>s)&&e.p.parser.stateFlag(e.state,2)&&(!t||t.score<e.score)&&(t=e)}return t}function I(u){if(u.external){let t=u.extend?1:0;return(e,s)=>u.external(e,s)<<1|t}return u.get}exports.InputStream=D;exports.LRParser=C;exports.Stack=b;
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../../../../node_modules/@lezer/lr/dist/index.js"],"sourcesContent":["import { Parser, NodeProp, NodeSet, NodeType, DefaultBufferLength, Tree, IterMode } from '@lezer/common';\n\n/**\nA parse stack. These are used internally by the parser to track\nparsing progress. They also provide some properties and methods\nthat external code such as a tokenizer can use to get information\nabout the parse state.\n*/\nclass Stack {\n /**\n @internal\n */\n constructor(\n /**\n The parse that this stack is part of @internal\n */\n p, \n /**\n Holds state, input pos, buffer index triplets for all but the\n top state @internal\n */\n stack, \n /**\n The current parse state @internal\n */\n state, \n // The position at which the next reduce should take place. This\n // can be less than `this.pos` when skipped expressions have been\n // added to the stack (which should be moved outside of the next\n // reduction)\n /**\n @internal\n */\n reducePos, \n /**\n The input position up to which this stack has parsed.\n */\n pos, \n /**\n The dynamic score of the stack, including dynamic precedence\n and error-recovery penalties\n @internal\n */\n score, \n // The output buffer. Holds (type, start, end, size) quads\n // representing nodes created by the parser, where `size` is\n // amount of buffer array entries covered by this node.\n /**\n @internal\n */\n buffer, \n // The base offset of the buffer. When stacks are split, the split\n // instance shared the buffer history with its parent up to\n // `bufferBase`, which is the absolute offset (including the\n // offset of previous splits) into the buffer at which this stack\n // starts writing.\n /**\n @internal\n */\n bufferBase, \n /**\n @internal\n */\n curContext, \n /**\n @internal\n */\n lookAhead = 0, \n // A parent stack from which this was split off, if any. This is\n // set up so that it always points to a stack that has some\n // additional buffer content, never to a stack with an equal\n // `bufferBase`.\n /**\n @internal\n */\n parent) {\n this.p = p;\n this.stack = stack;\n this.state = state;\n this.reducePos = reducePos;\n this.pos = pos;\n this.score = score;\n this.buffer = buffer;\n this.bufferBase = bufferBase;\n this.curContext = curContext;\n this.lookAhead = lookAhead;\n this.parent = parent;\n }\n /**\n @internal\n */\n toString() {\n return `[${this.stack.filter((_, i) => i % 3 == 0).concat(this.state)}]@${this.pos}${this.score ? \"!\" + this.score : \"\"}`;\n }\n // Start an empty stack\n /**\n @internal\n */\n static start(p, state, pos = 0) {\n let cx = p.parser.context;\n return new Stack(p, [], state, pos, pos, 0, [], 0, cx ? new StackContext(cx, cx.start) : null, 0, null);\n }\n /**\n The stack's current [context](#lr.ContextTracker) value, if\n any. Its type will depend on the context tracker's type\n parameter, or it will be `null` if there is no context\n tracker.\n */\n get context() { return this.curContext ? this.curContext.context : null; }\n // Push a state onto the stack, tracking its start position as well\n // as the buffer base at that point.\n /**\n @internal\n */\n pushState(state, start) {\n this.stack.push(this.state, start, this.bufferBase + this.buffer.length);\n this.state = state;\n }\n // Apply a reduce action\n /**\n @internal\n */\n reduce(action) {\n var _a;\n let depth = action >> 19 /* Action.ReduceDepthShift */, type = action & 65535 /* Action.ValueMask */;\n let { parser } = this.p;\n let lookaheadRecord = this.reducePos < this.pos - 25 /* Lookahead.Margin */ && this.setLookAhead(this.pos);\n let dPrec = parser.dynamicPrecedence(type);\n if (dPrec)\n this.score += dPrec;\n if (depth == 0) {\n if (type < parser.minRepeatTerm && this.reducePos < this.pos)\n this.reducePos = this.pos;\n this.pushState(parser.getGoto(this.state, type, true), this.reducePos);\n // Zero-depth reductions are a special case—they add stuff to\n // the stack without popping anything off.\n if (type < parser.minRepeatTerm)\n this.storeNode(type, this.reducePos, this.reducePos, lookaheadRecord ? 8 : 4, true);\n this.reduceContext(type, this.reducePos);\n return;\n }\n // Find the base index into `this.stack`, content after which will\n // be dropped. Note that with `StayFlag` reductions we need to\n // consume two extra frames (the dummy parent node for the skipped\n // expression and the state that we'll be staying in, which should\n // be moved to `this.state`).\n let base = this.stack.length - ((depth - 1) * 3) - (action & 262144 /* Action.StayFlag */ ? 6 : 0);\n let start = base ? this.stack[base - 2] : this.p.ranges[0].from;\n if (type < parser.minRepeatTerm && start == this.reducePos && this.reducePos < this.pos)\n this.reducePos = this.pos;\n let size = this.reducePos - start;\n // This is a kludge to try and detect overly deep left-associative\n // trees, which will not increase the parse stack depth and thus\n // won't be caught by the regular stack-depth limit check.\n if (size >= 2000 /* Recover.MinBigReduction */ && !((_a = this.p.parser.nodeSet.types[type]) === null || _a === void 0 ? void 0 : _a.isAnonymous)) {\n if (start == this.p.lastBigReductionStart) {\n this.p.bigReductionCount++;\n this.p.lastBigReductionSize = size;\n }\n else if (this.p.lastBigReductionSize < size) {\n this.p.bigReductionCount = 1;\n this.p.lastBigReductionStart = start;\n this.p.lastBigReductionSize = size;\n }\n }\n let bufferBase = base ? this.stack[base - 1] : 0, count = this.bufferBase + this.buffer.length - bufferBase;\n // Store normal terms or `R -> R R` repeat reductions\n if (type < parser.minRepeatTerm || (action & 131072 /* Action.RepeatFlag */)) {\n let pos = parser.stateFlag(this.state, 1 /* StateFlag.Skipped */) ? this.pos : this.reducePos;\n this.storeNode(type, start, pos, count + 4, true);\n }\n if (action & 262144 /* Action.StayFlag */) {\n this.state = this.stack[base];\n }\n else {\n let baseStateID = this.stack[base - 3];\n this.state = parser.getGoto(baseStateID, type, true);\n }\n while (this.stack.length > base)\n this.stack.pop();\n this.reduceContext(type, start);\n }\n // Shift a value into the buffer\n /**\n @internal\n */\n storeNode(term, start, end, size = 4, mustSink = false) {\n if (term == 0 /* Term.Err */ &&\n (!this.stack.length || this.stack[this.stack.length - 1] < this.buffer.length + this.bufferBase)) {\n // Try to omit/merge adjacent error nodes\n let top = this.buffer.length;\n if (top > 0 && this.buffer[top - 4] == 0 /* Term.Err */ && this.buffer[top - 1] > -1) {\n if (start == end)\n return;\n if (this.buffer[top - 2] >= start) {\n this.buffer[top - 2] = end;\n return;\n }\n }\n }\n if (!mustSink || this.pos == end) { // Simple case, just append\n this.buffer.push(term, start, end, size);\n }\n else { // There may be skipped nodes that have to be moved forward\n let index = this.buffer.length;\n if (index > 0 && (this.buffer[index - 4] != 0 /* Term.Err */ || this.buffer[index - 1] < 0)) {\n let mustMove = false;\n for (let scan = index; scan > 0 && this.buffer[scan - 2] > end; scan -= 4) {\n if (this.buffer[scan - 1] >= 0) {\n mustMove = true;\n break;\n }\n }\n if (mustMove)\n while (index > 0 && this.buffer[index - 2] > end) {\n // Move this record forward\n this.buffer[index] = this.buffer[index - 4];\n this.buffer[index + 1] = this.buffer[index - 3];\n this.buffer[index + 2] = this.buffer[index - 2];\n this.buffer[index + 3] = this.buffer[index - 1];\n index -= 4;\n if (size > 4)\n size -= 4;\n }\n }\n this.buffer[index] = term;\n this.buffer[index + 1] = start;\n this.buffer[index + 2] = end;\n this.buffer[index + 3] = size;\n }\n }\n // Apply a shift action\n /**\n @internal\n */\n shift(action, type, start, end) {\n if (action & 131072 /* Action.GotoFlag */) {\n this.pushState(action & 65535 /* Action.ValueMask */, this.pos);\n }\n else if ((action & 262144 /* Action.StayFlag */) == 0) { // Regular shift\n let nextState = action, { parser } = this.p;\n this.pos = end;\n let skipped = parser.stateFlag(nextState, 1 /* StateFlag.Skipped */);\n // Skipped or zero-length non-tree tokens don't move reducePos\n if (!skipped && (end > start || type <= parser.maxNode))\n this.reducePos = end;\n this.pushState(nextState, skipped ? start : Math.min(start, this.reducePos));\n this.shiftContext(type, start);\n if (type <= parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n else { // Shift-and-stay, which means this is a skipped token\n this.pos = end;\n this.shiftContext(type, start);\n if (type <= this.p.parser.maxNode)\n this.buffer.push(type, start, end, 4);\n }\n }\n // Apply an action\n /**\n @internal\n */\n apply(action, next, nextStart, nextEnd) {\n if (action & 65536 /* Action.ReduceFlag */)\n this.reduce(action);\n else\n this.shift(action, next, nextStart, nextEnd);\n }\n // Add a prebuilt (reused) node into the buffer.\n /**\n @internal\n */\n useNode(value, next) {\n let index = this.p.reused.length - 1;\n if (index < 0 || this.p.reused[index] != value) {\n this.p.reused.push(value);\n index++;\n }\n let start = this.pos;\n this.reducePos = this.pos = start + value.length;\n this.pushState(next, start);\n this.buffer.push(index, start, this.reducePos, -1 /* size == -1 means this is a reused value */);\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reuse(this.curContext.context, value, this, this.p.stream.reset(this.pos - value.length)));\n }\n // Split the stack. Due to the buffer sharing and the fact\n // that `this.stack` tends to stay quite shallow, this isn't very\n // expensive.\n /**\n @internal\n */\n split() {\n let parent = this;\n let off = parent.buffer.length;\n // Leave off top error node, if there, because that might be\n // merged with other nodes.\n if (off && parent.buffer[off - 4] == 0 /* Term.Err */)\n off -= 4;\n // Because the top of the buffer (after this.pos) may be mutated\n // to reorder reductions and skipped tokens, and shared buffers\n // should be immutable, this copies any outstanding skipped tokens\n // to the new buffer, and puts the base pointer before them.\n while (off > 0 && parent.buffer[off - 2] > parent.reducePos)\n off -= 4;\n let buffer = parent.buffer.slice(off), base = parent.bufferBase + off;\n // Make sure parent points to an actual parent with content, if there is such a parent.\n while (parent && base == parent.bufferBase)\n parent = parent.parent;\n return new Stack(this.p, this.stack.slice(), this.state, this.reducePos, this.pos, this.score, buffer, base, this.curContext, this.lookAhead, parent);\n }\n // Try to recover from an error by 'deleting' (ignoring) one token.\n /**\n @internal\n */\n recoverByDelete(next, nextEnd) {\n let isNode = next <= this.p.parser.maxNode;\n if (isNode)\n this.storeNode(next, this.pos, nextEnd, 4);\n this.storeNode(0 /* Term.Err */, this.pos, nextEnd, isNode ? 8 : 4);\n this.pos = this.reducePos = nextEnd;\n this.score -= 190 /* Recover.Delete */;\n }\n /**\n Check if the given term would be able to be shifted (optionally\n after some reductions) on this stack. This can be useful for\n external tokenizers that want to make sure they only provide a\n given token when it applies.\n */\n canShift(term) {\n for (let sim = new SimulatedStack(this);;) {\n let action = this.p.parser.stateSlot(sim.state, 4 /* ParseState.DefaultReduce */) || this.p.parser.hasAction(sim.state, term);\n if (action == 0)\n return false;\n if ((action & 65536 /* Action.ReduceFlag */) == 0)\n return true;\n sim.reduce(action);\n }\n }\n // Apply up to Recover.MaxNext recovery actions that conceptually\n // inserts some missing token or rule.\n /**\n @internal\n */\n recoverByInsert(next) {\n if (this.stack.length >= 300 /* Recover.MaxInsertStackDepth */)\n return [];\n let nextStates = this.p.parser.nextStates(this.state);\n if (nextStates.length > 4 /* Recover.MaxNext */ << 1 || this.stack.length >= 120 /* Recover.DampenInsertStackDepth */) {\n let best = [];\n for (let i = 0, s; i < nextStates.length; i += 2) {\n if ((s = nextStates[i + 1]) != this.state && this.p.parser.hasAction(s, next))\n best.push(nextStates[i], s);\n }\n if (this.stack.length < 120 /* Recover.DampenInsertStackDepth */)\n for (let i = 0; best.length < 4 /* Recover.MaxNext */ << 1 && i < nextStates.length; i += 2) {\n let s = nextStates[i + 1];\n if (!best.some((v, i) => (i & 1) && v == s))\n best.push(nextStates[i], s);\n }\n nextStates = best;\n }\n let result = [];\n for (let i = 0; i < nextStates.length && result.length < 4 /* Recover.MaxNext */; i += 2) {\n let s = nextStates[i + 1];\n if (s == this.state)\n continue;\n let stack = this.split();\n stack.pushState(s, this.pos);\n stack.storeNode(0 /* Term.Err */, stack.pos, stack.pos, 4, true);\n stack.shiftContext(nextStates[i], this.pos);\n stack.reducePos = this.pos;\n stack.score -= 200 /* Recover.Insert */;\n result.push(stack);\n }\n return result;\n }\n // Force a reduce, if possible. Return false if that can't\n // be done.\n /**\n @internal\n */\n forceReduce() {\n let { parser } = this.p;\n let reduce = parser.stateSlot(this.state, 5 /* ParseState.ForcedReduce */);\n if ((reduce & 65536 /* Action.ReduceFlag */) == 0)\n return false;\n if (!parser.validAction(this.state, reduce)) {\n let depth = reduce >> 19 /* Action.ReduceDepthShift */, term = reduce & 65535 /* Action.ValueMask */;\n let target = this.stack.length - depth * 3;\n if (target < 0 || parser.getGoto(this.stack[target], term, false) < 0) {\n let backup = this.findForcedReduction();\n if (backup == null)\n return false;\n reduce = backup;\n }\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.score -= 100 /* Recover.Reduce */;\n }\n this.reducePos = this.pos;\n this.reduce(reduce);\n return true;\n }\n /**\n Try to scan through the automaton to find some kind of reduction\n that can be applied. Used when the regular ForcedReduce field\n isn't a valid action. @internal\n */\n findForcedReduction() {\n let { parser } = this.p, seen = [];\n let explore = (state, depth) => {\n if (seen.includes(state))\n return;\n seen.push(state);\n return parser.allActions(state, (action) => {\n if (action & (262144 /* Action.StayFlag */ | 131072 /* Action.GotoFlag */)) ;\n else if (action & 65536 /* Action.ReduceFlag */) {\n let rDepth = (action >> 19 /* Action.ReduceDepthShift */) - depth;\n if (rDepth > 1) {\n let term = action & 65535 /* Action.ValueMask */, target = this.stack.length - rDepth * 3;\n if (target >= 0 && parser.getGoto(this.stack[target], term, false) >= 0)\n return (rDepth << 19 /* Action.ReduceDepthShift */) | 65536 /* Action.ReduceFlag */ | term;\n }\n }\n else {\n let found = explore(action, depth + 1);\n if (found != null)\n return found;\n }\n });\n };\n return explore(this.state, 0);\n }\n /**\n @internal\n */\n forceAll() {\n while (!this.p.parser.stateFlag(this.state, 2 /* StateFlag.Accepting */)) {\n if (!this.forceReduce()) {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n break;\n }\n }\n return this;\n }\n /**\n Check whether this state has no further actions (assumed to be a direct descendant of the\n top state, since any other states must be able to continue\n somehow). @internal\n */\n get deadEnd() {\n if (this.stack.length != 3)\n return false;\n let { parser } = this.p;\n return parser.data[parser.stateSlot(this.state, 1 /* ParseState.Actions */)] == 65535 /* Seq.End */ &&\n !parser.stateSlot(this.state, 4 /* ParseState.DefaultReduce */);\n }\n /**\n Restart the stack (put it back in its start state). Only safe\n when this.stack.length == 3 (state is directly below the top\n state). @internal\n */\n restart() {\n this.storeNode(0 /* Term.Err */, this.pos, this.pos, 4, true);\n this.state = this.stack[0];\n this.stack.length = 0;\n }\n /**\n @internal\n */\n sameState(other) {\n if (this.state != other.state || this.stack.length != other.stack.length)\n return false;\n for (let i = 0; i < this.stack.length; i += 3)\n if (this.stack[i] != other.stack[i])\n return false;\n return true;\n }\n /**\n Get the parser used by this stack.\n */\n get parser() { return this.p.parser; }\n /**\n Test whether a given dialect (by numeric ID, as exported from\n the terms file) is enabled.\n */\n dialectEnabled(dialectID) { return this.p.parser.dialect.flags[dialectID]; }\n shiftContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.shift(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n reduceContext(term, start) {\n if (this.curContext)\n this.updateContext(this.curContext.tracker.reduce(this.curContext.context, term, this, this.p.stream.reset(start)));\n }\n /**\n @internal\n */\n emitContext() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -3)\n this.buffer.push(this.curContext.hash, this.pos, this.pos, -3);\n }\n /**\n @internal\n */\n emitLookAhead() {\n let last = this.buffer.length - 1;\n if (last < 0 || this.buffer[last] != -4)\n this.buffer.push(this.lookAhead, this.pos, this.pos, -4);\n }\n updateContext(context) {\n if (context != this.curContext.context) {\n let newCx = new StackContext(this.curContext.tracker, context);\n if (newCx.hash != this.curContext.hash)\n this.emitContext();\n this.curContext = newCx;\n }\n }\n /**\n @internal\n */\n setLookAhead(lookAhead) {\n if (lookAhead <= this.lookAhead)\n return false;\n this.emitLookAhead();\n this.lookAhead = lookAhead;\n return true;\n }\n /**\n @internal\n */\n close() {\n if (this.curContext && this.curContext.tracker.strict)\n this.emitContext();\n if (this.lookAhead > 0)\n this.emitLookAhead();\n }\n}\nclass StackContext {\n constructor(tracker, context) {\n this.tracker = tracker;\n this.context = context;\n this.hash = tracker.strict ? tracker.hash(context) : 0;\n }\n}\n// Used to cheaply run some reductions to scan ahead without mutating\n// an entire stack\nclass SimulatedStack {\n constructor(start) {\n this.start = start;\n this.state = start.state;\n this.stack = start.stack;\n this.base = this.stack.length;\n }\n reduce(action) {\n let term = action & 65535 /* Action.ValueMask */, depth = action >> 19 /* Action.ReduceDepthShift */;\n if (depth == 0) {\n if (this.stack == this.start.stack)\n this.stack = this.stack.slice();\n this.stack.push(this.state, 0, 0);\n this.base += 3;\n }\n else {\n this.base -= (depth - 1) * 3;\n }\n let goto = this.start.p.parser.getGoto(this.stack[this.base - 3], term, true);\n this.state = goto;\n }\n}\n// This is given to `Tree.build` to build a buffer, and encapsulates\n// the parent-stack-walking necessary to read the nodes.\nclass StackBufferCursor {\n constructor(stack, pos, index) {\n this.stack = stack;\n this.pos = pos;\n this.index = index;\n this.buffer = stack.buffer;\n if (this.index == 0)\n this.maybeNext();\n }\n static create(stack, pos = stack.bufferBase + stack.buffer.length) {\n return new StackBufferCursor(stack, pos, pos - stack.bufferBase);\n }\n maybeNext() {\n let next = this.stack.parent;\n if (next != null) {\n this.index = this.stack.bufferBase - next.bufferBase;\n this.stack = next;\n this.buffer = next.buffer;\n }\n }\n get id() { return this.buffer[this.index - 4]; }\n get start() { return this.buffer[this.index - 3]; }\n get end() { return this.buffer[this.index - 2]; }\n get size() { return this.buffer[this.index - 1]; }\n next() {\n this.index -= 4;\n this.pos -= 4;\n if (this.index == 0)\n this.maybeNext();\n }\n fork() {\n return new StackBufferCursor(this.stack, this.pos, this.index);\n }\n}\n\n// See lezer-generator/src/encode.ts for comments about the encoding\n// used here\nfunction decodeArray(input, Type = Uint16Array) {\n if (typeof input != \"string\")\n return input;\n let array = null;\n for (let pos = 0, out = 0; pos < input.length;) {\n let value = 0;\n for (;;) {\n let next = input.charCodeAt(pos++), stop = false;\n if (next == 126 /* Encode.BigValCode */) {\n value = 65535 /* Encode.BigVal */;\n break;\n }\n if (next >= 92 /* Encode.Gap2 */)\n next--;\n if (next >= 34 /* Encode.Gap1 */)\n next--;\n let digit = next - 32 /* Encode.Start */;\n if (digit >= 46 /* Encode.Base */) {\n digit -= 46 /* Encode.Base */;\n stop = true;\n }\n value += digit;\n if (stop)\n break;\n value *= 46 /* Encode.Base */;\n }\n if (array)\n array[out++] = value;\n else\n array = new Type(value);\n }\n return array;\n}\n\nclass CachedToken {\n constructor() {\n this.start = -1;\n this.value = -1;\n this.end = -1;\n this.extended = -1;\n this.lookAhead = 0;\n this.mask = 0;\n this.context = 0;\n }\n}\nconst nullToken = new CachedToken;\n/**\n[Tokenizers](#lr.ExternalTokenizer) interact with the input\nthrough this interface. It presents the input as a stream of\ncharacters, tracking lookahead and hiding the complexity of\n[ranges](#common.Parser.parse^ranges) from tokenizer code.\n*/\nclass InputStream {\n /**\n @internal\n */\n constructor(\n /**\n @internal\n */\n input, \n /**\n @internal\n */\n ranges) {\n this.input = input;\n this.ranges = ranges;\n /**\n @internal\n */\n this.chunk = \"\";\n /**\n @internal\n */\n this.chunkOff = 0;\n /**\n Backup chunk\n */\n this.chunk2 = \"\";\n this.chunk2Pos = 0;\n /**\n The character code of the next code unit in the input, or -1\n when the stream is at the end of the input.\n */\n this.next = -1;\n /**\n @internal\n */\n this.token = nullToken;\n this.rangeIndex = 0;\n this.pos = this.chunkPos = ranges[0].from;\n this.range = ranges[0];\n this.end = ranges[ranges.length - 1].to;\n this.readNext();\n }\n /**\n @internal\n */\n resolveOffset(offset, assoc) {\n let range = this.range, index = this.rangeIndex;\n let pos = this.pos + offset;\n while (pos < range.from) {\n if (!index)\n return null;\n let next = this.ranges[--index];\n pos -= range.from - next.to;\n range = next;\n }\n while (assoc < 0 ? pos > range.to : pos >= range.to) {\n if (index == this.ranges.length - 1)\n return null;\n let next = this.ranges[++index];\n pos += next.from - range.to;\n range = next;\n }\n return pos;\n }\n /**\n @internal\n */\n clipPos(pos) {\n if (pos >= this.range.from && pos < this.range.to)\n return pos;\n for (let range of this.ranges)\n if (range.to > pos)\n return Math.max(pos, range.from);\n return this.end;\n }\n /**\n Look at a code unit near the stream position. `.peek(0)` equals\n `.next`, `.peek(-1)` gives you the previous character, and so\n on.\n \n Note that looking around during tokenizing creates dependencies\n on potentially far-away content, which may reduce the\n effectiveness incremental parsing—when looking forward—or even\n cause invalid reparses when looking backward more than 25 code\n units, since the library does not track lookbehind.\n */\n peek(offset) {\n let idx = this.chunkOff + offset, pos, result;\n if (idx >= 0 && idx < this.chunk.length) {\n pos = this.pos + offset;\n result = this.chunk.charCodeAt(idx);\n }\n else {\n let resolved = this.resolveOffset(offset, 1);\n if (resolved == null)\n return -1;\n pos = resolved;\n if (pos >= this.chunk2Pos && pos < this.chunk2Pos + this.chunk2.length) {\n result = this.chunk2.charCodeAt(pos - this.chunk2Pos);\n }\n else {\n let i = this.rangeIndex, range = this.range;\n while (range.to <= pos)\n range = this.ranges[++i];\n this.chunk2 = this.input.chunk(this.chunk2Pos = pos);\n if (pos + this.chunk2.length > range.to)\n this.chunk2 = this.chunk2.slice(0, range.to - pos);\n result = this.chunk2.charCodeAt(0);\n }\n }\n if (pos >= this.token.lookAhead)\n this.token.lookAhead = pos + 1;\n return result;\n }\n /**\n Accept a token. By default, the end of the token is set to the\n current stream position, but you can pass an offset (relative to\n the stream position) to change that.\n */\n acceptToken(token, endOffset = 0) {\n let end = endOffset ? this.resolveOffset(endOffset, -1) : this.pos;\n if (end == null || end < this.token.start)\n throw new RangeError(\"Token end out of bounds\");\n this.token.value = token;\n this.token.end = end;\n }\n /**\n Accept a token ending at a specific given position.\n */\n acceptTokenTo(token, endPos) {\n this.token.value = token;\n this.token.end = endPos;\n }\n getChunk() {\n if (this.pos >= this.chunk2Pos && this.pos < this.chunk2Pos + this.chunk2.length) {\n let { chunk, chunkPos } = this;\n this.chunk = this.chunk2;\n this.chunkPos = this.chunk2Pos;\n this.chunk2 = chunk;\n this.chunk2Pos = chunkPos;\n this.chunkOff = this.pos - this.chunkPos;\n }\n else {\n this.chunk2 = this.chunk;\n this.chunk2Pos = this.chunkPos;\n let nextChunk = this.input.chunk(this.pos);\n let end = this.pos + nextChunk.length;\n this.chunk = end > this.range.to ? nextChunk.slice(0, this.range.to - this.pos) : nextChunk;\n this.chunkPos = this.pos;\n this.chunkOff = 0;\n }\n }\n readNext() {\n if (this.chunkOff >= this.chunk.length) {\n this.getChunk();\n if (this.chunkOff == this.chunk.length)\n return this.next = -1;\n }\n return this.next = this.chunk.charCodeAt(this.chunkOff);\n }\n /**\n Move the stream forward N (defaults to 1) code units. Returns\n the new value of [`next`](#lr.InputStream.next).\n */\n advance(n = 1) {\n this.chunkOff += n;\n while (this.pos + n >= this.range.to) {\n if (this.rangeIndex == this.ranges.length - 1)\n return this.setDone();\n n -= this.range.to - this.pos;\n this.range = this.ranges[++this.rangeIndex];\n this.pos = this.range.from;\n }\n this.pos += n;\n if (this.pos >= this.token.lookAhead)\n this.token.lookAhead = this.pos + 1;\n return this.readNext();\n }\n setDone() {\n this.pos = this.chunkPos = this.end;\n this.range = this.ranges[this.rangeIndex = this.ranges.length - 1];\n this.chunk = \"\";\n return this.next = -1;\n }\n /**\n @internal\n */\n reset(pos, token) {\n if (token) {\n this.token = token;\n token.start = pos;\n token.lookAhead = pos + 1;\n token.value = token.extended = -1;\n }\n else {\n this.token = nullToken;\n }\n if (this.pos != pos) {\n this.pos = pos;\n if (pos == this.end) {\n this.setDone();\n return this;\n }\n while (pos < this.range.from)\n this.range = this.ranges[--this.rangeIndex];\n while (pos >= this.range.to)\n this.range = this.ranges[++this.rangeIndex];\n if (pos >= this.chunkPos && pos < this.chunkPos + this.chunk.length) {\n this.chunkOff = pos - this.chunkPos;\n }\n else {\n this.chunk = \"\";\n this.chunkOff = 0;\n }\n this.readNext();\n }\n return this;\n }\n /**\n @internal\n */\n read(from, to) {\n if (from >= this.chunkPos && to <= this.chunkPos + this.chunk.length)\n return this.chunk.slice(from - this.chunkPos, to - this.chunkPos);\n if (from >= this.chunk2Pos && to <= this.chunk2Pos + this.chunk2.length)\n return this.chunk2.slice(from - this.chunk2Pos, to - this.chunk2Pos);\n if (from >= this.range.from && to <= this.range.to)\n return this.input.read(from, to);\n let result = \"\";\n for (let r of this.ranges) {\n if (r.from >= to)\n break;\n if (r.to > from)\n result += this.input.read(Math.max(r.from, from), Math.min(r.to, to));\n }\n return result;\n }\n}\n/**\n@internal\n*/\nclass TokenGroup {\n constructor(data, id) {\n this.data = data;\n this.id = id;\n }\n token(input, stack) {\n let { parser } = stack.p;\n readToken(this.data, input, stack, this.id, parser.data, parser.tokenPrecTable);\n }\n}\nTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n@hide\n*/\nclass LocalTokenGroup {\n constructor(data, precTable, elseToken) {\n this.precTable = precTable;\n this.elseToken = elseToken;\n this.data = typeof data == \"string\" ? decodeArray(data) : data;\n }\n token(input, stack) {\n let start = input.pos, skipped = 0;\n for (;;) {\n let atEof = input.next < 0, nextPos = input.resolveOffset(1, 1);\n readToken(this.data, input, stack, 0, this.data, this.precTable);\n if (input.token.value > -1)\n break;\n if (this.elseToken == null)\n return;\n if (!atEof)\n skipped++;\n if (nextPos == null)\n break;\n input.reset(nextPos, input.token);\n }\n if (skipped) {\n input.reset(start, input.token);\n input.acceptToken(this.elseToken, skipped);\n }\n }\n}\nLocalTokenGroup.prototype.contextual = TokenGroup.prototype.fallback = TokenGroup.prototype.extend = false;\n/**\n`@external tokens` declarations in the grammar should resolve to\nan instance of this class.\n*/\nclass ExternalTokenizer {\n /**\n Create a tokenizer. The first argument is the function that,\n given an input stream, scans for the types of tokens it\n recognizes at the stream's position, and calls\n [`acceptToken`](#lr.InputStream.acceptToken) when it finds\n one.\n */\n constructor(\n /**\n @internal\n */\n token, options = {}) {\n this.token = token;\n this.contextual = !!options.contextual;\n this.fallback = !!options.fallback;\n this.extend = !!options.extend;\n }\n}\n// Tokenizer data is stored a big uint16 array containing, for each\n// state:\n//\n// - A group bitmask, indicating what token groups are reachable from\n// this state, so that paths that can only lead to tokens not in\n// any of the current groups can be cut off early.\n//\n// - The position of the end of the state's sequence of accepting\n// tokens\n//\n// - The number of outgoing edges for the state\n//\n// - The accepting tokens, as (token id, group mask) pairs\n//\n// - The outgoing edges, as (start character, end character, state\n// index) triples, with end character being exclusive\n//\n// This function interprets that data, running through a stream as\n// long as new states with the a matching group mask can be reached,\n// and updating `input.token` when it matches a token.\nfunction readToken(data, input, stack, group, precTable, precOffset) {\n let state = 0, groupMask = 1 << group, { dialect } = stack.p.parser;\n scan: for (;;) {\n if ((groupMask & data[state]) == 0)\n break;\n let accEnd = data[state + 1];\n // Check whether this state can lead to a token in the current group\n // Accept tokens in this state, possibly overwriting\n // lower-precedence / shorter tokens\n for (let i = state + 3; i < accEnd; i += 2)\n if ((data[i + 1] & groupMask) > 0) {\n let term = data[i];\n if (dialect.allows(term) &&\n (input.token.value == -1 || input.token.value == term ||\n overrides(term, input.token.value, precTable, precOffset))) {\n input.acceptToken(term);\n break;\n }\n }\n let next = input.next, low = 0, high = data[state + 2];\n // Special case for EOF\n if (input.next < 0 && high > low && data[accEnd + high * 3 - 3] == 65535 /* Seq.End */) {\n state = data[accEnd + high * 3 - 1];\n continue scan;\n }\n // Do a binary search on the state's edges\n for (; low < high;) {\n let mid = (low + high) >> 1;\n let index = accEnd + mid + (mid << 1);\n let from = data[index], to = data[index + 1] || 0x10000;\n if (next < from)\n high = mid;\n else if (next >= to)\n low = mid + 1;\n else {\n state = data[index + 2];\n input.advance();\n continue scan;\n }\n }\n break;\n }\n}\nfunction findOffset(data, start, term) {\n for (let i = start, next; (next = data[i]) != 65535 /* Seq.End */; i++)\n if (next == term)\n return i - start;\n return -1;\n}\nfunction overrides(token, prev, tableData, tableOffset) {\n let iPrev = findOffset(tableData, tableOffset, prev);\n return iPrev < 0 || findOffset(tableData, tableOffset, token) < iPrev;\n}\n\n// Environment variable used to control console output\nconst verbose = typeof process != \"undefined\" && process.env && /\\bparse\\b/.test(process.env.LOG);\nlet stackIDs = null;\nfunction cutAt(tree, pos, side) {\n let cursor = tree.cursor(IterMode.IncludeAnonymous);\n cursor.moveTo(pos);\n for (;;) {\n if (!(side < 0 ? cursor.childBefore(pos) : cursor.childAfter(pos)))\n for (;;) {\n if ((side < 0 ? cursor.to < pos : cursor.from > pos) && !cursor.type.isError)\n return side < 0 ? Math.max(0, Math.min(cursor.to - 1, pos - 25 /* Lookahead.Margin */))\n : Math.min(tree.length, Math.max(cursor.from + 1, pos + 25 /* Lookahead.Margin */));\n if (side < 0 ? cursor.prevSibling() : cursor.nextSibling())\n break;\n if (!cursor.parent())\n return side < 0 ? 0 : tree.length;\n }\n }\n}\nclass FragmentCursor {\n constructor(fragments, nodeSet) {\n this.fragments = fragments;\n this.nodeSet = nodeSet;\n this.i = 0;\n this.fragment = null;\n this.safeFrom = -1;\n this.safeTo = -1;\n this.trees = [];\n this.start = [];\n this.index = [];\n this.nextFragment();\n }\n nextFragment() {\n let fr = this.fragment = this.i == this.fragments.length ? null : this.fragments[this.i++];\n if (fr) {\n this.safeFrom = fr.openStart ? cutAt(fr.tree, fr.from + fr.offset, 1) - fr.offset : fr.from;\n this.safeTo = fr.openEnd ? cutAt(fr.tree, fr.to + fr.offset, -1) - fr.offset : fr.to;\n while (this.trees.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n }\n this.trees.push(fr.tree);\n this.start.push(-fr.offset);\n this.index.push(0);\n this.nextStart = this.safeFrom;\n }\n else {\n this.nextStart = 1e9;\n }\n }\n // `pos` must be >= any previously given `pos` for this cursor\n nodeAt(pos) {\n if (pos < this.nextStart)\n return null;\n while (this.fragment && this.safeTo <= pos)\n this.nextFragment();\n if (!this.fragment)\n return null;\n for (;;) {\n let last = this.trees.length - 1;\n if (last < 0) { // End of tree\n this.nextFragment();\n return null;\n }\n let top = this.trees[last], index = this.index[last];\n if (index == top.children.length) {\n this.trees.pop();\n this.start.pop();\n this.index.pop();\n continue;\n }\n let next = top.children[index];\n let start = this.start[last] + top.positions[index];\n if (start > pos) {\n this.nextStart = start;\n return null;\n }\n if (next instanceof Tree) {\n if (start == pos) {\n if (start < this.safeFrom)\n return null;\n let end = start + next.length;\n if (end <= this.safeTo) {\n let lookAhead = next.prop(NodeProp.lookAhead);\n if (!lookAhead || end + lookAhead < this.fragment.to)\n return next;\n }\n }\n this.index[last]++;\n if (start + next.length >= Math.max(this.safeFrom, pos)) { // Enter this node\n this.trees.push(next);\n this.start.push(start);\n this.index.push(0);\n }\n }\n else {\n this.index[last]++;\n this.nextStart = start + next.length;\n }\n }\n }\n}\nclass TokenCache {\n constructor(parser, stream) {\n this.stream = stream;\n this.tokens = [];\n this.mainToken = null;\n this.actions = [];\n this.tokens = parser.tokenizers.map(_ => new CachedToken);\n }\n getActions(stack) {\n let actionIndex = 0;\n let main = null;\n let { parser } = stack.p, { tokenizers } = parser;\n let mask = parser.stateSlot(stack.state, 3 /* ParseState.TokenizerMask */);\n let context = stack.curContext ? stack.curContext.hash : 0;\n let lookAhead = 0;\n for (let i = 0; i < tokenizers.length; i++) {\n if (((1 << i) & mask) == 0)\n continue;\n let tokenizer = tokenizers[i], token = this.tokens[i];\n if (main && !tokenizer.fallback)\n continue;\n if (tokenizer.contextual || token.start != stack.pos || token.mask != mask || token.context != context) {\n this.updateCachedToken(token, tokenizer, stack);\n token.mask = mask;\n token.context = context;\n }\n if (token.lookAhead > token.end + 25 /* Lookahead.Margin */)\n lookAhead = Math.max(token.lookAhead, lookAhead);\n if (token.value != 0 /* Term.Err */) {\n let startIndex = actionIndex;\n if (token.extended > -1)\n actionIndex = this.addActions(stack, token.extended, token.end, actionIndex);\n actionIndex = this.addActions(stack, token.value, token.end, actionIndex);\n if (!tokenizer.extend) {\n main = token;\n if (actionIndex > startIndex)\n break;\n }\n }\n }\n while (this.actions.length > actionIndex)\n this.actions.pop();\n if (lookAhead)\n stack.setLookAhead(lookAhead);\n if (!main && stack.pos == this.stream.end) {\n main = new CachedToken;\n main.value = stack.p.parser.eofTerm;\n main.start = main.end = stack.pos;\n actionIndex = this.addActions(stack, main.value, main.end, actionIndex);\n }\n this.mainToken = main;\n return this.actions;\n }\n getMainToken(stack) {\n if (this.mainToken)\n return this.mainToken;\n let main = new CachedToken, { pos, p } = stack;\n main.start = pos;\n main.end = Math.min(pos + 1, p.stream.end);\n main.value = pos == p.stream.end ? p.parser.eofTerm : 0 /* Term.Err */;\n return main;\n }\n updateCachedToken(token, tokenizer, stack) {\n let start = this.stream.clipPos(stack.pos);\n tokenizer.token(this.stream.reset(start, token), stack);\n if (token.value > -1) {\n let { parser } = stack.p;\n for (let i = 0; i < parser.specialized.length; i++)\n if (parser.specialized[i] == token.value) {\n let result = parser.specializers[i](this.stream.read(token.start, token.end), stack);\n if (result >= 0 && stack.p.parser.dialect.allows(result >> 1)) {\n if ((result & 1) == 0 /* Specialize.Specialize */)\n token.value = result >> 1;\n else\n token.extended = result >> 1;\n break;\n }\n }\n }\n else {\n token.value = 0 /* Term.Err */;\n token.end = this.stream.clipPos(start + 1);\n }\n }\n putAction(action, token, end, index) {\n // Don't add duplicate actions\n for (let i = 0; i < index; i += 3)\n if (this.actions[i] == action)\n return index;\n this.actions[index++] = action;\n this.actions[index++] = token;\n this.actions[index++] = end;\n return index;\n }\n addActions(stack, token, end, index) {\n let { state } = stack, { parser } = stack.p, { data } = parser;\n for (let set = 0; set < 2; set++) {\n for (let i = parser.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */);; i += 3) {\n if (data[i] == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */) {\n i = pair(data, i + 2);\n }\n else {\n if (index == 0 && data[i + 1] == 2 /* Seq.Other */)\n index = this.putAction(pair(data, i + 2), token, end, index);\n break;\n }\n }\n if (data[i] == token)\n index = this.putAction(pair(data, i + 1), token, end, index);\n }\n }\n return index;\n }\n}\nclass Parse {\n constructor(parser, input, fragments, ranges) {\n this.parser = parser;\n this.input = input;\n this.ranges = ranges;\n this.recovering = 0;\n this.nextStackID = 0x2654; // ♔, ♕, ♖, ♗, ♘, ♙, ♠, ♡, ♢, ♣, ♤, ♥, ♦, ♧\n this.minStackPos = 0;\n this.reused = [];\n this.stoppedAt = null;\n this.lastBigReductionStart = -1;\n this.lastBigReductionSize = 0;\n this.bigReductionCount = 0;\n this.stream = new InputStream(input, ranges);\n this.tokens = new TokenCache(parser, this.stream);\n this.topTerm = parser.top[1];\n let { from } = ranges[0];\n this.stacks = [Stack.start(this, parser.top[0], from)];\n this.fragments = fragments.length && this.stream.end - from > parser.bufferLength * 4\n ? new FragmentCursor(fragments, parser.nodeSet) : null;\n }\n get parsedPos() {\n return this.minStackPos;\n }\n // Move the parser forward. This will process all parse stacks at\n // `this.pos` and try to advance them to a further position. If no\n // stack for such a position is found, it'll start error-recovery.\n //\n // When the parse is finished, this will return a syntax tree. When\n // not, it returns `null`.\n advance() {\n let stacks = this.stacks, pos = this.minStackPos;\n // This will hold stacks beyond `pos`.\n let newStacks = this.stacks = [];\n let stopped, stoppedTokens;\n // If a large amount of reductions happened with the same start\n // position, force the stack out of that production in order to\n // avoid creating a tree too deep to recurse through.\n // (This is an ugly kludge, because unfortunately there is no\n // straightforward, cheap way to check for this happening, due to\n // the history of reductions only being available in an\n // expensive-to-access format in the stack buffers.)\n if (this.bigReductionCount > 300 /* Rec.MaxLeftAssociativeReductionCount */ && stacks.length == 1) {\n let [s] = stacks;\n while (s.forceReduce() && s.stack.length && s.stack[s.stack.length - 2] >= this.lastBigReductionStart) { }\n this.bigReductionCount = this.lastBigReductionSize = 0;\n }\n // Keep advancing any stacks at `pos` until they either move\n // forward or can't be advanced. Gather stacks that can't be\n // advanced further in `stopped`.\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i];\n for (;;) {\n this.tokens.mainToken = null;\n if (stack.pos > pos) {\n newStacks.push(stack);\n }\n else if (this.advanceStack(stack, newStacks, stacks)) {\n continue;\n }\n else {\n if (!stopped) {\n stopped = [];\n stoppedTokens = [];\n }\n stopped.push(stack);\n let tok = this.tokens.getMainToken(stack);\n stoppedTokens.push(tok.value, tok.end);\n }\n break;\n }\n }\n if (!newStacks.length) {\n let finished = stopped && findFinished(stopped);\n if (finished) {\n if (verbose)\n console.log(\"Finish with \" + this.stackID(finished));\n return this.stackToTree(finished);\n }\n if (this.parser.strict) {\n if (verbose && stopped)\n console.log(\"Stuck with token \" + (this.tokens.mainToken ? this.parser.getName(this.tokens.mainToken.value) : \"none\"));\n throw new SyntaxError(\"No parse at \" + pos);\n }\n if (!this.recovering)\n this.recovering = 5 /* Rec.Distance */;\n }\n if (this.recovering && stopped) {\n let finished = this.stoppedAt != null && stopped[0].pos > this.stoppedAt ? stopped[0]\n : this.runRecovery(stopped, stoppedTokens, newStacks);\n if (finished) {\n if (verbose)\n console.log(\"Force-finish \" + this.stackID(finished));\n return this.stackToTree(finished.forceAll());\n }\n }\n if (this.recovering) {\n let maxRemaining = this.recovering == 1 ? 1 : this.recovering * 3 /* Rec.MaxRemainingPerStep */;\n if (newStacks.length > maxRemaining) {\n newStacks.sort((a, b) => b.score - a.score);\n while (newStacks.length > maxRemaining)\n newStacks.pop();\n }\n if (newStacks.some(s => s.reducePos > pos))\n this.recovering--;\n }\n else if (newStacks.length > 1) {\n // Prune stacks that are in the same state, or that have been\n // running without splitting for a while, to avoid getting stuck\n // with multiple successful stacks running endlessly on.\n outer: for (let i = 0; i < newStacks.length - 1; i++) {\n let stack = newStacks[i];\n for (let j = i + 1; j < newStacks.length; j++) {\n let other = newStacks[j];\n if (stack.sameState(other) ||\n stack.buffer.length > 500 /* Rec.MinBufferLengthPrune */ && other.buffer.length > 500 /* Rec.MinBufferLengthPrune */) {\n if (((stack.score - other.score) || (stack.buffer.length - other.buffer.length)) > 0) {\n newStacks.splice(j--, 1);\n }\n else {\n newStacks.splice(i--, 1);\n continue outer;\n }\n }\n }\n }\n if (newStacks.length > 12 /* Rec.MaxStackCount */) {\n newStacks.sort((a, b) => b.score - a.score);\n newStacks.splice(12 /* Rec.MaxStackCount */, newStacks.length - 12 /* Rec.MaxStackCount */);\n }\n }\n this.minStackPos = newStacks[0].pos;\n for (let i = 1; i < newStacks.length; i++)\n if (newStacks[i].pos < this.minStackPos)\n this.minStackPos = newStacks[i].pos;\n return null;\n }\n stopAt(pos) {\n if (this.stoppedAt != null && this.stoppedAt < pos)\n throw new RangeError(\"Can't move stoppedAt forward\");\n this.stoppedAt = pos;\n }\n // Returns an updated version of the given stack, or null if the\n // stack can't advance normally. When `split` and `stacks` are\n // given, stacks split off by ambiguous operations will be pushed to\n // `split`, or added to `stacks` if they move `pos` forward.\n advanceStack(stack, stacks, split) {\n let start = stack.pos, { parser } = this;\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (this.stoppedAt != null && start > this.stoppedAt)\n return stack.forceReduce() ? stack : null;\n if (this.fragments) {\n let strictCx = stack.curContext && stack.curContext.tracker.strict, cxHash = strictCx ? stack.curContext.hash : 0;\n for (let cached = this.fragments.nodeAt(start); cached;) {\n let match = this.parser.nodeSet.types[cached.type.id] == cached.type ? parser.getGoto(stack.state, cached.type.id) : -1;\n if (match > -1 && cached.length && (!strictCx || (cached.prop(NodeProp.contextHash) || 0) == cxHash)) {\n stack.useNode(cached, match);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via reuse of ${parser.getName(cached.type.id)})`);\n return true;\n }\n if (!(cached instanceof Tree) || cached.children.length == 0 || cached.positions[0] > 0)\n break;\n let inner = cached.children[0];\n if (inner instanceof Tree && cached.positions[0] == 0)\n cached = inner;\n else\n break;\n }\n }\n let defaultReduce = parser.stateSlot(stack.state, 4 /* ParseState.DefaultReduce */);\n if (defaultReduce > 0) {\n stack.reduce(defaultReduce);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via always-reduce ${parser.getName(defaultReduce & 65535 /* Action.ValueMask */)})`);\n return true;\n }\n if (stack.stack.length >= 8400 /* Rec.CutDepth */) {\n while (stack.stack.length > 6000 /* Rec.CutTo */ && stack.forceReduce()) { }\n }\n let actions = this.tokens.getActions(stack);\n for (let i = 0; i < actions.length;) {\n let action = actions[i++], term = actions[i++], end = actions[i++];\n let last = i == actions.length || !split;\n let localStack = last ? stack : stack.split();\n let main = this.tokens.mainToken;\n localStack.apply(action, term, main ? main.start : localStack.pos, end);\n if (verbose)\n console.log(base + this.stackID(localStack) + ` (via ${(action & 65536 /* Action.ReduceFlag */) == 0 ? \"shift\"\n : `reduce of ${parser.getName(action & 65535 /* Action.ValueMask */)}`} for ${parser.getName(term)} @ ${start}${localStack == stack ? \"\" : \", split\"})`);\n if (last)\n return true;\n else if (localStack.pos > start)\n stacks.push(localStack);\n else\n split.push(localStack);\n }\n return false;\n }\n // Advance a given stack forward as far as it will go. Returns the\n // (possibly updated) stack if it got stuck, or null if it moved\n // forward and was given to `pushStackDedup`.\n advanceFully(stack, newStacks) {\n let pos = stack.pos;\n for (;;) {\n if (!this.advanceStack(stack, null, null))\n return false;\n if (stack.pos > pos) {\n pushStackDedup(stack, newStacks);\n return true;\n }\n }\n }\n runRecovery(stacks, tokens, newStacks) {\n let finished = null, restarted = false;\n for (let i = 0; i < stacks.length; i++) {\n let stack = stacks[i], token = tokens[i << 1], tokenEnd = tokens[(i << 1) + 1];\n let base = verbose ? this.stackID(stack) + \" -> \" : \"\";\n if (stack.deadEnd) {\n if (restarted)\n continue;\n restarted = true;\n stack.restart();\n if (verbose)\n console.log(base + this.stackID(stack) + \" (restarted)\");\n let done = this.advanceFully(stack, newStacks);\n if (done)\n continue;\n }\n let force = stack.split(), forceBase = base;\n for (let j = 0; j < 10 /* Rec.ForceReduceLimit */ && force.forceReduce(); j++) {\n if (verbose)\n console.log(forceBase + this.stackID(force) + \" (via force-reduce)\");\n let done = this.advanceFully(force, newStacks);\n if (done)\n break;\n if (verbose)\n forceBase = this.stackID(force) + \" -> \";\n }\n for (let insert of stack.recoverByInsert(token)) {\n if (verbose)\n console.log(base + this.stackID(insert) + \" (via recover-insert)\");\n this.advanceFully(insert, newStacks);\n }\n if (this.stream.end > stack.pos) {\n if (tokenEnd == stack.pos) {\n tokenEnd++;\n token = 0 /* Term.Err */;\n }\n stack.recoverByDelete(token, tokenEnd);\n if (verbose)\n console.log(base + this.stackID(stack) + ` (via recover-delete ${this.parser.getName(token)})`);\n pushStackDedup(stack, newStacks);\n }\n else if (!finished || finished.score < force.score) {\n finished = force;\n }\n }\n return finished;\n }\n // Convert the stack's buffer to a syntax tree.\n stackToTree(stack) {\n stack.close();\n return Tree.build({ buffer: StackBufferCursor.create(stack),\n nodeSet: this.parser.nodeSet,\n topID: this.topTerm,\n maxBufferLength: this.parser.bufferLength,\n reused: this.reused,\n start: this.ranges[0].from,\n length: stack.pos - this.ranges[0].from,\n minRepeatType: this.parser.minRepeatTerm });\n }\n stackID(stack) {\n let id = (stackIDs || (stackIDs = new WeakMap)).get(stack);\n if (!id)\n stackIDs.set(stack, id = String.fromCodePoint(this.nextStackID++));\n return id + stack;\n }\n}\nfunction pushStackDedup(stack, newStacks) {\n for (let i = 0; i < newStacks.length; i++) {\n let other = newStacks[i];\n if (other.pos == stack.pos && other.sameState(stack)) {\n if (newStacks[i].score < stack.score)\n newStacks[i] = stack;\n return;\n }\n }\n newStacks.push(stack);\n}\nclass Dialect {\n constructor(source, flags, disabled) {\n this.source = source;\n this.flags = flags;\n this.disabled = disabled;\n }\n allows(term) { return !this.disabled || this.disabled[term] == 0; }\n}\nconst id = x => x;\n/**\nContext trackers are used to track stateful context (such as\nindentation in the Python grammar, or parent elements in the XML\ngrammar) needed by external tokenizers. You declare them in a\ngrammar file as `@context exportName from \"module\"`.\n\nContext values should be immutable, and can be updated (replaced)\non shift or reduce actions.\n\nThe export used in a `@context` declaration should be of this\ntype.\n*/\nclass ContextTracker {\n /**\n Define a context tracker.\n */\n constructor(spec) {\n this.start = spec.start;\n this.shift = spec.shift || id;\n this.reduce = spec.reduce || id;\n this.reuse = spec.reuse || id;\n this.hash = spec.hash || (() => 0);\n this.strict = spec.strict !== false;\n }\n}\n/**\nHolds the parse tables for a given grammar, as generated by\n`lezer-generator`, and provides [methods](#common.Parser) to parse\ncontent with.\n*/\nclass LRParser extends Parser {\n /**\n @internal\n */\n constructor(spec) {\n super();\n /**\n @internal\n */\n this.wrappers = [];\n if (spec.version != 14 /* File.Version */)\n throw new RangeError(`Parser version (${spec.version}) doesn't match runtime version (${14 /* File.Version */})`);\n let nodeNames = spec.nodeNames.split(\" \");\n this.minRepeatTerm = nodeNames.length;\n for (let i = 0; i < spec.repeatNodeCount; i++)\n nodeNames.push(\"\");\n let topTerms = Object.keys(spec.topRules).map(r => spec.topRules[r][1]);\n let nodeProps = [];\n for (let i = 0; i < nodeNames.length; i++)\n nodeProps.push([]);\n function setProp(nodeID, prop, value) {\n nodeProps[nodeID].push([prop, prop.deserialize(String(value))]);\n }\n if (spec.nodeProps)\n for (let propSpec of spec.nodeProps) {\n let prop = propSpec[0];\n if (typeof prop == \"string\")\n prop = NodeProp[prop];\n for (let i = 1; i < propSpec.length;) {\n let next = propSpec[i++];\n if (next >= 0) {\n setProp(next, prop, propSpec[i++]);\n }\n else {\n let value = propSpec[i + -next];\n for (let j = -next; j > 0; j--)\n setProp(propSpec[i++], prop, value);\n i++;\n }\n }\n }\n this.nodeSet = new NodeSet(nodeNames.map((name, i) => NodeType.define({\n name: i >= this.minRepeatTerm ? undefined : name,\n id: i,\n props: nodeProps[i],\n top: topTerms.indexOf(i) > -1,\n error: i == 0,\n skipped: spec.skippedNodes && spec.skippedNodes.indexOf(i) > -1\n })));\n if (spec.propSources)\n this.nodeSet = this.nodeSet.extend(...spec.propSources);\n this.strict = false;\n this.bufferLength = DefaultBufferLength;\n let tokenArray = decodeArray(spec.tokenData);\n this.context = spec.context;\n this.specializerSpecs = spec.specialized || [];\n this.specialized = new Uint16Array(this.specializerSpecs.length);\n for (let i = 0; i < this.specializerSpecs.length; i++)\n this.specialized[i] = this.specializerSpecs[i].term;\n this.specializers = this.specializerSpecs.map(getSpecializer);\n this.states = decodeArray(spec.states, Uint32Array);\n this.data = decodeArray(spec.stateData);\n this.goto = decodeArray(spec.goto);\n this.maxTerm = spec.maxTerm;\n this.tokenizers = spec.tokenizers.map(value => typeof value == \"number\" ? new TokenGroup(tokenArray, value) : value);\n this.topRules = spec.topRules;\n this.dialects = spec.dialects || {};\n this.dynamicPrecedences = spec.dynamicPrecedences || null;\n this.tokenPrecTable = spec.tokenPrec;\n this.termNames = spec.termNames || null;\n this.maxNode = this.nodeSet.types.length - 1;\n this.dialect = this.parseDialect();\n this.top = this.topRules[Object.keys(this.topRules)[0]];\n }\n createParse(input, fragments, ranges) {\n let parse = new Parse(this, input, fragments, ranges);\n for (let w of this.wrappers)\n parse = w(parse, input, fragments, ranges);\n return parse;\n }\n /**\n Get a goto table entry @internal\n */\n getGoto(state, term, loose = false) {\n let table = this.goto;\n if (term >= table[0])\n return -1;\n for (let pos = table[term + 1];;) {\n let groupTag = table[pos++], last = groupTag & 1;\n let target = table[pos++];\n if (last && loose)\n return target;\n for (let end = pos + (groupTag >> 1); pos < end; pos++)\n if (table[pos] == state)\n return target;\n if (last)\n return -1;\n }\n }\n /**\n Check if this state has an action for a given terminal @internal\n */\n hasAction(state, terminal) {\n let data = this.data;\n for (let set = 0; set < 2; set++) {\n for (let i = this.stateSlot(state, set ? 2 /* ParseState.Skip */ : 1 /* ParseState.Actions */), next;; i += 3) {\n if ((next = data[i]) == 65535 /* Seq.End */) {\n if (data[i + 1] == 1 /* Seq.Next */)\n next = data[i = pair(data, i + 2)];\n else if (data[i + 1] == 2 /* Seq.Other */)\n return pair(data, i + 2);\n else\n break;\n }\n if (next == terminal || next == 0 /* Term.Err */)\n return pair(data, i + 1);\n }\n }\n return 0;\n }\n /**\n @internal\n */\n stateSlot(state, slot) {\n return this.states[(state * 6 /* ParseState.Size */) + slot];\n }\n /**\n @internal\n */\n stateFlag(state, flag) {\n return (this.stateSlot(state, 0 /* ParseState.Flags */) & flag) > 0;\n }\n /**\n @internal\n */\n validAction(state, action) {\n return !!this.allActions(state, a => a == action ? true : null);\n }\n /**\n @internal\n */\n allActions(state, action) {\n let deflt = this.stateSlot(state, 4 /* ParseState.DefaultReduce */);\n let result = deflt ? action(deflt) : undefined;\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */); result == null; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n result = action(pair(this.data, i + 1));\n }\n return result;\n }\n /**\n Get the states that can follow this one through shift actions or\n goto jumps. @internal\n */\n nextStates(state) {\n let result = [];\n for (let i = this.stateSlot(state, 1 /* ParseState.Actions */);; i += 3) {\n if (this.data[i] == 65535 /* Seq.End */) {\n if (this.data[i + 1] == 1 /* Seq.Next */)\n i = pair(this.data, i + 2);\n else\n break;\n }\n if ((this.data[i + 2] & (65536 /* Action.ReduceFlag */ >> 16)) == 0) {\n let value = this.data[i + 1];\n if (!result.some((v, i) => (i & 1) && v == value))\n result.push(this.data[i], value);\n }\n }\n return result;\n }\n /**\n Configure the parser. Returns a new parser instance that has the\n given settings modified. Settings not provided in `config` are\n kept from the original parser.\n */\n configure(config) {\n // Hideous reflection-based kludge to make it easy to create a\n // slightly modified copy of a parser.\n let copy = Object.assign(Object.create(LRParser.prototype), this);\n if (config.props)\n copy.nodeSet = this.nodeSet.extend(...config.props);\n if (config.top) {\n let info = this.topRules[config.top];\n if (!info)\n throw new RangeError(`Invalid top rule name ${config.top}`);\n copy.top = info;\n }\n if (config.tokenizers)\n copy.tokenizers = this.tokenizers.map(t => {\n let found = config.tokenizers.find(r => r.from == t);\n return found ? found.to : t;\n });\n if (config.specializers) {\n copy.specializers = this.specializers.slice();\n copy.specializerSpecs = this.specializerSpecs.map((s, i) => {\n let found = config.specializers.find(r => r.from == s.external);\n if (!found)\n return s;\n let spec = Object.assign(Object.assign({}, s), { external: found.to });\n copy.specializers[i] = getSpecializer(spec);\n return spec;\n });\n }\n if (config.contextTracker)\n copy.context = config.contextTracker;\n if (config.dialect)\n copy.dialect = this.parseDialect(config.dialect);\n if (config.strict != null)\n copy.strict = config.strict;\n if (config.wrap)\n copy.wrappers = copy.wrappers.concat(config.wrap);\n if (config.bufferLength != null)\n copy.bufferLength = config.bufferLength;\n return copy;\n }\n /**\n Tells you whether any [parse wrappers](#lr.ParserConfig.wrap)\n are registered for this parser.\n */\n hasWrappers() {\n return this.wrappers.length > 0;\n }\n /**\n Returns the name associated with a given term. This will only\n work for all terms when the parser was generated with the\n `--names` option. By default, only the names of tagged terms are\n stored.\n */\n getName(term) {\n return this.termNames ? this.termNames[term] : String(term <= this.maxNode && this.nodeSet.types[term].name || term);\n }\n /**\n The eof term id is always allocated directly after the node\n types. @internal\n */\n get eofTerm() { return this.maxNode + 1; }\n /**\n The type of top node produced by the parser.\n */\n get topNode() { return this.nodeSet.types[this.top[1]]; }\n /**\n @internal\n */\n dynamicPrecedence(term) {\n let prec = this.dynamicPrecedences;\n return prec == null ? 0 : prec[term] || 0;\n }\n /**\n @internal\n */\n parseDialect(dialect) {\n let values = Object.keys(this.dialects), flags = values.map(() => false);\n if (dialect)\n for (let part of dialect.split(\" \")) {\n let id = values.indexOf(part);\n if (id >= 0)\n flags[id] = true;\n }\n let disabled = null;\n for (let i = 0; i < values.length; i++)\n if (!flags[i]) {\n for (let j = this.dialects[values[i]], id; (id = this.data[j++]) != 65535 /* Seq.End */;)\n (disabled || (disabled = new Uint8Array(this.maxTerm + 1)))[id] = 1;\n }\n return new Dialect(dialect, flags, disabled);\n }\n /**\n Used by the output of the parser generator. Not available to\n user code. @hide\n */\n static deserialize(spec) {\n return new LRParser(spec);\n }\n}\nfunction pair(data, off) { return data[off] | (data[off + 1] << 16); }\nfunction findFinished(stacks) {\n let best = null;\n for (let stack of stacks) {\n let stopped = stack.p.stoppedAt;\n if ((stack.pos == stack.p.stream.end || stopped != null && stack.pos > stopped) &&\n stack.p.parser.stateFlag(stack.state, 2 /* StateFlag.Accepting */) &&\n (!best || best.score < stack.score))\n best = stack;\n }\n return best;\n}\nfunction getSpecializer(spec) {\n if (spec.external) {\n let mask = spec.extend ? 1 /* Specialize.Extend */ : 0 /* Specialize.Specialize */;\n return (value, stack) => (spec.external(value, stack) << 1) | mask;\n }\n return spec.get;\n}\n\nexport { ContextTracker, ExternalTokenizer, InputStream, LRParser, LocalTokenGroup, Stack };\n"],"names":["Stack","p","stack","state","reducePos","pos","score","buffer","bufferBase","curContext","lookAhead","parent","_","i","cx","StackContext","start","action","_a","depth","type","parser","lookaheadRecord","dPrec","base","size","count","baseStateID","term","end","mustSink","top","index","mustMove","scan","nextState","skipped","next","nextStart","nextEnd","value","off","isNode","sim","SimulatedStack","nextStates","best","s","v","result","reduce","target","backup","seen","explore","rDepth","found","other","dialectID","last","context","newCx","tracker","goto","StackBufferCursor","decodeArray","input","Type","array","out","stop","digit","CachedToken","nullToken","InputStream","ranges","offset","assoc","range","idx","resolved","token","endOffset","endPos","chunk","chunkPos","nextChunk","n","from","to","r","TokenGroup","data","id","readToken","group","precTable","precOffset","groupMask","dialect","accEnd","overrides","low","high","mid","findOffset","prev","tableData","tableOffset","iPrev","verbose","stackIDs","cutAt","tree","side","cursor","IterMode","FragmentCursor","fragments","nodeSet","fr","Tree","NodeProp","TokenCache","stream","actionIndex","main","tokenizers","mask","tokenizer","startIndex","set","pair","Parse","stacks","newStacks","stopped","stoppedTokens","tok","finished","findFinished","maxRemaining","a","b","outer","j","split","strictCx","cxHash","cached","match","inner","defaultReduce","actions","localStack","pushStackDedup","tokens","restarted","tokenEnd","force","forceBase","insert","Dialect","source","flags","disabled","LRParser","Parser","spec","nodeNames","topTerms","nodeProps","setProp","nodeID","prop","propSpec","NodeSet","name","NodeType","DefaultBufferLength","tokenArray","getSpecializer","parse","w","loose","table","groupTag","terminal","slot","flag","deflt","config","copy","info","t","prec","values","part"],"mappings":"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","x_google_ignoreList":[0]}