web-tree-sitter
Version:
Tree-sitter bindings for the web
1,221 lines (1,220 loc) • 160 kB
JavaScript
"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