From dd547bc80293f6adde5718d20305d1b150c009f9 Mon Sep 17 00:00:00 2001 From: Michael Davis Date: Mon, 10 Jan 2022 07:56:58 -0600 Subject: [PATCH 01/21] initial commit for playground branch --- .gitignore | 9 + README.md | 7 + index.html | 200 +++ playground.js | 461 ++++++ tree-sitter.js | 4123 ++++++++++++++++++++++++++++++++++++++++++++++ tree-sitter.wasm | Bin 0 -> 436402 bytes 6 files changed, 4800 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.html create mode 100644 playground.js create mode 100644 tree-sitter.js create mode 100644 tree-sitter.wasm diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae964f3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,9 @@ +# Deps +/node_modules/ + +# Temporary files +/tmp/ + +# Temporary files generated by Tree-sitter +/build/ +log.html diff --git a/README.md b/README.md new file mode 100644 index 0000000..deff174 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# tree-sitter-elixir + +Elixir grammar for [tree-sitter](https://github.com/tree-sitter/tree-sitter). + +## `gh-pages` branch + +This branch serves the tree-sitter playground for the Elixir grammar. diff --git a/index.html b/index.html new file mode 100644 index 0000000..089b9f8 --- /dev/null +++ b/index.html @@ -0,0 +1,200 @@ + + + + + tree-sitter Elixir + + + + + + + +
+
+
+ Elixir +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + +
+ +
+
+
+ +
+
+ +
+
+ +
+

+        
+
+
+ + + + + + + + + + + + + diff --git a/playground.js b/playground.js new file mode 100644 index 0000000..2a7632a --- /dev/null +++ b/playground.js @@ -0,0 +1,461 @@ +let tree; + +(async () => { + const CAPTURE_REGEX = /@\s*([\w\._-]+)/g; + const COLORS_BY_INDEX = [ + 'blue', + 'chocolate', + 'darkblue', + 'darkcyan', + 'darkgreen', + 'darkred', + 'darkslategray', + 'dimgray', + 'green', + 'indigo', + 'navy', + 'red', + 'sienna', + ]; + + const scriptURL = document.currentScript.getAttribute('src'); + + const codeInput = document.getElementById('code-input'); + const languageSelect = document.getElementById('language-select'); + const loggingCheckbox = document.getElementById('logging-checkbox'); + const outputContainer = document.getElementById('output-container'); + const outputContainerScroll = document.getElementById('output-container-scroll'); + const playgroundContainer = document.getElementById('playground-container'); + const queryCheckbox = document.getElementById('query-checkbox'); + const queryContainer = document.getElementById('query-container'); + const queryInput = document.getElementById('query-input'); + const updateTimeSpan = document.getElementById('update-time'); + const languagesByName = {}; + + loadState(); + + await TreeSitter.init(); + + const parser = new TreeSitter(); + const codeEditor = CodeMirror.fromTextArea(codeInput, { + lineNumbers: true, + showCursorWhenSelecting: true + }); + + const queryEditor = CodeMirror.fromTextArea(queryInput, { + lineNumbers: true, + showCursorWhenSelecting: true + }); + + const cluster = new Clusterize({ + rows: [], + noDataText: null, + contentElem: outputContainer, + scrollElem: outputContainerScroll + }); + const renderTreeOnCodeChange = debounce(renderTree, 50); + const saveStateOnChange = debounce(saveState, 2000); + const runTreeQueryOnChange = debounce(runTreeQuery, 50); + + let languageName = languageSelect.value; + let treeRows = null; + let treeRowHighlightedIndex = -1; + let parseCount = 0; + let isRendering = 0; + let query; + + codeEditor.on('changes', handleCodeChange); + codeEditor.on('viewportChange', runTreeQueryOnChange); + codeEditor.on('cursorActivity', debounce(handleCursorMovement, 150)); + queryEditor.on('changes', debounce(handleQueryChange, 150)); + + loggingCheckbox.addEventListener('change', handleLoggingChange); + queryCheckbox.addEventListener('change', handleQueryEnableChange); + languageSelect.addEventListener('change', handleLanguageChange); + outputContainer.addEventListener('click', handleTreeClick); + + handleQueryEnableChange(); + await handleLanguageChange() + + playgroundContainer.style.visibility = 'visible'; + + async function handleLanguageChange() { + const newLanguageName = languageSelect.value; + if (!languagesByName[newLanguageName]) { + const url = './tree-sitter-elixir.wasm' + languageSelect.disabled = true; + try { + languagesByName[newLanguageName] = await TreeSitter.Language.load(url); + } catch (e) { + console.error(e); + languageSelect.value = languageName; + return + } finally { + languageSelect.disabled = false; + } + } + + tree = null; + languageName = newLanguageName; + parser.setLanguage(languagesByName[newLanguageName]); + handleCodeChange(); + handleQueryChange(); + } + + async function handleCodeChange(editor, changes) { + const newText = codeEditor.getValue() + '\n'; + const edits = tree && changes && changes.map(treeEditForEditorChange); + + const start = performance.now(); + if (edits) { + for (const edit of edits) { + tree.edit(edit); + } + } + const newTree = parser.parse(newText, tree); + const duration = (performance.now() - start).toFixed(1); + + updateTimeSpan.innerText = `${duration} ms`; + if (tree) tree.delete(); + tree = newTree; + parseCount++; + renderTreeOnCodeChange(); + runTreeQueryOnChange(); + saveStateOnChange(); + } + + async function renderTree() { + isRendering++; + const cursor = tree.walk(); + + let currentRenderCount = parseCount; + let row = ''; + let rows = []; + let finishedRow = false; + let visitedChildren = false; + let indentLevel = 0; + + for (let i = 0;; i++) { + if (i > 0 && i % 10000 === 0) { + await new Promise(r => setTimeout(r, 0)); + if (parseCount !== currentRenderCount) { + cursor.delete(); + isRendering--; + return; + } + } + + let displayName; + if (cursor.nodeIsMissing) { + displayName = `MISSING ${cursor.nodeType}` + } else if (cursor.nodeIsNamed) { + displayName = cursor.nodeType; + } + + if (visitedChildren) { + if (displayName) { + finishedRow = true; + } + + if (cursor.gotoNextSibling()) { + visitedChildren = false; + } else if (cursor.gotoParent()) { + visitedChildren = true; + indentLevel--; + } else { + break; + } + } else { + if (displayName) { + if (finishedRow) { + row += ''; + rows.push(row); + finishedRow = false; + } + const start = cursor.startPosition; + const end = cursor.endPosition; + const id = cursor.nodeId; + let fieldName = cursor.currentFieldName(); + if (fieldName) { + fieldName += ': '; + } else { + fieldName = ''; + } + row = `
${' '.repeat(indentLevel)}${fieldName}${displayName} [${start.row}, ${start.column}] - [${end.row}, ${end.column}]`; + finishedRow = true; + } + + if (cursor.gotoFirstChild()) { + visitedChildren = false; + indentLevel++; + } else { + visitedChildren = true; + } + } + } + if (finishedRow) { + row += '
'; + rows.push(row); + } + + cursor.delete(); + cluster.update(rows); + treeRows = rows; + isRendering--; + handleCursorMovement(); + } + + function runTreeQuery(_, startRow, endRow) { + if (endRow == null) { + const viewport = codeEditor.getViewport(); + startRow = viewport.from; + endRow = viewport.to; + } + + codeEditor.operation(() => { + const marks = codeEditor.getAllMarks(); + marks.forEach(m => m.clear()); + + if (tree && query) { + const captures = query.captures( + tree.rootNode, + {row: startRow, column: 0}, + {row: endRow, column: 0}, + ); + let lastNodeId; + for (const {name, node} of captures) { + if (node.id === lastNodeId) continue; + lastNodeId = node.id; + const {startPosition, endPosition} = node; + codeEditor.markText( + {line: startPosition.row, ch: startPosition.column}, + {line: endPosition.row, ch: endPosition.column}, + { + inclusiveLeft: true, + inclusiveRight: true, + css: `color: ${colorForCaptureName(name)}` + } + ); + } + } + }); + } + + function handleQueryChange() { + if (query) { + query.delete(); + query.deleted = true; + query = null; + } + + queryEditor.operation(() => { + queryEditor.getAllMarks().forEach(m => m.clear()); + if (!queryCheckbox.checked) return; + + const queryText = queryEditor.getValue(); + + try { + query = parser.getLanguage().query(queryText); + let match; + + let row = 0; + queryEditor.eachLine((line) => { + while (match = CAPTURE_REGEX.exec(line.text)) { + queryEditor.markText( + {line: row, ch: match.index}, + {line: row, ch: match.index + match[0].length}, + { + inclusiveLeft: true, + inclusiveRight: true, + css: `color: ${colorForCaptureName(match[1])}` + } + ); + } + row++; + }); + } catch (error) { + const startPosition = queryEditor.posFromIndex(error.index); + const endPosition = { + line: startPosition.line, + ch: startPosition.ch + (error.length || Infinity) + }; + + if (error.index === queryText.length) { + if (startPosition.ch > 0) { + startPosition.ch--; + } else if (startPosition.row > 0) { + startPosition.row--; + startPosition.column = Infinity; + } + } + + queryEditor.markText( + startPosition, + endPosition, + { + className: 'query-error', + inclusiveLeft: true, + inclusiveRight: true, + attributes: {title: error.message} + } + ); + } + }); + + runTreeQuery(); + saveQueryState(); + } + + function handleCursorMovement() { + if (isRendering) return; + + const selection = codeEditor.getDoc().listSelections()[0]; + let start = {row: selection.anchor.line, column: selection.anchor.ch}; + let end = {row: selection.head.line, column: selection.head.ch}; + if ( + start.row > end.row || + ( + start.row === end.row && + start.column > end.column + ) + ) { + let swap = end; + end = start; + start = swap; + } + const node = tree.rootNode.namedDescendantForPosition(start, end); + if (treeRows) { + if (treeRowHighlightedIndex !== -1) { + const row = treeRows[treeRowHighlightedIndex]; + if (row) treeRows[treeRowHighlightedIndex] = row.replace('highlighted', 'plain'); + } + treeRowHighlightedIndex = treeRows.findIndex(row => row.includes(`data-id=${node.id}`)); + if (treeRowHighlightedIndex !== -1) { + const row = treeRows[treeRowHighlightedIndex]; + if (row) treeRows[treeRowHighlightedIndex] = row.replace('plain', 'highlighted'); + } + cluster.update(treeRows); + const lineHeight = cluster.options.item_height; + const scrollTop = outputContainerScroll.scrollTop; + const containerHeight = outputContainerScroll.clientHeight; + const offset = treeRowHighlightedIndex * lineHeight; + if (scrollTop > offset - 20) { + $(outputContainerScroll).animate({scrollTop: offset - 20}, 150); + } else if (scrollTop < offset + lineHeight + 40 - containerHeight) { + $(outputContainerScroll).animate({scrollTop: offset - containerHeight + 40}, 150); + } + } + } + + function handleTreeClick(event) { + if (event.target.tagName === 'A') { + event.preventDefault(); + const [startRow, startColumn, endRow, endColumn] = event + .target + .dataset + .range + .split(',') + .map(n => parseInt(n)); + codeEditor.focus(); + codeEditor.setSelection( + {line: startRow, ch: startColumn}, + {line: endRow, ch: endColumn} + ); + } + } + + function handleLoggingChange() { + if (loggingCheckbox.checked) { + parser.setLogger((message, lexing) => { + if (lexing) { + console.log(" ", message) + } else { + console.log(message) + } + }); + } else { + parser.setLogger(null); + } + } + + function handleQueryEnableChange() { + if (queryCheckbox.checked) { + queryContainer.style.visibility = ''; + queryContainer.style.position = ''; + } else { + queryContainer.style.visibility = 'hidden'; + queryContainer.style.position = 'absolute'; + } + handleQueryChange(); + } + + function treeEditForEditorChange(change) { + const oldLineCount = change.removed.length; + const newLineCount = change.text.length; + const lastLineLength = change.text[newLineCount - 1].length; + + const startPosition = {row: change.from.line, column: change.from.ch}; + const oldEndPosition = {row: change.to.line, column: change.to.ch}; + const newEndPosition = { + row: startPosition.row + newLineCount - 1, + column: newLineCount === 1 + ? startPosition.column + lastLineLength + : lastLineLength + }; + + const startIndex = codeEditor.indexFromPos(change.from); + let newEndIndex = startIndex + newLineCount - 1; + let oldEndIndex = startIndex + oldLineCount - 1; + for (let i = 0; i < newLineCount; i++) newEndIndex += change.text[i].length; + for (let i = 0; i < oldLineCount; i++) oldEndIndex += change.removed[i].length; + + return { + startIndex, oldEndIndex, newEndIndex, + startPosition, oldEndPosition, newEndPosition + }; + } + + function colorForCaptureName(capture) { + const id = query.captureNames.indexOf(capture); + return COLORS_BY_INDEX[id % COLORS_BY_INDEX.length]; + } + + function loadState() { + const language = localStorage.getItem("languageElixir"); + const sourceCode = localStorage.getItem("sourceCodeElixir"); + const query = localStorage.getItem("queryElixir"); + const queryEnabled = localStorage.getItem("queryEnabledElixir"); + if (language != null && sourceCode != null && query != null) { + queryInput.value = query; + codeInput.value = sourceCode; + languageSelect.value = language; + queryCheckbox.checked = (queryEnabled === 'true'); + } + } + + function saveState() { + localStorage.setItem("languageElixir", languageSelect.value); + localStorage.setItem("sourceCodeElixir", codeEditor.getValue()); + saveQueryState(); + } + + function saveQueryState() { + localStorage.setItem("queryEnabledElixir", queryCheckbox.checked); + localStorage.setItem("queryElixir", queryEditor.getValue()); + } + + function debounce(func, wait, immediate) { + var timeout; + return function() { + var context = this, args = arguments; + var later = function() { + timeout = null; + if (!immediate) func.apply(context, args); + }; + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; + } +})(); diff --git a/tree-sitter.js b/tree-sitter.js new file mode 100644 index 0000000..2eba8e2 --- /dev/null +++ b/tree-sitter.js @@ -0,0 +1,4123 @@ +var Module = typeof Module !== "undefined" ? Module : {}; + +var TreeSitter = function() { + var initPromise; + var document = typeof window == "object" ? { + currentScript: window.document.currentScript + } : null; + class Parser { + constructor() { + this.initialize(); + } + initialize() { + throw new Error("cannot construct a Parser before calling `init()`"); + } + static init(moduleOptions) { + if (initPromise) return initPromise; + Module = Object.assign({}, Module, moduleOptions); + return initPromise = new Promise(resolveInitPromise => { + var moduleOverrides = {}; + var key; + for (key in Module) { + if (Module.hasOwnProperty(key)) { + moduleOverrides[key] = Module[key]; + } + } + var arguments_ = []; + var thisProgram = "./this.program"; + var quit_ = function(status, toThrow) { + throw toThrow; + }; + var ENVIRONMENT_IS_WEB = typeof window === "object"; + var ENVIRONMENT_IS_WORKER = typeof importScripts === "function"; + var ENVIRONMENT_IS_NODE = typeof process === "object" && typeof process.versions === "object" && typeof process.versions.node === "string"; + var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; + if (Module["ENVIRONMENT"]) { + throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)"); + } + var scriptDirectory = ""; + function locateFile(path) { + if (Module["locateFile"]) { + return Module["locateFile"](path, scriptDirectory); + } + return scriptDirectory + path; + } + var read_, readAsync, readBinary, setWindowTitle; + var nodeFS; + var nodePath; + if (ENVIRONMENT_IS_NODE) { + if (!(typeof process === "object" && typeof require === "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = require("path").dirname(scriptDirectory) + "/"; + } else { + scriptDirectory = __dirname + "/"; + } + read_ = function shell_read(filename, binary) { + if (!nodeFS) nodeFS = require("fs"); + if (!nodePath) nodePath = require("path"); + filename = nodePath["normalize"](filename); + return nodeFS["readFileSync"](filename, binary ? null : "utf8"); + }; + readBinary = function readBinary(filename) { + var ret = read_(filename, true); + if (!ret.buffer) { + ret = new Uint8Array(ret); + } + assert(ret.buffer); + return ret; + }; + readAsync = function readAsync(filename, onload, onerror) { + if (!nodeFS) nodeFS = require("fs"); + if (!nodePath) nodePath = require("path"); + filename = nodePath["normalize"](filename); + nodeFS["readFile"](filename, function(err, data) { + if (err) onerror(err); else onload(data.buffer); + }); + }; + if (process["argv"].length > 1) { + thisProgram = process["argv"][1].replace(/\\/g, "/"); + } + arguments_ = process["argv"].slice(2); + if (typeof module !== "undefined") { + module["exports"] = Module; + } + quit_ = function(status, toThrow) { + if (keepRuntimeAlive()) { + process["exitCode"] = status; + throw toThrow; + } + process["exit"](status); + }; + Module["inspect"] = function() { + return "[Emscripten Module object]"; + }; + } else if (ENVIRONMENT_IS_SHELL) { + if (typeof process === "object" && typeof require === "function" || typeof window === "object" || typeof importScripts === "function") throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); + if (typeof read != "undefined") { + read_ = function shell_read(f) { + return read(f); + }; + } + readBinary = function readBinary(f) { + var data; + if (typeof readbuffer === "function") { + return new Uint8Array(readbuffer(f)); + } + data = read(f, "binary"); + assert(typeof data === "object"); + return data; + }; + readAsync = function readAsync(f, onload, onerror) { + setTimeout(function() { + onload(readBinary(f)); + }, 0); + }; + if (typeof scriptArgs != "undefined") { + arguments_ = scriptArgs; + } else if (typeof arguments != "undefined") { + arguments_ = arguments; + } + if (typeof quit === "function") { + quit_ = function(status) { + quit(status); + }; + } + if (typeof print !== "undefined") { + if (typeof console === "undefined") console = {}; + console.log = print; + console.warn = console.error = typeof printErr !== "undefined" ? printErr : print; + } + } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { + if (ENVIRONMENT_IS_WORKER) { + scriptDirectory = self.location.href; + } else if (typeof document !== "undefined" && document.currentScript) { + scriptDirectory = document.currentScript.src; + } + if (scriptDirectory.indexOf("blob:") !== 0) { + scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1); + } else { + scriptDirectory = ""; + } + if (!(typeof window === "object" || typeof importScripts === "function")) throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)"); + { + read_ = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.send(null); + return xhr.responseText; + }; + if (ENVIRONMENT_IS_WORKER) { + readBinary = function(url) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, false); + xhr.responseType = "arraybuffer"; + xhr.send(null); + return new Uint8Array(xhr.response); + }; + } + readAsync = function(url, onload, onerror) { + var xhr = new XMLHttpRequest(); + xhr.open("GET", url, true); + xhr.responseType = "arraybuffer"; + xhr.onload = function() { + if (xhr.status == 200 || xhr.status == 0 && xhr.response) { + onload(xhr.response); + return; + } + onerror(); + }; + xhr.onerror = onerror; + xhr.send(null); + }; + } + setWindowTitle = function(title) { + document.title = title; + }; + } else { + throw new Error("environment detection error"); + } + var out = Module["print"] || console.log.bind(console); + var err = Module["printErr"] || console.warn.bind(console); + for (key in moduleOverrides) { + if (moduleOverrides.hasOwnProperty(key)) { + Module[key] = moduleOverrides[key]; + } + } + moduleOverrides = null; + if (Module["arguments"]) arguments_ = Module["arguments"]; + if (!Object.getOwnPropertyDescriptor(Module, "arguments")) { + Object.defineProperty(Module, "arguments", { + configurable: true, + get: function() { + abort("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; + if (!Object.getOwnPropertyDescriptor(Module, "thisProgram")) { + Object.defineProperty(Module, "thisProgram", { + configurable: true, + get: function() { + abort("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (Module["quit"]) quit_ = Module["quit"]; + if (!Object.getOwnPropertyDescriptor(Module, "quit")) { + Object.defineProperty(Module, "quit", { + configurable: true, + get: function() { + abort("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + assert(typeof Module["memoryInitializerPrefixURL"] === "undefined", "Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["pthreadMainPrefixURL"] === "undefined", "Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["cdInitializerPrefixURL"] === "undefined", "Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["filePackagePrefixURL"] === "undefined", "Module.filePackagePrefixURL option was removed, use Module.locateFile instead"); + assert(typeof Module["read"] === "undefined", "Module.read option was removed (modify read_ in JS)"); + assert(typeof Module["readAsync"] === "undefined", "Module.readAsync option was removed (modify readAsync in JS)"); + assert(typeof Module["readBinary"] === "undefined", "Module.readBinary option was removed (modify readBinary in JS)"); + assert(typeof Module["setWindowTitle"] === "undefined", "Module.setWindowTitle option was removed (modify setWindowTitle in JS)"); + assert(typeof Module["TOTAL_MEMORY"] === "undefined", "Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"); + if (!Object.getOwnPropertyDescriptor(Module, "read")) { + Object.defineProperty(Module, "read", { + configurable: true, + get: function() { + abort("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (!Object.getOwnPropertyDescriptor(Module, "readAsync")) { + Object.defineProperty(Module, "readAsync", { + configurable: true, + get: function() { + abort("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (!Object.getOwnPropertyDescriptor(Module, "readBinary")) { + Object.defineProperty(Module, "readBinary", { + configurable: true, + get: function() { + abort("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (!Object.getOwnPropertyDescriptor(Module, "setWindowTitle")) { + Object.defineProperty(Module, "setWindowTitle", { + configurable: true, + get: function() { + abort("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + var IDBFS = "IDBFS is no longer included by default; build with -lidbfs.js"; + var PROXYFS = "PROXYFS is no longer included by default; build with -lproxyfs.js"; + var WORKERFS = "WORKERFS is no longer included by default; build with -lworkerfs.js"; + var NODEFS = "NODEFS is no longer included by default; build with -lnodefs.js"; + assert(!ENVIRONMENT_IS_SHELL, "shell environment detected but not enabled at build time. Add 'shell' to `-s ENVIRONMENT` to enable."); + var STACK_ALIGN = 16; + function getNativeTypeSize(type) { + switch (type) { + case "i1": + case "i8": + return 1; + + case "i16": + return 2; + + case "i32": + return 4; + + case "i64": + return 8; + + case "float": + return 4; + + case "double": + return 8; + + default: + { + if (type[type.length - 1] === "*") { + return 4; + } else if (type[0] === "i") { + var bits = Number(type.substr(1)); + assert(bits % 8 === 0, "getNativeTypeSize invalid bits " + bits + ", type " + type); + return bits / 8; + } else { + return 0; + } + } + } + } + function warnOnce(text) { + if (!warnOnce.shown) warnOnce.shown = {}; + if (!warnOnce.shown[text]) { + warnOnce.shown[text] = 1; + err(text); + } + } + function convertJsFunctionToWasm(func, sig) { + if (typeof WebAssembly.Function === "function") { + var typeNames = { + "i": "i32", + "j": "i64", + "f": "f32", + "d": "f64" + }; + var type = { + parameters: [], + results: sig[0] == "v" ? [] : [ typeNames[sig[0]] ] + }; + for (var i = 1; i < sig.length; ++i) { + type.parameters.push(typeNames[sig[i]]); + } + return new WebAssembly.Function(type, func); + } + var typeSection = [ 1, 0, 1, 96 ]; + var sigRet = sig.slice(0, 1); + var sigParam = sig.slice(1); + var typeCodes = { + "i": 127, + "j": 126, + "f": 125, + "d": 124 + }; + typeSection.push(sigParam.length); + for (var i = 0; i < sigParam.length; ++i) { + typeSection.push(typeCodes[sigParam[i]]); + } + if (sigRet == "v") { + typeSection.push(0); + } else { + typeSection = typeSection.concat([ 1, typeCodes[sigRet] ]); + } + typeSection[1] = typeSection.length - 2; + var bytes = new Uint8Array([ 0, 97, 115, 109, 1, 0, 0, 0 ].concat(typeSection, [ 2, 7, 1, 1, 101, 1, 102, 0, 0, 7, 5, 1, 1, 102, 0, 0 ])); + var module = new WebAssembly.Module(bytes); + var instance = new WebAssembly.Instance(module, { + "e": { + "f": func + } + }); + var wrappedFunc = instance.exports["f"]; + return wrappedFunc; + } + var freeTableIndexes = []; + var functionsInTableMap; + function getEmptyTableSlot() { + if (freeTableIndexes.length) { + return freeTableIndexes.pop(); + } + try { + wasmTable.grow(1); + } catch (err) { + if (!(err instanceof RangeError)) { + throw err; + } + throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."; + } + return wasmTable.length - 1; + } + function addFunctionWasm(func, sig) { + if (!functionsInTableMap) { + functionsInTableMap = new WeakMap(); + for (var i = 0; i < wasmTable.length; i++) { + var item = wasmTable.get(i); + if (item) { + functionsInTableMap.set(item, i); + } + } + } + if (functionsInTableMap.has(func)) { + return functionsInTableMap.get(func); + } + var ret = getEmptyTableSlot(); + try { + wasmTable.set(ret, func); + } catch (err) { + if (!(err instanceof TypeError)) { + throw err; + } + assert(typeof sig !== "undefined", "Missing signature argument to addFunction: " + func); + var wrapped = convertJsFunctionToWasm(func, sig); + wasmTable.set(ret, wrapped); + } + functionsInTableMap.set(func, ret); + return ret; + } + function removeFunction(index) { + functionsInTableMap.delete(wasmTable.get(index)); + freeTableIndexes.push(index); + } + function addFunction(func, sig) { + assert(typeof func !== "undefined"); + return addFunctionWasm(func, sig); + } + var tempRet0 = 0; + var setTempRet0 = function(value) { + tempRet0 = value; + }; + var getTempRet0 = function() { + return tempRet0; + }; + var dynamicLibraries = Module["dynamicLibraries"] || []; + var wasmBinary; + if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"]; + if (!Object.getOwnPropertyDescriptor(Module, "wasmBinary")) { + Object.defineProperty(Module, "wasmBinary", { + configurable: true, + get: function() { + abort("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + var noExitRuntime = Module["noExitRuntime"] || true; + if (!Object.getOwnPropertyDescriptor(Module, "noExitRuntime")) { + Object.defineProperty(Module, "noExitRuntime", { + configurable: true, + get: function() { + abort("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + if (typeof WebAssembly !== "object") { + abort("no native wasm support detected"); + } + function setValue(ptr, value, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + if (noSafe) { + switch (type) { + case "i1": + HEAP8[ptr >> 0] = value; + break; + + case "i8": + HEAP8[ptr >> 0] = value; + break; + + case "i16": + HEAP16[ptr >> 1] = value; + break; + + case "i32": + HEAP32[ptr >> 2] = value; + break; + + case "i64": + tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1]; + break; + + case "float": + HEAPF32[ptr >> 2] = value; + break; + + case "double": + HEAPF64[ptr >> 3] = value; + break; + + default: + abort("invalid type for setValue: " + type); + } + } else { + switch (type) { + case "i1": + SAFE_HEAP_STORE(ptr | 0, value | 0, 1); + break; + + case "i8": + SAFE_HEAP_STORE(ptr | 0, value | 0, 1); + break; + + case "i16": + SAFE_HEAP_STORE(ptr | 0, value | 0, 2); + break; + + case "i32": + SAFE_HEAP_STORE(ptr | 0, value | 0, 4); + break; + + case "i64": + tempI64 = [ value >>> 0, (tempDouble = value, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + SAFE_HEAP_STORE(ptr | 0, tempI64[0] | 0, 4), SAFE_HEAP_STORE(ptr + 4 | 0, tempI64[1] | 0, 4); + break; + + case "float": + SAFE_HEAP_STORE_D(ptr | 0, Math.fround(value), 4); + break; + + case "double": + SAFE_HEAP_STORE_D(ptr | 0, +value, 8); + break; + + default: + abort("invalid type for setValue: " + type); + } + } + } + function getValue(ptr, type, noSafe) { + type = type || "i8"; + if (type.charAt(type.length - 1) === "*") type = "i32"; + if (noSafe) { + switch (type) { + case "i1": + return HEAP8[ptr >> 0]; + + case "i8": + return HEAP8[ptr >> 0]; + + case "i16": + return HEAP16[ptr >> 1]; + + case "i32": + return HEAP32[ptr >> 2]; + + case "i64": + return HEAP32[ptr >> 2]; + + case "float": + return HEAPF32[ptr >> 2]; + + case "double": + return HEAPF64[ptr >> 3]; + + default: + abort("invalid type for getValue: " + type); + } + } else { + switch (type) { + case "i1": + return SAFE_HEAP_LOAD(ptr | 0, 1, 0) | 0; + + case "i8": + return SAFE_HEAP_LOAD(ptr | 0, 1, 0) | 0; + + case "i16": + return SAFE_HEAP_LOAD(ptr | 0, 2, 0) | 0; + + case "i32": + return SAFE_HEAP_LOAD(ptr | 0, 4, 0) | 0; + + case "i64": + return SAFE_HEAP_LOAD(ptr | 0, 8, 0) | 0; + + case "float": + return Math.fround(SAFE_HEAP_LOAD_D(ptr | 0, 4, 0)); + + case "double": + return +SAFE_HEAP_LOAD_D(ptr | 0, 8, 0); + + default: + abort("invalid type for getValue: " + type); + } + } + return null; + } + function getSafeHeapType(bytes, isFloat) { + switch (bytes) { + case 1: + return "i8"; + + case 2: + return "i16"; + + case 4: + return isFloat ? "float" : "i32"; + + case 8: + return "double"; + + default: + assert(0); + } + } + function SAFE_HEAP_STORE(dest, value, bytes, isFloat) { + if (dest <= 0) abort("segmentation fault storing " + bytes + " bytes to address " + dest); + if (dest % bytes !== 0) abort("alignment error storing to address " + dest + ", which was expected to be aligned to a multiple of " + bytes); + if (runtimeInitialized) { + var brk = _sbrk() >>> 0; + if (dest + bytes > brk) abort("segmentation fault, exceeded the top of the available dynamic heap when storing " + bytes + " bytes to address " + dest + ". DYNAMICTOP=" + brk); + assert(brk >= _emscripten_stack_get_base()); + assert(brk <= HEAP8.length); + } + setValue(dest, value, getSafeHeapType(bytes, isFloat), 1); + return value; + } + function SAFE_HEAP_STORE_D(dest, value, bytes) { + return SAFE_HEAP_STORE(dest, value, bytes, true); + } + function SAFE_HEAP_LOAD(dest, bytes, unsigned, isFloat) { + if (dest <= 0) abort("segmentation fault loading " + bytes + " bytes from address " + dest); + if (dest % bytes !== 0) abort("alignment error loading from address " + dest + ", which was expected to be aligned to a multiple of " + bytes); + if (runtimeInitialized) { + var brk = _sbrk() >>> 0; + if (dest + bytes > brk) abort("segmentation fault, exceeded the top of the available dynamic heap when loading " + bytes + " bytes from address " + dest + ". DYNAMICTOP=" + brk); + assert(brk >= _emscripten_stack_get_base()); + assert(brk <= HEAP8.length); + } + var type = getSafeHeapType(bytes, isFloat); + var ret = getValue(dest, type, 1); + if (unsigned) ret = unSign(ret, parseInt(type.substr(1), 10)); + return ret; + } + function SAFE_HEAP_LOAD_D(dest, bytes, unsigned) { + return SAFE_HEAP_LOAD(dest, bytes, unsigned, true); + } + function SAFE_FT_MASK(value, mask) { + var ret = value & mask; + if (ret !== value) { + abort("Function table mask error: function pointer is " + value + " which is masked by " + mask + ", the likely cause of this is that the function pointer is being called by the wrong type."); + } + return ret; + } + function segfault() { + abort("segmentation fault"); + } + function alignfault() { + abort("alignment fault"); + } + function ftfault() { + abort("Function table mask error"); + } + var wasmMemory; + var ABORT = false; + var EXITSTATUS; + function assert(condition, text) { + if (!condition) { + abort("Assertion failed: " + text); + } + } + function getCFunc(ident) { + var func = Module["_" + ident]; + assert(func, "Cannot call unknown function " + ident + ", make sure it is exported"); + return func; + } + function ccall(ident, returnType, argTypes, args, opts) { + var toC = { + "string": function(str) { + var ret = 0; + if (str !== null && str !== undefined && str !== 0) { + var len = (str.length << 2) + 1; + ret = stackAlloc(len); + stringToUTF8(str, ret, len); + } + return ret; + }, + "array": function(arr) { + var ret = stackAlloc(arr.length); + writeArrayToMemory(arr, ret); + return ret; + } + }; + function convertReturnValue(ret) { + if (returnType === "string") return UTF8ToString(ret); + if (returnType === "boolean") return Boolean(ret); + return ret; + } + var func = getCFunc(ident); + var cArgs = []; + var stack = 0; + assert(returnType !== "array", 'Return type should not be "array".'); + if (args) { + for (var i = 0; i < args.length; i++) { + var converter = toC[argTypes[i]]; + if (converter) { + if (stack === 0) stack = stackSave(); + cArgs[i] = converter(args[i]); + } else { + cArgs[i] = args[i]; + } + } + } + var ret = func.apply(null, cArgs); + function onDone(ret) { + if (stack !== 0) stackRestore(stack); + return convertReturnValue(ret); + } + ret = onDone(ret); + return ret; + } + function cwrap(ident, returnType, argTypes, opts) { + return function() { + return ccall(ident, returnType, argTypes, arguments, opts); + }; + } + var ALLOC_NORMAL = 0; + var ALLOC_STACK = 1; + function allocate(slab, allocator) { + var ret; + assert(typeof allocator === "number", "allocate no longer takes a type argument"); + assert(typeof slab !== "number", "allocate no longer takes a number as arg0"); + if (allocator == ALLOC_STACK) { + ret = stackAlloc(slab.length); + } else { + ret = _malloc(slab.length); + } + if (slab.subarray || slab.slice) { + HEAPU8.set(slab, ret); + } else { + HEAPU8.set(new Uint8Array(slab), ret); + } + return ret; + } + var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined; + function UTF8ArrayToString(heap, idx, maxBytesToRead) { + var endIdx = idx + maxBytesToRead; + var endPtr = idx; + while (heap[endPtr] && !(endPtr >= endIdx)) ++endPtr; + if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) { + return UTF8Decoder.decode(heap.subarray(idx, endPtr)); + } else { + var str = ""; + while (idx < endPtr) { + var u0 = heap[idx++]; + if (!(u0 & 128)) { + str += String.fromCharCode(u0); + continue; + } + var u1 = heap[idx++] & 63; + if ((u0 & 224) == 192) { + str += String.fromCharCode((u0 & 31) << 6 | u1); + continue; + } + var u2 = heap[idx++] & 63; + if ((u0 & 240) == 224) { + u0 = (u0 & 15) << 12 | u1 << 6 | u2; + } else { + if ((u0 & 248) != 240) warnOnce("Invalid UTF-8 leading byte 0x" + u0.toString(16) + " encountered when deserializing a UTF-8 string in wasm memory to a JS string!"); + u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63; + } + if (u0 < 65536) { + str += String.fromCharCode(u0); + } else { + var ch = u0 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } + } + } + return str; + } + function UTF8ToString(ptr, maxBytesToRead) { + return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : ""; + } + function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) { + if (!(maxBytesToWrite > 0)) return 0; + var startIdx = outIdx; + var endIdx = outIdx + maxBytesToWrite - 1; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) { + var u1 = str.charCodeAt(++i); + u = 65536 + ((u & 1023) << 10) | u1 & 1023; + } + if (u <= 127) { + if (outIdx >= endIdx) break; + heap[outIdx++] = u; + } else if (u <= 2047) { + if (outIdx + 1 >= endIdx) break; + heap[outIdx++] = 192 | u >> 6; + heap[outIdx++] = 128 | u & 63; + } else if (u <= 65535) { + if (outIdx + 2 >= endIdx) break; + heap[outIdx++] = 224 | u >> 12; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } else { + if (outIdx + 3 >= endIdx) break; + if (u >= 2097152) warnOnce("Invalid Unicode code point 0x" + u.toString(16) + " encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x1FFFFF)."); + heap[outIdx++] = 240 | u >> 18; + heap[outIdx++] = 128 | u >> 12 & 63; + heap[outIdx++] = 128 | u >> 6 & 63; + heap[outIdx++] = 128 | u & 63; + } + } + heap[outIdx] = 0; + return outIdx - startIdx; + } + function stringToUTF8(str, outPtr, maxBytesToWrite) { + assert(typeof maxBytesToWrite == "number", "stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite); + } + function lengthBytesUTF8(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var u = str.charCodeAt(i); + if (u >= 55296 && u <= 57343) u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023; + if (u <= 127) ++len; else if (u <= 2047) len += 2; else if (u <= 65535) len += 3; else len += 4; + } + return len; + } + function AsciiToString(ptr) { + var str = ""; + while (1) { + var ch = SAFE_HEAP_LOAD(ptr++ | 0, 1, 1) >>> 0; + if (!ch) return str; + str += String.fromCharCode(ch); + } + } + function stringToAscii(str, outPtr) { + return writeAsciiToMemory(str, outPtr, false); + } + var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined; + function UTF16ToString(ptr, maxBytesToRead) { + assert(ptr % 2 == 0, "Pointer passed to UTF16ToString must be aligned to two bytes!"); + var endPtr = ptr; + var idx = endPtr >> 1; + var maxIdx = idx + maxBytesToRead / 2; + while (!(idx >= maxIdx) && SAFE_HEAP_LOAD(idx * 2, 2, 1)) ++idx; + endPtr = idx << 1; + if (endPtr - ptr > 32 && UTF16Decoder) { + return UTF16Decoder.decode(HEAPU8.subarray(ptr, endPtr)); + } else { + var str = ""; + for (var i = 0; !(i >= maxBytesToRead / 2); ++i) { + var codeUnit = SAFE_HEAP_LOAD(ptr + i * 2 | 0, 2, 0) | 0; + if (codeUnit == 0) break; + str += String.fromCharCode(codeUnit); + } + return str; + } + } + function stringToUTF16(str, outPtr, maxBytesToWrite) { + assert(outPtr % 2 == 0, "Pointer passed to stringToUTF16 must be aligned to two bytes!"); + assert(typeof maxBytesToWrite == "number", "stringToUTF16(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 2) return 0; + maxBytesToWrite -= 2; + var startPtr = outPtr; + var numCharsToWrite = maxBytesToWrite < str.length * 2 ? maxBytesToWrite / 2 : str.length; + for (var i = 0; i < numCharsToWrite; ++i) { + var codeUnit = str.charCodeAt(i); + SAFE_HEAP_STORE(outPtr | 0, codeUnit | 0, 2); + outPtr += 2; + } + SAFE_HEAP_STORE(outPtr | 0, 0 | 0, 2); + return outPtr - startPtr; + } + function lengthBytesUTF16(str) { + return str.length * 2; + } + function UTF32ToString(ptr, maxBytesToRead) { + assert(ptr % 4 == 0, "Pointer passed to UTF32ToString must be aligned to four bytes!"); + var i = 0; + var str = ""; + while (!(i >= maxBytesToRead / 4)) { + var utf32 = SAFE_HEAP_LOAD(ptr + i * 4 | 0, 4, 0) | 0; + if (utf32 == 0) break; + ++i; + if (utf32 >= 65536) { + var ch = utf32 - 65536; + str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023); + } else { + str += String.fromCharCode(utf32); + } + } + return str; + } + function stringToUTF32(str, outPtr, maxBytesToWrite) { + assert(outPtr % 4 == 0, "Pointer passed to stringToUTF32 must be aligned to four bytes!"); + assert(typeof maxBytesToWrite == "number", "stringToUTF32(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"); + if (maxBytesToWrite === undefined) { + maxBytesToWrite = 2147483647; + } + if (maxBytesToWrite < 4) return 0; + var startPtr = outPtr; + var endPtr = startPtr + maxBytesToWrite - 4; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) { + var trailSurrogate = str.charCodeAt(++i); + codeUnit = 65536 + ((codeUnit & 1023) << 10) | trailSurrogate & 1023; + } + SAFE_HEAP_STORE(outPtr | 0, codeUnit | 0, 4); + outPtr += 4; + if (outPtr + 4 > endPtr) break; + } + SAFE_HEAP_STORE(outPtr | 0, 0 | 0, 4); + return outPtr - startPtr; + } + function lengthBytesUTF32(str) { + var len = 0; + for (var i = 0; i < str.length; ++i) { + var codeUnit = str.charCodeAt(i); + if (codeUnit >= 55296 && codeUnit <= 57343) ++i; + len += 4; + } + return len; + } + function allocateUTF8(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = _malloc(size); + if (ret) stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function allocateUTF8OnStack(str) { + var size = lengthBytesUTF8(str) + 1; + var ret = stackAlloc(size); + stringToUTF8Array(str, HEAP8, ret, size); + return ret; + } + function writeStringToMemory(string, buffer, dontAddNull) { + warnOnce("writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!"); + var lastChar, end; + if (dontAddNull) { + end = buffer + lengthBytesUTF8(string); + lastChar = SAFE_HEAP_LOAD(end, 1, 0); + } + stringToUTF8(string, buffer, Infinity); + if (dontAddNull) SAFE_HEAP_STORE(end, lastChar, 1); + } + function writeArrayToMemory(array, buffer) { + assert(array.length >= 0, "writeArrayToMemory array must have a length (should be an array or typed array)"); + HEAP8.set(array, buffer); + } + function writeAsciiToMemory(str, buffer, dontAddNull) { + for (var i = 0; i < str.length; ++i) { + assert(str.charCodeAt(i) === str.charCodeAt(i) & 255); + SAFE_HEAP_STORE(buffer++ | 0, str.charCodeAt(i) | 0, 1); + } + if (!dontAddNull) SAFE_HEAP_STORE(buffer | 0, 0 | 0, 1); + } + function alignUp(x, multiple) { + if (x % multiple > 0) { + x += multiple - x % multiple; + } + return x; + } + var HEAP, buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; + function updateGlobalBufferAndViews(buf) { + buffer = buf; + Module["HEAP8"] = HEAP8 = new Int8Array(buf); + Module["HEAP16"] = HEAP16 = new Int16Array(buf); + Module["HEAP32"] = HEAP32 = new Int32Array(buf); + Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf); + Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf); + Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf); + Module["HEAPF32"] = HEAPF32 = new Float32Array(buf); + Module["HEAPF64"] = HEAPF64 = new Float64Array(buf); + } + var TOTAL_STACK = 5242880; + if (Module["TOTAL_STACK"]) assert(TOTAL_STACK === Module["TOTAL_STACK"], "the stack size can no longer be determined at runtime"); + var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 33554432; + if (!Object.getOwnPropertyDescriptor(Module, "INITIAL_MEMORY")) { + Object.defineProperty(Module, "INITIAL_MEMORY", { + configurable: true, + get: function() { + abort("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)"); + } + }); + } + assert(INITIAL_MEMORY >= TOTAL_STACK, "INITIAL_MEMORY should be larger than TOTAL_STACK, was " + INITIAL_MEMORY + "! (TOTAL_STACK=" + TOTAL_STACK + ")"); + assert(typeof Int32Array !== "undefined" && typeof Float64Array !== "undefined" && Int32Array.prototype.subarray !== undefined && Int32Array.prototype.set !== undefined, "JS engine does not provide full typed array support"); + if (Module["wasmMemory"]) { + wasmMemory = Module["wasmMemory"]; + } else { + wasmMemory = new WebAssembly.Memory({ + "initial": INITIAL_MEMORY / 65536, + "maximum": 2147483648 / 65536 + }); + } + if (wasmMemory) { + buffer = wasmMemory.buffer; + } + INITIAL_MEMORY = buffer.byteLength; + assert(INITIAL_MEMORY % 65536 === 0); + updateGlobalBufferAndViews(buffer); + var wasmTable = new WebAssembly.Table({ + "initial": 21, + "element": "anyfunc" + }); + function writeStackCookie() { + var max = _emscripten_stack_get_end(); + assert((max & 3) == 0); + SAFE_HEAP_STORE(((max >> 2) + 1) * 4, 34821223, 4); + SAFE_HEAP_STORE(((max >> 2) + 2) * 4, 2310721022, 4); + } + function checkStackCookie() { + if (ABORT) return; + var max = _emscripten_stack_get_end(); + var cookie1 = SAFE_HEAP_LOAD(((max >> 2) + 1) * 4, 4, 1); + var cookie2 = SAFE_HEAP_LOAD(((max >> 2) + 2) * 4, 4, 1); + if (cookie1 != 34821223 || cookie2 != 2310721022) { + abort("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x" + cookie2.toString(16) + " " + cookie1.toString(16)); + } + } + (function() { + var h16 = new Int16Array(1); + var h8 = new Int8Array(h16.buffer); + h16[0] = 25459; + if (h8[0] !== 115 || h8[1] !== 99) throw "Runtime error: expected the system to be little-endian! (Run with -s SUPPORT_BIG_ENDIAN=1 to bypass)"; + })(); + var __ATPRERUN__ = []; + var __ATINIT__ = []; + var __ATMAIN__ = []; + var __ATEXIT__ = []; + var __ATPOSTRUN__ = []; + var runtimeInitialized = false; + var runtimeExited = false; + var runtimeKeepaliveCounter = 0; + function keepRuntimeAlive() { + return noExitRuntime || runtimeKeepaliveCounter > 0; + } + function preRun() { + if (Module["preRun"]) { + if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ]; + while (Module["preRun"].length) { + addOnPreRun(Module["preRun"].shift()); + } + } + callRuntimeCallbacks(__ATPRERUN__); + } + function initRuntime() { + checkStackCookie(); + assert(!runtimeInitialized); + runtimeInitialized = true; + callRuntimeCallbacks(__ATINIT__); + } + function preMain() { + checkStackCookie(); + callRuntimeCallbacks(__ATMAIN__); + } + function exitRuntime() { + checkStackCookie(); + runtimeExited = true; + } + function postRun() { + checkStackCookie(); + if (Module["postRun"]) { + if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ]; + while (Module["postRun"].length) { + addOnPostRun(Module["postRun"].shift()); + } + } + callRuntimeCallbacks(__ATPOSTRUN__); + } + function addOnPreRun(cb) { + __ATPRERUN__.unshift(cb); + } + function addOnInit(cb) { + __ATINIT__.unshift(cb); + } + function addOnPreMain(cb) { + __ATMAIN__.unshift(cb); + } + function addOnExit(cb) {} + function addOnPostRun(cb) { + __ATPOSTRUN__.unshift(cb); + } + assert(Math.imul, "This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.fround, "This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.clz32, "This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + assert(Math.trunc, "This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"); + var runDependencies = 0; + var runDependencyWatcher = null; + var dependenciesFulfilled = null; + var runDependencyTracking = {}; + function getUniqueRunDependency(id) { + var orig = id; + while (1) { + if (!runDependencyTracking[id]) return id; + id = orig + Math.random(); + } + } + function addRunDependency(id) { + runDependencies++; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(!runDependencyTracking[id]); + runDependencyTracking[id] = 1; + if (runDependencyWatcher === null && typeof setInterval !== "undefined") { + runDependencyWatcher = setInterval(function() { + if (ABORT) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + return; + } + var shown = false; + for (var dep in runDependencyTracking) { + if (!shown) { + shown = true; + err("still waiting on run dependencies:"); + } + err("dependency: " + dep); + } + if (shown) { + err("(end of list)"); + } + }, 1e4); + } + } else { + err("warning: run dependency added without ID"); + } + } + function removeRunDependency(id) { + runDependencies--; + if (Module["monitorRunDependencies"]) { + Module["monitorRunDependencies"](runDependencies); + } + if (id) { + assert(runDependencyTracking[id]); + delete runDependencyTracking[id]; + } else { + err("warning: run dependency removed without ID"); + } + if (runDependencies == 0) { + if (runDependencyWatcher !== null) { + clearInterval(runDependencyWatcher); + runDependencyWatcher = null; + } + if (dependenciesFulfilled) { + var callback = dependenciesFulfilled; + dependenciesFulfilled = null; + callback(); + } + } + } + Module["preloadedImages"] = {}; + Module["preloadedAudios"] = {}; + Module["preloadedWasm"] = {}; + function abort(what) { + if (Module["onAbort"]) { + Module["onAbort"](what); + } + what += ""; + err(what); + ABORT = true; + EXITSTATUS = 1; + var output = "abort(" + what + ") at " + stackTrace(); + what = output; + var e = new WebAssembly.RuntimeError(what); + throw e; + } + var FS = { + error: function() { + abort("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1"); + }, + init: function() { + FS.error(); + }, + createDataFile: function() { + FS.error(); + }, + createPreloadedFile: function() { + FS.error(); + }, + createLazyFile: function() { + FS.error(); + }, + open: function() { + FS.error(); + }, + mkdev: function() { + FS.error(); + }, + registerDevice: function() { + FS.error(); + }, + analyzePath: function() { + FS.error(); + }, + loadFilesFromDB: function() { + FS.error(); + }, + ErrnoError: function ErrnoError() { + FS.error(); + } + }; + Module["FS_createDataFile"] = FS.createDataFile; + Module["FS_createPreloadedFile"] = FS.createPreloadedFile; + var dataURIPrefix = "data:application/octet-stream;base64,"; + function isDataURI(filename) { + return filename.startsWith(dataURIPrefix); + } + function isFileURI(filename) { + return filename.startsWith("file://"); + } + function createExportWrapper(name, fixedasm) { + return function() { + var displayName = name; + var asm = fixedasm; + if (!fixedasm) { + asm = Module["asm"]; + } + assert(runtimeInitialized, "native function `" + displayName + "` called before runtime initialization"); + assert(!runtimeExited, "native function `" + displayName + "` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"); + if (!asm[name]) { + assert(asm[name], "exported native function `" + displayName + "` not found"); + } + return asm[name].apply(null, arguments); + }; + } + var wasmBinaryFile; + wasmBinaryFile = "tree-sitter.wasm"; + if (!isDataURI(wasmBinaryFile)) { + wasmBinaryFile = locateFile(wasmBinaryFile); + } + function getBinary(file) { + try { + if (file == wasmBinaryFile && wasmBinary) { + return new Uint8Array(wasmBinary); + } + if (readBinary) { + return readBinary(file); + } else { + throw "both async and sync fetching of the wasm failed"; + } + } catch (err) { + abort(err); + } + } + function getBinaryPromise() { + if (!wasmBinary && (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER)) { + if (typeof fetch === "function" && !isFileURI(wasmBinaryFile)) { + return fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then(function(response) { + if (!response["ok"]) { + throw "failed to load wasm binary file at '" + wasmBinaryFile + "'"; + } + return response["arrayBuffer"](); + }).catch(function() { + return getBinary(wasmBinaryFile); + }); + } else { + if (readAsync) { + return new Promise(function(resolve, reject) { + readAsync(wasmBinaryFile, function(response) { + resolve(new Uint8Array(response)); + }, reject); + }); + } + } + } + return Promise.resolve().then(function() { + return getBinary(wasmBinaryFile); + }); + } + function createWasm() { + var info = { + "env": asmLibraryArg, + "wasi_snapshot_preview1": asmLibraryArg, + "GOT.mem": new Proxy(asmLibraryArg, GOTHandler), + "GOT.func": new Proxy(asmLibraryArg, GOTHandler) + }; + function receiveInstance(instance, module) { + var exports = instance.exports; + exports = relocateExports(exports, 1024); + Module["asm"] = exports; + var metadata = getDylinkMetadata(module); + if (metadata.neededDynlibs) { + dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries); + } + mergeLibSymbols(exports, "main"); + addOnInit(Module["asm"]["__wasm_call_ctors"]); + removeRunDependency("wasm-instantiate"); + } + addRunDependency("wasm-instantiate"); + var trueModule = Module; + function receiveInstantiationResult(result) { + assert(Module === trueModule, "the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"); + trueModule = null; + receiveInstance(result["instance"], result["module"]); + } + function instantiateArrayBuffer(receiver) { + return getBinaryPromise().then(function(binary) { + return WebAssembly.instantiate(binary, info); + }).then(function(instance) { + return instance; + }).then(receiver, function(reason) { + err("failed to asynchronously prepare wasm: " + reason); + if (isFileURI(wasmBinaryFile)) { + err("warning: Loading from a file URI (" + wasmBinaryFile + ") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"); + } + abort(reason); + }); + } + function instantiateAsync() { + if (!wasmBinary && typeof WebAssembly.instantiateStreaming === "function" && !isDataURI(wasmBinaryFile) && !isFileURI(wasmBinaryFile) && typeof fetch === "function") { + return fetch(wasmBinaryFile, { + credentials: "same-origin" + }).then(function(response) { + var result = WebAssembly.instantiateStreaming(response, info); + return result.then(receiveInstantiationResult, function(reason) { + err("wasm streaming compile failed: " + reason); + err("falling back to ArrayBuffer instantiation"); + return instantiateArrayBuffer(receiveInstantiationResult); + }); + }); + } else { + return instantiateArrayBuffer(receiveInstantiationResult); + } + } + if (Module["instantiateWasm"]) { + try { + var exports = Module["instantiateWasm"](info, receiveInstance); + return exports; + } catch (e) { + err("Module.instantiateWasm callback failed with error: " + e); + return false; + } + } + instantiateAsync(); + return {}; + } + var tempDouble; + var tempI64; + var ASM_CONSTS = {}; + var GOT = {}; + var GOTHandler = { + get: function(obj, symName) { + if (!GOT[symName]) { + GOT[symName] = new WebAssembly.Global({ + "value": "i32", + "mutable": true + }); + } + return GOT[symName]; + } + }; + function callRuntimeCallbacks(callbacks) { + while (callbacks.length > 0) { + var callback = callbacks.shift(); + if (typeof callback == "function") { + callback(Module); + continue; + } + var func = callback.func; + if (typeof func === "number") { + if (callback.arg === undefined) { + wasmTable.get(func)(); + } else { + wasmTable.get(func)(callback.arg); + } + } else { + func(callback.arg === undefined ? null : callback.arg); + } + } + } + function demangle(func) { + warnOnce("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"); + return func; + } + function demangleAll(text) { + var regex = /\b_Z[\w\d_]+/g; + return text.replace(regex, function(x) { + var y = demangle(x); + return x === y ? x : y + " [" + x + "]"; + }); + } + function getDylinkMetadata(binary) { + var next = 0; + function getLEB() { + var ret = 0; + var mul = 1; + while (1) { + var byte = binary[next++]; + ret += (byte & 127) * mul; + mul *= 128; + if (!(byte & 128)) break; + } + return ret; + } + if (binary instanceof WebAssembly.Module) { + var dylinkSection = WebAssembly.Module.customSections(binary, "dylink"); + assert(dylinkSection.length != 0, "need dylink section"); + binary = new Int8Array(dylinkSection[0]); + } else { + var int32View = new Uint32Array(new Uint8Array(binary.subarray(0, 24)).buffer); + assert(int32View[0] == 1836278016, "need to see wasm magic number"); + assert(binary[8] === 0, "need the dylink section to be first"); + next = 9; + getLEB(); + assert(binary[next] === 6); + next++; + assert(binary[next] === "d".charCodeAt(0)); + next++; + assert(binary[next] === "y".charCodeAt(0)); + next++; + assert(binary[next] === "l".charCodeAt(0)); + next++; + assert(binary[next] === "i".charCodeAt(0)); + next++; + assert(binary[next] === "n".charCodeAt(0)); + next++; + assert(binary[next] === "k".charCodeAt(0)); + next++; + } + var customSection = {}; + customSection.memorySize = getLEB(); + customSection.memoryAlign = getLEB(); + customSection.tableSize = getLEB(); + customSection.tableAlign = getLEB(); + var tableAlign = Math.pow(2, customSection.tableAlign); + assert(tableAlign === 1, "invalid tableAlign " + tableAlign); + var neededDynlibsCount = getLEB(); + customSection.neededDynlibs = []; + for (var i = 0; i < neededDynlibsCount; ++i) { + var nameLen = getLEB(); + var nameUTF8 = binary.subarray(next, next + nameLen); + next += nameLen; + var name = UTF8ArrayToString(nameUTF8, 0); + customSection.neededDynlibs.push(name); + } + return customSection; + } + function jsStackTrace() { + var error = new Error(); + if (!error.stack) { + try { + throw new Error(); + } catch (e) { + error = e; + } + if (!error.stack) { + return "(no stack trace available)"; + } + } + return error.stack.toString(); + } + function asmjsMangle(x) { + var unmangledSymbols = [ "stackAlloc", "stackSave", "stackRestore" ]; + return x.indexOf("dynCall_") == 0 || unmangledSymbols.includes(x) ? x : "_" + x; + } + function mergeLibSymbols(exports, libName) { + for (var sym in exports) { + if (!exports.hasOwnProperty(sym)) { + continue; + } + if (!asmLibraryArg.hasOwnProperty(sym)) { + asmLibraryArg[sym] = exports[sym]; + } + var module_sym = asmjsMangle(sym); + if (!Module.hasOwnProperty(module_sym)) { + Module[module_sym] = exports[sym]; + } + } + } + var LDSO = { + nextHandle: 1, + loadedLibs: {}, + loadedLibNames: {} + }; + function dynCallLegacy(sig, ptr, args) { + assert("dynCall_" + sig in Module, "bad function pointer type - no table for sig '" + sig + "'"); + if (args && args.length) { + assert(args.length === sig.substring(1).replace(/j/g, "--").length); + } else { + assert(sig.length == 1); + } + var f = Module["dynCall_" + sig]; + return args && args.length ? f.apply(null, [ ptr ].concat(args)) : f.call(null, ptr); + } + function dynCall(sig, ptr, args) { + if (sig.includes("j")) { + return dynCallLegacy(sig, ptr, args); + } + assert(wasmTable.get(ptr), "missing table entry in dynCall: " + ptr); + return wasmTable.get(ptr).apply(null, args); + } + function createInvokeFunction(sig) { + return function() { + var sp = stackSave(); + try { + return dynCall(sig, arguments[0], Array.prototype.slice.call(arguments, 1)); + } catch (e) { + stackRestore(sp); + if (e !== e + 0 && e !== "longjmp") throw e; + _setThrew(1, 0); + } + }; + } + var ___heap_base = 5251008; + Module["___heap_base"] = ___heap_base; + function getMemory(size) { + if (runtimeInitialized) return _malloc(size); + var ret = ___heap_base; + var end = ret + size + 15 & -16; + assert(end <= HEAP8.length, "failure to getMemory - memory growth etc. is not supported there, call malloc/sbrk directly or increase INITIAL_MEMORY"); + ___heap_base = end; + GOT["__heap_base"].value = end; + return ret; + } + function isInternalSym(symName) { + return [ "__cpp_exception", "__wasm_apply_data_relocs", "__dso_handle", "__set_stack_limits" ].includes(symName); + } + function updateGOT(exports) { + for (var symName in exports) { + if (isInternalSym(symName)) { + continue; + } + var replace = false; + var value = exports[symName]; + if (symName.startsWith("orig$")) { + symName = symName.split("$")[1]; + replace = true; + } + if (!GOT[symName]) { + GOT[symName] = new WebAssembly.Global({ + "value": "i32", + "mutable": true + }); + } + if (replace || GOT[symName].value == 0) { + if (typeof value === "function") { + GOT[symName].value = addFunctionWasm(value); + } else if (typeof value === "number") { + GOT[symName].value = value; + } else { + err("unhandled export type for `" + symName + "`: " + typeof value); + } + } + } + } + function relocateExports(exports, memoryBase) { + var relocated = {}; + for (var e in exports) { + var value = exports[e]; + if (typeof value === "object") { + value = value.value; + } + if (typeof value === "number") { + value += memoryBase; + } + relocated[e] = value; + } + updateGOT(relocated); + return relocated; + } + function resolveGlobalSymbol(symName, direct) { + var sym; + if (direct) { + sym = asmLibraryArg["orig$" + symName]; + } + if (!sym) { + sym = asmLibraryArg[symName]; + } + if (!sym) { + sym = Module[asmjsMangle(symName)]; + } + if (!sym && symName.startsWith("invoke_")) { + sym = createInvokeFunction(symName.split("_")[1]); + } + return sym; + } + function alignMemory(size, alignment) { + assert(alignment, "alignment argument is required"); + return Math.ceil(size / alignment) * alignment; + } + function loadWebAssemblyModule(binary, flags) { + var metadata = getDylinkMetadata(binary); + var originalTable = wasmTable; + function loadModule() { + var memAlign = Math.pow(2, metadata.memoryAlign); + memAlign = Math.max(memAlign, STACK_ALIGN); + var memoryBase = alignMemory(getMemory(metadata.memorySize + memAlign), memAlign); + var tableBase = wasmTable.length; + wasmTable.grow(metadata.tableSize); + for (var i = memoryBase; i < memoryBase + metadata.memorySize; i++) { + SAFE_HEAP_STORE(i, 0, 1); + } + for (var i = tableBase; i < tableBase + metadata.tableSize; i++) { + wasmTable.set(i, null); + } + var moduleExports; + function resolveSymbol(sym) { + var resolved = resolveGlobalSymbol(sym, false); + if (!resolved) { + resolved = moduleExports[sym]; + } + assert(resolved, "undefined symbol `" + sym + "`. perhaps a side module was not linked in? if this global was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment"); + return resolved; + } + var proxyHandler = { + "get": function(stubs, prop) { + switch (prop) { + case "__memory_base": + return memoryBase; + + case "__table_base": + return tableBase; + } + if (prop in asmLibraryArg) { + return asmLibraryArg[prop]; + } + if (!(prop in stubs)) { + var resolved; + stubs[prop] = function() { + if (!resolved) resolved = resolveSymbol(prop, true); + return resolved.apply(null, arguments); + }; + } + return stubs[prop]; + } + }; + var proxy = new Proxy({}, proxyHandler); + var info = { + "GOT.mem": new Proxy({}, GOTHandler), + "GOT.func": new Proxy({}, GOTHandler), + "env": proxy, + wasi_snapshot_preview1: proxy + }; + function postInstantiation(instance) { + assert(wasmTable === originalTable); + for (var i = 0; i < metadata.tableSize; i++) { + var item = wasmTable.get(tableBase + i); + assert(item !== undefined, "table entry was not filled in"); + if (item) { + functionsInTableMap.set(item, tableBase + i); + } + } + moduleExports = relocateExports(instance.exports, memoryBase); + if (!flags.allowUndefined) { + reportUndefinedSymbols(); + } + var init = moduleExports["__wasm_call_ctors"]; + if (!init) { + init = moduleExports["__post_instantiate"]; + } + if (init) { + if (runtimeInitialized) { + init(); + } else { + __ATINIT__.push(init); + } + } + return moduleExports; + } + if (flags.loadAsync) { + if (binary instanceof WebAssembly.Module) { + var instance = new WebAssembly.Instance(binary, info); + return Promise.resolve(postInstantiation(instance)); + } + return WebAssembly.instantiate(binary, info).then(function(result) { + return postInstantiation(result.instance); + }); + } + var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary); + var instance = new WebAssembly.Instance(module, info); + return postInstantiation(instance); + } + if (flags.loadAsync) { + return metadata.neededDynlibs.reduce(function(chain, dynNeeded) { + return chain.then(function() { + return loadDynamicLibrary(dynNeeded, flags); + }); + }, Promise.resolve()).then(function() { + return loadModule(); + }); + } + metadata.neededDynlibs.forEach(function(dynNeeded) { + loadDynamicLibrary(dynNeeded, flags); + }); + return loadModule(); + } + function loadDynamicLibrary(lib, flags) { + if (lib == "__main__" && !LDSO.loadedLibNames[lib]) { + LDSO.loadedLibs[-1] = { + refcount: Infinity, + name: "__main__", + module: Module["asm"], + global: true + }; + LDSO.loadedLibNames["__main__"] = -1; + } + flags = flags || { + global: true, + nodelete: true + }; + var handle = LDSO.loadedLibNames[lib]; + var dso; + if (handle) { + dso = LDSO.loadedLibs[handle]; + if (flags.global && !dso.global) { + dso.global = true; + if (dso.module !== "loading") { + mergeLibSymbols(dso.module, lib); + } + } + if (flags.nodelete && dso.refcount !== Infinity) { + dso.refcount = Infinity; + } + dso.refcount++; + return flags.loadAsync ? Promise.resolve(handle) : handle; + } + handle = LDSO.nextHandle++; + dso = { + refcount: flags.nodelete ? Infinity : 1, + name: lib, + module: "loading", + global: flags.global + }; + LDSO.loadedLibNames[lib] = handle; + LDSO.loadedLibs[handle] = dso; + function loadLibData(libFile) { + if (flags.fs && flags.fs.findObject(libFile)) { + var libData = flags.fs.readFile(libFile, { + encoding: "binary" + }); + if (!(libData instanceof Uint8Array)) { + libData = new Uint8Array(libData); + } + return flags.loadAsync ? Promise.resolve(libData) : libData; + } + if (flags.loadAsync) { + return new Promise(function(resolve, reject) { + readAsync(libFile, function(data) { + resolve(new Uint8Array(data)); + }, reject); + }); + } + if (!readBinary) { + throw new Error(libFile + ": file not found, and synchronous loading of external files is not available"); + } + return readBinary(libFile); + } + function getLibModule() { + if (Module["preloadedWasm"] !== undefined && Module["preloadedWasm"][lib] !== undefined) { + var libModule = Module["preloadedWasm"][lib]; + return flags.loadAsync ? Promise.resolve(libModule) : libModule; + } + if (flags.loadAsync) { + return loadLibData(lib).then(function(libData) { + return loadWebAssemblyModule(libData, flags); + }); + } + return loadWebAssemblyModule(loadLibData(lib), flags); + } + function moduleLoaded(libModule) { + if (dso.global) { + mergeLibSymbols(libModule, lib); + } + dso.module = libModule; + } + if (flags.loadAsync) { + return getLibModule().then(function(libModule) { + moduleLoaded(libModule); + return handle; + }); + } + moduleLoaded(getLibModule()); + return handle; + } + function reportUndefinedSymbols() { + for (var symName in GOT) { + if (GOT[symName].value == 0) { + var value = resolveGlobalSymbol(symName, true); + assert(value, "undefined symbol `" + symName + "`. perhaps a side module was not linked in? if this global was expected to arrive from a system library, try to build the MAIN_MODULE with EMCC_FORCE_STDLIBS=1 in the environment"); + if (typeof value === "function") { + GOT[symName].value = addFunctionWasm(value, value.sig); + } else if (typeof value === "number") { + GOT[symName].value = value; + } else { + assert(false, "bad export type for `" + symName + "`: " + typeof value); + } + } + } + } + function preloadDylibs() { + if (!dynamicLibraries.length) { + reportUndefinedSymbols(); + return; + } + addRunDependency("preloadDylibs"); + dynamicLibraries.reduce(function(chain, lib) { + return chain.then(function() { + return loadDynamicLibrary(lib, { + loadAsync: true, + global: true, + nodelete: true, + allowUndefined: true + }); + }); + }, Promise.resolve()).then(function() { + reportUndefinedSymbols(); + removeRunDependency("preloadDylibs"); + }); + } + function stackTrace() { + var js = jsStackTrace(); + if (Module["extraStackTrace"]) js += "\n" + Module["extraStackTrace"](); + return demangleAll(js); + } + function unSign(value, bits) { + if (value >= 0) { + return value; + } + return bits <= 32 ? 2 * Math.abs(1 << bits - 1) + value : Math.pow(2, bits) + value; + } + var ___stack_pointer = new WebAssembly.Global({ + "value": "i32", + "mutable": true + }, 5251008); + function _abort() { + abort(); + } + Module["_abort"] = _abort; + _abort.sig = "v"; + var _emscripten_get_now; + if (ENVIRONMENT_IS_NODE) { + _emscripten_get_now = function() { + var t = process["hrtime"](); + return t[0] * 1e3 + t[1] / 1e6; + }; + } else _emscripten_get_now = function() { + return performance.now(); + }; + var _emscripten_get_now_is_monotonic = true; + function setErrNo(value) { + SAFE_HEAP_STORE(___errno_location() | 0, value | 0, 4); + return value; + } + function _clock_gettime(clk_id, tp) { + var now; + if (clk_id === 0) { + now = Date.now(); + } else if ((clk_id === 1 || clk_id === 4) && _emscripten_get_now_is_monotonic) { + now = _emscripten_get_now(); + } else { + setErrNo(28); + return -1; + } + SAFE_HEAP_STORE(tp | 0, now / 1e3 | 0 | 0, 4); + SAFE_HEAP_STORE(tp + 4 | 0, now % 1e3 * 1e3 * 1e3 | 0 | 0, 4); + return 0; + } + _clock_gettime.sig = "iii"; + function _emscripten_memcpy_big(dest, src, num) { + HEAPU8.copyWithin(dest, src, src + num); + } + function emscripten_realloc_buffer(size) { + try { + wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16); + updateGlobalBufferAndViews(wasmMemory.buffer); + return 1; + } catch (e) { + err("emscripten_realloc_buffer: Attempted to grow heap from " + buffer.byteLength + " bytes to " + size + " bytes, but got error: " + e); + } + } + function _emscripten_resize_heap(requestedSize) { + var oldSize = HEAPU8.length; + requestedSize = requestedSize >>> 0; + assert(requestedSize > oldSize); + var maxHeapSize = 2147483648; + if (requestedSize > maxHeapSize) { + err("Cannot enlarge memory, asked to go up to " + requestedSize + " bytes, but the limit is " + maxHeapSize + " bytes!"); + return false; + } + for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { + var overGrownHeapSize = oldSize * (1 + .2 / cutDown); + overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); + var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)); + var replacement = emscripten_realloc_buffer(newSize); + if (replacement) { + return true; + } + } + err("Failed to grow the heap from " + oldSize + " bytes to " + newSize + " bytes, not enough memory!"); + return false; + } + function _exit(status) { + exit(status); + } + _exit.sig = "vi"; + var SYSCALLS = { + mappings: {}, + DEFAULT_POLLMASK: 5, + umask: 511, + calculateAt: function(dirfd, path, allowEmpty) { + if (path[0] === "/") { + return path; + } + var dir; + if (dirfd === -100) { + dir = FS.cwd(); + } else { + var dirstream = FS.getStream(dirfd); + if (!dirstream) throw new FS.ErrnoError(8); + dir = dirstream.path; + } + if (path.length == 0) { + if (!allowEmpty) { + throw new FS.ErrnoError(44); + } + return dir; + } + return PATH.join2(dir, path); + }, + doStat: function(func, path, buf) { + try { + var stat = func(path); + } catch (e) { + if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) { + return -54; + } + throw e; + } + SAFE_HEAP_STORE(buf | 0, stat.dev | 0, 4); + SAFE_HEAP_STORE(buf + 4 | 0, 0 | 0, 4); + SAFE_HEAP_STORE(buf + 8 | 0, stat.ino | 0, 4); + SAFE_HEAP_STORE(buf + 12 | 0, stat.mode | 0, 4); + SAFE_HEAP_STORE(buf + 16 | 0, stat.nlink | 0, 4); + SAFE_HEAP_STORE(buf + 20 | 0, stat.uid | 0, 4); + SAFE_HEAP_STORE(buf + 24 | 0, stat.gid | 0, 4); + SAFE_HEAP_STORE(buf + 28 | 0, stat.rdev | 0, 4); + SAFE_HEAP_STORE(buf + 32 | 0, 0 | 0, 4); + tempI64 = [ stat.size >>> 0, (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + SAFE_HEAP_STORE(buf + 40 | 0, tempI64[0] | 0, 4), SAFE_HEAP_STORE(buf + 44 | 0, tempI64[1] | 0, 4); + SAFE_HEAP_STORE(buf + 48 | 0, 4096 | 0, 4); + SAFE_HEAP_STORE(buf + 52 | 0, stat.blocks | 0, 4); + SAFE_HEAP_STORE(buf + 56 | 0, stat.atime.getTime() / 1e3 | 0 | 0, 4); + SAFE_HEAP_STORE(buf + 60 | 0, 0 | 0, 4); + SAFE_HEAP_STORE(buf + 64 | 0, stat.mtime.getTime() / 1e3 | 0 | 0, 4); + SAFE_HEAP_STORE(buf + 68 | 0, 0 | 0, 4); + SAFE_HEAP_STORE(buf + 72 | 0, stat.ctime.getTime() / 1e3 | 0 | 0, 4); + SAFE_HEAP_STORE(buf + 76 | 0, 0 | 0, 4); + tempI64 = [ stat.ino >>> 0, (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + SAFE_HEAP_STORE(buf + 80 | 0, tempI64[0] | 0, 4), SAFE_HEAP_STORE(buf + 84 | 0, tempI64[1] | 0, 4); + return 0; + }, + doMsync: function(addr, stream, len, flags, offset) { + var buffer = HEAPU8.slice(addr, addr + len); + FS.msync(stream, buffer, offset, len, flags); + }, + doMkdir: function(path, mode) { + path = PATH.normalize(path); + if (path[path.length - 1] === "/") path = path.substr(0, path.length - 1); + FS.mkdir(path, mode, 0); + return 0; + }, + doMknod: function(path, mode, dev) { + switch (mode & 61440) { + case 32768: + case 8192: + case 24576: + case 4096: + case 49152: + break; + + default: + return -28; + } + FS.mknod(path, mode, dev); + return 0; + }, + doReadlink: function(path, buf, bufsize) { + if (bufsize <= 0) return -28; + var ret = FS.readlink(path); + var len = Math.min(bufsize, lengthBytesUTF8(ret)); + var endChar = SAFE_HEAP_LOAD(buf + len, 1, 0); + stringToUTF8(ret, buf, bufsize + 1); + SAFE_HEAP_STORE(buf + len, endChar, 1); + return len; + }, + doAccess: function(path, amode) { + if (amode & ~7) { + return -28; + } + var node; + var lookup = FS.lookupPath(path, { + follow: true + }); + node = lookup.node; + if (!node) { + return -44; + } + var perms = ""; + if (amode & 4) perms += "r"; + if (amode & 2) perms += "w"; + if (amode & 1) perms += "x"; + if (perms && FS.nodePermissions(node, perms)) { + return -2; + } + return 0; + }, + doDup: function(path, flags, suggestFD) { + var suggest = FS.getStream(suggestFD); + if (suggest) FS.close(suggest); + return FS.open(path, flags, 0, suggestFD, suggestFD).fd; + }, + doReadv: function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = SAFE_HEAP_LOAD(iov + i * 8 | 0, 4, 0) | 0; + var len = SAFE_HEAP_LOAD(iov + (i * 8 + 4) | 0, 4, 0) | 0; + var curr = FS.read(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + if (curr < len) break; + } + return ret; + }, + doWritev: function(stream, iov, iovcnt, offset) { + var ret = 0; + for (var i = 0; i < iovcnt; i++) { + var ptr = SAFE_HEAP_LOAD(iov + i * 8 | 0, 4, 0) | 0; + var len = SAFE_HEAP_LOAD(iov + (i * 8 + 4) | 0, 4, 0) | 0; + var curr = FS.write(stream, HEAP8, ptr, len, offset); + if (curr < 0) return -1; + ret += curr; + } + return ret; + }, + varargs: undefined, + get: function() { + assert(SYSCALLS.varargs != undefined); + SYSCALLS.varargs += 4; + var ret = SAFE_HEAP_LOAD(SYSCALLS.varargs - 4 | 0, 4, 0) | 0; + return ret; + }, + getStr: function(ptr) { + var ret = UTF8ToString(ptr); + return ret; + }, + getStreamFromFD: function(fd) { + var stream = FS.getStream(fd); + if (!stream) throw new FS.ErrnoError(8); + return stream; + }, + get64: function(low, high) { + if (low >= 0) assert(high === 0); else assert(high === -1); + return low; + } + }; + function _fd_close(fd) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + FS.close(stream); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + _fd_close.sig = "ii"; + function _fd_seek(fd, offset_low, offset_high, whence, newOffset) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var HIGH_OFFSET = 4294967296; + var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0); + var DOUBLE_LIMIT = 9007199254740992; + if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) { + return -61; + } + FS.llseek(stream, offset, whence); + tempI64 = [ stream.position >>> 0, (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0) ], + SAFE_HEAP_STORE(newOffset | 0, tempI64[0] | 0, 4), SAFE_HEAP_STORE(newOffset + 4 | 0, tempI64[1] | 0, 4); + if (stream.getdents && offset === 0 && whence === 0) stream.getdents = null; + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + function _fd_write(fd, iov, iovcnt, pnum) { + try { + var stream = SYSCALLS.getStreamFromFD(fd); + var num = SYSCALLS.doWritev(stream, iov, iovcnt); + SAFE_HEAP_STORE(pnum | 0, num | 0, 4); + return 0; + } catch (e) { + if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError)) abort(e); + return e.errno; + } + } + _fd_write.sig = "iiiii"; + function _setTempRet0(val) { + setTempRet0(val); + } + _setTempRet0.sig = "vi"; + function _tree_sitter_log_callback(isLexMessage, messageAddress) { + if (currentLogCallback) { + const message = UTF8ToString(messageAddress); + currentLogCallback(message, isLexMessage !== 0); + } + } + function _tree_sitter_parse_callback(inputBufferAddress, index, row, column, lengthAddress) { + var INPUT_BUFFER_SIZE = 10 * 1024; + var string = currentParseCallback(index, { + row: row, + column: column + }); + if (typeof string === "string") { + setValue(lengthAddress, string.length, "i32"); + stringToUTF16(string, inputBufferAddress, INPUT_BUFFER_SIZE); + } else { + setValue(lengthAddress, 0, "i32"); + } + } + var ___memory_base = 1024; + var ___table_base = 1; + var ASSERTIONS = true; + function intArrayFromString(stringy, dontAddNull, length) { + var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1; + var u8array = new Array(len); + var numBytesWritten = stringToUTF8Array(stringy, u8array, 0, u8array.length); + if (dontAddNull) u8array.length = numBytesWritten; + return u8array; + } + function intArrayToString(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + var chr = array[i]; + if (chr > 255) { + if (ASSERTIONS) { + assert(false, "Character code " + chr + " (" + String.fromCharCode(chr) + ") at offset " + i + " not in 0x00-0xFF."); + } + chr &= 255; + } + ret.push(String.fromCharCode(chr)); + } + return ret.join(""); + } + var asmLibraryArg = { + "__heap_base": ___heap_base, + "__indirect_function_table": wasmTable, + "__memory_base": ___memory_base, + "__stack_pointer": ___stack_pointer, + "__table_base": ___table_base, + "abort": _abort, + "alignfault": alignfault, + "clock_gettime": _clock_gettime, + "emscripten_memcpy_big": _emscripten_memcpy_big, + "emscripten_resize_heap": _emscripten_resize_heap, + "exit": _exit, + "fd_close": _fd_close, + "fd_seek": _fd_seek, + "fd_write": _fd_write, + "memory": wasmMemory, + "segfault": segfault, + "setTempRet0": _setTempRet0, + "tree_sitter_log_callback": _tree_sitter_log_callback, + "tree_sitter_parse_callback": _tree_sitter_parse_callback + }; + var asm = createWasm(); + var ___wasm_call_ctors = Module["___wasm_call_ctors"] = createExportWrapper("__wasm_call_ctors"); + var _ts_language_symbol_count = Module["_ts_language_symbol_count"] = createExportWrapper("ts_language_symbol_count"); + var _ts_language_version = Module["_ts_language_version"] = createExportWrapper("ts_language_version"); + var _ts_language_field_count = Module["_ts_language_field_count"] = createExportWrapper("ts_language_field_count"); + var _ts_language_symbol_name = Module["_ts_language_symbol_name"] = createExportWrapper("ts_language_symbol_name"); + var _ts_language_symbol_for_name = Module["_ts_language_symbol_for_name"] = createExportWrapper("ts_language_symbol_for_name"); + var _ts_language_symbol_type = Module["_ts_language_symbol_type"] = createExportWrapper("ts_language_symbol_type"); + var _ts_language_field_name_for_id = Module["_ts_language_field_name_for_id"] = createExportWrapper("ts_language_field_name_for_id"); + var _memcpy = Module["_memcpy"] = createExportWrapper("memcpy"); + var _free = Module["_free"] = createExportWrapper("free"); + var _calloc = Module["_calloc"] = createExportWrapper("calloc"); + var _ts_parser_delete = Module["_ts_parser_delete"] = createExportWrapper("ts_parser_delete"); + var _ts_parser_set_language = Module["_ts_parser_set_language"] = createExportWrapper("ts_parser_set_language"); + var _ts_parser_reset = Module["_ts_parser_reset"] = createExportWrapper("ts_parser_reset"); + var _ts_parser_timeout_micros = Module["_ts_parser_timeout_micros"] = createExportWrapper("ts_parser_timeout_micros"); + var _ts_parser_set_timeout_micros = Module["_ts_parser_set_timeout_micros"] = createExportWrapper("ts_parser_set_timeout_micros"); + var _ts_query_new = Module["_ts_query_new"] = createExportWrapper("ts_query_new"); + var _ts_query_delete = Module["_ts_query_delete"] = createExportWrapper("ts_query_delete"); + var _malloc = Module["_malloc"] = createExportWrapper("malloc"); + var _iswspace = Module["_iswspace"] = createExportWrapper("iswspace"); + var _ts_query_pattern_count = Module["_ts_query_pattern_count"] = createExportWrapper("ts_query_pattern_count"); + var _ts_query_capture_count = Module["_ts_query_capture_count"] = createExportWrapper("ts_query_capture_count"); + var _ts_query_string_count = Module["_ts_query_string_count"] = createExportWrapper("ts_query_string_count"); + var _ts_query_capture_name_for_id = Module["_ts_query_capture_name_for_id"] = createExportWrapper("ts_query_capture_name_for_id"); + var _ts_query_string_value_for_id = Module["_ts_query_string_value_for_id"] = createExportWrapper("ts_query_string_value_for_id"); + var _ts_query_predicates_for_pattern = Module["_ts_query_predicates_for_pattern"] = createExportWrapper("ts_query_predicates_for_pattern"); + var _memmove = Module["_memmove"] = createExportWrapper("memmove"); + var _memcmp = Module["_memcmp"] = createExportWrapper("memcmp"); + var _ts_tree_copy = Module["_ts_tree_copy"] = createExportWrapper("ts_tree_copy"); + var _ts_tree_delete = Module["_ts_tree_delete"] = createExportWrapper("ts_tree_delete"); + var _iswalnum = Module["_iswalnum"] = createExportWrapper("iswalnum"); + var _ts_init = Module["_ts_init"] = createExportWrapper("ts_init"); + var _ts_parser_new_wasm = Module["_ts_parser_new_wasm"] = createExportWrapper("ts_parser_new_wasm"); + var _ts_parser_enable_logger_wasm = Module["_ts_parser_enable_logger_wasm"] = createExportWrapper("ts_parser_enable_logger_wasm"); + var _ts_parser_parse_wasm = Module["_ts_parser_parse_wasm"] = createExportWrapper("ts_parser_parse_wasm"); + var _ts_language_type_is_named_wasm = Module["_ts_language_type_is_named_wasm"] = createExportWrapper("ts_language_type_is_named_wasm"); + var _ts_language_type_is_visible_wasm = Module["_ts_language_type_is_visible_wasm"] = createExportWrapper("ts_language_type_is_visible_wasm"); + var _ts_tree_root_node_wasm = Module["_ts_tree_root_node_wasm"] = createExportWrapper("ts_tree_root_node_wasm"); + var _ts_tree_edit_wasm = Module["_ts_tree_edit_wasm"] = createExportWrapper("ts_tree_edit_wasm"); + var _ts_tree_get_changed_ranges_wasm = Module["_ts_tree_get_changed_ranges_wasm"] = createExportWrapper("ts_tree_get_changed_ranges_wasm"); + var _ts_tree_cursor_new_wasm = Module["_ts_tree_cursor_new_wasm"] = createExportWrapper("ts_tree_cursor_new_wasm"); + var _ts_tree_cursor_delete_wasm = Module["_ts_tree_cursor_delete_wasm"] = createExportWrapper("ts_tree_cursor_delete_wasm"); + var _ts_tree_cursor_reset_wasm = Module["_ts_tree_cursor_reset_wasm"] = createExportWrapper("ts_tree_cursor_reset_wasm"); + var _ts_tree_cursor_goto_first_child_wasm = Module["_ts_tree_cursor_goto_first_child_wasm"] = createExportWrapper("ts_tree_cursor_goto_first_child_wasm"); + var _ts_tree_cursor_goto_next_sibling_wasm = Module["_ts_tree_cursor_goto_next_sibling_wasm"] = createExportWrapper("ts_tree_cursor_goto_next_sibling_wasm"); + var _ts_tree_cursor_goto_parent_wasm = Module["_ts_tree_cursor_goto_parent_wasm"] = createExportWrapper("ts_tree_cursor_goto_parent_wasm"); + var _ts_tree_cursor_current_node_type_id_wasm = Module["_ts_tree_cursor_current_node_type_id_wasm"] = createExportWrapper("ts_tree_cursor_current_node_type_id_wasm"); + var _ts_tree_cursor_current_node_is_named_wasm = Module["_ts_tree_cursor_current_node_is_named_wasm"] = createExportWrapper("ts_tree_cursor_current_node_is_named_wasm"); + var _ts_tree_cursor_current_node_is_missing_wasm = Module["_ts_tree_cursor_current_node_is_missing_wasm"] = createExportWrapper("ts_tree_cursor_current_node_is_missing_wasm"); + var _ts_tree_cursor_current_node_id_wasm = Module["_ts_tree_cursor_current_node_id_wasm"] = createExportWrapper("ts_tree_cursor_current_node_id_wasm"); + var _ts_tree_cursor_start_position_wasm = Module["_ts_tree_cursor_start_position_wasm"] = createExportWrapper("ts_tree_cursor_start_position_wasm"); + var _ts_tree_cursor_end_position_wasm = Module["_ts_tree_cursor_end_position_wasm"] = createExportWrapper("ts_tree_cursor_end_position_wasm"); + var _ts_tree_cursor_start_index_wasm = Module["_ts_tree_cursor_start_index_wasm"] = createExportWrapper("ts_tree_cursor_start_index_wasm"); + var _ts_tree_cursor_end_index_wasm = Module["_ts_tree_cursor_end_index_wasm"] = createExportWrapper("ts_tree_cursor_end_index_wasm"); + var _ts_tree_cursor_current_field_id_wasm = Module["_ts_tree_cursor_current_field_id_wasm"] = createExportWrapper("ts_tree_cursor_current_field_id_wasm"); + var _ts_tree_cursor_current_node_wasm = Module["_ts_tree_cursor_current_node_wasm"] = createExportWrapper("ts_tree_cursor_current_node_wasm"); + var _ts_node_symbol_wasm = Module["_ts_node_symbol_wasm"] = createExportWrapper("ts_node_symbol_wasm"); + var _ts_node_child_count_wasm = Module["_ts_node_child_count_wasm"] = createExportWrapper("ts_node_child_count_wasm"); + var _ts_node_named_child_count_wasm = Module["_ts_node_named_child_count_wasm"] = createExportWrapper("ts_node_named_child_count_wasm"); + var _ts_node_child_wasm = Module["_ts_node_child_wasm"] = createExportWrapper("ts_node_child_wasm"); + var _ts_node_named_child_wasm = Module["_ts_node_named_child_wasm"] = createExportWrapper("ts_node_named_child_wasm"); + var _ts_node_child_by_field_id_wasm = Module["_ts_node_child_by_field_id_wasm"] = createExportWrapper("ts_node_child_by_field_id_wasm"); + var _ts_node_next_sibling_wasm = Module["_ts_node_next_sibling_wasm"] = createExportWrapper("ts_node_next_sibling_wasm"); + var _ts_node_prev_sibling_wasm = Module["_ts_node_prev_sibling_wasm"] = createExportWrapper("ts_node_prev_sibling_wasm"); + var _ts_node_next_named_sibling_wasm = Module["_ts_node_next_named_sibling_wasm"] = createExportWrapper("ts_node_next_named_sibling_wasm"); + var _ts_node_prev_named_sibling_wasm = Module["_ts_node_prev_named_sibling_wasm"] = createExportWrapper("ts_node_prev_named_sibling_wasm"); + var _ts_node_parent_wasm = Module["_ts_node_parent_wasm"] = createExportWrapper("ts_node_parent_wasm"); + var _ts_node_descendant_for_index_wasm = Module["_ts_node_descendant_for_index_wasm"] = createExportWrapper("ts_node_descendant_for_index_wasm"); + var _ts_node_named_descendant_for_index_wasm = Module["_ts_node_named_descendant_for_index_wasm"] = createExportWrapper("ts_node_named_descendant_for_index_wasm"); + var _ts_node_descendant_for_position_wasm = Module["_ts_node_descendant_for_position_wasm"] = createExportWrapper("ts_node_descendant_for_position_wasm"); + var _ts_node_named_descendant_for_position_wasm = Module["_ts_node_named_descendant_for_position_wasm"] = createExportWrapper("ts_node_named_descendant_for_position_wasm"); + var _ts_node_start_point_wasm = Module["_ts_node_start_point_wasm"] = createExportWrapper("ts_node_start_point_wasm"); + var _ts_node_end_point_wasm = Module["_ts_node_end_point_wasm"] = createExportWrapper("ts_node_end_point_wasm"); + var _ts_node_start_index_wasm = Module["_ts_node_start_index_wasm"] = createExportWrapper("ts_node_start_index_wasm"); + var _ts_node_end_index_wasm = Module["_ts_node_end_index_wasm"] = createExportWrapper("ts_node_end_index_wasm"); + var _ts_node_to_string_wasm = Module["_ts_node_to_string_wasm"] = createExportWrapper("ts_node_to_string_wasm"); + var _ts_node_children_wasm = Module["_ts_node_children_wasm"] = createExportWrapper("ts_node_children_wasm"); + var _ts_node_named_children_wasm = Module["_ts_node_named_children_wasm"] = createExportWrapper("ts_node_named_children_wasm"); + var _ts_node_descendants_of_type_wasm = Module["_ts_node_descendants_of_type_wasm"] = createExportWrapper("ts_node_descendants_of_type_wasm"); + var _ts_node_is_named_wasm = Module["_ts_node_is_named_wasm"] = createExportWrapper("ts_node_is_named_wasm"); + var _ts_node_has_changes_wasm = Module["_ts_node_has_changes_wasm"] = createExportWrapper("ts_node_has_changes_wasm"); + var _ts_node_has_error_wasm = Module["_ts_node_has_error_wasm"] = createExportWrapper("ts_node_has_error_wasm"); + var _ts_node_is_missing_wasm = Module["_ts_node_is_missing_wasm"] = createExportWrapper("ts_node_is_missing_wasm"); + var _ts_query_matches_wasm = Module["_ts_query_matches_wasm"] = createExportWrapper("ts_query_matches_wasm"); + var _ts_query_captures_wasm = Module["_ts_query_captures_wasm"] = createExportWrapper("ts_query_captures_wasm"); + var _iswalpha = Module["_iswalpha"] = createExportWrapper("iswalpha"); + var _towupper = Module["_towupper"] = createExportWrapper("towupper"); + var _iswdigit = Module["_iswdigit"] = createExportWrapper("iswdigit"); + var _iswlower = Module["_iswlower"] = createExportWrapper("iswlower"); + var ___errno_location = Module["___errno_location"] = createExportWrapper("__errno_location"); + var _memchr = Module["_memchr"] = createExportWrapper("memchr"); + var _emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = function() { + return (_emscripten_stack_get_base = Module["_emscripten_stack_get_base"] = Module["asm"]["emscripten_stack_get_base"]).apply(null, arguments); + }; + var _emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = function() { + return (_emscripten_stack_get_end = Module["_emscripten_stack_get_end"] = Module["asm"]["emscripten_stack_get_end"]).apply(null, arguments); + }; + var _strlen = Module["_strlen"] = createExportWrapper("strlen"); + var stackSave = Module["stackSave"] = createExportWrapper("stackSave"); + var stackRestore = Module["stackRestore"] = createExportWrapper("stackRestore"); + var stackAlloc = Module["stackAlloc"] = createExportWrapper("stackAlloc"); + var _emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = function() { + return (_emscripten_stack_set_limits = Module["_emscripten_stack_set_limits"] = Module["asm"]["emscripten_stack_set_limits"]).apply(null, arguments); + }; + var _emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = function() { + return (_emscripten_stack_get_free = Module["_emscripten_stack_get_free"] = Module["asm"]["emscripten_stack_get_free"]).apply(null, arguments); + }; + var _setThrew = Module["_setThrew"] = createExportWrapper("setThrew"); + var __ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv = Module["__ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv"] = createExportWrapper("_ZNKSt3__220__vector_base_commonILb1EE20__throw_length_errorEv"); + var __ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev = Module["__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev"] = createExportWrapper("_ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEED2Ev"); + var __ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm = Module["__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm"] = createExportWrapper("_ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9__grow_byEmmmmmm"); + var __ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm = Module["__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm"] = createExportWrapper("_ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE6__initEPKcm"); + var __ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm = Module["__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm"] = createExportWrapper("_ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE7reserveEm"); + var __ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm = Module["__ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm"] = createExportWrapper("_ZNKSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE4copyEPcmm"); + var __ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc = Module["__ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc"] = createExportWrapper("_ZNSt3__212basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE9push_backEc"); + var __ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev = Module["__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev"] = createExportWrapper("_ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev"); + var __ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw = Module["__ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw"] = createExportWrapper("_ZNSt3__212basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEE9push_backEw"); + var __Znwm = Module["__Znwm"] = createExportWrapper("_Znwm"); + var __ZdlPv = Module["__ZdlPv"] = createExportWrapper("_ZdlPv"); + var _sbrk = Module["_sbrk"] = createExportWrapper("sbrk"); + var _emscripten_get_sbrk_ptr = Module["_emscripten_get_sbrk_ptr"] = createExportWrapper("emscripten_get_sbrk_ptr"); + var dynCall_jiji = Module["dynCall_jiji"] = createExportWrapper("dynCall_jiji"); + var _orig$ts_parser_timeout_micros = Module["_orig$ts_parser_timeout_micros"] = createExportWrapper("orig$ts_parser_timeout_micros"); + var _orig$ts_parser_set_timeout_micros = Module["_orig$ts_parser_set_timeout_micros"] = createExportWrapper("orig$ts_parser_set_timeout_micros"); + var _stderr = Module["_stderr"] = 7456; + var _TRANSFER_BUFFER = Module["_TRANSFER_BUFFER"] = 7472; + var ___data_end = Module["___data_end"] = 8124; + var ___THREW__ = Module["___THREW__"] = 8116; + var ___threwValue = Module["___threwValue"] = 8120; + var ___cxa_new_handler = Module["___cxa_new_handler"] = 8112; + if (!Object.getOwnPropertyDescriptor(Module, "intArrayFromString")) Module["intArrayFromString"] = function() { + abort("'intArrayFromString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "intArrayToString")) Module["intArrayToString"] = function() { + abort("'intArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ccall")) Module["ccall"] = function() { + abort("'ccall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "cwrap")) Module["cwrap"] = function() { + abort("'cwrap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setValue")) Module["setValue"] = function() { + abort("'setValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getValue")) Module["getValue"] = function() { + abort("'getValue' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["allocate"] = allocate; + if (!Object.getOwnPropertyDescriptor(Module, "UTF8ArrayToString")) Module["UTF8ArrayToString"] = function() { + abort("'UTF8ArrayToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF8ToString")) Module["UTF8ToString"] = function() { + abort("'UTF8ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8Array")) Module["stringToUTF8Array"] = function() { + abort("'stringToUTF8Array' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF8")) Module["stringToUTF8"] = function() { + abort("'stringToUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF8")) Module["lengthBytesUTF8"] = function() { + abort("'lengthBytesUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { + abort("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPreRun")) Module["addOnPreRun"] = function() { + abort("'addOnPreRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnInit")) Module["addOnInit"] = function() { + abort("'addOnInit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPreMain")) Module["addOnPreMain"] = function() { + abort("'addOnPreMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnExit")) Module["addOnExit"] = function() { + abort("'addOnExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addOnPostRun")) Module["addOnPostRun"] = function() { + abort("'addOnPostRun' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeStringToMemory")) Module["writeStringToMemory"] = function() { + abort("'writeStringToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeArrayToMemory")) Module["writeArrayToMemory"] = function() { + abort("'writeArrayToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeAsciiToMemory")) Module["writeAsciiToMemory"] = function() { + abort("'writeAsciiToMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addRunDependency")) Module["addRunDependency"] = function() { + abort("'addRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "removeRunDependency")) Module["removeRunDependency"] = function() { + abort("'removeRunDependency' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createFolder")) Module["FS_createFolder"] = function() { + abort("'FS_createFolder' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createPath")) Module["FS_createPath"] = function() { + abort("'FS_createPath' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createDataFile")) Module["FS_createDataFile"] = function() { + abort("'FS_createDataFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createPreloadedFile")) Module["FS_createPreloadedFile"] = function() { + abort("'FS_createPreloadedFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createLazyFile")) Module["FS_createLazyFile"] = function() { + abort("'FS_createLazyFile' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createLink")) Module["FS_createLink"] = function() { + abort("'FS_createLink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_createDevice")) Module["FS_createDevice"] = function() { + abort("'FS_createDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "FS_unlink")) Module["FS_unlink"] = function() { + abort("'FS_unlink' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getLEB")) Module["getLEB"] = function() { + abort("'getLEB' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getFunctionTables")) Module["getFunctionTables"] = function() { + abort("'getFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "alignFunctionTables")) Module["alignFunctionTables"] = function() { + abort("'alignFunctionTables' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerFunctions")) Module["registerFunctions"] = function() { + abort("'registerFunctions' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "addFunction")) Module["addFunction"] = function() { + abort("'addFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "removeFunction")) Module["removeFunction"] = function() { + abort("'removeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { + abort("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "prettyPrint")) Module["prettyPrint"] = function() { + abort("'prettyPrint' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { + abort("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getCompilerSetting")) Module["getCompilerSetting"] = function() { + abort("'getCompilerSetting' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "print")) Module["print"] = function() { + abort("'print' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "printErr")) Module["printErr"] = function() { + abort("'printErr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getTempRet0")) Module["getTempRet0"] = function() { + abort("'getTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setTempRet0")) Module["setTempRet0"] = function() { + abort("'setTempRet0' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "callMain")) Module["callMain"] = function() { + abort("'callMain' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "abort")) Module["abort"] = function() { + abort("'abort' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "keepRuntimeAlive")) Module["keepRuntimeAlive"] = function() { + abort("'keepRuntimeAlive' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "zeroMemory")) Module["zeroMemory"] = function() { + abort("'zeroMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToNewUTF8")) Module["stringToNewUTF8"] = function() { + abort("'stringToNewUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setFileTime")) Module["setFileTime"] = function() { + abort("'setFileTime' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "emscripten_realloc_buffer")) Module["emscripten_realloc_buffer"] = function() { + abort("'emscripten_realloc_buffer' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ENV")) Module["ENV"] = function() { + abort("'ENV' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_CODES")) Module["ERRNO_CODES"] = function() { + abort("'ERRNO_CODES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ERRNO_MESSAGES")) Module["ERRNO_MESSAGES"] = function() { + abort("'ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setErrNo")) Module["setErrNo"] = function() { + abort("'setErrNo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "inetPton4")) Module["inetPton4"] = function() { + abort("'inetPton4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "inetNtop4")) Module["inetNtop4"] = function() { + abort("'inetNtop4' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "inetPton6")) Module["inetPton6"] = function() { + abort("'inetPton6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "inetNtop6")) Module["inetNtop6"] = function() { + abort("'inetNtop6' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "readSockaddr")) Module["readSockaddr"] = function() { + abort("'readSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeSockaddr")) Module["writeSockaddr"] = function() { + abort("'writeSockaddr' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "DNS")) Module["DNS"] = function() { + abort("'DNS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getHostByName")) Module["getHostByName"] = function() { + abort("'getHostByName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GAI_ERRNO_MESSAGES")) Module["GAI_ERRNO_MESSAGES"] = function() { + abort("'GAI_ERRNO_MESSAGES' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "Protocols")) Module["Protocols"] = function() { + abort("'Protocols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "Sockets")) Module["Sockets"] = function() { + abort("'Sockets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getRandomDevice")) Module["getRandomDevice"] = function() { + abort("'getRandomDevice' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "traverseStack")) Module["traverseStack"] = function() { + abort("'traverseStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UNWIND_CACHE")) Module["UNWIND_CACHE"] = function() { + abort("'UNWIND_CACHE' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "withBuiltinMalloc")) Module["withBuiltinMalloc"] = function() { + abort("'withBuiltinMalloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgsArray")) Module["readAsmConstArgsArray"] = function() { + abort("'readAsmConstArgsArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "readAsmConstArgs")) Module["readAsmConstArgs"] = function() { + abort("'readAsmConstArgs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "mainThreadEM_ASM")) Module["mainThreadEM_ASM"] = function() { + abort("'mainThreadEM_ASM' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "jstoi_q")) Module["jstoi_q"] = function() { + abort("'jstoi_q' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "jstoi_s")) Module["jstoi_s"] = function() { + abort("'jstoi_s' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getExecutableName")) Module["getExecutableName"] = function() { + abort("'getExecutableName' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "listenOnce")) Module["listenOnce"] = function() { + abort("'listenOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "autoResumeAudioContext")) Module["autoResumeAudioContext"] = function() { + abort("'autoResumeAudioContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dynCallLegacy")) Module["dynCallLegacy"] = function() { + abort("'dynCallLegacy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getDynCaller")) Module["getDynCaller"] = function() { + abort("'getDynCaller' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dynCall")) Module["dynCall"] = function() { + abort("'dynCall' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "callRuntimeCallbacks")) Module["callRuntimeCallbacks"] = function() { + abort("'callRuntimeCallbacks' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "handleException")) Module["handleException"] = function() { + abort("'handleException' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "runtimeKeepalivePush")) Module["runtimeKeepalivePush"] = function() { + abort("'runtimeKeepalivePush' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "runtimeKeepalivePop")) Module["runtimeKeepalivePop"] = function() { + abort("'runtimeKeepalivePop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "callUserCallback")) Module["callUserCallback"] = function() { + abort("'callUserCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "maybeExit")) Module["maybeExit"] = function() { + abort("'maybeExit' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "safeSetTimeout")) Module["safeSetTimeout"] = function() { + abort("'safeSetTimeout' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "asmjsMangle")) Module["asmjsMangle"] = function() { + abort("'asmjsMangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "asyncLoad")) Module["asyncLoad"] = function() { + abort("'asyncLoad' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "alignMemory")) Module["alignMemory"] = function() { + abort("'alignMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "mmapAlloc")) Module["mmapAlloc"] = function() { + abort("'mmapAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "reallyNegative")) Module["reallyNegative"] = function() { + abort("'reallyNegative' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "unSign")) Module["unSign"] = function() { + abort("'unSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "reSign")) Module["reSign"] = function() { + abort("'reSign' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "formatString")) Module["formatString"] = function() { + abort("'formatString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "PATH")) Module["PATH"] = function() { + abort("'PATH' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "PATH_FS")) Module["PATH_FS"] = function() { + abort("'PATH_FS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SYSCALLS")) Module["SYSCALLS"] = function() { + abort("'SYSCALLS' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "syscallMmap2")) Module["syscallMmap2"] = function() { + abort("'syscallMmap2' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "syscallMunmap")) Module["syscallMunmap"] = function() { + abort("'syscallMunmap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getSocketFromFD")) Module["getSocketFromFD"] = function() { + abort("'getSocketFromFD' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getSocketAddress")) Module["getSocketAddress"] = function() { + abort("'getSocketAddress' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "JSEvents")) Module["JSEvents"] = function() { + abort("'JSEvents' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerKeyEventCallback")) Module["registerKeyEventCallback"] = function() { + abort("'registerKeyEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "specialHTMLTargets")) Module["specialHTMLTargets"] = function() { + abort("'specialHTMLTargets' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "maybeCStringToJsString")) Module["maybeCStringToJsString"] = function() { + abort("'maybeCStringToJsString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "findEventTarget")) Module["findEventTarget"] = function() { + abort("'findEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "findCanvasEventTarget")) Module["findCanvasEventTarget"] = function() { + abort("'findCanvasEventTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getBoundingClientRect")) Module["getBoundingClientRect"] = function() { + abort("'getBoundingClientRect' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillMouseEventData")) Module["fillMouseEventData"] = function() { + abort("'fillMouseEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerMouseEventCallback")) Module["registerMouseEventCallback"] = function() { + abort("'registerMouseEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerWheelEventCallback")) Module["registerWheelEventCallback"] = function() { + abort("'registerWheelEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerUiEventCallback")) Module["registerUiEventCallback"] = function() { + abort("'registerUiEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerFocusEventCallback")) Module["registerFocusEventCallback"] = function() { + abort("'registerFocusEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceOrientationEventData")) Module["fillDeviceOrientationEventData"] = function() { + abort("'fillDeviceOrientationEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceOrientationEventCallback")) Module["registerDeviceOrientationEventCallback"] = function() { + abort("'registerDeviceOrientationEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillDeviceMotionEventData")) Module["fillDeviceMotionEventData"] = function() { + abort("'fillDeviceMotionEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerDeviceMotionEventCallback")) Module["registerDeviceMotionEventCallback"] = function() { + abort("'registerDeviceMotionEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "screenOrientation")) Module["screenOrientation"] = function() { + abort("'screenOrientation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillOrientationChangeEventData")) Module["fillOrientationChangeEventData"] = function() { + abort("'fillOrientationChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerOrientationChangeEventCallback")) Module["registerOrientationChangeEventCallback"] = function() { + abort("'registerOrientationChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillFullscreenChangeEventData")) Module["fillFullscreenChangeEventData"] = function() { + abort("'fillFullscreenChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerFullscreenChangeEventCallback")) Module["registerFullscreenChangeEventCallback"] = function() { + abort("'registerFullscreenChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerRestoreOldStyle")) Module["registerRestoreOldStyle"] = function() { + abort("'registerRestoreOldStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "hideEverythingExceptGivenElement")) Module["hideEverythingExceptGivenElement"] = function() { + abort("'hideEverythingExceptGivenElement' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "restoreHiddenElements")) Module["restoreHiddenElements"] = function() { + abort("'restoreHiddenElements' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setLetterbox")) Module["setLetterbox"] = function() { + abort("'setLetterbox' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "currentFullscreenStrategy")) Module["currentFullscreenStrategy"] = function() { + abort("'currentFullscreenStrategy' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "restoreOldWindowedStyle")) Module["restoreOldWindowedStyle"] = function() { + abort("'restoreOldWindowedStyle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "softFullscreenResizeWebGLRenderTarget")) Module["softFullscreenResizeWebGLRenderTarget"] = function() { + abort("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "doRequestFullscreen")) Module["doRequestFullscreen"] = function() { + abort("'doRequestFullscreen' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillPointerlockChangeEventData")) Module["fillPointerlockChangeEventData"] = function() { + abort("'fillPointerlockChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockChangeEventCallback")) Module["registerPointerlockChangeEventCallback"] = function() { + abort("'registerPointerlockChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerPointerlockErrorEventCallback")) Module["registerPointerlockErrorEventCallback"] = function() { + abort("'registerPointerlockErrorEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "requestPointerLock")) Module["requestPointerLock"] = function() { + abort("'requestPointerLock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillVisibilityChangeEventData")) Module["fillVisibilityChangeEventData"] = function() { + abort("'fillVisibilityChangeEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerVisibilityChangeEventCallback")) Module["registerVisibilityChangeEventCallback"] = function() { + abort("'registerVisibilityChangeEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerTouchEventCallback")) Module["registerTouchEventCallback"] = function() { + abort("'registerTouchEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillGamepadEventData")) Module["fillGamepadEventData"] = function() { + abort("'fillGamepadEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerGamepadEventCallback")) Module["registerGamepadEventCallback"] = function() { + abort("'registerGamepadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerBeforeUnloadEventCallback")) Module["registerBeforeUnloadEventCallback"] = function() { + abort("'registerBeforeUnloadEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "fillBatteryEventData")) Module["fillBatteryEventData"] = function() { + abort("'fillBatteryEventData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "battery")) Module["battery"] = function() { + abort("'battery' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "registerBatteryEventCallback")) Module["registerBatteryEventCallback"] = function() { + abort("'registerBatteryEventCallback' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setCanvasElementSize")) Module["setCanvasElementSize"] = function() { + abort("'setCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getCanvasElementSize")) Module["getCanvasElementSize"] = function() { + abort("'getCanvasElementSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "polyfillSetImmediate")) Module["polyfillSetImmediate"] = function() { + abort("'polyfillSetImmediate' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "demangle")) Module["demangle"] = function() { + abort("'demangle' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "demangleAll")) Module["demangleAll"] = function() { + abort("'demangleAll' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "jsStackTrace")) Module["jsStackTrace"] = function() { + abort("'jsStackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackTrace")) Module["stackTrace"] = function() { + abort("'stackTrace' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getEnvStrings")) Module["getEnvStrings"] = function() { + abort("'getEnvStrings' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "checkWasiClock")) Module["checkWasiClock"] = function() { + abort("'checkWasiClock' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64")) Module["writeI53ToI64"] = function() { + abort("'writeI53ToI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Clamped")) Module["writeI53ToI64Clamped"] = function() { + abort("'writeI53ToI64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToI64Signaling")) Module["writeI53ToI64Signaling"] = function() { + abort("'writeI53ToI64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Clamped")) Module["writeI53ToU64Clamped"] = function() { + abort("'writeI53ToU64Clamped' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeI53ToU64Signaling")) Module["writeI53ToU64Signaling"] = function() { + abort("'writeI53ToU64Signaling' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "readI53FromI64")) Module["readI53FromI64"] = function() { + abort("'readI53FromI64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "readI53FromU64")) Module["readI53FromU64"] = function() { + abort("'readI53FromU64' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "convertI32PairToI53")) Module["convertI32PairToI53"] = function() { + abort("'convertI32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "convertU32PairToI53")) Module["convertU32PairToI53"] = function() { + abort("'convertU32PairToI53' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "resolveGlobalSymbol")) Module["resolveGlobalSymbol"] = function() { + abort("'resolveGlobalSymbol' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GOT")) Module["GOT"] = function() { + abort("'GOT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GOTHandler")) Module["GOTHandler"] = function() { + abort("'GOTHandler' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "isInternalSym")) Module["isInternalSym"] = function() { + abort("'isInternalSym' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "updateGOT")) Module["updateGOT"] = function() { + abort("'updateGOT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "relocateExports")) Module["relocateExports"] = function() { + abort("'relocateExports' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "reportUndefinedSymbols")) Module["reportUndefinedSymbols"] = function() { + abort("'reportUndefinedSymbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "DLFCN")) Module["DLFCN"] = function() { + abort("'DLFCN' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "LDSO")) Module["LDSO"] = function() { + abort("'LDSO' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "createInvokeFunction")) Module["createInvokeFunction"] = function() { + abort("'createInvokeFunction' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getMemory")) Module["getMemory"] = function() { + abort("'getMemory' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getDylinkMetadata")) Module["getDylinkMetadata"] = function() { + abort("'getDylinkMetadata' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "mergeLibSymbols")) Module["mergeLibSymbols"] = function() { + abort("'mergeLibSymbols' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "loadWebAssemblyModule")) Module["loadWebAssemblyModule"] = function() { + abort("'loadWebAssemblyModule' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "loadDynamicLibrary")) Module["loadDynamicLibrary"] = function() { + abort("'loadDynamicLibrary' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "preloadDylibs")) Module["preloadDylibs"] = function() { + abort("'preloadDylibs' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "dlopenInternal")) Module["dlopenInternal"] = function() { + abort("'dlopenInternal' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "uncaughtExceptionCount")) Module["uncaughtExceptionCount"] = function() { + abort("'uncaughtExceptionCount' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "exceptionLast")) Module["exceptionLast"] = function() { + abort("'exceptionLast' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "exceptionCaught")) Module["exceptionCaught"] = function() { + abort("'exceptionCaught' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "ExceptionInfo")) Module["ExceptionInfo"] = function() { + abort("'ExceptionInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "CatchInfo")) Module["CatchInfo"] = function() { + abort("'CatchInfo' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "exception_addRef")) Module["exception_addRef"] = function() { + abort("'exception_addRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "exception_decRef")) Module["exception_decRef"] = function() { + abort("'exception_decRef' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "Browser")) Module["Browser"] = function() { + abort("'Browser' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "funcWrappers")) Module["funcWrappers"] = function() { + abort("'funcWrappers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "getFuncWrapper")) Module["getFuncWrapper"] = function() { + abort("'getFuncWrapper' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "setMainLoop")) Module["setMainLoop"] = function() { + abort("'setMainLoop' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "wget")) Module["wget"] = function() { + abort("'wget' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "tempFixedLengthArray")) Module["tempFixedLengthArray"] = function() { + abort("'tempFixedLengthArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "miniTempWebGLFloatBuffers")) Module["miniTempWebGLFloatBuffers"] = function() { + abort("'miniTempWebGLFloatBuffers' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "heapObjectForWebGLType")) Module["heapObjectForWebGLType"] = function() { + abort("'heapObjectForWebGLType' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "heapAccessShiftForWebGLHeap")) Module["heapAccessShiftForWebGLHeap"] = function() { + abort("'heapAccessShiftForWebGLHeap' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GL")) Module["GL"] = function() { + abort("'GL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGet")) Module["emscriptenWebGLGet"] = function() { + abort("'emscriptenWebGLGet' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "computeUnpackAlignedImageSize")) Module["computeUnpackAlignedImageSize"] = function() { + abort("'computeUnpackAlignedImageSize' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetTexPixelData")) Module["emscriptenWebGLGetTexPixelData"] = function() { + abort("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetUniform")) Module["emscriptenWebGLGetUniform"] = function() { + abort("'emscriptenWebGLGetUniform' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "webglGetUniformLocation")) Module["webglGetUniformLocation"] = function() { + abort("'webglGetUniformLocation' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "webglPrepareUniformLocationsBeforeFirstUse")) Module["webglPrepareUniformLocationsBeforeFirstUse"] = function() { + abort("'webglPrepareUniformLocationsBeforeFirstUse' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "webglGetLeftBracePos")) Module["webglGetLeftBracePos"] = function() { + abort("'webglGetLeftBracePos' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "emscriptenWebGLGetVertexAttrib")) Module["emscriptenWebGLGetVertexAttrib"] = function() { + abort("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "writeGLArray")) Module["writeGLArray"] = function() { + abort("'writeGLArray' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "AL")) Module["AL"] = function() { + abort("'AL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SDL_unicode")) Module["SDL_unicode"] = function() { + abort("'SDL_unicode' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SDL_ttfContext")) Module["SDL_ttfContext"] = function() { + abort("'SDL_ttfContext' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SDL_audio")) Module["SDL_audio"] = function() { + abort("'SDL_audio' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SDL")) Module["SDL"] = function() { + abort("'SDL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "SDL_gfx")) Module["SDL_gfx"] = function() { + abort("'SDL_gfx' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GLUT")) Module["GLUT"] = function() { + abort("'GLUT' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "EGL")) Module["EGL"] = function() { + abort("'EGL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GLFW_Window")) Module["GLFW_Window"] = function() { + abort("'GLFW_Window' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GLFW")) Module["GLFW"] = function() { + abort("'GLFW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "GLEW")) Module["GLEW"] = function() { + abort("'GLEW' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "IDBStore")) Module["IDBStore"] = function() { + abort("'IDBStore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "runAndAbortIfError")) Module["runAndAbortIfError"] = function() { + abort("'runAndAbortIfError' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "warnOnce")) Module["warnOnce"] = function() { + abort("'warnOnce' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackSave")) Module["stackSave"] = function() { + abort("'stackSave' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackRestore")) Module["stackRestore"] = function() { + abort("'stackRestore' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stackAlloc")) Module["stackAlloc"] = function() { + abort("'stackAlloc' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "AsciiToString")) Module["AsciiToString"] = function() { + abort("'AsciiToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToAscii")) Module["stringToAscii"] = function() { + abort("'stringToAscii' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF16ToString")) Module["UTF16ToString"] = function() { + abort("'UTF16ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF16")) Module["stringToUTF16"] = function() { + abort("'stringToUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF16")) Module["lengthBytesUTF16"] = function() { + abort("'lengthBytesUTF16' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "UTF32ToString")) Module["UTF32ToString"] = function() { + abort("'UTF32ToString' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "stringToUTF32")) Module["stringToUTF32"] = function() { + abort("'stringToUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "lengthBytesUTF32")) Module["lengthBytesUTF32"] = function() { + abort("'lengthBytesUTF32' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8")) Module["allocateUTF8"] = function() { + abort("'allocateUTF8' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + if (!Object.getOwnPropertyDescriptor(Module, "allocateUTF8OnStack")) Module["allocateUTF8OnStack"] = function() { + abort("'allocateUTF8OnStack' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + }; + Module["writeStackCookie"] = writeStackCookie; + Module["checkStackCookie"] = checkStackCookie; + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_NORMAL")) Object.defineProperty(Module, "ALLOC_NORMAL", { + configurable: true, + get: function() { + abort("'ALLOC_NORMAL' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + if (!Object.getOwnPropertyDescriptor(Module, "ALLOC_STACK")) Object.defineProperty(Module, "ALLOC_STACK", { + configurable: true, + get: function() { + abort("'ALLOC_STACK' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)"); + } + }); + var calledRun; + function ExitStatus(status) { + this.name = "ExitStatus"; + this.message = "Program terminated with exit(" + status + ")"; + this.status = status; + } + var calledMain = false; + dependenciesFulfilled = function runCaller() { + if (!calledRun) run(); + if (!calledRun) dependenciesFulfilled = runCaller; + }; + function callMain(args) { + assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on Module["onRuntimeInitialized"])'); + assert(__ATPRERUN__.length == 0, "cannot call main when preRun functions remain to be called"); + var entryFunction = Module["_main"]; + if (!entryFunction) return; + args = args || []; + var argc = args.length + 1; + var argv = stackAlloc((argc + 1) * 4); + SAFE_HEAP_STORE((argv >> 2) * 4, allocateUTF8OnStack(thisProgram), 4); + for (var i = 1; i < argc; i++) { + SAFE_HEAP_STORE(((argv >> 2) + i) * 4, allocateUTF8OnStack(args[i - 1]), 4); + } + SAFE_HEAP_STORE(((argv >> 2) + argc) * 4, 0, 4); + try { + var ret = entryFunction(argc, argv); + exit(ret, true); + } catch (e) { + if (e instanceof ExitStatus || e == "unwind") { + return; + } + var toLog = e; + if (e && typeof e === "object" && e.stack) { + toLog = [ e, e.stack ]; + } + err("exception thrown: " + toLog); + quit_(1, e); + } finally { + calledMain = true; + } + } + function stackCheckInit() { + _emscripten_stack_set_limits(5251008, 8128); + writeStackCookie(); + } + var dylibsLoaded = false; + function run(args) { + args = args || arguments_; + if (runDependencies > 0) { + return; + } + stackCheckInit(); + if (!dylibsLoaded) { + preloadDylibs(); + dylibsLoaded = true; + if (runDependencies > 0) { + return; + } + } + preRun(); + if (runDependencies > 0) { + return; + } + function doRun() { + if (calledRun) return; + calledRun = true; + Module["calledRun"] = true; + if (ABORT) return; + initRuntime(); + preMain(); + if (Module["onRuntimeInitialized"]) Module["onRuntimeInitialized"](); + if (shouldRunNow) callMain(args); + postRun(); + } + if (Module["setStatus"]) { + Module["setStatus"]("Running..."); + setTimeout(function() { + setTimeout(function() { + Module["setStatus"](""); + }, 1); + doRun(); + }, 1); + } else { + doRun(); + } + checkStackCookie(); + } + Module["run"] = run; + function checkUnflushedContent() { + var oldOut = out; + var oldErr = err; + var has = false; + out = err = function(x) { + has = true; + }; + try { + var flush = Module["_fflush"]; + if (flush) flush(0); + } catch (e) {} + out = oldOut; + err = oldErr; + if (has) { + warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."); + warnOnce("(this may also be due to not including full filesystem support - try building with -s FORCE_FILESYSTEM=1)"); + } + } + function exit(status, implicit) { + EXITSTATUS = status; + checkUnflushedContent(); + if (keepRuntimeAlive()) { + if (!implicit) { + var msg = "program exited (with status: " + status + "), but EXIT_RUNTIME is not set, so halting execution but not exiting the runtime or preventing further async execution (build with EXIT_RUNTIME=1, if you want a true shutdown)"; + err(msg); + } + } else { + exitRuntime(); + } + procExit(status); + } + function procExit(code) { + EXITSTATUS = code; + if (!keepRuntimeAlive()) { + if (Module["onExit"]) Module["onExit"](code); + ABORT = true; + } + quit_(code, new ExitStatus(code)); + } + if (Module["preInit"]) { + if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ]; + while (Module["preInit"].length > 0) { + Module["preInit"].pop()(); + } + } + var shouldRunNow = true; + if (Module["noInitialRun"]) shouldRunNow = false; + run(); + const C = Module; + const INTERNAL = {}; + const SIZE_OF_INT = 4; + const SIZE_OF_NODE = 5 * SIZE_OF_INT; + const SIZE_OF_POINT = 2 * SIZE_OF_INT; + const SIZE_OF_RANGE = 2 * SIZE_OF_INT + 2 * SIZE_OF_POINT; + const ZERO_POINT = { + row: 0, + column: 0 + }; + const QUERY_WORD_REGEX = /[\w-.]*/g; + const PREDICATE_STEP_TYPE_CAPTURE = 1; + const PREDICATE_STEP_TYPE_STRING = 2; + const LANGUAGE_FUNCTION_REGEX = /^_?tree_sitter_\w+/; + var VERSION; + var MIN_COMPATIBLE_VERSION; + var TRANSFER_BUFFER; + var currentParseCallback; + var currentLogCallback; + class ParserImpl { + static init() { + TRANSFER_BUFFER = C._ts_init(); + VERSION = getValue(TRANSFER_BUFFER, "i32"); + MIN_COMPATIBLE_VERSION = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + } + initialize() { + C._ts_parser_new_wasm(); + this[0] = getValue(TRANSFER_BUFFER, "i32"); + this[1] = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + } + delete() { + C._ts_parser_delete(this[0]); + C._free(this[1]); + this[0] = 0; + this[1] = 0; + } + setLanguage(language) { + let address; + if (!language) { + address = 0; + language = null; + } else if (language.constructor === Language) { + address = language[0]; + const version = C._ts_language_version(address); + if (version < MIN_COMPATIBLE_VERSION || VERSION < version) { + throw new Error(`Incompatible language version ${version}. ` + `Compatibility range ${MIN_COMPATIBLE_VERSION} through ${VERSION}.`); + } + } else { + throw new Error("Argument must be a Language"); + } + this.language = language; + C._ts_parser_set_language(this[0], address); + return this; + } + getLanguage() { + return this.language; + } + parse(callback, oldTree, options) { + if (typeof callback === "string") { + currentParseCallback = ((index, _, endIndex) => callback.slice(index, endIndex)); + } else if (typeof callback === "function") { + currentParseCallback = callback; + } else { + throw new Error("Argument must be a string or a function"); + } + if (this.logCallback) { + currentLogCallback = this.logCallback; + C._ts_parser_enable_logger_wasm(this[0], 1); + } else { + currentLogCallback = null; + C._ts_parser_enable_logger_wasm(this[0], 0); + } + let rangeCount = 0; + let rangeAddress = 0; + if (options && options.includedRanges) { + rangeCount = options.includedRanges.length; + rangeAddress = C._calloc(rangeCount, SIZE_OF_RANGE); + let address = rangeAddress; + for (let i = 0; i < rangeCount; i++) { + marshalRange(address, options.includedRanges[i]); + address += SIZE_OF_RANGE; + } + } + const treeAddress = C._ts_parser_parse_wasm(this[0], this[1], oldTree ? oldTree[0] : 0, rangeAddress, rangeCount); + if (!treeAddress) { + currentParseCallback = null; + currentLogCallback = null; + throw new Error("Parsing failed"); + } + const result = new Tree(INTERNAL, treeAddress, this.language, currentParseCallback); + currentParseCallback = null; + currentLogCallback = null; + return result; + } + reset() { + C._ts_parser_reset(this[0]); + } + setTimeoutMicros(timeout) { + C._ts_parser_set_timeout_micros(this[0], timeout); + } + getTimeoutMicros() { + return C._ts_parser_timeout_micros(this[0]); + } + setLogger(callback) { + if (!callback) { + callback = null; + } else if (typeof callback !== "function") { + throw new Error("Logger callback must be a function"); + } + this.logCallback = callback; + return this; + } + getLogger() { + return this.logCallback; + } + } + class Tree { + constructor(internal, address, language, textCallback) { + assertInternal(internal); + this[0] = address; + this.language = language; + this.textCallback = textCallback; + } + copy() { + const address = C._ts_tree_copy(this[0]); + return new Tree(INTERNAL, address, this.language, this.textCallback); + } + delete() { + C._ts_tree_delete(this[0]); + this[0] = 0; + } + edit(edit) { + marshalEdit(edit); + C._ts_tree_edit_wasm(this[0]); + } + get rootNode() { + C._ts_tree_root_node_wasm(this[0]); + return unmarshalNode(this); + } + getLanguage() { + return this.language; + } + walk() { + return this.rootNode.walk(); + } + getChangedRanges(other) { + if (other.constructor !== Tree) { + throw new TypeError("Argument must be a Tree"); + } + C._ts_tree_get_changed_ranges_wasm(this[0], other[0]); + const count = getValue(TRANSFER_BUFFER, "i32"); + const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + const result = new Array(count); + if (count > 0) { + let address = buffer; + for (let i = 0; i < count; i++) { + result[i] = unmarshalRange(address); + address += SIZE_OF_RANGE; + } + C._free(buffer); + } + return result; + } + } + class Node { + constructor(internal, tree) { + assertInternal(internal); + this.tree = tree; + } + get typeId() { + marshalNode(this); + return C._ts_node_symbol_wasm(this.tree[0]); + } + get type() { + return this.tree.language.types[this.typeId] || "ERROR"; + } + get endPosition() { + marshalNode(this); + C._ts_node_end_point_wasm(this.tree[0]); + return unmarshalPoint(TRANSFER_BUFFER); + } + get endIndex() { + marshalNode(this); + return C._ts_node_end_index_wasm(this.tree[0]); + } + get text() { + return getText(this.tree, this.startIndex, this.endIndex); + } + isNamed() { + marshalNode(this); + return C._ts_node_is_named_wasm(this.tree[0]) === 1; + } + hasError() { + marshalNode(this); + return C._ts_node_has_error_wasm(this.tree[0]) === 1; + } + hasChanges() { + marshalNode(this); + return C._ts_node_has_changes_wasm(this.tree[0]) === 1; + } + isMissing() { + marshalNode(this); + return C._ts_node_is_missing_wasm(this.tree[0]) === 1; + } + equals(other) { + return this.id === other.id; + } + child(index) { + marshalNode(this); + C._ts_node_child_wasm(this.tree[0], index); + return unmarshalNode(this.tree); + } + namedChild(index) { + marshalNode(this); + C._ts_node_named_child_wasm(this.tree[0], index); + return unmarshalNode(this.tree); + } + childForFieldId(fieldId) { + marshalNode(this); + C._ts_node_child_by_field_id_wasm(this.tree[0], fieldId); + return unmarshalNode(this.tree); + } + childForFieldName(fieldName) { + const fieldId = this.tree.language.fields.indexOf(fieldName); + if (fieldId !== -1) return this.childForFieldId(fieldId); + } + get childCount() { + marshalNode(this); + return C._ts_node_child_count_wasm(this.tree[0]); + } + get namedChildCount() { + marshalNode(this); + return C._ts_node_named_child_count_wasm(this.tree[0]); + } + get firstChild() { + return this.child(0); + } + get firstNamedChild() { + return this.namedChild(0); + } + get lastChild() { + return this.child(this.childCount - 1); + } + get lastNamedChild() { + return this.namedChild(this.namedChildCount - 1); + } + get children() { + if (!this._children) { + marshalNode(this); + C._ts_node_children_wasm(this.tree[0]); + const count = getValue(TRANSFER_BUFFER, "i32"); + const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + this._children = new Array(count); + if (count > 0) { + let address = buffer; + for (let i = 0; i < count; i++) { + this._children[i] = unmarshalNode(this.tree, address); + address += SIZE_OF_NODE; + } + C._free(buffer); + } + } + return this._children; + } + get namedChildren() { + if (!this._namedChildren) { + marshalNode(this); + C._ts_node_named_children_wasm(this.tree[0]); + const count = getValue(TRANSFER_BUFFER, "i32"); + const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + this._namedChildren = new Array(count); + if (count > 0) { + let address = buffer; + for (let i = 0; i < count; i++) { + this._namedChildren[i] = unmarshalNode(this.tree, address); + address += SIZE_OF_NODE; + } + C._free(buffer); + } + } + return this._namedChildren; + } + descendantsOfType(types, startPosition, endPosition) { + if (!Array.isArray(types)) types = [ types ]; + if (!startPosition) startPosition = ZERO_POINT; + if (!endPosition) endPosition = ZERO_POINT; + const symbols = []; + const typesBySymbol = this.tree.language.types; + for (let i = 0, n = typesBySymbol.length; i < n; i++) { + if (types.includes(typesBySymbol[i])) { + symbols.push(i); + } + } + const symbolsAddress = C._malloc(SIZE_OF_INT * symbols.length); + for (let i = 0, n = symbols.length; i < n; i++) { + setValue(symbolsAddress + i * SIZE_OF_INT, symbols[i], "i32"); + } + marshalNode(this); + C._ts_node_descendants_of_type_wasm(this.tree[0], symbolsAddress, symbols.length, startPosition.row, startPosition.column, endPosition.row, endPosition.column); + const descendantCount = getValue(TRANSFER_BUFFER, "i32"); + const descendantAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + const result = new Array(descendantCount); + if (descendantCount > 0) { + let address = descendantAddress; + for (let i = 0; i < descendantCount; i++) { + result[i] = unmarshalNode(this.tree, address); + address += SIZE_OF_NODE; + } + } + C._free(descendantAddress); + C._free(symbolsAddress); + return result; + } + get nextSibling() { + marshalNode(this); + C._ts_node_next_sibling_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + get previousSibling() { + marshalNode(this); + C._ts_node_prev_sibling_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + get nextNamedSibling() { + marshalNode(this); + C._ts_node_next_named_sibling_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + get previousNamedSibling() { + marshalNode(this); + C._ts_node_prev_named_sibling_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + get parent() { + marshalNode(this); + C._ts_node_parent_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + descendantForIndex(start, end = start) { + if (typeof start !== "number" || typeof end !== "number") { + throw new Error("Arguments must be numbers"); + } + marshalNode(this); + let address = TRANSFER_BUFFER + SIZE_OF_NODE; + setValue(address, start, "i32"); + setValue(address + SIZE_OF_INT, end, "i32"); + C._ts_node_descendant_for_index_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + namedDescendantForIndex(start, end = start) { + if (typeof start !== "number" || typeof end !== "number") { + throw new Error("Arguments must be numbers"); + } + marshalNode(this); + let address = TRANSFER_BUFFER + SIZE_OF_NODE; + setValue(address, start, "i32"); + setValue(address + SIZE_OF_INT, end, "i32"); + C._ts_node_named_descendant_for_index_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + descendantForPosition(start, end = start) { + if (!isPoint(start) || !isPoint(end)) { + throw new Error("Arguments must be {row, column} objects"); + } + marshalNode(this); + let address = TRANSFER_BUFFER + SIZE_OF_NODE; + marshalPoint(address, start); + marshalPoint(address + SIZE_OF_POINT, end); + C._ts_node_descendant_for_position_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + namedDescendantForPosition(start, end = start) { + if (!isPoint(start) || !isPoint(end)) { + throw new Error("Arguments must be {row, column} objects"); + } + marshalNode(this); + let address = TRANSFER_BUFFER + SIZE_OF_NODE; + marshalPoint(address, start); + marshalPoint(address + SIZE_OF_POINT, end); + C._ts_node_named_descendant_for_position_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + walk() { + marshalNode(this); + C._ts_tree_cursor_new_wasm(this.tree[0]); + return new TreeCursor(INTERNAL, this.tree); + } + toString() { + marshalNode(this); + const address = C._ts_node_to_string_wasm(this.tree[0]); + const result = AsciiToString(address); + C._free(address); + return result; + } + } + class TreeCursor { + constructor(internal, tree) { + assertInternal(internal); + this.tree = tree; + unmarshalTreeCursor(this); + } + delete() { + marshalTreeCursor(this); + C._ts_tree_cursor_delete_wasm(this.tree[0]); + this[0] = this[1] = this[2] = 0; + } + reset(node) { + marshalNode(node); + marshalTreeCursor(this, TRANSFER_BUFFER + SIZE_OF_NODE); + C._ts_tree_cursor_reset_wasm(this.tree[0]); + unmarshalTreeCursor(this); + } + get nodeType() { + return this.tree.language.types[this.nodeTypeId] || "ERROR"; + } + get nodeTypeId() { + marshalTreeCursor(this); + return C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0]); + } + get nodeId() { + marshalTreeCursor(this); + return C._ts_tree_cursor_current_node_id_wasm(this.tree[0]); + } + get nodeIsNamed() { + marshalTreeCursor(this); + return C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0]) === 1; + } + get nodeIsMissing() { + marshalTreeCursor(this); + return C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0]) === 1; + } + get nodeText() { + marshalTreeCursor(this); + const startIndex = C._ts_tree_cursor_start_index_wasm(this.tree[0]); + const endIndex = C._ts_tree_cursor_end_index_wasm(this.tree[0]); + return getText(this.tree, startIndex, endIndex); + } + get startPosition() { + marshalTreeCursor(this); + C._ts_tree_cursor_start_position_wasm(this.tree[0]); + return unmarshalPoint(TRANSFER_BUFFER); + } + get endPosition() { + marshalTreeCursor(this); + C._ts_tree_cursor_end_position_wasm(this.tree[0]); + return unmarshalPoint(TRANSFER_BUFFER); + } + get startIndex() { + marshalTreeCursor(this); + return C._ts_tree_cursor_start_index_wasm(this.tree[0]); + } + get endIndex() { + marshalTreeCursor(this); + return C._ts_tree_cursor_end_index_wasm(this.tree[0]); + } + currentNode() { + marshalTreeCursor(this); + C._ts_tree_cursor_current_node_wasm(this.tree[0]); + return unmarshalNode(this.tree); + } + currentFieldId() { + marshalTreeCursor(this); + return C._ts_tree_cursor_current_field_id_wasm(this.tree[0]); + } + currentFieldName() { + return this.tree.language.fields[this.currentFieldId()]; + } + gotoFirstChild() { + marshalTreeCursor(this); + const result = C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]); + unmarshalTreeCursor(this); + return result === 1; + } + gotoNextSibling() { + marshalTreeCursor(this); + const result = C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]); + unmarshalTreeCursor(this); + return result === 1; + } + gotoParent() { + marshalTreeCursor(this); + const result = C._ts_tree_cursor_goto_parent_wasm(this.tree[0]); + unmarshalTreeCursor(this); + return result === 1; + } + } + class Language { + constructor(internal, address) { + assertInternal(internal); + this[0] = address; + this.types = new Array(C._ts_language_symbol_count(this[0])); + for (let i = 0, n = this.types.length; i < n; i++) { + if (C._ts_language_symbol_type(this[0], i) < 2) { + this.types[i] = UTF8ToString(C._ts_language_symbol_name(this[0], i)); + } + } + this.fields = new Array(C._ts_language_field_count(this[0]) + 1); + for (let i = 0, n = this.fields.length; i < n; i++) { + const fieldName = C._ts_language_field_name_for_id(this[0], i); + if (fieldName !== 0) { + this.fields[i] = UTF8ToString(fieldName); + } else { + this.fields[i] = null; + } + } + } + get version() { + return C._ts_language_version(this[0]); + } + get fieldCount() { + return this.fields.length - 1; + } + fieldIdForName(fieldName) { + const result = this.fields.indexOf(fieldName); + if (result !== -1) { + return result; + } else { + return null; + } + } + fieldNameForId(fieldId) { + return this.fields[fieldId] || null; + } + idForNodeType(type, named) { + const typeLength = lengthBytesUTF8(type); + const typeAddress = C._malloc(typeLength + 1); + stringToUTF8(type, typeAddress, typeLength + 1); + const result = C._ts_language_symbol_for_name(this[0], typeAddress, typeLength, named); + C._free(typeAddress); + return result || null; + } + get nodeTypeCount() { + return C._ts_language_symbol_count(this[0]); + } + nodeTypeForId(typeId) { + const name = C._ts_language_symbol_name(this[0], typeId); + return name ? UTF8ToString(name) : null; + } + nodeTypeIsNamed(typeId) { + return C._ts_language_type_is_named_wasm(this[0], typeId) ? true : false; + } + nodeTypeIsVisible(typeId) { + return C._ts_language_type_is_visible_wasm(this[0], typeId) ? true : false; + } + query(source) { + const sourceLength = lengthBytesUTF8(source); + const sourceAddress = C._malloc(sourceLength + 1); + stringToUTF8(source, sourceAddress, sourceLength + 1); + const address = C._ts_query_new(this[0], sourceAddress, sourceLength, TRANSFER_BUFFER, TRANSFER_BUFFER + SIZE_OF_INT); + if (!address) { + const errorId = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + const errorByte = getValue(TRANSFER_BUFFER, "i32"); + const errorIndex = UTF8ToString(sourceAddress, errorByte).length; + const suffix = source.substr(errorIndex, 100).split("\n")[0]; + let word = suffix.match(QUERY_WORD_REGEX)[0]; + let error; + switch (errorId) { + case 2: + error = new RangeError(`Bad node name '${word}'`); + break; + + case 3: + error = new RangeError(`Bad field name '${word}'`); + break; + + case 4: + error = new RangeError(`Bad capture name @${word}`); + break; + + case 5: + error = new TypeError(`Bad pattern structure at offset ${errorIndex}: '${suffix}'...`); + word = ""; + break; + + default: + error = new SyntaxError(`Bad syntax at offset ${errorIndex}: '${suffix}'...`); + word = ""; + break; + } + error.index = errorIndex; + error.length = word.length; + C._free(sourceAddress); + throw error; + } + const stringCount = C._ts_query_string_count(address); + const captureCount = C._ts_query_capture_count(address); + const patternCount = C._ts_query_pattern_count(address); + const captureNames = new Array(captureCount); + const stringValues = new Array(stringCount); + for (let i = 0; i < captureCount; i++) { + const nameAddress = C._ts_query_capture_name_for_id(address, i, TRANSFER_BUFFER); + const nameLength = getValue(TRANSFER_BUFFER, "i32"); + captureNames[i] = UTF8ToString(nameAddress, nameLength); + } + for (let i = 0; i < stringCount; i++) { + const valueAddress = C._ts_query_string_value_for_id(address, i, TRANSFER_BUFFER); + const nameLength = getValue(TRANSFER_BUFFER, "i32"); + stringValues[i] = UTF8ToString(valueAddress, nameLength); + } + const setProperties = new Array(patternCount); + const assertedProperties = new Array(patternCount); + const refutedProperties = new Array(patternCount); + const predicates = new Array(patternCount); + const textPredicates = new Array(patternCount); + for (let i = 0; i < patternCount; i++) { + const predicatesAddress = C._ts_query_predicates_for_pattern(address, i, TRANSFER_BUFFER); + const stepCount = getValue(TRANSFER_BUFFER, "i32"); + predicates[i] = []; + textPredicates[i] = []; + const steps = []; + let stepAddress = predicatesAddress; + for (let j = 0; j < stepCount; j++) { + const stepType = getValue(stepAddress, "i32"); + stepAddress += SIZE_OF_INT; + const stepValueId = getValue(stepAddress, "i32"); + stepAddress += SIZE_OF_INT; + if (stepType === PREDICATE_STEP_TYPE_CAPTURE) { + steps.push({ + type: "capture", + name: captureNames[stepValueId] + }); + } else if (stepType === PREDICATE_STEP_TYPE_STRING) { + steps.push({ + type: "string", + value: stringValues[stepValueId] + }); + } else if (steps.length > 0) { + if (steps[0].type !== "string") { + throw new Error("Predicates must begin with a literal value"); + } + const operator = steps[0].value; + let isPositive = true; + switch (operator) { + case "not-eq?": + isPositive = false; + + case "eq?": + if (steps.length !== 3) throw new Error(`Wrong number of arguments to \`#eq?\` predicate. Expected 2, got ${steps.length - 1}`); + if (steps[1].type !== "capture") throw new Error(`First argument of \`#eq?\` predicate must be a capture. Got "${steps[1].value}"`); + if (steps[2].type === "capture") { + const captureName1 = steps[1].name; + const captureName2 = steps[2].name; + textPredicates[i].push(function(captures) { + let node1, node2; + for (const c of captures) { + if (c.name === captureName1) node1 = c.node; + if (c.name === captureName2) node2 = c.node; + } + if (node1 === undefined || node2 === undefined) return true; + return node1.text === node2.text === isPositive; + }); + } else { + const captureName = steps[1].name; + const stringValue = steps[2].value; + textPredicates[i].push(function(captures) { + for (const c of captures) { + if (c.name === captureName) { + return c.node.text === stringValue === isPositive; + } + } + return true; + }); + } + break; + + case "not-match?": + isPositive = false; + + case "match?": + if (steps.length !== 3) throw new Error(`Wrong number of arguments to \`#match?\` predicate. Expected 2, got ${steps.length - 1}.`); + if (steps[1].type !== "capture") throw new Error(`First argument of \`#match?\` predicate must be a capture. Got "${steps[1].value}".`); + if (steps[2].type !== "string") throw new Error(`Second argument of \`#match?\` predicate must be a string. Got @${steps[2].value}.`); + const captureName = steps[1].name; + const regex = new RegExp(steps[2].value); + textPredicates[i].push(function(captures) { + for (const c of captures) { + if (c.name === captureName) return regex.test(c.node.text) === isPositive; + } + return true; + }); + break; + + case "set!": + if (steps.length < 2 || steps.length > 3) throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`); + if (steps.some(s => s.type !== "string")) throw new Error(`Arguments to \`#set!\` predicate must be a strings.".`); + if (!setProperties[i]) setProperties[i] = {}; + setProperties[i][steps[1].value] = steps[2] ? steps[2].value : null; + break; + + case "is?": + case "is-not?": + if (steps.length < 2 || steps.length > 3) throw new Error(`Wrong number of arguments to \`#${operator}\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`); + if (steps.some(s => s.type !== "string")) throw new Error(`Arguments to \`#${operator}\` predicate must be a strings.".`); + const properties = operator === "is?" ? assertedProperties : refutedProperties; + if (!properties[i]) properties[i] = {}; + properties[i][steps[1].value] = steps[2] ? steps[2].value : null; + break; + + default: + predicates[i].push({ + operator: operator, + operands: steps.slice(1) + }); + } + steps.length = 0; + } + } + Object.freeze(setProperties[i]); + Object.freeze(assertedProperties[i]); + Object.freeze(refutedProperties[i]); + } + C._free(sourceAddress); + return new Query(INTERNAL, address, captureNames, textPredicates, predicates, Object.freeze(setProperties), Object.freeze(assertedProperties), Object.freeze(refutedProperties)); + } + static load(input) { + let bytes; + if (input instanceof Uint8Array) { + bytes = Promise.resolve(input); + } else { + const url = input; + if (typeof process !== "undefined" && process.versions && process.versions.node) { + const fs = require("fs"); + bytes = Promise.resolve(fs.readFileSync(url)); + } else { + bytes = fetch(url).then(response => response.arrayBuffer().then(buffer => { + if (response.ok) { + return new Uint8Array(buffer); + } else { + const body = new TextDecoder("utf-8").decode(buffer); + throw new Error(`Language.load failed with status ${response.status}.\n\n${body}`); + } + })); + } + } + const loadModule = typeof loadSideModule === "function" ? loadSideModule : loadWebAssemblyModule; + return bytes.then(bytes => loadModule(bytes, { + loadAsync: true + })).then(mod => { + const symbolNames = Object.keys(mod); + const functionName = symbolNames.find(key => LANGUAGE_FUNCTION_REGEX.test(key) && !key.includes("external_scanner_")); + if (!functionName) { + console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(symbolNames, null, 2)}`); + } + const languageAddress = mod[functionName](); + return new Language(INTERNAL, languageAddress); + }); + } + } + class Query { + constructor(internal, address, captureNames, textPredicates, predicates, setProperties, assertedProperties, refutedProperties) { + assertInternal(internal); + this[0] = address; + this.captureNames = captureNames; + this.textPredicates = textPredicates; + this.predicates = predicates; + this.setProperties = setProperties; + this.assertedProperties = assertedProperties; + this.refutedProperties = refutedProperties; + this.exceededMatchLimit = false; + } + delete() { + C._ts_query_delete(this[0]); + this[0] = 0; + } + matches(node, startPosition, endPosition, options) { + if (!startPosition) startPosition = ZERO_POINT; + if (!endPosition) endPosition = ZERO_POINT; + if (!options) options = {}; + let matchLimit = options.matchLimit; + if (typeof matchLimit === "undefined") { + matchLimit = 0; + } else if (typeof matchLimit !== "number") { + throw new Error("Arguments must be numbers"); + } + marshalNode(node); + C._ts_query_matches_wasm(this[0], node.tree[0], startPosition.row, startPosition.column, endPosition.row, endPosition.column, matchLimit); + const rawCount = getValue(TRANSFER_BUFFER, "i32"); + const startAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + const didExceedMatchLimit = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32"); + const result = new Array(rawCount); + this.exceededMatchLimit = !!didExceedMatchLimit; + let filteredCount = 0; + let address = startAddress; + for (let i = 0; i < rawCount; i++) { + const pattern = getValue(address, "i32"); + address += SIZE_OF_INT; + const captureCount = getValue(address, "i32"); + address += SIZE_OF_INT; + const captures = new Array(captureCount); + address = unmarshalCaptures(this, node.tree, address, captures); + if (this.textPredicates[pattern].every(p => p(captures))) { + result[filteredCount++] = { + pattern: pattern, + captures: captures + }; + const setProperties = this.setProperties[pattern]; + if (setProperties) result[i].setProperties = setProperties; + const assertedProperties = this.assertedProperties[pattern]; + if (assertedProperties) result[i].assertedProperties = assertedProperties; + const refutedProperties = this.refutedProperties[pattern]; + if (refutedProperties) result[i].refutedProperties = refutedProperties; + } + } + result.length = filteredCount; + C._free(startAddress); + return result; + } + captures(node, startPosition, endPosition, options) { + if (!startPosition) startPosition = ZERO_POINT; + if (!endPosition) endPosition = ZERO_POINT; + if (!options) options = {}; + let matchLimit = options.matchLimit; + if (typeof matchLimit === "undefined") { + matchLimit = 0; + } else if (typeof matchLimit !== "number") { + throw new Error("Arguments must be numbers"); + } + marshalNode(node); + C._ts_query_captures_wasm(this[0], node.tree[0], startPosition.row, startPosition.column, endPosition.row, endPosition.column, matchLimit); + const count = getValue(TRANSFER_BUFFER, "i32"); + const startAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32"); + const didExceedMatchLimit = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32"); + const result = []; + this.exceededMatchLimit = !!didExceedMatchLimit; + const captures = []; + let address = startAddress; + for (let i = 0; i < count; i++) { + const pattern = getValue(address, "i32"); + address += SIZE_OF_INT; + const captureCount = getValue(address, "i32"); + address += SIZE_OF_INT; + const captureIndex = getValue(address, "i32"); + address += SIZE_OF_INT; + captures.length = captureCount; + address = unmarshalCaptures(this, node.tree, address, captures); + if (this.textPredicates[pattern].every(p => p(captures))) { + const capture = captures[captureIndex]; + const setProperties = this.setProperties[pattern]; + if (setProperties) capture.setProperties = setProperties; + const assertedProperties = this.assertedProperties[pattern]; + if (assertedProperties) capture.assertedProperties = assertedProperties; + const refutedProperties = this.refutedProperties[pattern]; + if (refutedProperties) capture.refutedProperties = refutedProperties; + result.push(capture); + } + } + C._free(startAddress); + return result; + } + predicatesForPattern(patternIndex) { + return this.predicates[patternIndex]; + } + didExceedMatchLimit() { + return this.exceededMatchLimit; + } + } + function getText(tree, startIndex, endIndex) { + const length = endIndex - startIndex; + let result = tree.textCallback(startIndex, null, endIndex); + startIndex += result.length; + while (startIndex < endIndex) { + const string = tree.textCallback(startIndex, null, endIndex); + if (string && string.length > 0) { + startIndex += string.length; + result += string; + } else { + break; + } + } + if (startIndex > endIndex) { + result = result.slice(0, length); + } + return result; + } + function unmarshalCaptures(query, tree, address, result) { + for (let i = 0, n = result.length; i < n; i++) { + const captureIndex = getValue(address, "i32"); + address += SIZE_OF_INT; + const node = unmarshalNode(tree, address); + address += SIZE_OF_NODE; + result[i] = { + name: query.captureNames[captureIndex], + node: node + }; + } + return address; + } + function assertInternal(x) { + if (x !== INTERNAL) throw new Error("Illegal constructor"); + } + function isPoint(point) { + return point && typeof point.row === "number" && typeof point.column === "number"; + } + function marshalNode(node) { + let address = TRANSFER_BUFFER; + setValue(address, node.id, "i32"); + address += SIZE_OF_INT; + setValue(address, node.startIndex, "i32"); + address += SIZE_OF_INT; + setValue(address, node.startPosition.row, "i32"); + address += SIZE_OF_INT; + setValue(address, node.startPosition.column, "i32"); + address += SIZE_OF_INT; + setValue(address, node[0], "i32"); + } + function unmarshalNode(tree, address = TRANSFER_BUFFER) { + const id = getValue(address, "i32"); + address += SIZE_OF_INT; + if (id === 0) return null; + const index = getValue(address, "i32"); + address += SIZE_OF_INT; + const row = getValue(address, "i32"); + address += SIZE_OF_INT; + const column = getValue(address, "i32"); + address += SIZE_OF_INT; + const other = getValue(address, "i32"); + const result = new Node(INTERNAL, tree); + result.id = id; + result.startIndex = index; + result.startPosition = { + row: row, + column: column + }; + result[0] = other; + return result; + } + function marshalTreeCursor(cursor, address = TRANSFER_BUFFER) { + setValue(address + 0 * SIZE_OF_INT, cursor[0], "i32"), setValue(address + 1 * SIZE_OF_INT, cursor[1], "i32"), + setValue(address + 2 * SIZE_OF_INT, cursor[2], "i32"); + } + function unmarshalTreeCursor(cursor) { + cursor[0] = getValue(TRANSFER_BUFFER + 0 * SIZE_OF_INT, "i32"), cursor[1] = getValue(TRANSFER_BUFFER + 1 * SIZE_OF_INT, "i32"), + cursor[2] = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32"); + } + function marshalPoint(address, point) { + setValue(address, point.row, "i32"); + setValue(address + SIZE_OF_INT, point.column, "i32"); + } + function unmarshalPoint(address) { + return { + row: getValue(address, "i32"), + column: getValue(address + SIZE_OF_INT, "i32") + }; + } + function marshalRange(address, range) { + marshalPoint(address, range.startPosition); + address += SIZE_OF_POINT; + marshalPoint(address, range.endPosition); + address += SIZE_OF_POINT; + setValue(address, range.startIndex, "i32"); + address += SIZE_OF_INT; + setValue(address, range.endIndex, "i32"); + address += SIZE_OF_INT; + } + function unmarshalRange(address) { + const result = {}; + result.startPosition = unmarshalPoint(address); + address += SIZE_OF_POINT; + result.endPosition = unmarshalPoint(address); + address += SIZE_OF_POINT; + result.startIndex = getValue(address, "i32"); + address += SIZE_OF_INT; + result.endIndex = getValue(address, "i32"); + return result; + } + function marshalEdit(edit) { + let address = TRANSFER_BUFFER; + marshalPoint(address, edit.startPosition); + address += SIZE_OF_POINT; + marshalPoint(address, edit.oldEndPosition); + address += SIZE_OF_POINT; + marshalPoint(address, edit.newEndPosition); + address += SIZE_OF_POINT; + setValue(address, edit.startIndex, "i32"); + address += SIZE_OF_INT; + setValue(address, edit.oldEndIndex, "i32"); + address += SIZE_OF_INT; + setValue(address, edit.newEndIndex, "i32"); + address += SIZE_OF_INT; + } + for (const name of Object.getOwnPropertyNames(ParserImpl.prototype)) { + Object.defineProperty(Parser.prototype, name, { + value: ParserImpl.prototype[name], + enumerable: false, + writable: false + }); + } + Parser.Language = Language; + Module.onRuntimeInitialized = (() => { + ParserImpl.init(); + resolveInitPromise(); + }); + }); + } + } + return Parser; +}(); + +if (typeof exports === "object") { + module.exports = TreeSitter; +} diff --git a/tree-sitter.wasm b/tree-sitter.wasm new file mode 100644 index 0000000000000000000000000000000000000000..e93f28c729c3a669afb8fe797706ff694822582a GIT binary patch literal 436402 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


LZM~(J*fY+m z9&cDM)c9Wbezy+J-NO%juzab=rqE~Pk1SKQ`=an8Zj4cl{n$Foyy?}_pAznU_#gJ# z+&I+`Yktao%FkVvY5jngJa3+tg`2!smIN8E@-Ic6`YYzauiA8Bj2P1kA?BC9ELU5r zkXYh?L{3_SmEVNlwj!y>ojaGtl2iUbN&NmJk?E*E(oz03_G11-5X7`DvRLQ+h0b$b zp%O@^^;hCFu+<{S)JNED{`+c<`(XFWVHhO2rk}`adrFugG)gmBbtSpPNp(r2ukC>V z!vJ0y-8uD^+=BcQ1(#Bl`wIpDIRSvPH69U$U&HY#ep#-1tV9@Onae40gk8t@9SgD1 zhj3Tju+<=wWP6xI6(T5Su3Z2J=@XHOCMfTK@ETn$4~Q}Q@+mS0iaUuV2qHD)5hm(& z)*GBqv)z)*mFqJNDFR70ImYI)-DtmdBcy`;wi|ISL`nfy&qo143`u*Rns4P(mqu7iLQWsUe8a{5dLx*N77KQQ}sm;j46u1QJfnDhp3f zkYw2f3^K^Pb`ILE+_sQICUw-fRI&Z%uAIqZzDAHi?nb6C(e57QgcNd5PTaHi8tW_% z^K)IfMjOt=u_byr8+JrFHJz*d5OfZIQnjq+#rMPY`&P_U?$ty z8w7^cSz8}fTag+b1(7MP*%YM&4^Pn6HEJtoY>w|wQroo}j

I{VCm)#I40nrrwvF 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%0D}YH_S2+sHT?LJD4P&jh+&firCyJEDL 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


`Iu7}Z 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