@vscode/tree-sitter-wasm 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
package/wasm/tree-sitter.js
CHANGED
@@ -4,7 +4,3284 @@
|
|
4
4
|
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Parser = {}));
|
5
5
|
})(this, (function () {
|
6
6
|
|
7
|
-
var Module=void 0!==Module?Module:{},TreeSitter=function(){var initPromise,document="object"==typeof window?{currentScript:window.document.currentScript}:null;class Parser{constructor(){this.initialize()}initialize(){throw new Error("cannot construct a Parser before calling `init()`")}static init(moduleOptions){return initPromise||(Module=Object.assign({},Module,moduleOptions),initPromise=new Promise((resolveInitPromise=>{var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(e,t)=>{throw t},ENVIRONMENT_IS_WEB="object"==typeof window,ENVIRONMENT_IS_WORKER="function"==typeof importScripts,ENVIRONMENT_IS_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,scriptDirectory="",read_,readAsync,readBinary;function locateFile(e){return Module.locateFile?Module.locateFile(e,scriptDirectory):scriptDirectory+e}if(ENVIRONMENT_IS_NODE){var fs=require("fs"),nodePath=require("path");scriptDirectory=ENVIRONMENT_IS_WORKER?nodePath.dirname(scriptDirectory)+"/":__dirname+"/",read_=(e,t)=>(e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFileSync(e,t?void 0:"utf8")),readBinary=e=>{var t=read_(e,!0);return t.buffer||(t=new Uint8Array(t)),t},readAsync=(e,t,_,s=!0)=>{e=isFileURI(e)?new URL(e):nodePath.normalize(e),fs.readFile(e,s?void 0:"utf8",((e,r)=>{e?_(e):t(s?r.buffer:r)}))},!Module.thisProgram&&process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),"undefined"!=typeof module&&(module.exports=Module),quit_=(e,t)=>{throw process.exitCode=e,t}}else(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)&&(ENVIRONMENT_IS_WORKER?scriptDirectory=self.location.href:void 0!==document&&document.currentScript&&(scriptDirectory=document.currentScript.src),scriptDirectory=scriptDirectory.startsWith("blob:")?"":scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1),read_=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},ENVIRONMENT_IS_WORKER&&(readBinary=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),readAsync=(e,t,_)=>{var s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="arraybuffer",s.onload=()=>{200==s.status||0==s.status&&s.response?t(s.response):_()},s.onerror=_,s.send(null)});var out=Module.print||console.log.bind(console),err=Module.printErr||console.error.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,Module.arguments&&(arguments_=Module.arguments),Module.thisProgram&&(thisProgram=Module.thisProgram),Module.quit&&(quit_=Module.quit);var dynamicLibraries=Module.dynamicLibraries||[],wasmBinary,wasmMemory;Module.wasmBinary&&(wasmBinary=Module.wasmBinary),"object"!=typeof WebAssembly&&abort("no native wasm support detected");var ABORT=!1,EXITSTATUS,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var e=wasmMemory.buffer;Module.HEAP8=HEAP8=new Int8Array(e),Module.HEAP16=HEAP16=new Int16Array(e),Module.HEAPU8=HEAPU8=new Uint8Array(e),Module.HEAPU16=HEAPU16=new Uint16Array(e),Module.HEAP32=HEAP32=new Int32Array(e),Module.HEAPU32=HEAPU32=new Uint32Array(e),Module.HEAPF32=HEAPF32=new Float32Array(e),Module.HEAPF64=HEAPF64=new Float64Array(e)}var INITIAL_MEMORY=Module.INITIAL_MEMORY||33554432;wasmMemory=Module.wasmMemory?Module.wasmMemory:new WebAssembly.Memory({initial:INITIAL_MEMORY/65536,maximum:32768}),updateMemoryViews(),INITIAL_MEMORY=wasmMemory.buffer.byteLength;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATPOSTRUN__=[],__RELOC_FUNCS__=[],runtimeInitialized=!1;function preRun(){if(Module.preRun)for("function"==typeof Module.preRun&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=!0,callRuntimeCallbacks(__RELOC_FUNCS__),callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module.postRun)for("function"==typeof Module.postRun&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(e){__ATPRERUN__.unshift(e)}function addOnInit(e){__ATINIT__.unshift(e)}function addOnPostRun(e){__ATPOSTRUN__.unshift(e)}var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(e){return e}function addRunDependency(e){runDependencies++,Module.monitorRunDependencies?.(runDependencies)}function removeRunDependency(e){if(runDependencies--,Module.monitorRunDependencies?.(runDependencies),0==runDependencies&&(null!==runDependencyWatcher&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var t=dependenciesFulfilled;dependenciesFulfilled=null,t()}}function abort(e){throw Module.onAbort?.(e),err(e="Aborted("+e+")"),ABORT=!0,EXITSTATUS=1,e+=". Build with -sASSERTIONS for more info.",new WebAssembly.RuntimeError(e)}var dataURIPrefix="data:application/octet-stream;base64,",isDataURI=e=>e.startsWith(dataURIPrefix),isFileURI=e=>e.startsWith("file://"),wasmBinaryFile;function getBinarySync(e){if(e==wasmBinaryFile&&wasmBinary)return new Uint8Array(wasmBinary);if(readBinary)return readBinary(e);throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(e){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if("function"==typeof fetch&&!isFileURI(e))return fetch(e,{credentials:"same-origin"}).then((t=>{if(!t.ok)throw`failed to load wasm binary file at '${e}'`;return t.arrayBuffer()})).catch((()=>getBinarySync(e)));if(readAsync)return new Promise(((t,_)=>{readAsync(e,(e=>t(new Uint8Array(e))),_)}))}return Promise.resolve().then((()=>getBinarySync(e)))}function instantiateArrayBuffer(e,t,_){return getBinaryPromise(e).then((e=>WebAssembly.instantiate(e,t))).then(_,(e=>{err(`failed to asynchronously prepare wasm: ${e}`),abort(e)}))}function instantiateAsync(e,t,_,s){return e||"function"!=typeof WebAssembly.instantiateStreaming||isDataURI(t)||isFileURI(t)||ENVIRONMENT_IS_NODE||"function"!=typeof fetch?instantiateArrayBuffer(t,_,s):fetch(t,{credentials:"same-origin"}).then((e=>WebAssembly.instantiateStreaming(e,_).then(s,(function(e){return err(`wasm streaming compile failed: ${e}`),err("falling back to ArrayBuffer instantiation"),instantiateArrayBuffer(t,_,s)}))))}function createWasm(){var e={env:wasmImports,wasi_snapshot_preview1:wasmImports,"GOT.mem":new Proxy(wasmImports,GOTHandler),"GOT.func":new Proxy(wasmImports,GOTHandler)};function t(e,t){wasmExports=e.exports,wasmExports=relocateExports(wasmExports,1024);var _=getDylinkMetadata(t);return _.neededDynlibs&&(dynamicLibraries=_.neededDynlibs.concat(dynamicLibraries)),mergeLibSymbols(wasmExports,"main"),LDSO.init(),loadDylibs(),addOnInit(wasmExports.__wasm_call_ctors),__RELOC_FUNCS__.push(wasmExports.__wasm_apply_data_relocs),removeRunDependency("wasm-instantiate"),wasmExports}if(addRunDependency("wasm-instantiate"),Module.instantiateWasm)try{return Module.instantiateWasm(e,t)}catch(e){return err(`Module.instantiateWasm callback failed with error: ${e}`),!1}return instantiateAsync(wasmBinary,wasmBinaryFile,e,(function(e){t(e.instance,e.module)})),{}}wasmBinaryFile="tree-sitter.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var ASM_CONSTS={};function ExitStatus(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var GOT={},currentModuleWeakSymbols=new Set([]),GOTHandler={get(e,t){var _=GOT[t];return _||(_=GOT[t]=new WebAssembly.Global({value:"i32",mutable:!0})),currentModuleWeakSymbols.has(t)||(_.required=!0),_}},callRuntimeCallbacks=e=>{for(;e.length>0;)e.shift()(Module)},UTF8Decoder="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,UTF8ArrayToString=(e,t,_)=>{for(var s=t+_,r=t;e[r]&&!(r>=s);)++r;if(r-t>16&&e.buffer&&UTF8Decoder)return UTF8Decoder.decode(e.subarray(t,r));for(var a="";t<r;){var o=e[t++];if(128&o){var n=63&e[t++];if(192!=(224&o)){var l=63&e[t++];if((o=224==(240&o)?(15&o)<<12|n<<6|l:(7&o)<<18|n<<12|l<<6|63&e[t++])<65536)a+=String.fromCharCode(o);else{var d=o-65536;a+=String.fromCharCode(55296|d>>10,56320|1023&d)}}else a+=String.fromCharCode((31&o)<<6|n)}else a+=String.fromCharCode(o)}return a},getDylinkMetadata=e=>{var t=0,_=0;function s(){for(var _=0,s=1;;){var r=e[t++];if(_+=(127&r)*s,s*=128,!(128&r))break}return _}function r(){var _=s();return UTF8ArrayToString(e,(t+=_)-_,_)}function a(e,t){if(e)throw new Error(t)}var o="dylink.0";if(e instanceof WebAssembly.Module){var n=WebAssembly.Module.customSections(e,o);0===n.length&&(o="dylink",n=WebAssembly.Module.customSections(e,o)),a(0===n.length,"need dylink section"),_=(e=new Uint8Array(n[0])).length}else{a(!(1836278016==new Uint32Array(new Uint8Array(e.subarray(0,24)).buffer)[0]),"need to see wasm magic number"),a(0!==e[8],"need the dylink section to be first"),t=9;var l=s();_=t+l,o=r()}var d={neededDynlibs:[],tlsExports:new Set,weakImports:new Set};if("dylink"==o){d.memorySize=s(),d.memoryAlign=s(),d.tableSize=s(),d.tableAlign=s();for(var u=s(),m=0;m<u;++m){var c=r();d.neededDynlibs.push(c)}}else{a("dylink.0"!==o);for(;t<_;){var w=e[t++],h=s();if(1===w)d.memorySize=s(),d.memoryAlign=s(),d.tableSize=s(),d.tableAlign=s();else if(2===w)for(u=s(),m=0;m<u;++m)c=r(),d.neededDynlibs.push(c);else if(3===w)for(var p=s();p--;){var g=r();256&s()&&d.tlsExports.add(g)}else if(4===w)for(p=s();p--;){r(),g=r();1==(3&s())&&d.weakImports.add(g)}else t+=h}}return d};function getValue(e,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":case"i8":return HEAP8[e];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":abort("to do getValue(i64) use WASM_BIGINT");case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];case"*":return HEAPU32[e>>2];default:abort(`invalid type for getValue: ${t}`)}}var newDSO=(e,t,_)=>{var s={refcount:1/0,name:e,exports:_,global:!0};return LDSO.loadedLibsByName[e]=s,null!=t&&(LDSO.loadedLibsByHandle[t]=s),s},LDSO={loadedLibsByName:{},loadedLibsByHandle:{},init(){newDSO("__main__",0,wasmImports)}},___heap_base=78096,zeroMemory=(e,t)=>(HEAPU8.fill(0,e,e+t),e),alignMemory=(e,t)=>Math.ceil(e/t)*t,getMemory=e=>{if(runtimeInitialized)return zeroMemory(_malloc(e),e);var t=___heap_base,_=t+alignMemory(e,16);return ___heap_base=_,GOT.__heap_base.value=_,t},isInternalSym=e=>["__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(e)||e.startsWith("__em_js__"),uleb128Encode=(e,t)=>{e<128?t.push(e):t.push(e%128|128,e>>7)},sigToWasmTypes=e=>{for(var t={i:"i32",j:"i64",f:"f32",d:"f64",e:"externref",p:"i32"},_={parameters:[],results:"v"==e[0]?[]:[t[e[0]]]},s=1;s<e.length;++s)_.parameters.push(t[e[s]]);return _},generateFuncType=(e,t)=>{var _=e.slice(0,1),s=e.slice(1),r={i:127,p:127,j:126,f:125,d:124,e:111};t.push(96),uleb128Encode(s.length,t);for(var a=0;a<s.length;++a)t.push(r[s[a]]);"v"==_?t.push(0):t.push(1,r[_])},convertJsFunctionToWasm=(e,t)=>{if("function"==typeof WebAssembly.Function)return new WebAssembly.Function(sigToWasmTypes(t),e);var _=[1];generateFuncType(t,_);var s=[0,97,115,109,1,0,0,0,1];uleb128Encode(_.length,s),s.push(..._),s.push(2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0);var r=new WebAssembly.Module(new Uint8Array(s));return new WebAssembly.Instance(r,{e:{f:e}}).exports.f},wasmTableMirror=[],wasmTable=new WebAssembly.Table({initial:27,element:"anyfunc"}),getWasmTableEntry=e=>{var t=wasmTableMirror[e];return t||(e>=wasmTableMirror.length&&(wasmTableMirror.length=e+1),wasmTableMirror[e]=t=wasmTable.get(e)),t},updateTableMap=(e,t)=>{if(functionsInTableMap)for(var _=e;_<e+t;_++){var s=getWasmTableEntry(_);s&&functionsInTableMap.set(s,_)}},functionsInTableMap,getFunctionAddress=e=>(functionsInTableMap||(functionsInTableMap=new WeakMap,updateTableMap(0,wasmTable.length)),functionsInTableMap.get(e)||0),freeTableIndexes=[],getEmptyTableSlot=()=>{if(freeTableIndexes.length)return freeTableIndexes.pop();try{wasmTable.grow(1)}catch(e){if(!(e instanceof RangeError))throw e;throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH."}return wasmTable.length-1},setWasmTableEntry=(e,t)=>{wasmTable.set(e,t),wasmTableMirror[e]=wasmTable.get(e)},addFunction=(e,t)=>{var _=getFunctionAddress(e);if(_)return _;var s=getEmptyTableSlot();try{setWasmTableEntry(s,e)}catch(_){if(!(_ instanceof TypeError))throw _;var r=convertJsFunctionToWasm(e,t);setWasmTableEntry(s,r)}return functionsInTableMap.set(e,s),s},updateGOT=(e,t)=>{for(var _ in e)if(!isInternalSym(_)){var s=e[_];_.startsWith("orig$")&&(_=_.split("$")[1],t=!0),GOT[_]||=new WebAssembly.Global({value:"i32",mutable:!0}),(t||0==GOT[_].value)&&("function"==typeof s?GOT[_].value=addFunction(s):"number"==typeof s?GOT[_].value=s:err(`unhandled export type for '${_}': ${typeof s}`))}},relocateExports=(e,t,_)=>{var s={};for(var r in e){var a=e[r];"object"==typeof a&&(a=a.value),"number"==typeof a&&(a+=t),s[r]=a}return updateGOT(s,_),s},isSymbolDefined=e=>{var t=wasmImports[e];return!(!t||t.stub)},dynCallLegacy=(e,t,_)=>(0,Module["dynCall_"+e])(t,..._),dynCall=(e,t,_=[])=>e.includes("j")?dynCallLegacy(e,t,_):getWasmTableEntry(t)(..._),createInvokeFunction=e=>function(){var t=stackSave();try{return dynCall(e,arguments[0],Array.prototype.slice.call(arguments,1))}catch(e){if(stackRestore(t),e!==e+0)throw e;_setThrew(1,0)}},resolveGlobalSymbol=(e,t=!1)=>{var _;return t&&"orig$"+e in wasmImports&&(e="orig$"+e),isSymbolDefined(e)?_=wasmImports[e]:e.startsWith("invoke_")&&(_=wasmImports[e]=createInvokeFunction(e.split("_")[1])),{sym:_,name:e}},UTF8ToString=(e,t)=>e?UTF8ArrayToString(HEAPU8,e,t):"",loadWebAssemblyModule=(binary,flags,libName,localScope,handle)=>{var metadata=getDylinkMetadata(binary);function loadModule(){var firstLoad=!handle||!HEAP8[handle+8];if(firstLoad){var memAlign=Math.pow(2,metadata.memoryAlign),memoryBase=metadata.memorySize?alignMemory(getMemory(metadata.memorySize+memAlign),memAlign):0,tableBase=metadata.tableSize?wasmTable.length:0;handle&&(HEAP8[handle+8]=1,HEAPU32[handle+12>>2]=memoryBase,HEAP32[handle+16>>2]=metadata.memorySize,HEAPU32[handle+20>>2]=tableBase,HEAP32[handle+24>>2]=metadata.tableSize)}else memoryBase=HEAPU32[handle+12>>2],tableBase=HEAPU32[handle+20>>2];var tableGrowthNeeded=tableBase+metadata.tableSize-wasmTable.length,moduleExports;function resolveSymbol(e){var t=resolveGlobalSymbol(e).sym;return!t&&localScope&&(t=localScope[e]),t||(t=moduleExports[e]),t}tableGrowthNeeded>0&&wasmTable.grow(tableGrowthNeeded);var proxyHandler={get(e,t){switch(t){case"__memory_base":return memoryBase;case"__table_base":return tableBase}if(t in wasmImports&&!wasmImports[t].stub)return wasmImports[t];var _;t in e||(e[t]=(...e)=>(_||=resolveSymbol(t),_(...e)));return e[t]}},proxy=new Proxy({},proxyHandler),info={"GOT.mem":new Proxy({},GOTHandler),"GOT.func":new Proxy({},GOTHandler),env:proxy,wasi_snapshot_preview1:proxy};function postInstantiation(module,instance){function addEmAsm(addr,body){for(var args=[],arity=0;arity<16&&-1!=body.indexOf("$"+arity);arity++)args.push("$"+arity);args=args.join(",");var func=`(${args}) => { ${body} };`;ASM_CONSTS[start]=eval(func)}if(updateTableMap(tableBase,metadata.tableSize),moduleExports=relocateExports(instance.exports,memoryBase),flags.allowUndefined||reportUndefinedSymbols(),"__start_em_asm"in moduleExports)for(var start=moduleExports.__start_em_asm,stop=moduleExports.__stop_em_asm;start<stop;){var jsString=UTF8ToString(start);addEmAsm(start,jsString),start=HEAPU8.indexOf(0,start)+1}function addEmJs(name,cSig,body){var jsArgs=[];if(cSig=cSig.slice(1,-1),"void"!=cSig)for(var i in cSig=cSig.split(","),cSig){var jsArg=cSig[i].split(" ").pop();jsArgs.push(jsArg.replace("*",""))}var func=`(${jsArgs}) => ${body};`;moduleExports[name]=eval(func)}for(var name in moduleExports)if(name.startsWith("__em_js__")){var start=moduleExports[name],jsString=UTF8ToString(start),parts=jsString.split("<::>");addEmJs(name.replace("__em_js__",""),parts[0],parts[1]),delete moduleExports[name]}var applyRelocs=moduleExports.__wasm_apply_data_relocs;applyRelocs&&(runtimeInitialized?applyRelocs():__RELOC_FUNCS__.push(applyRelocs));var init=moduleExports.__wasm_call_ctors;return init&&(runtimeInitialized?init():__ATINIT__.push(init)),moduleExports}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((e=>postInstantiation(e.module,e.instance)))}var module=binary instanceof WebAssembly.Module?binary:new WebAssembly.Module(binary),instance=new WebAssembly.Instance(module,info);return postInstantiation(module,instance)}return currentModuleWeakSymbols=metadata.weakImports,flags.loadAsync?metadata.neededDynlibs.reduce(((e,t)=>e.then((()=>loadDynamicLibrary(t,flags)))),Promise.resolve()).then(loadModule):(metadata.neededDynlibs.forEach((e=>loadDynamicLibrary(e,flags,localScope))),loadModule())},mergeLibSymbols=(e,t)=>{for(var[_,s]of Object.entries(e)){const e=e=>{isSymbolDefined(e)||(wasmImports[e]=s)};e(_);const t="__main_argc_argv";"main"==_&&e(t),_==t&&e("main"),_.startsWith("dynCall_")&&!Module.hasOwnProperty(_)&&(Module[_]=s)}},asyncLoad=(e,t,_,s)=>{var r=s?"":getUniqueRunDependency(`al ${e}`);readAsync(e,(e=>{t(new Uint8Array(e)),r&&removeRunDependency(r)}),(t=>{if(!_)throw`Loading data file "${e}" failed.`;_()})),r&&addRunDependency(r)};function loadDynamicLibrary(e,t={global:!0,nodelete:!0},_,s){var r=LDSO.loadedLibsByName[e];if(r)return t.global?r.global||(r.global=!0,mergeLibSymbols(r.exports,e)):_&&Object.assign(_,r.exports),t.nodelete&&r.refcount!==1/0&&(r.refcount=1/0),r.refcount++,s&&(LDSO.loadedLibsByHandle[s]=r),!t.loadAsync||Promise.resolve(!0);function a(){if(s){var _=HEAPU32[s+28>>2],r=HEAPU32[s+32>>2];if(_&&r){var a=HEAP8.slice(_,_+r);return t.loadAsync?Promise.resolve(a):a}}var o=locateFile(e);if(t.loadAsync)return new Promise((function(e,t){asyncLoad(o,e,t)}));if(!readBinary)throw new Error(`${o}: file not found, and synchronous loading of external files is not available`);return readBinary(o)}function o(){return t.loadAsync?a().then((r=>loadWebAssemblyModule(r,t,e,_,s))):loadWebAssemblyModule(a(),t,e,_,s)}function n(t){r.global?mergeLibSymbols(t,e):_&&Object.assign(_,t),r.exports=t}return(r=newDSO(e,s,"loading")).refcount=t.nodelete?1/0:1,r.global=t.global,t.loadAsync?o().then((e=>(n(e),!0))):(n(o()),!0)}var reportUndefinedSymbols=()=>{for(var[e,t]of Object.entries(GOT))if(0==t.value){var _=resolveGlobalSymbol(e,!0).sym;if(!_&&!t.required)continue;if("function"==typeof _)t.value=addFunction(_,_.sig);else{if("number"!=typeof _)throw new Error(`bad export type for '${e}': ${typeof _}`);t.value=_}}},loadDylibs=()=>{dynamicLibraries.length?(addRunDependency("loadDylibs"),dynamicLibraries.reduce(((e,t)=>e.then((()=>loadDynamicLibrary(t,{loadAsync:!0,global:!0,nodelete:!0,allowUndefined:!0})))),Promise.resolve()).then((()=>{reportUndefinedSymbols(),removeRunDependency("loadDylibs")}))):reportUndefinedSymbols()},noExitRuntime=Module.noExitRuntime||!0;function setValue(e,t,_="i8"){switch(_.endsWith("*")&&(_="*"),_){case"i1":case"i8":HEAP8[e]=t;break;case"i16":HEAP16[e>>1]=t;break;case"i32":HEAP32[e>>2]=t;break;case"i64":abort("to do setValue(i64) use WASM_BIGINT");case"float":HEAPF32[e>>2]=t;break;case"double":HEAPF64[e>>3]=t;break;case"*":HEAPU32[e>>2]=t;break;default:abort(`invalid type for setValue: ${_}`)}}var ___memory_base=new WebAssembly.Global({value:"i32",mutable:!1},1024),___stack_pointer=new WebAssembly.Global({value:"i32",mutable:!0},78096),___table_base=new WebAssembly.Global({value:"i32",mutable:!1},1),nowIsMonotonic=1,__emscripten_get_now_is_monotonic=()=>nowIsMonotonic;__emscripten_get_now_is_monotonic.sig="i";var _abort=()=>{abort("")};_abort.sig="v";var _emscripten_date_now=()=>Date.now(),_emscripten_get_now;_emscripten_date_now.sig="d",_emscripten_get_now=()=>performance.now(),_emscripten_get_now.sig="d";var _emscripten_memcpy_js=(e,t,_)=>HEAPU8.copyWithin(e,t,t+_);_emscripten_memcpy_js.sig="vppp";var getHeapMax=()=>2147483648,growMemory=e=>{var t=(e-wasmMemory.buffer.byteLength+65535)/65536;try{return wasmMemory.grow(t),updateMemoryViews(),1}catch(e){}},_emscripten_resize_heap=e=>{var t=HEAPU8.length;e>>>=0;var _=getHeapMax();if(e>_)return!1;for(var s,r,a=1;a<=4;a*=2){var o=t*(1+.2/a);o=Math.min(o,e+100663296);var n=Math.min(_,(s=Math.max(e,o))+((r=65536)-s%r)%r);if(growMemory(n))return!0}return!1};_emscripten_resize_heap.sig="ip";var _fd_close=e=>52;_fd_close.sig="ii";var convertI32PairToI53Checked=(e,t)=>t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN;function _fd_seek(e,t,_,s,r){convertI32PairToI53Checked(t,_);return 70}_fd_seek.sig="iiiiip";var printCharBuffers=[null,[],[]],printChar=(e,t)=>{var _=printCharBuffers[e];0===t||10===t?((1===e?out:err)(UTF8ArrayToString(_,0)),_.length=0):_.push(t)},SYSCALLS={varargs:void 0,get(){var e=HEAP32[+SYSCALLS.varargs>>2];return SYSCALLS.varargs+=4,e},getp:()=>SYSCALLS.get(),getStr:e=>UTF8ToString(e)},_fd_write=(e,t,_,s)=>{for(var r=0,a=0;a<_;a++){var o=HEAPU32[t>>2],n=HEAPU32[t+4>>2];t+=8;for(var l=0;l<n;l++)printChar(e,HEAPU8[o+l]);r+=n}return HEAPU32[s>>2]=r,0};function _tree_sitter_log_callback(e,t){if(currentLogCallback){const _=UTF8ToString(t);currentLogCallback(_,0!==e)}}function _tree_sitter_parse_callback(e,t,_,s,r){const a=currentParseCallback(t,{row:_,column:s});"string"==typeof a?(setValue(r,a.length,"i32"),stringToUTF16(a,e,10240)):setValue(r,0,"i32")}_fd_write.sig="iippp";var runtimeKeepaliveCounter=0,keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0,_proc_exit=e=>{EXITSTATUS=e,keepRuntimeAlive()||(Module.onExit?.(e),ABORT=!0),quit_(e,new ExitStatus(e))};_proc_exit.sig="vi";var exitJS=(e,t)=>{EXITSTATUS=e,_proc_exit(e)},handleException=e=>{if(e instanceof ExitStatus||"unwind"==e)return EXITSTATUS;quit_(1,e)},lengthBytesUTF8=e=>{for(var t=0,_=0;_<e.length;++_){var s=e.charCodeAt(_);s<=127?t++:s<=2047?t+=2:s>=55296&&s<=57343?(t+=4,++_):t+=3}return t},stringToUTF8Array=(e,t,_,s)=>{if(!(s>0))return 0;for(var r=_,a=_+s-1,o=0;o<e.length;++o){var n=e.charCodeAt(o);if(n>=55296&&n<=57343)n=65536+((1023&n)<<10)|1023&e.charCodeAt(++o);if(n<=127){if(_>=a)break;t[_++]=n}else if(n<=2047){if(_+1>=a)break;t[_++]=192|n>>6,t[_++]=128|63&n}else if(n<=65535){if(_+2>=a)break;t[_++]=224|n>>12,t[_++]=128|n>>6&63,t[_++]=128|63&n}else{if(_+3>=a)break;t[_++]=240|n>>18,t[_++]=128|n>>12&63,t[_++]=128|n>>6&63,t[_++]=128|63&n}}return t[_]=0,_-r},stringToUTF8=(e,t,_)=>stringToUTF8Array(e,HEAPU8,t,_),stringToUTF8OnStack=e=>{var t=lengthBytesUTF8(e)+1,_=stackAlloc(t);return stringToUTF8(e,_,t),_},stringToUTF16=(e,t,_)=>{if(_??=2147483647,_<2)return 0;for(var s=t,r=(_-=2)<2*e.length?_/2:e.length,a=0;a<r;++a){var o=e.charCodeAt(a);HEAP16[t>>1]=o,t+=2}return HEAP16[t>>1]=0,t-s},AsciiToString=e=>{for(var t="";;){var _=HEAPU8[e++];if(!_)return t;t+=String.fromCharCode(_)}},wasmImports={__heap_base:___heap_base,__indirect_function_table:wasmTable,__memory_base:___memory_base,__stack_pointer:___stack_pointer,__table_base:___table_base,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,abort:_abort,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write,memory:wasmMemory,tree_sitter_log_callback:_tree_sitter_log_callback,tree_sitter_parse_callback:_tree_sitter_parse_callback},wasmExports=createWasm(),___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports.__wasm_call_ctors)(),___wasm_apply_data_relocs=()=>(___wasm_apply_data_relocs=wasmExports.__wasm_apply_data_relocs)(),_malloc=Module._malloc=e=>(_malloc=Module._malloc=wasmExports.malloc)(e),_calloc=Module._calloc=(e,t)=>(_calloc=Module._calloc=wasmExports.calloc)(e,t),_realloc=Module._realloc=(e,t)=>(_realloc=Module._realloc=wasmExports.realloc)(e,t),_free=Module._free=e=>(_free=Module._free=wasmExports.free)(e),_ts_language_symbol_count=Module._ts_language_symbol_count=e=>(_ts_language_symbol_count=Module._ts_language_symbol_count=wasmExports.ts_language_symbol_count)(e),_ts_language_state_count=Module._ts_language_state_count=e=>(_ts_language_state_count=Module._ts_language_state_count=wasmExports.ts_language_state_count)(e),_ts_language_version=Module._ts_language_version=e=>(_ts_language_version=Module._ts_language_version=wasmExports.ts_language_version)(e),_ts_language_field_count=Module._ts_language_field_count=e=>(_ts_language_field_count=Module._ts_language_field_count=wasmExports.ts_language_field_count)(e),_ts_language_next_state=Module._ts_language_next_state=(e,t,_)=>(_ts_language_next_state=Module._ts_language_next_state=wasmExports.ts_language_next_state)(e,t,_),_ts_language_symbol_name=Module._ts_language_symbol_name=(e,t)=>(_ts_language_symbol_name=Module._ts_language_symbol_name=wasmExports.ts_language_symbol_name)(e,t),_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=(e,t,_,s)=>(_ts_language_symbol_for_name=Module._ts_language_symbol_for_name=wasmExports.ts_language_symbol_for_name)(e,t,_,s),_ts_language_symbol_type=Module._ts_language_symbol_type=(e,t)=>(_ts_language_symbol_type=Module._ts_language_symbol_type=wasmExports.ts_language_symbol_type)(e,t),_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=(e,t)=>(_ts_language_field_name_for_id=Module._ts_language_field_name_for_id=wasmExports.ts_language_field_name_for_id)(e,t),_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=(e,t)=>(_ts_lookahead_iterator_new=Module._ts_lookahead_iterator_new=wasmExports.ts_lookahead_iterator_new)(e,t),_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=e=>(_ts_lookahead_iterator_delete=Module._ts_lookahead_iterator_delete=wasmExports.ts_lookahead_iterator_delete)(e),_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=(e,t)=>(_ts_lookahead_iterator_reset_state=Module._ts_lookahead_iterator_reset_state=wasmExports.ts_lookahead_iterator_reset_state)(e,t),_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=(e,t,_)=>(_ts_lookahead_iterator_reset=Module._ts_lookahead_iterator_reset=wasmExports.ts_lookahead_iterator_reset)(e,t,_),_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=e=>(_ts_lookahead_iterator_next=Module._ts_lookahead_iterator_next=wasmExports.ts_lookahead_iterator_next)(e),_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=e=>(_ts_lookahead_iterator_current_symbol=Module._ts_lookahead_iterator_current_symbol=wasmExports.ts_lookahead_iterator_current_symbol)(e),_memset=Module._memset=(e,t,_)=>(_memset=Module._memset=wasmExports.memset)(e,t,_),_memcpy=Module._memcpy=(e,t,_)=>(_memcpy=Module._memcpy=wasmExports.memcpy)(e,t,_),_ts_parser_delete=Module._ts_parser_delete=e=>(_ts_parser_delete=Module._ts_parser_delete=wasmExports.ts_parser_delete)(e),_ts_parser_reset=Module._ts_parser_reset=e=>(_ts_parser_reset=Module._ts_parser_reset=wasmExports.ts_parser_reset)(e),_ts_parser_set_language=Module._ts_parser_set_language=(e,t)=>(_ts_parser_set_language=Module._ts_parser_set_language=wasmExports.ts_parser_set_language)(e,t),_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=e=>(_ts_parser_timeout_micros=Module._ts_parser_timeout_micros=wasmExports.ts_parser_timeout_micros)(e),_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=(e,t,_)=>(_ts_parser_set_timeout_micros=Module._ts_parser_set_timeout_micros=wasmExports.ts_parser_set_timeout_micros)(e,t,_),_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=(e,t,_)=>(_ts_parser_set_included_ranges=Module._ts_parser_set_included_ranges=wasmExports.ts_parser_set_included_ranges)(e,t,_),_memmove=Module._memmove=(e,t,_)=>(_memmove=Module._memmove=wasmExports.memmove)(e,t,_),_memcmp=Module._memcmp=(e,t,_)=>(_memcmp=Module._memcmp=wasmExports.memcmp)(e,t,_),_ts_query_new=Module._ts_query_new=(e,t,_,s,r)=>(_ts_query_new=Module._ts_query_new=wasmExports.ts_query_new)(e,t,_,s,r),_ts_query_delete=Module._ts_query_delete=e=>(_ts_query_delete=Module._ts_query_delete=wasmExports.ts_query_delete)(e),_iswspace=Module._iswspace=e=>(_iswspace=Module._iswspace=wasmExports.iswspace)(e),_iswalnum=Module._iswalnum=e=>(_iswalnum=Module._iswalnum=wasmExports.iswalnum)(e),_ts_query_pattern_count=Module._ts_query_pattern_count=e=>(_ts_query_pattern_count=Module._ts_query_pattern_count=wasmExports.ts_query_pattern_count)(e),_ts_query_capture_count=Module._ts_query_capture_count=e=>(_ts_query_capture_count=Module._ts_query_capture_count=wasmExports.ts_query_capture_count)(e),_ts_query_string_count=Module._ts_query_string_count=e=>(_ts_query_string_count=Module._ts_query_string_count=wasmExports.ts_query_string_count)(e),_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=(e,t,_)=>(_ts_query_capture_name_for_id=Module._ts_query_capture_name_for_id=wasmExports.ts_query_capture_name_for_id)(e,t,_),_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=(e,t,_)=>(_ts_query_string_value_for_id=Module._ts_query_string_value_for_id=wasmExports.ts_query_string_value_for_id)(e,t,_),_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=(e,t,_)=>(_ts_query_predicates_for_pattern=Module._ts_query_predicates_for_pattern=wasmExports.ts_query_predicates_for_pattern)(e,t,_),_ts_query_disable_capture=Module._ts_query_disable_capture=(e,t,_)=>(_ts_query_disable_capture=Module._ts_query_disable_capture=wasmExports.ts_query_disable_capture)(e,t,_),_ts_tree_copy=Module._ts_tree_copy=e=>(_ts_tree_copy=Module._ts_tree_copy=wasmExports.ts_tree_copy)(e),_ts_tree_delete=Module._ts_tree_delete=e=>(_ts_tree_delete=Module._ts_tree_delete=wasmExports.ts_tree_delete)(e),_ts_init=Module._ts_init=()=>(_ts_init=Module._ts_init=wasmExports.ts_init)(),_ts_parser_new_wasm=Module._ts_parser_new_wasm=()=>(_ts_parser_new_wasm=Module._ts_parser_new_wasm=wasmExports.ts_parser_new_wasm)(),_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=(e,t)=>(_ts_parser_enable_logger_wasm=Module._ts_parser_enable_logger_wasm=wasmExports.ts_parser_enable_logger_wasm)(e,t),_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=(e,t,_,s,r)=>(_ts_parser_parse_wasm=Module._ts_parser_parse_wasm=wasmExports.ts_parser_parse_wasm)(e,t,_,s,r),_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=e=>(_ts_parser_included_ranges_wasm=Module._ts_parser_included_ranges_wasm=wasmExports.ts_parser_included_ranges_wasm)(e),_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=(e,t)=>(_ts_language_type_is_named_wasm=Module._ts_language_type_is_named_wasm=wasmExports.ts_language_type_is_named_wasm)(e,t),_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=(e,t)=>(_ts_language_type_is_visible_wasm=Module._ts_language_type_is_visible_wasm=wasmExports.ts_language_type_is_visible_wasm)(e,t),_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=e=>(_ts_tree_root_node_wasm=Module._ts_tree_root_node_wasm=wasmExports.ts_tree_root_node_wasm)(e),_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=e=>(_ts_tree_root_node_with_offset_wasm=Module._ts_tree_root_node_with_offset_wasm=wasmExports.ts_tree_root_node_with_offset_wasm)(e),_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=e=>(_ts_tree_edit_wasm=Module._ts_tree_edit_wasm=wasmExports.ts_tree_edit_wasm)(e),_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=e=>(_ts_tree_included_ranges_wasm=Module._ts_tree_included_ranges_wasm=wasmExports.ts_tree_included_ranges_wasm)(e),_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=(e,t)=>(_ts_tree_get_changed_ranges_wasm=Module._ts_tree_get_changed_ranges_wasm=wasmExports.ts_tree_get_changed_ranges_wasm)(e,t),_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=e=>(_ts_tree_cursor_new_wasm=Module._ts_tree_cursor_new_wasm=wasmExports.ts_tree_cursor_new_wasm)(e),_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=e=>(_ts_tree_cursor_delete_wasm=Module._ts_tree_cursor_delete_wasm=wasmExports.ts_tree_cursor_delete_wasm)(e),_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=e=>(_ts_tree_cursor_reset_wasm=Module._ts_tree_cursor_reset_wasm=wasmExports.ts_tree_cursor_reset_wasm)(e),_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=(e,t)=>(_ts_tree_cursor_reset_to_wasm=Module._ts_tree_cursor_reset_to_wasm=wasmExports.ts_tree_cursor_reset_to_wasm)(e,t),_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=e=>(_ts_tree_cursor_goto_first_child_wasm=Module._ts_tree_cursor_goto_first_child_wasm=wasmExports.ts_tree_cursor_goto_first_child_wasm)(e),_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=e=>(_ts_tree_cursor_goto_last_child_wasm=Module._ts_tree_cursor_goto_last_child_wasm=wasmExports.ts_tree_cursor_goto_last_child_wasm)(e),_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=e=>(_ts_tree_cursor_goto_first_child_for_index_wasm=Module._ts_tree_cursor_goto_first_child_for_index_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_index_wasm)(e),_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=e=>(_ts_tree_cursor_goto_first_child_for_position_wasm=Module._ts_tree_cursor_goto_first_child_for_position_wasm=wasmExports.ts_tree_cursor_goto_first_child_for_position_wasm)(e),_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=e=>(_ts_tree_cursor_goto_next_sibling_wasm=Module._ts_tree_cursor_goto_next_sibling_wasm=wasmExports.ts_tree_cursor_goto_next_sibling_wasm)(e),_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=e=>(_ts_tree_cursor_goto_previous_sibling_wasm=Module._ts_tree_cursor_goto_previous_sibling_wasm=wasmExports.ts_tree_cursor_goto_previous_sibling_wasm)(e),_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=(e,t)=>(_ts_tree_cursor_goto_descendant_wasm=Module._ts_tree_cursor_goto_descendant_wasm=wasmExports.ts_tree_cursor_goto_descendant_wasm)(e,t),_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=e=>(_ts_tree_cursor_goto_parent_wasm=Module._ts_tree_cursor_goto_parent_wasm=wasmExports.ts_tree_cursor_goto_parent_wasm)(e),_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=e=>(_ts_tree_cursor_current_node_type_id_wasm=Module._ts_tree_cursor_current_node_type_id_wasm=wasmExports.ts_tree_cursor_current_node_type_id_wasm)(e),_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=e=>(_ts_tree_cursor_current_node_state_id_wasm=Module._ts_tree_cursor_current_node_state_id_wasm=wasmExports.ts_tree_cursor_current_node_state_id_wasm)(e),_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=e=>(_ts_tree_cursor_current_node_is_named_wasm=Module._ts_tree_cursor_current_node_is_named_wasm=wasmExports.ts_tree_cursor_current_node_is_named_wasm)(e),_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=e=>(_ts_tree_cursor_current_node_is_missing_wasm=Module._ts_tree_cursor_current_node_is_missing_wasm=wasmExports.ts_tree_cursor_current_node_is_missing_wasm)(e),_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=e=>(_ts_tree_cursor_current_node_id_wasm=Module._ts_tree_cursor_current_node_id_wasm=wasmExports.ts_tree_cursor_current_node_id_wasm)(e),_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=e=>(_ts_tree_cursor_start_position_wasm=Module._ts_tree_cursor_start_position_wasm=wasmExports.ts_tree_cursor_start_position_wasm)(e),_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=e=>(_ts_tree_cursor_end_position_wasm=Module._ts_tree_cursor_end_position_wasm=wasmExports.ts_tree_cursor_end_position_wasm)(e),_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=e=>(_ts_tree_cursor_start_index_wasm=Module._ts_tree_cursor_start_index_wasm=wasmExports.ts_tree_cursor_start_index_wasm)(e),_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=e=>(_ts_tree_cursor_end_index_wasm=Module._ts_tree_cursor_end_index_wasm=wasmExports.ts_tree_cursor_end_index_wasm)(e),_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=e=>(_ts_tree_cursor_current_field_id_wasm=Module._ts_tree_cursor_current_field_id_wasm=wasmExports.ts_tree_cursor_current_field_id_wasm)(e),_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=e=>(_ts_tree_cursor_current_depth_wasm=Module._ts_tree_cursor_current_depth_wasm=wasmExports.ts_tree_cursor_current_depth_wasm)(e),_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=e=>(_ts_tree_cursor_current_descendant_index_wasm=Module._ts_tree_cursor_current_descendant_index_wasm=wasmExports.ts_tree_cursor_current_descendant_index_wasm)(e),_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=e=>(_ts_tree_cursor_current_node_wasm=Module._ts_tree_cursor_current_node_wasm=wasmExports.ts_tree_cursor_current_node_wasm)(e),_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=e=>(_ts_node_symbol_wasm=Module._ts_node_symbol_wasm=wasmExports.ts_node_symbol_wasm)(e),_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=(e,t)=>(_ts_node_field_name_for_child_wasm=Module._ts_node_field_name_for_child_wasm=wasmExports.ts_node_field_name_for_child_wasm)(e,t),_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=(e,t)=>(_ts_node_children_by_field_id_wasm=Module._ts_node_children_by_field_id_wasm=wasmExports.ts_node_children_by_field_id_wasm)(e,t),_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=e=>(_ts_node_first_child_for_byte_wasm=Module._ts_node_first_child_for_byte_wasm=wasmExports.ts_node_first_child_for_byte_wasm)(e),_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=e=>(_ts_node_first_named_child_for_byte_wasm=Module._ts_node_first_named_child_for_byte_wasm=wasmExports.ts_node_first_named_child_for_byte_wasm)(e),_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=e=>(_ts_node_grammar_symbol_wasm=Module._ts_node_grammar_symbol_wasm=wasmExports.ts_node_grammar_symbol_wasm)(e),_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=e=>(_ts_node_child_count_wasm=Module._ts_node_child_count_wasm=wasmExports.ts_node_child_count_wasm)(e),_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=e=>(_ts_node_named_child_count_wasm=Module._ts_node_named_child_count_wasm=wasmExports.ts_node_named_child_count_wasm)(e),_ts_node_child_wasm=Module._ts_node_child_wasm=(e,t)=>(_ts_node_child_wasm=Module._ts_node_child_wasm=wasmExports.ts_node_child_wasm)(e,t),_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=(e,t)=>(_ts_node_named_child_wasm=Module._ts_node_named_child_wasm=wasmExports.ts_node_named_child_wasm)(e,t),_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=(e,t)=>(_ts_node_child_by_field_id_wasm=Module._ts_node_child_by_field_id_wasm=wasmExports.ts_node_child_by_field_id_wasm)(e,t),_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=e=>(_ts_node_next_sibling_wasm=Module._ts_node_next_sibling_wasm=wasmExports.ts_node_next_sibling_wasm)(e),_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=e=>(_ts_node_prev_sibling_wasm=Module._ts_node_prev_sibling_wasm=wasmExports.ts_node_prev_sibling_wasm)(e),_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=e=>(_ts_node_next_named_sibling_wasm=Module._ts_node_next_named_sibling_wasm=wasmExports.ts_node_next_named_sibling_wasm)(e),_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=e=>(_ts_node_prev_named_sibling_wasm=Module._ts_node_prev_named_sibling_wasm=wasmExports.ts_node_prev_named_sibling_wasm)(e),_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=e=>(_ts_node_descendant_count_wasm=Module._ts_node_descendant_count_wasm=wasmExports.ts_node_descendant_count_wasm)(e),_ts_node_parent_wasm=Module._ts_node_parent_wasm=e=>(_ts_node_parent_wasm=Module._ts_node_parent_wasm=wasmExports.ts_node_parent_wasm)(e),_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=e=>(_ts_node_descendant_for_index_wasm=Module._ts_node_descendant_for_index_wasm=wasmExports.ts_node_descendant_for_index_wasm)(e),_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=e=>(_ts_node_named_descendant_for_index_wasm=Module._ts_node_named_descendant_for_index_wasm=wasmExports.ts_node_named_descendant_for_index_wasm)(e),_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=e=>(_ts_node_descendant_for_position_wasm=Module._ts_node_descendant_for_position_wasm=wasmExports.ts_node_descendant_for_position_wasm)(e),_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=e=>(_ts_node_named_descendant_for_position_wasm=Module._ts_node_named_descendant_for_position_wasm=wasmExports.ts_node_named_descendant_for_position_wasm)(e),_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=e=>(_ts_node_start_point_wasm=Module._ts_node_start_point_wasm=wasmExports.ts_node_start_point_wasm)(e),_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=e=>(_ts_node_end_point_wasm=Module._ts_node_end_point_wasm=wasmExports.ts_node_end_point_wasm)(e),_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=e=>(_ts_node_start_index_wasm=Module._ts_node_start_index_wasm=wasmExports.ts_node_start_index_wasm)(e),_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=e=>(_ts_node_end_index_wasm=Module._ts_node_end_index_wasm=wasmExports.ts_node_end_index_wasm)(e),_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=e=>(_ts_node_to_string_wasm=Module._ts_node_to_string_wasm=wasmExports.ts_node_to_string_wasm)(e),_ts_node_children_wasm=Module._ts_node_children_wasm=e=>(_ts_node_children_wasm=Module._ts_node_children_wasm=wasmExports.ts_node_children_wasm)(e),_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=e=>(_ts_node_named_children_wasm=Module._ts_node_named_children_wasm=wasmExports.ts_node_named_children_wasm)(e),_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=(e,t,_,s,r,a,o)=>(_ts_node_descendants_of_type_wasm=Module._ts_node_descendants_of_type_wasm=wasmExports.ts_node_descendants_of_type_wasm)(e,t,_,s,r,a,o),_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=e=>(_ts_node_is_named_wasm=Module._ts_node_is_named_wasm=wasmExports.ts_node_is_named_wasm)(e),_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=e=>(_ts_node_has_changes_wasm=Module._ts_node_has_changes_wasm=wasmExports.ts_node_has_changes_wasm)(e),_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=e=>(_ts_node_has_error_wasm=Module._ts_node_has_error_wasm=wasmExports.ts_node_has_error_wasm)(e),_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=e=>(_ts_node_is_error_wasm=Module._ts_node_is_error_wasm=wasmExports.ts_node_is_error_wasm)(e),_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=e=>(_ts_node_is_missing_wasm=Module._ts_node_is_missing_wasm=wasmExports.ts_node_is_missing_wasm)(e),_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=e=>(_ts_node_is_extra_wasm=Module._ts_node_is_extra_wasm=wasmExports.ts_node_is_extra_wasm)(e),_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=e=>(_ts_node_parse_state_wasm=Module._ts_node_parse_state_wasm=wasmExports.ts_node_parse_state_wasm)(e),_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=e=>(_ts_node_next_parse_state_wasm=Module._ts_node_next_parse_state_wasm=wasmExports.ts_node_next_parse_state_wasm)(e),_ts_query_matches_wasm=Module._ts_query_matches_wasm=(e,t,_,s,r,a,o,n,l,d)=>(_ts_query_matches_wasm=Module._ts_query_matches_wasm=wasmExports.ts_query_matches_wasm)(e,t,_,s,r,a,o,n,l,d),_ts_query_captures_wasm=Module._ts_query_captures_wasm=(e,t,_,s,r,a,o,n,l,d)=>(_ts_query_captures_wasm=Module._ts_query_captures_wasm=wasmExports.ts_query_captures_wasm)(e,t,_,s,r,a,o,n,l,d),_iswalpha=Module._iswalpha=e=>(_iswalpha=Module._iswalpha=wasmExports.iswalpha)(e),_iswblank=Module._iswblank=e=>(_iswblank=Module._iswblank=wasmExports.iswblank)(e),_iswdigit=Module._iswdigit=e=>(_iswdigit=Module._iswdigit=wasmExports.iswdigit)(e),_iswlower=Module._iswlower=e=>(_iswlower=Module._iswlower=wasmExports.iswlower)(e),_iswupper=Module._iswupper=e=>(_iswupper=Module._iswupper=wasmExports.iswupper)(e),_iswxdigit=Module._iswxdigit=e=>(_iswxdigit=Module._iswxdigit=wasmExports.iswxdigit)(e),_memchr=Module._memchr=(e,t,_)=>(_memchr=Module._memchr=wasmExports.memchr)(e,t,_),_strlen=Module._strlen=e=>(_strlen=Module._strlen=wasmExports.strlen)(e),_strcmp=Module._strcmp=(e,t)=>(_strcmp=Module._strcmp=wasmExports.strcmp)(e,t),_strncpy=Module._strncpy=(e,t,_)=>(_strncpy=Module._strncpy=wasmExports.strncpy)(e,t,_),_towlower=Module._towlower=e=>(_towlower=Module._towlower=wasmExports.towlower)(e),_towupper=Module._towupper=e=>(_towupper=Module._towupper=wasmExports.towupper)(e),_setThrew=(e,t)=>(_setThrew=wasmExports.setThrew)(e,t),stackSave=()=>(stackSave=wasmExports.stackSave)(),stackRestore=e=>(stackRestore=wasmExports.stackRestore)(e),stackAlloc=e=>(stackAlloc=wasmExports.stackAlloc)(e),dynCall_jiji=Module.dynCall_jiji=(e,t,_,s,r)=>(dynCall_jiji=Module.dynCall_jiji=wasmExports.dynCall_jiji)(e,t,_,s,r),_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=e=>(_orig$ts_parser_timeout_micros=Module._orig$ts_parser_timeout_micros=wasmExports.orig$ts_parser_timeout_micros)(e),_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=(e,t)=>(_orig$ts_parser_set_timeout_micros=Module._orig$ts_parser_set_timeout_micros=wasmExports.orig$ts_parser_set_timeout_micros)(e,t),calledRun;function callMain(e=[]){var t=resolveGlobalSymbol("main").sym;if(t){e.unshift(thisProgram);var _=e.length,s=stackAlloc(4*(_+1)),r=s;e.forEach((e=>{HEAPU32[r>>2]=stringToUTF8OnStack(e),r+=4})),HEAPU32[r>>2]=0;try{var a=t(_,s);return exitJS(a,!0),a}catch(e){return handleException(e)}}}function run(e=arguments_){function t(){calledRun||(calledRun=!0,Module.calledRun=!0,ABORT||(initRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),shouldRunNow&&callMain(e),postRun()))}runDependencies>0||(preRun(),runDependencies>0||(Module.setStatus?(Module.setStatus("Running..."),setTimeout((function(){setTimeout((function(){Module.setStatus("")}),1),t()}),1)):t()))}if(Module.AsciiToString=AsciiToString,Module.stringToUTF16=stringToUTF16,dependenciesFulfilled=function e(){calledRun||run(),calledRun||(dependenciesFulfilled=e)},Module.preInit)for("function"==typeof Module.preInit&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run();const C=Module,INTERNAL={},SIZE_OF_INT=4,SIZE_OF_CURSOR=3*SIZE_OF_INT,SIZE_OF_NODE=5*SIZE_OF_INT,SIZE_OF_POINT=2*SIZE_OF_INT,SIZE_OF_RANGE=2*SIZE_OF_INT+2*SIZE_OF_POINT,ZERO_POINT={row:0,column:0},QUERY_WORD_REGEX=/[\w-.]*/g,PREDICATE_STEP_TYPE_CAPTURE=1,PREDICATE_STEP_TYPE_STRING=2,LANGUAGE_FUNCTION_REGEX=/^_?tree_sitter_\w+/;let VERSION,MIN_COMPATIBLE_VERSION,TRANSFER_BUFFER,currentParseCallback,currentLogCallback;class ParserImpl{static init(){TRANSFER_BUFFER=C._ts_init(),VERSION=getValue(TRANSFER_BUFFER,"i32"),MIN_COMPATIBLE_VERSION=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}initialize(){C._ts_parser_new_wasm(),this[0]=getValue(TRANSFER_BUFFER,"i32"),this[1]=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32")}delete(){C._ts_parser_delete(this[0]),C._free(this[1]),this[0]=0,this[1]=0}setLanguage(e){let t;if(e){if(e.constructor!==Language)throw new Error("Argument must be a Language");{t=e[0];const _=C._ts_language_version(t);if(_<MIN_COMPATIBLE_VERSION||VERSION<_)throw new Error(`Incompatible language version ${_}. Compatibility range ${MIN_COMPATIBLE_VERSION} through ${VERSION}.`)}}else t=0,e=null;return this.language=e,C._ts_parser_set_language(this[0],t),this}getLanguage(){return this.language}parse(e,t,_){if("string"==typeof e)currentParseCallback=(t,_)=>e.slice(t);else{if("function"!=typeof e)throw new Error("Argument must be a string or a function");currentParseCallback=e}this.logCallback?(currentLogCallback=this.logCallback,C._ts_parser_enable_logger_wasm(this[0],1)):(currentLogCallback=null,C._ts_parser_enable_logger_wasm(this[0],0));let s=0,r=0;if(_&&_.includedRanges){s=_.includedRanges.length,r=C._calloc(s,SIZE_OF_RANGE);let e=r;for(let t=0;t<s;t++)marshalRange(e,_.includedRanges[t]),e+=SIZE_OF_RANGE}const a=C._ts_parser_parse_wasm(this[0],this[1],t?t[0]:0,r,s);if(!a)throw currentParseCallback=null,currentLogCallback=null,new Error("Parsing failed");const o=new Tree(INTERNAL,a,this.language,currentParseCallback);return currentParseCallback=null,currentLogCallback=null,o}reset(){C._ts_parser_reset(this[0])}getIncludedRanges(){C._ts_parser_included_ranges_wasm(this[0]);const e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),_=new Array(e);if(e>0){let s=t;for(let t=0;t<e;t++)_[t]=unmarshalRange(s),s+=SIZE_OF_RANGE;C._free(t)}return _}getTimeoutMicros(){return C._ts_parser_timeout_micros(this[0])}setTimeoutMicros(e){C._ts_parser_set_timeout_micros(this[0],e)}setLogger(e){if(e){if("function"!=typeof e)throw new Error("Logger callback must be a function")}else e=null;return this.logCallback=e,this}getLogger(){return this.logCallback}}class Tree{constructor(e,t,_,s){assertInternal(e),this[0]=t,this.language=_,this.textCallback=s}copy(){const e=C._ts_tree_copy(this[0]);return new Tree(INTERNAL,e,this.language,this.textCallback)}delete(){C._ts_tree_delete(this[0]),this[0]=0}edit(e){marshalEdit(e),C._ts_tree_edit_wasm(this[0])}get rootNode(){return C._ts_tree_root_node_wasm(this[0]),unmarshalNode(this)}rootNodeWithOffset(e,t){const _=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(_,e,"i32"),marshalPoint(_+SIZE_OF_INT,t),C._ts_tree_root_node_with_offset_wasm(this[0]),unmarshalNode(this)}getLanguage(){return this.language}walk(){return this.rootNode.walk()}getChangedRanges(e){if(e.constructor!==Tree)throw new TypeError("Argument must be a Tree");C._ts_tree_get_changed_ranges_wasm(this[0],e[0]);const t=getValue(TRANSFER_BUFFER,"i32"),_=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),s=new Array(t);if(t>0){let e=_;for(let _=0;_<t;_++)s[_]=unmarshalRange(e),e+=SIZE_OF_RANGE;C._free(_)}return s}getIncludedRanges(){C._ts_tree_included_ranges_wasm(this[0]);const e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),_=new Array(e);if(e>0){let s=t;for(let t=0;t<e;t++)_[t]=unmarshalRange(s),s+=SIZE_OF_RANGE;C._free(t)}return _}}class Node{constructor(e,t){assertInternal(e),this.tree=t}get typeId(){return marshalNode(this),C._ts_node_symbol_wasm(this.tree[0])}get grammarId(){return marshalNode(this),C._ts_node_grammar_symbol_wasm(this.tree[0])}get type(){return this.tree.language.types[this.typeId]||"ERROR"}get grammarType(){return this.tree.language.types[this.grammarId]||"ERROR"}get endPosition(){return marshalNode(this),C._ts_node_end_point_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endIndex(){return marshalNode(this),C._ts_node_end_index_wasm(this.tree[0])}get text(){return getText(this.tree,this.startIndex,this.endIndex)}get parseState(){return marshalNode(this),C._ts_node_parse_state_wasm(this.tree[0])}get nextParseState(){return marshalNode(this),C._ts_node_next_parse_state_wasm(this.tree[0])}get isNamed(){return marshalNode(this),1===C._ts_node_is_named_wasm(this.tree[0])}get hasError(){return marshalNode(this),1===C._ts_node_has_error_wasm(this.tree[0])}get hasChanges(){return marshalNode(this),1===C._ts_node_has_changes_wasm(this.tree[0])}get isError(){return marshalNode(this),1===C._ts_node_is_error_wasm(this.tree[0])}get isMissing(){return marshalNode(this),1===C._ts_node_is_missing_wasm(this.tree[0])}get isExtra(){return marshalNode(this),1===C._ts_node_is_extra_wasm(this.tree[0])}equals(e){return this.id===e.id}child(e){return marshalNode(this),C._ts_node_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}namedChild(e){return marshalNode(this),C._ts_node_named_child_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldId(e){return marshalNode(this),C._ts_node_child_by_field_id_wasm(this.tree[0],e),unmarshalNode(this.tree)}childForFieldName(e){const t=this.tree.language.fields.indexOf(e);if(-1!==t)return this.childForFieldId(t)}fieldNameForChild(e){marshalNode(this);const t=C._ts_node_field_name_for_child_wasm(this.tree[0],e);if(!t)return null;return AsciiToString(t)}childrenForFieldName(e){const t=this.tree.language.fields.indexOf(e);if(-1!==t&&0!==t)return this.childrenForFieldId(t)}childrenForFieldId(e){marshalNode(this),C._ts_node_children_by_field_id_wasm(this.tree[0],e);const t=getValue(TRANSFER_BUFFER,"i32"),_=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),s=new Array(t);if(t>0){let e=_;for(let _=0;_<t;_++)s[_]=unmarshalNode(this.tree,e),e+=SIZE_OF_NODE;C._free(_)}return s}firstChildForIndex(e){marshalNode(this);return setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}firstNamedChildForIndex(e){marshalNode(this);return setValue(TRANSFER_BUFFER+SIZE_OF_NODE,e,"i32"),C._ts_node_first_named_child_for_byte_wasm(this.tree[0]),unmarshalNode(this.tree)}get childCount(){return marshalNode(this),C._ts_node_child_count_wasm(this.tree[0])}get namedChildCount(){return marshalNode(this),C._ts_node_named_child_count_wasm(this.tree[0])}get firstChild(){return this.child(0)}get firstNamedChild(){return this.namedChild(0)}get lastChild(){return this.child(this.childCount-1)}get lastNamedChild(){return this.namedChild(this.namedChildCount-1)}get children(){if(!this._children){marshalNode(this),C._ts_node_children_wasm(this.tree[0]);const e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._children=new Array(e),e>0){let _=t;for(let t=0;t<e;t++)this._children[t]=unmarshalNode(this.tree,_),_+=SIZE_OF_NODE;C._free(t)}}return this._children}get namedChildren(){if(!this._namedChildren){marshalNode(this),C._ts_node_named_children_wasm(this.tree[0]);const e=getValue(TRANSFER_BUFFER,"i32"),t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32");if(this._namedChildren=new Array(e),e>0){let _=t;for(let t=0;t<e;t++)this._namedChildren[t]=unmarshalNode(this.tree,_),_+=SIZE_OF_NODE;C._free(t)}}return this._namedChildren}descendantsOfType(e,t,_){Array.isArray(e)||(e=[e]),t||(t=ZERO_POINT),_||(_=ZERO_POINT);const s=[],r=this.tree.language.types;for(let t=0,_=r.length;t<_;t++)e.includes(r[t])&&s.push(t);const a=C._malloc(SIZE_OF_INT*s.length);for(let e=0,t=s.length;e<t;e++)setValue(a+e*SIZE_OF_INT,s[e],"i32");marshalNode(this),C._ts_node_descendants_of_type_wasm(this.tree[0],a,s.length,t.row,t.column,_.row,_.column);const o=getValue(TRANSFER_BUFFER,"i32"),n=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),l=new Array(o);if(o>0){let e=n;for(let t=0;t<o;t++)l[t]=unmarshalNode(this.tree,e),e+=SIZE_OF_NODE}return C._free(n),C._free(a),l}get nextSibling(){return marshalNode(this),C._ts_node_next_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousSibling(){return marshalNode(this),C._ts_node_prev_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get nextNamedSibling(){return marshalNode(this),C._ts_node_next_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get previousNamedSibling(){return marshalNode(this),C._ts_node_prev_named_sibling_wasm(this.tree[0]),unmarshalNode(this.tree)}get descendantCount(){return marshalNode(this),C._ts_node_descendant_count_wasm(this.tree[0])}get parent(){return marshalNode(this),C._ts_node_parent_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForIndex(e,t=e){if("number"!=typeof e||"number"!=typeof t)throw new Error("Arguments must be numbers");marshalNode(this);const _=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(_,e,"i32"),setValue(_+SIZE_OF_INT,t,"i32"),C._ts_node_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForIndex(e,t=e){if("number"!=typeof e||"number"!=typeof t)throw new Error("Arguments must be numbers");marshalNode(this);const _=TRANSFER_BUFFER+SIZE_OF_NODE;return setValue(_,e,"i32"),setValue(_+SIZE_OF_INT,t,"i32"),C._ts_node_named_descendant_for_index_wasm(this.tree[0]),unmarshalNode(this.tree)}descendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);const _=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(_,e),marshalPoint(_+SIZE_OF_POINT,t),C._ts_node_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}namedDescendantForPosition(e,t=e){if(!isPoint(e)||!isPoint(t))throw new Error("Arguments must be {row, column} objects");marshalNode(this);const _=TRANSFER_BUFFER+SIZE_OF_NODE;return marshalPoint(_,e),marshalPoint(_+SIZE_OF_POINT,t),C._ts_node_named_descendant_for_position_wasm(this.tree[0]),unmarshalNode(this.tree)}walk(){return marshalNode(this),C._ts_tree_cursor_new_wasm(this.tree[0]),new TreeCursor(INTERNAL,this.tree)}toString(){marshalNode(this);const e=C._ts_node_to_string_wasm(this.tree[0]),t=AsciiToString(e);return C._free(e),t}}class TreeCursor{constructor(e,t){assertInternal(e),this.tree=t,unmarshalTreeCursor(this)}delete(){marshalTreeCursor(this),C._ts_tree_cursor_delete_wasm(this.tree[0]),this[0]=this[1]=this[2]=0}reset(e){marshalNode(e),marshalTreeCursor(this,TRANSFER_BUFFER+SIZE_OF_NODE),C._ts_tree_cursor_reset_wasm(this.tree[0]),unmarshalTreeCursor(this)}resetTo(e){marshalTreeCursor(this,TRANSFER_BUFFER),marshalTreeCursor(e,TRANSFER_BUFFER+SIZE_OF_CURSOR),C._ts_tree_cursor_reset_to_wasm(this.tree[0],e.tree[0]),unmarshalTreeCursor(this)}get nodeType(){return this.tree.language.types[this.nodeTypeId]||"ERROR"}get nodeTypeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0])}get nodeStateId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0])}get nodeId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_id_wasm(this.tree[0])}get nodeIsNamed(){return marshalTreeCursor(this),1===C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0])}get nodeIsMissing(){return marshalTreeCursor(this),1===C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0])}get nodeText(){marshalTreeCursor(this);const e=C._ts_tree_cursor_start_index_wasm(this.tree[0]),t=C._ts_tree_cursor_end_index_wasm(this.tree[0]);return getText(this.tree,e,t)}get startPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_start_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get endPosition(){return marshalTreeCursor(this),C._ts_tree_cursor_end_position_wasm(this.tree[0]),unmarshalPoint(TRANSFER_BUFFER)}get startIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_start_index_wasm(this.tree[0])}get endIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_end_index_wasm(this.tree[0])}get currentNode(){return marshalTreeCursor(this),C._ts_tree_cursor_current_node_wasm(this.tree[0]),unmarshalNode(this.tree)}get currentFieldId(){return marshalTreeCursor(this),C._ts_tree_cursor_current_field_id_wasm(this.tree[0])}get currentFieldName(){return this.tree.language.fields[this.currentFieldId]}get currentDepth(){return marshalTreeCursor(this),C._ts_tree_cursor_current_depth_wasm(this.tree[0])}get currentDescendantIndex(){return marshalTreeCursor(this),C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0])}gotoFirstChild(){marshalTreeCursor(this);const e=C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===e}gotoLastChild(){marshalTreeCursor(this);const e=C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===e}gotoFirstChildForIndex(e){marshalTreeCursor(this),setValue(TRANSFER_BUFFER+SIZE_OF_CURSOR,e,"i32");const t=C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===t}gotoFirstChildForPosition(e){marshalTreeCursor(this),marshalPoint(TRANSFER_BUFFER+SIZE_OF_CURSOR,e);const t=C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===t}gotoNextSibling(){marshalTreeCursor(this);const e=C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===e}gotoPreviousSibling(){marshalTreeCursor(this);const e=C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===e}gotoDescendant(e){marshalTreeCursor(this),C._ts_tree_cursor_goto_descendant_wasm(this.tree[0],e),unmarshalTreeCursor(this)}gotoParent(){marshalTreeCursor(this);const e=C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);return unmarshalTreeCursor(this),1===e}}class Language{constructor(e,t){assertInternal(e),this[0]=t,this.types=new Array(C._ts_language_symbol_count(this[0]));for(let e=0,t=this.types.length;e<t;e++)C._ts_language_symbol_type(this[0],e)<2&&(this.types[e]=UTF8ToString(C._ts_language_symbol_name(this[0],e)));this.fields=new Array(C._ts_language_field_count(this[0])+1);for(let e=0,t=this.fields.length;e<t;e++){const t=C._ts_language_field_name_for_id(this[0],e);this.fields[e]=0!==t?UTF8ToString(t):null}}get version(){return C._ts_language_version(this[0])}get fieldCount(){return this.fields.length-1}get stateCount(){return C._ts_language_state_count(this[0])}fieldIdForName(e){const t=this.fields.indexOf(e);return-1!==t?t:null}fieldNameForId(e){return this.fields[e]||null}idForNodeType(e,t){const _=lengthBytesUTF8(e),s=C._malloc(_+1);stringToUTF8(e,s,_+1);const r=C._ts_language_symbol_for_name(this[0],s,_,t);return C._free(s),r||null}get nodeTypeCount(){return C._ts_language_symbol_count(this[0])}nodeTypeForId(e){const t=C._ts_language_symbol_name(this[0],e);return t?UTF8ToString(t):null}nodeTypeIsNamed(e){return!!C._ts_language_type_is_named_wasm(this[0],e)}nodeTypeIsVisible(e){return!!C._ts_language_type_is_visible_wasm(this[0],e)}nextState(e,t){return C._ts_language_next_state(this[0],e,t)}lookaheadIterator(e){const t=C._ts_lookahead_iterator_new(this[0],e);if(t)return new LookaheadIterable(INTERNAL,t,this)}query(e){const t=lengthBytesUTF8(e),_=C._malloc(t+1);stringToUTF8(e,_,t+1);const s=C._ts_query_new(this[0],_,t,TRANSFER_BUFFER,TRANSFER_BUFFER+SIZE_OF_INT);if(!s){const t=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),s=getValue(TRANSFER_BUFFER,"i32"),r=UTF8ToString(_,s).length,a=e.substr(r,100).split("\n")[0];let o,n=a.match(QUERY_WORD_REGEX)[0];switch(t){case 2:o=new RangeError(`Bad node name '${n}'`);break;case 3:o=new RangeError(`Bad field name '${n}'`);break;case 4:o=new RangeError(`Bad capture name @${n}`);break;case 5:o=new TypeError(`Bad pattern structure at offset ${r}: '${a}'...`),n="";break;default:o=new SyntaxError(`Bad syntax at offset ${r}: '${a}'...`),n=""}throw o.index=r,o.length=n.length,C._free(_),o}const r=C._ts_query_string_count(s),a=C._ts_query_capture_count(s),o=C._ts_query_pattern_count(s),n=new Array(a),l=new Array(r);for(let e=0;e<a;e++){const t=C._ts_query_capture_name_for_id(s,e,TRANSFER_BUFFER),_=getValue(TRANSFER_BUFFER,"i32");n[e]=UTF8ToString(t,_)}for(let e=0;e<r;e++){const t=C._ts_query_string_value_for_id(s,e,TRANSFER_BUFFER),_=getValue(TRANSFER_BUFFER,"i32");l[e]=UTF8ToString(t,_)}const d=new Array(o),u=new Array(o),m=new Array(o),c=new Array(o),w=new Array(o);for(let e=0;e<o;e++){const t=C._ts_query_predicates_for_pattern(s,e,TRANSFER_BUFFER),_=getValue(TRANSFER_BUFFER,"i32");c[e]=[],w[e]=[];const r=[];let a=t;for(let t=0;t<_;t++){const t=getValue(a,"i32");a+=SIZE_OF_INT;const _=getValue(a,"i32");if(a+=SIZE_OF_INT,t===PREDICATE_STEP_TYPE_CAPTURE)r.push({type:"capture",name:n[_]});else if(t===PREDICATE_STEP_TYPE_STRING)r.push({type:"string",value:l[_]});else if(r.length>0){if("string"!==r[0].type)throw new Error("Predicates must begin with a literal value");const t=r[0].value;let _,s=!0,a=!0;switch(t){case"any-not-eq?":case"not-eq?":s=!1;case"any-eq?":case"eq?":if(3!==r.length)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 2, got ${r.length-1}`);if("capture"!==r[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${r[1].value}"`);if(a=!t.startsWith("any-"),"capture"===r[2].type){const t=r[1].name,_=r[2].name;w[e].push((function(e){const r=[],o=[];for(const s of e)s.name===t&&r.push(s.node),s.name===_&&o.push(s.node);const n=(e,t,_)=>_?e.text===t.text:e.text!==t.text;return a?r.every((e=>o.some((t=>n(e,t,s))))):r.some((e=>o.some((t=>n(e,t,s)))))}))}else{_=r[1].name;const t=r[2].value,o=e=>e.text===t,n=e=>e.text!==t;w[e].push((function(e){const t=[];for(const s of e)s.name===_&&t.push(s.node);const r=s?o:n;return a?t.every(r):t.some(r)}))}break;case"any-not-match?":case"not-match?":s=!1;case"any-match?":case"match?":if(3!==r.length)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 2, got ${r.length-1}.`);if("capture"!==r[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${r[1].value}".`);if("string"!==r[2].type)throw new Error(`Second argument of \`#${t}\` predicate must be a string. Got @${r[2].value}.`);_=r[1].name;const o=new RegExp(r[2].value);a=!t.startsWith("any-"),w[e].push((function(e){const t=[];for(const s of e)s.name===_&&t.push(s.node.text);const r=(e,t)=>t?o.test(e):!o.test(e);return 0===t.length?!s:a?t.every((e=>r(e,s))):t.some((e=>r(e,s)))}));break;case"set!":if(r.length<2||r.length>3)throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${r.length-1}.`);if(r.some((e=>"string"!==e.type)))throw new Error('Arguments to `#set!` predicate must be a strings.".');d[e]||(d[e]={}),d[e][r[1].value]=r[2]?r[2].value:null;break;case"is?":case"is-not?":if(r.length<2||r.length>3)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected 1 or 2. Got ${r.length-1}.`);if(r.some((e=>"string"!==e.type)))throw new Error(`Arguments to \`#${t}\` predicate must be a strings.".`);const n="is?"===t?u:m;n[e]||(n[e]={}),n[e][r[1].value]=r[2]?r[2].value:null;break;case"not-any-of?":s=!1;case"any-of?":if(r.length<2)throw new Error(`Wrong number of arguments to \`#${t}\` predicate. Expected at least 1. Got ${r.length-1}.`);if("capture"!==r[1].type)throw new Error(`First argument of \`#${t}\` predicate must be a capture. Got "${r[1].value}".`);for(let e=2;e<r.length;e++)if("string"!==r[e].type)throw new Error(`Arguments to \`#${t}\` predicate must be a strings.".`);_=r[1].name;const l=r.slice(2).map((e=>e.value));w[e].push((function(e){const t=[];for(const s of e)s.name===_&&t.push(s.node.text);return 0===t.length?!s:t.every((e=>l.includes(e)))===s}));break;default:c[e].push({operator:t,operands:r.slice(1)})}r.length=0}}Object.freeze(d[e]),Object.freeze(u[e]),Object.freeze(m[e])}return C._free(_),new Query(INTERNAL,s,n,w,c,Object.freeze(d),Object.freeze(u),Object.freeze(m))}static load(e){let t;if(e instanceof Uint8Array)t=Promise.resolve(e);else{const _=e;if("undefined"!=typeof process&&process.versions&&process.versions.node){const e=require("fs");t=Promise.resolve(e.readFileSync(_))}else t=fetch(_).then((e=>e.arrayBuffer().then((t=>{if(e.ok)return new Uint8Array(t);{const _=new TextDecoder("utf-8").decode(t);throw new Error(`Language.load failed with status ${e.status}.\n\n${_}`)}}))))}return t.then((e=>loadWebAssemblyModule(e,{loadAsync:!0}))).then((e=>{const t=Object.keys(e),_=t.find((e=>LANGUAGE_FUNCTION_REGEX.test(e)&&!e.includes("external_scanner_")));_||console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(t,null,2)}`);const s=e[_]();return new Language(INTERNAL,s)}))}}class LookaheadIterable{constructor(e,t,_){assertInternal(e),this[0]=t,this.language=_}get currentTypeId(){return C._ts_lookahead_iterator_current_symbol(this[0])}get currentType(){return this.language.types[this.currentTypeId]||"ERROR"}delete(){C._ts_lookahead_iterator_delete(this[0]),this[0]=0}resetState(e){return C._ts_lookahead_iterator_reset_state(this[0],e)}reset(e,t){return!!C._ts_lookahead_iterator_reset(this[0],e[0],t)&&(this.language=e,!0)}[Symbol.iterator](){const e=this;return{next:()=>C._ts_lookahead_iterator_next(e[0])?{done:!1,value:e.currentType}:{done:!0,value:""}}}}class Query{constructor(e,t,_,s,r,a,o,n){assertInternal(e),this[0]=t,this.captureNames=_,this.textPredicates=s,this.predicates=r,this.setProperties=a,this.assertedProperties=o,this.refutedProperties=n,this.exceededMatchLimit=!1}delete(){C._ts_query_delete(this[0]),this[0]=0}matches(e,{startPosition:t=ZERO_POINT,endPosition:_=ZERO_POINT,startIndex:s=0,endIndex:r=0,matchLimit:a=4294967295,maxStartDepth:o=4294967295}={}){if("number"!=typeof a)throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_matches_wasm(this[0],e.tree[0],t.row,t.column,_.row,_.column,s,r,a,o);const n=getValue(TRANSFER_BUFFER,"i32"),l=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),d=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),u=new Array(n);this.exceededMatchLimit=!!d;let m=0,c=l;for(let t=0;t<n;t++){const t=getValue(c,"i32");c+=SIZE_OF_INT;const _=getValue(c,"i32");c+=SIZE_OF_INT;const s=new Array(_);if(c=unmarshalCaptures(this,e.tree,c,s),this.textPredicates[t].every((e=>e(s)))){u[m]={pattern:t,captures:s};const e=this.setProperties[t];e&&(u[m].setProperties=e);const _=this.assertedProperties[t];_&&(u[m].assertedProperties=_);const r=this.refutedProperties[t];r&&(u[m].refutedProperties=r),m++}}return u.length=m,C._free(l),u}captures(e,{startPosition:t=ZERO_POINT,endPosition:_=ZERO_POINT,startIndex:s=0,endIndex:r=0,matchLimit:a=4294967295,maxStartDepth:o=4294967295}={}){if("number"!=typeof a)throw new Error("Arguments must be numbers");marshalNode(e),C._ts_query_captures_wasm(this[0],e.tree[0],t.row,t.column,_.row,_.column,s,r,a,o);const n=getValue(TRANSFER_BUFFER,"i32"),l=getValue(TRANSFER_BUFFER+SIZE_OF_INT,"i32"),d=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32"),u=[];this.exceededMatchLimit=!!d;const m=[];let c=l;for(let t=0;t<n;t++){const t=getValue(c,"i32");c+=SIZE_OF_INT;const _=getValue(c,"i32");c+=SIZE_OF_INT;const s=getValue(c,"i32");if(c+=SIZE_OF_INT,m.length=_,c=unmarshalCaptures(this,e.tree,c,m),this.textPredicates[t].every((e=>e(m)))){const e=m[s],_=this.setProperties[t];_&&(e.setProperties=_);const r=this.assertedProperties[t];r&&(e.assertedProperties=r);const a=this.refutedProperties[t];a&&(e.refutedProperties=a),u.push(e)}}return C._free(l),u}predicatesForPattern(e){return this.predicates[e]}disableCapture(e){const t=lengthBytesUTF8(e),_=C._malloc(t+1);stringToUTF8(e,_,t+1),C._ts_query_disable_capture(this[0],_,t),C._free(_)}didExceedMatchLimit(){return this.exceededMatchLimit}}function getText(e,t,_){const s=_-t;let r=e.textCallback(t,null,_);for(t+=r.length;t<_;){const s=e.textCallback(t,null,_);if(!(s&&s.length>0))break;t+=s.length,r+=s}return t>_&&(r=r.slice(0,s)),r}function unmarshalCaptures(e,t,_,s){for(let r=0,a=s.length;r<a;r++){const a=getValue(_,"i32"),o=unmarshalNode(t,_+=SIZE_OF_INT);_+=SIZE_OF_NODE,s[r]={name:e.captureNames[a],node:o}}return _}function assertInternal(e){if(e!==INTERNAL)throw new Error("Illegal constructor")}function isPoint(e){return e&&"number"==typeof e.row&&"number"==typeof e.column}function marshalNode(e){let t=TRANSFER_BUFFER;setValue(t,e.id,"i32"),t+=SIZE_OF_INT,setValue(t,e.startIndex,"i32"),t+=SIZE_OF_INT,setValue(t,e.startPosition.row,"i32"),t+=SIZE_OF_INT,setValue(t,e.startPosition.column,"i32"),t+=SIZE_OF_INT,setValue(t,e[0],"i32")}function unmarshalNode(e,t=TRANSFER_BUFFER){const _=getValue(t,"i32");if(0===_)return null;const s=getValue(t+=SIZE_OF_INT,"i32"),r=getValue(t+=SIZE_OF_INT,"i32"),a=getValue(t+=SIZE_OF_INT,"i32"),o=getValue(t+=SIZE_OF_INT,"i32"),n=new Node(INTERNAL,e);return n.id=_,n.startIndex=s,n.startPosition={row:r,column:a},n[0]=o,n}function marshalTreeCursor(e,t=TRANSFER_BUFFER){setValue(t+0*SIZE_OF_INT,e[0],"i32"),setValue(t+1*SIZE_OF_INT,e[1],"i32"),setValue(t+2*SIZE_OF_INT,e[2],"i32")}function unmarshalTreeCursor(e){e[0]=getValue(TRANSFER_BUFFER+0*SIZE_OF_INT,"i32"),e[1]=getValue(TRANSFER_BUFFER+1*SIZE_OF_INT,"i32"),e[2]=getValue(TRANSFER_BUFFER+2*SIZE_OF_INT,"i32")}function marshalPoint(e,t){setValue(e,t.row,"i32"),setValue(e+SIZE_OF_INT,t.column,"i32")}function unmarshalPoint(e){return{row:getValue(e,"i32")>>>0,column:getValue(e+SIZE_OF_INT,"i32")>>>0}}function marshalRange(e,t){marshalPoint(e,t.startPosition),marshalPoint(e+=SIZE_OF_POINT,t.endPosition),setValue(e+=SIZE_OF_POINT,t.startIndex,"i32"),setValue(e+=SIZE_OF_INT,t.endIndex,"i32"),e+=SIZE_OF_INT}function unmarshalRange(e){const t={};return t.startPosition=unmarshalPoint(e),e+=SIZE_OF_POINT,t.endPosition=unmarshalPoint(e),e+=SIZE_OF_POINT,t.startIndex=getValue(e,"i32")>>>0,e+=SIZE_OF_INT,t.endIndex=getValue(e,"i32")>>>0,t}function marshalEdit(e){let t=TRANSFER_BUFFER;marshalPoint(t,e.startPosition),t+=SIZE_OF_POINT,marshalPoint(t,e.oldEndPosition),t+=SIZE_OF_POINT,marshalPoint(t,e.newEndPosition),t+=SIZE_OF_POINT,setValue(t,e.startIndex,"i32"),t+=SIZE_OF_INT,setValue(t,e.oldEndIndex,"i32"),t+=SIZE_OF_INT,setValue(t,e.newEndIndex,"i32"),t+=SIZE_OF_INT}for(const e of Object.getOwnPropertyNames(ParserImpl.prototype))Object.defineProperty(Parser.prototype,e,{value:ParserImpl.prototype[e],enumerable:!1,writable:!1});Parser.Language=Language,Module.onRuntimeInitialized=()=>{ParserImpl.init(),resolveInitPromise()}})))}}return Parser}();"object"==typeof exports&&(module.exports=TreeSitter);
|
7
|
+
// include: shell.js
|
8
|
+
// The Module object: Our interface to the outside world. We import
|
9
|
+
// and export values on it. There are various ways Module can be used:
|
10
|
+
// 1. Not defined. We create it here
|
11
|
+
// 2. A function parameter, function(moduleArg) => Promise<Module>
|
12
|
+
// 3. pre-run appended it, var Module = {}; ..generated code..
|
13
|
+
// 4. External script tag defines var Module.
|
14
|
+
// We need to check if Module already exists (e.g. case 3 above).
|
15
|
+
// Substitution will be replaced with actual code on later stage of the build,
|
16
|
+
// this way Closure Compiler will not mangle it (e.g. case 4. above).
|
17
|
+
// Note that if you want to run closure, and also to use Module
|
18
|
+
// after the generated code, you will need to define var Module = {};
|
19
|
+
// before the code. Then that object will be used in the code, and you
|
20
|
+
// can continue to use Module afterwards as well.
|
21
|
+
var Module = typeof Module != "undefined" ? Module : {};
|
22
|
+
|
23
|
+
// Determine the runtime environment we are in. You can customize this by
|
24
|
+
// setting the ENVIRONMENT setting at compile time (see settings.js).
|
25
|
+
// Attempt to auto-detect the environment
|
26
|
+
var ENVIRONMENT_IS_WEB = typeof window == "object";
|
27
|
+
|
28
|
+
var ENVIRONMENT_IS_WORKER = typeof importScripts == "function";
|
29
|
+
|
30
|
+
// N.b. Electron.js environment is simultaneously a NODE-environment, but
|
31
|
+
// also a web environment.
|
32
|
+
var ENVIRONMENT_IS_NODE = typeof process == "object" && typeof process.versions == "object" && typeof process.versions.node == "string";
|
33
|
+
|
34
|
+
if (ENVIRONMENT_IS_NODE) {}
|
35
|
+
|
36
|
+
// --pre-jses are emitted after the Module integration code, so that they can
|
37
|
+
// refer to Module (if they choose; they can also define Module)
|
38
|
+
// include: /mnt/vss/_work/1/s/tree-sitter/lib/binding_web/prefix.js
|
39
|
+
var TreeSitter = function() {
|
40
|
+
var initPromise;
|
41
|
+
var document = typeof window == "object" ? {
|
42
|
+
currentScript: window.document.currentScript
|
43
|
+
} : null;
|
44
|
+
class Parser {
|
45
|
+
constructor() {
|
46
|
+
this.initialize();
|
47
|
+
}
|
48
|
+
initialize() {
|
49
|
+
throw new Error("cannot construct a Parser before calling `init()`");
|
50
|
+
}
|
51
|
+
static init(moduleOptions) {
|
52
|
+
if (initPromise) return initPromise;
|
53
|
+
Module = Object.assign({}, Module, moduleOptions);
|
54
|
+
return initPromise = new Promise(resolveInitPromise => {
|
55
|
+
// end include: /mnt/vss/_work/1/s/tree-sitter/lib/binding_web/prefix.js
|
56
|
+
// Sometimes an existing Module object exists with properties
|
57
|
+
// meant to overwrite the default module functionality. Here
|
58
|
+
// we collect those properties and reapply _after_ we configure
|
59
|
+
// the current environment's defaults to avoid having to be so
|
60
|
+
// defensive during initialization.
|
61
|
+
var moduleOverrides = Object.assign({}, Module);
|
62
|
+
var arguments_ = [];
|
63
|
+
var thisProgram = "./this.program";
|
64
|
+
var quit_ = (status, toThrow) => {
|
65
|
+
throw toThrow;
|
66
|
+
};
|
67
|
+
// `/` should be present at the end if `scriptDirectory` is not empty
|
68
|
+
var scriptDirectory = "";
|
69
|
+
function locateFile(path) {
|
70
|
+
if (Module["locateFile"]) {
|
71
|
+
return Module["locateFile"](path, scriptDirectory);
|
72
|
+
}
|
73
|
+
return scriptDirectory + path;
|
74
|
+
}
|
75
|
+
// Hooks that are implemented differently in different runtime environments.
|
76
|
+
var readAsync, readBinary;
|
77
|
+
if (ENVIRONMENT_IS_NODE) {
|
78
|
+
// These modules will usually be used on Node.js. Load them eagerly to avoid
|
79
|
+
// the complexity of lazy-loading.
|
80
|
+
var fs = require("fs");
|
81
|
+
var nodePath = require("path");
|
82
|
+
scriptDirectory = __dirname + "/";
|
83
|
+
// include: node_shell_read.js
|
84
|
+
readBinary = filename => {
|
85
|
+
// We need to re-wrap `file://` strings to URLs. Normalizing isn't
|
86
|
+
// necessary in that case, the path should already be absolute.
|
87
|
+
filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
|
88
|
+
var ret = fs.readFileSync(filename);
|
89
|
+
return ret;
|
90
|
+
};
|
91
|
+
readAsync = (filename, binary = true) => {
|
92
|
+
// See the comment in the `readBinary` function.
|
93
|
+
filename = isFileURI(filename) ? new URL(filename) : nodePath.normalize(filename);
|
94
|
+
return new Promise((resolve, reject) => {
|
95
|
+
fs.readFile(filename, binary ? undefined : "utf8", (err, data) => {
|
96
|
+
if (err) reject(err); else resolve(binary ? data.buffer : data);
|
97
|
+
});
|
98
|
+
});
|
99
|
+
};
|
100
|
+
// end include: node_shell_read.js
|
101
|
+
if (!Module["thisProgram"] && process.argv.length > 1) {
|
102
|
+
thisProgram = process.argv[1].replace(/\\/g, "/");
|
103
|
+
}
|
104
|
+
arguments_ = process.argv.slice(2);
|
105
|
+
if (typeof module != "undefined") {
|
106
|
+
module["exports"] = Module;
|
107
|
+
}
|
108
|
+
quit_ = (status, toThrow) => {
|
109
|
+
process.exitCode = status;
|
110
|
+
throw toThrow;
|
111
|
+
};
|
112
|
+
} else // Note that this includes Node.js workers when relevant (pthreads is enabled).
|
113
|
+
// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and
|
114
|
+
// ENVIRONMENT_IS_NODE.
|
115
|
+
if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
|
116
|
+
if (ENVIRONMENT_IS_WORKER) {
|
117
|
+
// Check worker, not web, since window could be polyfilled
|
118
|
+
scriptDirectory = self.location.href;
|
119
|
+
} else if (typeof document != "undefined" && document.currentScript) {
|
120
|
+
// web
|
121
|
+
scriptDirectory = document.currentScript.src;
|
122
|
+
}
|
123
|
+
// blob urls look like blob:http://site.com/etc/etc and we cannot infer anything from them.
|
124
|
+
// otherwise, slice off the final part of the url to find the script directory.
|
125
|
+
// if scriptDirectory does not contain a slash, lastIndexOf will return -1,
|
126
|
+
// and scriptDirectory will correctly be replaced with an empty string.
|
127
|
+
// If scriptDirectory contains a query (starting with ?) or a fragment (starting with #),
|
128
|
+
// they are removed because they could contain a slash.
|
129
|
+
if (scriptDirectory.startsWith("blob:")) {
|
130
|
+
scriptDirectory = "";
|
131
|
+
} else {
|
132
|
+
scriptDirectory = scriptDirectory.substr(0, scriptDirectory.replace(/[?#].*/, "").lastIndexOf("/") + 1);
|
133
|
+
}
|
134
|
+
{
|
135
|
+
// include: web_or_worker_shell_read.js
|
136
|
+
if (ENVIRONMENT_IS_WORKER) {
|
137
|
+
readBinary = url => {
|
138
|
+
var xhr = new XMLHttpRequest;
|
139
|
+
xhr.open("GET", url, false);
|
140
|
+
xhr.responseType = "arraybuffer";
|
141
|
+
xhr.send(null);
|
142
|
+
return new Uint8Array(/** @type{!ArrayBuffer} */ (xhr.response));
|
143
|
+
};
|
144
|
+
}
|
145
|
+
readAsync = url => {
|
146
|
+
// Fetch has some additional restrictions over XHR, like it can't be used on a file:// url.
|
147
|
+
// See https://github.com/github/fetch/pull/92#issuecomment-140665932
|
148
|
+
// Cordova or Electron apps are typically loaded from a file:// url.
|
149
|
+
// So use XHR on webview if URL is a file URL.
|
150
|
+
if (isFileURI(url)) {
|
151
|
+
return new Promise((reject, resolve) => {
|
152
|
+
var xhr = new XMLHttpRequest;
|
153
|
+
xhr.open("GET", url, true);
|
154
|
+
xhr.responseType = "arraybuffer";
|
155
|
+
xhr.onload = () => {
|
156
|
+
if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) {
|
157
|
+
// file URLs can return 0
|
158
|
+
resolve(xhr.response);
|
159
|
+
}
|
160
|
+
reject(xhr.status);
|
161
|
+
};
|
162
|
+
xhr.onerror = reject;
|
163
|
+
xhr.send(null);
|
164
|
+
});
|
165
|
+
}
|
166
|
+
return fetch(url, {
|
167
|
+
credentials: "same-origin"
|
168
|
+
}).then(response => {
|
169
|
+
if (response.ok) {
|
170
|
+
return response.arrayBuffer();
|
171
|
+
}
|
172
|
+
return Promise.reject(new Error(response.status + " : " + response.url));
|
173
|
+
});
|
174
|
+
};
|
175
|
+
}
|
176
|
+
} else // end include: web_or_worker_shell_read.js
|
177
|
+
{}
|
178
|
+
var out = Module["print"] || console.log.bind(console);
|
179
|
+
var err = Module["printErr"] || console.error.bind(console);
|
180
|
+
// Merge back in the overrides
|
181
|
+
Object.assign(Module, moduleOverrides);
|
182
|
+
// Free the object hierarchy contained in the overrides, this lets the GC
|
183
|
+
// reclaim data used.
|
184
|
+
moduleOverrides = null;
|
185
|
+
// Emit code to handle expected values on the Module object. This applies Module.x
|
186
|
+
// to the proper local x. This has two benefits: first, we only emit it if it is
|
187
|
+
// expected to arrive, and second, by using a local everywhere else that can be
|
188
|
+
// minified.
|
189
|
+
if (Module["arguments"]) arguments_ = Module["arguments"];
|
190
|
+
if (Module["thisProgram"]) thisProgram = Module["thisProgram"];
|
191
|
+
if (Module["quit"]) quit_ = Module["quit"];
|
192
|
+
// perform assertions in shell.js after we set up out() and err(), as otherwise if an assertion fails it cannot print the message
|
193
|
+
// end include: shell.js
|
194
|
+
// include: preamble.js
|
195
|
+
// === Preamble library stuff ===
|
196
|
+
// Documentation for the public APIs defined in this file must be updated in:
|
197
|
+
// site/source/docs/api_reference/preamble.js.rst
|
198
|
+
// A prebuilt local version of the documentation is available at:
|
199
|
+
// site/build/text/docs/api_reference/preamble.js.txt
|
200
|
+
// You can also build docs locally as HTML or other formats in site/
|
201
|
+
// An online HTML version (which may be of a different version of Emscripten)
|
202
|
+
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
|
203
|
+
var dynamicLibraries = Module["dynamicLibraries"] || [];
|
204
|
+
var wasmBinary;
|
205
|
+
if (Module["wasmBinary"]) wasmBinary = Module["wasmBinary"];
|
206
|
+
// Wasm globals
|
207
|
+
var wasmMemory;
|
208
|
+
//========================================
|
209
|
+
// Runtime essentials
|
210
|
+
//========================================
|
211
|
+
// whether we are quitting the application. no code should run after this.
|
212
|
+
// set in exit() and abort()
|
213
|
+
var ABORT = false;
|
214
|
+
// set by exit() and abort(). Passed to 'onExit' handler.
|
215
|
+
// NOTE: This is also used as the process return code code in shell environments
|
216
|
+
// but only when noExitRuntime is false.
|
217
|
+
var EXITSTATUS;
|
218
|
+
// Memory management
|
219
|
+
var /** @type {!Int8Array} */ HEAP8, /** @type {!Uint8Array} */ HEAPU8, /** @type {!Int16Array} */ HEAP16, /** @type {!Uint16Array} */ HEAPU16, /** @type {!Int32Array} */ HEAP32, /** @type {!Uint32Array} */ HEAPU32, /** @type {!Float32Array} */ HEAPF32, /** @type {!Float64Array} */ HEAPF64;
|
220
|
+
var HEAP_DATA_VIEW;
|
221
|
+
// include: runtime_shared.js
|
222
|
+
function updateMemoryViews() {
|
223
|
+
var b = wasmMemory.buffer;
|
224
|
+
Module["HEAP_DATA_VIEW"] = HEAP_DATA_VIEW = new DataView(b);
|
225
|
+
Module["HEAP8"] = HEAP8 = new Int8Array(b);
|
226
|
+
Module["HEAP16"] = HEAP16 = new Int16Array(b);
|
227
|
+
Module["HEAPU8"] = HEAPU8 = new Uint8Array(b);
|
228
|
+
Module["HEAPU16"] = HEAPU16 = new Uint16Array(b);
|
229
|
+
Module["HEAP32"] = HEAP32 = new Int32Array(b);
|
230
|
+
Module["HEAPU32"] = HEAPU32 = new Uint32Array(b);
|
231
|
+
Module["HEAPF32"] = HEAPF32 = new Float32Array(b);
|
232
|
+
Module["HEAPF64"] = HEAPF64 = new Float64Array(b);
|
233
|
+
}
|
234
|
+
// end include: runtime_shared.js
|
235
|
+
// In non-standalone/normal mode, we create the memory here.
|
236
|
+
// include: runtime_init_memory.js
|
237
|
+
// Create the wasm memory. (Note: this only applies if IMPORTED_MEMORY is defined)
|
238
|
+
// check for full engine support (use string 'subarray' to avoid closure compiler confusion)
|
239
|
+
if (Module["wasmMemory"]) {
|
240
|
+
wasmMemory = Module["wasmMemory"];
|
241
|
+
} else {
|
242
|
+
var INITIAL_MEMORY = Module["INITIAL_MEMORY"] || 33554432;
|
243
|
+
wasmMemory = new WebAssembly.Memory({
|
244
|
+
"initial": INITIAL_MEMORY / 65536,
|
245
|
+
// In theory we should not need to emit the maximum if we want "unlimited"
|
246
|
+
// or 4GB of memory, but VMs error on that atm, see
|
247
|
+
// https://github.com/emscripten-core/emscripten/issues/14130
|
248
|
+
// And in the pthreads case we definitely need to emit a maximum. So
|
249
|
+
// always emit one.
|
250
|
+
"maximum": 2147483648 / 65536
|
251
|
+
});
|
252
|
+
}
|
253
|
+
updateMemoryViews();
|
254
|
+
// end include: runtime_init_memory.js
|
255
|
+
// include: runtime_stack_check.js
|
256
|
+
// end include: runtime_stack_check.js
|
257
|
+
// include: runtime_assertions.js
|
258
|
+
// end include: runtime_assertions.js
|
259
|
+
var __ATPRERUN__ = [];
|
260
|
+
// functions called before the runtime is initialized
|
261
|
+
var __ATINIT__ = [];
|
262
|
+
// functions called during startup
|
263
|
+
var __ATMAIN__ = [];
|
264
|
+
// functions called during shutdown
|
265
|
+
var __ATPOSTRUN__ = [];
|
266
|
+
// functions called after the main() is called
|
267
|
+
var __RELOC_FUNCS__ = [];
|
268
|
+
var runtimeInitialized = false;
|
269
|
+
function preRun() {
|
270
|
+
if (Module["preRun"]) {
|
271
|
+
if (typeof Module["preRun"] == "function") Module["preRun"] = [ Module["preRun"] ];
|
272
|
+
while (Module["preRun"].length) {
|
273
|
+
addOnPreRun(Module["preRun"].shift());
|
274
|
+
}
|
275
|
+
}
|
276
|
+
callRuntimeCallbacks(__ATPRERUN__);
|
277
|
+
}
|
278
|
+
function initRuntime() {
|
279
|
+
runtimeInitialized = true;
|
280
|
+
callRuntimeCallbacks(__RELOC_FUNCS__);
|
281
|
+
callRuntimeCallbacks(__ATINIT__);
|
282
|
+
}
|
283
|
+
function preMain() {
|
284
|
+
callRuntimeCallbacks(__ATMAIN__);
|
285
|
+
}
|
286
|
+
function postRun() {
|
287
|
+
if (Module["postRun"]) {
|
288
|
+
if (typeof Module["postRun"] == "function") Module["postRun"] = [ Module["postRun"] ];
|
289
|
+
while (Module["postRun"].length) {
|
290
|
+
addOnPostRun(Module["postRun"].shift());
|
291
|
+
}
|
292
|
+
}
|
293
|
+
callRuntimeCallbacks(__ATPOSTRUN__);
|
294
|
+
}
|
295
|
+
function addOnPreRun(cb) {
|
296
|
+
__ATPRERUN__.unshift(cb);
|
297
|
+
}
|
298
|
+
function addOnInit(cb) {
|
299
|
+
__ATINIT__.unshift(cb);
|
300
|
+
}
|
301
|
+
function addOnPostRun(cb) {
|
302
|
+
__ATPOSTRUN__.unshift(cb);
|
303
|
+
}
|
304
|
+
// include: runtime_math.js
|
305
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul
|
306
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/fround
|
307
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32
|
308
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/trunc
|
309
|
+
// end include: runtime_math.js
|
310
|
+
// A counter of dependencies for calling run(). If we need to
|
311
|
+
// do asynchronous work before running, increment this and
|
312
|
+
// decrement it. Incrementing must happen in a place like
|
313
|
+
// Module.preRun (used by emcc to add file preloading).
|
314
|
+
// Note that you can add dependencies in preRun, even though
|
315
|
+
// it happens right before run - run will be postponed until
|
316
|
+
// the dependencies are met.
|
317
|
+
var runDependencies = 0;
|
318
|
+
var runDependencyWatcher = null;
|
319
|
+
var dependenciesFulfilled = null;
|
320
|
+
// overridden to take different actions when all run dependencies are fulfilled
|
321
|
+
function getUniqueRunDependency(id) {
|
322
|
+
return id;
|
323
|
+
}
|
324
|
+
function addRunDependency(id) {
|
325
|
+
runDependencies++;
|
326
|
+
Module["monitorRunDependencies"]?.(runDependencies);
|
327
|
+
}
|
328
|
+
function removeRunDependency(id) {
|
329
|
+
runDependencies--;
|
330
|
+
Module["monitorRunDependencies"]?.(runDependencies);
|
331
|
+
if (runDependencies == 0) {
|
332
|
+
if (runDependencyWatcher !== null) {
|
333
|
+
clearInterval(runDependencyWatcher);
|
334
|
+
runDependencyWatcher = null;
|
335
|
+
}
|
336
|
+
if (dependenciesFulfilled) {
|
337
|
+
var callback = dependenciesFulfilled;
|
338
|
+
dependenciesFulfilled = null;
|
339
|
+
callback();
|
340
|
+
}
|
341
|
+
}
|
342
|
+
}
|
343
|
+
/** @param {string|number=} what */ function abort(what) {
|
344
|
+
Module["onAbort"]?.(what);
|
345
|
+
what = "Aborted(" + what + ")";
|
346
|
+
// TODO(sbc): Should we remove printing and leave it up to whoever
|
347
|
+
// catches the exception?
|
348
|
+
err(what);
|
349
|
+
ABORT = true;
|
350
|
+
EXITSTATUS = 1;
|
351
|
+
what += ". Build with -sASSERTIONS for more info.";
|
352
|
+
// Use a wasm runtime error, because a JS error might be seen as a foreign
|
353
|
+
// exception, which means we'd run destructors on it. We need the error to
|
354
|
+
// simply make the program stop.
|
355
|
+
// FIXME This approach does not work in Wasm EH because it currently does not assume
|
356
|
+
// all RuntimeErrors are from traps; it decides whether a RuntimeError is from
|
357
|
+
// a trap or not based on a hidden field within the object. So at the moment
|
358
|
+
// we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that
|
359
|
+
// allows this in the wasm spec.
|
360
|
+
// Suppress closure compiler warning here. Closure compiler's builtin extern
|
361
|
+
// definition for WebAssembly.RuntimeError claims it takes no arguments even
|
362
|
+
// though it can.
|
363
|
+
// TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed.
|
364
|
+
/** @suppress {checkTypes} */ var e = new WebAssembly.RuntimeError(what);
|
365
|
+
// Throw the error whether or not MODULARIZE is set because abort is used
|
366
|
+
// in code paths apart from instantiation where an exception is expected
|
367
|
+
// to be thrown when abort is called.
|
368
|
+
throw e;
|
369
|
+
}
|
370
|
+
// include: memoryprofiler.js
|
371
|
+
// end include: memoryprofiler.js
|
372
|
+
// include: URIUtils.js
|
373
|
+
// Prefix of data URIs emitted by SINGLE_FILE and related options.
|
374
|
+
var dataURIPrefix = "data:application/octet-stream;base64,";
|
375
|
+
/**
|
376
|
+
* Indicates whether filename is a base64 data URI.
|
377
|
+
* @noinline
|
378
|
+
*/ var isDataURI = filename => filename.startsWith(dataURIPrefix);
|
379
|
+
/**
|
380
|
+
* Indicates whether filename is delivered via file protocol (as opposed to http/https)
|
381
|
+
* @noinline
|
382
|
+
*/ var isFileURI = filename => filename.startsWith("file://");
|
383
|
+
// end include: URIUtils.js
|
384
|
+
// include: runtime_exceptions.js
|
385
|
+
// end include: runtime_exceptions.js
|
386
|
+
function findWasmBinary() {
|
387
|
+
var f = "tree-sitter.wasm";
|
388
|
+
if (!isDataURI(f)) {
|
389
|
+
return locateFile(f);
|
390
|
+
}
|
391
|
+
return f;
|
392
|
+
}
|
393
|
+
var wasmBinaryFile;
|
394
|
+
function getBinarySync(file) {
|
395
|
+
if (file == wasmBinaryFile && wasmBinary) {
|
396
|
+
return new Uint8Array(wasmBinary);
|
397
|
+
}
|
398
|
+
if (readBinary) {
|
399
|
+
return readBinary(file);
|
400
|
+
}
|
401
|
+
throw "both async and sync fetching of the wasm failed";
|
402
|
+
}
|
403
|
+
function getBinaryPromise(binaryFile) {
|
404
|
+
// If we don't have the binary yet, load it asynchronously using readAsync.
|
405
|
+
if (!wasmBinary) {
|
406
|
+
// Fetch the binary using readAsync
|
407
|
+
return readAsync(binaryFile).then(response => new Uint8Array(/** @type{!ArrayBuffer} */ (response)), // Fall back to getBinarySync if readAsync fails
|
408
|
+
() => getBinarySync(binaryFile));
|
409
|
+
}
|
410
|
+
// Otherwise, getBinarySync should be able to get it synchronously
|
411
|
+
return Promise.resolve().then(() => getBinarySync(binaryFile));
|
412
|
+
}
|
413
|
+
function instantiateArrayBuffer(binaryFile, imports, receiver) {
|
414
|
+
return getBinaryPromise(binaryFile).then(binary => WebAssembly.instantiate(binary, imports)).then(receiver, reason => {
|
415
|
+
err(`failed to asynchronously prepare wasm: ${reason}`);
|
416
|
+
abort(reason);
|
417
|
+
});
|
418
|
+
}
|
419
|
+
function instantiateAsync(binary, binaryFile, imports, callback) {
|
420
|
+
if (!binary && typeof WebAssembly.instantiateStreaming == "function" && !isDataURI(binaryFile) && // Don't use streaming for file:// delivered objects in a webview, fetch them synchronously.
|
421
|
+
!isFileURI(binaryFile) && // Avoid instantiateStreaming() on Node.js environment for now, as while
|
422
|
+
// Node.js v18.1.0 implements it, it does not have a full fetch()
|
423
|
+
// implementation yet.
|
424
|
+
// Reference:
|
425
|
+
// https://github.com/emscripten-core/emscripten/pull/16917
|
426
|
+
!ENVIRONMENT_IS_NODE && typeof fetch == "function") {
|
427
|
+
return fetch(binaryFile, {
|
428
|
+
credentials: "same-origin"
|
429
|
+
}).then(response => {
|
430
|
+
// Suppress closure warning here since the upstream definition for
|
431
|
+
// instantiateStreaming only allows Promise<Repsponse> rather than
|
432
|
+
// an actual Response.
|
433
|
+
// TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure is fixed.
|
434
|
+
/** @suppress {checkTypes} */ var result = WebAssembly.instantiateStreaming(response, imports);
|
435
|
+
return result.then(callback, function(reason) {
|
436
|
+
// We expect the most common failure cause to be a bad MIME type for the binary,
|
437
|
+
// in which case falling back to ArrayBuffer instantiation should work.
|
438
|
+
err(`wasm streaming compile failed: ${reason}`);
|
439
|
+
err("falling back to ArrayBuffer instantiation");
|
440
|
+
return instantiateArrayBuffer(binaryFile, imports, callback);
|
441
|
+
});
|
442
|
+
});
|
443
|
+
}
|
444
|
+
return instantiateArrayBuffer(binaryFile, imports, callback);
|
445
|
+
}
|
446
|
+
function getWasmImports() {
|
447
|
+
// prepare imports
|
448
|
+
return {
|
449
|
+
"env": wasmImports,
|
450
|
+
"wasi_snapshot_preview1": wasmImports,
|
451
|
+
"GOT.mem": new Proxy(wasmImports, GOTHandler),
|
452
|
+
"GOT.func": new Proxy(wasmImports, GOTHandler)
|
453
|
+
};
|
454
|
+
}
|
455
|
+
// Create the wasm instance.
|
456
|
+
// Receives the wasm imports, returns the exports.
|
457
|
+
function createWasm() {
|
458
|
+
var info = getWasmImports();
|
459
|
+
// Load the wasm module and create an instance of using native support in the JS engine.
|
460
|
+
// handle a generated wasm instance, receiving its exports and
|
461
|
+
// performing other necessary setup
|
462
|
+
/** @param {WebAssembly.Module=} module*/ function receiveInstance(instance, module) {
|
463
|
+
wasmExports = instance.exports;
|
464
|
+
wasmExports = relocateExports(wasmExports, 1024);
|
465
|
+
var metadata = getDylinkMetadata(module);
|
466
|
+
if (metadata.neededDynlibs) {
|
467
|
+
dynamicLibraries = metadata.neededDynlibs.concat(dynamicLibraries);
|
468
|
+
}
|
469
|
+
mergeLibSymbols(wasmExports, "main");
|
470
|
+
LDSO.init();
|
471
|
+
loadDylibs();
|
472
|
+
addOnInit(wasmExports["__wasm_call_ctors"]);
|
473
|
+
__RELOC_FUNCS__.push(wasmExports["__wasm_apply_data_relocs"]);
|
474
|
+
removeRunDependency("wasm-instantiate");
|
475
|
+
return wasmExports;
|
476
|
+
}
|
477
|
+
// wait for the pthread pool (if any)
|
478
|
+
addRunDependency("wasm-instantiate");
|
479
|
+
// Prefer streaming instantiation if available.
|
480
|
+
function receiveInstantiationResult(result) {
|
481
|
+
// 'result' is a ResultObject object which has both the module and instance.
|
482
|
+
// receiveInstance() will swap in the exports (to Module.asm) so they can be called
|
483
|
+
receiveInstance(result["instance"], result["module"]);
|
484
|
+
}
|
485
|
+
// User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback
|
486
|
+
// to manually instantiate the Wasm module themselves. This allows pages to
|
487
|
+
// run the instantiation parallel to any other async startup actions they are
|
488
|
+
// performing.
|
489
|
+
// Also pthreads and wasm workers initialize the wasm instance through this
|
490
|
+
// path.
|
491
|
+
if (Module["instantiateWasm"]) {
|
492
|
+
try {
|
493
|
+
return Module["instantiateWasm"](info, receiveInstance);
|
494
|
+
} catch (e) {
|
495
|
+
err(`Module.instantiateWasm callback failed with error: ${e}`);
|
496
|
+
return false;
|
497
|
+
}
|
498
|
+
}
|
499
|
+
if (!wasmBinaryFile) wasmBinaryFile = findWasmBinary();
|
500
|
+
instantiateAsync(wasmBinary, wasmBinaryFile, info, receiveInstantiationResult);
|
501
|
+
return {};
|
502
|
+
}
|
503
|
+
// include: runtime_debug.js
|
504
|
+
// end include: runtime_debug.js
|
505
|
+
// === Body ===
|
506
|
+
var ASM_CONSTS = {};
|
507
|
+
// end include: preamble.js
|
508
|
+
/** @constructor */ function ExitStatus(status) {
|
509
|
+
this.name = "ExitStatus";
|
510
|
+
this.message = `Program terminated with exit(${status})`;
|
511
|
+
this.status = status;
|
512
|
+
}
|
513
|
+
var GOT = {};
|
514
|
+
var currentModuleWeakSymbols = new Set([]);
|
515
|
+
var GOTHandler = {
|
516
|
+
get(obj, symName) {
|
517
|
+
var rtn = GOT[symName];
|
518
|
+
if (!rtn) {
|
519
|
+
rtn = GOT[symName] = new WebAssembly.Global({
|
520
|
+
"value": "i32",
|
521
|
+
"mutable": true
|
522
|
+
});
|
523
|
+
}
|
524
|
+
if (!currentModuleWeakSymbols.has(symName)) {
|
525
|
+
// Any non-weak reference to a symbol marks it as `required`, which
|
526
|
+
// enabled `reportUndefinedSymbols` to report undefeind symbol errors
|
527
|
+
// correctly.
|
528
|
+
rtn.required = true;
|
529
|
+
}
|
530
|
+
return rtn;
|
531
|
+
}
|
532
|
+
};
|
533
|
+
var LE_HEAP_LOAD_F32 = byteOffset => HEAP_DATA_VIEW.getFloat32(byteOffset, true);
|
534
|
+
var LE_HEAP_LOAD_F64 = byteOffset => HEAP_DATA_VIEW.getFloat64(byteOffset, true);
|
535
|
+
var LE_HEAP_LOAD_I16 = byteOffset => HEAP_DATA_VIEW.getInt16(byteOffset, true);
|
536
|
+
var LE_HEAP_LOAD_I32 = byteOffset => HEAP_DATA_VIEW.getInt32(byteOffset, true);
|
537
|
+
var LE_HEAP_LOAD_U32 = byteOffset => HEAP_DATA_VIEW.getUint32(byteOffset, true);
|
538
|
+
var LE_HEAP_STORE_F32 = (byteOffset, value) => HEAP_DATA_VIEW.setFloat32(byteOffset, value, true);
|
539
|
+
var LE_HEAP_STORE_F64 = (byteOffset, value) => HEAP_DATA_VIEW.setFloat64(byteOffset, value, true);
|
540
|
+
var LE_HEAP_STORE_I16 = (byteOffset, value) => HEAP_DATA_VIEW.setInt16(byteOffset, value, true);
|
541
|
+
var LE_HEAP_STORE_I32 = (byteOffset, value) => HEAP_DATA_VIEW.setInt32(byteOffset, value, true);
|
542
|
+
var LE_HEAP_STORE_U32 = (byteOffset, value) => HEAP_DATA_VIEW.setUint32(byteOffset, value, true);
|
543
|
+
var callRuntimeCallbacks = callbacks => {
|
544
|
+
while (callbacks.length > 0) {
|
545
|
+
// Pass the module as the first argument.
|
546
|
+
callbacks.shift()(Module);
|
547
|
+
}
|
548
|
+
};
|
549
|
+
var UTF8Decoder = typeof TextDecoder != "undefined" ? new TextDecoder : undefined;
|
550
|
+
/**
|
551
|
+
* Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given
|
552
|
+
* array that contains uint8 values, returns a copy of that string as a
|
553
|
+
* Javascript String object.
|
554
|
+
* heapOrArray is either a regular array, or a JavaScript typed array view.
|
555
|
+
* @param {number} idx
|
556
|
+
* @param {number=} maxBytesToRead
|
557
|
+
* @return {string}
|
558
|
+
*/ var UTF8ArrayToString = (heapOrArray, idx, maxBytesToRead) => {
|
559
|
+
var endIdx = idx + maxBytesToRead;
|
560
|
+
var endPtr = idx;
|
561
|
+
// TextDecoder needs to know the byte length in advance, it doesn't stop on
|
562
|
+
// null terminator by itself. Also, use the length info to avoid running tiny
|
563
|
+
// strings through TextDecoder, since .subarray() allocates garbage.
|
564
|
+
// (As a tiny code save trick, compare endPtr against endIdx using a negation,
|
565
|
+
// so that undefined means Infinity)
|
566
|
+
while (heapOrArray[endPtr] && !(endPtr >= endIdx)) ++endPtr;
|
567
|
+
if (endPtr - idx > 16 && heapOrArray.buffer && UTF8Decoder) {
|
568
|
+
return UTF8Decoder.decode(heapOrArray.subarray(idx, endPtr));
|
569
|
+
}
|
570
|
+
var str = "";
|
571
|
+
// If building with TextDecoder, we have already computed the string length
|
572
|
+
// above, so test loop end condition against that
|
573
|
+
while (idx < endPtr) {
|
574
|
+
// For UTF8 byte structure, see:
|
575
|
+
// http://en.wikipedia.org/wiki/UTF-8#Description
|
576
|
+
// https://www.ietf.org/rfc/rfc2279.txt
|
577
|
+
// https://tools.ietf.org/html/rfc3629
|
578
|
+
var u0 = heapOrArray[idx++];
|
579
|
+
if (!(u0 & 128)) {
|
580
|
+
str += String.fromCharCode(u0);
|
581
|
+
continue;
|
582
|
+
}
|
583
|
+
var u1 = heapOrArray[idx++] & 63;
|
584
|
+
if ((u0 & 224) == 192) {
|
585
|
+
str += String.fromCharCode(((u0 & 31) << 6) | u1);
|
586
|
+
continue;
|
587
|
+
}
|
588
|
+
var u2 = heapOrArray[idx++] & 63;
|
589
|
+
if ((u0 & 240) == 224) {
|
590
|
+
u0 = ((u0 & 15) << 12) | (u1 << 6) | u2;
|
591
|
+
} else {
|
592
|
+
u0 = ((u0 & 7) << 18) | (u1 << 12) | (u2 << 6) | (heapOrArray[idx++] & 63);
|
593
|
+
}
|
594
|
+
if (u0 < 65536) {
|
595
|
+
str += String.fromCharCode(u0);
|
596
|
+
} else {
|
597
|
+
var ch = u0 - 65536;
|
598
|
+
str += String.fromCharCode(55296 | (ch >> 10), 56320 | (ch & 1023));
|
599
|
+
}
|
600
|
+
}
|
601
|
+
return str;
|
602
|
+
};
|
603
|
+
var getDylinkMetadata = binary => {
|
604
|
+
var offset = 0;
|
605
|
+
var end = 0;
|
606
|
+
function getU8() {
|
607
|
+
return binary[offset++];
|
608
|
+
}
|
609
|
+
function getLEB() {
|
610
|
+
var ret = 0;
|
611
|
+
var mul = 1;
|
612
|
+
while (1) {
|
613
|
+
var byte = binary[offset++];
|
614
|
+
ret += ((byte & 127) * mul);
|
615
|
+
mul *= 128;
|
616
|
+
if (!(byte & 128)) break;
|
617
|
+
}
|
618
|
+
return ret;
|
619
|
+
}
|
620
|
+
function getString() {
|
621
|
+
var len = getLEB();
|
622
|
+
offset += len;
|
623
|
+
return UTF8ArrayToString(binary, offset - len, len);
|
624
|
+
}
|
625
|
+
/** @param {string=} message */ function failIf(condition, message) {
|
626
|
+
if (condition) throw new Error(message);
|
627
|
+
}
|
628
|
+
var name = "dylink.0";
|
629
|
+
if (binary instanceof WebAssembly.Module) {
|
630
|
+
var dylinkSection = WebAssembly.Module.customSections(binary, name);
|
631
|
+
if (dylinkSection.length === 0) {
|
632
|
+
name = "dylink";
|
633
|
+
dylinkSection = WebAssembly.Module.customSections(binary, name);
|
634
|
+
}
|
635
|
+
failIf(dylinkSection.length === 0, "need dylink section");
|
636
|
+
binary = new Uint8Array(dylinkSection[0]);
|
637
|
+
end = binary.length;
|
638
|
+
} else {
|
639
|
+
var int32View = new Uint32Array(new Uint8Array(binary.subarray(0, 24)).buffer);
|
640
|
+
var magicNumberFound = int32View[0] == 1836278016 || int32View[0] == 6386541;
|
641
|
+
failIf(!magicNumberFound, "need to see wasm magic number");
|
642
|
+
// \0asm
|
643
|
+
// we should see the dylink custom section right after the magic number and wasm version
|
644
|
+
failIf(binary[8] !== 0, "need the dylink section to be first");
|
645
|
+
offset = 9;
|
646
|
+
var section_size = getLEB();
|
647
|
+
//section size
|
648
|
+
end = offset + section_size;
|
649
|
+
name = getString();
|
650
|
+
}
|
651
|
+
var customSection = {
|
652
|
+
neededDynlibs: [],
|
653
|
+
tlsExports: new Set,
|
654
|
+
weakImports: new Set
|
655
|
+
};
|
656
|
+
if (name == "dylink") {
|
657
|
+
customSection.memorySize = getLEB();
|
658
|
+
customSection.memoryAlign = getLEB();
|
659
|
+
customSection.tableSize = getLEB();
|
660
|
+
customSection.tableAlign = getLEB();
|
661
|
+
// shared libraries this module needs. We need to load them first, so that
|
662
|
+
// current module could resolve its imports. (see tools/shared.py
|
663
|
+
// WebAssembly.make_shared_library() for "dylink" section extension format)
|
664
|
+
var neededDynlibsCount = getLEB();
|
665
|
+
for (var i = 0; i < neededDynlibsCount; ++i) {
|
666
|
+
var libname = getString();
|
667
|
+
customSection.neededDynlibs.push(libname);
|
668
|
+
}
|
669
|
+
} else {
|
670
|
+
failIf(name !== "dylink.0");
|
671
|
+
var WASM_DYLINK_MEM_INFO = 1;
|
672
|
+
var WASM_DYLINK_NEEDED = 2;
|
673
|
+
var WASM_DYLINK_EXPORT_INFO = 3;
|
674
|
+
var WASM_DYLINK_IMPORT_INFO = 4;
|
675
|
+
var WASM_SYMBOL_TLS = 256;
|
676
|
+
var WASM_SYMBOL_BINDING_MASK = 3;
|
677
|
+
var WASM_SYMBOL_BINDING_WEAK = 1;
|
678
|
+
while (offset < end) {
|
679
|
+
var subsectionType = getU8();
|
680
|
+
var subsectionSize = getLEB();
|
681
|
+
if (subsectionType === WASM_DYLINK_MEM_INFO) {
|
682
|
+
customSection.memorySize = getLEB();
|
683
|
+
customSection.memoryAlign = getLEB();
|
684
|
+
customSection.tableSize = getLEB();
|
685
|
+
customSection.tableAlign = getLEB();
|
686
|
+
} else if (subsectionType === WASM_DYLINK_NEEDED) {
|
687
|
+
var neededDynlibsCount = getLEB();
|
688
|
+
for (var i = 0; i < neededDynlibsCount; ++i) {
|
689
|
+
libname = getString();
|
690
|
+
customSection.neededDynlibs.push(libname);
|
691
|
+
}
|
692
|
+
} else if (subsectionType === WASM_DYLINK_EXPORT_INFO) {
|
693
|
+
var count = getLEB();
|
694
|
+
while (count--) {
|
695
|
+
var symname = getString();
|
696
|
+
var flags = getLEB();
|
697
|
+
if (flags & WASM_SYMBOL_TLS) {
|
698
|
+
customSection.tlsExports.add(symname);
|
699
|
+
}
|
700
|
+
}
|
701
|
+
} else if (subsectionType === WASM_DYLINK_IMPORT_INFO) {
|
702
|
+
var count = getLEB();
|
703
|
+
while (count--) {
|
704
|
+
var modname = getString();
|
705
|
+
var symname = getString();
|
706
|
+
var flags = getLEB();
|
707
|
+
if ((flags & WASM_SYMBOL_BINDING_MASK) == WASM_SYMBOL_BINDING_WEAK) {
|
708
|
+
customSection.weakImports.add(symname);
|
709
|
+
}
|
710
|
+
}
|
711
|
+
} else {
|
712
|
+
// unknown subsection
|
713
|
+
offset += subsectionSize;
|
714
|
+
}
|
715
|
+
}
|
716
|
+
}
|
717
|
+
return customSection;
|
718
|
+
};
|
719
|
+
/**
|
720
|
+
* @param {number} ptr
|
721
|
+
* @param {string} type
|
722
|
+
*/ function getValue(ptr, type = "i8") {
|
723
|
+
if (type.endsWith("*")) type = "*";
|
724
|
+
switch (type) {
|
725
|
+
case "i1":
|
726
|
+
return HEAP8[ptr];
|
727
|
+
|
728
|
+
case "i8":
|
729
|
+
return HEAP8[ptr];
|
730
|
+
|
731
|
+
case "i16":
|
732
|
+
return LE_HEAP_LOAD_I16(((ptr) >> 1) * 2);
|
733
|
+
|
734
|
+
case "i32":
|
735
|
+
return LE_HEAP_LOAD_I32(((ptr) >> 2) * 4);
|
736
|
+
|
737
|
+
case "i64":
|
738
|
+
abort("to do getValue(i64) use WASM_BIGINT");
|
739
|
+
|
740
|
+
case "float":
|
741
|
+
return LE_HEAP_LOAD_F32(((ptr) >> 2) * 4);
|
742
|
+
|
743
|
+
case "double":
|
744
|
+
return LE_HEAP_LOAD_F64(((ptr) >> 3) * 8);
|
745
|
+
|
746
|
+
case "*":
|
747
|
+
return LE_HEAP_LOAD_U32(((ptr) >> 2) * 4);
|
748
|
+
|
749
|
+
default:
|
750
|
+
abort(`invalid type for getValue: ${type}`);
|
751
|
+
}
|
752
|
+
}
|
753
|
+
var newDSO = (name, handle, syms) => {
|
754
|
+
var dso = {
|
755
|
+
refcount: Infinity,
|
756
|
+
name: name,
|
757
|
+
exports: syms,
|
758
|
+
global: true
|
759
|
+
};
|
760
|
+
LDSO.loadedLibsByName[name] = dso;
|
761
|
+
if (handle != undefined) {
|
762
|
+
LDSO.loadedLibsByHandle[handle] = dso;
|
763
|
+
}
|
764
|
+
return dso;
|
765
|
+
};
|
766
|
+
var LDSO = {
|
767
|
+
loadedLibsByName: {},
|
768
|
+
loadedLibsByHandle: {},
|
769
|
+
init() {
|
770
|
+
newDSO("__main__", 0, wasmImports);
|
771
|
+
}
|
772
|
+
};
|
773
|
+
var ___heap_base = 78112;
|
774
|
+
var zeroMemory = (address, size) => {
|
775
|
+
HEAPU8.fill(0, address, address + size);
|
776
|
+
return address;
|
777
|
+
};
|
778
|
+
var alignMemory = (size, alignment) => Math.ceil(size / alignment) * alignment;
|
779
|
+
var getMemory = size => {
|
780
|
+
// After the runtime is initialized, we must only use sbrk() normally.
|
781
|
+
if (runtimeInitialized) {
|
782
|
+
// Currently we don't support freeing of static data when modules are
|
783
|
+
// unloaded via dlclose. This function is tagged as `noleakcheck` to
|
784
|
+
// avoid having this reported as leak.
|
785
|
+
return zeroMemory(_malloc(size), size);
|
786
|
+
}
|
787
|
+
var ret = ___heap_base;
|
788
|
+
// Keep __heap_base stack aligned.
|
789
|
+
var end = ret + alignMemory(size, 16);
|
790
|
+
___heap_base = end;
|
791
|
+
GOT["__heap_base"].value = end;
|
792
|
+
return ret;
|
793
|
+
};
|
794
|
+
var isInternalSym = 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__");
|
795
|
+
var uleb128Encode = (n, target) => {
|
796
|
+
if (n < 128) {
|
797
|
+
target.push(n);
|
798
|
+
} else {
|
799
|
+
target.push((n % 128) | 128, n >> 7);
|
800
|
+
}
|
801
|
+
};
|
802
|
+
var sigToWasmTypes = sig => {
|
803
|
+
var typeNames = {
|
804
|
+
"i": "i32",
|
805
|
+
"j": "i64",
|
806
|
+
"f": "f32",
|
807
|
+
"d": "f64",
|
808
|
+
"e": "externref",
|
809
|
+
"p": "i32"
|
810
|
+
};
|
811
|
+
var type = {
|
812
|
+
parameters: [],
|
813
|
+
results: sig[0] == "v" ? [] : [ typeNames[sig[0]] ]
|
814
|
+
};
|
815
|
+
for (var i = 1; i < sig.length; ++i) {
|
816
|
+
type.parameters.push(typeNames[sig[i]]);
|
817
|
+
}
|
818
|
+
return type;
|
819
|
+
};
|
820
|
+
var generateFuncType = (sig, target) => {
|
821
|
+
var sigRet = sig.slice(0, 1);
|
822
|
+
var sigParam = sig.slice(1);
|
823
|
+
var typeCodes = {
|
824
|
+
"i": 127,
|
825
|
+
// i32
|
826
|
+
"p": 127,
|
827
|
+
// i32
|
828
|
+
"j": 126,
|
829
|
+
// i64
|
830
|
+
"f": 125,
|
831
|
+
// f32
|
832
|
+
"d": 124,
|
833
|
+
// f64
|
834
|
+
"e": 111
|
835
|
+
};
|
836
|
+
// Parameters, length + signatures
|
837
|
+
target.push(96);
|
838
|
+
/* form: func */ uleb128Encode(sigParam.length, target);
|
839
|
+
for (var i = 0; i < sigParam.length; ++i) {
|
840
|
+
target.push(typeCodes[sigParam[i]]);
|
841
|
+
}
|
842
|
+
// Return values, length + signatures
|
843
|
+
// With no multi-return in MVP, either 0 (void) or 1 (anything else)
|
844
|
+
if (sigRet == "v") {
|
845
|
+
target.push(0);
|
846
|
+
} else {
|
847
|
+
target.push(1, typeCodes[sigRet]);
|
848
|
+
}
|
849
|
+
};
|
850
|
+
var convertJsFunctionToWasm = (func, sig) => {
|
851
|
+
// If the type reflection proposal is available, use the new
|
852
|
+
// "WebAssembly.Function" constructor.
|
853
|
+
// Otherwise, construct a minimal wasm module importing the JS function and
|
854
|
+
// re-exporting it.
|
855
|
+
if (typeof WebAssembly.Function == "function") {
|
856
|
+
return new WebAssembly.Function(sigToWasmTypes(sig), func);
|
857
|
+
}
|
858
|
+
// The module is static, with the exception of the type section, which is
|
859
|
+
// generated based on the signature passed in.
|
860
|
+
var typeSectionBody = [ 1 ];
|
861
|
+
// count: 1
|
862
|
+
generateFuncType(sig, typeSectionBody);
|
863
|
+
// Rest of the module is static
|
864
|
+
var bytes = [ 0, 97, 115, 109, // magic ("\0asm")
|
865
|
+
1, 0, 0, 0, // version: 1
|
866
|
+
1 ];
|
867
|
+
// Write the overall length of the type section followed by the body
|
868
|
+
uleb128Encode(typeSectionBody.length, bytes);
|
869
|
+
bytes.push(...typeSectionBody);
|
870
|
+
// The rest of the module is static
|
871
|
+
bytes.push(2, 7, // import section
|
872
|
+
// (import "e" "f" (func 0 (type 0)))
|
873
|
+
1, 1, 101, 1, 102, 0, 0, 7, 5, // export section
|
874
|
+
// (export "f" (func 0 (type 0)))
|
875
|
+
1, 1, 102, 0, 0);
|
876
|
+
// We can compile this wasm module synchronously because it is very small.
|
877
|
+
// This accepts an import (at "e.f"), that it reroutes to an export (at "f")
|
878
|
+
var module = new WebAssembly.Module(new Uint8Array(bytes));
|
879
|
+
var instance = new WebAssembly.Instance(module, {
|
880
|
+
"e": {
|
881
|
+
"f": func
|
882
|
+
}
|
883
|
+
});
|
884
|
+
var wrappedFunc = instance.exports["f"];
|
885
|
+
return wrappedFunc;
|
886
|
+
};
|
887
|
+
var wasmTableMirror = [];
|
888
|
+
/** @type {WebAssembly.Table} */ var wasmTable = new WebAssembly.Table({
|
889
|
+
"initial": 28,
|
890
|
+
"element": "anyfunc"
|
891
|
+
});
|
892
|
+
var getWasmTableEntry = funcPtr => {
|
893
|
+
var func = wasmTableMirror[funcPtr];
|
894
|
+
if (!func) {
|
895
|
+
if (funcPtr >= wasmTableMirror.length) wasmTableMirror.length = funcPtr + 1;
|
896
|
+
wasmTableMirror[funcPtr] = func = wasmTable.get(funcPtr);
|
897
|
+
}
|
898
|
+
return func;
|
899
|
+
};
|
900
|
+
var updateTableMap = (offset, count) => {
|
901
|
+
if (functionsInTableMap) {
|
902
|
+
for (var i = offset; i < offset + count; i++) {
|
903
|
+
var item = getWasmTableEntry(i);
|
904
|
+
// Ignore null values.
|
905
|
+
if (item) {
|
906
|
+
functionsInTableMap.set(item, i);
|
907
|
+
}
|
908
|
+
}
|
909
|
+
}
|
910
|
+
};
|
911
|
+
var functionsInTableMap;
|
912
|
+
var getFunctionAddress = func => {
|
913
|
+
// First, create the map if this is the first use.
|
914
|
+
if (!functionsInTableMap) {
|
915
|
+
functionsInTableMap = new WeakMap;
|
916
|
+
updateTableMap(0, wasmTable.length);
|
917
|
+
}
|
918
|
+
return functionsInTableMap.get(func) || 0;
|
919
|
+
};
|
920
|
+
var freeTableIndexes = [];
|
921
|
+
var getEmptyTableSlot = () => {
|
922
|
+
// Reuse a free index if there is one, otherwise grow.
|
923
|
+
if (freeTableIndexes.length) {
|
924
|
+
return freeTableIndexes.pop();
|
925
|
+
}
|
926
|
+
// Grow the table
|
927
|
+
try {
|
928
|
+
wasmTable.grow(1);
|
929
|
+
} catch (err) {
|
930
|
+
if (!(err instanceof RangeError)) {
|
931
|
+
throw err;
|
932
|
+
}
|
933
|
+
throw "Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";
|
934
|
+
}
|
935
|
+
return wasmTable.length - 1;
|
936
|
+
};
|
937
|
+
var setWasmTableEntry = (idx, func) => {
|
938
|
+
wasmTable.set(idx, func);
|
939
|
+
// With ABORT_ON_WASM_EXCEPTIONS wasmTable.get is overridden to return wrapped
|
940
|
+
// functions so we need to call it here to retrieve the potential wrapper correctly
|
941
|
+
// instead of just storing 'func' directly into wasmTableMirror
|
942
|
+
wasmTableMirror[idx] = wasmTable.get(idx);
|
943
|
+
};
|
944
|
+
/** @param {string=} sig */ var addFunction = (func, sig) => {
|
945
|
+
// Check if the function is already in the table, to ensure each function
|
946
|
+
// gets a unique index.
|
947
|
+
var rtn = getFunctionAddress(func);
|
948
|
+
if (rtn) {
|
949
|
+
return rtn;
|
950
|
+
}
|
951
|
+
// It's not in the table, add it now.
|
952
|
+
var ret = getEmptyTableSlot();
|
953
|
+
// Set the new value.
|
954
|
+
try {
|
955
|
+
// Attempting to call this with JS function will cause of table.set() to fail
|
956
|
+
setWasmTableEntry(ret, func);
|
957
|
+
} catch (err) {
|
958
|
+
if (!(err instanceof TypeError)) {
|
959
|
+
throw err;
|
960
|
+
}
|
961
|
+
var wrapped = convertJsFunctionToWasm(func, sig);
|
962
|
+
setWasmTableEntry(ret, wrapped);
|
963
|
+
}
|
964
|
+
functionsInTableMap.set(func, ret);
|
965
|
+
return ret;
|
966
|
+
};
|
967
|
+
var updateGOT = (exports, replace) => {
|
968
|
+
for (var symName in exports) {
|
969
|
+
if (isInternalSym(symName)) {
|
970
|
+
continue;
|
971
|
+
}
|
972
|
+
var value = exports[symName];
|
973
|
+
if (symName.startsWith("orig$")) {
|
974
|
+
symName = symName.split("$")[1];
|
975
|
+
replace = true;
|
976
|
+
}
|
977
|
+
GOT[symName] ||= new WebAssembly.Global({
|
978
|
+
"value": "i32",
|
979
|
+
"mutable": true
|
980
|
+
});
|
981
|
+
if (replace || GOT[symName].value == 0) {
|
982
|
+
if (typeof value == "function") {
|
983
|
+
GOT[symName].value = addFunction(value);
|
984
|
+
} else if (typeof value == "number") {
|
985
|
+
GOT[symName].value = value;
|
986
|
+
} else {
|
987
|
+
err(`unhandled export type for '${symName}': ${typeof value}`);
|
988
|
+
}
|
989
|
+
}
|
990
|
+
}
|
991
|
+
};
|
992
|
+
/** @param {boolean=} replace */ var relocateExports = (exports, memoryBase, replace) => {
|
993
|
+
var relocated = {};
|
994
|
+
for (var e in exports) {
|
995
|
+
var value = exports[e];
|
996
|
+
if (typeof value == "object") {
|
997
|
+
// a breaking change in the wasm spec, globals are now objects
|
998
|
+
// https://github.com/WebAssembly/mutable-global/issues/1
|
999
|
+
value = value.value;
|
1000
|
+
}
|
1001
|
+
if (typeof value == "number") {
|
1002
|
+
value += memoryBase;
|
1003
|
+
}
|
1004
|
+
relocated[e] = value;
|
1005
|
+
}
|
1006
|
+
updateGOT(relocated, replace);
|
1007
|
+
return relocated;
|
1008
|
+
};
|
1009
|
+
var isSymbolDefined = symName => {
|
1010
|
+
// Ignore 'stub' symbols that are auto-generated as part of the original
|
1011
|
+
// `wasmImports` used to instantiate the main module.
|
1012
|
+
var existing = wasmImports[symName];
|
1013
|
+
if (!existing || existing.stub) {
|
1014
|
+
return false;
|
1015
|
+
}
|
1016
|
+
return true;
|
1017
|
+
};
|
1018
|
+
var dynCallLegacy = (sig, ptr, args) => {
|
1019
|
+
sig = sig.replace(/p/g, "i");
|
1020
|
+
var f = Module["dynCall_" + sig];
|
1021
|
+
return f(ptr, ...args);
|
1022
|
+
};
|
1023
|
+
var dynCall = (sig, ptr, args = []) => {
|
1024
|
+
// Without WASM_BIGINT support we cannot directly call function with i64 as
|
1025
|
+
// part of their signature, so we rely on the dynCall functions generated by
|
1026
|
+
// wasm-emscripten-finalize
|
1027
|
+
if (sig.includes("j")) {
|
1028
|
+
return dynCallLegacy(sig, ptr, args);
|
1029
|
+
}
|
1030
|
+
var rtn = getWasmTableEntry(ptr)(...args);
|
1031
|
+
return rtn;
|
1032
|
+
};
|
1033
|
+
var stackSave = () => _emscripten_stack_get_current();
|
1034
|
+
var stackRestore = val => __emscripten_stack_restore(val);
|
1035
|
+
var createInvokeFunction = sig => (ptr, ...args) => {
|
1036
|
+
var sp = stackSave();
|
1037
|
+
try {
|
1038
|
+
return dynCall(sig, ptr, args);
|
1039
|
+
} catch (e) {
|
1040
|
+
stackRestore(sp);
|
1041
|
+
// Create a try-catch guard that rethrows the Emscripten EH exception.
|
1042
|
+
// Exceptions thrown from C++ will be a pointer (number) and longjmp
|
1043
|
+
// will throw the number Infinity. Use the compact and fast "e !== e+0"
|
1044
|
+
// test to check if e was not a Number.
|
1045
|
+
if (e !== e + 0) throw e;
|
1046
|
+
_setThrew(1, 0);
|
1047
|
+
}
|
1048
|
+
};
|
1049
|
+
var resolveGlobalSymbol = (symName, direct = false) => {
|
1050
|
+
var sym;
|
1051
|
+
// First look for the orig$ symbol which is the symbol without i64
|
1052
|
+
// legalization performed.
|
1053
|
+
if (direct && ("orig$" + symName in wasmImports)) {
|
1054
|
+
symName = "orig$" + symName;
|
1055
|
+
}
|
1056
|
+
if (isSymbolDefined(symName)) {
|
1057
|
+
sym = wasmImports[symName];
|
1058
|
+
} else // Asm.js-style exception handling: invoke wrapper generation
|
1059
|
+
if (symName.startsWith("invoke_")) {
|
1060
|
+
// Create (and cache) new invoke_ functions on demand.
|
1061
|
+
sym = wasmImports[symName] = createInvokeFunction(symName.split("_")[1]);
|
1062
|
+
}
|
1063
|
+
return {
|
1064
|
+
sym: sym,
|
1065
|
+
name: symName
|
1066
|
+
};
|
1067
|
+
};
|
1068
|
+
/**
|
1069
|
+
* Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the
|
1070
|
+
* emscripten HEAP, returns a copy of that string as a Javascript String object.
|
1071
|
+
*
|
1072
|
+
* @param {number} ptr
|
1073
|
+
* @param {number=} maxBytesToRead - An optional length that specifies the
|
1074
|
+
* maximum number of bytes to read. You can omit this parameter to scan the
|
1075
|
+
* string until the first 0 byte. If maxBytesToRead is passed, and the string
|
1076
|
+
* at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the
|
1077
|
+
* string will cut short at that byte index (i.e. maxBytesToRead will not
|
1078
|
+
* produce a string of exact length [ptr, ptr+maxBytesToRead[) N.B. mixing
|
1079
|
+
* frequent uses of UTF8ToString() with and without maxBytesToRead may throw
|
1080
|
+
* JS JIT optimizations off, so it is worth to consider consistently using one
|
1081
|
+
* @return {string}
|
1082
|
+
*/ var UTF8ToString = (ptr, maxBytesToRead) => ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
|
1083
|
+
/**
|
1084
|
+
* @param {string=} libName
|
1085
|
+
* @param {Object=} localScope
|
1086
|
+
* @param {number=} handle
|
1087
|
+
*/ var loadWebAssemblyModule = (binary, flags, libName, localScope, handle) => {
|
1088
|
+
var metadata = getDylinkMetadata(binary);
|
1089
|
+
currentModuleWeakSymbols = metadata.weakImports;
|
1090
|
+
// loadModule loads the wasm module after all its dependencies have been loaded.
|
1091
|
+
// can be called both sync/async.
|
1092
|
+
function loadModule() {
|
1093
|
+
// The first thread to load a given module needs to allocate the static
|
1094
|
+
// table and memory regions. Later threads re-use the same table region
|
1095
|
+
// and can ignore the memory region (since memory is shared between
|
1096
|
+
// threads already).
|
1097
|
+
// If `handle` is specified than it is assumed that the calling thread has
|
1098
|
+
// exclusive access to it for the duration of this function. See the
|
1099
|
+
// locking in `dynlink.c`.
|
1100
|
+
var firstLoad = !handle || !HEAP8[(handle) + (8)];
|
1101
|
+
if (firstLoad) {
|
1102
|
+
// alignments are powers of 2
|
1103
|
+
var memAlign = Math.pow(2, metadata.memoryAlign);
|
1104
|
+
// prepare memory
|
1105
|
+
var memoryBase = metadata.memorySize ? alignMemory(getMemory(metadata.memorySize + memAlign), memAlign) : 0;
|
1106
|
+
// TODO: add to cleanups
|
1107
|
+
var tableBase = metadata.tableSize ? wasmTable.length : 0;
|
1108
|
+
if (handle) {
|
1109
|
+
HEAP8[(handle) + (8)] = 1;
|
1110
|
+
LE_HEAP_STORE_U32((((handle) + (12)) >> 2) * 4, memoryBase);
|
1111
|
+
LE_HEAP_STORE_I32((((handle) + (16)) >> 2) * 4, metadata.memorySize);
|
1112
|
+
LE_HEAP_STORE_U32((((handle) + (20)) >> 2) * 4, tableBase);
|
1113
|
+
LE_HEAP_STORE_I32((((handle) + (24)) >> 2) * 4, metadata.tableSize);
|
1114
|
+
}
|
1115
|
+
} else {
|
1116
|
+
memoryBase = LE_HEAP_LOAD_U32((((handle) + (12)) >> 2) * 4);
|
1117
|
+
tableBase = LE_HEAP_LOAD_U32((((handle) + (20)) >> 2) * 4);
|
1118
|
+
}
|
1119
|
+
var tableGrowthNeeded = tableBase + metadata.tableSize - wasmTable.length;
|
1120
|
+
if (tableGrowthNeeded > 0) {
|
1121
|
+
wasmTable.grow(tableGrowthNeeded);
|
1122
|
+
}
|
1123
|
+
// This is the export map that we ultimately return. We declare it here
|
1124
|
+
// so it can be used within resolveSymbol. We resolve symbols against
|
1125
|
+
// this local symbol map in the case there they are not present on the
|
1126
|
+
// global Module object. We need this fallback because Modules sometime
|
1127
|
+
// need to import their own symbols
|
1128
|
+
var moduleExports;
|
1129
|
+
function resolveSymbol(sym) {
|
1130
|
+
var resolved = resolveGlobalSymbol(sym).sym;
|
1131
|
+
if (!resolved && localScope) {
|
1132
|
+
resolved = localScope[sym];
|
1133
|
+
}
|
1134
|
+
if (!resolved) {
|
1135
|
+
resolved = moduleExports[sym];
|
1136
|
+
}
|
1137
|
+
return resolved;
|
1138
|
+
}
|
1139
|
+
// TODO kill ↓↓↓ (except "symbols local to this module", it will likely be
|
1140
|
+
// not needed if we require that if A wants symbols from B it has to link
|
1141
|
+
// to B explicitly: similarly to -Wl,--no-undefined)
|
1142
|
+
// wasm dynamic libraries are pure wasm, so they cannot assist in
|
1143
|
+
// their own loading. When side module A wants to import something
|
1144
|
+
// provided by a side module B that is loaded later, we need to
|
1145
|
+
// add a layer of indirection, but worse, we can't even tell what
|
1146
|
+
// to add the indirection for, without inspecting what A's imports
|
1147
|
+
// are. To do that here, we use a JS proxy (another option would
|
1148
|
+
// be to inspect the binary directly).
|
1149
|
+
var proxyHandler = {
|
1150
|
+
get(stubs, prop) {
|
1151
|
+
// symbols that should be local to this module
|
1152
|
+
switch (prop) {
|
1153
|
+
case "__memory_base":
|
1154
|
+
return memoryBase;
|
1155
|
+
|
1156
|
+
case "__table_base":
|
1157
|
+
return tableBase;
|
1158
|
+
}
|
1159
|
+
if (prop in wasmImports && !wasmImports[prop].stub) {
|
1160
|
+
// No stub needed, symbol already exists in symbol table
|
1161
|
+
return wasmImports[prop];
|
1162
|
+
}
|
1163
|
+
// Return a stub function that will resolve the symbol
|
1164
|
+
// when first called.
|
1165
|
+
if (!(prop in stubs)) {
|
1166
|
+
var resolved;
|
1167
|
+
stubs[prop] = (...args) => {
|
1168
|
+
resolved ||= resolveSymbol(prop);
|
1169
|
+
return resolved(...args);
|
1170
|
+
};
|
1171
|
+
}
|
1172
|
+
return stubs[prop];
|
1173
|
+
}
|
1174
|
+
};
|
1175
|
+
var proxy = new Proxy({}, proxyHandler);
|
1176
|
+
var info = {
|
1177
|
+
"GOT.mem": new Proxy({}, GOTHandler),
|
1178
|
+
"GOT.func": new Proxy({}, GOTHandler),
|
1179
|
+
"env": proxy,
|
1180
|
+
"wasi_snapshot_preview1": proxy
|
1181
|
+
};
|
1182
|
+
function postInstantiation(module, instance) {
|
1183
|
+
// add new entries to functionsInTableMap
|
1184
|
+
updateTableMap(tableBase, metadata.tableSize);
|
1185
|
+
moduleExports = relocateExports(instance.exports, memoryBase);
|
1186
|
+
if (!flags.allowUndefined) {
|
1187
|
+
reportUndefinedSymbols();
|
1188
|
+
}
|
1189
|
+
function addEmAsm(addr, body) {
|
1190
|
+
var args = [];
|
1191
|
+
var arity = 0;
|
1192
|
+
for (;arity < 16; arity++) {
|
1193
|
+
if (body.indexOf("$" + arity) != -1) {
|
1194
|
+
args.push("$" + arity);
|
1195
|
+
} else {
|
1196
|
+
break;
|
1197
|
+
}
|
1198
|
+
}
|
1199
|
+
args = args.join(",");
|
1200
|
+
var func = `(${args}) => { ${body} };`;
|
1201
|
+
ASM_CONSTS[start] = eval(func);
|
1202
|
+
}
|
1203
|
+
// Add any EM_ASM function that exist in the side module
|
1204
|
+
if ("__start_em_asm" in moduleExports) {
|
1205
|
+
var start = moduleExports["__start_em_asm"];
|
1206
|
+
var stop = moduleExports["__stop_em_asm"];
|
1207
|
+
while (start < stop) {
|
1208
|
+
var jsString = UTF8ToString(start);
|
1209
|
+
addEmAsm(start, jsString);
|
1210
|
+
start = HEAPU8.indexOf(0, start) + 1;
|
1211
|
+
}
|
1212
|
+
}
|
1213
|
+
function addEmJs(name, cSig, body) {
|
1214
|
+
// The signature here is a C signature (e.g. "(int foo, char* bar)").
|
1215
|
+
// See `create_em_js` in emcc.py` for the build-time version of this
|
1216
|
+
// code.
|
1217
|
+
var jsArgs = [];
|
1218
|
+
cSig = cSig.slice(1, -1);
|
1219
|
+
if (cSig != "void") {
|
1220
|
+
cSig = cSig.split(",");
|
1221
|
+
for (var i in cSig) {
|
1222
|
+
var jsArg = cSig[i].split(" ").pop();
|
1223
|
+
jsArgs.push(jsArg.replace("*", ""));
|
1224
|
+
}
|
1225
|
+
}
|
1226
|
+
var func = `(${jsArgs}) => ${body};`;
|
1227
|
+
moduleExports[name] = eval(func);
|
1228
|
+
}
|
1229
|
+
for (var name in moduleExports) {
|
1230
|
+
if (name.startsWith("__em_js__")) {
|
1231
|
+
var start = moduleExports[name];
|
1232
|
+
var jsString = UTF8ToString(start);
|
1233
|
+
// EM_JS strings are stored in the data section in the form
|
1234
|
+
// SIG<::>BODY.
|
1235
|
+
var parts = jsString.split("<::>");
|
1236
|
+
addEmJs(name.replace("__em_js__", ""), parts[0], parts[1]);
|
1237
|
+
delete moduleExports[name];
|
1238
|
+
}
|
1239
|
+
}
|
1240
|
+
// initialize the module
|
1241
|
+
var applyRelocs = moduleExports["__wasm_apply_data_relocs"];
|
1242
|
+
if (applyRelocs) {
|
1243
|
+
if (runtimeInitialized) {
|
1244
|
+
applyRelocs();
|
1245
|
+
} else {
|
1246
|
+
__RELOC_FUNCS__.push(applyRelocs);
|
1247
|
+
}
|
1248
|
+
}
|
1249
|
+
var init = moduleExports["__wasm_call_ctors"];
|
1250
|
+
if (init) {
|
1251
|
+
if (runtimeInitialized) {
|
1252
|
+
init();
|
1253
|
+
} else {
|
1254
|
+
// we aren't ready to run compiled code yet
|
1255
|
+
__ATINIT__.push(init);
|
1256
|
+
}
|
1257
|
+
}
|
1258
|
+
return moduleExports;
|
1259
|
+
}
|
1260
|
+
if (flags.loadAsync) {
|
1261
|
+
if (binary instanceof WebAssembly.Module) {
|
1262
|
+
var instance = new WebAssembly.Instance(binary, info);
|
1263
|
+
return Promise.resolve(postInstantiation(binary, instance));
|
1264
|
+
}
|
1265
|
+
return WebAssembly.instantiate(binary, info).then(result => postInstantiation(result.module, result.instance));
|
1266
|
+
}
|
1267
|
+
var module = binary instanceof WebAssembly.Module ? binary : new WebAssembly.Module(binary);
|
1268
|
+
var instance = new WebAssembly.Instance(module, info);
|
1269
|
+
return postInstantiation(module, instance);
|
1270
|
+
}
|
1271
|
+
// now load needed libraries and the module itself.
|
1272
|
+
if (flags.loadAsync) {
|
1273
|
+
return metadata.neededDynlibs.reduce((chain, dynNeeded) => chain.then(() => loadDynamicLibrary(dynNeeded, flags, localScope)), Promise.resolve()).then(loadModule);
|
1274
|
+
}
|
1275
|
+
metadata.neededDynlibs.forEach(needed => loadDynamicLibrary(needed, flags, localScope));
|
1276
|
+
return loadModule();
|
1277
|
+
};
|
1278
|
+
var mergeLibSymbols = (exports, libName) => {
|
1279
|
+
// add symbols into global namespace TODO: weak linking etc.
|
1280
|
+
for (var [sym, exp] of Object.entries(exports)) {
|
1281
|
+
// When RTLD_GLOBAL is enabled, the symbols defined by this shared object
|
1282
|
+
// will be made available for symbol resolution of subsequently loaded
|
1283
|
+
// shared objects.
|
1284
|
+
// We should copy the symbols (which include methods and variables) from
|
1285
|
+
// SIDE_MODULE to MAIN_MODULE.
|
1286
|
+
const setImport = target => {
|
1287
|
+
if (!isSymbolDefined(target)) {
|
1288
|
+
wasmImports[target] = exp;
|
1289
|
+
}
|
1290
|
+
};
|
1291
|
+
setImport(sym);
|
1292
|
+
// Special case for handling of main symbol: If a side module exports
|
1293
|
+
// `main` that also acts a definition for `__main_argc_argv` and vice
|
1294
|
+
// versa.
|
1295
|
+
const main_alias = "__main_argc_argv";
|
1296
|
+
if (sym == "main") {
|
1297
|
+
setImport(main_alias);
|
1298
|
+
}
|
1299
|
+
if (sym == main_alias) {
|
1300
|
+
setImport("main");
|
1301
|
+
}
|
1302
|
+
if (sym.startsWith("dynCall_") && !Module.hasOwnProperty(sym)) {
|
1303
|
+
Module[sym] = exp;
|
1304
|
+
}
|
1305
|
+
}
|
1306
|
+
};
|
1307
|
+
/** @param {boolean=} noRunDep */ var asyncLoad = (url, onload, onerror, noRunDep) => {
|
1308
|
+
var dep = !noRunDep ? getUniqueRunDependency(`al ${url}`) : "";
|
1309
|
+
readAsync(url).then(arrayBuffer => {
|
1310
|
+
onload(new Uint8Array(arrayBuffer));
|
1311
|
+
if (dep) removeRunDependency(dep);
|
1312
|
+
}, err => {
|
1313
|
+
if (onerror) {
|
1314
|
+
onerror();
|
1315
|
+
} else {
|
1316
|
+
throw `Loading data file "${url}" failed.`;
|
1317
|
+
}
|
1318
|
+
});
|
1319
|
+
if (dep) addRunDependency(dep);
|
1320
|
+
};
|
1321
|
+
/**
|
1322
|
+
* @param {number=} handle
|
1323
|
+
* @param {Object=} localScope
|
1324
|
+
*/ function loadDynamicLibrary(libName, flags = {
|
1325
|
+
global: true,
|
1326
|
+
nodelete: true
|
1327
|
+
}, localScope, handle) {
|
1328
|
+
// when loadDynamicLibrary did not have flags, libraries were loaded
|
1329
|
+
// globally & permanently
|
1330
|
+
var dso = LDSO.loadedLibsByName[libName];
|
1331
|
+
if (dso) {
|
1332
|
+
// the library is being loaded or has been loaded already.
|
1333
|
+
if (!flags.global) {
|
1334
|
+
if (localScope) {
|
1335
|
+
Object.assign(localScope, dso.exports);
|
1336
|
+
}
|
1337
|
+
} else if (!dso.global) {
|
1338
|
+
// The library was previously loaded only locally but not
|
1339
|
+
// we have a request with global=true.
|
1340
|
+
dso.global = true;
|
1341
|
+
mergeLibSymbols(dso.exports, libName);
|
1342
|
+
}
|
1343
|
+
// same for "nodelete"
|
1344
|
+
if (flags.nodelete && dso.refcount !== Infinity) {
|
1345
|
+
dso.refcount = Infinity;
|
1346
|
+
}
|
1347
|
+
dso.refcount++;
|
1348
|
+
if (handle) {
|
1349
|
+
LDSO.loadedLibsByHandle[handle] = dso;
|
1350
|
+
}
|
1351
|
+
return flags.loadAsync ? Promise.resolve(true) : true;
|
1352
|
+
}
|
1353
|
+
// allocate new DSO
|
1354
|
+
dso = newDSO(libName, handle, "loading");
|
1355
|
+
dso.refcount = flags.nodelete ? Infinity : 1;
|
1356
|
+
dso.global = flags.global;
|
1357
|
+
// libName -> libData
|
1358
|
+
function loadLibData() {
|
1359
|
+
// for wasm, we can use fetch for async, but for fs mode we can only imitate it
|
1360
|
+
if (handle) {
|
1361
|
+
var data = LE_HEAP_LOAD_U32((((handle) + (28)) >> 2) * 4);
|
1362
|
+
var dataSize = LE_HEAP_LOAD_U32((((handle) + (32)) >> 2) * 4);
|
1363
|
+
if (data && dataSize) {
|
1364
|
+
var libData = HEAP8.slice(data, data + dataSize);
|
1365
|
+
return flags.loadAsync ? Promise.resolve(libData) : libData;
|
1366
|
+
}
|
1367
|
+
}
|
1368
|
+
var libFile = locateFile(libName);
|
1369
|
+
if (flags.loadAsync) {
|
1370
|
+
return new Promise(function(resolve, reject) {
|
1371
|
+
asyncLoad(libFile, resolve, reject);
|
1372
|
+
});
|
1373
|
+
}
|
1374
|
+
// load the binary synchronously
|
1375
|
+
if (!readBinary) {
|
1376
|
+
throw new Error(`${libFile}: file not found, and synchronous loading of external files is not available`);
|
1377
|
+
}
|
1378
|
+
return readBinary(libFile);
|
1379
|
+
}
|
1380
|
+
// libName -> exports
|
1381
|
+
function getExports() {
|
1382
|
+
// module not preloaded - load lib data and create new module from it
|
1383
|
+
if (flags.loadAsync) {
|
1384
|
+
return loadLibData().then(libData => loadWebAssemblyModule(libData, flags, libName, localScope, handle));
|
1385
|
+
}
|
1386
|
+
return loadWebAssemblyModule(loadLibData(), flags, libName, localScope, handle);
|
1387
|
+
}
|
1388
|
+
// module for lib is loaded - update the dso & global namespace
|
1389
|
+
function moduleLoaded(exports) {
|
1390
|
+
if (dso.global) {
|
1391
|
+
mergeLibSymbols(exports, libName);
|
1392
|
+
} else if (localScope) {
|
1393
|
+
Object.assign(localScope, exports);
|
1394
|
+
}
|
1395
|
+
dso.exports = exports;
|
1396
|
+
}
|
1397
|
+
if (flags.loadAsync) {
|
1398
|
+
return getExports().then(exports => {
|
1399
|
+
moduleLoaded(exports);
|
1400
|
+
return true;
|
1401
|
+
});
|
1402
|
+
}
|
1403
|
+
moduleLoaded(getExports());
|
1404
|
+
return true;
|
1405
|
+
}
|
1406
|
+
var reportUndefinedSymbols = () => {
|
1407
|
+
for (var [symName, entry] of Object.entries(GOT)) {
|
1408
|
+
if (entry.value == 0) {
|
1409
|
+
var value = resolveGlobalSymbol(symName, true).sym;
|
1410
|
+
if (!value && !entry.required) {
|
1411
|
+
// Ignore undefined symbols that are imported as weak.
|
1412
|
+
continue;
|
1413
|
+
}
|
1414
|
+
if (typeof value == "function") {
|
1415
|
+
/** @suppress {checkTypes} */ entry.value = addFunction(value, value.sig);
|
1416
|
+
} else if (typeof value == "number") {
|
1417
|
+
entry.value = value;
|
1418
|
+
} else {
|
1419
|
+
throw new Error(`bad export type for '${symName}': ${typeof value}`);
|
1420
|
+
}
|
1421
|
+
}
|
1422
|
+
}
|
1423
|
+
};
|
1424
|
+
var loadDylibs = () => {
|
1425
|
+
if (!dynamicLibraries.length) {
|
1426
|
+
reportUndefinedSymbols();
|
1427
|
+
return;
|
1428
|
+
}
|
1429
|
+
// Load binaries asynchronously
|
1430
|
+
addRunDependency("loadDylibs");
|
1431
|
+
dynamicLibraries.reduce((chain, lib) => chain.then(() => loadDynamicLibrary(lib, {
|
1432
|
+
loadAsync: true,
|
1433
|
+
global: true,
|
1434
|
+
nodelete: true,
|
1435
|
+
allowUndefined: true
|
1436
|
+
})), Promise.resolve()).then(() => {
|
1437
|
+
// we got them all, wonderful
|
1438
|
+
reportUndefinedSymbols();
|
1439
|
+
removeRunDependency("loadDylibs");
|
1440
|
+
});
|
1441
|
+
};
|
1442
|
+
var noExitRuntime = Module["noExitRuntime"] || true;
|
1443
|
+
/**
|
1444
|
+
* @param {number} ptr
|
1445
|
+
* @param {number} value
|
1446
|
+
* @param {string} type
|
1447
|
+
*/ function setValue(ptr, value, type = "i8") {
|
1448
|
+
if (type.endsWith("*")) type = "*";
|
1449
|
+
switch (type) {
|
1450
|
+
case "i1":
|
1451
|
+
HEAP8[ptr] = value;
|
1452
|
+
break;
|
1453
|
+
|
1454
|
+
case "i8":
|
1455
|
+
HEAP8[ptr] = value;
|
1456
|
+
break;
|
1457
|
+
|
1458
|
+
case "i16":
|
1459
|
+
LE_HEAP_STORE_I16(((ptr) >> 1) * 2, value);
|
1460
|
+
break;
|
1461
|
+
|
1462
|
+
case "i32":
|
1463
|
+
LE_HEAP_STORE_I32(((ptr) >> 2) * 4, value);
|
1464
|
+
break;
|
1465
|
+
|
1466
|
+
case "i64":
|
1467
|
+
abort("to do setValue(i64) use WASM_BIGINT");
|
1468
|
+
|
1469
|
+
case "float":
|
1470
|
+
LE_HEAP_STORE_F32(((ptr) >> 2) * 4, value);
|
1471
|
+
break;
|
1472
|
+
|
1473
|
+
case "double":
|
1474
|
+
LE_HEAP_STORE_F64(((ptr) >> 3) * 8, value);
|
1475
|
+
break;
|
1476
|
+
|
1477
|
+
case "*":
|
1478
|
+
LE_HEAP_STORE_U32(((ptr) >> 2) * 4, value);
|
1479
|
+
break;
|
1480
|
+
|
1481
|
+
default:
|
1482
|
+
abort(`invalid type for setValue: ${type}`);
|
1483
|
+
}
|
1484
|
+
}
|
1485
|
+
var ___memory_base = new WebAssembly.Global({
|
1486
|
+
"value": "i32",
|
1487
|
+
"mutable": false
|
1488
|
+
}, 1024);
|
1489
|
+
var ___stack_pointer = new WebAssembly.Global({
|
1490
|
+
"value": "i32",
|
1491
|
+
"mutable": true
|
1492
|
+
}, 78112);
|
1493
|
+
var ___table_base = new WebAssembly.Global({
|
1494
|
+
"value": "i32",
|
1495
|
+
"mutable": false
|
1496
|
+
}, 1);
|
1497
|
+
var __abort_js = () => {
|
1498
|
+
abort("");
|
1499
|
+
};
|
1500
|
+
__abort_js.sig = "v";
|
1501
|
+
var nowIsMonotonic = 1;
|
1502
|
+
var __emscripten_get_now_is_monotonic = () => nowIsMonotonic;
|
1503
|
+
__emscripten_get_now_is_monotonic.sig = "i";
|
1504
|
+
var __emscripten_memcpy_js = (dest, src, num) => HEAPU8.copyWithin(dest, src, src + num);
|
1505
|
+
__emscripten_memcpy_js.sig = "vppp";
|
1506
|
+
var _emscripten_date_now = () => Date.now();
|
1507
|
+
_emscripten_date_now.sig = "d";
|
1508
|
+
var _emscripten_get_now;
|
1509
|
+
// Modern environment where performance.now() is supported:
|
1510
|
+
// N.B. a shorter form "_emscripten_get_now = performance.now;" is
|
1511
|
+
// unfortunately not allowed even in current browsers (e.g. FF Nightly 75).
|
1512
|
+
_emscripten_get_now = () => performance.now();
|
1513
|
+
_emscripten_get_now.sig = "d";
|
1514
|
+
var getHeapMax = () => // Stay one Wasm page short of 4GB: while e.g. Chrome is able to allocate
|
1515
|
+
// full 4GB Wasm memories, the size will wrap back to 0 bytes in Wasm side
|
1516
|
+
// for any code that deals with heap sizes, which would require special
|
1517
|
+
// casing all heap size related code to treat 0 specially.
|
1518
|
+
2147483648;
|
1519
|
+
var growMemory = size => {
|
1520
|
+
var b = wasmMemory.buffer;
|
1521
|
+
var pages = (size - b.byteLength + 65535) / 65536;
|
1522
|
+
try {
|
1523
|
+
// round size grow request up to wasm page size (fixed 64KB per spec)
|
1524
|
+
wasmMemory.grow(pages);
|
1525
|
+
// .grow() takes a delta compared to the previous size
|
1526
|
+
updateMemoryViews();
|
1527
|
+
return 1;
|
1528
|
+
} /*success*/ catch (e) {}
|
1529
|
+
};
|
1530
|
+
// implicit 0 return to save code size (caller will cast "undefined" into 0
|
1531
|
+
// anyhow)
|
1532
|
+
var _emscripten_resize_heap = requestedSize => {
|
1533
|
+
var oldSize = HEAPU8.length;
|
1534
|
+
// With CAN_ADDRESS_2GB or MEMORY64, pointers are already unsigned.
|
1535
|
+
requestedSize >>>= 0;
|
1536
|
+
// With multithreaded builds, races can happen (another thread might increase the size
|
1537
|
+
// in between), so return a failure, and let the caller retry.
|
1538
|
+
// Memory resize rules:
|
1539
|
+
// 1. Always increase heap size to at least the requested size, rounded up
|
1540
|
+
// to next page multiple.
|
1541
|
+
// 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap
|
1542
|
+
// geometrically: increase the heap size according to
|
1543
|
+
// MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most
|
1544
|
+
// overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB).
|
1545
|
+
// 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap
|
1546
|
+
// linearly: increase the heap size by at least
|
1547
|
+
// MEMORY_GROWTH_LINEAR_STEP bytes.
|
1548
|
+
// 3. Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by
|
1549
|
+
// MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest
|
1550
|
+
// 4. If we were unable to allocate as much memory, it may be due to
|
1551
|
+
// over-eager decision to excessively reserve due to (3) above.
|
1552
|
+
// Hence if an allocation fails, cut down on the amount of excess
|
1553
|
+
// growth, in an attempt to succeed to perform a smaller allocation.
|
1554
|
+
// A limit is set for how much we can grow. We should not exceed that
|
1555
|
+
// (the wasm binary specifies it, so if we tried, we'd fail anyhow).
|
1556
|
+
var maxHeapSize = getHeapMax();
|
1557
|
+
if (requestedSize > maxHeapSize) {
|
1558
|
+
return false;
|
1559
|
+
}
|
1560
|
+
var alignUp = (x, multiple) => x + (multiple - x % multiple) % multiple;
|
1561
|
+
// Loop through potential heap size increases. If we attempt a too eager
|
1562
|
+
// reservation that fails, cut down on the attempted size and reserve a
|
1563
|
+
// smaller bump instead. (max 3 times, chosen somewhat arbitrarily)
|
1564
|
+
for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
|
1565
|
+
var overGrownHeapSize = oldSize * (1 + .2 / cutDown);
|
1566
|
+
// ensure geometric growth
|
1567
|
+
// but limit overreserving (default to capping at +96MB overgrowth at most)
|
1568
|
+
overGrownHeapSize = Math.min(overGrownHeapSize, requestedSize + 100663296);
|
1569
|
+
var newSize = Math.min(maxHeapSize, alignUp(Math.max(requestedSize, overGrownHeapSize), 65536));
|
1570
|
+
var replacement = growMemory(newSize);
|
1571
|
+
if (replacement) {
|
1572
|
+
return true;
|
1573
|
+
}
|
1574
|
+
}
|
1575
|
+
return false;
|
1576
|
+
};
|
1577
|
+
_emscripten_resize_heap.sig = "ip";
|
1578
|
+
var _fd_close = fd => 52;
|
1579
|
+
_fd_close.sig = "ii";
|
1580
|
+
var convertI32PairToI53Checked = (lo, hi) => ((hi + 2097152) >>> 0 < 4194305 - !!lo) ? (lo >>> 0) + hi * 4294967296 : NaN;
|
1581
|
+
function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
|
1582
|
+
var offset = convertI32PairToI53Checked(offset_low, offset_high);
|
1583
|
+
return 70;
|
1584
|
+
}
|
1585
|
+
_fd_seek.sig = "iiiiip";
|
1586
|
+
var printCharBuffers = [ null, [], [] ];
|
1587
|
+
var printChar = (stream, curr) => {
|
1588
|
+
var buffer = printCharBuffers[stream];
|
1589
|
+
if (curr === 0 || curr === 10) {
|
1590
|
+
(stream === 1 ? out : err)(UTF8ArrayToString(buffer, 0));
|
1591
|
+
buffer.length = 0;
|
1592
|
+
} else {
|
1593
|
+
buffer.push(curr);
|
1594
|
+
}
|
1595
|
+
};
|
1596
|
+
var _fd_write = (fd, iov, iovcnt, pnum) => {
|
1597
|
+
// hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0
|
1598
|
+
var num = 0;
|
1599
|
+
for (var i = 0; i < iovcnt; i++) {
|
1600
|
+
var ptr = LE_HEAP_LOAD_U32(((iov) >> 2) * 4);
|
1601
|
+
var len = LE_HEAP_LOAD_U32((((iov) + (4)) >> 2) * 4);
|
1602
|
+
iov += 8;
|
1603
|
+
for (var j = 0; j < len; j++) {
|
1604
|
+
printChar(fd, HEAPU8[ptr + j]);
|
1605
|
+
}
|
1606
|
+
num += len;
|
1607
|
+
}
|
1608
|
+
LE_HEAP_STORE_U32(((pnum) >> 2) * 4, num);
|
1609
|
+
return 0;
|
1610
|
+
};
|
1611
|
+
_fd_write.sig = "iippp";
|
1612
|
+
function _tree_sitter_log_callback(isLexMessage, messageAddress) {
|
1613
|
+
if (currentLogCallback) {
|
1614
|
+
const message = UTF8ToString(messageAddress);
|
1615
|
+
currentLogCallback(message, isLexMessage !== 0);
|
1616
|
+
}
|
1617
|
+
}
|
1618
|
+
function _tree_sitter_parse_callback(inputBufferAddress, index, row, column, lengthAddress) {
|
1619
|
+
const INPUT_BUFFER_SIZE = 10 * 1024;
|
1620
|
+
const string = currentParseCallback(index, {
|
1621
|
+
row: row,
|
1622
|
+
column: column
|
1623
|
+
});
|
1624
|
+
if (typeof string === "string") {
|
1625
|
+
setValue(lengthAddress, string.length, "i32");
|
1626
|
+
stringToUTF16(string, inputBufferAddress, INPUT_BUFFER_SIZE);
|
1627
|
+
} else {
|
1628
|
+
setValue(lengthAddress, 0, "i32");
|
1629
|
+
}
|
1630
|
+
}
|
1631
|
+
var runtimeKeepaliveCounter = 0;
|
1632
|
+
var keepRuntimeAlive = () => noExitRuntime || runtimeKeepaliveCounter > 0;
|
1633
|
+
var _proc_exit = code => {
|
1634
|
+
EXITSTATUS = code;
|
1635
|
+
if (!keepRuntimeAlive()) {
|
1636
|
+
Module["onExit"]?.(code);
|
1637
|
+
ABORT = true;
|
1638
|
+
}
|
1639
|
+
quit_(code, new ExitStatus(code));
|
1640
|
+
};
|
1641
|
+
_proc_exit.sig = "vi";
|
1642
|
+
/** @param {boolean|number=} implicit */ var exitJS = (status, implicit) => {
|
1643
|
+
EXITSTATUS = status;
|
1644
|
+
_proc_exit(status);
|
1645
|
+
};
|
1646
|
+
var handleException = e => {
|
1647
|
+
// Certain exception types we do not treat as errors since they are used for
|
1648
|
+
// internal control flow.
|
1649
|
+
// 1. ExitStatus, which is thrown by exit()
|
1650
|
+
// 2. "unwind", which is thrown by emscripten_unwind_to_js_event_loop() and others
|
1651
|
+
// that wish to return to JS event loop.
|
1652
|
+
if (e instanceof ExitStatus || e == "unwind") {
|
1653
|
+
return EXITSTATUS;
|
1654
|
+
}
|
1655
|
+
quit_(1, e);
|
1656
|
+
};
|
1657
|
+
var lengthBytesUTF8 = str => {
|
1658
|
+
var len = 0;
|
1659
|
+
for (var i = 0; i < str.length; ++i) {
|
1660
|
+
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code
|
1661
|
+
// unit, not a Unicode code point of the character! So decode
|
1662
|
+
// UTF16->UTF32->UTF8.
|
1663
|
+
// See http://unicode.org/faq/utf_bom.html#utf16-3
|
1664
|
+
var c = str.charCodeAt(i);
|
1665
|
+
// possibly a lead surrogate
|
1666
|
+
if (c <= 127) {
|
1667
|
+
len++;
|
1668
|
+
} else if (c <= 2047) {
|
1669
|
+
len += 2;
|
1670
|
+
} else if (c >= 55296 && c <= 57343) {
|
1671
|
+
len += 4;
|
1672
|
+
++i;
|
1673
|
+
} else {
|
1674
|
+
len += 3;
|
1675
|
+
}
|
1676
|
+
}
|
1677
|
+
return len;
|
1678
|
+
};
|
1679
|
+
var stringToUTF8Array = (str, heap, outIdx, maxBytesToWrite) => {
|
1680
|
+
// Parameter maxBytesToWrite is not optional. Negative values, 0, null,
|
1681
|
+
// undefined and false each don't write out any bytes.
|
1682
|
+
if (!(maxBytesToWrite > 0)) return 0;
|
1683
|
+
var startIdx = outIdx;
|
1684
|
+
var endIdx = outIdx + maxBytesToWrite - 1;
|
1685
|
+
// -1 for string null terminator.
|
1686
|
+
for (var i = 0; i < str.length; ++i) {
|
1687
|
+
// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code
|
1688
|
+
// unit, not a Unicode code point of the character! So decode
|
1689
|
+
// UTF16->UTF32->UTF8.
|
1690
|
+
// See http://unicode.org/faq/utf_bom.html#utf16-3
|
1691
|
+
// For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description
|
1692
|
+
// and https://www.ietf.org/rfc/rfc2279.txt
|
1693
|
+
// and https://tools.ietf.org/html/rfc3629
|
1694
|
+
var u = str.charCodeAt(i);
|
1695
|
+
// possibly a lead surrogate
|
1696
|
+
if (u >= 55296 && u <= 57343) {
|
1697
|
+
var u1 = str.charCodeAt(++i);
|
1698
|
+
u = 65536 + ((u & 1023) << 10) | (u1 & 1023);
|
1699
|
+
}
|
1700
|
+
if (u <= 127) {
|
1701
|
+
if (outIdx >= endIdx) break;
|
1702
|
+
heap[outIdx++] = u;
|
1703
|
+
} else if (u <= 2047) {
|
1704
|
+
if (outIdx + 1 >= endIdx) break;
|
1705
|
+
heap[outIdx++] = 192 | (u >> 6);
|
1706
|
+
heap[outIdx++] = 128 | (u & 63);
|
1707
|
+
} else if (u <= 65535) {
|
1708
|
+
if (outIdx + 2 >= endIdx) break;
|
1709
|
+
heap[outIdx++] = 224 | (u >> 12);
|
1710
|
+
heap[outIdx++] = 128 | ((u >> 6) & 63);
|
1711
|
+
heap[outIdx++] = 128 | (u & 63);
|
1712
|
+
} else {
|
1713
|
+
if (outIdx + 3 >= endIdx) break;
|
1714
|
+
heap[outIdx++] = 240 | (u >> 18);
|
1715
|
+
heap[outIdx++] = 128 | ((u >> 12) & 63);
|
1716
|
+
heap[outIdx++] = 128 | ((u >> 6) & 63);
|
1717
|
+
heap[outIdx++] = 128 | (u & 63);
|
1718
|
+
}
|
1719
|
+
}
|
1720
|
+
// Null-terminate the pointer to the buffer.
|
1721
|
+
heap[outIdx] = 0;
|
1722
|
+
return outIdx - startIdx;
|
1723
|
+
};
|
1724
|
+
var stringToUTF8 = (str, outPtr, maxBytesToWrite) => stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
|
1725
|
+
var stackAlloc = sz => __emscripten_stack_alloc(sz);
|
1726
|
+
var stringToUTF8OnStack = str => {
|
1727
|
+
var size = lengthBytesUTF8(str) + 1;
|
1728
|
+
var ret = stackAlloc(size);
|
1729
|
+
stringToUTF8(str, ret, size);
|
1730
|
+
return ret;
|
1731
|
+
};
|
1732
|
+
var stringToUTF16 = (str, outPtr, maxBytesToWrite) => {
|
1733
|
+
// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
|
1734
|
+
maxBytesToWrite ??= 2147483647;
|
1735
|
+
if (maxBytesToWrite < 2) return 0;
|
1736
|
+
maxBytesToWrite -= 2;
|
1737
|
+
// Null terminator.
|
1738
|
+
var startPtr = outPtr;
|
1739
|
+
var numCharsToWrite = (maxBytesToWrite < str.length * 2) ? (maxBytesToWrite / 2) : str.length;
|
1740
|
+
for (var i = 0; i < numCharsToWrite; ++i) {
|
1741
|
+
// charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
|
1742
|
+
var codeUnit = str.charCodeAt(i);
|
1743
|
+
// possibly a lead surrogate
|
1744
|
+
LE_HEAP_STORE_I16(((outPtr) >> 1) * 2, codeUnit);
|
1745
|
+
outPtr += 2;
|
1746
|
+
}
|
1747
|
+
// Null-terminate the pointer to the HEAP.
|
1748
|
+
LE_HEAP_STORE_I16(((outPtr) >> 1) * 2, 0);
|
1749
|
+
return outPtr - startPtr;
|
1750
|
+
};
|
1751
|
+
var AsciiToString = ptr => {
|
1752
|
+
var str = "";
|
1753
|
+
while (1) {
|
1754
|
+
var ch = HEAPU8[ptr++];
|
1755
|
+
if (!ch) return str;
|
1756
|
+
str += String.fromCharCode(ch);
|
1757
|
+
}
|
1758
|
+
};
|
1759
|
+
var wasmImports = {
|
1760
|
+
/** @export */ __heap_base: ___heap_base,
|
1761
|
+
/** @export */ __indirect_function_table: wasmTable,
|
1762
|
+
/** @export */ __memory_base: ___memory_base,
|
1763
|
+
/** @export */ __stack_pointer: ___stack_pointer,
|
1764
|
+
/** @export */ __table_base: ___table_base,
|
1765
|
+
/** @export */ _abort_js: __abort_js,
|
1766
|
+
/** @export */ _emscripten_get_now_is_monotonic: __emscripten_get_now_is_monotonic,
|
1767
|
+
/** @export */ _emscripten_memcpy_js: __emscripten_memcpy_js,
|
1768
|
+
/** @export */ emscripten_get_now: _emscripten_get_now,
|
1769
|
+
/** @export */ emscripten_resize_heap: _emscripten_resize_heap,
|
1770
|
+
/** @export */ fd_close: _fd_close,
|
1771
|
+
/** @export */ fd_seek: _fd_seek,
|
1772
|
+
/** @export */ fd_write: _fd_write,
|
1773
|
+
/** @export */ memory: wasmMemory,
|
1774
|
+
/** @export */ tree_sitter_log_callback: _tree_sitter_log_callback,
|
1775
|
+
/** @export */ tree_sitter_parse_callback: _tree_sitter_parse_callback
|
1776
|
+
};
|
1777
|
+
var wasmExports = createWasm();
|
1778
|
+
var ___wasm_call_ctors = () => (___wasm_call_ctors = wasmExports["__wasm_call_ctors"])();
|
1779
|
+
var ___wasm_apply_data_relocs = () => (___wasm_apply_data_relocs = wasmExports["__wasm_apply_data_relocs"])();
|
1780
|
+
var _malloc = Module["_malloc"] = a0 => (_malloc = Module["_malloc"] = wasmExports["malloc"])(a0);
|
1781
|
+
var _calloc = Module["_calloc"] = (a0, a1) => (_calloc = Module["_calloc"] = wasmExports["calloc"])(a0, a1);
|
1782
|
+
var _realloc = Module["_realloc"] = (a0, a1) => (_realloc = Module["_realloc"] = wasmExports["realloc"])(a0, a1);
|
1783
|
+
var _free = Module["_free"] = a0 => (_free = Module["_free"] = wasmExports["free"])(a0);
|
1784
|
+
var _ts_language_symbol_count = Module["_ts_language_symbol_count"] = a0 => (_ts_language_symbol_count = Module["_ts_language_symbol_count"] = wasmExports["ts_language_symbol_count"])(a0);
|
1785
|
+
var _ts_language_state_count = Module["_ts_language_state_count"] = a0 => (_ts_language_state_count = Module["_ts_language_state_count"] = wasmExports["ts_language_state_count"])(a0);
|
1786
|
+
var _ts_language_version = Module["_ts_language_version"] = a0 => (_ts_language_version = Module["_ts_language_version"] = wasmExports["ts_language_version"])(a0);
|
1787
|
+
var _ts_language_field_count = Module["_ts_language_field_count"] = a0 => (_ts_language_field_count = Module["_ts_language_field_count"] = wasmExports["ts_language_field_count"])(a0);
|
1788
|
+
var _ts_language_next_state = Module["_ts_language_next_state"] = (a0, a1, a2) => (_ts_language_next_state = Module["_ts_language_next_state"] = wasmExports["ts_language_next_state"])(a0, a1, a2);
|
1789
|
+
var _ts_language_symbol_name = Module["_ts_language_symbol_name"] = (a0, a1) => (_ts_language_symbol_name = Module["_ts_language_symbol_name"] = wasmExports["ts_language_symbol_name"])(a0, a1);
|
1790
|
+
var _ts_language_symbol_for_name = Module["_ts_language_symbol_for_name"] = (a0, a1, a2, a3) => (_ts_language_symbol_for_name = Module["_ts_language_symbol_for_name"] = wasmExports["ts_language_symbol_for_name"])(a0, a1, a2, a3);
|
1791
|
+
var _strncmp = Module["_strncmp"] = (a0, a1, a2) => (_strncmp = Module["_strncmp"] = wasmExports["strncmp"])(a0, a1, a2);
|
1792
|
+
var _ts_language_symbol_type = Module["_ts_language_symbol_type"] = (a0, a1) => (_ts_language_symbol_type = Module["_ts_language_symbol_type"] = wasmExports["ts_language_symbol_type"])(a0, a1);
|
1793
|
+
var _ts_language_field_name_for_id = Module["_ts_language_field_name_for_id"] = (a0, a1) => (_ts_language_field_name_for_id = Module["_ts_language_field_name_for_id"] = wasmExports["ts_language_field_name_for_id"])(a0, a1);
|
1794
|
+
var _ts_lookahead_iterator_new = Module["_ts_lookahead_iterator_new"] = (a0, a1) => (_ts_lookahead_iterator_new = Module["_ts_lookahead_iterator_new"] = wasmExports["ts_lookahead_iterator_new"])(a0, a1);
|
1795
|
+
var _ts_lookahead_iterator_delete = Module["_ts_lookahead_iterator_delete"] = a0 => (_ts_lookahead_iterator_delete = Module["_ts_lookahead_iterator_delete"] = wasmExports["ts_lookahead_iterator_delete"])(a0);
|
1796
|
+
var _ts_lookahead_iterator_reset_state = Module["_ts_lookahead_iterator_reset_state"] = (a0, a1) => (_ts_lookahead_iterator_reset_state = Module["_ts_lookahead_iterator_reset_state"] = wasmExports["ts_lookahead_iterator_reset_state"])(a0, a1);
|
1797
|
+
var _ts_lookahead_iterator_reset = Module["_ts_lookahead_iterator_reset"] = (a0, a1, a2) => (_ts_lookahead_iterator_reset = Module["_ts_lookahead_iterator_reset"] = wasmExports["ts_lookahead_iterator_reset"])(a0, a1, a2);
|
1798
|
+
var _ts_lookahead_iterator_next = Module["_ts_lookahead_iterator_next"] = a0 => (_ts_lookahead_iterator_next = Module["_ts_lookahead_iterator_next"] = wasmExports["ts_lookahead_iterator_next"])(a0);
|
1799
|
+
var _ts_lookahead_iterator_current_symbol = Module["_ts_lookahead_iterator_current_symbol"] = a0 => (_ts_lookahead_iterator_current_symbol = Module["_ts_lookahead_iterator_current_symbol"] = wasmExports["ts_lookahead_iterator_current_symbol"])(a0);
|
1800
|
+
var _memset = Module["_memset"] = (a0, a1, a2) => (_memset = Module["_memset"] = wasmExports["memset"])(a0, a1, a2);
|
1801
|
+
var _memcpy = Module["_memcpy"] = (a0, a1, a2) => (_memcpy = Module["_memcpy"] = wasmExports["memcpy"])(a0, a1, a2);
|
1802
|
+
var _ts_parser_delete = Module["_ts_parser_delete"] = a0 => (_ts_parser_delete = Module["_ts_parser_delete"] = wasmExports["ts_parser_delete"])(a0);
|
1803
|
+
var _ts_parser_reset = Module["_ts_parser_reset"] = a0 => (_ts_parser_reset = Module["_ts_parser_reset"] = wasmExports["ts_parser_reset"])(a0);
|
1804
|
+
var _ts_parser_set_language = Module["_ts_parser_set_language"] = (a0, a1) => (_ts_parser_set_language = Module["_ts_parser_set_language"] = wasmExports["ts_parser_set_language"])(a0, a1);
|
1805
|
+
var _ts_parser_timeout_micros = Module["_ts_parser_timeout_micros"] = a0 => (_ts_parser_timeout_micros = Module["_ts_parser_timeout_micros"] = wasmExports["ts_parser_timeout_micros"])(a0);
|
1806
|
+
var _ts_parser_set_timeout_micros = Module["_ts_parser_set_timeout_micros"] = (a0, a1, a2) => (_ts_parser_set_timeout_micros = Module["_ts_parser_set_timeout_micros"] = wasmExports["ts_parser_set_timeout_micros"])(a0, a1, a2);
|
1807
|
+
var _ts_parser_set_included_ranges = Module["_ts_parser_set_included_ranges"] = (a0, a1, a2) => (_ts_parser_set_included_ranges = Module["_ts_parser_set_included_ranges"] = wasmExports["ts_parser_set_included_ranges"])(a0, a1, a2);
|
1808
|
+
var _memmove = Module["_memmove"] = (a0, a1, a2) => (_memmove = Module["_memmove"] = wasmExports["memmove"])(a0, a1, a2);
|
1809
|
+
var _memcmp = Module["_memcmp"] = (a0, a1, a2) => (_memcmp = Module["_memcmp"] = wasmExports["memcmp"])(a0, a1, a2);
|
1810
|
+
var _ts_query_new = Module["_ts_query_new"] = (a0, a1, a2, a3, a4) => (_ts_query_new = Module["_ts_query_new"] = wasmExports["ts_query_new"])(a0, a1, a2, a3, a4);
|
1811
|
+
var _ts_query_delete = Module["_ts_query_delete"] = a0 => (_ts_query_delete = Module["_ts_query_delete"] = wasmExports["ts_query_delete"])(a0);
|
1812
|
+
var _iswspace = Module["_iswspace"] = a0 => (_iswspace = Module["_iswspace"] = wasmExports["iswspace"])(a0);
|
1813
|
+
var _iswalnum = Module["_iswalnum"] = a0 => (_iswalnum = Module["_iswalnum"] = wasmExports["iswalnum"])(a0);
|
1814
|
+
var _ts_query_pattern_count = Module["_ts_query_pattern_count"] = a0 => (_ts_query_pattern_count = Module["_ts_query_pattern_count"] = wasmExports["ts_query_pattern_count"])(a0);
|
1815
|
+
var _ts_query_capture_count = Module["_ts_query_capture_count"] = a0 => (_ts_query_capture_count = Module["_ts_query_capture_count"] = wasmExports["ts_query_capture_count"])(a0);
|
1816
|
+
var _ts_query_string_count = Module["_ts_query_string_count"] = a0 => (_ts_query_string_count = Module["_ts_query_string_count"] = wasmExports["ts_query_string_count"])(a0);
|
1817
|
+
var _ts_query_capture_name_for_id = Module["_ts_query_capture_name_for_id"] = (a0, a1, a2) => (_ts_query_capture_name_for_id = Module["_ts_query_capture_name_for_id"] = wasmExports["ts_query_capture_name_for_id"])(a0, a1, a2);
|
1818
|
+
var _ts_query_string_value_for_id = Module["_ts_query_string_value_for_id"] = (a0, a1, a2) => (_ts_query_string_value_for_id = Module["_ts_query_string_value_for_id"] = wasmExports["ts_query_string_value_for_id"])(a0, a1, a2);
|
1819
|
+
var _ts_query_predicates_for_pattern = Module["_ts_query_predicates_for_pattern"] = (a0, a1, a2) => (_ts_query_predicates_for_pattern = Module["_ts_query_predicates_for_pattern"] = wasmExports["ts_query_predicates_for_pattern"])(a0, a1, a2);
|
1820
|
+
var _ts_query_disable_capture = Module["_ts_query_disable_capture"] = (a0, a1, a2) => (_ts_query_disable_capture = Module["_ts_query_disable_capture"] = wasmExports["ts_query_disable_capture"])(a0, a1, a2);
|
1821
|
+
var _ts_tree_copy = Module["_ts_tree_copy"] = a0 => (_ts_tree_copy = Module["_ts_tree_copy"] = wasmExports["ts_tree_copy"])(a0);
|
1822
|
+
var _ts_tree_delete = Module["_ts_tree_delete"] = a0 => (_ts_tree_delete = Module["_ts_tree_delete"] = wasmExports["ts_tree_delete"])(a0);
|
1823
|
+
var _ts_init = Module["_ts_init"] = () => (_ts_init = Module["_ts_init"] = wasmExports["ts_init"])();
|
1824
|
+
var _ts_parser_new_wasm = Module["_ts_parser_new_wasm"] = () => (_ts_parser_new_wasm = Module["_ts_parser_new_wasm"] = wasmExports["ts_parser_new_wasm"])();
|
1825
|
+
var _ts_parser_enable_logger_wasm = Module["_ts_parser_enable_logger_wasm"] = (a0, a1) => (_ts_parser_enable_logger_wasm = Module["_ts_parser_enable_logger_wasm"] = wasmExports["ts_parser_enable_logger_wasm"])(a0, a1);
|
1826
|
+
var _ts_parser_parse_wasm = Module["_ts_parser_parse_wasm"] = (a0, a1, a2, a3, a4) => (_ts_parser_parse_wasm = Module["_ts_parser_parse_wasm"] = wasmExports["ts_parser_parse_wasm"])(a0, a1, a2, a3, a4);
|
1827
|
+
var _ts_parser_included_ranges_wasm = Module["_ts_parser_included_ranges_wasm"] = a0 => (_ts_parser_included_ranges_wasm = Module["_ts_parser_included_ranges_wasm"] = wasmExports["ts_parser_included_ranges_wasm"])(a0);
|
1828
|
+
var _ts_language_type_is_named_wasm = Module["_ts_language_type_is_named_wasm"] = (a0, a1) => (_ts_language_type_is_named_wasm = Module["_ts_language_type_is_named_wasm"] = wasmExports["ts_language_type_is_named_wasm"])(a0, a1);
|
1829
|
+
var _ts_language_type_is_visible_wasm = Module["_ts_language_type_is_visible_wasm"] = (a0, a1) => (_ts_language_type_is_visible_wasm = Module["_ts_language_type_is_visible_wasm"] = wasmExports["ts_language_type_is_visible_wasm"])(a0, a1);
|
1830
|
+
var _ts_tree_root_node_wasm = Module["_ts_tree_root_node_wasm"] = a0 => (_ts_tree_root_node_wasm = Module["_ts_tree_root_node_wasm"] = wasmExports["ts_tree_root_node_wasm"])(a0);
|
1831
|
+
var _ts_tree_root_node_with_offset_wasm = Module["_ts_tree_root_node_with_offset_wasm"] = a0 => (_ts_tree_root_node_with_offset_wasm = Module["_ts_tree_root_node_with_offset_wasm"] = wasmExports["ts_tree_root_node_with_offset_wasm"])(a0);
|
1832
|
+
var _ts_tree_edit_wasm = Module["_ts_tree_edit_wasm"] = a0 => (_ts_tree_edit_wasm = Module["_ts_tree_edit_wasm"] = wasmExports["ts_tree_edit_wasm"])(a0);
|
1833
|
+
var _ts_tree_included_ranges_wasm = Module["_ts_tree_included_ranges_wasm"] = a0 => (_ts_tree_included_ranges_wasm = Module["_ts_tree_included_ranges_wasm"] = wasmExports["ts_tree_included_ranges_wasm"])(a0);
|
1834
|
+
var _ts_tree_get_changed_ranges_wasm = Module["_ts_tree_get_changed_ranges_wasm"] = (a0, a1) => (_ts_tree_get_changed_ranges_wasm = Module["_ts_tree_get_changed_ranges_wasm"] = wasmExports["ts_tree_get_changed_ranges_wasm"])(a0, a1);
|
1835
|
+
var _ts_tree_cursor_new_wasm = Module["_ts_tree_cursor_new_wasm"] = a0 => (_ts_tree_cursor_new_wasm = Module["_ts_tree_cursor_new_wasm"] = wasmExports["ts_tree_cursor_new_wasm"])(a0);
|
1836
|
+
var _ts_tree_cursor_delete_wasm = Module["_ts_tree_cursor_delete_wasm"] = a0 => (_ts_tree_cursor_delete_wasm = Module["_ts_tree_cursor_delete_wasm"] = wasmExports["ts_tree_cursor_delete_wasm"])(a0);
|
1837
|
+
var _ts_tree_cursor_reset_wasm = Module["_ts_tree_cursor_reset_wasm"] = a0 => (_ts_tree_cursor_reset_wasm = Module["_ts_tree_cursor_reset_wasm"] = wasmExports["ts_tree_cursor_reset_wasm"])(a0);
|
1838
|
+
var _ts_tree_cursor_reset_to_wasm = Module["_ts_tree_cursor_reset_to_wasm"] = (a0, a1) => (_ts_tree_cursor_reset_to_wasm = Module["_ts_tree_cursor_reset_to_wasm"] = wasmExports["ts_tree_cursor_reset_to_wasm"])(a0, a1);
|
1839
|
+
var _ts_tree_cursor_goto_first_child_wasm = Module["_ts_tree_cursor_goto_first_child_wasm"] = a0 => (_ts_tree_cursor_goto_first_child_wasm = Module["_ts_tree_cursor_goto_first_child_wasm"] = wasmExports["ts_tree_cursor_goto_first_child_wasm"])(a0);
|
1840
|
+
var _ts_tree_cursor_goto_last_child_wasm = Module["_ts_tree_cursor_goto_last_child_wasm"] = a0 => (_ts_tree_cursor_goto_last_child_wasm = Module["_ts_tree_cursor_goto_last_child_wasm"] = wasmExports["ts_tree_cursor_goto_last_child_wasm"])(a0);
|
1841
|
+
var _ts_tree_cursor_goto_first_child_for_index_wasm = Module["_ts_tree_cursor_goto_first_child_for_index_wasm"] = a0 => (_ts_tree_cursor_goto_first_child_for_index_wasm = Module["_ts_tree_cursor_goto_first_child_for_index_wasm"] = wasmExports["ts_tree_cursor_goto_first_child_for_index_wasm"])(a0);
|
1842
|
+
var _ts_tree_cursor_goto_first_child_for_position_wasm = Module["_ts_tree_cursor_goto_first_child_for_position_wasm"] = a0 => (_ts_tree_cursor_goto_first_child_for_position_wasm = Module["_ts_tree_cursor_goto_first_child_for_position_wasm"] = wasmExports["ts_tree_cursor_goto_first_child_for_position_wasm"])(a0);
|
1843
|
+
var _ts_tree_cursor_goto_next_sibling_wasm = Module["_ts_tree_cursor_goto_next_sibling_wasm"] = a0 => (_ts_tree_cursor_goto_next_sibling_wasm = Module["_ts_tree_cursor_goto_next_sibling_wasm"] = wasmExports["ts_tree_cursor_goto_next_sibling_wasm"])(a0);
|
1844
|
+
var _ts_tree_cursor_goto_previous_sibling_wasm = Module["_ts_tree_cursor_goto_previous_sibling_wasm"] = a0 => (_ts_tree_cursor_goto_previous_sibling_wasm = Module["_ts_tree_cursor_goto_previous_sibling_wasm"] = wasmExports["ts_tree_cursor_goto_previous_sibling_wasm"])(a0);
|
1845
|
+
var _ts_tree_cursor_goto_descendant_wasm = Module["_ts_tree_cursor_goto_descendant_wasm"] = (a0, a1) => (_ts_tree_cursor_goto_descendant_wasm = Module["_ts_tree_cursor_goto_descendant_wasm"] = wasmExports["ts_tree_cursor_goto_descendant_wasm"])(a0, a1);
|
1846
|
+
var _ts_tree_cursor_goto_parent_wasm = Module["_ts_tree_cursor_goto_parent_wasm"] = a0 => (_ts_tree_cursor_goto_parent_wasm = Module["_ts_tree_cursor_goto_parent_wasm"] = wasmExports["ts_tree_cursor_goto_parent_wasm"])(a0);
|
1847
|
+
var _ts_tree_cursor_current_node_type_id_wasm = Module["_ts_tree_cursor_current_node_type_id_wasm"] = a0 => (_ts_tree_cursor_current_node_type_id_wasm = Module["_ts_tree_cursor_current_node_type_id_wasm"] = wasmExports["ts_tree_cursor_current_node_type_id_wasm"])(a0);
|
1848
|
+
var _ts_tree_cursor_current_node_state_id_wasm = Module["_ts_tree_cursor_current_node_state_id_wasm"] = a0 => (_ts_tree_cursor_current_node_state_id_wasm = Module["_ts_tree_cursor_current_node_state_id_wasm"] = wasmExports["ts_tree_cursor_current_node_state_id_wasm"])(a0);
|
1849
|
+
var _ts_tree_cursor_current_node_is_named_wasm = Module["_ts_tree_cursor_current_node_is_named_wasm"] = a0 => (_ts_tree_cursor_current_node_is_named_wasm = Module["_ts_tree_cursor_current_node_is_named_wasm"] = wasmExports["ts_tree_cursor_current_node_is_named_wasm"])(a0);
|
1850
|
+
var _ts_tree_cursor_current_node_is_missing_wasm = Module["_ts_tree_cursor_current_node_is_missing_wasm"] = a0 => (_ts_tree_cursor_current_node_is_missing_wasm = Module["_ts_tree_cursor_current_node_is_missing_wasm"] = wasmExports["ts_tree_cursor_current_node_is_missing_wasm"])(a0);
|
1851
|
+
var _ts_tree_cursor_current_node_id_wasm = Module["_ts_tree_cursor_current_node_id_wasm"] = a0 => (_ts_tree_cursor_current_node_id_wasm = Module["_ts_tree_cursor_current_node_id_wasm"] = wasmExports["ts_tree_cursor_current_node_id_wasm"])(a0);
|
1852
|
+
var _ts_tree_cursor_start_position_wasm = Module["_ts_tree_cursor_start_position_wasm"] = a0 => (_ts_tree_cursor_start_position_wasm = Module["_ts_tree_cursor_start_position_wasm"] = wasmExports["ts_tree_cursor_start_position_wasm"])(a0);
|
1853
|
+
var _ts_tree_cursor_end_position_wasm = Module["_ts_tree_cursor_end_position_wasm"] = a0 => (_ts_tree_cursor_end_position_wasm = Module["_ts_tree_cursor_end_position_wasm"] = wasmExports["ts_tree_cursor_end_position_wasm"])(a0);
|
1854
|
+
var _ts_tree_cursor_start_index_wasm = Module["_ts_tree_cursor_start_index_wasm"] = a0 => (_ts_tree_cursor_start_index_wasm = Module["_ts_tree_cursor_start_index_wasm"] = wasmExports["ts_tree_cursor_start_index_wasm"])(a0);
|
1855
|
+
var _ts_tree_cursor_end_index_wasm = Module["_ts_tree_cursor_end_index_wasm"] = a0 => (_ts_tree_cursor_end_index_wasm = Module["_ts_tree_cursor_end_index_wasm"] = wasmExports["ts_tree_cursor_end_index_wasm"])(a0);
|
1856
|
+
var _ts_tree_cursor_current_field_id_wasm = Module["_ts_tree_cursor_current_field_id_wasm"] = a0 => (_ts_tree_cursor_current_field_id_wasm = Module["_ts_tree_cursor_current_field_id_wasm"] = wasmExports["ts_tree_cursor_current_field_id_wasm"])(a0);
|
1857
|
+
var _ts_tree_cursor_current_depth_wasm = Module["_ts_tree_cursor_current_depth_wasm"] = a0 => (_ts_tree_cursor_current_depth_wasm = Module["_ts_tree_cursor_current_depth_wasm"] = wasmExports["ts_tree_cursor_current_depth_wasm"])(a0);
|
1858
|
+
var _ts_tree_cursor_current_descendant_index_wasm = Module["_ts_tree_cursor_current_descendant_index_wasm"] = a0 => (_ts_tree_cursor_current_descendant_index_wasm = Module["_ts_tree_cursor_current_descendant_index_wasm"] = wasmExports["ts_tree_cursor_current_descendant_index_wasm"])(a0);
|
1859
|
+
var _ts_tree_cursor_current_node_wasm = Module["_ts_tree_cursor_current_node_wasm"] = a0 => (_ts_tree_cursor_current_node_wasm = Module["_ts_tree_cursor_current_node_wasm"] = wasmExports["ts_tree_cursor_current_node_wasm"])(a0);
|
1860
|
+
var _ts_node_symbol_wasm = Module["_ts_node_symbol_wasm"] = a0 => (_ts_node_symbol_wasm = Module["_ts_node_symbol_wasm"] = wasmExports["ts_node_symbol_wasm"])(a0);
|
1861
|
+
var _ts_node_field_name_for_child_wasm = Module["_ts_node_field_name_for_child_wasm"] = (a0, a1) => (_ts_node_field_name_for_child_wasm = Module["_ts_node_field_name_for_child_wasm"] = wasmExports["ts_node_field_name_for_child_wasm"])(a0, a1);
|
1862
|
+
var _ts_node_children_by_field_id_wasm = Module["_ts_node_children_by_field_id_wasm"] = (a0, a1) => (_ts_node_children_by_field_id_wasm = Module["_ts_node_children_by_field_id_wasm"] = wasmExports["ts_node_children_by_field_id_wasm"])(a0, a1);
|
1863
|
+
var _ts_node_first_child_for_byte_wasm = Module["_ts_node_first_child_for_byte_wasm"] = a0 => (_ts_node_first_child_for_byte_wasm = Module["_ts_node_first_child_for_byte_wasm"] = wasmExports["ts_node_first_child_for_byte_wasm"])(a0);
|
1864
|
+
var _ts_node_first_named_child_for_byte_wasm = Module["_ts_node_first_named_child_for_byte_wasm"] = a0 => (_ts_node_first_named_child_for_byte_wasm = Module["_ts_node_first_named_child_for_byte_wasm"] = wasmExports["ts_node_first_named_child_for_byte_wasm"])(a0);
|
1865
|
+
var _ts_node_grammar_symbol_wasm = Module["_ts_node_grammar_symbol_wasm"] = a0 => (_ts_node_grammar_symbol_wasm = Module["_ts_node_grammar_symbol_wasm"] = wasmExports["ts_node_grammar_symbol_wasm"])(a0);
|
1866
|
+
var _ts_node_child_count_wasm = Module["_ts_node_child_count_wasm"] = a0 => (_ts_node_child_count_wasm = Module["_ts_node_child_count_wasm"] = wasmExports["ts_node_child_count_wasm"])(a0);
|
1867
|
+
var _ts_node_named_child_count_wasm = Module["_ts_node_named_child_count_wasm"] = a0 => (_ts_node_named_child_count_wasm = Module["_ts_node_named_child_count_wasm"] = wasmExports["ts_node_named_child_count_wasm"])(a0);
|
1868
|
+
var _ts_node_child_wasm = Module["_ts_node_child_wasm"] = (a0, a1) => (_ts_node_child_wasm = Module["_ts_node_child_wasm"] = wasmExports["ts_node_child_wasm"])(a0, a1);
|
1869
|
+
var _ts_node_named_child_wasm = Module["_ts_node_named_child_wasm"] = (a0, a1) => (_ts_node_named_child_wasm = Module["_ts_node_named_child_wasm"] = wasmExports["ts_node_named_child_wasm"])(a0, a1);
|
1870
|
+
var _ts_node_child_by_field_id_wasm = Module["_ts_node_child_by_field_id_wasm"] = (a0, a1) => (_ts_node_child_by_field_id_wasm = Module["_ts_node_child_by_field_id_wasm"] = wasmExports["ts_node_child_by_field_id_wasm"])(a0, a1);
|
1871
|
+
var _ts_node_next_sibling_wasm = Module["_ts_node_next_sibling_wasm"] = a0 => (_ts_node_next_sibling_wasm = Module["_ts_node_next_sibling_wasm"] = wasmExports["ts_node_next_sibling_wasm"])(a0);
|
1872
|
+
var _ts_node_prev_sibling_wasm = Module["_ts_node_prev_sibling_wasm"] = a0 => (_ts_node_prev_sibling_wasm = Module["_ts_node_prev_sibling_wasm"] = wasmExports["ts_node_prev_sibling_wasm"])(a0);
|
1873
|
+
var _ts_node_next_named_sibling_wasm = Module["_ts_node_next_named_sibling_wasm"] = a0 => (_ts_node_next_named_sibling_wasm = Module["_ts_node_next_named_sibling_wasm"] = wasmExports["ts_node_next_named_sibling_wasm"])(a0);
|
1874
|
+
var _ts_node_prev_named_sibling_wasm = Module["_ts_node_prev_named_sibling_wasm"] = a0 => (_ts_node_prev_named_sibling_wasm = Module["_ts_node_prev_named_sibling_wasm"] = wasmExports["ts_node_prev_named_sibling_wasm"])(a0);
|
1875
|
+
var _ts_node_descendant_count_wasm = Module["_ts_node_descendant_count_wasm"] = a0 => (_ts_node_descendant_count_wasm = Module["_ts_node_descendant_count_wasm"] = wasmExports["ts_node_descendant_count_wasm"])(a0);
|
1876
|
+
var _ts_node_parent_wasm = Module["_ts_node_parent_wasm"] = a0 => (_ts_node_parent_wasm = Module["_ts_node_parent_wasm"] = wasmExports["ts_node_parent_wasm"])(a0);
|
1877
|
+
var _ts_node_descendant_for_index_wasm = Module["_ts_node_descendant_for_index_wasm"] = a0 => (_ts_node_descendant_for_index_wasm = Module["_ts_node_descendant_for_index_wasm"] = wasmExports["ts_node_descendant_for_index_wasm"])(a0);
|
1878
|
+
var _ts_node_named_descendant_for_index_wasm = Module["_ts_node_named_descendant_for_index_wasm"] = a0 => (_ts_node_named_descendant_for_index_wasm = Module["_ts_node_named_descendant_for_index_wasm"] = wasmExports["ts_node_named_descendant_for_index_wasm"])(a0);
|
1879
|
+
var _ts_node_descendant_for_position_wasm = Module["_ts_node_descendant_for_position_wasm"] = a0 => (_ts_node_descendant_for_position_wasm = Module["_ts_node_descendant_for_position_wasm"] = wasmExports["ts_node_descendant_for_position_wasm"])(a0);
|
1880
|
+
var _ts_node_named_descendant_for_position_wasm = Module["_ts_node_named_descendant_for_position_wasm"] = a0 => (_ts_node_named_descendant_for_position_wasm = Module["_ts_node_named_descendant_for_position_wasm"] = wasmExports["ts_node_named_descendant_for_position_wasm"])(a0);
|
1881
|
+
var _ts_node_start_point_wasm = Module["_ts_node_start_point_wasm"] = a0 => (_ts_node_start_point_wasm = Module["_ts_node_start_point_wasm"] = wasmExports["ts_node_start_point_wasm"])(a0);
|
1882
|
+
var _ts_node_end_point_wasm = Module["_ts_node_end_point_wasm"] = a0 => (_ts_node_end_point_wasm = Module["_ts_node_end_point_wasm"] = wasmExports["ts_node_end_point_wasm"])(a0);
|
1883
|
+
var _ts_node_start_index_wasm = Module["_ts_node_start_index_wasm"] = a0 => (_ts_node_start_index_wasm = Module["_ts_node_start_index_wasm"] = wasmExports["ts_node_start_index_wasm"])(a0);
|
1884
|
+
var _ts_node_end_index_wasm = Module["_ts_node_end_index_wasm"] = a0 => (_ts_node_end_index_wasm = Module["_ts_node_end_index_wasm"] = wasmExports["ts_node_end_index_wasm"])(a0);
|
1885
|
+
var _ts_node_to_string_wasm = Module["_ts_node_to_string_wasm"] = a0 => (_ts_node_to_string_wasm = Module["_ts_node_to_string_wasm"] = wasmExports["ts_node_to_string_wasm"])(a0);
|
1886
|
+
var _ts_node_children_wasm = Module["_ts_node_children_wasm"] = a0 => (_ts_node_children_wasm = Module["_ts_node_children_wasm"] = wasmExports["ts_node_children_wasm"])(a0);
|
1887
|
+
var _ts_node_named_children_wasm = Module["_ts_node_named_children_wasm"] = a0 => (_ts_node_named_children_wasm = Module["_ts_node_named_children_wasm"] = wasmExports["ts_node_named_children_wasm"])(a0);
|
1888
|
+
var _ts_node_descendants_of_type_wasm = Module["_ts_node_descendants_of_type_wasm"] = (a0, a1, a2, a3, a4, a5, a6) => (_ts_node_descendants_of_type_wasm = Module["_ts_node_descendants_of_type_wasm"] = wasmExports["ts_node_descendants_of_type_wasm"])(a0, a1, a2, a3, a4, a5, a6);
|
1889
|
+
var _ts_node_is_named_wasm = Module["_ts_node_is_named_wasm"] = a0 => (_ts_node_is_named_wasm = Module["_ts_node_is_named_wasm"] = wasmExports["ts_node_is_named_wasm"])(a0);
|
1890
|
+
var _ts_node_has_changes_wasm = Module["_ts_node_has_changes_wasm"] = a0 => (_ts_node_has_changes_wasm = Module["_ts_node_has_changes_wasm"] = wasmExports["ts_node_has_changes_wasm"])(a0);
|
1891
|
+
var _ts_node_has_error_wasm = Module["_ts_node_has_error_wasm"] = a0 => (_ts_node_has_error_wasm = Module["_ts_node_has_error_wasm"] = wasmExports["ts_node_has_error_wasm"])(a0);
|
1892
|
+
var _ts_node_is_error_wasm = Module["_ts_node_is_error_wasm"] = a0 => (_ts_node_is_error_wasm = Module["_ts_node_is_error_wasm"] = wasmExports["ts_node_is_error_wasm"])(a0);
|
1893
|
+
var _ts_node_is_missing_wasm = Module["_ts_node_is_missing_wasm"] = a0 => (_ts_node_is_missing_wasm = Module["_ts_node_is_missing_wasm"] = wasmExports["ts_node_is_missing_wasm"])(a0);
|
1894
|
+
var _ts_node_is_extra_wasm = Module["_ts_node_is_extra_wasm"] = a0 => (_ts_node_is_extra_wasm = Module["_ts_node_is_extra_wasm"] = wasmExports["ts_node_is_extra_wasm"])(a0);
|
1895
|
+
var _ts_node_parse_state_wasm = Module["_ts_node_parse_state_wasm"] = a0 => (_ts_node_parse_state_wasm = Module["_ts_node_parse_state_wasm"] = wasmExports["ts_node_parse_state_wasm"])(a0);
|
1896
|
+
var _ts_node_next_parse_state_wasm = Module["_ts_node_next_parse_state_wasm"] = a0 => (_ts_node_next_parse_state_wasm = Module["_ts_node_next_parse_state_wasm"] = wasmExports["ts_node_next_parse_state_wasm"])(a0);
|
1897
|
+
var _ts_query_matches_wasm = Module["_ts_query_matches_wasm"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) => (_ts_query_matches_wasm = Module["_ts_query_matches_wasm"] = wasmExports["ts_query_matches_wasm"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
1898
|
+
var _ts_query_captures_wasm = Module["_ts_query_captures_wasm"] = (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) => (_ts_query_captures_wasm = Module["_ts_query_captures_wasm"] = wasmExports["ts_query_captures_wasm"])(a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
|
1899
|
+
var _iswalpha = Module["_iswalpha"] = a0 => (_iswalpha = Module["_iswalpha"] = wasmExports["iswalpha"])(a0);
|
1900
|
+
var _iswblank = Module["_iswblank"] = a0 => (_iswblank = Module["_iswblank"] = wasmExports["iswblank"])(a0);
|
1901
|
+
var _iswdigit = Module["_iswdigit"] = a0 => (_iswdigit = Module["_iswdigit"] = wasmExports["iswdigit"])(a0);
|
1902
|
+
var _iswlower = Module["_iswlower"] = a0 => (_iswlower = Module["_iswlower"] = wasmExports["iswlower"])(a0);
|
1903
|
+
var _iswupper = Module["_iswupper"] = a0 => (_iswupper = Module["_iswupper"] = wasmExports["iswupper"])(a0);
|
1904
|
+
var _iswxdigit = Module["_iswxdigit"] = a0 => (_iswxdigit = Module["_iswxdigit"] = wasmExports["iswxdigit"])(a0);
|
1905
|
+
var _memchr = Module["_memchr"] = (a0, a1, a2) => (_memchr = Module["_memchr"] = wasmExports["memchr"])(a0, a1, a2);
|
1906
|
+
var _strlen = Module["_strlen"] = a0 => (_strlen = Module["_strlen"] = wasmExports["strlen"])(a0);
|
1907
|
+
var _strcmp = Module["_strcmp"] = (a0, a1) => (_strcmp = Module["_strcmp"] = wasmExports["strcmp"])(a0, a1);
|
1908
|
+
var _strncat = Module["_strncat"] = (a0, a1, a2) => (_strncat = Module["_strncat"] = wasmExports["strncat"])(a0, a1, a2);
|
1909
|
+
var _strncpy = Module["_strncpy"] = (a0, a1, a2) => (_strncpy = Module["_strncpy"] = wasmExports["strncpy"])(a0, a1, a2);
|
1910
|
+
var _towlower = Module["_towlower"] = a0 => (_towlower = Module["_towlower"] = wasmExports["towlower"])(a0);
|
1911
|
+
var _towupper = Module["_towupper"] = a0 => (_towupper = Module["_towupper"] = wasmExports["towupper"])(a0);
|
1912
|
+
var _setThrew = (a0, a1) => (_setThrew = wasmExports["setThrew"])(a0, a1);
|
1913
|
+
var __emscripten_stack_restore = a0 => (__emscripten_stack_restore = wasmExports["_emscripten_stack_restore"])(a0);
|
1914
|
+
var __emscripten_stack_alloc = a0 => (__emscripten_stack_alloc = wasmExports["_emscripten_stack_alloc"])(a0);
|
1915
|
+
var _emscripten_stack_get_current = () => (_emscripten_stack_get_current = wasmExports["emscripten_stack_get_current"])();
|
1916
|
+
var dynCall_jiji = Module["dynCall_jiji"] = (a0, a1, a2, a3, a4) => (dynCall_jiji = Module["dynCall_jiji"] = wasmExports["dynCall_jiji"])(a0, a1, a2, a3, a4);
|
1917
|
+
var _orig$ts_parser_timeout_micros = Module["_orig$ts_parser_timeout_micros"] = a0 => (_orig$ts_parser_timeout_micros = Module["_orig$ts_parser_timeout_micros"] = wasmExports["orig$ts_parser_timeout_micros"])(a0);
|
1918
|
+
var _orig$ts_parser_set_timeout_micros = Module["_orig$ts_parser_set_timeout_micros"] = (a0, a1) => (_orig$ts_parser_set_timeout_micros = Module["_orig$ts_parser_set_timeout_micros"] = wasmExports["orig$ts_parser_set_timeout_micros"])(a0, a1);
|
1919
|
+
// include: postamble.js
|
1920
|
+
// === Auto-generated postamble setup entry stuff ===
|
1921
|
+
Module["AsciiToString"] = AsciiToString;
|
1922
|
+
Module["stringToUTF16"] = stringToUTF16;
|
1923
|
+
var calledRun;
|
1924
|
+
dependenciesFulfilled = function runCaller() {
|
1925
|
+
// If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
|
1926
|
+
if (!calledRun) run();
|
1927
|
+
if (!calledRun) dependenciesFulfilled = runCaller;
|
1928
|
+
};
|
1929
|
+
// try this again later, after new deps are fulfilled
|
1930
|
+
function callMain(args = []) {
|
1931
|
+
var entryFunction = resolveGlobalSymbol("main").sym;
|
1932
|
+
// Main modules can't tell if they have main() at compile time, since it may
|
1933
|
+
// arrive from a dynamic library.
|
1934
|
+
if (!entryFunction) return;
|
1935
|
+
args.unshift(thisProgram);
|
1936
|
+
var argc = args.length;
|
1937
|
+
var argv = stackAlloc((argc + 1) * 4);
|
1938
|
+
var argv_ptr = argv;
|
1939
|
+
args.forEach(arg => {
|
1940
|
+
LE_HEAP_STORE_U32(((argv_ptr) >> 2) * 4, stringToUTF8OnStack(arg));
|
1941
|
+
argv_ptr += 4;
|
1942
|
+
});
|
1943
|
+
LE_HEAP_STORE_U32(((argv_ptr) >> 2) * 4, 0);
|
1944
|
+
try {
|
1945
|
+
var ret = entryFunction(argc, argv);
|
1946
|
+
// if we're not running an evented main loop, it's time to exit
|
1947
|
+
exitJS(ret, /* implicit = */ true);
|
1948
|
+
return ret;
|
1949
|
+
} catch (e) {
|
1950
|
+
return handleException(e);
|
1951
|
+
}
|
1952
|
+
}
|
1953
|
+
function run(args = arguments_) {
|
1954
|
+
if (runDependencies > 0) {
|
1955
|
+
return;
|
1956
|
+
}
|
1957
|
+
preRun();
|
1958
|
+
// a preRun added a dependency, run will be called later
|
1959
|
+
if (runDependencies > 0) {
|
1960
|
+
return;
|
1961
|
+
}
|
1962
|
+
function doRun() {
|
1963
|
+
// run may have just been called through dependencies being fulfilled just in this very frame,
|
1964
|
+
// or while the async setStatus time below was happening
|
1965
|
+
if (calledRun) return;
|
1966
|
+
calledRun = true;
|
1967
|
+
Module["calledRun"] = true;
|
1968
|
+
if (ABORT) return;
|
1969
|
+
initRuntime();
|
1970
|
+
preMain();
|
1971
|
+
Module["onRuntimeInitialized"]?.();
|
1972
|
+
if (shouldRunNow) callMain(args);
|
1973
|
+
postRun();
|
1974
|
+
}
|
1975
|
+
if (Module["setStatus"]) {
|
1976
|
+
Module["setStatus"]("Running...");
|
1977
|
+
setTimeout(function() {
|
1978
|
+
setTimeout(function() {
|
1979
|
+
Module["setStatus"]("");
|
1980
|
+
}, 1);
|
1981
|
+
doRun();
|
1982
|
+
}, 1);
|
1983
|
+
} else {
|
1984
|
+
doRun();
|
1985
|
+
}
|
1986
|
+
}
|
1987
|
+
if (Module["preInit"]) {
|
1988
|
+
if (typeof Module["preInit"] == "function") Module["preInit"] = [ Module["preInit"] ];
|
1989
|
+
while (Module["preInit"].length > 0) {
|
1990
|
+
Module["preInit"].pop()();
|
1991
|
+
}
|
1992
|
+
}
|
1993
|
+
// shouldRunNow refers to calling main(), not run().
|
1994
|
+
var shouldRunNow = true;
|
1995
|
+
if (Module["noInitialRun"]) shouldRunNow = false;
|
1996
|
+
run();
|
1997
|
+
// end include: postamble.js
|
1998
|
+
// include: /mnt/vss/_work/1/s/tree-sitter/lib/binding_web/binding.js
|
1999
|
+
/* eslint-disable-next-line spaced-comment */ /// <reference types="emscripten" />
|
2000
|
+
/* eslint-disable-next-line spaced-comment */ /// <reference path="tree-sitter-web.d.ts"/>
|
2001
|
+
const C = Module;
|
2002
|
+
const INTERNAL = {};
|
2003
|
+
const SIZE_OF_INT = 4;
|
2004
|
+
const SIZE_OF_CURSOR = 4 * SIZE_OF_INT;
|
2005
|
+
const SIZE_OF_NODE = 5 * SIZE_OF_INT;
|
2006
|
+
const SIZE_OF_POINT = 2 * SIZE_OF_INT;
|
2007
|
+
const SIZE_OF_RANGE = 2 * SIZE_OF_INT + 2 * SIZE_OF_POINT;
|
2008
|
+
const ZERO_POINT = {
|
2009
|
+
row: 0,
|
2010
|
+
column: 0
|
2011
|
+
};
|
2012
|
+
const QUERY_WORD_REGEX = /[\w-.]*/g;
|
2013
|
+
const PREDICATE_STEP_TYPE_CAPTURE = 1;
|
2014
|
+
const PREDICATE_STEP_TYPE_STRING = 2;
|
2015
|
+
const LANGUAGE_FUNCTION_REGEX = /^_?tree_sitter_\w+/;
|
2016
|
+
let VERSION;
|
2017
|
+
let MIN_COMPATIBLE_VERSION;
|
2018
|
+
let TRANSFER_BUFFER;
|
2019
|
+
let currentParseCallback;
|
2020
|
+
// eslint-disable-next-line no-unused-vars
|
2021
|
+
let currentLogCallback;
|
2022
|
+
// eslint-disable-next-line no-unused-vars
|
2023
|
+
class ParserImpl {
|
2024
|
+
static init() {
|
2025
|
+
TRANSFER_BUFFER = C._ts_init();
|
2026
|
+
VERSION = getValue(TRANSFER_BUFFER, "i32");
|
2027
|
+
MIN_COMPATIBLE_VERSION = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2028
|
+
}
|
2029
|
+
initialize() {
|
2030
|
+
C._ts_parser_new_wasm();
|
2031
|
+
this[0] = getValue(TRANSFER_BUFFER, "i32");
|
2032
|
+
this[1] = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2033
|
+
}
|
2034
|
+
delete() {
|
2035
|
+
C._ts_parser_delete(this[0]);
|
2036
|
+
C._free(this[1]);
|
2037
|
+
this[0] = 0;
|
2038
|
+
this[1] = 0;
|
2039
|
+
}
|
2040
|
+
setLanguage(language) {
|
2041
|
+
let address;
|
2042
|
+
if (!language) {
|
2043
|
+
address = 0;
|
2044
|
+
language = null;
|
2045
|
+
} else if (language.constructor === Language) {
|
2046
|
+
address = language[0];
|
2047
|
+
const version = C._ts_language_version(address);
|
2048
|
+
if (version < MIN_COMPATIBLE_VERSION || VERSION < version) {
|
2049
|
+
throw new Error(`Incompatible language version ${version}. ` + `Compatibility range ${MIN_COMPATIBLE_VERSION} through ${VERSION}.`);
|
2050
|
+
}
|
2051
|
+
} else {
|
2052
|
+
throw new Error("Argument must be a Language");
|
2053
|
+
}
|
2054
|
+
this.language = language;
|
2055
|
+
C._ts_parser_set_language(this[0], address);
|
2056
|
+
return this;
|
2057
|
+
}
|
2058
|
+
getLanguage() {
|
2059
|
+
return this.language;
|
2060
|
+
}
|
2061
|
+
parse(callback, oldTree, options) {
|
2062
|
+
if (typeof callback === "string") {
|
2063
|
+
currentParseCallback = (index, _) => callback.slice(index);
|
2064
|
+
} else if (typeof callback === "function") {
|
2065
|
+
currentParseCallback = callback;
|
2066
|
+
} else {
|
2067
|
+
throw new Error("Argument must be a string or a function");
|
2068
|
+
}
|
2069
|
+
if (this.logCallback) {
|
2070
|
+
currentLogCallback = this.logCallback;
|
2071
|
+
C._ts_parser_enable_logger_wasm(this[0], 1);
|
2072
|
+
} else {
|
2073
|
+
currentLogCallback = null;
|
2074
|
+
C._ts_parser_enable_logger_wasm(this[0], 0);
|
2075
|
+
}
|
2076
|
+
let rangeCount = 0;
|
2077
|
+
let rangeAddress = 0;
|
2078
|
+
if (options?.includedRanges) {
|
2079
|
+
rangeCount = options.includedRanges.length;
|
2080
|
+
rangeAddress = C._calloc(rangeCount, SIZE_OF_RANGE);
|
2081
|
+
let address = rangeAddress;
|
2082
|
+
for (let i = 0; i < rangeCount; i++) {
|
2083
|
+
marshalRange(address, options.includedRanges[i]);
|
2084
|
+
address += SIZE_OF_RANGE;
|
2085
|
+
}
|
2086
|
+
}
|
2087
|
+
const treeAddress = C._ts_parser_parse_wasm(this[0], this[1], oldTree ? oldTree[0] : 0, rangeAddress, rangeCount);
|
2088
|
+
if (!treeAddress) {
|
2089
|
+
currentParseCallback = null;
|
2090
|
+
currentLogCallback = null;
|
2091
|
+
throw new Error("Parsing failed");
|
2092
|
+
}
|
2093
|
+
const result = new Tree(INTERNAL, treeAddress, this.language, currentParseCallback);
|
2094
|
+
currentParseCallback = null;
|
2095
|
+
currentLogCallback = null;
|
2096
|
+
return result;
|
2097
|
+
}
|
2098
|
+
reset() {
|
2099
|
+
C._ts_parser_reset(this[0]);
|
2100
|
+
}
|
2101
|
+
getIncludedRanges() {
|
2102
|
+
C._ts_parser_included_ranges_wasm(this[0]);
|
2103
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2104
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2105
|
+
const result = new Array(count);
|
2106
|
+
if (count > 0) {
|
2107
|
+
let address = buffer;
|
2108
|
+
for (let i = 0; i < count; i++) {
|
2109
|
+
result[i] = unmarshalRange(address);
|
2110
|
+
address += SIZE_OF_RANGE;
|
2111
|
+
}
|
2112
|
+
C._free(buffer);
|
2113
|
+
}
|
2114
|
+
return result;
|
2115
|
+
}
|
2116
|
+
getTimeoutMicros() {
|
2117
|
+
return C._ts_parser_timeout_micros(this[0]);
|
2118
|
+
}
|
2119
|
+
setTimeoutMicros(timeout) {
|
2120
|
+
C._ts_parser_set_timeout_micros(this[0], timeout);
|
2121
|
+
}
|
2122
|
+
setLogger(callback) {
|
2123
|
+
if (!callback) {
|
2124
|
+
callback = null;
|
2125
|
+
} else if (typeof callback !== "function") {
|
2126
|
+
throw new Error("Logger callback must be a function");
|
2127
|
+
}
|
2128
|
+
this.logCallback = callback;
|
2129
|
+
return this;
|
2130
|
+
}
|
2131
|
+
getLogger() {
|
2132
|
+
return this.logCallback;
|
2133
|
+
}
|
2134
|
+
}
|
2135
|
+
class Tree {
|
2136
|
+
constructor(internal, address, language, textCallback) {
|
2137
|
+
assertInternal(internal);
|
2138
|
+
this[0] = address;
|
2139
|
+
this.language = language;
|
2140
|
+
this.textCallback = textCallback;
|
2141
|
+
}
|
2142
|
+
copy() {
|
2143
|
+
const address = C._ts_tree_copy(this[0]);
|
2144
|
+
return new Tree(INTERNAL, address, this.language, this.textCallback);
|
2145
|
+
}
|
2146
|
+
delete() {
|
2147
|
+
C._ts_tree_delete(this[0]);
|
2148
|
+
this[0] = 0;
|
2149
|
+
}
|
2150
|
+
edit(edit) {
|
2151
|
+
marshalEdit(edit);
|
2152
|
+
C._ts_tree_edit_wasm(this[0]);
|
2153
|
+
}
|
2154
|
+
get rootNode() {
|
2155
|
+
C._ts_tree_root_node_wasm(this[0]);
|
2156
|
+
return unmarshalNode(this);
|
2157
|
+
}
|
2158
|
+
rootNodeWithOffset(offsetBytes, offsetExtent) {
|
2159
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2160
|
+
setValue(address, offsetBytes, "i32");
|
2161
|
+
marshalPoint(address + SIZE_OF_INT, offsetExtent);
|
2162
|
+
C._ts_tree_root_node_with_offset_wasm(this[0]);
|
2163
|
+
return unmarshalNode(this);
|
2164
|
+
}
|
2165
|
+
getLanguage() {
|
2166
|
+
return this.language;
|
2167
|
+
}
|
2168
|
+
walk() {
|
2169
|
+
return this.rootNode.walk();
|
2170
|
+
}
|
2171
|
+
getChangedRanges(other) {
|
2172
|
+
if (other.constructor !== Tree) {
|
2173
|
+
throw new TypeError("Argument must be a Tree");
|
2174
|
+
}
|
2175
|
+
C._ts_tree_get_changed_ranges_wasm(this[0], other[0]);
|
2176
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2177
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2178
|
+
const result = new Array(count);
|
2179
|
+
if (count > 0) {
|
2180
|
+
let address = buffer;
|
2181
|
+
for (let i = 0; i < count; i++) {
|
2182
|
+
result[i] = unmarshalRange(address);
|
2183
|
+
address += SIZE_OF_RANGE;
|
2184
|
+
}
|
2185
|
+
C._free(buffer);
|
2186
|
+
}
|
2187
|
+
return result;
|
2188
|
+
}
|
2189
|
+
getIncludedRanges() {
|
2190
|
+
C._ts_tree_included_ranges_wasm(this[0]);
|
2191
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2192
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2193
|
+
const result = new Array(count);
|
2194
|
+
if (count > 0) {
|
2195
|
+
let address = buffer;
|
2196
|
+
for (let i = 0; i < count; i++) {
|
2197
|
+
result[i] = unmarshalRange(address);
|
2198
|
+
address += SIZE_OF_RANGE;
|
2199
|
+
}
|
2200
|
+
C._free(buffer);
|
2201
|
+
}
|
2202
|
+
return result;
|
2203
|
+
}
|
2204
|
+
}
|
2205
|
+
class Node {
|
2206
|
+
constructor(internal, tree) {
|
2207
|
+
assertInternal(internal);
|
2208
|
+
this.tree = tree;
|
2209
|
+
}
|
2210
|
+
get typeId() {
|
2211
|
+
marshalNode(this);
|
2212
|
+
return C._ts_node_symbol_wasm(this.tree[0]);
|
2213
|
+
}
|
2214
|
+
get grammarId() {
|
2215
|
+
marshalNode(this);
|
2216
|
+
return C._ts_node_grammar_symbol_wasm(this.tree[0]);
|
2217
|
+
}
|
2218
|
+
get type() {
|
2219
|
+
return this.tree.language.types[this.typeId] || "ERROR";
|
2220
|
+
}
|
2221
|
+
get grammarType() {
|
2222
|
+
return this.tree.language.types[this.grammarId] || "ERROR";
|
2223
|
+
}
|
2224
|
+
get endPosition() {
|
2225
|
+
marshalNode(this);
|
2226
|
+
C._ts_node_end_point_wasm(this.tree[0]);
|
2227
|
+
return unmarshalPoint(TRANSFER_BUFFER);
|
2228
|
+
}
|
2229
|
+
get endIndex() {
|
2230
|
+
marshalNode(this);
|
2231
|
+
return C._ts_node_end_index_wasm(this.tree[0]);
|
2232
|
+
}
|
2233
|
+
get text() {
|
2234
|
+
return getText(this.tree, this.startIndex, this.endIndex);
|
2235
|
+
}
|
2236
|
+
get parseState() {
|
2237
|
+
marshalNode(this);
|
2238
|
+
return C._ts_node_parse_state_wasm(this.tree[0]);
|
2239
|
+
}
|
2240
|
+
get nextParseState() {
|
2241
|
+
marshalNode(this);
|
2242
|
+
return C._ts_node_next_parse_state_wasm(this.tree[0]);
|
2243
|
+
}
|
2244
|
+
get isNamed() {
|
2245
|
+
marshalNode(this);
|
2246
|
+
return C._ts_node_is_named_wasm(this.tree[0]) === 1;
|
2247
|
+
}
|
2248
|
+
get hasError() {
|
2249
|
+
marshalNode(this);
|
2250
|
+
return C._ts_node_has_error_wasm(this.tree[0]) === 1;
|
2251
|
+
}
|
2252
|
+
get hasChanges() {
|
2253
|
+
marshalNode(this);
|
2254
|
+
return C._ts_node_has_changes_wasm(this.tree[0]) === 1;
|
2255
|
+
}
|
2256
|
+
get isError() {
|
2257
|
+
marshalNode(this);
|
2258
|
+
return C._ts_node_is_error_wasm(this.tree[0]) === 1;
|
2259
|
+
}
|
2260
|
+
get isMissing() {
|
2261
|
+
marshalNode(this);
|
2262
|
+
return C._ts_node_is_missing_wasm(this.tree[0]) === 1;
|
2263
|
+
}
|
2264
|
+
get isExtra() {
|
2265
|
+
marshalNode(this);
|
2266
|
+
return C._ts_node_is_extra_wasm(this.tree[0]) === 1;
|
2267
|
+
}
|
2268
|
+
equals(other) {
|
2269
|
+
return this.id === other.id;
|
2270
|
+
}
|
2271
|
+
child(index) {
|
2272
|
+
marshalNode(this);
|
2273
|
+
C._ts_node_child_wasm(this.tree[0], index);
|
2274
|
+
return unmarshalNode(this.tree);
|
2275
|
+
}
|
2276
|
+
namedChild(index) {
|
2277
|
+
marshalNode(this);
|
2278
|
+
C._ts_node_named_child_wasm(this.tree[0], index);
|
2279
|
+
return unmarshalNode(this.tree);
|
2280
|
+
}
|
2281
|
+
childForFieldId(fieldId) {
|
2282
|
+
marshalNode(this);
|
2283
|
+
C._ts_node_child_by_field_id_wasm(this.tree[0], fieldId);
|
2284
|
+
return unmarshalNode(this.tree);
|
2285
|
+
}
|
2286
|
+
childForFieldName(fieldName) {
|
2287
|
+
const fieldId = this.tree.language.fields.indexOf(fieldName);
|
2288
|
+
if (fieldId !== -1) return this.childForFieldId(fieldId);
|
2289
|
+
return null;
|
2290
|
+
}
|
2291
|
+
fieldNameForChild(index) {
|
2292
|
+
marshalNode(this);
|
2293
|
+
const address = C._ts_node_field_name_for_child_wasm(this.tree[0], index);
|
2294
|
+
if (!address) {
|
2295
|
+
return null;
|
2296
|
+
}
|
2297
|
+
const result = AsciiToString(address);
|
2298
|
+
// must not free, the string memory is owned by the language
|
2299
|
+
return result;
|
2300
|
+
}
|
2301
|
+
childrenForFieldName(fieldName) {
|
2302
|
+
const fieldId = this.tree.language.fields.indexOf(fieldName);
|
2303
|
+
if (fieldId !== -1 && fieldId !== 0) return this.childrenForFieldId(fieldId);
|
2304
|
+
return [];
|
2305
|
+
}
|
2306
|
+
childrenForFieldId(fieldId) {
|
2307
|
+
marshalNode(this);
|
2308
|
+
C._ts_node_children_by_field_id_wasm(this.tree[0], fieldId);
|
2309
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2310
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2311
|
+
const result = new Array(count);
|
2312
|
+
if (count > 0) {
|
2313
|
+
let address = buffer;
|
2314
|
+
for (let i = 0; i < count; i++) {
|
2315
|
+
result[i] = unmarshalNode(this.tree, address);
|
2316
|
+
address += SIZE_OF_NODE;
|
2317
|
+
}
|
2318
|
+
C._free(buffer);
|
2319
|
+
}
|
2320
|
+
return result;
|
2321
|
+
}
|
2322
|
+
firstChildForIndex(index) {
|
2323
|
+
marshalNode(this);
|
2324
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2325
|
+
setValue(address, index, "i32");
|
2326
|
+
C._ts_node_first_child_for_byte_wasm(this.tree[0]);
|
2327
|
+
return unmarshalNode(this.tree);
|
2328
|
+
}
|
2329
|
+
firstNamedChildForIndex(index) {
|
2330
|
+
marshalNode(this);
|
2331
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2332
|
+
setValue(address, index, "i32");
|
2333
|
+
C._ts_node_first_named_child_for_byte_wasm(this.tree[0]);
|
2334
|
+
return unmarshalNode(this.tree);
|
2335
|
+
}
|
2336
|
+
get childCount() {
|
2337
|
+
marshalNode(this);
|
2338
|
+
return C._ts_node_child_count_wasm(this.tree[0]);
|
2339
|
+
}
|
2340
|
+
get namedChildCount() {
|
2341
|
+
marshalNode(this);
|
2342
|
+
return C._ts_node_named_child_count_wasm(this.tree[0]);
|
2343
|
+
}
|
2344
|
+
get firstChild() {
|
2345
|
+
return this.child(0);
|
2346
|
+
}
|
2347
|
+
get firstNamedChild() {
|
2348
|
+
return this.namedChild(0);
|
2349
|
+
}
|
2350
|
+
get lastChild() {
|
2351
|
+
return this.child(this.childCount - 1);
|
2352
|
+
}
|
2353
|
+
get lastNamedChild() {
|
2354
|
+
return this.namedChild(this.namedChildCount - 1);
|
2355
|
+
}
|
2356
|
+
get children() {
|
2357
|
+
if (!this._children) {
|
2358
|
+
marshalNode(this);
|
2359
|
+
C._ts_node_children_wasm(this.tree[0]);
|
2360
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2361
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2362
|
+
this._children = new Array(count);
|
2363
|
+
if (count > 0) {
|
2364
|
+
let address = buffer;
|
2365
|
+
for (let i = 0; i < count; i++) {
|
2366
|
+
this._children[i] = unmarshalNode(this.tree, address);
|
2367
|
+
address += SIZE_OF_NODE;
|
2368
|
+
}
|
2369
|
+
C._free(buffer);
|
2370
|
+
}
|
2371
|
+
}
|
2372
|
+
return this._children;
|
2373
|
+
}
|
2374
|
+
get namedChildren() {
|
2375
|
+
if (!this._namedChildren) {
|
2376
|
+
marshalNode(this);
|
2377
|
+
C._ts_node_named_children_wasm(this.tree[0]);
|
2378
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
2379
|
+
const buffer = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2380
|
+
this._namedChildren = new Array(count);
|
2381
|
+
if (count > 0) {
|
2382
|
+
let address = buffer;
|
2383
|
+
for (let i = 0; i < count; i++) {
|
2384
|
+
this._namedChildren[i] = unmarshalNode(this.tree, address);
|
2385
|
+
address += SIZE_OF_NODE;
|
2386
|
+
}
|
2387
|
+
C._free(buffer);
|
2388
|
+
}
|
2389
|
+
}
|
2390
|
+
return this._namedChildren;
|
2391
|
+
}
|
2392
|
+
descendantsOfType(types, startPosition, endPosition) {
|
2393
|
+
if (!Array.isArray(types)) types = [ types ];
|
2394
|
+
if (!startPosition) startPosition = ZERO_POINT;
|
2395
|
+
if (!endPosition) endPosition = ZERO_POINT;
|
2396
|
+
// Convert the type strings to numeric type symbols.
|
2397
|
+
const symbols = [];
|
2398
|
+
const typesBySymbol = this.tree.language.types;
|
2399
|
+
for (let i = 0, n = typesBySymbol.length; i < n; i++) {
|
2400
|
+
if (types.includes(typesBySymbol[i])) {
|
2401
|
+
symbols.push(i);
|
2402
|
+
}
|
2403
|
+
}
|
2404
|
+
// Copy the array of symbols to the WASM heap.
|
2405
|
+
const symbolsAddress = C._malloc(SIZE_OF_INT * symbols.length);
|
2406
|
+
for (let i = 0, n = symbols.length; i < n; i++) {
|
2407
|
+
setValue(symbolsAddress + i * SIZE_OF_INT, symbols[i], "i32");
|
2408
|
+
}
|
2409
|
+
// Call the C API to compute the descendants.
|
2410
|
+
marshalNode(this);
|
2411
|
+
C._ts_node_descendants_of_type_wasm(this.tree[0], symbolsAddress, symbols.length, startPosition.row, startPosition.column, endPosition.row, endPosition.column);
|
2412
|
+
// Instantiate the nodes based on the data returned.
|
2413
|
+
const descendantCount = getValue(TRANSFER_BUFFER, "i32");
|
2414
|
+
const descendantAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2415
|
+
const result = new Array(descendantCount);
|
2416
|
+
if (descendantCount > 0) {
|
2417
|
+
let address = descendantAddress;
|
2418
|
+
for (let i = 0; i < descendantCount; i++) {
|
2419
|
+
result[i] = unmarshalNode(this.tree, address);
|
2420
|
+
address += SIZE_OF_NODE;
|
2421
|
+
}
|
2422
|
+
}
|
2423
|
+
// Free the intermediate buffers
|
2424
|
+
C._free(descendantAddress);
|
2425
|
+
C._free(symbolsAddress);
|
2426
|
+
return result;
|
2427
|
+
}
|
2428
|
+
get nextSibling() {
|
2429
|
+
marshalNode(this);
|
2430
|
+
C._ts_node_next_sibling_wasm(this.tree[0]);
|
2431
|
+
return unmarshalNode(this.tree);
|
2432
|
+
}
|
2433
|
+
get previousSibling() {
|
2434
|
+
marshalNode(this);
|
2435
|
+
C._ts_node_prev_sibling_wasm(this.tree[0]);
|
2436
|
+
return unmarshalNode(this.tree);
|
2437
|
+
}
|
2438
|
+
get nextNamedSibling() {
|
2439
|
+
marshalNode(this);
|
2440
|
+
C._ts_node_next_named_sibling_wasm(this.tree[0]);
|
2441
|
+
return unmarshalNode(this.tree);
|
2442
|
+
}
|
2443
|
+
get previousNamedSibling() {
|
2444
|
+
marshalNode(this);
|
2445
|
+
C._ts_node_prev_named_sibling_wasm(this.tree[0]);
|
2446
|
+
return unmarshalNode(this.tree);
|
2447
|
+
}
|
2448
|
+
get descendantCount() {
|
2449
|
+
marshalNode(this);
|
2450
|
+
return C._ts_node_descendant_count_wasm(this.tree[0]);
|
2451
|
+
}
|
2452
|
+
get parent() {
|
2453
|
+
marshalNode(this);
|
2454
|
+
C._ts_node_parent_wasm(this.tree[0]);
|
2455
|
+
return unmarshalNode(this.tree);
|
2456
|
+
}
|
2457
|
+
descendantForIndex(start, end = start) {
|
2458
|
+
if (typeof start !== "number" || typeof end !== "number") {
|
2459
|
+
throw new Error("Arguments must be numbers");
|
2460
|
+
}
|
2461
|
+
marshalNode(this);
|
2462
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2463
|
+
setValue(address, start, "i32");
|
2464
|
+
setValue(address + SIZE_OF_INT, end, "i32");
|
2465
|
+
C._ts_node_descendant_for_index_wasm(this.tree[0]);
|
2466
|
+
return unmarshalNode(this.tree);
|
2467
|
+
}
|
2468
|
+
namedDescendantForIndex(start, end = start) {
|
2469
|
+
if (typeof start !== "number" || typeof end !== "number") {
|
2470
|
+
throw new Error("Arguments must be numbers");
|
2471
|
+
}
|
2472
|
+
marshalNode(this);
|
2473
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2474
|
+
setValue(address, start, "i32");
|
2475
|
+
setValue(address + SIZE_OF_INT, end, "i32");
|
2476
|
+
C._ts_node_named_descendant_for_index_wasm(this.tree[0]);
|
2477
|
+
return unmarshalNode(this.tree);
|
2478
|
+
}
|
2479
|
+
descendantForPosition(start, end = start) {
|
2480
|
+
if (!isPoint(start) || !isPoint(end)) {
|
2481
|
+
throw new Error("Arguments must be {row, column} objects");
|
2482
|
+
}
|
2483
|
+
marshalNode(this);
|
2484
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2485
|
+
marshalPoint(address, start);
|
2486
|
+
marshalPoint(address + SIZE_OF_POINT, end);
|
2487
|
+
C._ts_node_descendant_for_position_wasm(this.tree[0]);
|
2488
|
+
return unmarshalNode(this.tree);
|
2489
|
+
}
|
2490
|
+
namedDescendantForPosition(start, end = start) {
|
2491
|
+
if (!isPoint(start) || !isPoint(end)) {
|
2492
|
+
throw new Error("Arguments must be {row, column} objects");
|
2493
|
+
}
|
2494
|
+
marshalNode(this);
|
2495
|
+
const address = TRANSFER_BUFFER + SIZE_OF_NODE;
|
2496
|
+
marshalPoint(address, start);
|
2497
|
+
marshalPoint(address + SIZE_OF_POINT, end);
|
2498
|
+
C._ts_node_named_descendant_for_position_wasm(this.tree[0]);
|
2499
|
+
return unmarshalNode(this.tree);
|
2500
|
+
}
|
2501
|
+
walk() {
|
2502
|
+
marshalNode(this);
|
2503
|
+
C._ts_tree_cursor_new_wasm(this.tree[0]);
|
2504
|
+
return new TreeCursor(INTERNAL, this.tree);
|
2505
|
+
}
|
2506
|
+
toString() {
|
2507
|
+
marshalNode(this);
|
2508
|
+
const address = C._ts_node_to_string_wasm(this.tree[0]);
|
2509
|
+
const result = AsciiToString(address);
|
2510
|
+
C._free(address);
|
2511
|
+
return result;
|
2512
|
+
}
|
2513
|
+
}
|
2514
|
+
class TreeCursor {
|
2515
|
+
constructor(internal, tree) {
|
2516
|
+
assertInternal(internal);
|
2517
|
+
this.tree = tree;
|
2518
|
+
unmarshalTreeCursor(this);
|
2519
|
+
}
|
2520
|
+
delete() {
|
2521
|
+
marshalTreeCursor(this);
|
2522
|
+
C._ts_tree_cursor_delete_wasm(this.tree[0]);
|
2523
|
+
this[0] = this[1] = this[2] = 0;
|
2524
|
+
}
|
2525
|
+
reset(node) {
|
2526
|
+
marshalNode(node);
|
2527
|
+
marshalTreeCursor(this, TRANSFER_BUFFER + SIZE_OF_NODE);
|
2528
|
+
C._ts_tree_cursor_reset_wasm(this.tree[0]);
|
2529
|
+
unmarshalTreeCursor(this);
|
2530
|
+
}
|
2531
|
+
resetTo(cursor) {
|
2532
|
+
marshalTreeCursor(this, TRANSFER_BUFFER);
|
2533
|
+
marshalTreeCursor(cursor, TRANSFER_BUFFER + SIZE_OF_CURSOR);
|
2534
|
+
C._ts_tree_cursor_reset_to_wasm(this.tree[0], cursor.tree[0]);
|
2535
|
+
unmarshalTreeCursor(this);
|
2536
|
+
}
|
2537
|
+
get nodeType() {
|
2538
|
+
return this.tree.language.types[this.nodeTypeId] || "ERROR";
|
2539
|
+
}
|
2540
|
+
get nodeTypeId() {
|
2541
|
+
marshalTreeCursor(this);
|
2542
|
+
return C._ts_tree_cursor_current_node_type_id_wasm(this.tree[0]);
|
2543
|
+
}
|
2544
|
+
get nodeStateId() {
|
2545
|
+
marshalTreeCursor(this);
|
2546
|
+
return C._ts_tree_cursor_current_node_state_id_wasm(this.tree[0]);
|
2547
|
+
}
|
2548
|
+
get nodeId() {
|
2549
|
+
marshalTreeCursor(this);
|
2550
|
+
return C._ts_tree_cursor_current_node_id_wasm(this.tree[0]);
|
2551
|
+
}
|
2552
|
+
get nodeIsNamed() {
|
2553
|
+
marshalTreeCursor(this);
|
2554
|
+
return C._ts_tree_cursor_current_node_is_named_wasm(this.tree[0]) === 1;
|
2555
|
+
}
|
2556
|
+
get nodeIsMissing() {
|
2557
|
+
marshalTreeCursor(this);
|
2558
|
+
return C._ts_tree_cursor_current_node_is_missing_wasm(this.tree[0]) === 1;
|
2559
|
+
}
|
2560
|
+
get nodeText() {
|
2561
|
+
marshalTreeCursor(this);
|
2562
|
+
const startIndex = C._ts_tree_cursor_start_index_wasm(this.tree[0]);
|
2563
|
+
const endIndex = C._ts_tree_cursor_end_index_wasm(this.tree[0]);
|
2564
|
+
return getText(this.tree, startIndex, endIndex);
|
2565
|
+
}
|
2566
|
+
get startPosition() {
|
2567
|
+
marshalTreeCursor(this);
|
2568
|
+
C._ts_tree_cursor_start_position_wasm(this.tree[0]);
|
2569
|
+
return unmarshalPoint(TRANSFER_BUFFER);
|
2570
|
+
}
|
2571
|
+
get endPosition() {
|
2572
|
+
marshalTreeCursor(this);
|
2573
|
+
C._ts_tree_cursor_end_position_wasm(this.tree[0]);
|
2574
|
+
return unmarshalPoint(TRANSFER_BUFFER);
|
2575
|
+
}
|
2576
|
+
get startIndex() {
|
2577
|
+
marshalTreeCursor(this);
|
2578
|
+
return C._ts_tree_cursor_start_index_wasm(this.tree[0]);
|
2579
|
+
}
|
2580
|
+
get endIndex() {
|
2581
|
+
marshalTreeCursor(this);
|
2582
|
+
return C._ts_tree_cursor_end_index_wasm(this.tree[0]);
|
2583
|
+
}
|
2584
|
+
get currentNode() {
|
2585
|
+
marshalTreeCursor(this);
|
2586
|
+
C._ts_tree_cursor_current_node_wasm(this.tree[0]);
|
2587
|
+
return unmarshalNode(this.tree);
|
2588
|
+
}
|
2589
|
+
get currentFieldId() {
|
2590
|
+
marshalTreeCursor(this);
|
2591
|
+
return C._ts_tree_cursor_current_field_id_wasm(this.tree[0]);
|
2592
|
+
}
|
2593
|
+
get currentFieldName() {
|
2594
|
+
return this.tree.language.fields[this.currentFieldId];
|
2595
|
+
}
|
2596
|
+
get currentDepth() {
|
2597
|
+
marshalTreeCursor(this);
|
2598
|
+
return C._ts_tree_cursor_current_depth_wasm(this.tree[0]);
|
2599
|
+
}
|
2600
|
+
get currentDescendantIndex() {
|
2601
|
+
marshalTreeCursor(this);
|
2602
|
+
return C._ts_tree_cursor_current_descendant_index_wasm(this.tree[0]);
|
2603
|
+
}
|
2604
|
+
gotoFirstChild() {
|
2605
|
+
marshalTreeCursor(this);
|
2606
|
+
const result = C._ts_tree_cursor_goto_first_child_wasm(this.tree[0]);
|
2607
|
+
unmarshalTreeCursor(this);
|
2608
|
+
return result === 1;
|
2609
|
+
}
|
2610
|
+
gotoLastChild() {
|
2611
|
+
marshalTreeCursor(this);
|
2612
|
+
const result = C._ts_tree_cursor_goto_last_child_wasm(this.tree[0]);
|
2613
|
+
unmarshalTreeCursor(this);
|
2614
|
+
return result === 1;
|
2615
|
+
}
|
2616
|
+
gotoFirstChildForIndex(goalIndex) {
|
2617
|
+
marshalTreeCursor(this);
|
2618
|
+
setValue(TRANSFER_BUFFER + SIZE_OF_CURSOR, goalIndex, "i32");
|
2619
|
+
const result = C._ts_tree_cursor_goto_first_child_for_index_wasm(this.tree[0]);
|
2620
|
+
unmarshalTreeCursor(this);
|
2621
|
+
return result === 1;
|
2622
|
+
}
|
2623
|
+
gotoFirstChildForPosition(goalPosition) {
|
2624
|
+
marshalTreeCursor(this);
|
2625
|
+
marshalPoint(TRANSFER_BUFFER + SIZE_OF_CURSOR, goalPosition);
|
2626
|
+
const result = C._ts_tree_cursor_goto_first_child_for_position_wasm(this.tree[0]);
|
2627
|
+
unmarshalTreeCursor(this);
|
2628
|
+
return result === 1;
|
2629
|
+
}
|
2630
|
+
gotoNextSibling() {
|
2631
|
+
marshalTreeCursor(this);
|
2632
|
+
const result = C._ts_tree_cursor_goto_next_sibling_wasm(this.tree[0]);
|
2633
|
+
unmarshalTreeCursor(this);
|
2634
|
+
return result === 1;
|
2635
|
+
}
|
2636
|
+
gotoPreviousSibling() {
|
2637
|
+
marshalTreeCursor(this);
|
2638
|
+
const result = C._ts_tree_cursor_goto_previous_sibling_wasm(this.tree[0]);
|
2639
|
+
unmarshalTreeCursor(this);
|
2640
|
+
return result === 1;
|
2641
|
+
}
|
2642
|
+
gotoDescendant(goalDescendantindex) {
|
2643
|
+
marshalTreeCursor(this);
|
2644
|
+
C._ts_tree_cursor_goto_descendant_wasm(this.tree[0], goalDescendantindex);
|
2645
|
+
unmarshalTreeCursor(this);
|
2646
|
+
}
|
2647
|
+
gotoParent() {
|
2648
|
+
marshalTreeCursor(this);
|
2649
|
+
const result = C._ts_tree_cursor_goto_parent_wasm(this.tree[0]);
|
2650
|
+
unmarshalTreeCursor(this);
|
2651
|
+
return result === 1;
|
2652
|
+
}
|
2653
|
+
}
|
2654
|
+
class Language {
|
2655
|
+
constructor(internal, address) {
|
2656
|
+
assertInternal(internal);
|
2657
|
+
this[0] = address;
|
2658
|
+
this.types = new Array(C._ts_language_symbol_count(this[0]));
|
2659
|
+
for (let i = 0, n = this.types.length; i < n; i++) {
|
2660
|
+
if (C._ts_language_symbol_type(this[0], i) < 2) {
|
2661
|
+
this.types[i] = UTF8ToString(C._ts_language_symbol_name(this[0], i));
|
2662
|
+
}
|
2663
|
+
}
|
2664
|
+
this.fields = new Array(C._ts_language_field_count(this[0]) + 1);
|
2665
|
+
for (let i = 0, n = this.fields.length; i < n; i++) {
|
2666
|
+
const fieldName = C._ts_language_field_name_for_id(this[0], i);
|
2667
|
+
if (fieldName !== 0) {
|
2668
|
+
this.fields[i] = UTF8ToString(fieldName);
|
2669
|
+
} else {
|
2670
|
+
this.fields[i] = null;
|
2671
|
+
}
|
2672
|
+
}
|
2673
|
+
}
|
2674
|
+
get version() {
|
2675
|
+
return C._ts_language_version(this[0]);
|
2676
|
+
}
|
2677
|
+
get fieldCount() {
|
2678
|
+
return this.fields.length - 1;
|
2679
|
+
}
|
2680
|
+
get stateCount() {
|
2681
|
+
return C._ts_language_state_count(this[0]);
|
2682
|
+
}
|
2683
|
+
fieldIdForName(fieldName) {
|
2684
|
+
const result = this.fields.indexOf(fieldName);
|
2685
|
+
if (result !== -1) {
|
2686
|
+
return result;
|
2687
|
+
} else {
|
2688
|
+
return null;
|
2689
|
+
}
|
2690
|
+
}
|
2691
|
+
fieldNameForId(fieldId) {
|
2692
|
+
return this.fields[fieldId] || null;
|
2693
|
+
}
|
2694
|
+
idForNodeType(type, named) {
|
2695
|
+
const typeLength = lengthBytesUTF8(type);
|
2696
|
+
const typeAddress = C._malloc(typeLength + 1);
|
2697
|
+
stringToUTF8(type, typeAddress, typeLength + 1);
|
2698
|
+
const result = C._ts_language_symbol_for_name(this[0], typeAddress, typeLength, named);
|
2699
|
+
C._free(typeAddress);
|
2700
|
+
return result || null;
|
2701
|
+
}
|
2702
|
+
get nodeTypeCount() {
|
2703
|
+
return C._ts_language_symbol_count(this[0]);
|
2704
|
+
}
|
2705
|
+
nodeTypeForId(typeId) {
|
2706
|
+
const name = C._ts_language_symbol_name(this[0], typeId);
|
2707
|
+
return name ? UTF8ToString(name) : null;
|
2708
|
+
}
|
2709
|
+
nodeTypeIsNamed(typeId) {
|
2710
|
+
return C._ts_language_type_is_named_wasm(this[0], typeId) ? true : false;
|
2711
|
+
}
|
2712
|
+
nodeTypeIsVisible(typeId) {
|
2713
|
+
return C._ts_language_type_is_visible_wasm(this[0], typeId) ? true : false;
|
2714
|
+
}
|
2715
|
+
nextState(stateId, typeId) {
|
2716
|
+
return C._ts_language_next_state(this[0], stateId, typeId);
|
2717
|
+
}
|
2718
|
+
lookaheadIterator(stateId) {
|
2719
|
+
const address = C._ts_lookahead_iterator_new(this[0], stateId);
|
2720
|
+
if (address) return new LookaheadIterable(INTERNAL, address, this);
|
2721
|
+
return null;
|
2722
|
+
}
|
2723
|
+
query(source) {
|
2724
|
+
const sourceLength = lengthBytesUTF8(source);
|
2725
|
+
const sourceAddress = C._malloc(sourceLength + 1);
|
2726
|
+
stringToUTF8(source, sourceAddress, sourceLength + 1);
|
2727
|
+
const address = C._ts_query_new(this[0], sourceAddress, sourceLength, TRANSFER_BUFFER, TRANSFER_BUFFER + SIZE_OF_INT);
|
2728
|
+
if (!address) {
|
2729
|
+
const errorId = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
2730
|
+
const errorByte = getValue(TRANSFER_BUFFER, "i32");
|
2731
|
+
const errorIndex = UTF8ToString(sourceAddress, errorByte).length;
|
2732
|
+
const suffix = source.substr(errorIndex, 100).split("\n")[0];
|
2733
|
+
let word = suffix.match(QUERY_WORD_REGEX)[0];
|
2734
|
+
let error;
|
2735
|
+
switch (errorId) {
|
2736
|
+
case 2:
|
2737
|
+
error = new RangeError(`Bad node name '${word}'`);
|
2738
|
+
break;
|
2739
|
+
|
2740
|
+
case 3:
|
2741
|
+
error = new RangeError(`Bad field name '${word}'`);
|
2742
|
+
break;
|
2743
|
+
|
2744
|
+
case 4:
|
2745
|
+
error = new RangeError(`Bad capture name @${word}`);
|
2746
|
+
break;
|
2747
|
+
|
2748
|
+
case 5:
|
2749
|
+
error = new TypeError(`Bad pattern structure at offset ${errorIndex}: '${suffix}'...`);
|
2750
|
+
word = "";
|
2751
|
+
break;
|
2752
|
+
|
2753
|
+
default:
|
2754
|
+
error = new SyntaxError(`Bad syntax at offset ${errorIndex}: '${suffix}'...`);
|
2755
|
+
word = "";
|
2756
|
+
break;
|
2757
|
+
}
|
2758
|
+
error.index = errorIndex;
|
2759
|
+
error.length = word.length;
|
2760
|
+
C._free(sourceAddress);
|
2761
|
+
throw error;
|
2762
|
+
}
|
2763
|
+
const stringCount = C._ts_query_string_count(address);
|
2764
|
+
const captureCount = C._ts_query_capture_count(address);
|
2765
|
+
const patternCount = C._ts_query_pattern_count(address);
|
2766
|
+
const captureNames = new Array(captureCount);
|
2767
|
+
const stringValues = new Array(stringCount);
|
2768
|
+
for (let i = 0; i < captureCount; i++) {
|
2769
|
+
const nameAddress = C._ts_query_capture_name_for_id(address, i, TRANSFER_BUFFER);
|
2770
|
+
const nameLength = getValue(TRANSFER_BUFFER, "i32");
|
2771
|
+
captureNames[i] = UTF8ToString(nameAddress, nameLength);
|
2772
|
+
}
|
2773
|
+
for (let i = 0; i < stringCount; i++) {
|
2774
|
+
const valueAddress = C._ts_query_string_value_for_id(address, i, TRANSFER_BUFFER);
|
2775
|
+
const nameLength = getValue(TRANSFER_BUFFER, "i32");
|
2776
|
+
stringValues[i] = UTF8ToString(valueAddress, nameLength);
|
2777
|
+
}
|
2778
|
+
const setProperties = new Array(patternCount);
|
2779
|
+
const assertedProperties = new Array(patternCount);
|
2780
|
+
const refutedProperties = new Array(patternCount);
|
2781
|
+
const predicates = new Array(patternCount);
|
2782
|
+
const textPredicates = new Array(patternCount);
|
2783
|
+
for (let i = 0; i < patternCount; i++) {
|
2784
|
+
const predicatesAddress = C._ts_query_predicates_for_pattern(address, i, TRANSFER_BUFFER);
|
2785
|
+
const stepCount = getValue(TRANSFER_BUFFER, "i32");
|
2786
|
+
predicates[i] = [];
|
2787
|
+
textPredicates[i] = [];
|
2788
|
+
const steps = [];
|
2789
|
+
let stepAddress = predicatesAddress;
|
2790
|
+
for (let j = 0; j < stepCount; j++) {
|
2791
|
+
const stepType = getValue(stepAddress, "i32");
|
2792
|
+
stepAddress += SIZE_OF_INT;
|
2793
|
+
const stepValueId = getValue(stepAddress, "i32");
|
2794
|
+
stepAddress += SIZE_OF_INT;
|
2795
|
+
if (stepType === PREDICATE_STEP_TYPE_CAPTURE) {
|
2796
|
+
steps.push({
|
2797
|
+
type: "capture",
|
2798
|
+
name: captureNames[stepValueId]
|
2799
|
+
});
|
2800
|
+
} else if (stepType === PREDICATE_STEP_TYPE_STRING) {
|
2801
|
+
steps.push({
|
2802
|
+
type: "string",
|
2803
|
+
value: stringValues[stepValueId]
|
2804
|
+
});
|
2805
|
+
} else if (steps.length > 0) {
|
2806
|
+
if (steps[0].type !== "string") {
|
2807
|
+
throw new Error("Predicates must begin with a literal value");
|
2808
|
+
}
|
2809
|
+
const operator = steps[0].value;
|
2810
|
+
let isPositive = true;
|
2811
|
+
let matchAll = true;
|
2812
|
+
let captureName;
|
2813
|
+
switch (operator) {
|
2814
|
+
case "any-not-eq?":
|
2815
|
+
case "not-eq?":
|
2816
|
+
isPositive = false;
|
2817
|
+
|
2818
|
+
case "any-eq?":
|
2819
|
+
case "eq?":
|
2820
|
+
if (steps.length !== 3) {
|
2821
|
+
throw new Error(`Wrong number of arguments to \`#${operator}\` predicate. Expected 2, got ${steps.length - 1}`);
|
2822
|
+
}
|
2823
|
+
if (steps[1].type !== "capture") {
|
2824
|
+
throw new Error(`First argument of \`#${operator}\` predicate must be a capture. Got "${steps[1].value}"`);
|
2825
|
+
}
|
2826
|
+
matchAll = !operator.startsWith("any-");
|
2827
|
+
if (steps[2].type === "capture") {
|
2828
|
+
const captureName1 = steps[1].name;
|
2829
|
+
const captureName2 = steps[2].name;
|
2830
|
+
textPredicates[i].push(captures => {
|
2831
|
+
const nodes1 = [];
|
2832
|
+
const nodes2 = [];
|
2833
|
+
for (const c of captures) {
|
2834
|
+
if (c.name === captureName1) nodes1.push(c.node);
|
2835
|
+
if (c.name === captureName2) nodes2.push(c.node);
|
2836
|
+
}
|
2837
|
+
const compare = (n1, n2, positive) => positive ? n1.text === n2.text : n1.text !== n2.text;
|
2838
|
+
return matchAll ? nodes1.every(n1 => nodes2.some(n2 => compare(n1, n2, isPositive))) : nodes1.some(n1 => nodes2.some(n2 => compare(n1, n2, isPositive)));
|
2839
|
+
});
|
2840
|
+
} else {
|
2841
|
+
captureName = steps[1].name;
|
2842
|
+
const stringValue = steps[2].value;
|
2843
|
+
const matches = n => n.text === stringValue;
|
2844
|
+
const doesNotMatch = n => n.text !== stringValue;
|
2845
|
+
textPredicates[i].push(captures => {
|
2846
|
+
const nodes = [];
|
2847
|
+
for (const c of captures) {
|
2848
|
+
if (c.name === captureName) nodes.push(c.node);
|
2849
|
+
}
|
2850
|
+
const test = isPositive ? matches : doesNotMatch;
|
2851
|
+
return matchAll ? nodes.every(test) : nodes.some(test);
|
2852
|
+
});
|
2853
|
+
}
|
2854
|
+
break;
|
2855
|
+
|
2856
|
+
case "any-not-match?":
|
2857
|
+
case "not-match?":
|
2858
|
+
isPositive = false;
|
2859
|
+
|
2860
|
+
case "any-match?":
|
2861
|
+
case "match?":
|
2862
|
+
if (steps.length !== 3) {
|
2863
|
+
throw new Error(`Wrong number of arguments to \`#${operator}\` predicate. Expected 2, got ${steps.length - 1}.`);
|
2864
|
+
}
|
2865
|
+
if (steps[1].type !== "capture") {
|
2866
|
+
throw new Error(`First argument of \`#${operator}\` predicate must be a capture. Got "${steps[1].value}".`);
|
2867
|
+
}
|
2868
|
+
if (steps[2].type !== "string") {
|
2869
|
+
throw new Error(`Second argument of \`#${operator}\` predicate must be a string. Got @${steps[2].value}.`);
|
2870
|
+
}
|
2871
|
+
captureName = steps[1].name;
|
2872
|
+
const regex = new RegExp(steps[2].value);
|
2873
|
+
matchAll = !operator.startsWith("any-");
|
2874
|
+
textPredicates[i].push(captures => {
|
2875
|
+
const nodes = [];
|
2876
|
+
for (const c of captures) {
|
2877
|
+
if (c.name === captureName) nodes.push(c.node.text);
|
2878
|
+
}
|
2879
|
+
const test = (text, positive) => positive ? regex.test(text) : !regex.test(text);
|
2880
|
+
if (nodes.length === 0) return !isPositive;
|
2881
|
+
return matchAll ? nodes.every(text => test(text, isPositive)) : nodes.some(text => test(text, isPositive));
|
2882
|
+
});
|
2883
|
+
break;
|
2884
|
+
|
2885
|
+
case "set!":
|
2886
|
+
if (steps.length < 2 || steps.length > 3) {
|
2887
|
+
throw new Error(`Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`);
|
2888
|
+
}
|
2889
|
+
if (steps.some(s => s.type !== "string")) {
|
2890
|
+
throw new Error(`Arguments to \`#set!\` predicate must be a strings.".`);
|
2891
|
+
}
|
2892
|
+
if (!setProperties[i]) setProperties[i] = {};
|
2893
|
+
setProperties[i][steps[1].value] = steps[2] ? steps[2].value : null;
|
2894
|
+
break;
|
2895
|
+
|
2896
|
+
case "is?":
|
2897
|
+
case "is-not?":
|
2898
|
+
if (steps.length < 2 || steps.length > 3) {
|
2899
|
+
throw new Error(`Wrong number of arguments to \`#${operator}\` predicate. Expected 1 or 2. Got ${steps.length - 1}.`);
|
2900
|
+
}
|
2901
|
+
if (steps.some(s => s.type !== "string")) {
|
2902
|
+
throw new Error(`Arguments to \`#${operator}\` predicate must be a strings.".`);
|
2903
|
+
}
|
2904
|
+
const properties = operator === "is?" ? assertedProperties : refutedProperties;
|
2905
|
+
if (!properties[i]) properties[i] = {};
|
2906
|
+
properties[i][steps[1].value] = steps[2] ? steps[2].value : null;
|
2907
|
+
break;
|
2908
|
+
|
2909
|
+
case "not-any-of?":
|
2910
|
+
isPositive = false;
|
2911
|
+
|
2912
|
+
case "any-of?":
|
2913
|
+
if (steps.length < 2) {
|
2914
|
+
throw new Error(`Wrong number of arguments to \`#${operator}\` predicate. Expected at least 1. Got ${steps.length - 1}.`);
|
2915
|
+
}
|
2916
|
+
if (steps[1].type !== "capture") {
|
2917
|
+
throw new Error(`First argument of \`#${operator}\` predicate must be a capture. Got "${steps[1].value}".`);
|
2918
|
+
}
|
2919
|
+
for (let i = 2; i < steps.length; i++) {
|
2920
|
+
if (steps[i].type !== "string") {
|
2921
|
+
throw new Error(`Arguments to \`#${operator}\` predicate must be a strings.".`);
|
2922
|
+
}
|
2923
|
+
}
|
2924
|
+
captureName = steps[1].name;
|
2925
|
+
const values = steps.slice(2).map(s => s.value);
|
2926
|
+
textPredicates[i].push(captures => {
|
2927
|
+
const nodes = [];
|
2928
|
+
for (const c of captures) {
|
2929
|
+
if (c.name === captureName) nodes.push(c.node.text);
|
2930
|
+
}
|
2931
|
+
if (nodes.length === 0) return !isPositive;
|
2932
|
+
return nodes.every(text => values.includes(text)) === isPositive;
|
2933
|
+
});
|
2934
|
+
break;
|
2935
|
+
|
2936
|
+
default:
|
2937
|
+
predicates[i].push({
|
2938
|
+
operator: operator,
|
2939
|
+
operands: steps.slice(1)
|
2940
|
+
});
|
2941
|
+
}
|
2942
|
+
steps.length = 0;
|
2943
|
+
}
|
2944
|
+
}
|
2945
|
+
Object.freeze(setProperties[i]);
|
2946
|
+
Object.freeze(assertedProperties[i]);
|
2947
|
+
Object.freeze(refutedProperties[i]);
|
2948
|
+
}
|
2949
|
+
C._free(sourceAddress);
|
2950
|
+
return new Query(INTERNAL, address, captureNames, textPredicates, predicates, Object.freeze(setProperties), Object.freeze(assertedProperties), Object.freeze(refutedProperties));
|
2951
|
+
}
|
2952
|
+
static load(input) {
|
2953
|
+
let bytes;
|
2954
|
+
if (input instanceof Uint8Array) {
|
2955
|
+
bytes = Promise.resolve(input);
|
2956
|
+
} else {
|
2957
|
+
const url = input;
|
2958
|
+
if (typeof process !== "undefined" && process.versions && process.versions.node) {
|
2959
|
+
const fs = require("fs");
|
2960
|
+
bytes = Promise.resolve(fs.readFileSync(url));
|
2961
|
+
} else {
|
2962
|
+
bytes = fetch(url).then(response => response.arrayBuffer().then(buffer => {
|
2963
|
+
if (response.ok) {
|
2964
|
+
return new Uint8Array(buffer);
|
2965
|
+
} else {
|
2966
|
+
const body = new TextDecoder("utf-8").decode(buffer);
|
2967
|
+
throw new Error(`Language.load failed with status ${response.status}.\n\n${body}`);
|
2968
|
+
}
|
2969
|
+
}));
|
2970
|
+
}
|
2971
|
+
}
|
2972
|
+
return bytes.then(bytes => loadWebAssemblyModule(bytes, {
|
2973
|
+
loadAsync: true
|
2974
|
+
})).then(mod => {
|
2975
|
+
const symbolNames = Object.keys(mod);
|
2976
|
+
const functionName = symbolNames.find(key => LANGUAGE_FUNCTION_REGEX.test(key) && !key.includes("external_scanner_"));
|
2977
|
+
if (!functionName) {
|
2978
|
+
console.log(`Couldn't find language function in WASM file. Symbols:\n${JSON.stringify(symbolNames, null, 2)}`);
|
2979
|
+
}
|
2980
|
+
const languageAddress = mod[functionName]();
|
2981
|
+
return new Language(INTERNAL, languageAddress);
|
2982
|
+
});
|
2983
|
+
}
|
2984
|
+
}
|
2985
|
+
class LookaheadIterable {
|
2986
|
+
constructor(internal, address, language) {
|
2987
|
+
assertInternal(internal);
|
2988
|
+
this[0] = address;
|
2989
|
+
this.language = language;
|
2990
|
+
}
|
2991
|
+
get currentTypeId() {
|
2992
|
+
return C._ts_lookahead_iterator_current_symbol(this[0]);
|
2993
|
+
}
|
2994
|
+
get currentType() {
|
2995
|
+
return this.language.types[this.currentTypeId] || "ERROR";
|
2996
|
+
}
|
2997
|
+
delete() {
|
2998
|
+
C._ts_lookahead_iterator_delete(this[0]);
|
2999
|
+
this[0] = 0;
|
3000
|
+
}
|
3001
|
+
resetState(stateId) {
|
3002
|
+
return C._ts_lookahead_iterator_reset_state(this[0], stateId);
|
3003
|
+
}
|
3004
|
+
reset(language, stateId) {
|
3005
|
+
if (C._ts_lookahead_iterator_reset(this[0], language[0], stateId)) {
|
3006
|
+
this.language = language;
|
3007
|
+
return true;
|
3008
|
+
}
|
3009
|
+
return false;
|
3010
|
+
}
|
3011
|
+
[Symbol.iterator]() {
|
3012
|
+
const self = this;
|
3013
|
+
return {
|
3014
|
+
next() {
|
3015
|
+
if (C._ts_lookahead_iterator_next(self[0])) {
|
3016
|
+
return {
|
3017
|
+
done: false,
|
3018
|
+
value: self.currentType
|
3019
|
+
};
|
3020
|
+
}
|
3021
|
+
return {
|
3022
|
+
done: true,
|
3023
|
+
value: ""
|
3024
|
+
};
|
3025
|
+
}
|
3026
|
+
};
|
3027
|
+
}
|
3028
|
+
}
|
3029
|
+
class Query {
|
3030
|
+
constructor(internal, address, captureNames, textPredicates, predicates, setProperties, assertedProperties, refutedProperties) {
|
3031
|
+
assertInternal(internal);
|
3032
|
+
this[0] = address;
|
3033
|
+
this.captureNames = captureNames;
|
3034
|
+
this.textPredicates = textPredicates;
|
3035
|
+
this.predicates = predicates;
|
3036
|
+
this.setProperties = setProperties;
|
3037
|
+
this.assertedProperties = assertedProperties;
|
3038
|
+
this.refutedProperties = refutedProperties;
|
3039
|
+
this.exceededMatchLimit = false;
|
3040
|
+
}
|
3041
|
+
delete() {
|
3042
|
+
C._ts_query_delete(this[0]);
|
3043
|
+
this[0] = 0;
|
3044
|
+
}
|
3045
|
+
matches(node, {startPosition: startPosition = ZERO_POINT, endPosition: endPosition = ZERO_POINT, startIndex: startIndex = 0, endIndex: endIndex = 0, matchLimit: matchLimit = 4294967295, maxStartDepth: maxStartDepth = 4294967295} = {}) {
|
3046
|
+
if (typeof matchLimit !== "number") {
|
3047
|
+
throw new Error("Arguments must be numbers");
|
3048
|
+
}
|
3049
|
+
marshalNode(node);
|
3050
|
+
C._ts_query_matches_wasm(this[0], node.tree[0], startPosition.row, startPosition.column, endPosition.row, endPosition.column, startIndex, endIndex, matchLimit, maxStartDepth);
|
3051
|
+
const rawCount = getValue(TRANSFER_BUFFER, "i32");
|
3052
|
+
const startAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
3053
|
+
const didExceedMatchLimit = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32");
|
3054
|
+
const result = new Array(rawCount);
|
3055
|
+
this.exceededMatchLimit = Boolean(didExceedMatchLimit);
|
3056
|
+
let filteredCount = 0;
|
3057
|
+
let address = startAddress;
|
3058
|
+
for (let i = 0; i < rawCount; i++) {
|
3059
|
+
const pattern = getValue(address, "i32");
|
3060
|
+
address += SIZE_OF_INT;
|
3061
|
+
const captureCount = getValue(address, "i32");
|
3062
|
+
address += SIZE_OF_INT;
|
3063
|
+
const captures = new Array(captureCount);
|
3064
|
+
address = unmarshalCaptures(this, node.tree, address, captures);
|
3065
|
+
if (this.textPredicates[pattern].every(p => p(captures))) {
|
3066
|
+
result[filteredCount] = {
|
3067
|
+
pattern: pattern,
|
3068
|
+
captures: captures
|
3069
|
+
};
|
3070
|
+
const setProperties = this.setProperties[pattern];
|
3071
|
+
if (setProperties) result[filteredCount].setProperties = setProperties;
|
3072
|
+
const assertedProperties = this.assertedProperties[pattern];
|
3073
|
+
if (assertedProperties) result[filteredCount].assertedProperties = assertedProperties;
|
3074
|
+
const refutedProperties = this.refutedProperties[pattern];
|
3075
|
+
if (refutedProperties) result[filteredCount].refutedProperties = refutedProperties;
|
3076
|
+
filteredCount++;
|
3077
|
+
}
|
3078
|
+
}
|
3079
|
+
result.length = filteredCount;
|
3080
|
+
C._free(startAddress);
|
3081
|
+
return result;
|
3082
|
+
}
|
3083
|
+
captures(node, {startPosition: startPosition = ZERO_POINT, endPosition: endPosition = ZERO_POINT, startIndex: startIndex = 0, endIndex: endIndex = 0, matchLimit: matchLimit = 4294967295, maxStartDepth: maxStartDepth = 4294967295} = {}) {
|
3084
|
+
if (typeof matchLimit !== "number") {
|
3085
|
+
throw new Error("Arguments must be numbers");
|
3086
|
+
}
|
3087
|
+
marshalNode(node);
|
3088
|
+
C._ts_query_captures_wasm(this[0], node.tree[0], startPosition.row, startPosition.column, endPosition.row, endPosition.column, startIndex, endIndex, matchLimit, maxStartDepth);
|
3089
|
+
const count = getValue(TRANSFER_BUFFER, "i32");
|
3090
|
+
const startAddress = getValue(TRANSFER_BUFFER + SIZE_OF_INT, "i32");
|
3091
|
+
const didExceedMatchLimit = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32");
|
3092
|
+
const result = [];
|
3093
|
+
this.exceededMatchLimit = Boolean(didExceedMatchLimit);
|
3094
|
+
const captures = [];
|
3095
|
+
let address = startAddress;
|
3096
|
+
for (let i = 0; i < count; i++) {
|
3097
|
+
const pattern = getValue(address, "i32");
|
3098
|
+
address += SIZE_OF_INT;
|
3099
|
+
const captureCount = getValue(address, "i32");
|
3100
|
+
address += SIZE_OF_INT;
|
3101
|
+
const captureIndex = getValue(address, "i32");
|
3102
|
+
address += SIZE_OF_INT;
|
3103
|
+
captures.length = captureCount;
|
3104
|
+
address = unmarshalCaptures(this, node.tree, address, captures);
|
3105
|
+
if (this.textPredicates[pattern].every(p => p(captures))) {
|
3106
|
+
const capture = captures[captureIndex];
|
3107
|
+
const setProperties = this.setProperties[pattern];
|
3108
|
+
if (setProperties) capture.setProperties = setProperties;
|
3109
|
+
const assertedProperties = this.assertedProperties[pattern];
|
3110
|
+
if (assertedProperties) capture.assertedProperties = assertedProperties;
|
3111
|
+
const refutedProperties = this.refutedProperties[pattern];
|
3112
|
+
if (refutedProperties) capture.refutedProperties = refutedProperties;
|
3113
|
+
result.push(capture);
|
3114
|
+
}
|
3115
|
+
}
|
3116
|
+
C._free(startAddress);
|
3117
|
+
return result;
|
3118
|
+
}
|
3119
|
+
predicatesForPattern(patternIndex) {
|
3120
|
+
return this.predicates[patternIndex];
|
3121
|
+
}
|
3122
|
+
disableCapture(captureName) {
|
3123
|
+
const captureNameLength = lengthBytesUTF8(captureName);
|
3124
|
+
const captureNameAddress = C._malloc(captureNameLength + 1);
|
3125
|
+
stringToUTF8(captureName, captureNameAddress, captureNameLength + 1);
|
3126
|
+
C._ts_query_disable_capture(this[0], captureNameAddress, captureNameLength);
|
3127
|
+
C._free(captureNameAddress);
|
3128
|
+
}
|
3129
|
+
didExceedMatchLimit() {
|
3130
|
+
return this.exceededMatchLimit;
|
3131
|
+
}
|
3132
|
+
}
|
3133
|
+
function getText(tree, startIndex, endIndex) {
|
3134
|
+
const length = endIndex - startIndex;
|
3135
|
+
let result = tree.textCallback(startIndex, null, endIndex);
|
3136
|
+
startIndex += result.length;
|
3137
|
+
while (startIndex < endIndex) {
|
3138
|
+
const string = tree.textCallback(startIndex, null, endIndex);
|
3139
|
+
if (string && string.length > 0) {
|
3140
|
+
startIndex += string.length;
|
3141
|
+
result += string;
|
3142
|
+
} else {
|
3143
|
+
break;
|
3144
|
+
}
|
3145
|
+
}
|
3146
|
+
if (startIndex > endIndex) {
|
3147
|
+
result = result.slice(0, length);
|
3148
|
+
}
|
3149
|
+
return result;
|
3150
|
+
}
|
3151
|
+
function unmarshalCaptures(query, tree, address, result) {
|
3152
|
+
for (let i = 0, n = result.length; i < n; i++) {
|
3153
|
+
const captureIndex = getValue(address, "i32");
|
3154
|
+
address += SIZE_OF_INT;
|
3155
|
+
const node = unmarshalNode(tree, address);
|
3156
|
+
address += SIZE_OF_NODE;
|
3157
|
+
result[i] = {
|
3158
|
+
name: query.captureNames[captureIndex],
|
3159
|
+
node: node
|
3160
|
+
};
|
3161
|
+
}
|
3162
|
+
return address;
|
3163
|
+
}
|
3164
|
+
function assertInternal(x) {
|
3165
|
+
if (x !== INTERNAL) throw new Error("Illegal constructor");
|
3166
|
+
}
|
3167
|
+
function isPoint(point) {
|
3168
|
+
return (point && typeof point.row === "number" && typeof point.column === "number");
|
3169
|
+
}
|
3170
|
+
function marshalNode(node) {
|
3171
|
+
let address = TRANSFER_BUFFER;
|
3172
|
+
setValue(address, node.id, "i32");
|
3173
|
+
address += SIZE_OF_INT;
|
3174
|
+
setValue(address, node.startIndex, "i32");
|
3175
|
+
address += SIZE_OF_INT;
|
3176
|
+
setValue(address, node.startPosition.row, "i32");
|
3177
|
+
address += SIZE_OF_INT;
|
3178
|
+
setValue(address, node.startPosition.column, "i32");
|
3179
|
+
address += SIZE_OF_INT;
|
3180
|
+
setValue(address, node[0], "i32");
|
3181
|
+
}
|
3182
|
+
function unmarshalNode(tree, address = TRANSFER_BUFFER) {
|
3183
|
+
const id = getValue(address, "i32");
|
3184
|
+
address += SIZE_OF_INT;
|
3185
|
+
if (id === 0) return null;
|
3186
|
+
const index = getValue(address, "i32");
|
3187
|
+
address += SIZE_OF_INT;
|
3188
|
+
const row = getValue(address, "i32");
|
3189
|
+
address += SIZE_OF_INT;
|
3190
|
+
const column = getValue(address, "i32");
|
3191
|
+
address += SIZE_OF_INT;
|
3192
|
+
const other = getValue(address, "i32");
|
3193
|
+
const result = new Node(INTERNAL, tree);
|
3194
|
+
result.id = id;
|
3195
|
+
result.startIndex = index;
|
3196
|
+
result.startPosition = {
|
3197
|
+
row: row,
|
3198
|
+
column: column
|
3199
|
+
};
|
3200
|
+
result[0] = other;
|
3201
|
+
return result;
|
3202
|
+
}
|
3203
|
+
function marshalTreeCursor(cursor, address = TRANSFER_BUFFER) {
|
3204
|
+
setValue(address + 0 * SIZE_OF_INT, cursor[0], "i32");
|
3205
|
+
setValue(address + 1 * SIZE_OF_INT, cursor[1], "i32");
|
3206
|
+
setValue(address + 2 * SIZE_OF_INT, cursor[2], "i32");
|
3207
|
+
setValue(address + 3 * SIZE_OF_INT, cursor[3], "i32");
|
3208
|
+
}
|
3209
|
+
function unmarshalTreeCursor(cursor) {
|
3210
|
+
cursor[0] = getValue(TRANSFER_BUFFER + 0 * SIZE_OF_INT, "i32");
|
3211
|
+
cursor[1] = getValue(TRANSFER_BUFFER + 1 * SIZE_OF_INT, "i32");
|
3212
|
+
cursor[2] = getValue(TRANSFER_BUFFER + 2 * SIZE_OF_INT, "i32");
|
3213
|
+
cursor[3] = getValue(TRANSFER_BUFFER + 3 * SIZE_OF_INT, "i32");
|
3214
|
+
}
|
3215
|
+
function marshalPoint(address, point) {
|
3216
|
+
setValue(address, point.row, "i32");
|
3217
|
+
setValue(address + SIZE_OF_INT, point.column, "i32");
|
3218
|
+
}
|
3219
|
+
function unmarshalPoint(address) {
|
3220
|
+
const result = {
|
3221
|
+
row: getValue(address, "i32") >>> 0,
|
3222
|
+
column: getValue(address + SIZE_OF_INT, "i32") >>> 0
|
3223
|
+
};
|
3224
|
+
return result;
|
3225
|
+
}
|
3226
|
+
function marshalRange(address, range) {
|
3227
|
+
marshalPoint(address, range.startPosition);
|
3228
|
+
address += SIZE_OF_POINT;
|
3229
|
+
marshalPoint(address, range.endPosition);
|
3230
|
+
address += SIZE_OF_POINT;
|
3231
|
+
setValue(address, range.startIndex, "i32");
|
3232
|
+
address += SIZE_OF_INT;
|
3233
|
+
setValue(address, range.endIndex, "i32");
|
3234
|
+
address += SIZE_OF_INT;
|
3235
|
+
}
|
3236
|
+
function unmarshalRange(address) {
|
3237
|
+
const result = {};
|
3238
|
+
result.startPosition = unmarshalPoint(address);
|
3239
|
+
address += SIZE_OF_POINT;
|
3240
|
+
result.endPosition = unmarshalPoint(address);
|
3241
|
+
address += SIZE_OF_POINT;
|
3242
|
+
result.startIndex = getValue(address, "i32") >>> 0;
|
3243
|
+
address += SIZE_OF_INT;
|
3244
|
+
result.endIndex = getValue(address, "i32") >>> 0;
|
3245
|
+
return result;
|
3246
|
+
}
|
3247
|
+
function marshalEdit(edit) {
|
3248
|
+
let address = TRANSFER_BUFFER;
|
3249
|
+
marshalPoint(address, edit.startPosition);
|
3250
|
+
address += SIZE_OF_POINT;
|
3251
|
+
marshalPoint(address, edit.oldEndPosition);
|
3252
|
+
address += SIZE_OF_POINT;
|
3253
|
+
marshalPoint(address, edit.newEndPosition);
|
3254
|
+
address += SIZE_OF_POINT;
|
3255
|
+
setValue(address, edit.startIndex, "i32");
|
3256
|
+
address += SIZE_OF_INT;
|
3257
|
+
setValue(address, edit.oldEndIndex, "i32");
|
3258
|
+
address += SIZE_OF_INT;
|
3259
|
+
setValue(address, edit.newEndIndex, "i32");
|
3260
|
+
address += SIZE_OF_INT;
|
3261
|
+
}
|
3262
|
+
// end include: /mnt/vss/_work/1/s/tree-sitter/lib/binding_web/binding.js
|
3263
|
+
// include: /mnt/vss/_work/1/s/tree-sitter/lib/binding_web/suffix.js
|
3264
|
+
for (const name of Object.getOwnPropertyNames(ParserImpl.prototype)) {
|
3265
|
+
Object.defineProperty(Parser.prototype, name, {
|
3266
|
+
value: ParserImpl.prototype[name],
|
3267
|
+
enumerable: false,
|
3268
|
+
writable: false
|
3269
|
+
});
|
3270
|
+
}
|
3271
|
+
Parser.Language = Language;
|
3272
|
+
Module.onRuntimeInitialized = () => {
|
3273
|
+
ParserImpl.init();
|
3274
|
+
resolveInitPromise();
|
3275
|
+
};
|
3276
|
+
});
|
3277
|
+
}
|
3278
|
+
}
|
3279
|
+
return Parser;
|
3280
|
+
}();
|
3281
|
+
|
3282
|
+
if (typeof exports === "object") {
|
3283
|
+
module.exports = TreeSitter;
|
3284
|
+
}
|
8
3285
|
|
9
3286
|
|
10
3287
|
return { Parser: TreeSitter };
|