UNPKG

web-tree-sitter

Version:
1,226 lines (1,225 loc) 166 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __export = (target, all) => { for (var name2 in all) __defProp(target, name2, { get: all[name2], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // lib/web-tree-sitter.cjs var require_web_tree_sitter = __commonJS({ "lib/web-tree-sitter.cjs"(exports, module) { "use strict"; var Module = (() => { var _scriptName = typeof document != "undefined" ? document.currentScript?.src : void 0; return async function(moduleArg = {}) { var moduleRtn; var Module = moduleArg; var ENVIRONMENT_IS_WEB = typeof window == "object"; var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined"; var ENVIRONMENT_IS_NODE = typeof process == "object" && process.versions?.node && process.type != "renderer"; Module.currentQueryProgressCallback = null; Module.currentProgressCallback = null; Module.currentLogCallback = null; Module.currentParseCallback = null; var arguments_ = []; var thisProgram = "./this.program"; var quit_ = /* @__PURE__ */ __name((status, toThrow) => { throw toThrow; }, "quit_"); if (typeof __filename != "undefined") { _scriptName = __filename; } else if (ENVIRONMENT_IS_WORKER) { _scriptName = self.location.href; } var scriptDirectory = ""; function locateFile(path) { if (Module["locateFile"]) { return Module["locateFile"](path, scriptDirectory); } return scriptDirectory + path; } __name(locateFile, "locateFile"); var readAsync, readBinary; if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); scriptDirectory = __dirname + "/"; readBinary = /* @__PURE__ */ __name((filename) => { filename = isFileURI(filename) ? new URL(filename) : filename; var ret = fs.readFileSync(filename); return ret; }, "readBinary"); readAsync = /* @__PURE__ */ __name(async (filename, binary2 = true) => { filename = isFileURI(filename) ? new URL(filename) : filename; var ret = fs.readFileSync(filename, binary2 ? void 0 : "utf8"); return ret; }, "readAsync"); if (process.argv.length > 1) { thisProgram = process.argv[1].replace(/\\/g, "/"); } arguments_ = process.argv.slice(2); quit_ = /* @__PURE__ */ __name((status, toThrow) => { process.exitCode = status; throw toThrow; }, "quit_"); } else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) { try { scriptDirectory = new URL(".", _scriptName).href; } catch { } { if (ENVIRONMENT_IS_WORKER) { readBinary = /* @__PURE__ */ __name((url) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, false); xhr.responseType = "arraybuffer"; xhr.send(null); return new Uint8Array( /** @type{!ArrayBuffer} */ xhr.response ); }, "readBinary"); } readAsync = /* @__PURE__ */ __name(async (url) => { if (isFileURI(url)) { return new Promise((resolve, reject) => { var xhr = new XMLHttpRequest(); xhr.open("GET", url, true); xhr.responseType = "arraybuffer"; xhr.onload = () => { if (xhr.status == 200 || xhr.status == 0 && xhr.response) { resolve(xhr.response); return; } reject(xhr.status); }; xhr.onerror = reject; xhr.send(null); }); } var response = await fetch(url, { credentials: "same-origin" }); if (response.ok) { return response.arrayBuffer(); } throw new Error(response.status + " : " + response.url); }, "readAsync"); } } else { } var out = console.log.bind(console); var err = console.error.bind(console); var dynamicLibraries = []; var wasmBinary; var ABORT = false; var EXITSTATUS; var isFileURI = /* @__PURE__ */ __name((filename) => filename.startsWith("file://"), "isFileURI"); var readyPromiseResolve, readyPromiseReject; var wasmMemory; var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64; var HEAP64, HEAPU64; var HEAP_DATA_VIEW; var runtimeInitialized = false; function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP8"] = HEAP8 = new Int8Array(b); Module["HEAP16"] = HEAP16 = new Int16Array(b); Module["HEAPU8"] = HEAPU8 = new Uint8Array(b); Module["HEAPU16"] = HEAPU16 = new Uint16Array(b); Module["HEAP32"] = HEAP32 = new Int32Array(b); Module["HEAPU32"] = HEAPU32 = new Uint32Array(b); Module["HEAPF32"] = HEAPF32 = new Float32Array(b); Module["HEAPF64"] = HEAPF64 = new Float64Array(b); Module["HEAP64"] = HEAP64 = new BigInt64Array(b); Module["HEAPU64"] = HEAPU64 = new BigUint64Array(b); Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(b); LE_HEAP_UPDATE(); } __name(updateMemoryViews, "updateMemoryViews"); function initMemory() { if (Module["wasmMemory"]) { wasmMemory = Module["wasmMemory"]; } else { var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 33554432; wasmMemory = new WebAssembly.Memory({ "initial": INITIAL_MEMORY / 65536, // In theory we should not need to emit the maximum if we want "unlimited" // or 4GB of memory, but VMs error on that atm, see // https://github.com/emscripten-core/emscripten/issues/14130 // And in the pthreads case we definitely need to emit a maximum. So // always emit one. "maximum": 32768 }); } updateMemoryViews(); } __name(initMemory, "initMemory"); var __RELOC_FUNCS__ = []; function preRun() { if (Module["preRun"]) { if (typeof Module["preRun"] == "function") Module["preRun"] = [Module["preRun"]]; while (Module["preRun"].length) { addOnPreRun(Module["preRun"].shift()); } } callRuntimeCallbacks(onPreRuns); } __name(preRun, "preRun"); function initRuntime() { runtimeInitialized = true; callRuntimeCallbacks(__RELOC_FUNCS__); wasmExports["__wasm_call_ctors"](); callRuntimeCallbacks(onPostCtors); } __name(initRuntime, "initRuntime"); function preMain() { } __name(preMain, "preMain"); function postRun() { if (Module["postRun"]) { if (typeof Module["postRun"] == "function") Module["postRun"] = [Module["postRun"]]; while (Module["postRun"].length) { addOnPostRun(Module["postRun"].shift()); } } callRuntimeCallbacks(onPostRuns); } __name(postRun, "postRun"); function abort(what) { Module["onAbort"]?.(what); what = "Aborted(" + what + ")"; err(what); ABORT = true; what += ". Build with -sASSERTIONS for more info."; var e = new WebAssembly.RuntimeError(what); readyPromiseReject?.(e); throw e; } __name(abort, "abort"); var wasmBinaryFile; function findWasmBinary() { return locateFile("web-tree-sitter.wasm"); } __name(findWasmBinary, "findWasmBinary"); function getBinarySync(file) { if (file == wasmBinaryFile && wasmBinary) { return new Uint8Array(wasmBinary); } if (readBinary) { return readBinary(file); } throw "both async and sync fetching of the wasm failed"; } __name(getBinarySync, "getBinarySync"); async function getWasmBinary(binaryFile) { if (!wasmBinary) { try { var response = await readAsync(binaryFile); return new Uint8Array(response); } catch { } } return getBinarySync(binaryFile); } __name(getWasmBinary, "getWasmBinary"); async function instantiateArrayBuffer(binaryFile, imports) { try { var binary2 = await getWasmBinary(binaryFile); var instance2 = await WebAssembly.instantiate(binary2, imports); return instance2; } catch (reason) { err(`failed to asynchronously prepare wasm: ${reason}`); abort(reason); } } __name(instantiateArrayBuffer, "instantiateArrayBuffer"); async function instantiateAsync(binary2, binaryFile, imports) { if (!binary2 && !isFileURI(binaryFile) && !ENVIRONMENT_IS_NODE) { try { var response = fetch(binaryFile, { credentials: "same-origin" }); var instantiationResult = await WebAssembly.instantiateStreaming(response, imports); return instantiationResult; } catch (reason) { err(`wasm streaming compile failed: ${reason}`); err("falling back to ArrayBuffer instantiation"); } } return instantiateArrayBuffer(binaryFile, imports); } __name(instantiateAsync, "instantiateAsync"); function getWasmImports() { return { "env": wasmImports, "wasi_snapshot_preview1": wasmImports, "GOT.mem": new Proxy(wasmImports, GOTHandler), "GOT.func": new Proxy(wasmImports, GOTHandler) }; } __name(getWasmImports, "getWasmImports"); async function createWasm() { function receiveInstance(instance2, module2) { wasmExports = instance2.exports; wasmExports = relocateExports(wasmExports, 1024); var metadata2 = getDylinkMetadata(module2); if (metadata2.neededDynlibs) { dynamicLibraries = metadata2.neededDynlibs.concat(dynamicLibraries); } mergeLibSymbols(wasmExports, "main"); LDSO.init(); loadDylibs(); __RELOC_FUNCS__.push(wasmExports["__wasm_apply_data_relocs"]); assignWasmExports(wasmExports); return wasmExports; } __name(receiveInstance, "receiveInstance"); function receiveInstantiationResult(result2) { return receiveInstance(result2["instance"], result2["module"]); } __name(receiveInstantiationResult, "receiveInstantiationResult"); var info2 = getWasmImports(); if (Module["instantiateWasm"]) { return new Promise((resolve, reject) => { Module["instantiateWasm"](info2, (mod, inst) => { resolve(receiveInstance(mod, inst)); }); }); } wasmBinaryFile ??= findWasmBinary(); var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info2); var exports2 = receiveInstantiationResult(result); return exports2; } __name(createWasm, "createWasm"); class ExitStatus { static { __name(this, "ExitStatus"); } name = "ExitStatus"; constructor(status) { this.message = `Program terminated with exit(${status})`; this.status = status; } } var GOT = {}; var currentModuleWeakSymbols = /* @__PURE__ */ new Set([]); var GOTHandler = { get(obj, symName) { var rtn = GOT[symName]; if (!rtn) { rtn = GOT[symName] = new WebAssembly.Global({ "value": "i32", "mutable": true }); } if (!currentModuleWeakSymbols.has(symName)) { rtn.required = true; } return rtn; } }; var LE_ATOMICS_NATIVE_BYTE_ORDER = []; var LE_HEAP_LOAD_F32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getFloat32(byteOffset, true), "LE_HEAP_LOAD_F32"); var LE_HEAP_LOAD_F64 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getFloat64(byteOffset, true), "LE_HEAP_LOAD_F64"); var LE_HEAP_LOAD_I16 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getInt16(byteOffset, true), "LE_HEAP_LOAD_I16"); var LE_HEAP_LOAD_I32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getInt32(byteOffset, true), "LE_HEAP_LOAD_I32"); var LE_HEAP_LOAD_I64 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getBigInt64(byteOffset, true), "LE_HEAP_LOAD_I64"); var LE_HEAP_LOAD_U32 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getUint32(byteOffset, true), "LE_HEAP_LOAD_U32"); var LE_HEAP_STORE_F32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setFloat32(byteOffset, value, true), "LE_HEAP_STORE_F32"); var LE_HEAP_STORE_F64 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setFloat64(byteOffset, value, true), "LE_HEAP_STORE_F64"); var LE_HEAP_STORE_I16 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setInt16(byteOffset, value, true), "LE_HEAP_STORE_I16"); var LE_HEAP_STORE_I32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setInt32(byteOffset, value, true), "LE_HEAP_STORE_I32"); var LE_HEAP_STORE_I64 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setBigInt64(byteOffset, value, true), "LE_HEAP_STORE_I64"); var LE_HEAP_STORE_U32 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setUint32(byteOffset, value, true), "LE_HEAP_STORE_U32"); var callRuntimeCallbacks = /* @__PURE__ */ __name((callbacks) => { while (callbacks.length > 0) { callbacks.shift()(Module); } }, "callRuntimeCallbacks"); var onPostRuns = []; var addOnPostRun = /* @__PURE__ */ __name((cb) => onPostRuns.push(cb), "addOnPostRun"); var onPreRuns = []; var addOnPreRun = /* @__PURE__ */ __name((cb) => onPreRuns.push(cb), "addOnPreRun"); var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder() : void 0; var findStringEnd = /* @__PURE__ */ __name((heapOrArray, idx, maxBytesToRead, ignoreNul) => { var maxIdx = idx + maxBytesToRead; if (ignoreNul) return maxIdx; while (heapOrArray[idx] && !(idx >= maxIdx)) ++idx; return idx; }, "findStringEnd"); var UTF8ArrayToString = /* @__PURE__ */ __name((heapOrArray, idx = 0, maxBytesToRead, ignoreNul) => { var endPtr = findStringEnd(heapOrArray, idx, maxBytesToRead, ignoreNul); if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) { return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr)); } var str = ""; while (idx < endPtr) { var u0 = heapOrArray[idx++]; if (!(u0 & 128)) { str += String.fromCharCode(u0); continue; } var u1 = heapOrArray[idx++] & 63; if ((u0 & 224) == 192) { str += String.fromCharCode((u0 & 31) << 6 | u1); continue; } var u2 = heapOrArray[idx++] & 63; if ((u0 & 240) == 224) { u0 = (u0 & 15) << 12 | u1 << 6 | u2; } else { u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heapOrArray[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; }, "UTF8ArrayToString"); var getDylinkMetadata = /* @__PURE__ */ __name((binary2) => { var offset = 0; var end = 0; function getU8() { return binary2[offset++]; } __name(getU8, "getU8"); function getLEB() { var ret = 0; var mul = 1; while (1) { var byte = binary2[offset++]; ret += (byte & 127) * mul; mul *= 128; if (!(byte & 128)) break; } return ret; } __name(getLEB, "getLEB"); function getString() { var len = getLEB(); offset += len; return UTF8ArrayToString(binary2, offset - len, len); } __name(getString, "getString"); function getStringList() { var count2 = getLEB(); var rtn = []; while (count2--) rtn.push(getString()); return rtn; } __name(getStringList, "getStringList"); function failIf(condition, message) { if (condition) throw new Error(message); } __name(failIf, "failIf"); if (binary2 instanceof WebAssembly.Module) { var dylinkSection = WebAssembly.Module.customSections(binary2, "dylink.0"); failIf(dylinkSection.length === 0, "need dylink section"); binary2 = new Uint8Array(dylinkSection[0]); end = binary2.length; } else { var int32View = new Uint32Array(new Uint8Array(binary2.subarray(0, 24)).buffer); var magicNumberFound = int32View[0] == 1836278016 || int32View[0] == 6386541; failIf(!magicNumberFound, "need to see wasm magic number"); failIf(binary2[8] !== 0, "need the dylink section to be first"); offset = 9; var section_size = getLEB(); end = offset + section_size; var name2 = getString(); failIf(name2 !== "dylink.0"); } var customSection = { neededDynlibs: [], tlsExports: /* @__PURE__ */ new Set(), weakImports: /* @__PURE__ */ new Set(), runtimePaths: [] }; var WASM_DYLINK_MEM_INFO = 1; var WASM_DYLINK_NEEDED = 2; var WASM_DYLINK_EXPORT_INFO = 3; var WASM_DYLINK_IMPORT_INFO = 4; var WASM_DYLINK_RUNTIME_PATH = 5; var WASM_SYMBOL_TLS = 256; var WASM_SYMBOL_BINDING_MASK = 3; var WASM_SYMBOL_BINDING_WEAK = 1; while (offset < end) { var subsectionType = getU8(); var subsectionSize = getLEB(); if (subsectionType === WASM_DYLINK_MEM_INFO) { customSection.memorySize = getLEB(); customSection.memoryAlign = getLEB(); customSection.tableSize = getLEB(); customSection.tableAlign = getLEB(); } else if (subsectionType === WASM_DYLINK_NEEDED) { customSection.neededDynlibs = getStringList(); } else if (subsectionType === WASM_DYLINK_EXPORT_INFO) { var count = getLEB(); while (count--) { var symname = getString(); var flags2 = getLEB(); if (flags2 & WASM_SYMBOL_TLS) { customSection.tlsExports.add(symname); } } } else if (subsectionType === WASM_DYLINK_IMPORT_INFO) { var count = getLEB(); while (count--) { var modname = getString(); var symname = getString(); var flags2 = getLEB(); if ((flags2 & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) { customSection.weakImports.add(symname); } } } else if (subsectionType === WASM_DYLINK_RUNTIME_PATH) { customSection.runtimePaths = getStringList(); } else { offset += subsectionSize; } } return customSection; }, "getDylinkMetadata"); function getValue(ptr, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": return HEAP8[ptr]; case "i8": return HEAP8[ptr]; case "i16": return LE_HEAP_LOAD_I16((ptr >> 1) * 2); case "i32": return LE_HEAP_LOAD_I32((ptr >> 2) * 4); case "i64": return LE_HEAP_LOAD_I64((ptr >> 3) * 8); case "float": return LE_HEAP_LOAD_F32((ptr >> 2) * 4); case "double": return LE_HEAP_LOAD_F64((ptr >> 3) * 8); case "*": return LE_HEAP_LOAD_U32((ptr >> 2) * 4); default: abort(`invalid type for getValue: ${type}`); } } __name(getValue, "getValue"); var newDSO = /* @__PURE__ */ __name((name2, handle2, syms) => { var dso = { refcount: Infinity, name: name2, exports: syms, global: true }; LDSO.loadedLibsByName[name2] = dso; if (handle2 != void 0) { LDSO.loadedLibsByHandle[handle2] = dso; } return dso; }, "newDSO"); var LDSO = { loadedLibsByName: {}, loadedLibsByHandle: {}, init() { newDSO("__main__", 0, wasmImports); } }; var ___heap_base = 78240; var alignMemory = /* @__PURE__ */ __name((size, alignment) => Math.ceil(size / alignment) * alignment, "alignMemory"); var getMemory = /* @__PURE__ */ __name((size) => { if (runtimeInitialized) { return _calloc(size, 1); } var ret = ___heap_base; var end = ret + alignMemory(size, 16); ___heap_base = end; GOT["__heap_base"].value = end; return ret; }, "getMemory"); var isInternalSym = /* @__PURE__ */ __name((symName) => ["__cpp_exception", "__c_longjmp", "__wasm_apply_data_relocs", "__dso_handle", "__tls_size", "__tls_align", "__set_stack_limits", "_emscripten_tls_init", "__wasm_init_tls", "__wasm_call_ctors", "__start_em_asm", "__stop_em_asm", "__start_em_js", "__stop_em_js"].includes(symName) || symName.startsWith("__em_js__"), "isInternalSym"); var uleb128EncodeWithLen = /* @__PURE__ */ __name((arr) => { const n = arr.length; return [n % 128 | 128, n >> 7, ...arr]; }, "uleb128EncodeWithLen"); var wasmTypeCodes = { "i": 127, // i32 "p": 127, // i32 "j": 126, // i64 "f": 125, // f32 "d": 124, // f64 "e": 111 }; var generateTypePack = /* @__PURE__ */ __name((types) => uleb128EncodeWithLen(Array.from(types, (type) => { var code = wasmTypeCodes[type]; return code; })), "generateTypePack"); var convertJsFunctionToWasm = /* @__PURE__ */ __name((func2, sig) => { var bytes = Uint8Array.of( 0, 97, 115, 109, // magic ("\0asm") 1, 0, 0, 0, // version: 1 1, ...uleb128EncodeWithLen([ 1, // count: 1 96, // param types ...generateTypePack(sig.slice(1)), // return types (for now only supporting [] if `void` and single [T] otherwise) ...generateTypePack(sig[0] === "v" ? "" : sig[0]) ]), // The rest of the module is static 2, 7, // import section // (import "e" "f" (func 0 (type 0))) 1, 1, 101, 1, 102, 0, 0, 7, 5, // export section // (export "f" (func 0 (type 0))) 1, 1, 102, 0, 0 ); var module2 = new WebAssembly.Module(bytes); var instance2 = new WebAssembly.Instance(module2, { "e": { "f": func2 } }); var wrappedFunc = instance2.exports["f"]; return wrappedFunc; }, "convertJsFunctionToWasm"); var wasmTableMirror = []; var wasmTable = new WebAssembly.Table({ "initial": 31, "element": "anyfunc" }); var getWasmTableEntry = /* @__PURE__ */ __name((funcPtr) => { var func2 = wasmTableMirror[funcPtr]; if (!func2) { wasmTableMirror[funcPtr] = func2 = wasmTable.get(funcPtr); } return func2; }, "getWasmTableEntry"); var updateTableMap = /* @__PURE__ */ __name((offset, count) => { if (functionsInTableMap) { for (var i2 = offset; i2 < offset + count; i2++) { var item = getWasmTableEntry(i2); if (item) { functionsInTableMap.set(item, i2); } } } }, "updateTableMap"); var functionsInTableMap; var getFunctionAddress = /* @__PURE__ */ __name((func2) => { if (!functionsInTableMap) { functionsInTableMap = /* @__PURE__ */ new WeakMap(); updateTableMap(0, wasmTable.length); } return functionsInTableMap.get(func2) || 0; }, "getFunctionAddress"); var freeTableIndexes = []; var getEmptyTableSlot = /* @__PURE__ */ __name(() => { if (freeTableIndexes.length) { return freeTableIndexes.pop(); } return wasmTable["grow"](1); }, "getEmptyTableSlot"); var setWasmTableEntry = /* @__PURE__ */ __name((idx, func2) => { wasmTable.set(idx, func2); wasmTableMirror[idx] = wasmTable.get(idx); }, "setWasmTableEntry"); var addFunction = /* @__PURE__ */ __name((func2, sig) => { var rtn = getFunctionAddress(func2); if (rtn) { return rtn; } var ret = getEmptyTableSlot(); try { setWasmTableEntry(ret, func2); } catch (err2) { if (!(err2 instanceof TypeError)) { throw err2; } var wrapped = convertJsFunctionToWasm(func2, sig); setWasmTableEntry(ret, wrapped); } functionsInTableMap.set(func2, ret); return ret; }, "addFunction"); var updateGOT = /* @__PURE__ */ __name((exports2, replace) => { for (var symName in exports2) { if (isInternalSym(symName)) { continue; } var value = exports2[symName]; GOT[symName] ||= new WebAssembly.Global({ "value": "i32", "mutable": true }); if (replace || GOT[symName].value == 0) { if (typeof value == "function") { GOT[symName].value = addFunction(value); } else if (typeof value == "number") { GOT[symName].value = value; } else { err(`unhandled export type for '${symName}': ${typeof value}`); } } } }, "updateGOT"); var relocateExports = /* @__PURE__ */ __name((exports2, memoryBase2, replace) => { var relocated = {}; for (var e in exports2) { var value = exports2[e]; if (typeof value == "object") { value = value.value; } if (typeof value == "number") { value += memoryBase2; } relocated[e] = value; } updateGOT(relocated, replace); return relocated; }, "relocateExports"); var isSymbolDefined = /* @__PURE__ */ __name((symName) => { var existing = wasmImports[symName]; if (!existing || existing.stub) { return false; } return true; }, "isSymbolDefined"); var dynCall = /* @__PURE__ */ __name((sig, ptr, args2 = [], promising = false) => { var func2 = getWasmTableEntry(ptr); var rtn = func2(...args2); function convert(rtn2) { return rtn2; } __name(convert, "convert"); return convert(rtn); }, "dynCall"); var stackSave = /* @__PURE__ */ __name(() => _emscripten_stack_get_current(), "stackSave"); var stackRestore = /* @__PURE__ */ __name((val) => __emscripten_stack_restore(val), "stackRestore"); var createInvokeFunction = /* @__PURE__ */ __name((sig) => (ptr, ...args2) => { var sp = stackSave(); try { return dynCall(sig, ptr, args2); } catch (e) { stackRestore(sp); if (e !== e + 0) throw e; _setThrew(1, 0); if (sig[0] == "j") return 0n; } }, "createInvokeFunction"); var resolveGlobalSymbol = /* @__PURE__ */ __name((symName, direct = false) => { var sym; if (isSymbolDefined(symName)) { sym = wasmImports[symName]; } else if (symName.startsWith("invoke_")) { sym = wasmImports[symName] = createInvokeFunction(symName.split("_")[1]); } return { sym, name: symName }; }, "resolveGlobalSymbol"); var onPostCtors = []; var addOnPostCtor = /* @__PURE__ */ __name((cb) => onPostCtors.push(cb), "addOnPostCtor"); var UTF8ToString = /* @__PURE__ */ __name((ptr, maxBytesToRead, ignoreNul) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead, ignoreNul) : "", "UTF8ToString"); var loadWebAssemblyModule = /* @__PURE__ */ __name((binary, flags, libName, localScope, handle) => { var metadata = getDylinkMetadata(binary); function loadModule() { var memAlign = Math.pow(2, metadata.memoryAlign); var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0; var tableBase = metadata.tableSize ? wasmTable.length : 0; if (handle) { HEAP8[handle + 8] = 1; LE_HEAP_STORE_U32((handle + 12 >> 2) * 4, memoryBase); LE_HEAP_STORE_I32((handle + 16 >> 2) * 4, metadata.memorySize); LE_HEAP_STORE_U32((handle + 20 >> 2) * 4, tableBase); LE_HEAP_STORE_I32((handle + 24 >> 2) * 4, metadata.tableSize); } if (metadata.tableSize) { wasmTable.grow(metadata.tableSize); } var moduleExports; function resolveSymbol(sym) { var resolved = resolveGlobalSymbol(sym).sym; if (!resolved && localScope) { resolved = localScope[sym]; } if (!resolved) { resolved = moduleExports[sym]; } return resolved; } __name(resolveSymbol, "resolveSymbol"); var proxyHandler = { get(stubs, prop) { switch (prop) { case "__memory_base": return memoryBase; case "__table_base": return tableBase; } if (prop in wasmImports && !wasmImports[prop].stub) { var res = wasmImports[prop]; return res; } if (!(prop in stubs)) { var resolved; stubs[prop] = (...args2) => { resolved ||= resolveSymbol(prop); return resolved(...args2); }; } return stubs[prop]; } }; var proxy = new Proxy({}, proxyHandler); currentModuleWeakSymbols = metadata.weakImports; var info = { "GOT.mem": new Proxy({}, GOTHandler), "GOT.func": new Proxy({}, GOTHandler), "env": proxy, "wasi_snapshot_preview1": proxy }; function postInstantiation(module, instance) { updateTableMap(tableBase, metadata.tableSize); moduleExports = relocateExports(instance.exports, memoryBase); if (!flags.allowUndefined) { reportUndefinedSymbols(); } function addEmAsm(addr, body) { var args = []; var arity = 0; for (; arity < 16; arity++) { if (body.indexOf("$" + arity) != -1) { args.push("$" + arity); } else { break; } } args = args.join(","); var func = `(${args}) => { ${body} };`; ASM_CONSTS[start] = eval(func); } __name(addEmAsm, "addEmAsm"); if ("__start_em_asm" in moduleExports) { var start = moduleExports["__start_em_asm"]; var stop = moduleExports["__stop_em_asm"]; while (start < stop) { var jsString = UTF8ToString(start); addEmAsm(start, jsString); start = HEAPU8.indexOf(0, start) + 1; } } function addEmJs(name, cSig, body) { var jsArgs = []; cSig = cSig.slice(1, -1); if (cSig != "void") { cSig = cSig.split(","); for (var i in cSig) { var jsArg = cSig[i].split(" ").pop(); jsArgs.push(jsArg.replace("*", "")); } } var func = `(${jsArgs}) => ${body};`; moduleExports[name] = eval(func); } __name(addEmJs, "addEmJs"); for (var name in moduleExports) { if (name.startsWith("__em_js__")) { var start = moduleExports[name]; var jsString = UTF8ToString(start); var parts = jsString.split("<::>"); addEmJs(name.replace("__em_js__", ""), parts[0], parts[1]); delete moduleExports[name]; } } var applyRelocs = moduleExports["__wasm_apply_data_relocs"]; if (applyRelocs) { if (runtimeInitialized) { applyRelocs(); } else { __RELOC_FUNCS__.push(applyRelocs); } } var init = moduleExports["__wasm_call_ctors"]; if (init) { if (runtimeInitialized) { init(); } else { addOnPostCtor(init); } } return moduleExports; } __name(postInstantiation, "postInstantiation"); if (flags.loadAsync) { return (async () => { var instance2; if (binary instanceof WebAssembly.Module) { instance2 = new WebAssembly.Instance(binary, info); } else { ({ module: binary, instance: instance2 } = await WebAssembly.instantiate(binary, info)); } return postInstantiation(binary, instance2); })(); } var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary); var instance = new WebAssembly.Instance(module, info); return postInstantiation(module, instance); } __name(loadModule, "loadModule"); flags = { ...flags, rpath: { parentLibPath: libName, paths: metadata.runtimePaths } }; if (flags.loadAsync) { return metadata.neededDynlibs.reduce((chain, dynNeeded) => chain.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule); } metadata.neededDynlibs.forEach((needed) => loadDynamicLibrary(needed, flags, localScope)); return loadModule(); }, "loadWebAssemblyModule"); var mergeLibSymbols = /* @__PURE__ */ __name((exports2, libName2) => { for (var [sym, exp] of Object.entries(exports2)) { const setImport = /* @__PURE__ */ __name((target) => { if (!isSymbolDefined(target)) { wasmImports[target] = exp; } }, "setImport"); setImport(sym); const main_alias = "__main_argc_argv"; if (sym == "main") { setImport(main_alias); } if (sym == main_alias) { setImport("main"); } } }, "mergeLibSymbols"); var asyncLoad = /* @__PURE__ */ __name(async (url) => { var arrayBuffer = await readAsync(url); return new Uint8Array(arrayBuffer); }, "asyncLoad"); function loadDynamicLibrary(libName2, flags2 = { global: true, nodelete: true }, localScope2, handle2) { var dso = LDSO.loadedLibsByName[libName2]; if (dso) { if (!flags2.global) { if (localScope2) { Object.assign(localScope2, dso.exports); } } else if (!dso.global) { dso.global = true; mergeLibSymbols(dso.exports, libName2); } if (flags2.nodelete && dso.refcount !== Infinity) { dso.refcount = Infinity; } dso.refcount++; if (handle2) { LDSO.loadedLibsByHandle[handle2] = dso; } return flags2.loadAsync ? Promise.resolve(true) : true; } dso = newDSO(libName2, handle2, "loading"); dso.refcount = flags2.nodelete ? Infinity : 1; dso.global = flags2.global; function loadLibData() { if (handle2) { var data = LE_HEAP_LOAD_U32((handle2 + 28 >> 2) * 4); var dataSize = LE_HEAP_LOAD_U32((handle2 + 32 >> 2) * 4); if (data && dataSize) { var libData = HEAP8.slice(data, data + dataSize); return flags2.loadAsync ? Promise.resolve(libData) : libData; } } var libFile = locateFile(libName2); if (flags2.loadAsync) { return asyncLoad(libFile); } if (!readBinary) { throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`); } return readBinary(libFile); } __name(loadLibData, "loadLibData"); function getExports() { if (flags2.loadAsync) { return loadLibData().then((libData) => loadWebAssemblyModule(libData, flags2, libName2, localScope2, handle2)); } return loadWebAssemblyModule(loadLibData(), flags2, libName2, localScope2, handle2); } __name(getExports, "getExports"); function moduleLoaded(exports2) { if (dso.global) { mergeLibSymbols(exports2, libName2); } else if (localScope2) { Object.assign(localScope2, exports2); } dso.exports = exports2; } __name(moduleLoaded, "moduleLoaded"); if (flags2.loadAsync) { return getExports().then((exports2) => { moduleLoaded(exports2); return true; }); } moduleLoaded(getExports()); return true; } __name(loadDynamicLibrary, "loadDynamicLibrary"); var reportUndefinedSymbols = /* @__PURE__ */ __name(() => { for (var [symName, entry] of Object.entries(GOT)) { if (entry.value == 0) { var value = resolveGlobalSymbol(symName, true).sym; if (!value && !entry.required) { continue; } if (typeof value == "function") { entry.value = addFunction(value, value.sig); } else if (typeof value == "number") { entry.value = value; } else { throw new Error(`bad export type for '${symName}': ${typeof value}`); } } } }, "reportUndefinedSymbols"); var runDependencies = 0; var dependenciesFulfilled = null; var removeRunDependency = /* @__PURE__ */ __name((id) => { runDependencies--; Module["monitorRunDependencies"]?.(runDependencies); if (runDependencies == 0) { if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback(); } } }, "removeRunDependency"); var addRunDependency = /* @__PURE__ */ __name((id) => { runDependencies++; Module["monitorRunDependencies"]?.(runDependencies); }, "addRunDependency"); var loadDylibs = /* @__PURE__ */ __name(async () => { if (!dynamicLibraries.length) { reportUndefinedSymbols(); return; } addRunDependency("loadDylibs"); for (var lib of dynamicLibraries) { await loadDynamicLibrary(lib, { loadAsync: true, global: true, nodelete: true, allowUndefined: true }); } reportUndefinedSymbols(); removeRunDependency("loadDylibs"); }, "loadDylibs"); var noExitRuntime = true; function setValue(ptr, value, type = "i8") { if (type.endsWith("*")) type = "*"; switch (type) { case "i1": HEAP8[ptr] = value; break; case "i8": HEAP8[ptr] = value; break; case "i16": LE_HEAP_STORE_I16((ptr >> 1) * 2, value); break; case "i32": LE_HEAP_STORE_I32((ptr >> 2) * 4, value); break; case "i64": LE_HEAP_STORE_I64((ptr >> 3) * 8, BigInt(value)); break; case "float": LE_HEAP_STORE_F32((ptr >> 2) * 4, value); break; case "double": LE_HEAP_STORE_F64((ptr >> 3) * 8, value); break; case "*": LE_HEAP_STORE_U32((ptr >> 2) * 4, value); break; default: abort(`invalid type for setValue: ${type}`); } } __name(setValue, "setValue"); var ___memory_base = new WebAssembly.Global({ "value": "i32", "mutable": false }, 1024); var ___stack_high = 78240; var ___stack_low = 12704; var ___stack_pointer = new WebAssembly.Global({ "value": "i32", "mutable": true }, 78240); var ___table_base = new WebAssembly.Global({ "value": "i32", "mutable": false }, 1); var __abort_js = /* @__PURE__ */ __name(() => abort(""), "__abort_js"); __abort_js.sig = "v"; var getHeapMax = /* @__PURE__ */ __name(() => ( // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate // full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side // for any code that deals with heap sizes, which would require special // casing all heap size related code to treat 0 specially. 2147483648 ), "getHeapMax"); var growMemory = /* @__PURE__ */ __name((size) => { var oldHeapSize = wasmMemory.buffer.byteLength; var pages = (size - oldHeapSize + 65535) / 65536 | 0; try { wasmMemory.grow(pages); updateMemoryViews(); return 1; } catch (e) { } }, "growMemory"); var _emscripten_resize_heap = /* @__PURE__ */ __name((requestedSize) => { var oldSize = HEAPU8.length; requestedSize >>>= 0; var maxHeapSize = getHeapMax(); if (requestedSize > maxHeapSize) { return false; } for (var cutDown = 1; cutDown <= 4; cutDown *= 2) { var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown); overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296); var newSize = Math.min(maxHeapSize, alignMemory(Math.max(requestedSize, overGrownHeapSize), 65536)); var replacement = growMemory(newSize); if (replacement) { return true; } } return false; }, "_emscripten_resize_heap"); _emscripten_resize_heap.sig = "ip"; var _fd_close = /* @__PURE__ */ __name((fd) => 52, "_fd_close"); _fd_close.sig = "ii"; var INT53_MAX = 9007199254740992; var INT53_MIN = -9007199254740992; var bigintToI53Checked = /* @__PURE__ */ __name((num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num), "bigintToI53Checked"); function _fd_seek(fd, offset, whence, newOffset) { offset = bigintToI53Checked(offset); return 70; } __name(_fd_seek, "_fd_seek"); _fd_seek.sig = "iijip"; var printCharBuffers = [null, [], []]; var printChar = /* @__PURE__ */ __name((stream, curr) => { var buffer = printCharBuffers[stream]; if (curr === 0 || curr === 10) { (stream === 1 ? out : err)(UTF8ArrayToString(buffer)); buffer.length = 0; } else { buffer.push(curr); } }, "printChar"); var _fd_write = /* @__PURE__ */ __name((fd, iov, iovcnt, pnum) => { var num = 0; for (var i2 = 0; i2 < iovcnt; i2++) { var ptr = LE_HEAP_LOAD_U32((iov >> 2) * 4); var len = LE_HEAP_LOAD_U32((iov + 4 >> 2) * 4); iov += 8; for (var j = 0; j < len; j++) { printChar(fd, HEAPU8[ptr + j]); } num += len; } LE_HEAP_STORE_U32((pnum >> 2) * 4, num); return 0; }, "_fd_write"); _fd_write.sig = "iippp"; function _tree_sitter_log_callback(isLexMessage, messageAddress) { if (Module.currentLogCallback) { const message = UTF8ToString(messageAddress); Module.currentLogCallback(message, isLexMessage !== 0); } } __name(_tree_sitter_log_callback, "_tree_sitter_log_callback"); function _tree_sitter_parse_callback(inputBufferAddress, index, row, column, lengthAddress) { const INPUT_BUFFER_SIZE = 10 * 1024; const string = Module.currentParseCallback(index, { row, column }); if (typeof string === "string") { setValue(lengthAddress, string.length, "i32"); stringToUTF16(string, inputBufferAddress, INPUT_BUFFER_SIZE); } else { setValue(lengthAddress, 0, "i32"); } } __name(_tree_sitter_parse_callback, "_tree_sitter_parse_callback"); function _tree_sitt