@opentui/core 0.0.0-20250930-d50102aa → 0.0.0-20251001-ad2d8bd4

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.
@@ -1,12 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../node_modules/web-tree-sitter/web-tree-sitter.js", "../src/lib/tree-sitter/parser.worker.ts", "../src/lib/tree-sitter/download-utils.ts"],
4
- "sourcesContent": [
5
- "var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/constants.ts\nvar SIZE_OF_SHORT = 2;\nvar SIZE_OF_INT = 4;\nvar SIZE_OF_CURSOR = 4 * SIZE_OF_INT;\nvar SIZE_OF_NODE = 5 * SIZE_OF_INT;\nvar SIZE_OF_POINT = 2 * SIZE_OF_INT;\nvar SIZE_OF_RANGE = 2 * SIZE_OF_INT + 2 * SIZE_OF_POINT;\nvar ZERO_POINT = { row: 0, column: 0 };\nvar INTERNAL = Symbol(\"INTERNAL\");\nfunction assertInternal(x) {\n if (x !== INTERNAL) throw new Error(\"Illegal constructor\");\n}\n__name(assertInternal, \"assertInternal\");\nfunction isPoint(point) {\n return !!point && typeof point.row === \"number\" && typeof point.column === \"number\";\n}\n__name(isPoint, \"isPoint\");\nfunction setModule(module2) {\n C = module2;\n}\n__name(setModule, \"setModule\");\nvar C;\n\n// src/lookahead_iterator.ts\nvar LookaheadIterator = class {\n static {\n __name(this, \"LookaheadIterator\");\n }\n /** @internal */\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n language;\n /** @internal */\n constructor(internal, address, language) {\n assertInternal(internal);\n this[0] = address;\n this.language = language;\n }\n /** Get the current symbol of the lookahead iterator. */\n get currentTypeId() {\n return C._ts_lookahead_iterator_current_symbol(this[0]);\n }\n /** Get the current symbol name of the lookahead iterator. */\n get currentType() {\n return this.language.types[this.currentTypeId] || \"ERROR\";\n }\n /** Delete the lookahead iterator, freeing its resources. */\n delete() {\n C._ts_lookahead_iterator_delete(this[0]);\n this[0] = 0;\n }\n /**\n * Reset the lookahead iterator.\n *\n * This returns `true` if the language was set successfully and `false`\n * otherwise.\n */\n reset(language, stateId) {\n if (C._ts_lookahead_iterator_reset(this[0], language[0], stateId)) {\n this.language = language;\n return true;\n }\n return false;\n }\n /**\n * Reset the lookahead iterator to another state.\n *\n * This returns `true` if the iterator was reset to the given state and\n * `false` otherwise.\n */\n resetState(stateId) {\n return Boolean(C._ts_lookahead_iterator_reset_state(this[0], stateId));\n }\n /**\n * Returns an iterator that iterates over the symbols of the lookahead iterator.\n *\n * The iterator will yield the current symbol name as a string for each step\n * until there are no more symbols to iterate over.\n */\n [Symbol.iterator]() {\n return {\n next: /* @__PURE__ */ __name(() => {\n if (C._ts_lookahead_iterator_next(this[0])) {\n return { done: false, value: this.currentType };\n }\n return { done: true, value: \"\" };\n }, \"next\")\n };\n }\n};\n\n// src/tree.ts\nfunction getText(tree, startIndex, endIndex, startPosition) {\n const length = endIndex - startIndex;\n let result = tree.textCallback(startIndex, startPosition);\n if (result) {\n startIndex += result.length;\n while (startIndex < endIndex) {\n const string = tree.textCallback(startIndex, startPosition);\n if (string && string.length > 0) {\n startIndex += string.length;\n result += string;\n } else {\n break;\n }\n }\n if (startIndex > endIndex) {\n result = result.slice(0, length);\n }\n }\n return result ?? \"\";\n}\n__name(getText, \"getText\");\nvar Tree = class _Tree {\n static {\n __name(this, \"Tree\");\n }\n /** @internal */\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n textCallback;\n /** The language that was used to parse the syntax tree. */\n language;\n /** @internal */\n constructor(internal, address, language, textCallback) {\n assertInternal(internal);\n this[0] = address;\n this.language = language;\n this.textCallback = textCallback;\n }\n /** Create a shallow copy of the syntax tree. This is very fast. */\n copy() {\n const address = C._ts_tree_copy(this[0]);\n return new _Tree(INTERNAL, address, this.language, this.textCallback);\n }\n /** Delete the syntax tree, freeing its resources. */\n delete() {\n C._ts_tree_delete(this[0]);\n this[0] = 0;\n }\n /** Get the root node of the syntax tree. */\n get rootNode() {\n C._ts_tree_root_node_wasm(this[0]);\n return unmarshalNode(this);\n }\n /**\n * Get the root node of the syntax tree, but with its position shifted\n * forward by the given offset.\n */\n rootNodeWithOffset(offsetBytes, offsetExtent) {\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n C.setValue(address, offsetBytes, \"i32\");\n marshalPoint(address + SIZE_OF_INT, offsetExtent);\n C._ts_tree_root_node_with_offset_wasm(this[0]);\n return unmarshalNode(this);\n }\n /**\n * Edit the syntax tree to keep it in sync with source code that has been\n * edited.\n *\n * You must describe the edit both in terms of byte offsets and in terms of\n * row/column coordinates.\n */\n edit(edit) {\n marshalEdit(edit);\n C._ts_tree_edit_wasm(this[0]);\n }\n /** Create a new {@link TreeCursor} starting from the root of the tree. */\n walk() {\n return this.rootNode.walk();\n }\n /**\n * Compare this old edited syntax tree to a new syntax tree representing\n * the same document, returning a sequence of ranges whose syntactic\n * structure has changed.\n *\n * For this to work correctly, this syntax tree must have been edited such\n * that its ranges match up to the new tree. Generally, you'll want to\n * call this method right after calling one of the [`Parser::parse`]\n * functions. Call it on the old tree that was passed to parse, and\n * pass the new tree that was returned from `parse`.\n */\n getChangedRanges(other) {\n if (!(other instanceof _Tree)) {\n throw new TypeError(\"Argument must be a Tree\");\n }\n C._ts_tree_get_changed_ranges_wasm(this[0], other[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = unmarshalRange(address);\n address += SIZE_OF_RANGE;\n }\n C._free(buffer);\n }\n return result;\n }\n /** Get the included ranges that were used to parse the syntax tree. */\n getIncludedRanges() {\n C._ts_tree_included_ranges_wasm(this[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = unmarshalRange(address);\n address += SIZE_OF_RANGE;\n }\n C._free(buffer);\n }\n return result;\n }\n};\n\n// src/tree_cursor.ts\nvar TreeCursor = class _TreeCursor {\n static {\n __name(this, \"TreeCursor\");\n }\n /** @internal */\n // @ts-expect-error: never read\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n // @ts-expect-error: never read\n [1] = 0;\n // Internal handle for Wasm\n /** @internal */\n // @ts-expect-error: never read\n [2] = 0;\n // Internal handle for Wasm\n /** @internal */\n // @ts-expect-error: never read\n [3] = 0;\n // Internal handle for Wasm\n /** @internal */\n tree;\n /** @internal */\n constructor(internal, tree) {\n assertInternal(internal);\n this.tree = tree;\n unmarshalTreeCursor(this);\n }\n /** Creates a deep copy of the tree cursor. This allocates new memory. */\n copy() {\n const copy = new _TreeCursor(INTERNAL, this.tree);\n C._ts_tree_cursor_copy_wasm(this.tree[0]);\n unmarshalTreeCursor(copy);\n return copy;\n }\n /** Delete the tree cursor, freeing its resources. */\n delete() {\n marshalTreeCursor(this);\n C._ts_tree_cursor_delete_wasm(this.tree[0]);\n this[0] = this[1] = this[2] = 0;\n }\n /** Get the tree cursor's current {@link Node}. */\n get currentNode() {\n marshalTreeCursor(this);\n C._ts_tree_cursor_current_node_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /**\n * Get the numerical field id of this tree cursor's current node.\n *\n * See also {@link TreeCursor#currentFieldName}.\n */\n get currentFieldId() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_field_id_wasm(this.tree[0]);\n }\n /** Get the field name of this tree cursor's current node. */\n get currentFieldName() {\n return this.tree.language.fields[this.currentFieldId];\n }\n /**\n * Get the depth of the cursor's current node relative to the original\n * node that the cursor was constructed with.\n */\n get currentDepth() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_depth_wasm(this.tree[0]);\n }\n /**\n * Get the index of the cursor's current node out of all of the\n * descendants of the original node that the cursor was constructed with.\n */\n get currentDescendantIndex() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0]);\n }\n /** Get the type of the cursor's current node. */\n get nodeType() {\n return this.tree.language.types[this.nodeTypeId] || \"ERROR\";\n }\n /** Get the type id of the cursor's current node. */\n get nodeTypeId() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0]);\n }\n /** Get the state id of the cursor's current node. */\n get nodeStateId() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0]);\n }\n /** Get the id of the cursor's current node. */\n get nodeId() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_node_id_wasm(this.tree[0]);\n }\n /**\n * Check if the cursor's current node is *named*.\n *\n * Named nodes correspond to named rules in the grammar, whereas\n * *anonymous* nodes correspond to string literals in the grammar.\n */\n get nodeIsNamed() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0]) === 1;\n }\n /**\n * Check if the cursor's current node is *missing*.\n *\n * Missing nodes are inserted by the parser in order to recover from\n * certain kinds of syntax errors.\n */\n get nodeIsMissing() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0]) === 1;\n }\n /** Get the string content of the cursor's current node. */\n get nodeText() {\n marshalTreeCursor(this);\n const startIndex = C._ts_tree_cursor_start_index_wasm(this.tree[0]);\n const endIndex = C._ts_tree_cursor_end_index_wasm(this.tree[0]);\n C._ts_tree_cursor_start_position_wasm(this.tree[0]);\n const startPosition = unmarshalPoint(TRANSFER_BUFFER);\n return getText(this.tree, startIndex, endIndex, startPosition);\n }\n /** Get the start position of the cursor's current node. */\n get startPosition() {\n marshalTreeCursor(this);\n C._ts_tree_cursor_start_position_wasm(this.tree[0]);\n return unmarshalPoint(TRANSFER_BUFFER);\n }\n /** Get the end position of the cursor's current node. */\n get endPosition() {\n marshalTreeCursor(this);\n C._ts_tree_cursor_end_position_wasm(this.tree[0]);\n return unmarshalPoint(TRANSFER_BUFFER);\n }\n /** Get the start index of the cursor's current node. */\n get startIndex() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_start_index_wasm(this.tree[0]);\n }\n /** Get the end index of the cursor's current node. */\n get endIndex() {\n marshalTreeCursor(this);\n return C._ts_tree_cursor_end_index_wasm(this.tree[0]);\n }\n /**\n * Move this cursor to the first child of its current node.\n *\n * This returns `true` if the cursor successfully moved, and returns\n * `false` if there were no children.\n */\n gotoFirstChild() {\n marshalTreeCursor(this);\n const result = C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move this cursor to the last child of its current node.\n *\n * This returns `true` if the cursor successfully moved, and returns\n * `false` if there were no children.\n *\n * Note that this function may be slower than\n * {@link TreeCursor#gotoFirstChild} because it needs to\n * iterate through all the children to compute the child's position.\n */\n gotoLastChild() {\n marshalTreeCursor(this);\n const result = C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move this cursor to the parent of its current node.\n *\n * This returns `true` if the cursor successfully moved, and returns\n * `false` if there was no parent node (the cursor was already on the\n * root node).\n *\n * Note that the node the cursor was constructed with is considered the root\n * of the cursor, and the cursor cannot walk outside this node.\n */\n gotoParent() {\n marshalTreeCursor(this);\n const result = C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move this cursor to the next sibling of its current node.\n *\n * This returns `true` if the cursor successfully moved, and returns\n * `false` if there was no next sibling node.\n *\n * Note that the node the cursor was constructed with is considered the root\n * of the cursor, and the cursor cannot walk outside this node.\n */\n gotoNextSibling() {\n marshalTreeCursor(this);\n const result = C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move this cursor to the previous sibling of its current node.\n *\n * This returns `true` if the cursor successfully moved, and returns\n * `false` if there was no previous sibling node.\n *\n * Note that this function may be slower than\n * {@link TreeCursor#gotoNextSibling} due to how node\n * positions are stored. In the worst case, this will need to iterate\n * through all the children up to the previous sibling node to recalculate\n * its position. Also note that the node the cursor was constructed with is\n * considered the root of the cursor, and the cursor cannot walk outside this node.\n */\n gotoPreviousSibling() {\n marshalTreeCursor(this);\n const result = C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move the cursor to the node that is the nth descendant of\n * the original node that the cursor was constructed with, where\n * zero represents the original node itself.\n */\n gotoDescendant(goalDescendantIndex) {\n marshalTreeCursor(this);\n C._ts_tree_cursor_goto_descendant_wasm(this.tree[0], goalDescendantIndex);\n unmarshalTreeCursor(this);\n }\n /**\n * Move this cursor to the first child of its current node that contains or\n * starts after the given byte offset.\n *\n * This returns `true` if the cursor successfully moved to a child node, and returns\n * `false` if no such child was found.\n */\n gotoFirstChildForIndex(goalIndex) {\n marshalTreeCursor(this);\n C.setValue(TRANSFER_BUFFER + SIZE_OF_CURSOR, goalIndex, \"i32\");\n const result = C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Move this cursor to the first child of its current node that contains or\n * starts after the given byte offset.\n *\n * This returns the index of the child node if one was found, and returns\n * `null` if no such child was found.\n */\n gotoFirstChildForPosition(goalPosition) {\n marshalTreeCursor(this);\n marshalPoint(TRANSFER_BUFFER + SIZE_OF_CURSOR, goalPosition);\n const result = C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n return result === 1;\n }\n /**\n * Re-initialize this tree cursor to start at the original node that the\n * cursor was constructed with.\n */\n reset(node) {\n marshalNode(node);\n marshalTreeCursor(this, TRANSFER_BUFFER + SIZE_OF_NODE);\n C._ts_tree_cursor_reset_wasm(this.tree[0]);\n unmarshalTreeCursor(this);\n }\n /**\n * Re-initialize a tree cursor to the same position as another cursor.\n *\n * Unlike {@link TreeCursor#reset}, this will not lose parent\n * information and allows reusing already created cursors.\n */\n resetTo(cursor) {\n marshalTreeCursor(this, TRANSFER_BUFFER);\n marshalTreeCursor(cursor, TRANSFER_BUFFER + SIZE_OF_CURSOR);\n C._ts_tree_cursor_reset_to_wasm(this.tree[0], cursor.tree[0]);\n unmarshalTreeCursor(this);\n }\n};\n\n// src/node.ts\nvar Node = class {\n static {\n __name(this, \"Node\");\n }\n /** @internal */\n // @ts-expect-error: never read\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n _children;\n /** @internal */\n _namedChildren;\n /** @internal */\n constructor(internal, {\n id,\n tree,\n startIndex,\n startPosition,\n other\n }) {\n assertInternal(internal);\n this[0] = other;\n this.id = id;\n this.tree = tree;\n this.startIndex = startIndex;\n this.startPosition = startPosition;\n }\n /**\n * The numeric id for this node that is unique.\n *\n * Within a given syntax tree, no two nodes have the same id. However:\n *\n * * If a new tree is created based on an older tree, and a node from the old tree is reused in\n * the process, then that node will have the same id in both trees.\n *\n * * A node not marked as having changes does not guarantee it was reused.\n *\n * * If a node is marked as having changed in the old tree, it will not be reused.\n */\n id;\n /** The byte index where this node starts. */\n startIndex;\n /** The position where this node starts. */\n startPosition;\n /** The tree that this node belongs to. */\n tree;\n /** Get this node's type as a numerical id. */\n get typeId() {\n marshalNode(this);\n return C._ts_node_symbol_wasm(this.tree[0]);\n }\n /**\n * Get the node's type as a numerical id as it appears in the grammar,\n * ignoring aliases.\n */\n get grammarId() {\n marshalNode(this);\n return C._ts_node_grammar_symbol_wasm(this.tree[0]);\n }\n /** Get this node's type as a string. */\n get type() {\n return this.tree.language.types[this.typeId] || \"ERROR\";\n }\n /**\n * Get this node's symbol name as it appears in the grammar, ignoring\n * aliases as a string.\n */\n get grammarType() {\n return this.tree.language.types[this.grammarId] || \"ERROR\";\n }\n /**\n * Check if this node is *named*.\n *\n * Named nodes correspond to named rules in the grammar, whereas\n * *anonymous* nodes correspond to string literals in the grammar.\n */\n get isNamed() {\n marshalNode(this);\n return C._ts_node_is_named_wasm(this.tree[0]) === 1;\n }\n /**\n * Check if this node is *extra*.\n *\n * Extra nodes represent things like comments, which are not required\n * by the grammar, but can appear anywhere.\n */\n get isExtra() {\n marshalNode(this);\n return C._ts_node_is_extra_wasm(this.tree[0]) === 1;\n }\n /**\n * Check if this node represents a syntax error.\n *\n * Syntax errors represent parts of the code that could not be incorporated\n * into a valid syntax tree.\n */\n get isError() {\n marshalNode(this);\n return C._ts_node_is_error_wasm(this.tree[0]) === 1;\n }\n /**\n * Check if this node is *missing*.\n *\n * Missing nodes are inserted by the parser in order to recover from\n * certain kinds of syntax errors.\n */\n get isMissing() {\n marshalNode(this);\n return C._ts_node_is_missing_wasm(this.tree[0]) === 1;\n }\n /** Check if this node has been edited. */\n get hasChanges() {\n marshalNode(this);\n return C._ts_node_has_changes_wasm(this.tree[0]) === 1;\n }\n /**\n * Check if this node represents a syntax error or contains any syntax\n * errors anywhere within it.\n */\n get hasError() {\n marshalNode(this);\n return C._ts_node_has_error_wasm(this.tree[0]) === 1;\n }\n /** Get the byte index where this node ends. */\n get endIndex() {\n marshalNode(this);\n return C._ts_node_end_index_wasm(this.tree[0]);\n }\n /** Get the position where this node ends. */\n get endPosition() {\n marshalNode(this);\n C._ts_node_end_point_wasm(this.tree[0]);\n return unmarshalPoint(TRANSFER_BUFFER);\n }\n /** Get the string content of this node. */\n get text() {\n return getText(this.tree, this.startIndex, this.endIndex, this.startPosition);\n }\n /** Get this node's parse state. */\n get parseState() {\n marshalNode(this);\n return C._ts_node_parse_state_wasm(this.tree[0]);\n }\n /** Get the parse state after this node. */\n get nextParseState() {\n marshalNode(this);\n return C._ts_node_next_parse_state_wasm(this.tree[0]);\n }\n /** Check if this node is equal to another node. */\n equals(other) {\n return this.tree === other.tree && this.id === other.id;\n }\n /**\n * Get the node's child at the given index, where zero represents the first child.\n *\n * This method is fairly fast, but its cost is technically log(n), so if\n * you might be iterating over a long list of children, you should use\n * {@link Node#children} instead.\n */\n child(index) {\n marshalNode(this);\n C._ts_node_child_wasm(this.tree[0], index);\n return unmarshalNode(this.tree);\n }\n /**\n * Get this node's *named* child at the given index.\n *\n * See also {@link Node#isNamed}.\n * This method is fairly fast, but its cost is technically log(n), so if\n * you might be iterating over a long list of children, you should use\n * {@link Node#namedChildren} instead.\n */\n namedChild(index) {\n marshalNode(this);\n C._ts_node_named_child_wasm(this.tree[0], index);\n return unmarshalNode(this.tree);\n }\n /**\n * Get this node's child with the given numerical field id.\n *\n * See also {@link Node#childForFieldName}. You can\n * convert a field name to an id using {@link Language#fieldIdForName}.\n */\n childForFieldId(fieldId) {\n marshalNode(this);\n C._ts_node_child_by_field_id_wasm(this.tree[0], fieldId);\n return unmarshalNode(this.tree);\n }\n /**\n * Get the first child with the given field name.\n *\n * If multiple children may have the same field name, access them using\n * {@link Node#childrenForFieldName}.\n */\n childForFieldName(fieldName) {\n const fieldId = this.tree.language.fields.indexOf(fieldName);\n if (fieldId !== -1) return this.childForFieldId(fieldId);\n return null;\n }\n /** Get the field name of this node's child at the given index. */\n fieldNameForChild(index) {\n marshalNode(this);\n const address = C._ts_node_field_name_for_child_wasm(this.tree[0], index);\n if (!address) return null;\n return C.AsciiToString(address);\n }\n /** Get the field name of this node's named child at the given index. */\n fieldNameForNamedChild(index) {\n marshalNode(this);\n const address = C._ts_node_field_name_for_named_child_wasm(this.tree[0], index);\n if (!address) return null;\n return C.AsciiToString(address);\n }\n /**\n * Get an array of this node's children with a given field name.\n *\n * See also {@link Node#children}.\n */\n childrenForFieldName(fieldName) {\n const fieldId = this.tree.language.fields.indexOf(fieldName);\n if (fieldId !== -1 && fieldId !== 0) return this.childrenForFieldId(fieldId);\n return [];\n }\n /**\n * Get an array of this node's children with a given field id.\n *\n * See also {@link Node#childrenForFieldName}.\n */\n childrenForFieldId(fieldId) {\n marshalNode(this);\n C._ts_node_children_by_field_id_wasm(this.tree[0], fieldId);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = unmarshalNode(this.tree, address);\n address += SIZE_OF_NODE;\n }\n C._free(buffer);\n }\n return result;\n }\n /** Get the node's first child that contains or starts after the given byte offset. */\n firstChildForIndex(index) {\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n C.setValue(address, index, \"i32\");\n C._ts_node_first_child_for_byte_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the node's first named child that contains or starts after the given byte offset. */\n firstNamedChildForIndex(index) {\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n C.setValue(address, index, \"i32\");\n C._ts_node_first_named_child_for_byte_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get this node's number of children. */\n get childCount() {\n marshalNode(this);\n return C._ts_node_child_count_wasm(this.tree[0]);\n }\n /**\n * Get this node's number of *named* children.\n *\n * See also {@link Node#isNamed}.\n */\n get namedChildCount() {\n marshalNode(this);\n return C._ts_node_named_child_count_wasm(this.tree[0]);\n }\n /** Get this node's first child. */\n get firstChild() {\n return this.child(0);\n }\n /**\n * Get this node's first named child.\n *\n * See also {@link Node#isNamed}.\n */\n get firstNamedChild() {\n return this.namedChild(0);\n }\n /** Get this node's last child. */\n get lastChild() {\n return this.child(this.childCount - 1);\n }\n /**\n * Get this node's last named child.\n *\n * See also {@link Node#isNamed}.\n */\n get lastNamedChild() {\n return this.namedChild(this.namedChildCount - 1);\n }\n /**\n * Iterate over this node's children.\n *\n * If you're walking the tree recursively, you may want to use the\n * {@link TreeCursor} APIs directly instead.\n */\n get children() {\n if (!this._children) {\n marshalNode(this);\n C._ts_node_children_wasm(this.tree[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n this._children = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n this._children[i2] = unmarshalNode(this.tree, address);\n address += SIZE_OF_NODE;\n }\n C._free(buffer);\n }\n }\n return this._children;\n }\n /**\n * Iterate over this node's named children.\n *\n * See also {@link Node#children}.\n */\n get namedChildren() {\n if (!this._namedChildren) {\n marshalNode(this);\n C._ts_node_named_children_wasm(this.tree[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n this._namedChildren = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n this._namedChildren[i2] = unmarshalNode(this.tree, address);\n address += SIZE_OF_NODE;\n }\n C._free(buffer);\n }\n }\n return this._namedChildren;\n }\n /**\n * Get the descendants of this node that are the given type, or in the given types array.\n *\n * The types array should contain node type strings, which can be retrieved from {@link Language#types}.\n *\n * Additionally, a `startPosition` and `endPosition` can be passed in to restrict the search to a byte range.\n */\n descendantsOfType(types, startPosition = ZERO_POINT, endPosition = ZERO_POINT) {\n if (!Array.isArray(types)) types = [types];\n const symbols = [];\n const typesBySymbol = this.tree.language.types;\n for (const node_type of types) {\n if (node_type == \"ERROR\") {\n symbols.push(65535);\n }\n }\n for (let i2 = 0, n = typesBySymbol.length; i2 < n; i2++) {\n if (types.includes(typesBySymbol[i2])) {\n symbols.push(i2);\n }\n }\n const symbolsAddress = C._malloc(SIZE_OF_INT * symbols.length);\n for (let i2 = 0, n = symbols.length; i2 < n; i2++) {\n C.setValue(symbolsAddress + i2 * SIZE_OF_INT, symbols[i2], \"i32\");\n }\n marshalNode(this);\n C._ts_node_descendants_of_type_wasm(\n this.tree[0],\n symbolsAddress,\n symbols.length,\n startPosition.row,\n startPosition.column,\n endPosition.row,\n endPosition.column\n );\n const descendantCount = C.getValue(TRANSFER_BUFFER, \"i32\");\n const descendantAddress = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(descendantCount);\n if (descendantCount > 0) {\n let address = descendantAddress;\n for (let i2 = 0; i2 < descendantCount; i2++) {\n result[i2] = unmarshalNode(this.tree, address);\n address += SIZE_OF_NODE;\n }\n }\n C._free(descendantAddress);\n C._free(symbolsAddress);\n return result;\n }\n /** Get this node's next sibling. */\n get nextSibling() {\n marshalNode(this);\n C._ts_node_next_sibling_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get this node's previous sibling. */\n get previousSibling() {\n marshalNode(this);\n C._ts_node_prev_sibling_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /**\n * Get this node's next *named* sibling.\n *\n * See also {@link Node#isNamed}.\n */\n get nextNamedSibling() {\n marshalNode(this);\n C._ts_node_next_named_sibling_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /**\n * Get this node's previous *named* sibling.\n *\n * See also {@link Node#isNamed}.\n */\n get previousNamedSibling() {\n marshalNode(this);\n C._ts_node_prev_named_sibling_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the node's number of descendants, including one for the node itself. */\n get descendantCount() {\n marshalNode(this);\n return C._ts_node_descendant_count_wasm(this.tree[0]);\n }\n /**\n * Get this node's immediate parent.\n * Prefer {@link Node#childWithDescendant} for iterating over this node's ancestors.\n */\n get parent() {\n marshalNode(this);\n C._ts_node_parent_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /**\n * Get the node that contains `descendant`.\n *\n * Note that this can return `descendant` itself.\n */\n childWithDescendant(descendant) {\n marshalNode(this);\n marshalNode(descendant, 1);\n C._ts_node_child_with_descendant_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the smallest node within this node that spans the given byte range. */\n descendantForIndex(start2, end = start2) {\n if (typeof start2 !== \"number\" || typeof end !== \"number\") {\n throw new Error(\"Arguments must be numbers\");\n }\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n C.setValue(address, start2, \"i32\");\n C.setValue(address + SIZE_OF_INT, end, \"i32\");\n C._ts_node_descendant_for_index_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the smallest named node within this node that spans the given byte range. */\n namedDescendantForIndex(start2, end = start2) {\n if (typeof start2 !== \"number\" || typeof end !== \"number\") {\n throw new Error(\"Arguments must be numbers\");\n }\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n C.setValue(address, start2, \"i32\");\n C.setValue(address + SIZE_OF_INT, end, \"i32\");\n C._ts_node_named_descendant_for_index_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the smallest node within this node that spans the given point range. */\n descendantForPosition(start2, end = start2) {\n if (!isPoint(start2) || !isPoint(end)) {\n throw new Error(\"Arguments must be {row, column} objects\");\n }\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n marshalPoint(address, start2);\n marshalPoint(address + SIZE_OF_POINT, end);\n C._ts_node_descendant_for_position_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /** Get the smallest named node within this node that spans the given point range. */\n namedDescendantForPosition(start2, end = start2) {\n if (!isPoint(start2) || !isPoint(end)) {\n throw new Error(\"Arguments must be {row, column} objects\");\n }\n marshalNode(this);\n const address = TRANSFER_BUFFER + SIZE_OF_NODE;\n marshalPoint(address, start2);\n marshalPoint(address + SIZE_OF_POINT, end);\n C._ts_node_named_descendant_for_position_wasm(this.tree[0]);\n return unmarshalNode(this.tree);\n }\n /**\n * Create a new {@link TreeCursor} starting from this node.\n *\n * Note that the given node is considered the root of the cursor,\n * and the cursor cannot walk outside this node.\n */\n walk() {\n marshalNode(this);\n C._ts_tree_cursor_new_wasm(this.tree[0]);\n return new TreeCursor(INTERNAL, this.tree);\n }\n /**\n * Edit this node to keep it in-sync with source code that has been edited.\n *\n * This function is only rarely needed. When you edit a syntax tree with\n * the {@link Tree#edit} method, all of the nodes that you retrieve from\n * the tree afterward will already reflect the edit. You only need to\n * use {@link Node#edit} when you have a specific {@link Node} instance that\n * you want to keep and continue to use after an edit.\n */\n edit(edit) {\n if (this.startIndex >= edit.oldEndIndex) {\n this.startIndex = edit.newEndIndex + (this.startIndex - edit.oldEndIndex);\n let subbedPointRow;\n let subbedPointColumn;\n if (this.startPosition.row > edit.oldEndPosition.row) {\n subbedPointRow = this.startPosition.row - edit.oldEndPosition.row;\n subbedPointColumn = this.startPosition.column;\n } else {\n subbedPointRow = 0;\n subbedPointColumn = this.startPosition.column;\n if (this.startPosition.column >= edit.oldEndPosition.column) {\n subbedPointColumn = this.startPosition.column - edit.oldEndPosition.column;\n }\n }\n if (subbedPointRow > 0) {\n this.startPosition.row += subbedPointRow;\n this.startPosition.column = subbedPointColumn;\n } else {\n this.startPosition.column += subbedPointColumn;\n }\n } else if (this.startIndex > edit.startIndex) {\n this.startIndex = edit.newEndIndex;\n this.startPosition.row = edit.newEndPosition.row;\n this.startPosition.column = edit.newEndPosition.column;\n }\n }\n /** Get the S-expression representation of this node. */\n toString() {\n marshalNode(this);\n const address = C._ts_node_to_string_wasm(this.tree[0]);\n const result = C.AsciiToString(address);\n C._free(address);\n return result;\n }\n};\n\n// src/marshal.ts\nfunction unmarshalCaptures(query, tree, address, patternIndex, result) {\n for (let i2 = 0, n = result.length; i2 < n; i2++) {\n const captureIndex = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const node = unmarshalNode(tree, address);\n address += SIZE_OF_NODE;\n result[i2] = { patternIndex, name: query.captureNames[captureIndex], node };\n }\n return address;\n}\n__name(unmarshalCaptures, \"unmarshalCaptures\");\nfunction marshalNode(node, index = 0) {\n let address = TRANSFER_BUFFER + index * SIZE_OF_NODE;\n C.setValue(address, node.id, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, node.startIndex, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, node.startPosition.row, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, node.startPosition.column, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, node[0], \"i32\");\n}\n__name(marshalNode, \"marshalNode\");\nfunction unmarshalNode(tree, address = TRANSFER_BUFFER) {\n const id = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n if (id === 0) return null;\n const index = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const row = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const column = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const other = C.getValue(address, \"i32\");\n const result = new Node(INTERNAL, {\n id,\n tree,\n startIndex: index,\n startPosition: { row, column },\n other\n });\n return result;\n}\n__name(unmarshalNode, \"unmarshalNode\");\nfunction marshalTreeCursor(cursor, address = TRANSFER_BUFFER) {\n C.setValue(address + 0 * SIZE_OF_INT, cursor[0], \"i32\");\n C.setValue(address + 1 * SIZE_OF_INT, cursor[1], \"i32\");\n C.setValue(address + 2 * SIZE_OF_INT, cursor[2], \"i32\");\n C.setValue(address + 3 * SIZE_OF_INT, cursor[3], \"i32\");\n}\n__name(marshalTreeCursor, \"marshalTreeCursor\");\nfunction unmarshalTreeCursor(cursor) {\n cursor[0] = C.getValue(TRANSFER_BUFFER + 0 * SIZE_OF_INT, \"i32\");\n cursor[1] = C.getValue(TRANSFER_BUFFER + 1 * SIZE_OF_INT, \"i32\");\n cursor[2] = C.getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, \"i32\");\n cursor[3] = C.getValue(TRANSFER_BUFFER + 3 * SIZE_OF_INT, \"i32\");\n}\n__name(unmarshalTreeCursor, \"unmarshalTreeCursor\");\nfunction marshalPoint(address, point) {\n C.setValue(address, point.row, \"i32\");\n C.setValue(address + SIZE_OF_INT, point.column, \"i32\");\n}\n__name(marshalPoint, \"marshalPoint\");\nfunction unmarshalPoint(address) {\n const result = {\n row: C.getValue(address, \"i32\") >>> 0,\n column: C.getValue(address + SIZE_OF_INT, \"i32\") >>> 0\n };\n return result;\n}\n__name(unmarshalPoint, \"unmarshalPoint\");\nfunction marshalRange(address, range) {\n marshalPoint(address, range.startPosition);\n address += SIZE_OF_POINT;\n marshalPoint(address, range.endPosition);\n address += SIZE_OF_POINT;\n C.setValue(address, range.startIndex, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, range.endIndex, \"i32\");\n address += SIZE_OF_INT;\n}\n__name(marshalRange, \"marshalRange\");\nfunction unmarshalRange(address) {\n const result = {};\n result.startPosition = unmarshalPoint(address);\n address += SIZE_OF_POINT;\n result.endPosition = unmarshalPoint(address);\n address += SIZE_OF_POINT;\n result.startIndex = C.getValue(address, \"i32\") >>> 0;\n address += SIZE_OF_INT;\n result.endIndex = C.getValue(address, \"i32\") >>> 0;\n return result;\n}\n__name(unmarshalRange, \"unmarshalRange\");\nfunction marshalEdit(edit, address = TRANSFER_BUFFER) {\n marshalPoint(address, edit.startPosition);\n address += SIZE_OF_POINT;\n marshalPoint(address, edit.oldEndPosition);\n address += SIZE_OF_POINT;\n marshalPoint(address, edit.newEndPosition);\n address += SIZE_OF_POINT;\n C.setValue(address, edit.startIndex, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, edit.oldEndIndex, \"i32\");\n address += SIZE_OF_INT;\n C.setValue(address, edit.newEndIndex, \"i32\");\n address += SIZE_OF_INT;\n}\n__name(marshalEdit, \"marshalEdit\");\nfunction unmarshalLanguageMetadata(address) {\n const major_version = C.getValue(address, \"i32\");\n const minor_version = C.getValue(address += SIZE_OF_INT, \"i32\");\n const patch_version = C.getValue(address += SIZE_OF_INT, \"i32\");\n return { major_version, minor_version, patch_version };\n}\n__name(unmarshalLanguageMetadata, \"unmarshalLanguageMetadata\");\n\n// src/language.ts\nvar LANGUAGE_FUNCTION_REGEX = /^tree_sitter_\\w+$/;\nvar Language = class _Language {\n static {\n __name(this, \"Language\");\n }\n /** @internal */\n [0] = 0;\n // Internal handle for Wasm\n /**\n * A list of all node types in the language. The index of each type in this\n * array is its node type id.\n */\n types;\n /**\n * A list of all field names in the language. The index of each field name in\n * this array is its field id.\n */\n fields;\n /** @internal */\n constructor(internal, address) {\n assertInternal(internal);\n this[0] = address;\n this.types = new Array(C._ts_language_symbol_count(this[0]));\n for (let i2 = 0, n = this.types.length; i2 < n; i2++) {\n if (C._ts_language_symbol_type(this[0], i2) < 2) {\n this.types[i2] = C.UTF8ToString(C._ts_language_symbol_name(this[0], i2));\n }\n }\n this.fields = new Array(C._ts_language_field_count(this[0]) + 1);\n for (let i2 = 0, n = this.fields.length; i2 < n; i2++) {\n const fieldName = C._ts_language_field_name_for_id(this[0], i2);\n if (fieldName !== 0) {\n this.fields[i2] = C.UTF8ToString(fieldName);\n } else {\n this.fields[i2] = null;\n }\n }\n }\n /**\n * Gets the name of the language.\n */\n get name() {\n const ptr = C._ts_language_name(this[0]);\n if (ptr === 0) return null;\n return C.UTF8ToString(ptr);\n }\n /**\n * Gets the ABI version of the language.\n */\n get abiVersion() {\n return C._ts_language_abi_version(this[0]);\n }\n /**\n * Get the metadata for this language. This information is generated by the\n * CLI, and relies on the language author providing the correct metadata in\n * the language's `tree-sitter.json` file.\n */\n get metadata() {\n C._ts_language_metadata_wasm(this[0]);\n const length = C.getValue(TRANSFER_BUFFER, \"i32\");\n if (length === 0) return null;\n return unmarshalLanguageMetadata(TRANSFER_BUFFER + SIZE_OF_INT);\n }\n /**\n * Gets the number of fields in the language.\n */\n get fieldCount() {\n return this.fields.length - 1;\n }\n /**\n * Gets the number of states in the language.\n */\n get stateCount() {\n return C._ts_language_state_count(this[0]);\n }\n /**\n * Get the field id for a field name.\n */\n fieldIdForName(fieldName) {\n const result = this.fields.indexOf(fieldName);\n return result !== -1 ? result : null;\n }\n /**\n * Get the field name for a field id.\n */\n fieldNameForId(fieldId) {\n return this.fields[fieldId] ?? null;\n }\n /**\n * Get the node type id for a node type name.\n */\n idForNodeType(type, named) {\n const typeLength = C.lengthBytesUTF8(type);\n const typeAddress = C._malloc(typeLength + 1);\n C.stringToUTF8(type, typeAddress, typeLength + 1);\n const result = C._ts_language_symbol_for_name(this[0], typeAddress, typeLength, named ? 1 : 0);\n C._free(typeAddress);\n return result || null;\n }\n /**\n * Gets the number of node types in the language.\n */\n get nodeTypeCount() {\n return C._ts_language_symbol_count(this[0]);\n }\n /**\n * Get the node type name for a node type id.\n */\n nodeTypeForId(typeId) {\n const name2 = C._ts_language_symbol_name(this[0], typeId);\n return name2 ? C.UTF8ToString(name2) : null;\n }\n /**\n * Check if a node type is named.\n *\n * @see {@link https://tree-sitter.github.io/tree-sitter/using-parsers/2-basic-parsing.html#named-vs-anonymous-nodes}\n */\n nodeTypeIsNamed(typeId) {\n return C._ts_language_type_is_named_wasm(this[0], typeId) ? true : false;\n }\n /**\n * Check if a node type is visible.\n */\n nodeTypeIsVisible(typeId) {\n return C._ts_language_type_is_visible_wasm(this[0], typeId) ? true : false;\n }\n /**\n * Get the supertypes ids of this language.\n *\n * @see {@link https://tree-sitter.github.io/tree-sitter/using-parsers/6-static-node-types.html?highlight=supertype#supertype-nodes}\n */\n get supertypes() {\n C._ts_language_supertypes_wasm(this[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = C.getValue(address, \"i16\");\n address += SIZE_OF_SHORT;\n }\n }\n return result;\n }\n /**\n * Get the subtype ids for a given supertype node id.\n */\n subtypes(supertype) {\n C._ts_language_subtypes_wasm(this[0], supertype);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = C.getValue(address, \"i16\");\n address += SIZE_OF_SHORT;\n }\n }\n return result;\n }\n /**\n * Get the next state id for a given state id and node type id.\n */\n nextState(stateId, typeId) {\n return C._ts_language_next_state(this[0], stateId, typeId);\n }\n /**\n * Create a new lookahead iterator for this language and parse state.\n *\n * This returns `null` if state is invalid for this language.\n *\n * Iterating {@link LookaheadIterator} will yield valid symbols in the given\n * parse state. Newly created lookahead iterators will return the `ERROR`\n * symbol from {@link LookaheadIterator#currentType}.\n *\n * Lookahead iterators can be useful for generating suggestions and improving\n * syntax error diagnostics. To get symbols valid in an `ERROR` node, use the\n * lookahead iterator on its first leaf node state. For `MISSING` nodes, a\n * lookahead iterator created on the previous non-extra leaf node may be\n * appropriate.\n */\n lookaheadIterator(stateId) {\n const address = C._ts_lookahead_iterator_new(this[0], stateId);\n if (address) return new LookaheadIterator(INTERNAL, address, this);\n return null;\n }\n /**\n * Load a language from a WebAssembly module.\n * The module can be provided as a path to a file or as a buffer.\n */\n static async load(input) {\n let binary2;\n if (input instanceof Uint8Array) {\n binary2 = input;\n } else if (globalThis.process?.versions.node) {\n const fs2 = await import(\"fs/promises\");\n binary2 = await fs2.readFile(input);\n } else {\n const response = await fetch(input);\n if (!response.ok) {\n const body2 = await response.text();\n throw new Error(`Language.load failed with status ${response.status}.\n\n${body2}`);\n }\n const retryResp = response.clone();\n try {\n binary2 = await WebAssembly.compileStreaming(response);\n } catch (reason) {\n console.error(\"wasm streaming compile failed:\", reason);\n console.error(\"falling back to ArrayBuffer instantiation\");\n binary2 = new Uint8Array(await retryResp.arrayBuffer());\n }\n }\n const mod = await C.loadWebAssemblyModule(binary2, { loadAsync: true });\n const symbolNames = Object.keys(mod);\n const functionName = symbolNames.find((key) => LANGUAGE_FUNCTION_REGEX.test(key) && !key.includes(\"external_scanner_\"));\n if (!functionName) {\n console.log(`Couldn't find language function in Wasm file. Symbols:\n${JSON.stringify(symbolNames, null, 2)}`);\n throw new Error(\"Language.load failed: no language function found in Wasm file\");\n }\n const languageAddress = mod[functionName]();\n return new _Language(INTERNAL, languageAddress);\n }\n};\n\n// lib/web-tree-sitter.mjs\nasync function Module2(moduleArg = {}) {\n var moduleRtn;\n var Module = moduleArg;\n var ENVIRONMENT_IS_WEB = typeof window == \"object\";\n var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != \"undefined\";\n var ENVIRONMENT_IS_NODE = typeof process == \"object\" && process.versions?.node && process.type != \"renderer\";\n var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;\n if (ENVIRONMENT_IS_NODE) {\n const { createRequire } = await import(\"module\");\n var require = createRequire(import.meta.url);\n }\n Module.currentQueryProgressCallback = null;\n Module.currentProgressCallback = null;\n Module.currentLogCallback = null;\n Module.currentParseCallback = null;\n var arguments_ = [];\n var thisProgram = \"./this.program\";\n var quit_ = /* @__PURE__ */ __name((status, toThrow) => {\n throw toThrow;\n }, \"quit_\");\n var _scriptName = import.meta.url;\n var scriptDirectory = \"\";\n function locateFile(path) {\n if (Module[\"locateFile\"]) {\n return Module[\"locateFile\"](path, scriptDirectory);\n }\n return scriptDirectory + path;\n }\n __name(locateFile, \"locateFile\");\n var readAsync, readBinary;\n if (ENVIRONMENT_IS_NODE) {\n var fs = require(\"fs\");\n if (_scriptName.startsWith(\"file:\")) {\n scriptDirectory = require(\"path\").dirname(require(\"url\").fileURLToPath(_scriptName)) + \"/\";\n }\n readBinary = /* @__PURE__ */ __name((filename) => {\n filename = isFileURI(filename) ? new URL(filename) : filename;\n var ret = fs.readFileSync(filename);\n return ret;\n }, \"readBinary\");\n readAsync = /* @__PURE__ */ __name(async (filename, binary2 = true) => {\n filename = isFileURI(filename) ? new URL(filename) : filename;\n var ret = fs.readFileSync(filename, binary2 ? void 0 : \"utf8\");\n return ret;\n }, \"readAsync\");\n if (process.argv.length > 1) {\n thisProgram = process.argv[1].replace(/\\\\/g, \"/\");\n }\n arguments_ = process.argv.slice(2);\n quit_ = /* @__PURE__ */ __name((status, toThrow) => {\n process.exitCode = status;\n throw toThrow;\n }, \"quit_\");\n } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {\n try {\n scriptDirectory = new URL(\".\", _scriptName).href;\n } catch {\n }\n {\n if (ENVIRONMENT_IS_WORKER) {\n readBinary = /* @__PURE__ */ __name((url) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, false);\n xhr.responseType = \"arraybuffer\";\n xhr.send(null);\n return new Uint8Array(\n /** @type{!ArrayBuffer} */\n xhr.response\n );\n }, \"readBinary\");\n }\n readAsync = /* @__PURE__ */ __name(async (url) => {\n if (isFileURI(url)) {\n return new Promise((resolve, reject) => {\n var xhr = new XMLHttpRequest();\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"arraybuffer\";\n xhr.onload = () => {\n if (xhr.status == 200 || xhr.status == 0 && xhr.response) {\n resolve(xhr.response);\n return;\n }\n reject(xhr.status);\n };\n xhr.onerror = reject;\n xhr.send(null);\n });\n }\n var response = await fetch(url, {\n credentials: \"same-origin\"\n });\n if (response.ok) {\n return response.arrayBuffer();\n }\n throw new Error(response.status + \" : \" + response.url);\n }, \"readAsync\");\n }\n } else {\n }\n var out = console.log.bind(console);\n var err = console.error.bind(console);\n var dynamicLibraries = [];\n var wasmBinary;\n var ABORT = false;\n var EXITSTATUS;\n function assert(condition, text) {\n if (!condition) {\n abort(text);\n }\n }\n __name(assert, \"assert\");\n var isFileURI = /* @__PURE__ */ __name((filename) => filename.startsWith(\"file://\"), \"isFileURI\");\n var readyPromiseResolve, readyPromiseReject;\n var wasmMemory;\n var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;\n var HEAP64, HEAPU64;\n var HEAP_DATA_VIEW;\n var runtimeInitialized = false;\n function updateMemoryViews() {\n var b = wasmMemory.buffer;\n Module[\"HEAP8\"] = HEAP8 = new Int8Array(b);\n Module[\"HEAP16\"] = HEAP16 = new Int16Array(b);\n Module[\"HEAPU8\"] = HEAPU8 = new Uint8Array(b);\n Module[\"HEAPU16\"] = HEAPU16 = new Uint16Array(b);\n Module[\"HEAP32\"] = HEAP32 = new Int32Array(b);\n Module[\"HEAPU32\"] = HEAPU32 = new Uint32Array(b);\n Module[\"HEAPF32\"] = HEAPF32 = new Float32Array(b);\n Module[\"HEAPF64\"] = HEAPF64 = new Float64Array(b);\n Module[\"HEAP64\"] = HEAP64 = new BigInt64Array(b);\n Module[\"HEAPU64\"] = HEAPU64 = new BigUint64Array(b);\n Module[\"HEAP_DATA_VIEW\"] = HEAP_DATA_VIEW = new DataView(b);\n LE_HEAP_UPDATE();\n }\n __name(updateMemoryViews, \"updateMemoryViews\");\n function initMemory() {\n if (Module[\"wasmMemory\"]) {\n wasmMemory = Module[\"wasmMemory\"];\n } else {\n var INITIAL_MEMORY = Module[\"INITIAL_MEMORY\"] || 33554432;\n wasmMemory = new WebAssembly.Memory({\n \"initial\": INITIAL_MEMORY / 65536,\n // In theory we should not need to emit the maximum if we want \"unlimited\"\n // or 4GB of memory, but VMs error on that atm, see\n // https://github.com/emscripten-core/emscripten/issues/14130\n // And in the pthreads case we definitely need to emit a maximum. So\n // always emit one.\n \"maximum\": 32768\n });\n }\n updateMemoryViews();\n }\n __name(initMemory, \"initMemory\");\n var __RELOC_FUNCS__ = [];\n function preRun() {\n if (Module[\"preRun\"]) {\n if (typeof Module[\"preRun\"] == \"function\") Module[\"preRun\"] = [Module[\"preRun\"]];\n while (Module[\"preRun\"].length) {\n addOnPreRun(Module[\"preRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPreRuns);\n }\n __name(preRun, \"preRun\");\n function initRuntime() {\n runtimeInitialized = true;\n callRuntimeCallbacks(__RELOC_FUNCS__);\n wasmExports[\"__wasm_call_ctors\"]();\n callRuntimeCallbacks(onPostCtors);\n }\n __name(initRuntime, \"initRuntime\");\n function preMain() {\n }\n __name(preMain, \"preMain\");\n function postRun() {\n if (Module[\"postRun\"]) {\n if (typeof Module[\"postRun\"] == \"function\") Module[\"postRun\"] = [Module[\"postRun\"]];\n while (Module[\"postRun\"].length) {\n addOnPostRun(Module[\"postRun\"].shift());\n }\n }\n callRuntimeCallbacks(onPostRuns);\n }\n __name(postRun, \"postRun\");\n var runDependencies = 0;\n var dependenciesFulfilled = null;\n function addRunDependency(id) {\n runDependencies++;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n }\n __name(addRunDependency, \"addRunDependency\");\n function removeRunDependency(id) {\n runDependencies--;\n Module[\"monitorRunDependencies\"]?.(runDependencies);\n if (runDependencies == 0) {\n if (dependenciesFulfilled) {\n var callback = dependenciesFulfilled;\n dependenciesFulfilled = null;\n callback();\n }\n }\n }\n __name(removeRunDependency, \"removeRunDependency\");\n function abort(what) {\n Module[\"onAbort\"]?.(what);\n what = \"Aborted(\" + what + \")\";\n err(what);\n ABORT = true;\n what += \". Build with -sASSERTIONS for more info.\";\n var e = new WebAssembly.RuntimeError(what);\n readyPromiseReject?.(e);\n throw e;\n }\n __name(abort, \"abort\");\n var wasmBinaryFile;\n function findWasmBinary() {\n if (Module[\"locateFile\"]) {\n return locateFile(\"web-tree-sitter.wasm\");\n }\n return new URL(\"web-tree-sitter.wasm\", import.meta.url).href;\n }\n __name(findWasmBinary, \"findWasmBinary\");\n function getBinarySync(file) {\n if (file == wasmBinaryFile && wasmBinary) {\n return new Uint8Array(wasmBinary);\n }\n if (readBinary) {\n return readBinary(file);\n }\n throw \"both async and sync fetching of the wasm failed\";\n }\n __name(getBinarySync, \"getBinarySync\");\n async function getWasmBinary(binaryFile) {\n if (!wasmBinary) {\n try {\n var response = await readAsync(binaryFile);\n return new Uint8Array(response);\n } catch {\n }\n }\n return getBinarySync(binaryFile);\n }\n __name(getWasmBinary, \"getWasmBinary\");\n async function instantiateArrayBuffer(binaryFile, imports) {\n try {\n var binary2 = await getWasmBinary(binaryFile);\n var instance2 = await WebAssembly.instantiate(binary2, imports);\n return instance2;\n } catch (reason) {\n err(`failed to asynchronously prepare wasm: ${reason}`);\n abort(reason);\n }\n }\n __name(instantiateArrayBuffer, \"instantiateArrayBuffer\");\n async function instantiateAsync(binary2, binaryFile, imports) {\n if (!binary2 && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE) {\n try {\n var response = fetch(binaryFile, {\n credentials: \"same-origin\"\n });\n var instantiationResult = await WebAssembly.instantiateStreaming(response, imports);\n return instantiationResult;\n } catch (reason) {\n err(`wasm streaming compile failed: ${reason}`);\n err(\"falling back to ArrayBuffer instantiation\");\n }\n }\n return instantiateArrayBuffer(binaryFile, imports);\n }\n __name(instantiateAsync, \"instantiateAsync\");\n function getWasmImports() {\n return {\n \"env\": wasmImports,\n \"wasi_snapshot_preview1\": wasmImports,\n \"GOT.mem\": new Proxy(wasmImports, GOTHandler),\n \"GOT.func\": new Proxy(wasmImports, GOTHandler)\n };\n }\n __name(getWasmImports, \"getWasmImports\");\n async function createWasm() {\n function receiveInstance(instance2, module2) {\n wasmExports = instance2.exports;\n wasmExports = relocateExports(wasmExports, 1024);\n var metadata2 = getDylinkMetadata(module2);\n if (metadata2.neededDynlibs) {\n dynamicLibraries = metadata2.neededDynlibs.concat(dynamicLibraries);\n }\n mergeLibSymbols(wasmExports, \"main\");\n LDSO.init();\n loadDylibs();\n __RELOC_FUNCS__.push(wasmExports[\"__wasm_apply_data_relocs\"]);\n assignWasmExports(wasmExports);\n removeRunDependency(\"wasm-instantiate\");\n return wasmExports;\n }\n __name(receiveInstance, \"receiveInstance\");\n addRunDependency(\"wasm-instantiate\");\n function receiveInstantiationResult(result2) {\n return receiveInstance(result2[\"instance\"], result2[\"module\"]);\n }\n __name(receiveInstantiationResult, \"receiveInstantiationResult\");\n var info2 = getWasmImports();\n if (Module[\"instantiateWasm\"]) {\n return new Promise((resolve, reject) => {\n Module[\"instantiateWasm\"](info2, (mod, inst) => {\n resolve(receiveInstance(mod, inst));\n });\n });\n }\n wasmBinaryFile ??= findWasmBinary();\n var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info2);\n var exports = receiveInstantiationResult(result);\n return exports;\n }\n __name(createWasm, \"createWasm\");\n class ExitStatus {\n static {\n __name(this, \"ExitStatus\");\n }\n name = \"ExitStatus\";\n constructor(status) {\n this.message = `Program terminated with exit(${status})`;\n this.status = status;\n }\n }\n var GOT = {};\n var currentModuleWeakSymbols = /* @__PURE__ */ new Set([]);\n var GOTHandler = {\n get(obj, symName) {\n var rtn = GOT[symName];\n if (!rtn) {\n rtn = GOT[symName] = new WebAssembly.Global({\n \"value\": \"i32\",\n \"mutable\": true\n });\n }\n if (!currentModuleWeakSymbols.has(symName)) {\n rtn.required = true;\n }\n return rtn;\n }\n };\n var LE_ATOMICS_ADD = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.add(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_ADD\");\n var LE_ATOMICS_AND = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.and(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_AND\");\n var LE_ATOMICS_COMPAREEXCHANGE = /* @__PURE__ */ __name((heap, offset, expected, replacement) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.compareExchange(heap, offset, order(expected), order(replacement)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_COMPAREEXCHANGE\");\n var LE_ATOMICS_EXCHANGE = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.exchange(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_EXCHANGE\");\n var LE_ATOMICS_ISLOCKFREE = /* @__PURE__ */ __name((size) => Atomics.isLockFree(size), \"LE_ATOMICS_ISLOCKFREE\");\n var LE_ATOMICS_LOAD = /* @__PURE__ */ __name((heap, offset) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.load(heap, offset));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_LOAD\");\n var LE_ATOMICS_NATIVE_BYTE_ORDER = [];\n var LE_ATOMICS_NOTIFY = /* @__PURE__ */ __name((heap, offset, count) => Atomics.notify(heap, offset, count), \"LE_ATOMICS_NOTIFY\");\n var LE_ATOMICS_OR = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.or(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_OR\");\n var LE_ATOMICS_STORE = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n Atomics.store(heap, offset, order(value));\n }, \"LE_ATOMICS_STORE\");\n var LE_ATOMICS_SUB = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.sub(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_SUB\");\n var LE_ATOMICS_WAIT = /* @__PURE__ */ __name((heap, offset, value, timeout) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n return Atomics.wait(heap, offset, order(value), timeout);\n }, \"LE_ATOMICS_WAIT\");\n var LE_ATOMICS_WAITASYNC = /* @__PURE__ */ __name((heap, offset, value, timeout) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n return Atomics.waitAsync(heap, offset, order(value), timeout);\n }, \"LE_ATOMICS_WAITASYNC\");\n var LE_ATOMICS_XOR = /* @__PURE__ */ __name((heap, offset, value) => {\n const order = LE_ATOMICS_NATIVE_BYTE_ORDER[heap.BYTES_PER_ELEMENT - 1];\n const res = order(Atomics.xor(heap, offset, order(value)));\n return heap.unsigned ? heap.unsigned(res) : res;\n }, \"LE_ATOMICS_XOR\");\n var LE_HEAP_LOAD_F32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getFloat32(byteOffset, true), \"LE_HEAP_LOAD_F32\");\n var LE_HEAP_LOAD_F64 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getFloat64(byteOffset, true), \"LE_HEAP_LOAD_F64\");\n var LE_HEAP_LOAD_I16 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getInt16(byteOffset, true), \"LE_HEAP_LOAD_I16\");\n var LE_HEAP_LOAD_I32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getInt32(byteOffset, true), \"LE_HEAP_LOAD_I32\");\n var LE_HEAP_LOAD_U16 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getUint16(byteOffset, true), \"LE_HEAP_LOAD_U16\");\n var LE_HEAP_LOAD_U32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getUint32(byteOffset, true), \"LE_HEAP_LOAD_U32\");\n var LE_HEAP_STORE_F32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setFloat32(byteOffset, value, true), \"LE_HEAP_STORE_F32\");\n var LE_HEAP_STORE_F64 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setFloat64(byteOffset, value, true), \"LE_HEAP_STORE_F64\");\n var LE_HEAP_STORE_I16 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setInt16(byteOffset, value, true), \"LE_HEAP_STORE_I16\");\n var LE_HEAP_STORE_I32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setInt32(byteOffset, value, true), \"LE_HEAP_STORE_I32\");\n var LE_HEAP_STORE_U16 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setUint16(byteOffset, value, true), \"LE_HEAP_STORE_U16\");\n var LE_HEAP_STORE_U32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setUint32(byteOffset, value, true), \"LE_HEAP_STORE_U32\");\n var callRuntimeCallbacks = /* @__PURE__ */ __name((callbacks) => {\n while (callbacks.length > 0) {\n callbacks.shift()(Module);\n }\n }, \"callRuntimeCallbacks\");\n var onPostRuns = [];\n var addOnPostRun = /* @__PURE__ */ __name((cb) => onPostRuns.push(cb), \"addOnPostRun\");\n var onPreRuns = [];\n var addOnPreRun = /* @__PURE__ */ __name((cb) => onPreRuns.push(cb), \"addOnPreRun\");\n var UTF8Decoder = typeof TextDecoder != \"undefined\" ? new TextDecoder() : void 0;\n var findStringEnd = /* @__PURE__ */ __name((heapOrArray, idx, maxBytesToRead, ignoreNul) => {\n var maxIdx = idx + maxBytesToRead;\n if (ignoreNul) return maxIdx;\n while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx;\n return idx;\n }, \"findStringEnd\");\n var UTF8ArrayToString = /* @__PURE__ */ __name((heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => {\n var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul);\n if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {\n return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));\n }\n var str = \"\";\n while (idx < endPtr) {\n var u0 = heapOrArray[idx++];\n if (!(u0 & 128)) {\n str += String.fromCharCode(u0);\n continue;\n }\n var u1 = heapOrArray[idx++] & 63;\n if ((u0 & 224) == 192) {\n str += String.fromCharCode((u0 & 31) << 6 | u1);\n continue;\n }\n var u2 = heapOrArray[idx++] & 63;\n if ((u0 & 240) == 224) {\n u0 = (u0 & 15) << 12 | u1 << 6 | u2;\n } else {\n u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[idx++] & 63;\n }\n if (u0 < 65536) {\n str += String.fromCharCode(u0);\n } else {\n var ch = u0 - 65536;\n str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);\n }\n }\n return str;\n }, \"UTF8ArrayToString\");\n var getDylinkMetadata = /* @__PURE__ */ __name((binary2) => {\n var offset = 0;\n var end = 0;\n function getU8() {\n return binary2[offset++];\n }\n __name(getU8, \"getU8\");\n function getLEB() {\n var ret = 0;\n var mul = 1;\n while (1) {\n var byte = binary2[offset++];\n ret += (byte & 127) * mul;\n mul *= 128;\n if (!(byte & 128)) break;\n }\n return ret;\n }\n __name(getLEB, \"getLEB\");\n function getString() {\n var len = getLEB();\n offset += len;\n return UTF8ArrayToString(binary2, offset - len, len);\n }\n __name(getString, \"getString\");\n function getStringList() {\n var count2 = getLEB();\n var rtn = [];\n while (count2--) rtn.push(getString());\n return rtn;\n }\n __name(getStringList, \"getStringList\");\n function failIf(condition, message) {\n if (condition) throw new Error(message);\n }\n __name(failIf, \"failIf\");\n if (binary2 instanceof WebAssembly.Module) {\n var dylinkSection = WebAssembly.Module.customSections(binary2, \"dylink.0\");\n failIf(dylinkSection.length === 0, \"need dylink section\");\n binary2 = new Uint8Array(dylinkSection[0]);\n end = binary2.length;\n } else {\n var int32View = new Uint32Array(new Uint8Array(binary2.subarray(0, 24)).buffer);\n var magicNumberFound = int32View[0] == 1836278016 || int32View[0] == 6386541;\n failIf(!magicNumberFound, \"need to see wasm magic number\");\n failIf(binary2[8] !== 0, \"need the dylink section to be first\");\n offset = 9;\n var section_size = getLEB();\n end = offset + section_size;\n var name2 = getString();\n failIf(name2 !== \"dylink.0\");\n }\n var customSection = {\n neededDynlibs: [],\n tlsExports: /* @__PURE__ */ new Set(),\n weakImports: /* @__PURE__ */ new Set(),\n runtimePaths: []\n };\n var WASM_DYLINK_MEM_INFO = 1;\n var WASM_DYLINK_NEEDED = 2;\n var WASM_DYLINK_EXPORT_INFO = 3;\n var WASM_DYLINK_IMPORT_INFO = 4;\n var WASM_DYLINK_RUNTIME_PATH = 5;\n var WASM_SYMBOL_TLS = 256;\n var WASM_SYMBOL_BINDING_MASK = 3;\n var WASM_SYMBOL_BINDING_WEAK = 1;\n while (offset < end) {\n var subsectionType = getU8();\n var subsectionSize = getLEB();\n if (subsectionType === WASM_DYLINK_MEM_INFO) {\n customSection.memorySize = getLEB();\n customSection.memoryAlign = getLEB();\n customSection.tableSize = getLEB();\n customSection.tableAlign = getLEB();\n } else if (subsectionType === WASM_DYLINK_NEEDED) {\n customSection.neededDynlibs = getStringList();\n } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {\n var count = getLEB();\n while (count--) {\n var symname = getString();\n var flags2 = getLEB();\n if (flags2 & WASM_SYMBOL_TLS) {\n customSection.tlsExports.add(symname);\n }\n }\n } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {\n var count = getLEB();\n while (count--) {\n var modname = getString();\n var symname = getString();\n var flags2 = getLEB();\n if ((flags2 & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {\n customSection.weakImports.add(symname);\n }\n }\n } else if (subsectionType === WASM_DYLINK_RUNTIME_PATH) {\n customSection.runtimePaths = getStringList();\n } else {\n offset += subsectionSize;\n }\n }\n return customSection;\n }, \"getDylinkMetadata\");\n function getValue(ptr, type = \"i8\") {\n if (type.endsWith(\"*\")) type = \"*\";\n switch (type) {\n case \"i1\":\n return HEAP8[ptr];\n case \"i8\":\n return HEAP8[ptr];\n case \"i16\":\n return LE_HEAP_LOAD_I16((ptr >> 1) * 2);\n case \"i32\":\n return LE_HEAP_LOAD_I32((ptr >> 2) * 4);\n case \"i64\":\n return LE_HEAP_LOAD_I64((ptr >> 3) * 8);\n case \"float\":\n return LE_HEAP_LOAD_F32((ptr >> 2) * 4);\n case \"double\":\n return LE_HEAP_LOAD_F64((ptr >> 3) * 8);\n case \"*\":\n return LE_HEAP_LOAD_U32((ptr >> 2) * 4);\n default:\n abort(`invalid type for getValue: ${type}`);\n }\n }\n __name(getValue, \"getValue\");\n var newDSO = /* @__PURE__ */ __name((name2, handle2, syms) => {\n var dso = {\n refcount: Infinity,\n name: name2,\n exports: syms,\n global: true\n };\n LDSO.loadedLibsByName[name2] = dso;\n if (handle2 != void 0) {\n LDSO.loadedLibsByHandle[handle2] = dso;\n }\n return dso;\n }, \"newDSO\");\n var LDSO = {\n loadedLibsByName: {},\n loadedLibsByHandle: {},\n init() {\n newDSO(\"__main__\", 0, wasmImports);\n }\n };\n var ___heap_base = 78240;\n var alignMemory = /* @__PURE__ */ __name((size, alignment) => Math.ceil(size / alignment) * alignment, \"alignMemory\");\n var getMemory = /* @__PURE__ */ __name((size) => {\n if (runtimeInitialized) {\n return _calloc(size, 1);\n }\n var ret = ___heap_base;\n var end = ret + alignMemory(size, 16);\n ___heap_base = end;\n GOT[\"__heap_base\"].value = end;\n return ret;\n }, \"getMemory\");\n var isInternalSym = /* @__PURE__ */ __name((symName) => [\"__cpp_exception\", \"__c_longjmp\", \"__wasm_apply_data_relocs\", \"__dso_handle\", \"__tls_size\", \"__tls_align\", \"__set_stack_limits\", \"_emscripten_tls_init\", \"__wasm_init_tls\", \"__wasm_call_ctors\", \"__start_em_asm\", \"__stop_em_asm\", \"__start_em_js\", \"__stop_em_js\"].includes(symName) || symName.startsWith(\"__em_js__\"), \"isInternalSym\");\n var uleb128EncodeWithLen = /* @__PURE__ */ __name((arr) => {\n const n = arr.length;\n return [n % 128 | 128, n >> 7, ...arr];\n }, \"uleb128EncodeWithLen\");\n var wasmTypeCodes = {\n \"i\": 127,\n // i32\n \"p\": 127,\n // i32\n \"j\": 126,\n // i64\n \"f\": 125,\n // f32\n \"d\": 124,\n // f64\n \"e\": 111\n };\n var generateTypePack = /* @__PURE__ */ __name((types) => uleb128EncodeWithLen(Array.from(types, (type) => {\n var code = wasmTypeCodes[type];\n return code;\n })), \"generateTypePack\");\n var convertJsFunctionToWasm = /* @__PURE__ */ __name((func2, sig) => {\n var bytes = Uint8Array.of(\n 0,\n 97,\n 115,\n 109,\n // magic (\"\\0asm\")\n 1,\n 0,\n 0,\n 0,\n // version: 1\n 1,\n ...uleb128EncodeWithLen([\n 1,\n // count: 1\n 96,\n // param types\n ...generateTypePack(sig.slice(1)),\n // return types (for now only supporting [] if `void` and single [T] otherwise)\n ...generateTypePack(sig[0] === \"v\" ? \"\" : sig[0])\n ]),\n // The rest of the module is static\n 2,\n 7,\n // import section\n // (import \"e\" \"f\" (func 0 (type 0)))\n 1,\n 1,\n 101,\n 1,\n 102,\n 0,\n 0,\n 7,\n 5,\n // export section\n // (export \"f\" (func 0 (type 0)))\n 1,\n 1,\n 102,\n 0,\n 0\n );\n var module2 = new WebAssembly.Module(bytes);\n var instance2 = new WebAssembly.Instance(module2, {\n \"e\": {\n \"f\": func2\n }\n });\n var wrappedFunc = instance2.exports[\"f\"];\n return wrappedFunc;\n }, \"convertJsFunctionToWasm\");\n var wasmTableMirror = [];\n var wasmTable = new WebAssembly.Table({\n \"initial\": 31,\n \"element\": \"anyfunc\"\n });\n var getWasmTableEntry = /* @__PURE__ */ __name((funcPtr) => {\n var func2 = wasmTableMirror[funcPtr];\n if (!func2) {\n wasmTableMirror[funcPtr] = func2 = wasmTable.get(funcPtr);\n }\n return func2;\n }, \"getWasmTableEntry\");\n var updateTableMap = /* @__PURE__ */ __name((offset, count) => {\n if (functionsInTableMap) {\n for (var i2 = offset; i2 < offset + count; i2++) {\n var item = getWasmTableEntry(i2);\n if (item) {\n functionsInTableMap.set(item, i2);\n }\n }\n }\n }, \"updateTableMap\");\n var functionsInTableMap;\n var getFunctionAddress = /* @__PURE__ */ __name((func2) => {\n if (!functionsInTableMap) {\n functionsInTableMap = /* @__PURE__ */ new WeakMap();\n updateTableMap(0, wasmTable.length);\n }\n return functionsInTableMap.get(func2) || 0;\n }, \"getFunctionAddress\");\n var freeTableIndexes = [];\n var getEmptyTableSlot = /* @__PURE__ */ __name(() => {\n if (freeTableIndexes.length) {\n return freeTableIndexes.pop();\n }\n return wasmTable[\"grow\"](1);\n }, \"getEmptyTableSlot\");\n var setWasmTableEntry = /* @__PURE__ */ __name((idx, func2) => {\n wasmTable.set(idx, func2);\n wasmTableMirror[idx] = wasmTable.get(idx);\n }, \"setWasmTableEntry\");\n var addFunction = /* @__PURE__ */ __name((func2, sig) => {\n var rtn = getFunctionAddress(func2);\n if (rtn) {\n return rtn;\n }\n var ret = getEmptyTableSlot();\n try {\n setWasmTableEntry(ret, func2);\n } catch (err2) {\n if (!(err2 instanceof TypeError)) {\n throw err2;\n }\n var wrapped = convertJsFunctionToWasm(func2, sig);\n setWasmTableEntry(ret, wrapped);\n }\n functionsInTableMap.set(func2, ret);\n return ret;\n }, \"addFunction\");\n var updateGOT = /* @__PURE__ */ __name((exports, replace) => {\n for (var symName in exports) {\n if (isInternalSym(symName)) {\n continue;\n }\n var value = exports[symName];\n GOT[symName] ||= new WebAssembly.Global({\n \"value\": \"i32\",\n \"mutable\": true\n });\n if (replace || GOT[symName].value == 0) {\n if (typeof value == \"function\") {\n GOT[symName].value = addFunction(value);\n } else if (typeof value == \"number\") {\n GOT[symName].value = value;\n } else {\n err(`unhandled export type for '${symName}': ${typeof value}`);\n }\n }\n }\n }, \"updateGOT\");\n var relocateExports = /* @__PURE__ */ __name((exports, memoryBase2, replace) => {\n var relocated = {};\n for (var e in exports) {\n var value = exports[e];\n if (typeof value == \"object\") {\n value = value.value;\n }\n if (typeof value == \"number\") {\n value += memoryBase2;\n }\n relocated[e] = value;\n }\n updateGOT(relocated, replace);\n return relocated;\n }, \"relocateExports\");\n var isSymbolDefined = /* @__PURE__ */ __name((symName) => {\n var existing = wasmImports[symName];\n if (!existing || existing.stub) {\n return false;\n }\n return true;\n }, \"isSymbolDefined\");\n var dynCall = /* @__PURE__ */ __name((sig, ptr, args2 = [], promising = false) => {\n var func2 = getWasmTableEntry(ptr);\n var rtn = func2(...args2);\n function convert(rtn2) {\n return rtn2;\n }\n __name(convert, \"convert\");\n return convert(rtn);\n }, \"dynCall\");\n var stackSave = /* @__PURE__ */ __name(() => _emscripten_stack_get_current(), \"stackSave\");\n var stackRestore = /* @__PURE__ */ __name((val) => __emscripten_stack_restore(val), \"stackRestore\");\n var createInvokeFunction = /* @__PURE__ */ __name((sig) => (ptr, ...args2) => {\n var sp = stackSave();\n try {\n return dynCall(sig, ptr, args2);\n } catch (e) {\n stackRestore(sp);\n if (e !== e + 0) throw e;\n _setThrew(1, 0);\n if (sig[0] == \"j\") return 0n;\n }\n }, \"createInvokeFunction\");\n var resolveGlobalSymbol = /* @__PURE__ */ __name((symName, direct = false) => {\n var sym;\n if (isSymbolDefined(symName)) {\n sym = wasmImports[symName];\n } else if (symName.startsWith(\"invoke_\")) {\n sym = wasmImports[symName] = createInvokeFunction(symName.split(\"_\")[1]);\n }\n return {\n sym,\n name: symName\n };\n }, \"resolveGlobalSymbol\");\n var onPostCtors = [];\n var addOnPostCtor = /* @__PURE__ */ __name((cb) => onPostCtors.push(cb), \"addOnPostCtor\");\n var UTF8ToString = /* @__PURE__ */ __name((ptr, maxBytesToRead, ignoreNul) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead, ignoreNul) : \"\", \"UTF8ToString\");\n var loadWebAssemblyModule = /* @__PURE__ */ __name((binary, flags, libName, localScope, handle) => {\n var metadata = getDylinkMetadata(binary);\n currentModuleWeakSymbols = metadata.weakImports;\n function loadModule() {\n var memAlign = Math.pow(2, metadata.memoryAlign);\n var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;\n var tableBase = metadata.tableSize ? wasmTable.length : 0;\n if (handle) {\n HEAP8[handle + 8] = 1;\n LE_HEAP_STORE_U32((handle + 12 >> 2) * 4, memoryBase);\n LE_HEAP_STORE_I32((handle + 16 >> 2) * 4, metadata.memorySize);\n LE_HEAP_STORE_U32((handle + 20 >> 2) * 4, tableBase);\n LE_HEAP_STORE_I32((handle + 24 >> 2) * 4, metadata.tableSize);\n }\n if (metadata.tableSize) {\n wasmTable.grow(metadata.tableSize);\n }\n var moduleExports;\n function resolveSymbol(sym) {\n var resolved = resolveGlobalSymbol(sym).sym;\n if (!resolved && localScope) {\n resolved = localScope[sym];\n }\n if (!resolved) {\n resolved = moduleExports[sym];\n }\n return resolved;\n }\n __name(resolveSymbol, \"resolveSymbol\");\n var proxyHandler = {\n get(stubs, prop) {\n switch (prop) {\n case \"__memory_base\":\n return memoryBase;\n case \"__table_base\":\n return tableBase;\n }\n if (prop in wasmImports && !wasmImports[prop].stub) {\n var res = wasmImports[prop];\n return res;\n }\n if (!(prop in stubs)) {\n var resolved;\n stubs[prop] = (...args2) => {\n resolved ||= resolveSymbol(prop);\n return resolved(...args2);\n };\n }\n return stubs[prop];\n }\n };\n var proxy = new Proxy({}, proxyHandler);\n var info = {\n \"GOT.mem\": new Proxy({}, GOTHandler),\n \"GOT.func\": new Proxy({}, GOTHandler),\n \"env\": proxy,\n \"wasi_snapshot_preview1\": proxy\n };\n function postInstantiation(module, instance) {\n updateTableMap(tableBase, metadata.tableSize);\n moduleExports = relocateExports(instance.exports, memoryBase);\n if (!flags.allowUndefined) {\n reportUndefinedSymbols();\n }\n function addEmAsm(addr, body) {\n var args = [];\n var arity = 0;\n for (; arity < 16; arity++) {\n if (body.indexOf(\"$\" + arity) != -1) {\n args.push(\"$\" + arity);\n } else {\n break;\n }\n }\n args = args.join(\",\");\n var func = `(${args}) => { ${body} };`;\n ASM_CONSTS[start] = eval(func);\n }\n __name(addEmAsm, \"addEmAsm\");\n if (\"__start_em_asm\" in moduleExports) {\n var start = moduleExports[\"__start_em_asm\"];\n var stop = moduleExports[\"__stop_em_asm\"];\n while (start < stop) {\n var jsString = UTF8ToString(start);\n addEmAsm(start, jsString);\n start = HEAPU8.indexOf(0, start) + 1;\n }\n }\n function addEmJs(name, cSig, body) {\n var jsArgs = [];\n cSig = cSig.slice(1, -1);\n if (cSig != \"void\") {\n cSig = cSig.split(\",\");\n for (var i in cSig) {\n var jsArg = cSig[i].split(\" \").pop();\n jsArgs.push(jsArg.replace(\"*\", \"\"));\n }\n }\n var func = `(${jsArgs}) => ${body};`;\n moduleExports[name] = eval(func);\n }\n __name(addEmJs, \"addEmJs\");\n for (var name in moduleExports) {\n if (name.startsWith(\"__em_js__\")) {\n var start = moduleExports[name];\n var jsString = UTF8ToString(start);\n var parts = jsString.split(\"<::>\");\n addEmJs(name.replace(\"__em_js__\", \"\"), parts[0], parts[1]);\n delete moduleExports[name];\n }\n }\n var applyRelocs = moduleExports[\"__wasm_apply_data_relocs\"];\n if (applyRelocs) {\n if (runtimeInitialized) {\n applyRelocs();\n } else {\n __RELOC_FUNCS__.push(applyRelocs);\n }\n }\n var init = moduleExports[\"__wasm_call_ctors\"];\n if (init) {\n if (runtimeInitialized) {\n init();\n } else {\n addOnPostCtor(init);\n }\n }\n return moduleExports;\n }\n __name(postInstantiation, \"postInstantiation\");\n if (flags.loadAsync) {\n return (async () => {\n var instance2;\n if (binary instanceof WebAssembly.Module) {\n instance2 = new WebAssembly.Instance(binary, info);\n } else {\n ({ module: binary, instance: instance2 } = await WebAssembly.instantiate(binary, info));\n }\n return postInstantiation(binary, instance2);\n })();\n }\n var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);\n var instance = new WebAssembly.Instance(module, info);\n return postInstantiation(module, instance);\n }\n __name(loadModule, \"loadModule\");\n flags = {\n ...flags,\n rpath: {\n parentLibPath: libName,\n paths: metadata.runtimePaths\n }\n };\n if (flags.loadAsync) {\n return metadata.neededDynlibs.reduce((chain, dynNeeded) => chain.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule);\n }\n metadata.neededDynlibs.forEach((needed) => loadDynamicLibrary(needed, flags, localScope));\n return loadModule();\n }, \"loadWebAssemblyModule\");\n var mergeLibSymbols = /* @__PURE__ */ __name((exports, libName2) => {\n for (var [sym, exp] of Object.entries(exports)) {\n const setImport = /* @__PURE__ */ __name((target) => {\n if (!isSymbolDefined(target)) {\n wasmImports[target] = exp;\n }\n }, \"setImport\");\n setImport(sym);\n const main_alias = \"__main_argc_argv\";\n if (sym == \"main\") {\n setImport(main_alias);\n }\n if (sym == main_alias) {\n setImport(\"main\");\n }\n }\n }, \"mergeLibSymbols\");\n var asyncLoad = /* @__PURE__ */ __name(async (url) => {\n var arrayBuffer = await readAsync(url);\n return new Uint8Array(arrayBuffer);\n }, \"asyncLoad\");\n function loadDynamicLibrary(libName2, flags2 = {\n global: true,\n nodelete: true\n }, localScope2, handle2) {\n var dso = LDSO.loadedLibsByName[libName2];\n if (dso) {\n if (!flags2.global) {\n if (localScope2) {\n Object.assign(localScope2, dso.exports);\n }\n } else if (!dso.global) {\n dso.global = true;\n mergeLibSymbols(dso.exports, libName2);\n }\n if (flags2.nodelete && dso.refcount !== Infinity) {\n dso.refcount = Infinity;\n }\n dso.refcount++;\n if (handle2) {\n LDSO.loadedLibsByHandle[handle2] = dso;\n }\n return flags2.loadAsync ? Promise.resolve(true) : true;\n }\n dso = newDSO(libName2, handle2, \"loading\");\n dso.refcount = flags2.nodelete ? Infinity : 1;\n dso.global = flags2.global;\n function loadLibData() {\n if (handle2) {\n var data = LE_HEAP_LOAD_U32((handle2 + 28 >> 2) * 4);\n var dataSize = LE_HEAP_LOAD_U32((handle2 + 32 >> 2) * 4);\n if (data && dataSize) {\n var libData = HEAP8.slice(data, data + dataSize);\n return flags2.loadAsync ? Promise.resolve(libData) : libData;\n }\n }\n var libFile = locateFile(libName2);\n if (flags2.loadAsync) {\n return asyncLoad(libFile);\n }\n if (!readBinary) {\n throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`);\n }\n return readBinary(libFile);\n }\n __name(loadLibData, \"loadLibData\");\n function getExports() {\n if (flags2.loadAsync) {\n return loadLibData().then((libData) => loadWebAssemblyModule(libData, flags2, libName2, localScope2, handle2));\n }\n return loadWebAssemblyModule(loadLibData(), flags2, libName2, localScope2, handle2);\n }\n __name(getExports, \"getExports\");\n function moduleLoaded(exports) {\n if (dso.global) {\n mergeLibSymbols(exports, libName2);\n } else if (localScope2) {\n Object.assign(localScope2, exports);\n }\n dso.exports = exports;\n }\n __name(moduleLoaded, \"moduleLoaded\");\n if (flags2.loadAsync) {\n return getExports().then((exports) => {\n moduleLoaded(exports);\n return true;\n });\n }\n moduleLoaded(getExports());\n return true;\n }\n __name(loadDynamicLibrary, \"loadDynamicLibrary\");\n var reportUndefinedSymbols = /* @__PURE__ */ __name(() => {\n for (var [symName, entry] of Object.entries(GOT)) {\n if (entry.value == 0) {\n var value = resolveGlobalSymbol(symName, true).sym;\n if (!value && !entry.required) {\n continue;\n }\n if (typeof value == \"function\") {\n entry.value = addFunction(value, value.sig);\n } else if (typeof value == \"number\") {\n entry.value = value;\n } else {\n throw new Error(`bad export type for '${symName}': ${typeof value}`);\n }\n }\n }\n }, \"reportUndefinedSymbols\");\n var loadDylibs = /* @__PURE__ */ __name(() => {\n if (!dynamicLibraries.length) {\n reportUndefinedSymbols();\n return;\n }\n addRunDependency(\"loadDylibs\");\n dynamicLibraries.reduce((chain, lib) => chain.then(() => loadDynamicLibrary(lib, {\n loadAsync: true,\n global: true,\n nodelete: true,\n allowUndefined: true\n })), Promise.resolve()).then(() => {\n reportUndefinedSymbols();\n removeRunDependency(\"loadDylibs\");\n });\n }, \"loadDylibs\");\n var noExitRuntime = true;\n function setValue(ptr, value, type = \"i8\") {\n if (type.endsWith(\"*\")) type = \"*\";\n switch (type) {\n case \"i1\":\n HEAP8[ptr] = value;\n break;\n case \"i8\":\n HEAP8[ptr] = value;\n break;\n case \"i16\":\n LE_HEAP_STORE_I16((ptr >> 1) * 2, value);\n break;\n case \"i32\":\n LE_HEAP_STORE_I32((ptr >> 2) * 4, value);\n break;\n case \"i64\":\n LE_HEAP_STORE_I64((ptr >> 3) * 8, BigInt(value));\n break;\n case \"float\":\n LE_HEAP_STORE_F32((ptr >> 2) * 4, value);\n break;\n case \"double\":\n LE_HEAP_STORE_F64((ptr >> 3) * 8, value);\n break;\n case \"*\":\n LE_HEAP_STORE_U32((ptr >> 2) * 4, value);\n break;\n default:\n abort(`invalid type for setValue: ${type}`);\n }\n }\n __name(setValue, \"setValue\");\n var ___memory_base = new WebAssembly.Global({\n \"value\": \"i32\",\n \"mutable\": false\n }, 1024);\n var ___stack_high = 78240;\n var ___stack_low = 12704;\n var ___stack_pointer = new WebAssembly.Global({\n \"value\": \"i32\",\n \"mutable\": true\n }, 78240);\n var ___table_base = new WebAssembly.Global({\n \"value\": \"i32\",\n \"mutable\": false\n }, 1);\n var __abort_js = /* @__PURE__ */ __name(() => abort(\"\"), \"__abort_js\");\n __abort_js.sig = \"v\";\n var getHeapMax = /* @__PURE__ */ __name(() => (\n // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate\n // full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side\n // for any code that deals with heap sizes, which would require special\n // casing all heap size related code to treat 0 specially.\n 2147483648\n ), \"getHeapMax\");\n var growMemory = /* @__PURE__ */ __name((size) => {\n var oldHeapSize = wasmMemory.buffer.byteLength;\n var pages = (size - oldHeapSize + 65535) / 65536 | 0;\n try {\n wasmMemory.grow(pages);\n updateMemoryViews();\n return 1;\n } catch (e) {\n }\n }, \"growMemory\");\n var _emscripten_resize_heap = /* @__PURE__ */ __name((requestedSize) => {\n var oldSize = HEAPU8.length;\n requestedSize >>>= 0;\n var maxHeapSize = getHeapMax();\n if (requestedSize > maxHeapSize) {\n return false;\n }\n for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {\n var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);\n overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);\n var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536));\n var replacement = growMemory(newSize);\n if (replacement) {\n return true;\n }\n }\n return false;\n }, \"_emscripten_resize_heap\");\n _emscripten_resize_heap.sig = \"ip\";\n var _fd_close = /* @__PURE__ */ __name((fd) => 52, \"_fd_close\");\n _fd_close.sig = \"ii\";\n var INT53_MAX = 9007199254740992;\n var INT53_MIN = -9007199254740992;\n var bigintToI53Checked = /* @__PURE__ */ __name((num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num), \"bigintToI53Checked\");\n function _fd_seek(fd, offset, whence, newOffset) {\n offset = bigintToI53Checked(offset);\n return 70;\n }\n __name(_fd_seek, \"_fd_seek\");\n _fd_seek.sig = \"iijip\";\n var printCharBuffers = [null, [], []];\n var printChar = /* @__PURE__ */ __name((stream, curr) => {\n var buffer = printCharBuffers[stream];\n if (curr === 0 || curr === 10) {\n (stream === 1 ? out : err)(UTF8ArrayToString(buffer));\n buffer.length = 0;\n } else {\n buffer.push(curr);\n }\n }, \"printChar\");\n var flush_NO_FILESYSTEM = /* @__PURE__ */ __name(() => {\n if (printCharBuffers[1].length) printChar(1, 10);\n if (printCharBuffers[2].length) printChar(2, 10);\n }, \"flush_NO_FILESYSTEM\");\n var SYSCALLS = {\n varargs: void 0,\n getStr(ptr) {\n var ret = UTF8ToString(ptr);\n return ret;\n }\n };\n var _fd_write = /* @__PURE__ */ __name((fd, iov, iovcnt, pnum) => {\n var num = 0;\n for (var i2 = 0; i2 < iovcnt; i2++) {\n var ptr = LE_HEAP_LOAD_U32((iov >> 2) * 4);\n var len = LE_HEAP_LOAD_U32((iov + 4 >> 2) * 4);\n iov += 8;\n for (var j = 0; j < len; j++) {\n printChar(fd, HEAPU8[ptr + j]);\n }\n num += len;\n }\n LE_HEAP_STORE_U32((pnum >> 2) * 4, num);\n return 0;\n }, \"_fd_write\");\n _fd_write.sig = \"iippp\";\n function _tree_sitter_log_callback(isLexMessage, messageAddress) {\n if (Module.currentLogCallback) {\n const message = UTF8ToString(messageAddress);\n Module.currentLogCallback(message, isLexMessage !== 0);\n }\n }\n __name(_tree_sitter_log_callback, \"_tree_sitter_log_callback\");\n function _tree_sitter_parse_callback(inputBufferAddress, index, row, column, lengthAddress) {\n const INPUT_BUFFER_SIZE = 10 * 1024;\n const string = Module.currentParseCallback(index, {\n row,\n column\n });\n if (typeof string === \"string\") {\n setValue(lengthAddress, string.length, \"i32\");\n stringToUTF16(string, inputBufferAddress, INPUT_BUFFER_SIZE);\n } else {\n setValue(lengthAddress, 0, \"i32\");\n }\n }\n __name(_tree_sitter_parse_callback, \"_tree_sitter_parse_callback\");\n function _tree_sitter_progress_callback(currentOffset, hasError) {\n if (Module.currentProgressCallback) {\n return Module.currentProgressCallback({\n currentOffset,\n hasError\n });\n }\n return false;\n }\n __name(_tree_sitter_progress_callback, \"_tree_sitter_progress_callback\");\n function _tree_sitter_query_progress_callback(currentOffset) {\n if (Module.currentQueryProgressCallback) {\n return Module.currentQueryProgressCallback({\n currentOffset\n });\n }\n return false;\n }\n __name(_tree_sitter_query_progress_callback, \"_tree_sitter_query_progress_callback\");\n var runtimeKeepaliveCounter = 0;\n var keepRuntimeAlive = /* @__PURE__ */ __name(() => noExitRuntime || runtimeKeepaliveCounter > 0, \"keepRuntimeAlive\");\n var _proc_exit = /* @__PURE__ */ __name((code) => {\n EXITSTATUS = code;\n if (!keepRuntimeAlive()) {\n Module[\"onExit\"]?.(code);\n ABORT = true;\n }\n quit_(code, new ExitStatus(code));\n }, \"_proc_exit\");\n _proc_exit.sig = \"vi\";\n var exitJS = /* @__PURE__ */ __name((status, implicit) => {\n EXITSTATUS = status;\n _proc_exit(status);\n }, \"exitJS\");\n var handleException = /* @__PURE__ */ __name((e) => {\n if (e instanceof ExitStatus || e == \"unwind\") {\n return EXITSTATUS;\n }\n quit_(1, e);\n }, \"handleException\");\n var lengthBytesUTF8 = /* @__PURE__ */ __name((str) => {\n var len = 0;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var c = str.charCodeAt(i2);\n if (c <= 127) {\n len++;\n } else if (c <= 2047) {\n len += 2;\n } else if (c >= 55296 && c <= 57343) {\n len += 4;\n ++i2;\n } else {\n len += 3;\n }\n }\n return len;\n }, \"lengthBytesUTF8\");\n var stringToUTF8Array = /* @__PURE__ */ __name((str, heap, outIdx, maxBytesToWrite) => {\n if (!(maxBytesToWrite > 0)) return 0;\n var startIdx = outIdx;\n var endIdx = outIdx + maxBytesToWrite - 1;\n for (var i2 = 0; i2 < str.length; ++i2) {\n var u = str.codePointAt(i2);\n if (u <= 127) {\n if (outIdx >= endIdx) break;\n heap[outIdx++] = u;\n } else if (u <= 2047) {\n if (outIdx + 1 >= endIdx) break;\n heap[outIdx++] = 192 | u >> 6;\n heap[outIdx++] = 128 | u & 63;\n } else if (u <= 65535) {\n if (outIdx + 2 >= endIdx) break;\n heap[outIdx++] = 224 | u >> 12;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n } else {\n if (outIdx + 3 >= endIdx) break;\n heap[outIdx++] = 240 | u >> 18;\n heap[outIdx++] = 128 | u >> 12 & 63;\n heap[outIdx++] = 128 | u >> 6 & 63;\n heap[outIdx++] = 128 | u & 63;\n i2++;\n }\n }\n heap[outIdx] = 0;\n return outIdx - startIdx;\n }, \"stringToUTF8Array\");\n var stringToUTF8 = /* @__PURE__ */ __name((str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite), \"stringToUTF8\");\n var stackAlloc = /* @__PURE__ */ __name((sz) => __emscripten_stack_alloc(sz), \"stackAlloc\");\n var stringToUTF8OnStack = /* @__PURE__ */ __name((str) => {\n var size = lengthBytesUTF8(str) + 1;\n var ret = stackAlloc(size);\n stringToUTF8(str, ret, size);\n return ret;\n }, \"stringToUTF8OnStack\");\n var AsciiToString = /* @__PURE__ */ __name((ptr) => {\n var str = \"\";\n while (1) {\n var ch = HEAPU8[ptr++];\n if (!ch) return str;\n str += String.fromCharCode(ch);\n }\n }, \"AsciiToString\");\n var stringToUTF16 = /* @__PURE__ */ __name((str, outPtr, maxBytesToWrite) => {\n maxBytesToWrite ??= 2147483647;\n if (maxBytesToWrite < 2) return 0;\n maxBytesToWrite -= 2;\n var startPtr = outPtr;\n var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length;\n for (var i2 = 0; i2 < numCharsToWrite; ++i2) {\n var codeUnit = str.charCodeAt(i2);\n LE_HEAP_STORE_I16((outPtr >> 1) * 2, codeUnit);\n outPtr += 2;\n }\n LE_HEAP_STORE_I16((outPtr >> 1) * 2, 0);\n return outPtr - startPtr;\n }, \"stringToUTF16\");\n var LE_HEAP_STORE_I64 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setBigInt64(byteOffset, value, true), \"LE_HEAP_STORE_I64\");\n LE_ATOMICS_NATIVE_BYTE_ORDER = new Int8Array(new Int16Array([1]).buffer)[0] === 1 ? [\n /* little endian */\n ((x) => x),\n ((x) => x),\n void 0,\n ((x) => x)\n ] : [\n /* big endian */\n ((x) => x),\n ((x) => ((x & 65280) << 8 | (x & 255) << 24) >> 16),\n void 0,\n ((x) => x >> 24 & 255 | x >> 8 & 65280 | (x & 65280) << 8 | (x & 255) << 24)\n ];\n function LE_HEAP_UPDATE() {\n HEAPU16.unsigned = ((x) => x & 65535);\n HEAPU32.unsigned = ((x) => x >>> 0);\n }\n __name(LE_HEAP_UPDATE, \"LE_HEAP_UPDATE\");\n {\n initMemory();\n if (Module[\"noExitRuntime\"]) noExitRuntime = Module[\"noExitRuntime\"];\n if (Module[\"print\"]) out = Module[\"print\"];\n if (Module[\"printErr\"]) err = Module[\"printErr\"];\n if (Module[\"dynamicLibraries\"]) dynamicLibraries = Module[\"dynamicLibraries\"];\n if (Module[\"wasmBinary\"]) wasmBinary = Module[\"wasmBinary\"];\n if (Module[\"arguments\"]) arguments_ = Module[\"arguments\"];\n if (Module[\"thisProgram\"]) thisProgram = Module[\"thisProgram\"];\n }\n Module[\"setValue\"] = setValue;\n Module[\"getValue\"] = getValue;\n Module[\"UTF8ToString\"] = UTF8ToString;\n Module[\"stringToUTF8\"] = stringToUTF8;\n Module[\"lengthBytesUTF8\"] = lengthBytesUTF8;\n Module[\"AsciiToString\"] = AsciiToString;\n Module[\"stringToUTF16\"] = stringToUTF16;\n Module[\"loadWebAssemblyModule\"] = loadWebAssemblyModule;\n Module[\"LE_HEAP_STORE_I64\"] = LE_HEAP_STORE_I64;\n var ASM_CONSTS = {};\n var _malloc, _calloc, _realloc, _free, _memcmp, _ts_language_symbol_count, _ts_language_state_count, _ts_language_abi_version, _ts_language_name, _ts_language_field_count, _ts_language_next_state, _ts_language_symbol_name, _ts_language_symbol_for_name, _strncmp, _ts_language_symbol_type, _ts_language_field_name_for_id, _ts_lookahead_iterator_new, _ts_lookahead_iterator_delete, _ts_lookahead_iterator_reset_state, _ts_lookahead_iterator_reset, _ts_lookahead_iterator_next, _ts_lookahead_iterator_current_symbol, _ts_parser_delete, _ts_parser_reset, _ts_parser_set_language, _ts_parser_set_included_ranges, _ts_query_new, _ts_query_delete, _iswspace, _iswalnum, _ts_query_pattern_count, _ts_query_capture_count, _ts_query_string_count, _ts_query_capture_name_for_id, _ts_query_capture_quantifier_for_id, _ts_query_string_value_for_id, _ts_query_predicates_for_pattern, _ts_query_start_byte_for_pattern, _ts_query_end_byte_for_pattern, _ts_query_is_pattern_rooted, _ts_query_is_pattern_non_local, _ts_query_is_pattern_guaranteed_at_step, _ts_query_disable_capture, _ts_query_disable_pattern, _ts_tree_copy, _ts_tree_delete, _ts_init, _ts_parser_new_wasm, _ts_parser_enable_logger_wasm, _ts_parser_parse_wasm, _ts_parser_included_ranges_wasm, _ts_language_type_is_named_wasm, _ts_language_type_is_visible_wasm, _ts_language_metadata_wasm, _ts_language_supertypes_wasm, _ts_language_subtypes_wasm, _ts_tree_root_node_wasm, _ts_tree_root_node_with_offset_wasm, _ts_tree_edit_wasm, _ts_tree_included_ranges_wasm, _ts_tree_get_changed_ranges_wasm, _ts_tree_cursor_new_wasm, _ts_tree_cursor_copy_wasm, _ts_tree_cursor_delete_wasm, _ts_tree_cursor_reset_wasm, _ts_tree_cursor_reset_to_wasm, _ts_tree_cursor_goto_first_child_wasm, _ts_tree_cursor_goto_last_child_wasm, _ts_tree_cursor_goto_first_child_for_index_wasm, _ts_tree_cursor_goto_first_child_for_position_wasm, _ts_tree_cursor_goto_next_sibling_wasm, _ts_tree_cursor_goto_previous_sibling_wasm, _ts_tree_cursor_goto_descendant_wasm, _ts_tree_cursor_goto_parent_wasm, _ts_tree_cursor_current_node_type_id_wasm, _ts_tree_cursor_current_node_state_id_wasm, _ts_tree_cursor_current_node_is_named_wasm, _ts_tree_cursor_current_node_is_missing_wasm, _ts_tree_cursor_current_node_id_wasm, _ts_tree_cursor_start_position_wasm, _ts_tree_cursor_end_position_wasm, _ts_tree_cursor_start_index_wasm, _ts_tree_cursor_end_index_wasm, _ts_tree_cursor_current_field_id_wasm, _ts_tree_cursor_current_depth_wasm, _ts_tree_cursor_current_descendant_index_wasm, _ts_tree_cursor_current_node_wasm, _ts_node_symbol_wasm, _ts_node_field_name_for_child_wasm, _ts_node_field_name_for_named_child_wasm, _ts_node_children_by_field_id_wasm, _ts_node_first_child_for_byte_wasm, _ts_node_first_named_child_for_byte_wasm, _ts_node_grammar_symbol_wasm, _ts_node_child_count_wasm, _ts_node_named_child_count_wasm, _ts_node_child_wasm, _ts_node_named_child_wasm, _ts_node_child_by_field_id_wasm, _ts_node_next_sibling_wasm, _ts_node_prev_sibling_wasm, _ts_node_next_named_sibling_wasm, _ts_node_prev_named_sibling_wasm, _ts_node_descendant_count_wasm, _ts_node_parent_wasm, _ts_node_child_with_descendant_wasm, _ts_node_descendant_for_index_wasm, _ts_node_named_descendant_for_index_wasm, _ts_node_descendant_for_position_wasm, _ts_node_named_descendant_for_position_wasm, _ts_node_start_point_wasm, _ts_node_end_point_wasm, _ts_node_start_index_wasm, _ts_node_end_index_wasm, _ts_node_to_string_wasm, _ts_node_children_wasm, _ts_node_named_children_wasm, _ts_node_descendants_of_type_wasm, _ts_node_is_named_wasm, _ts_node_has_changes_wasm, _ts_node_has_error_wasm, _ts_node_is_error_wasm, _ts_node_is_missing_wasm, _ts_node_is_extra_wasm, _ts_node_parse_state_wasm, _ts_node_next_parse_state_wasm, _ts_query_matches_wasm, _ts_query_captures_wasm, _memset, _memcpy, _memmove, _iswalpha, _iswblank, _iswdigit, _iswlower, _iswupper, _iswxdigit, _memchr, _strlen, _strcmp, _strncat, _strncpy, _towlower, _towupper, _setThrew, __emscripten_stack_restore, __emscripten_stack_alloc, _emscripten_stack_get_current, ___wasm_apply_data_relocs;\n function assignWasmExports(wasmExports2) {\n Module[\"_malloc\"] = _malloc = wasmExports2[\"malloc\"];\n Module[\"_calloc\"] = _calloc = wasmExports2[\"calloc\"];\n Module[\"_realloc\"] = _realloc = wasmExports2[\"realloc\"];\n Module[\"_free\"] = _free = wasmExports2[\"free\"];\n Module[\"_memcmp\"] = _memcmp = wasmExports2[\"memcmp\"];\n Module[\"_ts_language_symbol_count\"] = _ts_language_symbol_count = wasmExports2[\"ts_language_symbol_count\"];\n Module[\"_ts_language_state_count\"] = _ts_language_state_count = wasmExports2[\"ts_language_state_count\"];\n Module[\"_ts_language_abi_version\"] = _ts_language_abi_version = wasmExports2[\"ts_language_abi_version\"];\n Module[\"_ts_language_name\"] = _ts_language_name = wasmExports2[\"ts_language_name\"];\n Module[\"_ts_language_field_count\"] = _ts_language_field_count = wasmExports2[\"ts_language_field_count\"];\n Module[\"_ts_language_next_state\"] = _ts_language_next_state = wasmExports2[\"ts_language_next_state\"];\n Module[\"_ts_language_symbol_name\"] = _ts_language_symbol_name = wasmExports2[\"ts_language_symbol_name\"];\n Module[\"_ts_language_symbol_for_name\"] = _ts_language_symbol_for_name = wasmExports2[\"ts_language_symbol_for_name\"];\n Module[\"_strncmp\"] = _strncmp = wasmExports2[\"strncmp\"];\n Module[\"_ts_language_symbol_type\"] = _ts_language_symbol_type = wasmExports2[\"ts_language_symbol_type\"];\n Module[\"_ts_language_field_name_for_id\"] = _ts_language_field_name_for_id = wasmExports2[\"ts_language_field_name_for_id\"];\n Module[\"_ts_lookahead_iterator_new\"] = _ts_lookahead_iterator_new = wasmExports2[\"ts_lookahead_iterator_new\"];\n Module[\"_ts_lookahead_iterator_delete\"] = _ts_lookahead_iterator_delete = wasmExports2[\"ts_lookahead_iterator_delete\"];\n Module[\"_ts_lookahead_iterator_reset_state\"] = _ts_lookahead_iterator_reset_state = wasmExports2[\"ts_lookahead_iterator_reset_state\"];\n Module[\"_ts_lookahead_iterator_reset\"] = _ts_lookahead_iterator_reset = wasmExports2[\"ts_lookahead_iterator_reset\"];\n Module[\"_ts_lookahead_iterator_next\"] = _ts_lookahead_iterator_next = wasmExports2[\"ts_lookahead_iterator_next\"];\n Module[\"_ts_lookahead_iterator_current_symbol\"] = _ts_lookahead_iterator_current_symbol = wasmExports2[\"ts_lookahead_iterator_current_symbol\"];\n Module[\"_ts_parser_delete\"] = _ts_parser_delete = wasmExports2[\"ts_parser_delete\"];\n Module[\"_ts_parser_reset\"] = _ts_parser_reset = wasmExports2[\"ts_parser_reset\"];\n Module[\"_ts_parser_set_language\"] = _ts_parser_set_language = wasmExports2[\"ts_parser_set_language\"];\n Module[\"_ts_parser_set_included_ranges\"] = _ts_parser_set_included_ranges = wasmExports2[\"ts_parser_set_included_ranges\"];\n Module[\"_ts_query_new\"] = _ts_query_new = wasmExports2[\"ts_query_new\"];\n Module[\"_ts_query_delete\"] = _ts_query_delete = wasmExports2[\"ts_query_delete\"];\n Module[\"_iswspace\"] = _iswspace = wasmExports2[\"iswspace\"];\n Module[\"_iswalnum\"] = _iswalnum = wasmExports2[\"iswalnum\"];\n Module[\"_ts_query_pattern_count\"] = _ts_query_pattern_count = wasmExports2[\"ts_query_pattern_count\"];\n Module[\"_ts_query_capture_count\"] = _ts_query_capture_count = wasmExports2[\"ts_query_capture_count\"];\n Module[\"_ts_query_string_count\"] = _ts_query_string_count = wasmExports2[\"ts_query_string_count\"];\n Module[\"_ts_query_capture_name_for_id\"] = _ts_query_capture_name_for_id = wasmExports2[\"ts_query_capture_name_for_id\"];\n Module[\"_ts_query_capture_quantifier_for_id\"] = _ts_query_capture_quantifier_for_id = wasmExports2[\"ts_query_capture_quantifier_for_id\"];\n Module[\"_ts_query_string_value_for_id\"] = _ts_query_string_value_for_id = wasmExports2[\"ts_query_string_value_for_id\"];\n Module[\"_ts_query_predicates_for_pattern\"] = _ts_query_predicates_for_pattern = wasmExports2[\"ts_query_predicates_for_pattern\"];\n Module[\"_ts_query_start_byte_for_pattern\"] = _ts_query_start_byte_for_pattern = wasmExports2[\"ts_query_start_byte_for_pattern\"];\n Module[\"_ts_query_end_byte_for_pattern\"] = _ts_query_end_byte_for_pattern = wasmExports2[\"ts_query_end_byte_for_pattern\"];\n Module[\"_ts_query_is_pattern_rooted\"] = _ts_query_is_pattern_rooted = wasmExports2[\"ts_query_is_pattern_rooted\"];\n Module[\"_ts_query_is_pattern_non_local\"] = _ts_query_is_pattern_non_local = wasmExports2[\"ts_query_is_pattern_non_local\"];\n Module[\"_ts_query_is_pattern_guaranteed_at_step\"] = _ts_query_is_pattern_guaranteed_at_step = wasmExports2[\"ts_query_is_pattern_guaranteed_at_step\"];\n Module[\"_ts_query_disable_capture\"] = _ts_query_disable_capture = wasmExports2[\"ts_query_disable_capture\"];\n Module[\"_ts_query_disable_pattern\"] = _ts_query_disable_pattern = wasmExports2[\"ts_query_disable_pattern\"];\n Module[\"_ts_tree_copy\"] = _ts_tree_copy = wasmExports2[\"ts_tree_copy\"];\n Module[\"_ts_tree_delete\"] = _ts_tree_delete = wasmExports2[\"ts_tree_delete\"];\n Module[\"_ts_init\"] = _ts_init = wasmExports2[\"ts_init\"];\n Module[\"_ts_parser_new_wasm\"] = _ts_parser_new_wasm = wasmExports2[\"ts_parser_new_wasm\"];\n Module[\"_ts_parser_enable_logger_wasm\"] = _ts_parser_enable_logger_wasm = wasmExports2[\"ts_parser_enable_logger_wasm\"];\n Module[\"_ts_parser_parse_wasm\"] = _ts_parser_parse_wasm = wasmExports2[\"ts_parser_parse_wasm\"];\n Module[\"_ts_parser_included_ranges_wasm\"] = _ts_parser_included_ranges_wasm = wasmExports2[\"ts_parser_included_ranges_wasm\"];\n Module[\"_ts_language_type_is_named_wasm\"] = _ts_language_type_is_named_wasm = wasmExports2[\"ts_language_type_is_named_wasm\"];\n Module[\"_ts_language_type_is_visible_wasm\"] = _ts_language_type_is_visible_wasm = wasmExports2[\"ts_language_type_is_visible_wasm\"];\n Module[\"_ts_language_metadata_wasm\"] = _ts_language_metadata_wasm = wasmExports2[\"ts_language_metadata_wasm\"];\n Module[\"_ts_language_supertypes_wasm\"] = _ts_language_supertypes_wasm = wasmExports2[\"ts_language_supertypes_wasm\"];\n Module[\"_ts_language_subtypes_wasm\"] = _ts_language_subtypes_wasm = wasmExports2[\"ts_language_subtypes_wasm\"];\n Module[\"_ts_tree_root_node_wasm\"] = _ts_tree_root_node_wasm = wasmExports2[\"ts_tree_root_node_wasm\"];\n Module[\"_ts_tree_root_node_with_offset_wasm\"] = _ts_tree_root_node_with_offset_wasm = wasmExports2[\"ts_tree_root_node_with_offset_wasm\"];\n Module[\"_ts_tree_edit_wasm\"] = _ts_tree_edit_wasm = wasmExports2[\"ts_tree_edit_wasm\"];\n Module[\"_ts_tree_included_ranges_wasm\"] = _ts_tree_included_ranges_wasm = wasmExports2[\"ts_tree_included_ranges_wasm\"];\n Module[\"_ts_tree_get_changed_ranges_wasm\"] = _ts_tree_get_changed_ranges_wasm = wasmExports2[\"ts_tree_get_changed_ranges_wasm\"];\n Module[\"_ts_tree_cursor_new_wasm\"] = _ts_tree_cursor_new_wasm = wasmExports2[\"ts_tree_cursor_new_wasm\"];\n Module[\"_ts_tree_cursor_copy_wasm\"] = _ts_tree_cursor_copy_wasm = wasmExports2[\"ts_tree_cursor_copy_wasm\"];\n Module[\"_ts_tree_cursor_delete_wasm\"] = _ts_tree_cursor_delete_wasm = wasmExports2[\"ts_tree_cursor_delete_wasm\"];\n Module[\"_ts_tree_cursor_reset_wasm\"] = _ts_tree_cursor_reset_wasm = wasmExports2[\"ts_tree_cursor_reset_wasm\"];\n Module[\"_ts_tree_cursor_reset_to_wasm\"] = _ts_tree_cursor_reset_to_wasm = wasmExports2[\"ts_tree_cursor_reset_to_wasm\"];\n Module[\"_ts_tree_cursor_goto_first_child_wasm\"] = _ts_tree_cursor_goto_first_child_wasm = wasmExports2[\"ts_tree_cursor_goto_first_child_wasm\"];\n Module[\"_ts_tree_cursor_goto_last_child_wasm\"] = _ts_tree_cursor_goto_last_child_wasm = wasmExports2[\"ts_tree_cursor_goto_last_child_wasm\"];\n Module[\"_ts_tree_cursor_goto_first_child_for_index_wasm\"] = _ts_tree_cursor_goto_first_child_for_index_wasm = wasmExports2[\"ts_tree_cursor_goto_first_child_for_index_wasm\"];\n Module[\"_ts_tree_cursor_goto_first_child_for_position_wasm\"] = _ts_tree_cursor_goto_first_child_for_position_wasm = wasmExports2[\"ts_tree_cursor_goto_first_child_for_position_wasm\"];\n Module[\"_ts_tree_cursor_goto_next_sibling_wasm\"] = _ts_tree_cursor_goto_next_sibling_wasm = wasmExports2[\"ts_tree_cursor_goto_next_sibling_wasm\"];\n Module[\"_ts_tree_cursor_goto_previous_sibling_wasm\"] = _ts_tree_cursor_goto_previous_sibling_wasm = wasmExports2[\"ts_tree_cursor_goto_previous_sibling_wasm\"];\n Module[\"_ts_tree_cursor_goto_descendant_wasm\"] = _ts_tree_cursor_goto_descendant_wasm = wasmExports2[\"ts_tree_cursor_goto_descendant_wasm\"];\n Module[\"_ts_tree_cursor_goto_parent_wasm\"] = _ts_tree_cursor_goto_parent_wasm = wasmExports2[\"ts_tree_cursor_goto_parent_wasm\"];\n Module[\"_ts_tree_cursor_current_node_type_id_wasm\"] = _ts_tree_cursor_current_node_type_id_wasm = wasmExports2[\"ts_tree_cursor_current_node_type_id_wasm\"];\n Module[\"_ts_tree_cursor_current_node_state_id_wasm\"] = _ts_tree_cursor_current_node_state_id_wasm = wasmExports2[\"ts_tree_cursor_current_node_state_id_wasm\"];\n Module[\"_ts_tree_cursor_current_node_is_named_wasm\"] = _ts_tree_cursor_current_node_is_named_wasm = wasmExports2[\"ts_tree_cursor_current_node_is_named_wasm\"];\n Module[\"_ts_tree_cursor_current_node_is_missing_wasm\"] = _ts_tree_cursor_current_node_is_missing_wasm = wasmExports2[\"ts_tree_cursor_current_node_is_missing_wasm\"];\n Module[\"_ts_tree_cursor_current_node_id_wasm\"] = _ts_tree_cursor_current_node_id_wasm = wasmExports2[\"ts_tree_cursor_current_node_id_wasm\"];\n Module[\"_ts_tree_cursor_start_position_wasm\"] = _ts_tree_cursor_start_position_wasm = wasmExports2[\"ts_tree_cursor_start_position_wasm\"];\n Module[\"_ts_tree_cursor_end_position_wasm\"] = _ts_tree_cursor_end_position_wasm = wasmExports2[\"ts_tree_cursor_end_position_wasm\"];\n Module[\"_ts_tree_cursor_start_index_wasm\"] = _ts_tree_cursor_start_index_wasm = wasmExports2[\"ts_tree_cursor_start_index_wasm\"];\n Module[\"_ts_tree_cursor_end_index_wasm\"] = _ts_tree_cursor_end_index_wasm = wasmExports2[\"ts_tree_cursor_end_index_wasm\"];\n Module[\"_ts_tree_cursor_current_field_id_wasm\"] = _ts_tree_cursor_current_field_id_wasm = wasmExports2[\"ts_tree_cursor_current_field_id_wasm\"];\n Module[\"_ts_tree_cursor_current_depth_wasm\"] = _ts_tree_cursor_current_depth_wasm = wasmExports2[\"ts_tree_cursor_current_depth_wasm\"];\n Module[\"_ts_tree_cursor_current_descendant_index_wasm\"] = _ts_tree_cursor_current_descendant_index_wasm = wasmExports2[\"ts_tree_cursor_current_descendant_index_wasm\"];\n Module[\"_ts_tree_cursor_current_node_wasm\"] = _ts_tree_cursor_current_node_wasm = wasmExports2[\"ts_tree_cursor_current_node_wasm\"];\n Module[\"_ts_node_symbol_wasm\"] = _ts_node_symbol_wasm = wasmExports2[\"ts_node_symbol_wasm\"];\n Module[\"_ts_node_field_name_for_child_wasm\"] = _ts_node_field_name_for_child_wasm = wasmExports2[\"ts_node_field_name_for_child_wasm\"];\n Module[\"_ts_node_field_name_for_named_child_wasm\"] = _ts_node_field_name_for_named_child_wasm = wasmExports2[\"ts_node_field_name_for_named_child_wasm\"];\n Module[\"_ts_node_children_by_field_id_wasm\"] = _ts_node_children_by_field_id_wasm = wasmExports2[\"ts_node_children_by_field_id_wasm\"];\n Module[\"_ts_node_first_child_for_byte_wasm\"] = _ts_node_first_child_for_byte_wasm = wasmExports2[\"ts_node_first_child_for_byte_wasm\"];\n Module[\"_ts_node_first_named_child_for_byte_wasm\"] = _ts_node_first_named_child_for_byte_wasm = wasmExports2[\"ts_node_first_named_child_for_byte_wasm\"];\n Module[\"_ts_node_grammar_symbol_wasm\"] = _ts_node_grammar_symbol_wasm = wasmExports2[\"ts_node_grammar_symbol_wasm\"];\n Module[\"_ts_node_child_count_wasm\"] = _ts_node_child_count_wasm = wasmExports2[\"ts_node_child_count_wasm\"];\n Module[\"_ts_node_named_child_count_wasm\"] = _ts_node_named_child_count_wasm = wasmExports2[\"ts_node_named_child_count_wasm\"];\n Module[\"_ts_node_child_wasm\"] = _ts_node_child_wasm = wasmExports2[\"ts_node_child_wasm\"];\n Module[\"_ts_node_named_child_wasm\"] = _ts_node_named_child_wasm = wasmExports2[\"ts_node_named_child_wasm\"];\n Module[\"_ts_node_child_by_field_id_wasm\"] = _ts_node_child_by_field_id_wasm = wasmExports2[\"ts_node_child_by_field_id_wasm\"];\n Module[\"_ts_node_next_sibling_wasm\"] = _ts_node_next_sibling_wasm = wasmExports2[\"ts_node_next_sibling_wasm\"];\n Module[\"_ts_node_prev_sibling_wasm\"] = _ts_node_prev_sibling_wasm = wasmExports2[\"ts_node_prev_sibling_wasm\"];\n Module[\"_ts_node_next_named_sibling_wasm\"] = _ts_node_next_named_sibling_wasm = wasmExports2[\"ts_node_next_named_sibling_wasm\"];\n Module[\"_ts_node_prev_named_sibling_wasm\"] = _ts_node_prev_named_sibling_wasm = wasmExports2[\"ts_node_prev_named_sibling_wasm\"];\n Module[\"_ts_node_descendant_count_wasm\"] = _ts_node_descendant_count_wasm = wasmExports2[\"ts_node_descendant_count_wasm\"];\n Module[\"_ts_node_parent_wasm\"] = _ts_node_parent_wasm = wasmExports2[\"ts_node_parent_wasm\"];\n Module[\"_ts_node_child_with_descendant_wasm\"] = _ts_node_child_with_descendant_wasm = wasmExports2[\"ts_node_child_with_descendant_wasm\"];\n Module[\"_ts_node_descendant_for_index_wasm\"] = _ts_node_descendant_for_index_wasm = wasmExports2[\"ts_node_descendant_for_index_wasm\"];\n Module[\"_ts_node_named_descendant_for_index_wasm\"] = _ts_node_named_descendant_for_index_wasm = wasmExports2[\"ts_node_named_descendant_for_index_wasm\"];\n Module[\"_ts_node_descendant_for_position_wasm\"] = _ts_node_descendant_for_position_wasm = wasmExports2[\"ts_node_descendant_for_position_wasm\"];\n Module[\"_ts_node_named_descendant_for_position_wasm\"] = _ts_node_named_descendant_for_position_wasm = wasmExports2[\"ts_node_named_descendant_for_position_wasm\"];\n Module[\"_ts_node_start_point_wasm\"] = _ts_node_start_point_wasm = wasmExports2[\"ts_node_start_point_wasm\"];\n Module[\"_ts_node_end_point_wasm\"] = _ts_node_end_point_wasm = wasmExports2[\"ts_node_end_point_wasm\"];\n Module[\"_ts_node_start_index_wasm\"] = _ts_node_start_index_wasm = wasmExports2[\"ts_node_start_index_wasm\"];\n Module[\"_ts_node_end_index_wasm\"] = _ts_node_end_index_wasm = wasmExports2[\"ts_node_end_index_wasm\"];\n Module[\"_ts_node_to_string_wasm\"] = _ts_node_to_string_wasm = wasmExports2[\"ts_node_to_string_wasm\"];\n Module[\"_ts_node_children_wasm\"] = _ts_node_children_wasm = wasmExports2[\"ts_node_children_wasm\"];\n Module[\"_ts_node_named_children_wasm\"] = _ts_node_named_children_wasm = wasmExports2[\"ts_node_named_children_wasm\"];\n Module[\"_ts_node_descendants_of_type_wasm\"] = _ts_node_descendants_of_type_wasm = wasmExports2[\"ts_node_descendants_of_type_wasm\"];\n Module[\"_ts_node_is_named_wasm\"] = _ts_node_is_named_wasm = wasmExports2[\"ts_node_is_named_wasm\"];\n Module[\"_ts_node_has_changes_wasm\"] = _ts_node_has_changes_wasm = wasmExports2[\"ts_node_has_changes_wasm\"];\n Module[\"_ts_node_has_error_wasm\"] = _ts_node_has_error_wasm = wasmExports2[\"ts_node_has_error_wasm\"];\n Module[\"_ts_node_is_error_wasm\"] = _ts_node_is_error_wasm = wasmExports2[\"ts_node_is_error_wasm\"];\n Module[\"_ts_node_is_missing_wasm\"] = _ts_node_is_missing_wasm = wasmExports2[\"ts_node_is_missing_wasm\"];\n Module[\"_ts_node_is_extra_wasm\"] = _ts_node_is_extra_wasm = wasmExports2[\"ts_node_is_extra_wasm\"];\n Module[\"_ts_node_parse_state_wasm\"] = _ts_node_parse_state_wasm = wasmExports2[\"ts_node_parse_state_wasm\"];\n Module[\"_ts_node_next_parse_state_wasm\"] = _ts_node_next_parse_state_wasm = wasmExports2[\"ts_node_next_parse_state_wasm\"];\n Module[\"_ts_query_matches_wasm\"] = _ts_query_matches_wasm = wasmExports2[\"ts_query_matches_wasm\"];\n Module[\"_ts_query_captures_wasm\"] = _ts_query_captures_wasm = wasmExports2[\"ts_query_captures_wasm\"];\n Module[\"_memset\"] = _memset = wasmExports2[\"memset\"];\n Module[\"_memcpy\"] = _memcpy = wasmExports2[\"memcpy\"];\n Module[\"_memmove\"] = _memmove = wasmExports2[\"memmove\"];\n Module[\"_iswalpha\"] = _iswalpha = wasmExports2[\"iswalpha\"];\n Module[\"_iswblank\"] = _iswblank = wasmExports2[\"iswblank\"];\n Module[\"_iswdigit\"] = _iswdigit = wasmExports2[\"iswdigit\"];\n Module[\"_iswlower\"] = _iswlower = wasmExports2[\"iswlower\"];\n Module[\"_iswupper\"] = _iswupper = wasmExports2[\"iswupper\"];\n Module[\"_iswxdigit\"] = _iswxdigit = wasmExports2[\"iswxdigit\"];\n Module[\"_memchr\"] = _memchr = wasmExports2[\"memchr\"];\n Module[\"_strlen\"] = _strlen = wasmExports2[\"strlen\"];\n Module[\"_strcmp\"] = _strcmp = wasmExports2[\"strcmp\"];\n Module[\"_strncat\"] = _strncat = wasmExports2[\"strncat\"];\n Module[\"_strncpy\"] = _strncpy = wasmExports2[\"strncpy\"];\n Module[\"_towlower\"] = _towlower = wasmExports2[\"towlower\"];\n Module[\"_towupper\"] = _towupper = wasmExports2[\"towupper\"];\n _setThrew = wasmExports2[\"setThrew\"];\n __emscripten_stack_restore = wasmExports2[\"_emscripten_stack_restore\"];\n __emscripten_stack_alloc = wasmExports2[\"_emscripten_stack_alloc\"];\n _emscripten_stack_get_current = wasmExports2[\"emscripten_stack_get_current\"];\n ___wasm_apply_data_relocs = wasmExports2[\"__wasm_apply_data_relocs\"];\n }\n __name(assignWasmExports, \"assignWasmExports\");\n var wasmImports = {\n /** @export */\n __heap_base: ___heap_base,\n /** @export */\n __indirect_function_table: wasmTable,\n /** @export */\n __memory_base: ___memory_base,\n /** @export */\n __stack_high: ___stack_high,\n /** @export */\n __stack_low: ___stack_low,\n /** @export */\n __stack_pointer: ___stack_pointer,\n /** @export */\n __table_base: ___table_base,\n /** @export */\n _abort_js: __abort_js,\n /** @export */\n emscripten_resize_heap: _emscripten_resize_heap,\n /** @export */\n fd_close: _fd_close,\n /** @export */\n fd_seek: _fd_seek,\n /** @export */\n fd_write: _fd_write,\n /** @export */\n memory: wasmMemory,\n /** @export */\n tree_sitter_log_callback: _tree_sitter_log_callback,\n /** @export */\n tree_sitter_parse_callback: _tree_sitter_parse_callback,\n /** @export */\n tree_sitter_progress_callback: _tree_sitter_progress_callback,\n /** @export */\n tree_sitter_query_progress_callback: _tree_sitter_query_progress_callback\n };\n var wasmExports = await createWasm();\n function callMain(args2 = []) {\n var entryFunction = resolveGlobalSymbol(\"main\").sym;\n if (!entryFunction) return;\n args2.unshift(thisProgram);\n var argc = args2.length;\n var argv = stackAlloc((argc + 1) * 4);\n var argv_ptr = argv;\n args2.forEach((arg) => {\n LE_HEAP_STORE_U32((argv_ptr >> 2) * 4, stringToUTF8OnStack(arg));\n argv_ptr += 4;\n });\n LE_HEAP_STORE_U32((argv_ptr >> 2) * 4, 0);\n try {\n var ret = entryFunction(argc, argv);\n exitJS(\n ret,\n /* implicit = */\n true\n );\n return ret;\n } catch (e) {\n return handleException(e);\n }\n }\n __name(callMain, \"callMain\");\n function run(args2 = arguments_) {\n if (runDependencies > 0) {\n dependenciesFulfilled = run;\n return;\n }\n preRun();\n if (runDependencies > 0) {\n dependenciesFulfilled = run;\n return;\n }\n function doRun() {\n Module[\"calledRun\"] = true;\n if (ABORT) return;\n initRuntime();\n preMain();\n readyPromiseResolve?.(Module);\n Module[\"onRuntimeInitialized\"]?.();\n var noInitialRun = Module[\"noInitialRun\"] || false;\n if (!noInitialRun) callMain(args2);\n postRun();\n }\n __name(doRun, \"doRun\");\n if (Module[\"setStatus\"]) {\n Module[\"setStatus\"](\"Running...\");\n setTimeout(() => {\n setTimeout(() => Module[\"setStatus\"](\"\"), 1);\n doRun();\n }, 1);\n } else {\n doRun();\n }\n }\n __name(run, \"run\");\n function preInit() {\n if (Module[\"preInit\"]) {\n if (typeof Module[\"preInit\"] == \"function\") Module[\"preInit\"] = [Module[\"preInit\"]];\n while (Module[\"preInit\"].length > 0) {\n Module[\"preInit\"].shift()();\n }\n }\n }\n __name(preInit, \"preInit\");\n preInit();\n run();\n if (runtimeInitialized) {\n moduleRtn = Module;\n } else {\n moduleRtn = new Promise((resolve, reject) => {\n readyPromiseResolve = resolve;\n readyPromiseReject = reject;\n });\n }\n return moduleRtn;\n}\n__name(Module2, \"Module\");\nvar web_tree_sitter_default = Module2;\n\n// src/bindings.ts\nvar Module3 = null;\nasync function initializeBinding(moduleOptions) {\n return Module3 ??= await web_tree_sitter_default(moduleOptions);\n}\n__name(initializeBinding, \"initializeBinding\");\nfunction checkModule() {\n return !!Module3;\n}\n__name(checkModule, \"checkModule\");\n\n// src/parser.ts\nvar TRANSFER_BUFFER;\nvar LANGUAGE_VERSION;\nvar MIN_COMPATIBLE_VERSION;\nvar Parser = class {\n static {\n __name(this, \"Parser\");\n }\n /** @internal */\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n [1] = 0;\n // Internal handle for Wasm\n /** @internal */\n logCallback = null;\n /** The parser's current language. */\n language = null;\n /**\n * This must always be called before creating a Parser.\n *\n * You can optionally pass in options to configure the Wasm module, the most common\n * one being `locateFile` to help the module find the `.wasm` file.\n */\n static async init(moduleOptions) {\n setModule(await initializeBinding(moduleOptions));\n TRANSFER_BUFFER = C._ts_init();\n LANGUAGE_VERSION = C.getValue(TRANSFER_BUFFER, \"i32\");\n MIN_COMPATIBLE_VERSION = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n }\n /**\n * Create a new parser.\n */\n constructor() {\n this.initialize();\n }\n /** @internal */\n initialize() {\n if (!checkModule()) {\n throw new Error(\"cannot construct a Parser before calling `init()`\");\n }\n C._ts_parser_new_wasm();\n this[0] = C.getValue(TRANSFER_BUFFER, \"i32\");\n this[1] = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n }\n /** Delete the parser, freeing its resources. */\n delete() {\n C._ts_parser_delete(this[0]);\n C._free(this[1]);\n this[0] = 0;\n this[1] = 0;\n }\n /**\n * Set the language that the parser should use for parsing.\n *\n * If the language was not successfully assigned, an error will be thrown.\n * This happens if the language was generated with an incompatible\n * version of the Tree-sitter CLI. Check the language's version using\n * {@link Language#version} and compare it to this library's\n * {@link LANGUAGE_VERSION} and {@link MIN_COMPATIBLE_VERSION} constants.\n */\n setLanguage(language) {\n let address;\n if (!language) {\n address = 0;\n this.language = null;\n } else if (language.constructor === Language) {\n address = language[0];\n const version = C._ts_language_abi_version(address);\n if (version < MIN_COMPATIBLE_VERSION || LANGUAGE_VERSION < version) {\n throw new Error(\n `Incompatible language version ${version}. Compatibility range ${MIN_COMPATIBLE_VERSION} through ${LANGUAGE_VERSION}.`\n );\n }\n this.language = language;\n } else {\n throw new Error(\"Argument must be a Language\");\n }\n C._ts_parser_set_language(this[0], address);\n return this;\n }\n /**\n * Parse a slice of UTF8 text.\n *\n * @param {string | ParseCallback} callback - The UTF8-encoded text to parse or a callback function.\n *\n * @param {Tree | null} [oldTree] - A previous syntax tree parsed from the same document. If the text of the\n * document has changed since `oldTree` was created, then you must edit `oldTree` to match\n * the new text using {@link Tree#edit}.\n *\n * @param {ParseOptions} [options] - Options for parsing the text.\n * This can be used to set the included ranges, or a progress callback.\n *\n * @returns {Tree | null} A {@link Tree} if parsing succeeded, or `null` if:\n * - The parser has not yet had a language assigned with {@link Parser#setLanguage}.\n * - The progress callback returned true.\n */\n parse(callback, oldTree, options) {\n if (typeof callback === \"string\") {\n C.currentParseCallback = (index) => callback.slice(index);\n } else if (typeof callback === \"function\") {\n C.currentParseCallback = callback;\n } else {\n throw new Error(\"Argument must be a string or a function\");\n }\n if (options?.progressCallback) {\n C.currentProgressCallback = options.progressCallback;\n } else {\n C.currentProgressCallback = null;\n }\n if (this.logCallback) {\n C.currentLogCallback = this.logCallback;\n C._ts_parser_enable_logger_wasm(this[0], 1);\n } else {\n C.currentLogCallback = null;\n C._ts_parser_enable_logger_wasm(this[0], 0);\n }\n let rangeCount = 0;\n let rangeAddress = 0;\n if (options?.includedRanges) {\n rangeCount = options.includedRanges.length;\n rangeAddress = C._calloc(rangeCount, SIZE_OF_RANGE);\n let address = rangeAddress;\n for (let i2 = 0; i2 < rangeCount; i2++) {\n marshalRange(address, options.includedRanges[i2]);\n address += SIZE_OF_RANGE;\n }\n }\n const treeAddress = C._ts_parser_parse_wasm(\n this[0],\n this[1],\n oldTree ? oldTree[0] : 0,\n rangeAddress,\n rangeCount\n );\n if (!treeAddress) {\n C.currentParseCallback = null;\n C.currentLogCallback = null;\n C.currentProgressCallback = null;\n return null;\n }\n if (!this.language) {\n throw new Error(\"Parser must have a language to parse\");\n }\n const result = new Tree(INTERNAL, treeAddress, this.language, C.currentParseCallback);\n C.currentParseCallback = null;\n C.currentLogCallback = null;\n C.currentProgressCallback = null;\n return result;\n }\n /**\n * Instruct the parser to start the next parse from the beginning.\n *\n * If the parser previously failed because of a callback, \n * then by default, it will resume where it left off on the\n * next call to {@link Parser#parse} or other parsing functions.\n * If you don't want to resume, and instead intend to use this parser to\n * parse some other document, you must call `reset` first.\n */\n reset() {\n C._ts_parser_reset(this[0]);\n }\n /** Get the ranges of text that the parser will include when parsing. */\n getIncludedRanges() {\n C._ts_parser_included_ranges_wasm(this[0]);\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const buffer = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const result = new Array(count);\n if (count > 0) {\n let address = buffer;\n for (let i2 = 0; i2 < count; i2++) {\n result[i2] = unmarshalRange(address);\n address += SIZE_OF_RANGE;\n }\n C._free(buffer);\n }\n return result;\n }\n /** Set the logging callback that a parser should use during parsing. */\n setLogger(callback) {\n if (!callback) {\n this.logCallback = null;\n } else if (typeof callback !== \"function\") {\n throw new Error(\"Logger callback must be a function\");\n } else {\n this.logCallback = callback;\n }\n return this;\n }\n /** Get the parser's current logger. */\n getLogger() {\n return this.logCallback;\n }\n};\n\n// src/query.ts\nvar PREDICATE_STEP_TYPE_CAPTURE = 1;\nvar PREDICATE_STEP_TYPE_STRING = 2;\nvar QUERY_WORD_REGEX = /[\\w-]+/g;\nvar CaptureQuantifier = {\n Zero: 0,\n ZeroOrOne: 1,\n ZeroOrMore: 2,\n One: 3,\n OneOrMore: 4\n};\nvar isCaptureStep = /* @__PURE__ */ __name((step) => step.type === \"capture\", \"isCaptureStep\");\nvar isStringStep = /* @__PURE__ */ __name((step) => step.type === \"string\", \"isStringStep\");\nvar QueryErrorKind = {\n Syntax: 1,\n NodeName: 2,\n FieldName: 3,\n CaptureName: 4,\n PatternStructure: 5\n};\nvar QueryError = class _QueryError extends Error {\n constructor(kind, info2, index, length) {\n super(_QueryError.formatMessage(kind, info2));\n this.kind = kind;\n this.info = info2;\n this.index = index;\n this.length = length;\n this.name = \"QueryError\";\n }\n static {\n __name(this, \"QueryError\");\n }\n /** Formats an error message based on the error kind and info */\n static formatMessage(kind, info2) {\n switch (kind) {\n case QueryErrorKind.NodeName:\n return `Bad node name '${info2.word}'`;\n case QueryErrorKind.FieldName:\n return `Bad field name '${info2.word}'`;\n case QueryErrorKind.CaptureName:\n return `Bad capture name @${info2.word}`;\n case QueryErrorKind.PatternStructure:\n return `Bad pattern structure at offset ${info2.suffix}`;\n case QueryErrorKind.Syntax:\n return `Bad syntax at offset ${info2.suffix}`;\n }\n }\n};\nfunction parseAnyPredicate(steps, index, operator, textPredicates) {\n if (steps.length !== 3) {\n throw new Error(\n `Wrong number of arguments to \\`#${operator}\\` predicate. Expected 2, got ${steps.length - 1}`\n );\n }\n if (!isCaptureStep(steps[1])) {\n throw new Error(\n `First argument of \\`#${operator}\\` predicate must be a capture. Got \"${steps[1].value}\"`\n );\n }\n const isPositive = operator === \"eq?\" || operator === \"any-eq?\";\n const matchAll = !operator.startsWith(\"any-\");\n if (isCaptureStep(steps[2])) {\n const captureName1 = steps[1].name;\n const captureName2 = steps[2].name;\n textPredicates[index].push((captures) => {\n const nodes1 = [];\n const nodes2 = [];\n for (const c of captures) {\n if (c.name === captureName1) nodes1.push(c.node);\n if (c.name === captureName2) nodes2.push(c.node);\n }\n const compare = /* @__PURE__ */ __name((n1, n2, positive) => {\n return positive ? n1.text === n2.text : n1.text !== n2.text;\n }, \"compare\");\n return matchAll ? nodes1.every((n1) => nodes2.some((n2) => compare(n1, n2, isPositive))) : nodes1.some((n1) => nodes2.some((n2) => compare(n1, n2, isPositive)));\n });\n } else {\n const captureName = steps[1].name;\n const stringValue = steps[2].value;\n const matches = /* @__PURE__ */ __name((n) => n.text === stringValue, \"matches\");\n const doesNotMatch = /* @__PURE__ */ __name((n) => n.text !== stringValue, \"doesNotMatch\");\n textPredicates[index].push((captures) => {\n const nodes = [];\n for (const c of captures) {\n if (c.name === captureName) nodes.push(c.node);\n }\n const test = isPositive ? matches : doesNotMatch;\n return matchAll ? nodes.every(test) : nodes.some(test);\n });\n }\n}\n__name(parseAnyPredicate, \"parseAnyPredicate\");\nfunction parseMatchPredicate(steps, index, operator, textPredicates) {\n if (steps.length !== 3) {\n throw new Error(\n `Wrong number of arguments to \\`#${operator}\\` predicate. Expected 2, got ${steps.length - 1}.`\n );\n }\n if (steps[1].type !== \"capture\") {\n throw new Error(\n `First argument of \\`#${operator}\\` predicate must be a capture. Got \"${steps[1].value}\".`\n );\n }\n if (steps[2].type !== \"string\") {\n throw new Error(\n `Second argument of \\`#${operator}\\` predicate must be a string. Got @${steps[2].name}.`\n );\n }\n const isPositive = operator === \"match?\" || operator === \"any-match?\";\n const matchAll = !operator.startsWith(\"any-\");\n const captureName = steps[1].name;\n const regex = new RegExp(steps[2].value);\n textPredicates[index].push((captures) => {\n const nodes = [];\n for (const c of captures) {\n if (c.name === captureName) nodes.push(c.node.text);\n }\n const test = /* @__PURE__ */ __name((text, positive) => {\n return positive ? regex.test(text) : !regex.test(text);\n }, \"test\");\n if (nodes.length === 0) return !isPositive;\n return matchAll ? nodes.every((text) => test(text, isPositive)) : nodes.some((text) => test(text, isPositive));\n });\n}\n__name(parseMatchPredicate, \"parseMatchPredicate\");\nfunction parseAnyOfPredicate(steps, index, operator, textPredicates) {\n if (steps.length < 2) {\n throw new Error(\n `Wrong number of arguments to \\`#${operator}\\` predicate. Expected at least 1. Got ${steps.length - 1}.`\n );\n }\n if (steps[1].type !== \"capture\") {\n throw new Error(\n `First argument of \\`#${operator}\\` predicate must be a capture. Got \"${steps[1].value}\".`\n );\n }\n const isPositive = operator === \"any-of?\";\n const captureName = steps[1].name;\n const stringSteps = steps.slice(2);\n if (!stringSteps.every(isStringStep)) {\n throw new Error(\n `Arguments to \\`#${operator}\\` predicate must be strings.\".`\n );\n }\n const values = stringSteps.map((s) => s.value);\n textPredicates[index].push((captures) => {\n const nodes = [];\n for (const c of captures) {\n if (c.name === captureName) nodes.push(c.node.text);\n }\n if (nodes.length === 0) return !isPositive;\n return nodes.every((text) => values.includes(text)) === isPositive;\n });\n}\n__name(parseAnyOfPredicate, \"parseAnyOfPredicate\");\nfunction parseIsPredicate(steps, index, operator, assertedProperties, refutedProperties) {\n if (steps.length < 2 || steps.length > 3) {\n throw new Error(\n `Wrong number of arguments to \\`#${operator}\\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`\n );\n }\n if (!steps.every(isStringStep)) {\n throw new Error(\n `Arguments to \\`#${operator}\\` predicate must be strings.\".`\n );\n }\n const properties = operator === \"is?\" ? assertedProperties : refutedProperties;\n if (!properties[index]) properties[index] = {};\n properties[index][steps[1].value] = steps[2]?.value ?? null;\n}\n__name(parseIsPredicate, \"parseIsPredicate\");\nfunction parseSetDirective(steps, index, setProperties) {\n if (steps.length < 2 || steps.length > 3) {\n throw new Error(`Wrong number of arguments to \\`#set!\\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`);\n }\n if (!steps.every(isStringStep)) {\n throw new Error(`Arguments to \\`#set!\\` predicate must be strings.\".`);\n }\n if (!setProperties[index]) setProperties[index] = {};\n setProperties[index][steps[1].value] = steps[2]?.value ?? null;\n}\n__name(parseSetDirective, \"parseSetDirective\");\nfunction parsePattern(index, stepType, stepValueId, captureNames, stringValues, steps, textPredicates, predicates, setProperties, assertedProperties, refutedProperties) {\n if (stepType === PREDICATE_STEP_TYPE_CAPTURE) {\n const name2 = captureNames[stepValueId];\n steps.push({ type: \"capture\", name: name2 });\n } else if (stepType === PREDICATE_STEP_TYPE_STRING) {\n steps.push({ type: \"string\", value: stringValues[stepValueId] });\n } else if (steps.length > 0) {\n if (steps[0].type !== \"string\") {\n throw new Error(\"Predicates must begin with a literal value\");\n }\n const operator = steps[0].value;\n switch (operator) {\n case \"any-not-eq?\":\n case \"not-eq?\":\n case \"any-eq?\":\n case \"eq?\":\n parseAnyPredicate(steps, index, operator, textPredicates);\n break;\n case \"any-not-match?\":\n case \"not-match?\":\n case \"any-match?\":\n case \"match?\":\n parseMatchPredicate(steps, index, operator, textPredicates);\n break;\n case \"not-any-of?\":\n case \"any-of?\":\n parseAnyOfPredicate(steps, index, operator, textPredicates);\n break;\n case \"is?\":\n case \"is-not?\":\n parseIsPredicate(steps, index, operator, assertedProperties, refutedProperties);\n break;\n case \"set!\":\n parseSetDirective(steps, index, setProperties);\n break;\n default:\n predicates[index].push({ operator, operands: steps.slice(1) });\n }\n steps.length = 0;\n }\n}\n__name(parsePattern, \"parsePattern\");\nvar Query = class {\n static {\n __name(this, \"Query\");\n }\n /** @internal */\n [0] = 0;\n // Internal handle for Wasm\n /** @internal */\n exceededMatchLimit;\n /** @internal */\n textPredicates;\n /** The names of the captures used in the query. */\n captureNames;\n /** The quantifiers of the captures used in the query. */\n captureQuantifiers;\n /**\n * The other user-defined predicates associated with the given index.\n *\n * This includes predicates with operators other than:\n * - `match?`\n * - `eq?` and `not-eq?`\n * - `any-of?` and `not-any-of?`\n * - `is?` and `is-not?`\n * - `set!`\n */\n predicates;\n /** The properties for predicates with the operator `set!`. */\n setProperties;\n /** The properties for predicates with the operator `is?`. */\n assertedProperties;\n /** The properties for predicates with the operator `is-not?`. */\n refutedProperties;\n /** The maximum number of in-progress matches for this cursor. */\n matchLimit;\n /**\n * Create a new query from a string containing one or more S-expression\n * patterns.\n *\n * The query is associated with a particular language, and can only be run\n * on syntax nodes parsed with that language. References to Queries can be\n * shared between multiple threads.\n *\n * @link {@see https://tree-sitter.github.io/tree-sitter/using-parsers/queries}\n */\n constructor(language, source) {\n const sourceLength = C.lengthBytesUTF8(source);\n const sourceAddress = C._malloc(sourceLength + 1);\n C.stringToUTF8(source, sourceAddress, sourceLength + 1);\n const address = C._ts_query_new(\n language[0],\n sourceAddress,\n sourceLength,\n TRANSFER_BUFFER,\n TRANSFER_BUFFER + SIZE_OF_INT\n );\n if (!address) {\n const errorId = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const errorByte = C.getValue(TRANSFER_BUFFER, \"i32\");\n const errorIndex = C.UTF8ToString(sourceAddress, errorByte).length;\n const suffix = source.slice(errorIndex, errorIndex + 100).split(\"\\n\")[0];\n const word = suffix.match(QUERY_WORD_REGEX)?.[0] ?? \"\";\n C._free(sourceAddress);\n switch (errorId) {\n case QueryErrorKind.Syntax:\n throw new QueryError(QueryErrorKind.Syntax, { suffix: `${errorIndex}: '${suffix}'...` }, errorIndex, 0);\n case QueryErrorKind.NodeName:\n throw new QueryError(errorId, { word }, errorIndex, word.length);\n case QueryErrorKind.FieldName:\n throw new QueryError(errorId, { word }, errorIndex, word.length);\n case QueryErrorKind.CaptureName:\n throw new QueryError(errorId, { word }, errorIndex, word.length);\n case QueryErrorKind.PatternStructure:\n throw new QueryError(errorId, { suffix: `${errorIndex}: '${suffix}'...` }, errorIndex, 0);\n }\n }\n const stringCount = C._ts_query_string_count(address);\n const captureCount = C._ts_query_capture_count(address);\n const patternCount = C._ts_query_pattern_count(address);\n const captureNames = new Array(captureCount);\n const captureQuantifiers = new Array(patternCount);\n const stringValues = new Array(stringCount);\n for (let i2 = 0; i2 < captureCount; i2++) {\n const nameAddress = C._ts_query_capture_name_for_id(\n address,\n i2,\n TRANSFER_BUFFER\n );\n const nameLength = C.getValue(TRANSFER_BUFFER, \"i32\");\n captureNames[i2] = C.UTF8ToString(nameAddress, nameLength);\n }\n for (let i2 = 0; i2 < patternCount; i2++) {\n const captureQuantifiersArray = new Array(captureCount);\n for (let j = 0; j < captureCount; j++) {\n const quantifier = C._ts_query_capture_quantifier_for_id(address, i2, j);\n captureQuantifiersArray[j] = quantifier;\n }\n captureQuantifiers[i2] = captureQuantifiersArray;\n }\n for (let i2 = 0; i2 < stringCount; i2++) {\n const valueAddress = C._ts_query_string_value_for_id(\n address,\n i2,\n TRANSFER_BUFFER\n );\n const nameLength = C.getValue(TRANSFER_BUFFER, \"i32\");\n stringValues[i2] = C.UTF8ToString(valueAddress, nameLength);\n }\n const setProperties = new Array(patternCount);\n const assertedProperties = new Array(patternCount);\n const refutedProperties = new Array(patternCount);\n const predicates = new Array(patternCount);\n const textPredicates = new Array(patternCount);\n for (let i2 = 0; i2 < patternCount; i2++) {\n const predicatesAddress = C._ts_query_predicates_for_pattern(address, i2, TRANSFER_BUFFER);\n const stepCount = C.getValue(TRANSFER_BUFFER, \"i32\");\n predicates[i2] = [];\n textPredicates[i2] = [];\n const steps = new Array();\n let stepAddress = predicatesAddress;\n for (let j = 0; j < stepCount; j++) {\n const stepType = C.getValue(stepAddress, \"i32\");\n stepAddress += SIZE_OF_INT;\n const stepValueId = C.getValue(stepAddress, \"i32\");\n stepAddress += SIZE_OF_INT;\n parsePattern(\n i2,\n stepType,\n stepValueId,\n captureNames,\n stringValues,\n steps,\n textPredicates,\n predicates,\n setProperties,\n assertedProperties,\n refutedProperties\n );\n }\n Object.freeze(textPredicates[i2]);\n Object.freeze(predicates[i2]);\n Object.freeze(setProperties[i2]);\n Object.freeze(assertedProperties[i2]);\n Object.freeze(refutedProperties[i2]);\n }\n C._free(sourceAddress);\n this[0] = address;\n this.captureNames = captureNames;\n this.captureQuantifiers = captureQuantifiers;\n this.textPredicates = textPredicates;\n this.predicates = predicates;\n this.setProperties = setProperties;\n this.assertedProperties = assertedProperties;\n this.refutedProperties = refutedProperties;\n this.exceededMatchLimit = false;\n }\n /** Delete the query, freeing its resources. */\n delete() {\n C._ts_query_delete(this[0]);\n this[0] = 0;\n }\n /**\n * Iterate over all of the matches in the order that they were found.\n *\n * Each match contains the index of the pattern that matched, and a list of\n * captures. Because multiple patterns can match the same set of nodes,\n * one match may contain captures that appear *before* some of the\n * captures from a previous match.\n *\n * @param {Node} node - The node to execute the query on.\n *\n * @param {QueryOptions} options - Options for query execution.\n */\n matches(node, options = {}) {\n const startPosition = options.startPosition ?? ZERO_POINT;\n const endPosition = options.endPosition ?? ZERO_POINT;\n const startIndex = options.startIndex ?? 0;\n const endIndex = options.endIndex ?? 0;\n const matchLimit = options.matchLimit ?? 4294967295;\n const maxStartDepth = options.maxStartDepth ?? 4294967295;\n const progressCallback = options.progressCallback;\n if (typeof matchLimit !== \"number\") {\n throw new Error(\"Arguments must be numbers\");\n }\n this.matchLimit = matchLimit;\n if (endIndex !== 0 && startIndex > endIndex) {\n throw new Error(\"`startIndex` cannot be greater than `endIndex`\");\n }\n if (endPosition !== ZERO_POINT && (startPosition.row > endPosition.row || startPosition.row === endPosition.row && startPosition.column > endPosition.column)) {\n throw new Error(\"`startPosition` cannot be greater than `endPosition`\");\n }\n if (progressCallback) {\n C.currentQueryProgressCallback = progressCallback;\n }\n marshalNode(node);\n C._ts_query_matches_wasm(\n this[0],\n node.tree[0],\n startPosition.row,\n startPosition.column,\n endPosition.row,\n endPosition.column,\n startIndex,\n endIndex,\n matchLimit,\n maxStartDepth\n );\n const rawCount = C.getValue(TRANSFER_BUFFER, \"i32\");\n const startAddress = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const didExceedMatchLimit = C.getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, \"i32\");\n const result = new Array(rawCount);\n this.exceededMatchLimit = Boolean(didExceedMatchLimit);\n let filteredCount = 0;\n let address = startAddress;\n for (let i2 = 0; i2 < rawCount; i2++) {\n const patternIndex = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const captureCount = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const captures = new Array(captureCount);\n address = unmarshalCaptures(this, node.tree, address, patternIndex, captures);\n if (this.textPredicates[patternIndex].every((p) => p(captures))) {\n result[filteredCount] = { patternIndex, captures };\n const setProperties = this.setProperties[patternIndex];\n result[filteredCount].setProperties = setProperties;\n const assertedProperties = this.assertedProperties[patternIndex];\n result[filteredCount].assertedProperties = assertedProperties;\n const refutedProperties = this.refutedProperties[patternIndex];\n result[filteredCount].refutedProperties = refutedProperties;\n filteredCount++;\n }\n }\n result.length = filteredCount;\n C._free(startAddress);\n C.currentQueryProgressCallback = null;\n return result;\n }\n /**\n * Iterate over all of the individual captures in the order that they\n * appear.\n *\n * This is useful if you don't care about which pattern matched, and just\n * want a single, ordered sequence of captures.\n *\n * @param {Node} node - The node to execute the query on.\n *\n * @param {QueryOptions} options - Options for query execution.\n */\n captures(node, options = {}) {\n const startPosition = options.startPosition ?? ZERO_POINT;\n const endPosition = options.endPosition ?? ZERO_POINT;\n const startIndex = options.startIndex ?? 0;\n const endIndex = options.endIndex ?? 0;\n const matchLimit = options.matchLimit ?? 4294967295;\n const maxStartDepth = options.maxStartDepth ?? 4294967295;\n const progressCallback = options.progressCallback;\n if (typeof matchLimit !== \"number\") {\n throw new Error(\"Arguments must be numbers\");\n }\n this.matchLimit = matchLimit;\n if (endIndex !== 0 && startIndex > endIndex) {\n throw new Error(\"`startIndex` cannot be greater than `endIndex`\");\n }\n if (endPosition !== ZERO_POINT && (startPosition.row > endPosition.row || startPosition.row === endPosition.row && startPosition.column > endPosition.column)) {\n throw new Error(\"`startPosition` cannot be greater than `endPosition`\");\n }\n if (progressCallback) {\n C.currentQueryProgressCallback = progressCallback;\n }\n marshalNode(node);\n C._ts_query_captures_wasm(\n this[0],\n node.tree[0],\n startPosition.row,\n startPosition.column,\n endPosition.row,\n endPosition.column,\n startIndex,\n endIndex,\n matchLimit,\n maxStartDepth\n );\n const count = C.getValue(TRANSFER_BUFFER, \"i32\");\n const startAddress = C.getValue(TRANSFER_BUFFER + SIZE_OF_INT, \"i32\");\n const didExceedMatchLimit = C.getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, \"i32\");\n const result = new Array();\n this.exceededMatchLimit = Boolean(didExceedMatchLimit);\n const captures = new Array();\n let address = startAddress;\n for (let i2 = 0; i2 < count; i2++) {\n const patternIndex = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const captureCount = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n const captureIndex = C.getValue(address, \"i32\");\n address += SIZE_OF_INT;\n captures.length = captureCount;\n address = unmarshalCaptures(this, node.tree, address, patternIndex, captures);\n if (this.textPredicates[patternIndex].every((p) => p(captures))) {\n const capture = captures[captureIndex];\n const setProperties = this.setProperties[patternIndex];\n capture.setProperties = setProperties;\n const assertedProperties = this.assertedProperties[patternIndex];\n capture.assertedProperties = assertedProperties;\n const refutedProperties = this.refutedProperties[patternIndex];\n capture.refutedProperties = refutedProperties;\n result.push(capture);\n }\n }\n C._free(startAddress);\n C.currentQueryProgressCallback = null;\n return result;\n }\n /** Get the predicates for a given pattern. */\n predicatesForPattern(patternIndex) {\n return this.predicates[patternIndex];\n }\n /**\n * Disable a certain capture within a query.\n *\n * This prevents the capture from being returned in matches, and also\n * avoids any resource usage associated with recording the capture.\n */\n disableCapture(captureName) {\n const captureNameLength = C.lengthBytesUTF8(captureName);\n const captureNameAddress = C._malloc(captureNameLength + 1);\n C.stringToUTF8(captureName, captureNameAddress, captureNameLength + 1);\n C._ts_query_disable_capture(this[0], captureNameAddress, captureNameLength);\n C._free(captureNameAddress);\n }\n /**\n * Disable a certain pattern within a query.\n *\n * This prevents the pattern from matching, and also avoids any resource\n * usage associated with the pattern. This throws an error if the pattern\n * index is out of bounds.\n */\n disablePattern(patternIndex) {\n if (patternIndex >= this.predicates.length) {\n throw new Error(\n `Pattern index is ${patternIndex} but the pattern count is ${this.predicates.length}`\n );\n }\n C._ts_query_disable_pattern(this[0], patternIndex);\n }\n /**\n * Check if, on its last execution, this cursor exceeded its maximum number\n * of in-progress matches.\n */\n didExceedMatchLimit() {\n return this.exceededMatchLimit;\n }\n /** Get the byte offset where the given pattern starts in the query's source. */\n startIndexForPattern(patternIndex) {\n if (patternIndex >= this.predicates.length) {\n throw new Error(\n `Pattern index is ${patternIndex} but the pattern count is ${this.predicates.length}`\n );\n }\n return C._ts_query_start_byte_for_pattern(this[0], patternIndex);\n }\n /** Get the byte offset where the given pattern ends in the query's source. */\n endIndexForPattern(patternIndex) {\n if (patternIndex >= this.predicates.length) {\n throw new Error(\n `Pattern index is ${patternIndex} but the pattern count is ${this.predicates.length}`\n );\n }\n return C._ts_query_end_byte_for_pattern(this[0], patternIndex);\n }\n /** Get the number of patterns in the query. */\n patternCount() {\n return C._ts_query_pattern_count(this[0]);\n }\n /** Get the index for a given capture name. */\n captureIndexForName(captureName) {\n return this.captureNames.indexOf(captureName);\n }\n /** Check if a given pattern within a query has a single root node. */\n isPatternRooted(patternIndex) {\n return C._ts_query_is_pattern_rooted(this[0], patternIndex) === 1;\n }\n /** Check if a given pattern within a query has a single root node. */\n isPatternNonLocal(patternIndex) {\n return C._ts_query_is_pattern_non_local(this[0], patternIndex) === 1;\n }\n /**\n * Check if a given step in a query is 'definite'.\n *\n * A query step is 'definite' if its parent pattern will be guaranteed to\n * match successfully once it reaches the step.\n */\n isPatternGuaranteedAtStep(byteIndex) {\n return C._ts_query_is_pattern_guaranteed_at_step(this[0], byteIndex) === 1;\n }\n};\nexport {\n CaptureQuantifier,\n LANGUAGE_VERSION,\n Language,\n LookaheadIterator,\n MIN_COMPATIBLE_VERSION,\n Node,\n Parser,\n Query,\n Tree,\n TreeCursor\n};\n//# sourceMappingURL=web-tree-sitter.js.map\n",
6
- "import { Parser, Query, Tree, Language } from \"web-tree-sitter\"\nimport type { Edit, QueryCapture, Range } from \"web-tree-sitter\"\nimport { mkdir } from \"fs/promises\"\nimport * as path from \"path\"\nimport type {\n HighlightRange,\n HighlightResponse,\n SimpleHighlight,\n FiletypeParserOptions,\n PerformanceStats,\n} from \"./types\"\nimport { DownloadUtils } from \"./download-utils\"\nimport { isMainThread } from \"worker_threads\"\n\nconst self = globalThis\n\ntype ParserState = {\n parser: Parser\n tree: Tree\n queries: {\n highlights: Query\n }\n}\n\ninterface FiletypeParser {\n filetype: string\n queries: {\n highlights: Query\n }\n language: Language\n}\n\ninterface ReusableParserState {\n parser: Parser\n filetypeParser: FiletypeParser\n}\n\nclass ParserWorker {\n private bufferParsers: Map<number, ParserState> = new Map()\n private filetypeParserOptions: Map<string, FiletypeParserOptions> = new Map()\n private filetypeParsers: Map<string, FiletypeParser> = new Map()\n private filetypeParserPromises: Map<string, Promise<FiletypeParser | undefined>> = new Map()\n private reusableParsers: Map<string, ReusableParserState> = new Map()\n private reusableParserPromises: Map<string, Promise<ReusableParserState | undefined>> = new Map()\n private initializePromise: Promise<void> | undefined\n public performance: PerformanceStats\n private dataPath: string | undefined\n private initialized: boolean = false\n\n constructor() {\n this.performance = {\n averageParseTime: 0,\n parseTimes: [],\n averageQueryTime: 0,\n queryTimes: [],\n }\n }\n\n private async fetchHighlightQueries(sources: string[], filetype: string): Promise<string> {\n if (!this.dataPath) {\n return \"\"\n }\n return DownloadUtils.fetchHighlightQueries(sources, this.dataPath, filetype)\n }\n\n async initialize({ dataPath }: { dataPath: string }) {\n if (this.initializePromise) {\n return this.initializePromise\n }\n this.initializePromise = new Promise(async (resolve, reject) => {\n this.dataPath = dataPath\n\n try {\n await mkdir(path.join(dataPath, \"languages\"), { recursive: true })\n await mkdir(path.join(dataPath, \"queries\"), { recursive: true })\n\n await Parser.init()\n\n this.initialized = true\n resolve()\n } catch (error) {\n reject(error)\n }\n })\n return this.initializePromise\n }\n\n public addFiletypeParser(filetypeParser: FiletypeParserOptions) {\n this.filetypeParserOptions.set(filetypeParser.filetype, filetypeParser)\n }\n\n private async createQueries(\n filetypeParser: FiletypeParserOptions,\n language: Language,\n ): Promise<\n | {\n highlights: Query\n }\n | undefined\n > {\n try {\n // Fetch all highlight queries from URLs/paths and concatenate them\n const highlightQueryContent = await this.fetchHighlightQueries(\n filetypeParser.queries.highlights,\n filetypeParser.filetype,\n )\n if (!highlightQueryContent) {\n console.error(\"Failed to fetch highlight queries for:\", filetypeParser.filetype)\n return undefined\n }\n\n const query = new Query(language, highlightQueryContent)\n return {\n highlights: query,\n }\n } catch (error) {\n console.error(error)\n return undefined\n }\n }\n\n private async loadLanguage(languageSource: string): Promise<Language | undefined> {\n if (!this.initialized || !this.dataPath) {\n return undefined\n }\n\n const result = await DownloadUtils.downloadOrLoad(languageSource, this.dataPath, \"languages\", \".wasm\", false)\n\n if (result.error) {\n console.error(`Error loading language ${languageSource}:`, result.error)\n return undefined\n }\n\n if (!result.filePath) {\n return undefined\n }\n\n try {\n const language = await Language.load(result.filePath)\n return language\n } catch (error) {\n console.error(`Error loading language from ${result.filePath}:`, error)\n return undefined\n }\n }\n\n private async resolveFiletypeParser(filetype: string): Promise<FiletypeParser | undefined> {\n if (this.filetypeParsers.has(filetype)) {\n return this.filetypeParsers.get(filetype)\n }\n\n if (this.filetypeParserPromises.has(filetype)) {\n return this.filetypeParserPromises.get(filetype)\n }\n\n const loadingPromise = this.loadFiletypeParser(filetype)\n this.filetypeParserPromises.set(filetype, loadingPromise)\n\n try {\n const result = await loadingPromise\n if (result) {\n this.filetypeParsers.set(filetype, result)\n }\n return result\n } finally {\n this.filetypeParserPromises.delete(filetype)\n }\n }\n\n private async loadFiletypeParser(filetype: string): Promise<FiletypeParser | undefined> {\n const filetypeParserOptions = this.filetypeParserOptions.get(filetype)\n if (!filetypeParserOptions) {\n return undefined\n }\n const language = await this.loadLanguage(filetypeParserOptions.wasm)\n if (!language) {\n return undefined\n }\n const queries = await this.createQueries(filetypeParserOptions, language)\n if (!queries) {\n console.error(\"Failed to create queries for:\", filetype)\n return undefined\n }\n const filetypeParser: FiletypeParser = {\n ...filetypeParserOptions,\n queries,\n language,\n }\n return filetypeParser\n }\n\n public async preloadParser(filetype: string) {\n return this.resolveFiletypeParser(filetype)\n }\n\n private async getReusableParser(filetype: string): Promise<ReusableParserState | undefined> {\n if (this.reusableParsers.has(filetype)) {\n return this.reusableParsers.get(filetype)\n }\n\n if (this.reusableParserPromises.has(filetype)) {\n return this.reusableParserPromises.get(filetype)\n }\n\n const creationPromise = this.createReusableParser(filetype)\n this.reusableParserPromises.set(filetype, creationPromise)\n\n try {\n const result = await creationPromise\n if (result) {\n this.reusableParsers.set(filetype, result)\n }\n return result\n } finally {\n this.reusableParserPromises.delete(filetype)\n }\n }\n\n private async createReusableParser(filetype: string): Promise<ReusableParserState | undefined> {\n const filetypeParser = await this.resolveFiletypeParser(filetype)\n if (!filetypeParser) {\n return undefined\n }\n\n const parser = new Parser()\n parser.setLanguage(filetypeParser.language)\n\n const reusableState: ReusableParserState = {\n parser,\n filetypeParser,\n }\n\n return reusableState\n }\n\n async handleInitializeParser(\n bufferId: number,\n version: number,\n content: string,\n filetype: string,\n messageId: string,\n ) {\n const filetypeParser = await this.resolveFiletypeParser(filetype)\n\n if (!filetypeParser) {\n self.postMessage({\n type: \"PARSER_INIT_RESPONSE\",\n bufferId,\n messageId,\n hasParser: false,\n warning: `No parser available for filetype ${filetype}`,\n })\n return\n }\n\n const parser = new Parser()\n parser.setLanguage(filetypeParser.language)\n const tree = parser.parse(content)\n if (!tree) {\n self.postMessage({\n type: \"PARSER_INIT_RESPONSE\",\n bufferId,\n messageId,\n hasParser: false,\n error: \"Failed to parse buffer\",\n })\n return\n }\n\n const parserState = { parser, tree, queries: filetypeParser.queries }\n this.bufferParsers.set(bufferId, parserState)\n\n self.postMessage({\n type: \"PARSER_INIT_RESPONSE\",\n bufferId,\n messageId,\n hasParser: true,\n })\n const highlights = this.initialQuery(parserState)\n self.postMessage({\n type: \"HIGHLIGHT_RESPONSE\",\n bufferId,\n version,\n ...highlights,\n })\n }\n\n private initialQuery(parserState: ParserState) {\n const query = parserState.queries.highlights\n const matches: QueryCapture[] = query.captures(parserState.tree.rootNode)\n return this.getHighlights(parserState, matches)\n }\n\n private editToRange(edit: Edit): Range {\n return {\n startPosition: {\n column: edit.startPosition.column,\n row: edit.startPosition.row,\n },\n endPosition: {\n column: edit.newEndPosition.column,\n row: edit.newEndPosition.row,\n },\n startIndex: edit.startIndex,\n endIndex: edit.newEndIndex,\n }\n }\n\n async handleEdits(\n bufferId: number,\n content: string,\n edits: Edit[],\n ): Promise<{ highlights?: HighlightResponse[]; warning?: string; error?: string }> {\n const parserState = this.bufferParsers.get(bufferId)\n if (!parserState) {\n return { warning: \"No parser state found for buffer\" }\n }\n\n for (const edit of edits) {\n parserState.tree.edit(edit)\n }\n\n // Parse the buffer\n const startParse = performance.now()\n\n const newTree = parserState.parser.parse(content, parserState.tree)\n\n const endParse = performance.now()\n const parseTime = endParse - startParse\n this.performance.parseTimes.push(parseTime)\n if (this.performance.parseTimes.length > 10) {\n this.performance.parseTimes.shift()\n }\n this.performance.averageParseTime =\n this.performance.parseTimes.reduce((acc, time) => acc + time, 0) / this.performance.parseTimes.length\n\n if (!newTree) {\n return { error: \"Failed to parse buffer\" }\n }\n\n const changedRanges = parserState.tree.getChangedRanges(newTree)\n parserState.tree = newTree\n\n const startQuery = performance.now()\n const matches: QueryCapture[] = []\n\n // If no changed ranges detected, use the edit ranges as fallback\n if (changedRanges.length === 0) {\n edits.forEach((edit) => {\n const range = this.editToRange(edit)\n changedRanges.push(range)\n })\n }\n\n for (const range of changedRanges) {\n let node = parserState.tree.rootNode.descendantForPosition(range.startPosition, range.endPosition)\n\n if (!node) {\n continue\n }\n\n // If we got the root node, query with range to limit scope\n if (node.equals(parserState.tree.rootNode)) {\n // WHY ARE RANGES NOT WORKING!?\n // The changed ranges are not returning anything in some cases\n // Even this shit somehow returns many lines before the actual range,\n // and even though expanded by 1000 bytes it does not capture much beyond the actual range.\n // So freaking weird.\n const rangeCaptures = parserState.queries.highlights.captures(\n node,\n // WTF!?\n {\n startIndex: range.startIndex - 100,\n endIndex: range.endIndex + 1000,\n },\n )\n matches.push(...rangeCaptures)\n continue\n }\n\n // For smaller nodes, walk up until we find a node that fully contains the range\n while (node && !this.nodeContainsRange(node, range)) {\n node = node.parent\n }\n\n if (!node) {\n node = parserState.tree.rootNode\n }\n\n const nodeCaptures = parserState.queries.highlights.captures(node)\n matches.push(...nodeCaptures)\n }\n\n const endQuery = performance.now()\n const queryTime = endQuery - startQuery\n this.performance.queryTimes.push(queryTime)\n if (this.performance.queryTimes.length > 10) {\n this.performance.queryTimes.shift()\n }\n this.performance.averageQueryTime =\n this.performance.queryTimes.reduce((acc, time) => acc + time, 0) / this.performance.queryTimes.length\n\n return this.getHighlights(parserState, matches)\n }\n\n private nodeContainsRange(node: any, range: any): boolean {\n return (\n node.startPosition.row <= range.startPosition.row &&\n node.endPosition.row >= range.endPosition.row &&\n (node.startPosition.row < range.startPosition.row || node.startPosition.column <= range.startPosition.column) &&\n (node.endPosition.row > range.endPosition.row || node.endPosition.column >= range.endPosition.column)\n )\n }\n\n private getHighlights(parserState: ParserState, matches: QueryCapture[]): { highlights: HighlightResponse[] } {\n const lineHighlights: Map<number, Map<number, HighlightRange>> = new Map()\n const droppedHighlights: Map<number, Map<number, HighlightRange>> = new Map()\n\n for (const match of matches) {\n const node = match.node\n const startLine = node.startPosition.row\n const endLine = node.endPosition.row\n\n const highlight = {\n startCol: node.startPosition.column,\n endCol: node.endPosition.column,\n group: match.name,\n }\n\n if (!lineHighlights.has(startLine)) {\n lineHighlights.set(startLine, new Map())\n droppedHighlights.set(startLine, new Map())\n }\n if (lineHighlights.get(startLine)?.has(node.id)) {\n droppedHighlights.get(startLine)?.set(node.id, lineHighlights.get(startLine)?.get(node.id)!)\n }\n lineHighlights.get(startLine)?.set(node.id, highlight)\n\n if (startLine !== endLine) {\n for (let line = startLine + 1; line <= endLine; line++) {\n if (!lineHighlights.has(line)) {\n lineHighlights.set(line, new Map())\n }\n const hl: HighlightRange = {\n startCol: 0,\n endCol: node.endPosition.column,\n group: match.name,\n }\n lineHighlights.get(line)?.set(node.id, hl)\n }\n }\n }\n\n return {\n highlights: Array.from(lineHighlights.entries()).map(([line, lineHighlights]) => ({\n line,\n highlights: Array.from(lineHighlights.values()),\n droppedHighlights: droppedHighlights.get(line) ? Array.from(droppedHighlights.get(line)!.values()) : [],\n })),\n }\n }\n\n private getSimpleHighlights(matches: QueryCapture[]): SimpleHighlight[] {\n const highlights: SimpleHighlight[] = []\n\n for (const match of matches) {\n const node = match.node\n highlights.push([node.startIndex, node.endIndex, match.name])\n }\n\n return highlights\n }\n\n async handleResetBuffer(\n bufferId: number,\n version: number,\n content: string,\n ): Promise<{ highlights?: HighlightResponse[]; warning?: string; error?: string }> {\n const parserState = this.bufferParsers.get(bufferId)\n if (!parserState) {\n return { warning: \"No parser state found for buffer\" }\n }\n\n const newTree = parserState.parser.parse(content)\n\n if (!newTree) {\n return { error: \"Failed to parse buffer during reset\" }\n }\n\n parserState.tree = newTree\n const matches = parserState.queries.highlights.captures(parserState.tree.rootNode)\n\n return this.getHighlights(parserState, matches)\n }\n\n disposeBuffer(bufferId: number): void {\n const parserState = this.bufferParsers.get(bufferId)\n if (!parserState) {\n return\n }\n\n parserState.tree.delete()\n parserState.parser.delete()\n\n this.bufferParsers.delete(bufferId)\n }\n\n async handleOneShotHighlight(content: string, filetype: string, messageId: string): Promise<void> {\n const reusableState = await this.getReusableParser(filetype)\n\n if (!reusableState) {\n self.postMessage({\n type: \"ONESHOT_HIGHLIGHT_RESPONSE\",\n messageId,\n hasParser: false,\n warning: `No parser available for filetype ${filetype}`,\n })\n return\n }\n\n const tree = reusableState.parser.parse(content)\n\n if (!tree) {\n self.postMessage({\n type: \"ONESHOT_HIGHLIGHT_RESPONSE\",\n messageId,\n hasParser: false,\n error: \"Failed to parse content\",\n })\n return\n }\n\n try {\n const matches = reusableState.filetypeParser.queries.highlights.captures(tree.rootNode)\n const highlights = this.getSimpleHighlights(matches)\n\n self.postMessage({\n type: \"ONESHOT_HIGHLIGHT_RESPONSE\",\n messageId,\n hasParser: true,\n highlights,\n })\n } finally {\n tree.delete()\n }\n }\n\n async updateDataPath(dataPath: string): Promise<void> {\n this.dataPath = dataPath\n\n try {\n await mkdir(path.join(dataPath, \"languages\"), { recursive: true })\n await mkdir(path.join(dataPath, \"queries\"), { recursive: true })\n } catch (error) {\n throw new Error(`Failed to update data path: ${error}`)\n }\n }\n}\nif (!isMainThread) {\n const worker = new ParserWorker()\n\n function logMessage(type: \"log\" | \"error\", ...args: any[]) {\n self.postMessage({\n type: \"WORKER_LOG\",\n logType: type,\n data: args,\n })\n }\n console.log = (...args) => logMessage(\"log\", ...args)\n console.error = (...args) => logMessage(\"error\", ...args)\n\n // @ts-ignore - we'll fix this in the future for sure\n self.onmessage = async (e: MessageEvent) => {\n const { type, bufferId, version, content, filetype, edits, filetypeParser, messageId, dataPath } = e.data\n\n try {\n switch (type) {\n case \"INIT\":\n try {\n await worker.initialize({ dataPath })\n self.postMessage({ type: \"INIT_RESPONSE\" })\n } catch (error) {\n self.postMessage({\n type: \"INIT_RESPONSE\",\n error: error instanceof Error ? error.stack || error.message : String(error),\n })\n }\n break\n\n case \"ADD_FILETYPE_PARSER\":\n worker.addFiletypeParser(filetypeParser)\n break\n\n case \"PRELOAD_PARSER\":\n const maybeParser = await worker.preloadParser(filetype)\n self.postMessage({ type: \"PRELOAD_PARSER_RESPONSE\", messageId, hasParser: !!maybeParser })\n break\n\n case \"INITIALIZE_PARSER\":\n await worker.handleInitializeParser(bufferId, version, content, filetype, messageId)\n break\n\n case \"HANDLE_EDITS\":\n const response = await worker.handleEdits(bufferId, content, edits)\n if (response.highlights && response.highlights.length > 0) {\n self.postMessage({ type: \"HIGHLIGHT_RESPONSE\", bufferId, version, ...response })\n } else if (response.warning) {\n self.postMessage({ type: \"WARNING\", bufferId, warning: response.warning })\n } else if (response.error) {\n self.postMessage({ type: \"ERROR\", bufferId, error: response.error })\n }\n break\n\n case \"GET_PERFORMANCE\":\n self.postMessage({ type: \"PERFORMANCE_RESPONSE\", performance: worker.performance, messageId })\n break\n\n case \"RESET_BUFFER\":\n const resetResponse = await worker.handleResetBuffer(bufferId, version, content)\n if (resetResponse.highlights && resetResponse.highlights.length > 0) {\n self.postMessage({ type: \"HIGHLIGHT_RESPONSE\", bufferId, version, ...resetResponse })\n } else if (resetResponse.warning) {\n self.postMessage({ type: \"WARNING\", bufferId, warning: resetResponse.warning })\n } else if (resetResponse.error) {\n self.postMessage({ type: \"ERROR\", bufferId, error: resetResponse.error })\n }\n break\n\n case \"DISPOSE_BUFFER\":\n worker.disposeBuffer(bufferId)\n self.postMessage({ type: \"BUFFER_DISPOSED\", bufferId })\n break\n\n case \"ONESHOT_HIGHLIGHT\":\n await worker.handleOneShotHighlight(content, filetype, messageId)\n break\n\n case \"UPDATE_DATA_PATH\":\n try {\n await worker.updateDataPath(dataPath)\n self.postMessage({ type: \"UPDATE_DATA_PATH_RESPONSE\", messageId })\n } catch (error) {\n self.postMessage({\n type: \"UPDATE_DATA_PATH_RESPONSE\",\n messageId,\n error: error instanceof Error ? error.message : String(error),\n })\n }\n break\n\n default:\n self.postMessage({\n type: \"ERROR\",\n bufferId,\n error: `Unknown message type: ${type}`,\n })\n }\n } catch (error) {\n self.postMessage({\n type: \"ERROR\",\n bufferId,\n error: error instanceof Error ? error.stack || error.message : String(error),\n })\n }\n }\n}\n\nexport default __filename\n",
7
- "import { mkdir, writeFile } from \"fs/promises\"\nimport * as path from \"path\"\n\nexport interface DownloadResult {\n content?: ArrayBuffer\n filePath?: string\n error?: string\n}\n\nexport class DownloadUtils {\n private static hashUrl(url: string): string {\n let hash = 0\n for (let i = 0; i < url.length; i++) {\n const char = url.charCodeAt(i)\n hash = (hash << 5) - hash + char\n hash = hash & hash\n }\n return Math.abs(hash).toString(16)\n }\n\n /**\n * Download a file from URL or load from local path, with caching support\n */\n static async downloadOrLoad(\n source: string,\n cacheDir: string,\n cacheSubdir: string,\n fileExtension: string,\n useHashForCache: boolean = true,\n filetype?: string,\n ): Promise<DownloadResult> {\n const isUrl = source.startsWith(\"http://\") || source.startsWith(\"https://\")\n\n if (isUrl) {\n let cacheFileName: string\n if (useHashForCache) {\n const hash = this.hashUrl(source)\n cacheFileName = filetype ? `${filetype}-${hash}${fileExtension}` : `${hash}${fileExtension}`\n } else {\n cacheFileName = path.basename(source)\n }\n const cacheFile = path.join(cacheDir, cacheSubdir, cacheFileName)\n\n // Ensure cache directory exists\n await mkdir(path.dirname(cacheFile), { recursive: true })\n\n try {\n const cachedContent = await Bun.file(cacheFile).arrayBuffer()\n if (cachedContent.byteLength > 0) {\n console.log(`Loaded from cache: ${cacheFile} (${source})`)\n return { content: cachedContent, filePath: cacheFile }\n }\n } catch (error) {\n // Cache miss, continue to fetch\n }\n\n try {\n console.log(`Downloading from URL: ${source}`)\n const response = await fetch(source)\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` }\n }\n const content = await response.arrayBuffer()\n\n try {\n await writeFile(cacheFile, Buffer.from(content))\n console.log(`Cached: ${source}`)\n } catch (cacheError) {\n console.warn(`Failed to cache: ${cacheError}`)\n }\n\n return { content, filePath: cacheFile }\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` }\n }\n } else {\n try {\n console.log(`Loading from local path: ${source}`)\n const content = await Bun.file(source).arrayBuffer()\n return { content, filePath: source }\n } catch (error) {\n return { error: `Error loading from local path ${source}: ${error}` }\n }\n }\n }\n\n /**\n * Download and save a file to a specific target path\n */\n static async downloadToPath(source: string, targetPath: string): Promise<DownloadResult> {\n const isUrl = source.startsWith(\"http://\") || source.startsWith(\"https://\")\n\n await mkdir(path.dirname(targetPath), { recursive: true })\n\n if (isUrl) {\n try {\n console.log(`Downloading from URL: ${source}`)\n const response = await fetch(source)\n if (!response.ok) {\n return { error: `Failed to fetch from ${source}: ${response.statusText}` }\n }\n const content = await response.arrayBuffer()\n\n await writeFile(targetPath, Buffer.from(content))\n console.log(`Downloaded: ${source} -> ${targetPath}`)\n\n return { content, filePath: targetPath }\n } catch (error) {\n return { error: `Error downloading from ${source}: ${error}` }\n }\n } else {\n try {\n console.log(`Copying from local path: ${source}`)\n const content = await Bun.file(source).arrayBuffer()\n await writeFile(targetPath, Buffer.from(content))\n return { content, filePath: targetPath }\n } catch (error) {\n return { error: `Error copying from local path ${source}: ${error}` }\n }\n }\n }\n\n /**\n * Fetch multiple highlight queries and concatenate them\n */\n static async fetchHighlightQueries(sources: string[], cacheDir: string, filetype: string): Promise<string> {\n const queryPromises = sources.map((source) => this.fetchHighlightQuery(source, cacheDir, filetype))\n const queryResults = await Promise.all(queryPromises)\n\n const validQueries = queryResults.filter((query) => query.trim().length > 0)\n return validQueries.join(\"\\n\")\n }\n\n private static async fetchHighlightQuery(source: string, cacheDir: string, filetype: string): Promise<string> {\n const result = await this.downloadOrLoad(source, cacheDir, \"queries\", \".scm\", true, filetype)\n\n if (result.error) {\n console.error(`Error fetching highlight query from ${source}:`, result.error)\n return \"\"\n }\n\n if (result.content) {\n return new TextDecoder().decode(result.content)\n }\n\n return \"\"\n }\n}\n"
8
- ],
9
- "mappings": "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",
10
- "debugId": "42591263B8A36C4F64756E2164756E21",
11
- "names": []
12
- }