UNPKG

web-tree-sitter

Version:
1,221 lines (1,220 loc) 160 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/tree-sitter.cjs var require_tree_sitter = __commonJS({ "lib/tree-sitter.cjs"(exports, module) { "use strict"; var Module = (() => { var _scriptName = typeof document != "undefined" ? document.currentScript?.src : void 0; if (typeof __filename != "undefined") _scriptName = _scriptName || __filename; return async function(moduleArg = {}) { var moduleRtn; var Module = moduleArg; var readyPromiseResolve, readyPromiseReject; var readyPromise = new Promise((resolve, reject) => { readyPromiseResolve = resolve; readyPromiseReject = reject; }); var ENVIRONMENT_IS_WEB = typeof window == "object"; var ENVIRONMENT_IS_WORKER = typeof WorkerGlobalScope != "undefined"; var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string" && process.type != "renderer"; var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER; if (ENVIRONMENT_IS_NODE) { } Module.currentQueryProgressCallback = null; Module.currentProgressCallback = null; Module.currentLogCallback = null; Module.currentParseCallback = null; var moduleOverrides = Object.assign({}, Module); var arguments_ = []; var thisProgram = "./this.program"; var quit_ = /* @__PURE__ */ __name((status, toThrow) => { throw toThrow; }, "quit_"); 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"); var nodePath = require("path"); 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 (!Module["thisProgram"] && 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) { if (ENVIRONMENT_IS_WORKER) { scriptDirectory = self.location.href; } else if (typeof document != "undefined" && document.currentScript) { scriptDirectory = document.currentScript.src; } if (_scriptName) { scriptDirectory = _scriptName; } if (scriptDirectory.startsWith("blob:")) { scriptDirectory = ""; } else { scriptDirectory = scriptDirectory.slice(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1); } { 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 = Module["print"] || console.log.bind(console); var err = Module["printErr"] || console.error.bind(console); Object.assign(Module, moduleOverrides); moduleOverrides = null; if (Module["arguments"]) arguments_ = Module["arguments"]; if (Module["thisProgram"]) thisProgram = Module["thisProgram"]; var dynamicLibraries = Module["dynamicLibraries"] || []; var wasmBinary = Module["wasmBinary"]; var wasmMemory; var ABORT = false; var EXITSTATUS; function assert(condition, text) { if (!condition) { abort(text); } } __name(assert, "assert"); var HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAP64, HEAPU64, HEAPF64; var HEAP_DATA_VIEW; var runtimeInitialized = false; var isFileURI = /* @__PURE__ */ __name((filename) => filename.startsWith("file://"), "isFileURI"); function updateMemoryViews() { var b = wasmMemory.buffer; Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(b); 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); } __name(updateMemoryViews, "updateMemoryViews"); 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(); 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"); var runDependencies = 0; var dependenciesFulfilled = null; function getUniqueRunDependency(id) { return id; } __name(getUniqueRunDependency, "getUniqueRunDependency"); function addRunDependency(id) { runDependencies++; Module["monitorRunDependencies"]?.(runDependencies); } __name(addRunDependency, "addRunDependency"); function removeRunDependency(id) { runDependencies--; Module["monitorRunDependencies"]?.(runDependencies); if (runDependencies == 0) { if (dependenciesFulfilled) { var callback = dependenciesFulfilled; dependenciesFulfilled = null; callback(); } } } __name(removeRunDependency, "removeRunDependency"); 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("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 && typeof WebAssembly.instantiateStreaming == "function" && !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"]); removeRunDependency("wasm-instantiate"); return wasmExports; } __name(receiveInstance, "receiveInstance"); addRunDependency("wasm-instantiate"); 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) => { receiveInstance(mod, inst); resolve(mod.exports); }); }); } wasmBinaryFile ??= findWasmBinary(); try { var result = await instantiateAsync(wasmBinary, wasmBinaryFile, info2); var exports2 = receiveInstantiationResult(result); return exports2; } catch (e) { readyPromiseReject(e); return Promise.reject(e); } } __name(createWasm, "createWasm"); var ASM_CONSTS = {}; 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_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_U16 = /* @__PURE__ */ __name((byteOffset) => HEAP_DATA_VIEW.getUint16(byteOffset, true), "LE_HEAP_LOAD_U16"); 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_U16 = /* @__PURE__ */ __name((byteOffset, value) => HEAP_DATA_VIEW.setUint16(byteOffset, value, true), "LE_HEAP_STORE_U16"); 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.unshift(cb), "addOnPostRun"); var onPreRuns = []; var addOnPreRun = /* @__PURE__ */ __name((cb) => onPreRuns.unshift(cb), "addOnPreRun"); var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder() : void 0; var UTF8ArrayToString = /* @__PURE__ */ __name((heapOrArray, idx = 0, maxBytesToRead = NaN) => { var endIdx = idx + maxBytesToRead; var endPtr = idx; while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr; 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 failIf(condition, message) { if (condition) throw new Error(message); } __name(failIf, "failIf"); var name2 = "dylink.0"; if (binary2 instanceof WebAssembly.Module) { var dylinkSection = WebAssembly.Module.customSections(binary2, name2); if (dylinkSection.length === 0) { name2 = "dylink"; dylinkSection = WebAssembly.Module.customSections(binary2, name2); } 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; name2 = getString(); } var customSection = { neededDynlibs: [], tlsExports: /* @__PURE__ */ new Set(), weakImports: /* @__PURE__ */ new Set() }; if (name2 == "dylink") { customSection.memorySize = getLEB(); customSection.memoryAlign = getLEB(); customSection.tableSize = getLEB(); customSection.tableAlign = getLEB(); var neededDynlibsCount = getLEB(); for (var i2 = 0; i2 < neededDynlibsCount; ++i2) { var libname = getString(); customSection.neededDynlibs.push(libname); } } else { failIf(name2 !== "dylink.0"); 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_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) { var neededDynlibsCount = getLEB(); for (var i2 = 0; i2 < neededDynlibsCount; ++i2) { libname = getString(); customSection.neededDynlibs.push(libname); } } 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 { 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 HEAP64[ptr >> 3]; 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 = 78224; 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 uleb128Encode = /* @__PURE__ */ __name((n, target) => { if (n < 128) { target.push(n); } else { target.push(n % 128 | 128, n >> 7); } }, "uleb128Encode"); var sigToWasmTypes = /* @__PURE__ */ __name((sig) => { var typeNames = { "i": "i32", "j": "i64", "f": "f32", "d": "f64", "e": "externref", "p": "i32" }; var type = { parameters: [], results: sig[0] == "v" ? [] : [typeNames[sig[0]]] }; for (var i2 = 1; i2 < sig.length; ++i2) { type.parameters.push(typeNames[sig[i2]]); } return type; }, "sigToWasmTypes"); var generateFuncType = /* @__PURE__ */ __name((sig, target) => { var sigRet = sig.slice(0, 1); var sigParam = sig.slice(1); var typeCodes = { "i": 127, // i32 "p": 127, // i32 "j": 126, // i64 "f": 125, // f32 "d": 124, // f64 "e": 111 }; target.push(96); uleb128Encode(sigParam.length, target); for (var i2 = 0; i2 < sigParam.length; ++i2) { target.push(typeCodes[sigParam[i2]]); } if (sigRet == "v") { target.push(0); } else { target.push(1, typeCodes[sigRet]); } }, "generateFuncType"); var convertJsFunctionToWasm = /* @__PURE__ */ __name((func2, sig) => { if (typeof WebAssembly.Function == "function") { return new WebAssembly.Function(sigToWasmTypes(sig), func2); } var typeSectionBody = [1]; generateFuncType(sig, typeSectionBody); var bytes = [ 0, 97, 115, 109, // magic ("\0asm") 1, 0, 0, 0, // version: 1 1 ]; uleb128Encode(typeSectionBody.length, bytes); bytes.push(...typeSectionBody); bytes.push( 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(new Uint8Array(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) { if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1; 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(); } try { wasmTable.grow(1); } catch (err2) { if (!(err2 instanceof RangeError)) { throw err2; } throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."; } return wasmTable.length - 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 = []) => { var rtn = getWasmTableEntry(ptr)(...args2); return 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.unshift(cb), "addOnPostCtor"); var UTF8ToString = /* @__PURE__ */ __name((ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "", "UTF8ToString"); var loadWebAssemblyModule = /* @__PURE__ */ __name((binary, flags, libName, localScope, handle) => { var metadata = getDylinkMetadata(binary); currentModuleWeakSymbols = metadata.weakImports; 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); 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) { if (binary instanceof WebAssembly.Module) { var instance = new WebAssembly.Instance(binary, info); return Promise.resolve(postInstantiation(binary, instance)); } return WebAssembly.instantiate(binary, info).then((result) => postInstantiation(result.module, result.instance)); } 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"); 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 loadDylibs = /* @__PURE__ */ __name(() => { if (!dynamicLibraries.length) { reportUndefinedSymbols(); return; } addRunDependency("loadDylibs"); dynamicLibraries.reduce((chain, lib) => chain.then(() => loadDynamicLibrary(lib, { loadAsync: true, global: true, nodelete: true, allowUndefined: true })), Promise.resolve()).then(() => { reportUndefinedSymbols(); removeRunDependency("loadDylibs"); }); }, "loadDylibs"); var noExitRuntime = Module["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": HEAP64[ptr >> 3] = 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_pointer = new WebAssembly.Global({ "value": "i32", "mutable": true }, 78224); var ___table_base = new WebAssembly.Global({ "value": "i32", "mutable": false }, 1); var __abort_js = /* @__PURE__ */ __name(() => abort(""), "__abort_js"); __abort_js.sig = "v"; var _emscripten_get_now = /* @__PURE__ */ __name(() => performance.now(), "_emscripten_get_now"); _emscripten_get_now.sig = "d"; var _emscripten_date_now = /* @__PURE__ */ __name(() => Date.now(), "_emscripten_date_now"); _emscripten_date_now.sig = "d"; var nowIsMonotonic = 1; var checkWasiClock = /* @__PURE__ */ __name((clock_id) => clock_id >= 0 && clock_id <= 3, "checkWasiClock"); var INT53_MAX = 9007199254740992; var INT53_MIN = -9007199254740992; var bigintToI53Checked = /* @__PURE__ */ __name((num) => num < INT53_MIN || num > INT53_MAX ? NaN : Number(num), "bigintToI53Checked"); function _clock_time_get(clk_id, ignored_precision, ptime) { ignored_precision = bigintToI53Checked(ignored_precision); if (!checkWasiClock(clk_id)) { return 28; } var now; if (clk_id === 0) { now = _emscripten_date_now(); } else if (nowIsMonotonic) { now = _emscripten_get_now(); } else { return 52; } var nsec = Math.round(now * 1e3 * 1e3); HEAP64[ptime >> 3] = BigInt(nsec); return 0; } __name(_clock_time_get, "_clock_time_get"); _clock_time_get.sig = "iijp"; 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