@pbk20191/icodec 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +68 -50
- package/dist/avif-dec.d.ts +14 -0
- package/dist/avif-dec.js +296 -2
- package/dist/avif-dec.wasm +0 -0
- package/dist/avif-enc.d.ts +30 -0
- package/dist/avif-enc.js +298 -2
- package/dist/avif-enc.wasm +0 -0
- package/dist/heic-dec.d.ts +14 -0
- package/dist/heic-dec.js +317 -2
- package/dist/heic-dec.wasm +0 -0
- package/dist/heic-enc.d.ts +26 -0
- package/dist/heic-enc.js +364 -2
- package/dist/heic-enc.wasm +0 -0
- package/dist/jxl-dec.d.ts +14 -0
- package/dist/jxl-dec.js +296 -2
- package/dist/jxl-dec.wasm +0 -0
- package/dist/jxl-enc.d.ts +37 -0
- package/dist/jxl-enc.js +298 -2
- package/dist/jxl-enc.wasm +0 -0
- package/dist/mozjpeg.d.ts +34 -0
- package/dist/mozjpeg.js +298 -2
- package/dist/mozjpeg.wasm +0 -0
- package/dist/pngquant.d.ts +48 -0
- package/dist/pngquant.js +242 -258
- package/dist/pngquant_bg.wasm +0 -0
- package/dist/qoi.d.ts +15 -0
- package/dist/qoi.js +296 -2
- package/dist/qoi.wasm +0 -0
- package/dist/vvic-dec.d.ts +14 -0
- package/dist/vvic-dec.js +327 -0
- package/dist/vvic-dec.wasm +0 -0
- package/dist/vvic-enc.d.ts +20 -0
- package/dist/vvic-enc.js +343 -0
- package/dist/vvic-enc.wasm +0 -0
- package/dist/webp-dec.d.ts +14 -0
- package/dist/webp-dec.js +296 -2
- package/dist/webp-dec.wasm +0 -0
- package/dist/webp-enc.d.ts +50 -0
- package/dist/webp-enc.js +301 -2
- package/dist/webp-enc.wasm +0 -0
- package/dist/wp2-dec.d.ts +14 -0
- package/dist/wp2-dec.js +296 -2
- package/dist/wp2-dec.wasm +0 -0
- package/dist/wp2-enc.d.ts +27 -0
- package/dist/wp2-enc.js +298 -2
- package/dist/wp2-enc.wasm +0 -0
- package/lib/avif.d.ts +5 -3
- package/lib/common.d.ts +4 -1
- package/lib/common.js +10 -3
- package/lib/heic.d.ts +3 -3
- package/lib/index.d.ts +10 -9
- package/lib/index.js +1 -0
- package/lib/jpeg.d.ts +4 -2
- package/lib/jpeg.js +4 -0
- package/lib/jxl.d.ts +3 -3
- package/lib/node.d.ts +16 -0
- package/lib/node.js +31 -37
- package/lib/png.d.ts +3 -3
- package/lib/qoi.d.ts +4 -3
- package/lib/qoi.js +2 -1
- package/lib/vvic.d.ts +25 -0
- package/lib/vvic.js +30 -0
- package/lib/webp.d.ts +5 -4
- package/lib/wp2.d.ts +4 -3
- package/lib/wp2.js +1 -0
- package/package.json +15 -8
- package/types/wasm_type.d.ts +57 -0
- package/versions.json +1 -1
package/dist/jxl-enc.js
CHANGED
|
@@ -1,2 +1,298 @@
|
|
|
1
|
-
async function Module(moduleArg={}){var moduleRtn;var Module=moduleArg;var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("node:module");var require=createRequire(import.meta.url)}var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var EXITSTATUS;var isFileURI=filename=>filename.startsWith("file://");var readyPromiseResolve,readyPromiseReject;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var HEAP64,HEAPU64;var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;wasmExports["D"]()}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("jxl-enc.wasm")}return new URL("jxl-enc.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){var imports={a:wasmImports};return imports}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort("");var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function readPointer(pointer){return this.fromWireType(Number(HEAPU64[pointer/8]))}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;for(let[i,dt]of dependentTypes.entries()){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}}if(0===unregisteredTypes.length){onComplete(typeConverters)}};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>num<INT53_MIN||num>INT53_MAX?NaN:Number(num);var __embind_finalize_value_object=function(structType){structType=bigintToI53Checked(structType);var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};for(var[i,field]of fieldRecords.entries()){const getterReturnType=fieldTypes[i];const getter=field.getter;const getterContext=field.getterContext;const setterArgumentType=fieldTypes[i+fieldRecords.length];const setter=field.setter;const setterContext=field.setterContext;fields[field.fieldName]={read:ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o));runDestructors(destructors)},optional:getterReturnType.optional}}return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{for(var fieldName in fields){if(!(fieldName in o)&&!fields[fieldName].optional){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var BindingError=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};var throwBindingError=message=>{throw new BindingError(message)};function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer/2]:pointer=>HEAPU16[pointer/2];case 4:return signed?pointer=>HEAP32[pointer/4]:pointer=>HEAPU32[pointer/4];case 8:return signed?pointer=>HEAP64[pointer/8]:pointer=>HEAPU64[pointer/8];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=function(primitiveType,name,size,minRange,maxRange){primitiveType=bigintToI53Checked(primitiveType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=>value;if(isUnsignedType){const bitSize=size*8;fromWireType=value=>{if(typeof value=="number"){return value>>>0}return BigInt.asUintN(bitSize,value)};maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>{if(typeof value=="number"){value=BigInt(value)}return value},readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};function __embind_register_bool(rawType,name,trueValue,falseValue){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);registerType(rawType,{name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},readValueFromPointer:function(pointer){return this.fromWireType(HEAPU8[pointer])},destructorFunction:null})}var emval_freelist=[];var emval_handles=[0,1,,1,null,1,true,1,false,1];function __emval_decref(handle){handle=bigintToI53Checked(handle);if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}}var Emval={toValue:handle=>{if(!handle){throwBindingError(`Cannot use deleted val. handle = ${handle}`)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),readValueFromPointer:readPointer,destructorFunction:null};function __embind_register_emval(rawType){rawType=bigintToI53Checked(rawType);return registerType(rawType,EmValType)}var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this.fromWireType(HEAPF32[pointer/4])};case 8:return function(pointer){return this.fromWireType(HEAPF64[pointer/8])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=function(rawType,name,size){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var createNamedFunction=(name,func)=>Object.defineProperty(func,"name",{value:name});function usesDestructorStack(argTypes){for(var i=1;i<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){return true}}return false}function createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync){var needsDestructorStack=usesDestructorStack(argTypes);var argCount=argTypes.length-2;var argsList=[];var argsListWired=["fn"];if(isClassMethodFunc){argsListWired.push("thisWired")}for(var i=0;i<argCount;++i){argsList.push(`arg${i}`);argsListWired.push(`arg${i}Wired`)}argsList=argsList.join(",");argsListWired=argsListWired.join(",");var invokerFnBody=`return function (${argsList}) {\n`;if(needsDestructorStack){invokerFnBody+="var destructors = [];\n"}var dtorStack=needsDestructorStack?"destructors":"null";var args1=["humanName","throwBindingError","invoker","fn","runDestructors","fromRetWire","toClassParamWire"];if(isClassMethodFunc){invokerFnBody+=`var thisWired = toClassParamWire(${dtorStack}, this);\n`}for(var i=0;i<argCount;++i){var argName=`toArg${i}Wire`;invokerFnBody+=`var arg${i}Wired = ${argName}(${dtorStack}, arg${i});\n`;args1.push(argName)}invokerFnBody+=(returns||isAsync?"var rv = ":"")+`invoker(${argsListWired});\n`;if(needsDestructorStack){invokerFnBody+="runDestructors(destructors);\n"}else{for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){var paramName=i===1?"thisWired":"arg"+(i-2)+"Wired";if(argTypes[i].destructorFunction!==null){invokerFnBody+=`${paramName}_dtor(${paramName});\n`;args1.push(`${paramName}_dtor`)}}}if(returns){invokerFnBody+="var ret = fromRetWire(rv);\n"+"return ret;\n"}else{}invokerFnBody+="}\n";return new Function(args1,invokerFnBody)}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,isAsync){var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=argTypes[1]!==null&&classType!==null;var needsDestructorStack=usesDestructorStack(argTypes);var returns=!argTypes[0].isVoid;var retType=argTypes[0];var instType=argTypes[1];var closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,retType.fromWireType.bind(retType),instType?.toWireType.bind(instType)];for(var i=2;i<argCount;++i){var argType=argTypes[i];closureArgs.push(argType.toWireType.bind(argType))}if(!needsDestructorStack){for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){if(argTypes[i].destructorFunction!==null){closureArgs.push(argTypes[i].destructorFunction)}}}let invokerFactory=createJsInvoker(argTypes,isClassMethodFunc,returns,isAsync);var invokerFn=invokerFactory(...closureArgs);return createNamedFunction(humanName,invokerFn)}var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];proto[methodName]=function(...args){if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){throwBindingError(`Cannot register public name '${name}' twice`)}ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i<count;i++){array.push(Number(HEAPU64[(firstElement+i*8)/8]))}return array};var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{funcPtr=Number(funcPtr);var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(BigInt(funcPtr))}return func};var dynCall=(sig,ptr,args=[],promising=false)=>{for(var i=1;i<sig.length;++i){if(sig[i]=="p")args[i-1]=BigInt(args[i-1])}var func=getWasmTableEntry(ptr);var rtn=func(...args);function convert(rtn){return sig[0]=="p"?Number(rtn):rtn}return convert(rtn)};var getDynCaller=(sig,ptr,promising=false)=>(...args)=>dynCall(sig,ptr,args,promising);var embind__requireFunction=(signature,rawFunction,isAsync=false)=>{signature=AsciiToString(signature);function makeDynCaller(){if(signature.includes("p")){return getDynCaller(signature,rawFunction,isAsync)}var rtn=getWasmTableEntry(rawFunction);return rtn}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};class UnboundTypeError extends Error{}var getTypeName=type=>{var ptr=___getTypeName(type);var rv=AsciiToString(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex===-1)return signature;return signature.slice(0,argsIndex)};function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn){name=bigintToI53Checked(name);rawArgTypesAddr=bigintToI53Checked(rawArgTypesAddr);signature=bigintToI53Checked(signature);rawInvoker=bigintToI53Checked(rawInvoker);fn=bigintToI53Checked(fn);var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=AsciiToString(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker,isAsync);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})}var __embind_register_integer=function(primitiveType,name,size,minRange,maxRange){primitiveType=bigintToI53Checked(primitiveType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);const isUnsignedType=minRange===0;let fromWireType=value=>value;if(isUnsignedType){var bitshift=32-8*size;fromWireType=value=>value<<bitshift>>>bitshift;maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>value,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};function __embind_register_memory_view(rawType,dataTypeIndex,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=Number(HEAPU64[handle/8]);var data=Number(HEAPU64[(handle+8)/8]);return new TA(HEAP8.buffer,data,size)}name=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i<str.length;++i){var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63;i++}}heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){var c=str.charCodeAt(i);if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};function __embind_register_std_string(rawType,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);var stdStringIsUTF8=true;registerType(rawType,{name,fromWireType(value){var length=Number(HEAPU64[value/8]);var payload=value+8;var str;if(stdStringIsUTF8){str=UTF8ToString(payload,length,true)}else{str="";for(var i=0;i<length;++i){str+=String.fromCharCode(HEAPU8[payload+i])}}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=typeof value=="string";if(!(valueIsOfTypeString||ArrayBuffer.isView(value)&&value.BYTES_PER_ELEMENT==1)){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}var base=_malloc(8+length+1);var ptr=base+8;HEAPU64[base/8]=BigInt(length);if(valueIsOfTypeString){if(stdStringIsUTF8){stringToUTF8(value,ptr,length+1)}else{for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}}else{HEAPU8.set(value,ptr)}if(destructors!==null){destructors.push(_free,base)}return base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}var UTF16Decoder=new TextDecoder("utf-16le");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr/2;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite<str.length*2?maxBytesToWrite/2:str.length;for(var i=0;i<numCharsToWrite;++i){var codeUnit=str.charCodeAt(i);HEAP16[outPtr/2]=codeUnit;outPtr+=2}HEAP16[outPtr/2]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=ptr/4;for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);if(codePoint>65535){i++}HEAP32[outPtr/4]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr/4]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);if(codePoint>65535){i++}len+=4}return len};function __embind_register_std_wstring(rawType,charSize,name){rawType=bigintToI53Checked(rawType);charSize=bigintToI53Checked(charSize);name=bigintToI53Checked(name);name=AsciiToString(name);var decodeString,encodeString,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16}else{decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32}registerType(rawType,{name,fromWireType:value=>{var length=Number(HEAPU64[value/8]);var str=decodeString(value+8,length*charSize,true);_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}var length=lengthBytesUTF(value);var ptr=_malloc(8+length+charSize);HEAPU64[ptr/8]=BigInt(length/charSize);encodeString(value,ptr+8,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);constructorSignature=bigintToI53Checked(constructorSignature);rawConstructor=bigintToI53Checked(rawConstructor);destructorSignature=bigintToI53Checked(destructorSignature);rawDestructor=bigintToI53Checked(rawDestructor);structRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structType=bigintToI53Checked(structType);fieldName=bigintToI53Checked(fieldName);getterReturnType=bigintToI53Checked(getterReturnType);getterSignature=bigintToI53Checked(getterSignature);getter=bigintToI53Checked(getter);getterContext=bigintToI53Checked(getterContext);setterArgumentType=bigintToI53Checked(setterArgumentType);setterSignature=bigintToI53Checked(setterSignature);setter=bigintToI53Checked(setter);setterContext=bigintToI53Checked(setterContext);structRegistrations[structType].fields.push({fieldName:AsciiToString(fieldName),getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext,setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext})}var __embind_register_void=function(rawType,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);registerType(rawType,{isVoid:true,name,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var emval_methodCallers=[];var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(Number(HEAPU64[(argTypes+i*8)/8]),`parameter ${i}`)}return a};var emval_returnValue=(toReturnWire,destructorsRef,handle)=>{var destructors=[];var result=toReturnWire(destructors,handle);if(destructors.length){HEAPU64[destructorsRef/8]=BigInt(Emval.toHandle(destructors))}return result};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return AsciiToString(address)}return symbol};var __emval_create_invoker=function(argCount,argTypesPtr,kind){argTypesPtr=bigintToI53Checked(argTypesPtr);var ret=(()=>{var GenericWireTypeSize=16;var[retType,...argTypes]=emval_lookupTypes(argCount,argTypesPtr);var toReturnWire=retType.toWireType.bind(retType);var argFromPtr=argTypes.map(type=>type.readValueFromPointer.bind(type));argCount--;var captures={toValue:Emval.toValue};var args=argFromPtr.map((argFromPtr,i)=>{var captureName=`argFromPtr${i}`;captures[captureName]=argFromPtr;return`${captureName}(args${i?"+"+i*GenericWireTypeSize:""})`});var functionBody;switch(kind){case 0:functionBody="toValue(handle)";break;case 2:functionBody="new (toValue(handle))";break;case 3:functionBody="";break;case 1:captures["getStringOrSymbol"]=getStringOrSymbol;functionBody="toValue(handle)[getStringOrSymbol(methodName)]";break}functionBody+=`(${args})`;if(!retType.isVoid){captures["toReturnWire"]=toReturnWire;captures["emval_returnValue"]=emval_returnValue;functionBody=`return emval_returnValue(toReturnWire, destructorsRef, ${functionBody})`}functionBody=`return function (handle, methodName, destructorsRef, args) {\n${functionBody}\n}`;var invokerFunction=new Function(Object.keys(captures),functionBody)(...Object.values(captures));var functionName=`methodCaller<(${argTypes.map(t=>t.name)}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))})();return BigInt(ret)};var __emval_get_global=function(name){name=bigintToI53Checked(name);var ret=(()=>{if(!name){return Emval.toHandle(globalThis)}name=getStringOrSymbol(name);return Emval.toHandle(globalThis[name])})();return BigInt(ret)};function __emval_invoke(caller,handle,methodName,destructorsRef,args){caller=bigintToI53Checked(caller);handle=bigintToI53Checked(handle);methodName=bigintToI53Checked(methodName);destructorsRef=bigintToI53Checked(destructorsRef);args=bigintToI53Checked(args);return emval_methodCallers[caller](handle,methodName,destructorsRef,args)}var __emval_new_cstring=v=>{v=bigintToI53Checked(v);return BigInt(Emval.toHandle(getStringOrSymbol(v)))};function __emval_run_destructors(handle){handle=bigintToI53Checked(handle);var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}var timers={};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=(size-oldHeapSize+65535)/65536|0;try{wasmMemory.grow(BigInt(pages));updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize=bigintToI53Checked(requestedSize);var oldSize=HEAPU8.length;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false}var _fd_close=fd=>52;function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);newOffset=bigintToI53Checked(newOffset);return 70}var printCharBuffers=[null,[],[]];var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};function _fd_write(fd,iov,iovcnt,pnum){iov=bigintToI53Checked(iov);iovcnt=bigintToI53Checked(iovcnt);pnum=bigintToI53Checked(pnum);var num=0;for(var i=0;i<iovcnt;i++){var ptr=Number(HEAPU64[iov/8]);var len=Number(HEAPU64[(iov+8)/8]);iov+=16;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU64[pnum/8]=BigInt(num);return 0}{if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}var ___getTypeName,_malloc,_free,__emscripten_timeout,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){___getTypeName=wasmExports["E"];_malloc=wasmExports["G"];_free=wasmExports["H"];__emscripten_timeout=wasmExports["I"];memory=wasmMemory=wasmExports["C"];__indirect_function_table=wasmTable=wasmExports["F"]}var wasmImports={w:__abort_js,m:__embind_finalize_value_object,e:__embind_register_bigint,A:__embind_register_bool,y:__embind_register_emval,i:__embind_register_float,o:__embind_register_function,d:__embind_register_integer,b:__embind_register_memory_view,z:__embind_register_std_string,f:__embind_register_std_wstring,n:__embind_register_value_object,a:__embind_register_value_object_field,B:__embind_register_void,q:__emscripten_runtime_keepalive_clear,l:__emval_create_invoker,g:__emval_decref,h:__emval_get_global,k:__emval_invoke,c:__emval_new_cstring,j:__emval_run_destructors,r:__setitimer_js,s:_emscripten_resize_heap,x:_exit,v:_fd_close,t:_fd_seek,u:_fd_write,p:_proc_exit};function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>Number(f(BigInt(a0)));var makeWrapper__p=f=>a0=>f(BigInt(a0));var makeWrapper_p=f=>()=>Number(f());wasmExports["E"]=makeWrapper_pp(wasmExports["E"]);wasmExports["G"]=makeWrapper_pp(wasmExports["G"]);wasmExports["H"]=makeWrapper__p(wasmExports["H"]);wasmExports["_emscripten_stack_restore"]=makeWrapper__p(wasmExports["_emscripten_stack_restore"]);wasmExports["_emscripten_stack_alloc"]=makeWrapper_pp(wasmExports["_emscripten_stack_alloc"]);wasmExports["emscripten_stack_get_current"]=makeWrapper_p(wasmExports["emscripten_stack_get_current"]);return wasmExports}function run(){preRun();function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;wasmExports=await (createWasm());run();if(runtimeInitialized){moduleRtn=Module}else{moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
|
|
2
|
-
|
|
1
|
+
// This code implements the `-sMODULARIZE` settings by taking the generated
|
|
2
|
+
// JS program code (INNER_JS_CODE) and wrapping it in a factory function.
|
|
3
|
+
// When targeting node and ES6 we use `await import ..` in the generated code
|
|
4
|
+
// so the outer function needs to be marked as async.
|
|
5
|
+
async function Module(moduleArg={}){var moduleRtn;// include: shell.js
|
|
6
|
+
// include: minimum_runtime_check.js
|
|
7
|
+
// end include: minimum_runtime_check.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=moduleArg;// Determine the runtime environment we are in. You can customize this by
|
|
22
|
+
// setting the ENVIRONMENT setting at compile time (see settings.js).
|
|
23
|
+
// Attempt to auto-detect the environment
|
|
24
|
+
var ENVIRONMENT_IS_WEB=!!globalThis.window;var ENVIRONMENT_IS_WORKER=!!globalThis.WorkerGlobalScope;// N.b. Electron.js environment is simultaneously a NODE-environment, but
|
|
25
|
+
// also a web environment.
|
|
26
|
+
var ENVIRONMENT_IS_NODE=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer";if(ENVIRONMENT_IS_NODE){// When building an ES module `require` is not normally available.
|
|
27
|
+
// We need to use `createRequire()` to construct the require()` function.
|
|
28
|
+
const{createRequire}=await import("node:module");/** @suppress{duplicate} */var require=createRequire(import.meta.url)}// --pre-jses are emitted after the Module integration code, so that they can
|
|
29
|
+
// refer to Module (if they choose; they can also define Module)
|
|
30
|
+
var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var _scriptName=import.meta.url;// `/` should be present at the end if `scriptDirectory` is not empty
|
|
31
|
+
var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}// Hooks that are implemented differently in different runtime environments.
|
|
32
|
+
var readAsync,readBinary;if(ENVIRONMENT_IS_NODE){// These modules will usually be used on Node.js. Load them eagerly to avoid
|
|
33
|
+
// the complexity of lazy-loading.
|
|
34
|
+
var fs=require("node:fs");if(_scriptName.startsWith("file:")){scriptDirectory=require("node:path").dirname(require("node:url").fileURLToPath(_scriptName))+"/"}// include: node_shell_read.js
|
|
35
|
+
readBinary=filename=>{// We need to re-wrap `file://` strings to URLs.
|
|
36
|
+
filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{// See the comment in the `readBinary` function.
|
|
37
|
+
filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};// end include: node_shell_read.js
|
|
38
|
+
if(process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else// Note that this includes Node.js workers when relevant (pthreads is enabled).
|
|
39
|
+
// Node.js workers are detected as a combination of ENVIRONMENT_IS_WORKER and
|
|
40
|
+
// ENVIRONMENT_IS_NODE.
|
|
41
|
+
if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){try{scriptDirectory=new URL(".",_scriptName).href}catch{}{// include: web_or_worker_shell_read.js
|
|
42
|
+
if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(/** @type{!ArrayBuffer} */(xhr.response))}}readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}else{}var out=console.log.bind(console);var err=console.error.bind(console);// end include: shell.js
|
|
43
|
+
// include: preamble.js
|
|
44
|
+
// === Preamble library stuff ===
|
|
45
|
+
// Documentation for the public APIs defined in this file must be updated in:
|
|
46
|
+
// site/source/docs/api_reference/preamble.js.rst
|
|
47
|
+
// A prebuilt local version of the documentation is available at:
|
|
48
|
+
// site/build/text/docs/api_reference/preamble.js.txt
|
|
49
|
+
// You can also build docs locally as HTML or other formats in site/
|
|
50
|
+
// An online HTML version (which may be of a different version of Emscripten)
|
|
51
|
+
// is up at http://kripken.github.io/emscripten-site/docs/api_reference/preamble.js.html
|
|
52
|
+
var wasmBinary;// Wasm globals
|
|
53
|
+
//========================================
|
|
54
|
+
// Runtime essentials
|
|
55
|
+
//========================================
|
|
56
|
+
// whether we are quitting the application. no code should run after this.
|
|
57
|
+
// set in exit() and abort()
|
|
58
|
+
var ABORT=false;// set by exit() and abort(). Passed to 'onExit' handler.
|
|
59
|
+
// NOTE: This is also used as the process return code in shell environments
|
|
60
|
+
// but only when noExitRuntime is false.
|
|
61
|
+
var EXITSTATUS;/**
|
|
62
|
+
* Indicates whether filename is delivered via file protocol (as opposed to http/https)
|
|
63
|
+
* @noinline
|
|
64
|
+
*/var isFileURI=filename=>filename.startsWith("file://");// include: runtime_common.js
|
|
65
|
+
// include: runtime_stack_check.js
|
|
66
|
+
// end include: runtime_stack_check.js
|
|
67
|
+
// include: runtime_exceptions.js
|
|
68
|
+
// end include: runtime_exceptions.js
|
|
69
|
+
// include: runtime_debug.js
|
|
70
|
+
// end include: runtime_debug.js
|
|
71
|
+
var readyPromiseResolve,readyPromiseReject;// Memory management
|
|
72
|
+
var runtimeInitialized=false;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);HEAP16=new Int16Array(b);HEAPU8=new Uint8Array(b);HEAPU16=new Uint16Array(b);HEAP32=new Int32Array(b);HEAPU32=new Uint32Array(b);HEAPF32=new Float32Array(b);HEAPF64=new Float64Array(b);HEAP64=new BigInt64Array(b);HEAPU64=new BigUint64Array(b)}// include: memoryprofiler.js
|
|
73
|
+
// end include: memoryprofiler.js
|
|
74
|
+
// end include: runtime_common.js
|
|
75
|
+
function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}// Begin ATPRERUNS hooks
|
|
76
|
+
callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true;// No ATINITS hooks
|
|
77
|
+
wasmExports["D"]()}function postRun(){// PThreads reuse the runtime from the main thread.
|
|
78
|
+
if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}// Begin ATPOSTRUNS hooks
|
|
79
|
+
callRuntimeCallbacks(onPostRuns)}/** @param {string|number=} what */function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";// TODO(sbc): Should we remove printing and leave it up to whoever
|
|
80
|
+
// catches the exception?
|
|
81
|
+
err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";// Use a wasm runtime error, because a JS error might be seen as a foreign
|
|
82
|
+
// exception, which means we'd run destructors on it. We need the error to
|
|
83
|
+
// simply make the program stop.
|
|
84
|
+
// FIXME This approach does not work in Wasm EH because it currently does not assume
|
|
85
|
+
// all RuntimeErrors are from traps; it decides whether a RuntimeError is from
|
|
86
|
+
// a trap or not based on a hidden field within the object. So at the moment
|
|
87
|
+
// we don't have a way of throwing a wasm trap from JS. TODO Make a JS API that
|
|
88
|
+
// allows this in the wasm spec.
|
|
89
|
+
// Suppress closure compiler warning here. Closure compiler's builtin extern
|
|
90
|
+
// definition for WebAssembly.RuntimeError claims it takes no arguments even
|
|
91
|
+
// though it can.
|
|
92
|
+
// TODO(https://github.com/google/closure-compiler/pull/3913): Remove if/when upstream closure gets fixed.
|
|
93
|
+
/** @suppress {checkTypes} */var e=new WebAssembly.RuntimeError(what);readyPromiseReject?.(e);// Throw the error whether or not MODULARIZE is set because abort is used
|
|
94
|
+
// in code paths apart from instantiation where an exception is expected
|
|
95
|
+
// to be thrown when abort is called.
|
|
96
|
+
throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("jxl-enc.wasm")}// Use bundler-friendly `new URL(..., import.meta.url)` pattern; works in browsers too.
|
|
97
|
+
return new URL("jxl-enc.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}// Throwing a plain string here, even though it not normally advisable since
|
|
98
|
+
// this gets turning into an `abort` in instantiateArrayBuffer.
|
|
99
|
+
throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){// If we don't have the binary yet, load it asynchronously using readAsync.
|
|
100
|
+
if(!wasmBinary){// Fetch the binary using readAsync
|
|
101
|
+
try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}// Otherwise, getBinarySync should be able to get it synchronously
|
|
102
|
+
return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){// We expect the most common failure cause to be a bad MIME type for the binary,
|
|
103
|
+
// in which case falling back to ArrayBuffer instantiation should work.
|
|
104
|
+
err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){// prepare imports
|
|
105
|
+
var imports={"a":wasmImports};return imports}// Create the wasm instance.
|
|
106
|
+
// Receives the wasm imports, returns the exports.
|
|
107
|
+
async function createWasm(){// Load the wasm module and create an instance of using native support in the JS engine.
|
|
108
|
+
// handle a generated wasm instance, receiving its exports and
|
|
109
|
+
// performing other necessary setup
|
|
110
|
+
/** @param {WebAssembly.Module=} module*/function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}// Prefer streaming instantiation if available.
|
|
111
|
+
function receiveInstantiationResult(result){// 'result' is a ResultObject object which has both the module and instance.
|
|
112
|
+
// receiveInstance() will swap in the exports (to Module.asm) so they can be called
|
|
113
|
+
// TODO: Due to Closure regression https://github.com/google/closure-compiler/issues/3193, the above line no longer optimizes out down to the following line.
|
|
114
|
+
// When the regression is fixed, can restore the above PTHREADS-enabled path.
|
|
115
|
+
return receiveInstance(result["instance"])}var info=getWasmImports();// User shell pages can write their own Module.instantiateWasm = function(imports, successCallback) callback
|
|
116
|
+
// to manually instantiate the Wasm module themselves. This allows pages to
|
|
117
|
+
// run the instantiation parallel to any other async startup actions they are
|
|
118
|
+
// performing.
|
|
119
|
+
// Also pthreads and wasm workers initialize the wasm instance through this
|
|
120
|
+
// path.
|
|
121
|
+
if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(inst,mod)=>{resolve(receiveInstance(inst,mod))})})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}// end include: preamble.js
|
|
122
|
+
// Begin JS library code
|
|
123
|
+
class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}/** @type {!Int16Array} */var HEAP16;/** @type {!Int32Array} */var HEAP32;/** not-@type {!BigInt64Array} */var HEAP64;/** @type {!Int8Array} */var HEAP8;/** @type {!Float32Array} */var HEAPF32;/** @type {!Float64Array} */var HEAPF64;/** @type {!Uint16Array} */var HEAPU16;/** @type {!Uint32Array} */var HEAPU32;/** not-@type {!BigUint64Array} */var HEAPU64;/** @type {!Uint8Array} */var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){// Pass the module as the first argument.
|
|
124
|
+
callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.push(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.push(cb);var noExitRuntime=true;var __abort_js=()=>abort("");var structRegistrations={};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};/** @suppress {globalThis} */function readPointer(pointer){return this.fromWireType(Number(HEAPU64[((pointer)/8)]))}var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var InternalError=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(type=>typeDependencies[type]=dependentTypes);function onComplete(typeConverters){var myTypeConverters=getTypeConverters(typeConverters);if(myTypeConverters.length!==myTypes.length){throwInternalError("Mismatched type converter count")}for(var i=0;i<myTypes.length;++i){registerType(myTypes[i],myTypeConverters[i])}}var typeConverters=new Array(dependentTypes.length);var unregisteredTypes=[];var registered=0;for(let[i,dt]of dependentTypes.entries()){if(registeredTypes.hasOwnProperty(dt)){typeConverters[i]=registeredTypes[dt]}else{unregisteredTypes.push(dt);if(!awaitingDependencies.hasOwnProperty(dt)){awaitingDependencies[dt]=[]}awaitingDependencies[dt].push(()=>{typeConverters[i]=registeredTypes[dt];++registered;if(registered===unregisteredTypes.length){onComplete(typeConverters)}})}}if(0===unregisteredTypes.length){onComplete(typeConverters)}};var INT53_MAX=9007199254740992;var INT53_MIN=-9007199254740992;var bigintToI53Checked=num=>(num<INT53_MIN||num>INT53_MAX)?NaN:Number(num);var __embind_finalize_value_object=function(structType){structType=bigintToI53Checked(structType);var reg=structRegistrations[structType];delete structRegistrations[structType];var rawConstructor=reg.rawConstructor;var rawDestructor=reg.rawDestructor;var fieldRecords=reg.fields;var fieldTypes=fieldRecords.map(field=>field.getterReturnType).concat(fieldRecords.map(field=>field.setterArgumentType));whenDependentTypesAreResolved([structType],fieldTypes,fieldTypes=>{var fields={};for(var[i,field]of fieldRecords.entries()){const getterReturnType=fieldTypes[i];const getter=field.getter;const getterContext=field.getterContext;const setterArgumentType=fieldTypes[i+fieldRecords.length];const setter=field.setter;const setterContext=field.setterContext;fields[field.fieldName]={read:ptr=>getterReturnType.fromWireType(getter(getterContext,ptr)),write:(ptr,o)=>{var destructors=[];setter(setterContext,ptr,setterArgumentType.toWireType(destructors,o));runDestructors(destructors)},optional:getterReturnType.optional}}return[{name:reg.name,fromWireType:ptr=>{var rv={};for(var i in fields){rv[i]=fields[i].read(ptr)}rawDestructor(ptr);return rv},toWireType:(destructors,o)=>{// todo: Here we have an opportunity for -O3 level "unsafe" optimizations:
|
|
125
|
+
// assume all fields are present without checking.
|
|
126
|
+
for(var fieldName in fields){if(!(fieldName in o)&&!fields[fieldName].optional){throw new TypeError(`Missing field: "${fieldName}"`)}}var ptr=rawConstructor();for(fieldName in fields){fields[fieldName].write(ptr,o[fieldName])}if(destructors!==null){destructors.push(rawDestructor,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction:rawDestructor}]})};var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch)}};var BindingError=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};var throwBindingError=message=>{throw new BindingError(message)};/** @param {Object=} options */function sharedRegisterType(rawType,registeredInstance,options={}){var name=registeredInstance.name;if(!rawType){throwBindingError(`type "${name}" must have a positive integer typeid pointer`)}if(registeredTypes.hasOwnProperty(rawType)){if(options.ignoreDuplicateRegistrations){return}else{throwBindingError(`Cannot register type '${name}' twice`)}}registeredTypes[rawType]=registeredInstance;delete typeDependencies[rawType];if(awaitingDependencies.hasOwnProperty(rawType)){var callbacks=awaitingDependencies[rawType];delete awaitingDependencies[rawType];callbacks.forEach(cb=>cb())}}/** @param {Object=} options */function registerType(rawType,registeredInstance,options={}){return sharedRegisterType(rawType,registeredInstance,options)}var integerReadValueFromPointer=(name,width,signed)=>{// integers are quite common, so generate very specialized functions
|
|
127
|
+
switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[((pointer)/2)]:pointer=>HEAPU16[((pointer)/2)];case 4:return signed?pointer=>HEAP32[((pointer)/4)]:pointer=>HEAPU32[((pointer)/4)];case 8:return signed?pointer=>HEAP64[((pointer)/8)]:pointer=>HEAPU64[((pointer)/8)];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};/** @suppress {globalThis} */var __embind_register_bigint=function(primitiveType,name,size,minRange,maxRange){primitiveType=bigintToI53Checked(primitiveType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=>value;if(isUnsignedType){// uint64 get converted to int64 in ABI, fix them up like we do for 32-bit integers.
|
|
128
|
+
const bitSize=size*8;fromWireType=value=>{// FIXME(https://github.com/emscripten-core/emscripten/issues/16975)
|
|
129
|
+
// `size_t` ends up here, but it's transferred in the ABI as a plain number instead of a bigint.
|
|
130
|
+
if(typeof value=="number"){return value>>>0}return BigInt.asUintN(bitSize,value)};maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>{if(typeof value=="number"){value=BigInt(value)}return value},readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};/** @suppress {globalThis} */function __embind_register_bool(rawType,name,trueValue,falseValue){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);registerType(rawType,{name,fromWireType:function(wt){// ambiguous emscripten ABI: sometimes return values are
|
|
131
|
+
// true or false, and sometimes integers (0 or 1)
|
|
132
|
+
return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},readValueFromPointer:function(pointer){return this.fromWireType(HEAPU8[pointer])},destructorFunction:null})}var emval_freelist=[];var emval_handles=[0,1,,1,null,1,true,1,false,1];function __emval_decref(handle){handle=bigintToI53Checked(handle);if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}}var Emval={toValue:handle=>{if(!handle){throwBindingError(`Cannot use deleted val. handle = ${handle}`)}return emval_handles[handle]},toHandle:value=>{switch(value){case undefined:return 2;case null:return 4;case true:return 6;case false:return 8;default:{const handle=emval_freelist.pop()||emval_handles.length;emval_handles[handle]=value;emval_handles[handle+1]=1;return handle}}}};var EmValType={name:"emscripten::val",fromWireType:handle=>{var rv=Emval.toValue(handle);__emval_decref(handle);return rv},toWireType:(destructors,value)=>Emval.toHandle(value),readValueFromPointer:readPointer,destructorFunction:null};function __embind_register_emval(rawType){rawType=bigintToI53Checked(rawType);return registerType(rawType,EmValType)}var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this.fromWireType(HEAPF32[((pointer)/4)])};case 8:return function(pointer){return this.fromWireType(HEAPF64[((pointer)/8)])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=function(rawType,name,size){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var createNamedFunction=(name,func)=>Object.defineProperty(func,"name",{value:name});function usesDestructorStack(argTypes){// Skip return value at index 0 - it's not deleted here.
|
|
133
|
+
for(var i=1;i<argTypes.length;++i){// The type does not define a destructor function - must use dynamic stack
|
|
134
|
+
if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){return true}}return false}var InvokerFunctions={"ftftnnt":function anonymous(humanName,throwBindingError,invoker,fn,runDestructors,fromRetWire,toClassParamWire,toArg0Wire,toArg1Wire,toArg2Wire,toArg3Wire,arg0Wired_dtor,arg3Wired_dtor){return function(arg0,arg1,arg2,arg3){var arg0Wired=toArg0Wire(null,arg0);var arg1Wired=toArg1Wire(null,arg1);var arg2Wired=toArg2Wire(null,arg2);var arg3Wired=toArg3Wire(null,arg3);var rv=invoker(fn,arg0Wired,arg1Wired,arg2Wired,arg3Wired);arg0Wired_dtor(arg0Wired);arg3Wired_dtor(arg3Wired);var ret=fromRetWire(rv);return ret}}};function createJsInvokerSignature(argTypes,isClassMethodFunc,returns,isAsync){const signature=[isClassMethodFunc?"t":"f",returns?"t":"f",isAsync?"t":"f"];for(let i=isClassMethodFunc?1:2;i<argTypes.length;++i){const arg=argTypes[i];let destructorSig="";if(arg.destructorFunction===undefined){destructorSig="u"}else if(arg.destructorFunction===null){destructorSig="n"}else{destructorSig="t"}signature.push(destructorSig)}return signature.join("")}function craftInvokerFunction(humanName,argTypes,classType,cppInvokerFunc,cppTargetFunc,/** boolean= */isAsync){// humanName: a human-readable string name for the function to be generated.
|
|
135
|
+
// argTypes: An array that contains the embind type objects for all types in the function signature.
|
|
136
|
+
// argTypes[0] is the type object for the function return value.
|
|
137
|
+
// argTypes[1] is the type object for function this object/class type, or null if not crafting an invoker for a class method.
|
|
138
|
+
// argTypes[2...] are the actual function parameters.
|
|
139
|
+
// classType: The embind type object for the class to be bound, or null if this is not a method of a class.
|
|
140
|
+
// cppInvokerFunc: JS Function object to the C++-side function that interops into C++ code.
|
|
141
|
+
// cppTargetFunc: Function pointer (an integer to FUNCTION_TABLE) to the target C++ function the cppInvokerFunc will end up calling.
|
|
142
|
+
// isAsync: Optional. If true, returns an async function. Async bindings are only supported with JSPI.
|
|
143
|
+
var argCount=argTypes.length;if(argCount<2){throwBindingError("argTypes array size mismatch! Must at least get return value and 'this' types!")}var isClassMethodFunc=(argTypes[1]!==null&&classType!==null);// Free functions with signature "void function()" do not need an invoker that marshalls between wire types.
|
|
144
|
+
// TODO: This omits argument count check - enable only at -O3 or similar.
|
|
145
|
+
// if (ENABLE_UNSAFE_OPTS && argCount == 2 && argTypes[0].name == "void" && !isClassMethodFunc) {
|
|
146
|
+
// return FUNCTION_TABLE[fn];
|
|
147
|
+
// }
|
|
148
|
+
// Determine if we need to use a dynamic stack to store the destructors for the function parameters.
|
|
149
|
+
// TODO: Remove this completely once all function invokers are being dynamically generated.
|
|
150
|
+
var needsDestructorStack=usesDestructorStack(argTypes);var returns=!argTypes[0].isVoid;// Build the arguments that will be passed into the closure around the invoker
|
|
151
|
+
// function.
|
|
152
|
+
var retType=argTypes[0];var instType=argTypes[1];var closureArgs=[humanName,throwBindingError,cppInvokerFunc,cppTargetFunc,runDestructors,retType.fromWireType.bind(retType),instType?.toWireType.bind(instType)];for(var i=2;i<argCount;++i){var argType=argTypes[i];closureArgs.push(argType.toWireType.bind(argType))}if(!needsDestructorStack){// Skip return value at index 0 - it's not deleted here. Also skip class type if not a method.
|
|
153
|
+
for(var i=isClassMethodFunc?1:2;i<argTypes.length;++i){if(argTypes[i].destructorFunction!==null){closureArgs.push(argTypes[i].destructorFunction)}}}var signature=createJsInvokerSignature(argTypes,isClassMethodFunc,returns,isAsync);var invokerFn=InvokerFunctions[signature](...closureArgs);return createNamedFunction(humanName,invokerFn)}var ensureOverloadTable=(proto,methodName,humanName)=>{if(undefined===proto[methodName].overloadTable){var prevFunc=proto[methodName];// Inject an overload resolver function that routes to the appropriate overload based on the number of arguments.
|
|
154
|
+
proto[methodName]=function(...args){// TODO This check can be removed in -O3 level "unsafe" optimizations.
|
|
155
|
+
if(!proto[methodName].overloadTable.hasOwnProperty(args.length)){throwBindingError(`Function '${humanName}' called with an invalid number of arguments (${args.length}) - expects one of (${proto[methodName].overloadTable})!`)}return proto[methodName].overloadTable[args.length].apply(this,args)};// Move the previous function into the overload table.
|
|
156
|
+
proto[methodName].overloadTable=[];proto[methodName].overloadTable[prevFunc.argCount]=prevFunc}};/** @param {number=} numArguments */var exposePublicSymbol=(name,value,numArguments)=>{if(Module.hasOwnProperty(name)){if(undefined===numArguments||(undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments])){throwBindingError(`Cannot register public name '${name}' twice`)}// We are exposing a function with the same name as an existing function. Create an overload table and a function selector
|
|
157
|
+
// that routes between the two.
|
|
158
|
+
ensureOverloadTable(Module,name,name);if(Module[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}// Add the new function into the overload table.
|
|
159
|
+
Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i<count;i++){// TODO(https://github.com/emscripten-core/emscripten/issues/17310):
|
|
160
|
+
// Find a way to hoist the `>> 2` or `>> 3` out of this loop.
|
|
161
|
+
array.push(Number(HEAPU64[(((firstElement)+(i*8))/8)]))}return array};/** @param {number=} numArguments */var replacePublicSymbol=(name,value,numArguments)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol")}// If there's an overload table for this symbol, replace the symbol in the overload table instead.
|
|
162
|
+
if(undefined!==Module[name].overloadTable&&undefined!==numArguments){Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{// Function pointers should show up as numbers, even under wasm64, but
|
|
163
|
+
// we still have some places where bigint values can flow here.
|
|
164
|
+
// https://github.com/emscripten-core/emscripten/issues/18200
|
|
165
|
+
funcPtr=Number(funcPtr);var func=wasmTableMirror[funcPtr];if(!func){/** @suppress {checkTypes} */wasmTableMirror[funcPtr]=func=wasmTable.get(BigInt(funcPtr))}return func};var dynCall=(sig,ptr,args=[],promising=false)=>{// With MEMORY64 we have an additional step to convert `p` arguments to
|
|
166
|
+
// bigint. This is the runtime equivalent of the wrappers we create for wasm
|
|
167
|
+
// exports in `emscripten.py:create_wasm64_wrappers`.
|
|
168
|
+
for(var i=1;i<sig.length;++i){if(sig[i]=="p")args[i-1]=BigInt(args[i-1])}var func=getWasmTableEntry(ptr);var rtn=func(...args);function convert(rtn){return sig[0]=="p"?Number(rtn):rtn}return convert(rtn)};var getDynCaller=(sig,ptr,promising=false)=>(...args)=>dynCall(sig,ptr,args,promising);var embind__requireFunction=(signature,rawFunction,isAsync=false)=>{signature=AsciiToString(signature);function makeDynCaller(){if(signature.includes("p")){return getDynCaller(signature,rawFunction,isAsync)}var rtn=getWasmTableEntry(rawFunction);return rtn}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};class UnboundTypeError extends Error{}var getTypeName=type=>{var ptr=___getTypeName(type);var rv=AsciiToString(ptr);_free(ptr);return rv};var throwUnboundTypeError=(message,types)=>{var unboundTypes=[];var seen={};function visit(type){if(seen[type]){return}if(registeredTypes[type]){return}if(typeDependencies[type]){typeDependencies[type].forEach(visit);return}unboundTypes.push(type);seen[type]=true}types.forEach(visit);throw new UnboundTypeError(`${message}: `+unboundTypes.map(getTypeName).join([", "]))};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex===-1)return signature;return signature.slice(0,argsIndex)};function __embind_register_function(name,argCount,rawArgTypesAddr,signature,rawInvoker,fn,isAsync,isNonnullReturn){name=bigintToI53Checked(name);rawArgTypesAddr=bigintToI53Checked(rawArgTypesAddr);signature=bigintToI53Checked(signature);rawInvoker=bigintToI53Checked(rawInvoker);fn=bigintToI53Checked(fn);var argTypes=heap32VectorToArray(argCount,rawArgTypesAddr);name=AsciiToString(name);name=getFunctionName(name);rawInvoker=embind__requireFunction(signature,rawInvoker,isAsync);exposePublicSymbol(name,function(){throwUnboundTypeError(`Cannot call ${name} due to unbound types`,argTypes)},argCount-1);whenDependentTypesAreResolved([],argTypes,argTypes=>{var invokerArgsArray=[argTypes[0],null].concat(argTypes.slice(1));replacePublicSymbol(name,craftInvokerFunction(name,invokerArgsArray,null,rawInvoker,fn,isAsync),argCount-1);return[]})}/** @suppress {globalThis} */var __embind_register_integer=function(primitiveType,name,size,minRange,maxRange){primitiveType=bigintToI53Checked(primitiveType);name=bigintToI53Checked(name);size=bigintToI53Checked(size);name=AsciiToString(name);const isUnsignedType=minRange===0;let fromWireType=value=>value;if(isUnsignedType){var bitshift=32-8*size;fromWireType=value=>(value<<bitshift)>>>bitshift;maxRange=fromWireType(maxRange)}registerType(primitiveType,{name,fromWireType,toWireType:(destructors,value)=>value,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};function __embind_register_memory_view(rawType,dataTypeIndex,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=Number(HEAPU64[((handle)/8)]);var data=Number(HEAPU64[(((handle)+(8))/8)]);return new TA(HEAP8.buffer,data,size)}name=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})}var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{// Parameter maxBytesToWrite is not optional. Negative values, 0, null,
|
|
169
|
+
// undefined and false each don't write out any bytes.
|
|
170
|
+
if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;// -1 for string null terminator.
|
|
171
|
+
for(var i=0;i<str.length;++i){// For UTF8 byte structure, see http://en.wikipedia.org/wiki/UTF-8#Description
|
|
172
|
+
// and https://www.ietf.org/rfc/rfc2279.txt
|
|
173
|
+
// and https://tools.ietf.org/html/rfc3629
|
|
174
|
+
var u=str.codePointAt(i);if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|(u>>6);heap[outIdx++]=128|(u&63)}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|(u>>12);heap[outIdx++]=128|((u>>6)&63);heap[outIdx++]=128|(u&63)}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|(u>>18);heap[outIdx++]=128|((u>>12)&63);heap[outIdx++]=128|((u>>6)&63);heap[outIdx++]=128|(u&63);// Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.
|
|
175
|
+
// We need to manually skip over the second code unit for correct iteration.
|
|
176
|
+
i++}}// Null-terminate the pointer to the buffer.
|
|
177
|
+
heap[outIdx]=0;return outIdx-startIdx};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var lengthBytesUTF8=str=>{var len=0;for(var i=0;i<str.length;++i){// Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code
|
|
178
|
+
// unit, not a Unicode code point of the character! So decode
|
|
179
|
+
// UTF16->UTF32->UTF8.
|
|
180
|
+
// See http://unicode.org/faq/utf_bom.html#utf16-3
|
|
181
|
+
var c=str.charCodeAt(i);// possibly a lead surrogate
|
|
182
|
+
if(c<=127){len++}else if(c<=2047){len+=2}else if(c>=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var UTF8Decoder=new TextDecoder;var findStringEnd=(heapOrArray,idx,maxBytesToRead,ignoreNul)=>{var maxIdx=idx+maxBytesToRead;if(ignoreNul)return maxIdx;// TextDecoder needs to know the byte length in advance, it doesn't stop on
|
|
183
|
+
// null terminator by itself.
|
|
184
|
+
// As a tiny code save trick, compare idx against maxIdx using a negation,
|
|
185
|
+
// so that maxBytesToRead=undefined/NaN means Infinity.
|
|
186
|
+
while(heapOrArray[idx]&&!(idx>=maxIdx))++idx;return idx};/**
|
|
187
|
+
* Given a pointer 'ptr' to a null-terminated UTF8-encoded string in the
|
|
188
|
+
* emscripten HEAP, returns a copy of that string as a Javascript String object.
|
|
189
|
+
*
|
|
190
|
+
* @param {number} ptr
|
|
191
|
+
* @param {number=} maxBytesToRead - An optional length that specifies the
|
|
192
|
+
* maximum number of bytes to read. You can omit this parameter to scan the
|
|
193
|
+
* string until the first 0 byte. If maxBytesToRead is passed, and the string
|
|
194
|
+
* at [ptr, ptr+maxBytesToReadr[ contains a null byte in the middle, then the
|
|
195
|
+
* string will cut short at that byte index.
|
|
196
|
+
* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.
|
|
197
|
+
* @return {string}
|
|
198
|
+
*/var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>{if(!ptr)return"";var end=findStringEnd(HEAPU8,ptr,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(HEAPU8.subarray(ptr,end))};function __embind_register_std_string(rawType,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);var stdStringIsUTF8=true;registerType(rawType,{name,// For some method names we use string keys here since they are part of
|
|
199
|
+
// the public/external API and/or used by the runtime-generated code.
|
|
200
|
+
fromWireType(value){var length=Number(HEAPU64[((value)/8)]);var payload=value+8;var str;if(stdStringIsUTF8){str=UTF8ToString(payload,length,true)}else{str="";for(var i=0;i<length;++i){str+=String.fromCharCode(HEAPU8[payload+i])}}_free(value);return str},toWireType(destructors,value){if(value instanceof ArrayBuffer){value=new Uint8Array(value)}var length;var valueIsOfTypeString=(typeof value=="string");// We accept `string` or array views with single byte elements
|
|
201
|
+
if(!(valueIsOfTypeString||(ArrayBuffer.isView(value)&&value.BYTES_PER_ELEMENT==1))){throwBindingError("Cannot pass non-string to std::string")}if(stdStringIsUTF8&&valueIsOfTypeString){length=lengthBytesUTF8(value)}else{length=value.length}// assumes POINTER_SIZE alignment
|
|
202
|
+
var base=_malloc(8+length+1);var ptr=base+8;HEAPU64[((base)/8)]=BigInt(length);if(valueIsOfTypeString){if(stdStringIsUTF8){stringToUTF8(value,ptr,length+1)}else{for(var i=0;i<length;++i){var charCode=value.charCodeAt(i);if(charCode>255){_free(base);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}}else{HEAPU8.set(value,ptr)}if(destructors!==null){destructors.push(_free,base)}return base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}var UTF16Decoder=new TextDecoder("utf-16le");var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=((ptr)/2);var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx))};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
|
|
203
|
+
maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;// Null terminator.
|
|
204
|
+
var startPtr=outPtr;var numCharsToWrite=(maxBytesToWrite<str.length*2)?(maxBytesToWrite/2):str.length;for(var i=0;i<numCharsToWrite;++i){// charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
|
|
205
|
+
var codeUnit=str.charCodeAt(i);// possibly a lead surrogate
|
|
206
|
+
HEAP16[((outPtr)/2)]=codeUnit;outPtr+=2}// Null-terminate the pointer to the HEAP.
|
|
207
|
+
HEAP16[((outPtr)/2)]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=((ptr)/4);// If maxBytesToRead is not passed explicitly, it will be undefined, and this
|
|
208
|
+
// will always evaluate to true. This saves on code size.
|
|
209
|
+
for(var i=0;!(i>=maxBytesToRead/4);i++){var utf32=HEAPU32[startIdx+i];if(!utf32&&!ignoreNul)break;str+=String.fromCodePoint(utf32)}return str};var stringToUTF32=(str,outPtr,maxBytesToWrite)=>{// Backwards compatibility: if max bytes is not specified, assume unsafe unbounded write is allowed.
|
|
210
|
+
maxBytesToWrite??=2147483647;if(maxBytesToWrite<4)return 0;var startPtr=outPtr;var endPtr=startPtr+maxBytesToWrite-4;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);// Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.
|
|
211
|
+
// We need to manually skip over the second code unit for correct iteration.
|
|
212
|
+
if(codePoint>65535){i++}HEAP32[((outPtr)/4)]=codePoint;outPtr+=4;if(outPtr+4>endPtr)break}// Null-terminate the pointer to the HEAP.
|
|
213
|
+
HEAP32[((outPtr)/4)]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i<str.length;++i){var codePoint=str.codePointAt(i);// Gotcha: if codePoint is over 0xFFFF, it is represented as a surrogate pair in UTF-16.
|
|
214
|
+
// We need to manually skip over the second code unit for correct iteration.
|
|
215
|
+
if(codePoint>65535){i++}len+=4}return len};function __embind_register_std_wstring(rawType,charSize,name){rawType=bigintToI53Checked(rawType);charSize=bigintToI53Checked(charSize);name=bigintToI53Checked(name);name=AsciiToString(name);var decodeString,encodeString,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16}else{decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32}registerType(rawType,{name,fromWireType:value=>{// Code mostly taken from _embind_register_std_string fromWireType
|
|
216
|
+
var length=Number(HEAPU64[((value)/8)]);var str=decodeString(value+8,length*charSize,true);_free(value);return str},toWireType:(destructors,value)=>{if(!(typeof value=="string")){throwBindingError(`Cannot pass non-string to C++ string type ${name}`)}// assumes POINTER_SIZE alignment
|
|
217
|
+
var length=lengthBytesUTF(value);var ptr=_malloc(8+length+charSize);HEAPU64[((ptr)/8)]=BigInt(length/charSize);encodeString(value,ptr+8,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})}function __embind_register_value_object(rawType,name,constructorSignature,rawConstructor,destructorSignature,rawDestructor){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);constructorSignature=bigintToI53Checked(constructorSignature);rawConstructor=bigintToI53Checked(rawConstructor);destructorSignature=bigintToI53Checked(destructorSignature);rawDestructor=bigintToI53Checked(rawDestructor);structRegistrations[rawType]={name:AsciiToString(name),rawConstructor:embind__requireFunction(constructorSignature,rawConstructor),rawDestructor:embind__requireFunction(destructorSignature,rawDestructor),fields:[]}}function __embind_register_value_object_field(structType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext){structType=bigintToI53Checked(structType);fieldName=bigintToI53Checked(fieldName);getterReturnType=bigintToI53Checked(getterReturnType);getterSignature=bigintToI53Checked(getterSignature);getter=bigintToI53Checked(getter);getterContext=bigintToI53Checked(getterContext);setterArgumentType=bigintToI53Checked(setterArgumentType);setterSignature=bigintToI53Checked(setterSignature);setter=bigintToI53Checked(setter);setterContext=bigintToI53Checked(setterContext);structRegistrations[structType].fields.push({fieldName:AsciiToString(fieldName),getterReturnType,getter:embind__requireFunction(getterSignature,getter),getterContext,setterArgumentType,setter:embind__requireFunction(setterSignature,setter),setterContext})}var __embind_register_void=function(rawType,name){rawType=bigintToI53Checked(rawType);name=bigintToI53Checked(name);name=AsciiToString(name);registerType(rawType,{isVoid:true,// void return values can be optimized out sometimes
|
|
218
|
+
name,fromWireType:()=>undefined,// TODO: assert if anything else is given?
|
|
219
|
+
toWireType:(destructors,o)=>undefined})};var runtimeKeepaliveCounter=0;var __emscripten_runtime_keepalive_clear=()=>{noExitRuntime=false;runtimeKeepaliveCounter=0};var emval_methodCallers=[];var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i<argCount;++i){a[i]=requireRegisteredType(Number(HEAPU64[(((argTypes)+(i*8))/8)]),`parameter ${i}`)}return a};var emval_returnValue=(toReturnWire,destructorsRef,handle)=>{var destructors=[];var result=toReturnWire(destructors,handle);if(destructors.length){// void, primitives and any other types w/o destructors don't need to allocate a handle
|
|
220
|
+
HEAPU64[((destructorsRef)/8)]=BigInt(Emval.toHandle(destructors))}return result};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return AsciiToString(address)}return symbol};var __emval_create_invoker=function(argCount,argTypesPtr,kind){argTypesPtr=bigintToI53Checked(argTypesPtr);var ret=(()=>{var GenericWireTypeSize=16;var[retType,...argTypes]=emval_lookupTypes(argCount,argTypesPtr);var toReturnWire=retType.toWireType.bind(retType);var argFromPtr=argTypes.map(type=>type.readValueFromPointer.bind(type));argCount--;// remove the extracted return type
|
|
221
|
+
var argN=new Array(argCount);var invokerFunction=(handle,methodName,destructorsRef,args)=>{var offset=0;for(var i=0;i<argCount;++i){argN[i]=argFromPtr[i](args+offset);offset+=GenericWireTypeSize}var rv;switch(kind){case 0:rv=Emval.toValue(handle).apply(null,argN);break;case 2:rv=Reflect.construct(Emval.toValue(handle),argN);break;case 3:// no-op, just return the argument
|
|
222
|
+
rv=argN[0];break;case 1:rv=Emval.toValue(handle)[getStringOrSymbol(methodName)](...argN);break}return emval_returnValue(toReturnWire,destructorsRef,rv)};var functionName=`methodCaller<(${argTypes.map(t=>t.name)}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))})();return BigInt(ret)};var __emval_get_global=function(name){name=bigintToI53Checked(name);var ret=(()=>{if(!name){return Emval.toHandle(globalThis)}name=getStringOrSymbol(name);return Emval.toHandle(globalThis[name])})();return BigInt(ret)};function __emval_invoke(caller,handle,methodName,destructorsRef,args){caller=bigintToI53Checked(caller);handle=bigintToI53Checked(handle);methodName=bigintToI53Checked(methodName);destructorsRef=bigintToI53Checked(destructorsRef);args=bigintToI53Checked(args);return emval_methodCallers[caller](handle,methodName,destructorsRef,args)}var __emval_new_cstring=v=>{v=bigintToI53Checked(v);return BigInt(Emval.toHandle(getStringOrSymbol(v)))};function __emval_run_destructors(handle){handle=bigintToI53Checked(handle);var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)}var timers={};var handleException=e=>{// Certain exception types we do not treat as errors since they are used for
|
|
223
|
+
// internal control flow.
|
|
224
|
+
// 1. ExitStatus, which is thrown by exit()
|
|
225
|
+
// 2. "unwind", which is thrown by emscripten_unwind_to_js_event_loop() and others
|
|
226
|
+
// that wish to return to JS event loop.
|
|
227
|
+
if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};/** @param {boolean|number=} implicit */var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{return func()}catch(e){handleException(e)}finally{maybeExit()}};var _emscripten_get_now=()=>performance.now();var __setitimer_js=(which,timeout_ms)=>{// First, clear any existing timer.
|
|
228
|
+
if(timers[which]){clearTimeout(timers[which].id);delete timers[which]}// A timeout of zero simply cancels the current timeout so we have nothing
|
|
229
|
+
// more to do.
|
|
230
|
+
if(!timeout_ms)return 0;var id=setTimeout(()=>{delete timers[which];callUserCallback(()=>__emscripten_timeout(which,_emscripten_get_now()))},timeout_ms);timers[which]={id,timeout_ms};return 0};var getHeapMax=()=>2147483648;var alignMemory=(size,alignment)=>Math.ceil(size/alignment)*alignment;var growMemory=size=>{var oldHeapSize=wasmMemory.buffer.byteLength;var pages=((size-oldHeapSize+65535)/65536)|0;try{// round size grow request up to wasm page size (fixed 64KB per spec)
|
|
231
|
+
wasmMemory.grow(BigInt(pages));// .grow() takes a delta compared to the previous size
|
|
232
|
+
updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize=bigintToI53Checked(requestedSize);var oldSize=HEAPU8.length;// With multithreaded builds, races can happen (another thread might increase the size
|
|
233
|
+
// in between), so return a failure, and let the caller retry.
|
|
234
|
+
// Memory resize rules:
|
|
235
|
+
// 1. Always increase heap size to at least the requested size, rounded up
|
|
236
|
+
// to next page multiple.
|
|
237
|
+
// 2a. If MEMORY_GROWTH_LINEAR_STEP == -1, excessively resize the heap
|
|
238
|
+
// geometrically: increase the heap size according to
|
|
239
|
+
// MEMORY_GROWTH_GEOMETRIC_STEP factor (default +20%), At most
|
|
240
|
+
// overreserve by MEMORY_GROWTH_GEOMETRIC_CAP bytes (default 96MB).
|
|
241
|
+
// 2b. If MEMORY_GROWTH_LINEAR_STEP != -1, excessively resize the heap
|
|
242
|
+
// linearly: increase the heap size by at least
|
|
243
|
+
// MEMORY_GROWTH_LINEAR_STEP bytes.
|
|
244
|
+
// 3. Max size for the heap is capped at 2048MB-WASM_PAGE_SIZE, or by
|
|
245
|
+
// MAXIMUM_MEMORY, or by ASAN limit, depending on which is smallest
|
|
246
|
+
// 4. If we were unable to allocate as much memory, it may be due to
|
|
247
|
+
// over-eager decision to excessively reserve due to (3) above.
|
|
248
|
+
// Hence if an allocation fails, cut down on the amount of excess
|
|
249
|
+
// growth, in an attempt to succeed to perform a smaller allocation.
|
|
250
|
+
// A limit is set for how much we can grow. We should not exceed that
|
|
251
|
+
// (the wasm binary specifies it, so if we tried, we'd fail anyhow).
|
|
252
|
+
var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}// Loop through potential heap size increases. If we attempt a too eager
|
|
253
|
+
// reservation that fails, cut down on the attempted size and reserve a
|
|
254
|
+
// smaller bump instead. (max 3 times, chosen somewhat arbitrarily)
|
|
255
|
+
for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);// ensure geometric growth
|
|
256
|
+
// but limit overreserving (default to capping at +96MB overgrowth at most)
|
|
257
|
+
overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignMemory(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false}var _fd_close=fd=>52;function _fd_seek(fd,offset,whence,newOffset){offset=bigintToI53Checked(offset);newOffset=bigintToI53Checked(newOffset);return 70}var printCharBuffers=[null,[],[]];/**
|
|
258
|
+
* Given a pointer 'idx' to a null-terminated UTF8-encoded string in the given
|
|
259
|
+
* array that contains uint8 values, returns a copy of that string as a
|
|
260
|
+
* Javascript String object.
|
|
261
|
+
* heapOrArray is either a regular array, or a JavaScript typed array view.
|
|
262
|
+
* @param {number=} idx
|
|
263
|
+
* @param {number=} maxBytesToRead
|
|
264
|
+
* @param {boolean=} ignoreNul - If true, the function will not stop on a NUL character.
|
|
265
|
+
* @return {string}
|
|
266
|
+
*/var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);return UTF8Decoder.decode(heapOrArray.buffer?heapOrArray.subarray(idx,endPtr):new Uint8Array(heapOrArray.slice(idx,endPtr)))};var printChar=(stream,curr)=>{var buffer=printCharBuffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer));buffer.length=0}else{buffer.push(curr)}};function _fd_write(fd,iov,iovcnt,pnum){iov=bigintToI53Checked(iov);iovcnt=bigintToI53Checked(iovcnt);pnum=bigintToI53Checked(pnum);// hack to support printf in SYSCALLS_REQUIRE_FILESYSTEM=0
|
|
267
|
+
var num=0;for(var i=0;i<iovcnt;i++){var ptr=Number(HEAPU64[((iov)/8)]);var len=Number(HEAPU64[(((iov)+(8))/8)]);iov+=16;for(var j=0;j<len;j++){printChar(fd,HEAPU8[ptr+j])}num+=len}HEAPU64[((pnum)/8)]=BigInt(num);return 0}// End JS library code
|
|
268
|
+
// include: postlibrary.js
|
|
269
|
+
// This file is included after the automatically-generated JS library code
|
|
270
|
+
// but before the wasm module is created.
|
|
271
|
+
{// Begin ATMODULES hooks
|
|
272
|
+
if(Module["noExitRuntime"])noExitRuntime=Module["noExitRuntime"];if(Module["print"])out=Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];// End ATMODULES hooks
|
|
273
|
+
if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].shift()()}}}// Begin runtime exports
|
|
274
|
+
// End runtime exports
|
|
275
|
+
// Begin JS library exports
|
|
276
|
+
// End JS library exports
|
|
277
|
+
// end include: postlibrary.js
|
|
278
|
+
// Imports from the Wasm binary.
|
|
279
|
+
var ___getTypeName,_malloc,_free,__emscripten_timeout,memory,__indirect_function_table,wasmMemory,wasmTable;function assignWasmExports(wasmExports){___getTypeName=wasmExports["E"];_malloc=wasmExports["G"];_free=wasmExports["H"];__emscripten_timeout=wasmExports["I"];memory=wasmMemory=wasmExports["C"];__indirect_function_table=wasmTable=wasmExports["F"]}var wasmImports={/** @export */w:__abort_js,/** @export */m:__embind_finalize_value_object,/** @export */e:__embind_register_bigint,/** @export */A:__embind_register_bool,/** @export */y:__embind_register_emval,/** @export */i:__embind_register_float,/** @export */o:__embind_register_function,/** @export */d:__embind_register_integer,/** @export */b:__embind_register_memory_view,/** @export */z:__embind_register_std_string,/** @export */f:__embind_register_std_wstring,/** @export */n:__embind_register_value_object,/** @export */a:__embind_register_value_object_field,/** @export */B:__embind_register_void,/** @export */q:__emscripten_runtime_keepalive_clear,/** @export */l:__emval_create_invoker,/** @export */g:__emval_decref,/** @export */h:__emval_get_global,/** @export */k:__emval_invoke,/** @export */c:__emval_new_cstring,/** @export */j:__emval_run_destructors,/** @export */r:__setitimer_js,/** @export */s:_emscripten_resize_heap,/** @export */x:_exit,/** @export */v:_fd_close,/** @export */t:_fd_seek,/** @export */u:_fd_write,/** @export */p:_proc_exit};// Argument name here must shadow the `wasmExports` global so
|
|
280
|
+
// that it is recognised by metadce and minify-import-export-names
|
|
281
|
+
// passes.
|
|
282
|
+
function applySignatureConversions(wasmExports){// First, make a copy of the incoming exports object
|
|
283
|
+
wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>Number(f(BigInt(a0)));var makeWrapper__p=f=>a0=>f(BigInt(a0));var makeWrapper_p=f=>()=>Number(f());wasmExports["E"]=makeWrapper_pp(wasmExports["E"]);wasmExports["G"]=makeWrapper_pp(wasmExports["G"]);wasmExports["H"]=makeWrapper__p(wasmExports["H"]);wasmExports["_emscripten_stack_restore"]=makeWrapper__p(wasmExports["_emscripten_stack_restore"]);wasmExports["_emscripten_stack_alloc"]=makeWrapper_pp(wasmExports["_emscripten_stack_alloc"]);wasmExports["emscripten_stack_get_current"]=makeWrapper_p(wasmExports["emscripten_stack_get_current"]);return wasmExports}// include: postamble.js
|
|
284
|
+
// === Auto-generated postamble setup entry stuff ===
|
|
285
|
+
function run(){preRun();function doRun(){// run may have just been called through dependencies being fulfilled just in this very frame,
|
|
286
|
+
// or while the async setStatus time below was happening
|
|
287
|
+
Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve?.(Module);Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>Module["setStatus"](""),1);doRun()},1)}else{doRun()}}var wasmExports;// In modularize mode the generated code is within a factory function so we
|
|
288
|
+
// can use await here (since it's not top-level-await).
|
|
289
|
+
wasmExports=await (createWasm());run();// end include: postamble.js
|
|
290
|
+
// include: postamble_modularize.js
|
|
291
|
+
// In MODULARIZE mode we wrap the generated code in a factory function
|
|
292
|
+
// and return either the Module itself, or a promise of the module.
|
|
293
|
+
// We assign to the `moduleRtn` global here and configure closure to see
|
|
294
|
+
// this as an extern so it won't get minified.
|
|
295
|
+
if(runtimeInitialized){moduleRtn=Module}else{// Set up the promise that indicates the Module is initialized
|
|
296
|
+
moduleRtn=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject})}
|
|
297
|
+
;return moduleRtn}// Export using a UMD style export, or ES6 exports if selected
|
|
298
|
+
export default Module;
|
package/dist/jxl-enc.wasm
CHANGED
|
Binary file
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// TypeScript bindings for emscripten-generated code. Automatically generated at compile time.
|
|
2
|
+
declare namespace RuntimeExports {
|
|
3
|
+
let HEAP8: Int8Array;
|
|
4
|
+
}
|
|
5
|
+
interface WasmModule {
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
type EmbindString = ArrayBuffer|Uint8Array|Uint8ClampedArray|Int8Array|string;
|
|
9
|
+
export type MozJpegOptions = {
|
|
10
|
+
quality: number,
|
|
11
|
+
baseline: boolean,
|
|
12
|
+
arithmetic: boolean,
|
|
13
|
+
progressive: boolean,
|
|
14
|
+
optimizeCoding: boolean,
|
|
15
|
+
smoothing: number,
|
|
16
|
+
colorSpace: number,
|
|
17
|
+
quantTable: number,
|
|
18
|
+
trellisMultipass: boolean,
|
|
19
|
+
trellisOptZero: boolean,
|
|
20
|
+
trellisOptTable: boolean,
|
|
21
|
+
trellisLoops: number,
|
|
22
|
+
autoSubsample: number,
|
|
23
|
+
chromaSubsample: boolean,
|
|
24
|
+
separateChromaQuality: boolean,
|
|
25
|
+
chromaQuality: number
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
interface EmbindModule {
|
|
29
|
+
encode(_0: EmbindString, _1: number, _2: number, _3: MozJpegOptions): any;
|
|
30
|
+
decode(_0: EmbindString): any;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export type MainModule = WasmModule & typeof RuntimeExports & EmbindModule;
|
|
34
|
+
export default function MainModuleFactory (options?: unknown): Promise<MainModule>;
|