From ad616bbd993212c26f14c2e8ccef62b636a66500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rimas=20Misevi=C4=8Dius?= Date: Mon, 9 Sep 2024 20:41:26 +0300 Subject: [PATCH] Add Upa URL demo --- .gitattributes | 12 +++++-- demo/index.html | 44 +++++++++++++++++++++++++ demo/url-api.js | 1 + demo/url-api.wasm | Bin 0 -> 189055 bytes demo/url-demo.css | 47 +++++++++++++++++++++++++++ demo/url-demo.js | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 182 insertions(+), 3 deletions(-) create mode 100644 demo/index.html create mode 100644 demo/url-api.js create mode 100644 demo/url-api.wasm create mode 100644 demo/url-demo.css create mode 100644 demo/url-demo.js diff --git a/.gitattributes b/.gitattributes index 9f1ce07..4c2a4ef 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,8 +7,14 @@ # Source files ############################################################################### -*.css text -*.html text -*.js text +*.css text eol=lf +*.html text eol=lf +*.js text eol=lf *.md text *.txt text + +############################################################################### +# Binary files +############################################################################### + +*.wasm binary diff --git a/demo/index.html b/demo/index.html new file mode 100644 index 0000000..9d44261 --- /dev/null +++ b/demo/index.html @@ -0,0 +1,44 @@ + + + + + Upa URL demo + + + + + +

Upa URL demo

+ +
+ + + + + + +
+ + +
+ +
+ +

Parsing result:

+ + + + + + + + + + + + +
href
protocol
username
password
hostname
port
pathname
hash
origin
+ +
+ + diff --git a/demo/url-api.js b/demo/url-api.js new file mode 100644 index 0000000..0bd2b77 --- /dev/null +++ b/demo/url-api.js @@ -0,0 +1 @@ +var Module=typeof Module!="undefined"?Module:{};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){}var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};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("fs");var nodePath=require("path");scriptDirectory=__dirname+"/";readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);var ret=fs.readFileSync(filename);return ret};readAsync=(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return new Promise((resolve,reject)=>{fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)reject(err);else resolve(binary?data.buffer:data)})})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{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=url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}return fetch(url,{credentials:"same-origin"}).then(response=>{if(response.ok){return response.arrayBuffer()}return Promise.reject(new Error(response.status+" : "+response.url))})}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];var wasmBinary=Module["wasmBinary"];var wasmMemory;var ABORT=false;var EXITSTATUS;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";var isDataURI=filename=>filename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");function findWasmBinary(){var f="url-api.wasm";if(!isDataURI(f)){return locateFile(f)}return f}var wasmBinaryFile;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"}function getBinaryPromise(binaryFile){if(!wasmBinary){return readAsync(binaryFile).then(response=>new Uint8Array(response),()=>getBinarySync(binaryFile))}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function getWasmImports(){return{a:wasmImports}}function createWasm(){var info=getWasmImports();function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["r"];updateMemoryViews();wasmTable=wasmExports["t"];addOnInit(wasmExports["s"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}if(!wasmBinaryFile)wasmBinaryFile=findWasmBinary();instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;var UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx,maxBytesToRead)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var ___assert_fail=(condition,filename,line,func)=>{abort(`Assertion failed: ${UTF8ToString(condition)}, at: `+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])};class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>2]=type}get_type(){return HEAPU32[this.ptr+4>>2]}set_destructor(destructor){HEAPU32[this.ptr+8>>2]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>2]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12]=caught}get_caught(){return HEAP8[this.ptr+12]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13]=rethrown}get_rethrown(){return HEAP8[this.ptr+13]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>2]}}var exceptionLast=0;var uncaughtExceptionCount=0;var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};var __abort_js=()=>{abort("")};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{};var embind_init_charCodes=()=>{var codes=new Array(256);for(var i=0;i<256;++i){codes[i]=String.fromCharCode(i)}embind_charCodes=codes};var embind_charCodes;var readLatin1String=ptr=>{var ret="";var c=ptr;while(HEAPU8[c]){ret+=embind_charCodes[HEAPU8[c++]]}return ret};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};var BindingError;var throwBindingError=message=>{throw new BindingError(message)};var InternalError;var throwInternalError=message=>{throw new InternalError(message)};var whenDependentTypesAreResolved=(myTypes,dependentTypes,getTypeConverters)=>{myTypes.forEach(function(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{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)}};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 GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:function(wt){return!!wt},toWireType:function(destructors,o){return o?trueValue:falseValue},argPackAdvance:GenericWireTypeSize,readValueFromPointer:function(pointer){return this["fromWireType"](HEAPU8[pointer])},destructorFunction:null})};var shallowCopyInternalPointer=o=>({count:o.count,deleteScheduled:o.deleteScheduled,preservePointerOnDelete:o.preservePointerOnDelete,ptr:o.ptr,ptrType:o.ptrType,smartPtr:o.smartPtr,smartPtrType:o.smartPtrType});var throwInstanceAlreadyDeleted=obj=>{function getInstanceTypeName(handle){return handle.$$.ptrType.registeredClass.name}throwBindingError(getInstanceTypeName(obj)+" instance already deleted")};var finalizationRegistry=false;var detachFinalizer=handle=>{};var runDestructor=$$=>{if($$.smartPtr){$$.smartPtrType.rawDestructor($$.smartPtr)}else{$$.ptrType.registeredClass.rawDestructor($$.ptr)}};var releaseClassHandle=$$=>{$$.count.value-=1;var toDelete=0===$$.count.value;if(toDelete){runDestructor($$)}};var downcastPointer=(ptr,ptrClass,desiredClass)=>{if(ptrClass===desiredClass){return ptr}if(undefined===desiredClass.baseClass){return null}var rv=downcastPointer(ptr,ptrClass,desiredClass.baseClass);if(rv===null){return null}return desiredClass.downcast(rv)};var registeredPointers={};var getInheritedInstanceCount=()=>Object.keys(registeredInstances).length;var getLiveInheritedInstances=()=>{var rv=[];for(var k in registeredInstances){if(registeredInstances.hasOwnProperty(k)){rv.push(registeredInstances[k])}}return rv};var deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;var setDelayFunction=fn=>{delayFunction=fn;if(deletionQueue.length&&delayFunction){delayFunction(flushPendingDeletes)}};var init_embind=()=>{Module["getInheritedInstanceCount"]=getInheritedInstanceCount;Module["getLiveInheritedInstances"]=getLiveInheritedInstances;Module["flushPendingDeletes"]=flushPendingDeletes;Module["setDelayFunction"]=setDelayFunction};var registeredInstances={};var getBasestPointer=(class_,ptr)=>{if(ptr===undefined){throwBindingError("ptr should not be undefined")}while(class_.baseClass){ptr=class_.upcast(ptr);class_=class_.baseClass}return ptr};var getInheritedInstance=(class_,ptr)=>{ptr=getBasestPointer(class_,ptr);return registeredInstances[ptr]};var makeClassHandle=(prototype,record)=>{if(!record.ptrType||!record.ptr){throwInternalError("makeClassHandle requires ptr and ptrType")}var hasSmartPtrType=!!record.smartPtrType;var hasSmartPtr=!!record.smartPtr;if(hasSmartPtrType!==hasSmartPtr){throwInternalError("Both smartPtrType and smartPtr must be specified")}record.count={value:1};return attachFinalizer(Object.create(prototype,{$$:{value:record,writable:true}}))};function RegisteredPointer_fromWireType(ptr){var rawPointer=this.getPointee(ptr);if(!rawPointer){this.destructor(ptr);return null}var registeredInstance=getInheritedInstance(this.registeredClass,rawPointer);if(undefined!==registeredInstance){if(0===registeredInstance.$$.count.value){registeredInstance.$$.ptr=rawPointer;registeredInstance.$$.smartPtr=ptr;return registeredInstance["clone"]()}else{var rv=registeredInstance["clone"]();this.destructor(ptr);return rv}}function makeDefaultHandle(){if(this.isSmartPointer){return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:rawPointer,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(this.registeredClass.instancePrototype,{ptrType:this,ptr:ptr})}}var actualType=this.registeredClass.getActualType(rawPointer);var registeredPointerRecord=registeredPointers[actualType];if(!registeredPointerRecord){return makeDefaultHandle.call(this)}var toType;if(this.isConst){toType=registeredPointerRecord.constPointerType}else{toType=registeredPointerRecord.pointerType}var dp=downcastPointer(rawPointer,this.registeredClass,toType.registeredClass);if(dp===null){return makeDefaultHandle.call(this)}if(this.isSmartPointer){return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp,smartPtrType:this,smartPtr:ptr})}else{return makeClassHandle(toType.registeredClass.instancePrototype,{ptrType:toType,ptr:dp})}}var attachFinalizer=handle=>{if("undefined"===typeof FinalizationRegistry){attachFinalizer=handle=>handle;return handle}finalizationRegistry=new FinalizationRegistry(info=>{releaseClassHandle(info.$$)});attachFinalizer=handle=>{var $$=handle.$$;var hasSmartPtr=!!$$.smartPtr;if(hasSmartPtr){var info={$$:$$};finalizationRegistry.register(handle,info,handle)}return handle};detachFinalizer=handle=>finalizationRegistry.unregister(handle);return attachFinalizer(handle)};var init_ClassHandle=()=>{Object.assign(ClassHandle.prototype,{isAliasOf(other){if(!(this instanceof ClassHandle)){return false}if(!(other instanceof ClassHandle)){return false}var leftClass=this.$$.ptrType.registeredClass;var left=this.$$.ptr;other.$$=other.$$;var rightClass=other.$$.ptrType.registeredClass;var right=other.$$.ptr;while(leftClass.baseClass){left=leftClass.upcast(left);leftClass=leftClass.baseClass}while(rightClass.baseClass){right=rightClass.upcast(right);rightClass=rightClass.baseClass}return leftClass===rightClass&&left===right},clone(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.preservePointerOnDelete){this.$$.count.value+=1;return this}else{var clone=attachFinalizer(Object.create(Object.getPrototypeOf(this),{$$:{value:shallowCopyInternalPointer(this.$$)}}));clone.$$.count.value+=1;clone.$$.deleteScheduled=false;return clone}},delete(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}detachFinalizer(this);releaseClassHandle(this.$$);if(!this.$$.preservePointerOnDelete){this.$$.smartPtr=undefined;this.$$.ptr=undefined}},isDeleted(){return!this.$$.ptr},deleteLater(){if(!this.$$.ptr){throwInstanceAlreadyDeleted(this)}if(this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete){throwBindingError("Object already scheduled for deletion")}deletionQueue.push(this);if(deletionQueue.length===1&&delayFunction){delayFunction(flushPendingDeletes)}this.$$.deleteScheduled=true;return this}})};function ClassHandle(){}var createNamedFunction=(name,body)=>Object.defineProperty(body,"name",{value:name});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.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;if(undefined!==numArguments){Module[name].numArguments=numArguments}}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{if(undefined===name){return"_unknown"}name=name.replace(/[^a-zA-Z0-9_]/g,"$");var f=name.charCodeAt(0);if(f>=char_0&&f<=char_9){return`_${name}`}return name};function RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast){this.name=name;this.constructor=constructor;this.instancePrototype=instancePrototype;this.rawDestructor=rawDestructor;this.baseClass=baseClass;this.getActualType=getActualType;this.upcast=upcast;this.downcast=downcast;this.pureVirtualFunctions=[]}var upcastPointer=(ptr,ptrClass,desiredClass)=>{while(ptrClass!==desiredClass){if(!ptrClass.upcast){throwBindingError(`Expected null or instance of ${desiredClass.name}, got an instance of ${ptrClass.name}`)}ptr=ptrClass.upcast(ptr);ptrClass=ptrClass.baseClass}return ptr};function constNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function genericPointerToWireType(destructors,handle){var ptr;if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}if(this.isSmartPointer){ptr=this.rawConstructor();if(destructors!==null){destructors.push(this.rawDestructor,ptr)}return ptr}else{return 0}}if(!handle||!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(!this.isConst&&handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);if(this.isSmartPointer){if(undefined===handle.$$.smartPtr){throwBindingError("Passing raw pointer to smart pointer is illegal")}switch(this.sharingPolicy){case 0:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{throwBindingError(`Cannot convert argument of type ${handle.$$.smartPtrType?handle.$$.smartPtrType.name:handle.$$.ptrType.name} to parameter type ${this.name}`)}break;case 1:ptr=handle.$$.smartPtr;break;case 2:if(handle.$$.smartPtrType===this){ptr=handle.$$.smartPtr}else{var clonedHandle=handle["clone"]();ptr=this.rawShare(ptr,Emval.toHandle(()=>clonedHandle["delete"]()));if(destructors!==null){destructors.push(this.rawDestructor,ptr)}}break;default:throwBindingError("Unsupporting sharing policy")}}return ptr}function nonConstNoSmartPtrRawPointerToWireType(destructors,handle){if(handle===null){if(this.isReference){throwBindingError(`null is not a valid ${this.name}`)}return 0}if(!handle.$$){throwBindingError(`Cannot pass "${embindRepr(handle)}" as a ${this.name}`)}if(!handle.$$.ptr){throwBindingError(`Cannot pass deleted object as a pointer of type ${this.name}`)}if(handle.$$.ptrType.isConst){throwBindingError(`Cannot convert argument of type ${handle.$$.ptrType.name} to parameter type ${this.name}`)}var handleClass=handle.$$.ptrType.registeredClass;var ptr=upcastPointer(handle.$$.ptr,handleClass,this.registeredClass);return ptr}function readPointer(pointer){return this["fromWireType"](HEAPU32[pointer>>2])}var init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr)}return ptr},destructor(ptr){this.rawDestructor?.(ptr)},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,fromWireType:RegisteredPointer_fromWireType})};function RegisteredPointer(name,registeredClass,isReference,isConst,isSmartPointer,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor){this.name=name;this.registeredClass=registeredClass;this.isReference=isReference;this.isConst=isConst;this.isSmartPointer=isSmartPointer;this.pointeeType=pointeeType;this.sharingPolicy=sharingPolicy;this.rawGetPointee=rawGetPointee;this.rawConstructor=rawConstructor;this.rawShare=rawShare;this.rawDestructor=rawDestructor;if(!isSmartPointer&®isteredClass.baseClass===undefined){if(isConst){this["toWireType"]=constNoSmartPtrRawPointerToWireType;this.destructorFunction=null}else{this["toWireType"]=nonConstNoSmartPtrRawPointerToWireType;this.destructorFunction=null}}else{this["toWireType"]=genericPointerToWireType}}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 dynCallLegacy=(sig,ptr,args)=>{sig=sig.replace(/p/g,"i");var f=Module["dynCall_"+sig];return f(ptr,...args)};var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var dynCall=(sig,ptr,args=[])=>{if(sig.includes("j")){return dynCallLegacy(sig,ptr,args)}var rtn=getWasmTableEntry(ptr)(...args);return rtn};var getDynCaller=(sig,ptr)=>(...args)=>dynCall(sig,ptr,args);var embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){if(signature.includes("j")){return getDynCaller(signature,rawFunction)}return getWasmTableEntry(rawFunction)}var fp=makeDynCaller();if(typeof fp!="function"){throwBindingError(`unknown function pointer with signature ${signature}: ${rawFunction}`)}return fp};var extendError=(baseErrorType,errorName)=>{var errorClass=createNamedFunction(errorName,function(message){this.name=errorName;this.message=message;var stack=new Error(message).stack;if(stack!==undefined){this.stack=this.toString()+"\n"+stack.replace(/^Error(:[^\n]*)?\n/,"")}});errorClass.prototype=Object.create(baseErrorType.prototype);errorClass.prototype.constructor=errorClass;errorClass.prototype.toString=function(){if(this.message===undefined){return this.name}else{return`${this.name}: ${this.message}`}};return errorClass};var UnboundTypeError;var getTypeName=type=>{var ptr=___getTypeName(type);var rv=readLatin1String(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 __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=readLatin1String(name);getActualType=embind__requireFunction(getActualTypeSignature,getActualType);upcast&&=embind__requireFunction(upcastSignature,upcast);downcast&&=embind__requireFunction(downcastSignature,downcast);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);var legalFunctionName=makeLegalFunctionName(name);exposePublicSymbol(legalFunctionName,function(){throwUnboundTypeError(`Cannot construct ${name} due to unbound types`,[baseClassRawType])});whenDependentTypesAreResolved([rawType,rawPointerType,rawConstPointerType],baseClassRawType?[baseClassRawType]:[],base=>{base=base[0];var baseClass;var basePrototype;if(baseClassRawType){baseClass=base.registeredClass;basePrototype=baseClass.instancePrototype}else{basePrototype=ClassHandle.prototype}var constructor=createNamedFunction(name,function(...args){if(Object.getPrototypeOf(this)!==instancePrototype){throw new BindingError("Use 'new' to construct "+name)}if(undefined===registeredClass.constructor_body){throw new BindingError(name+" has no accessible constructor")}var body=registeredClass.constructor_body[args.length];if(undefined===body){throw new BindingError(`Tried to invoke ctor of ${name} with invalid number of parameters (${args.length}) - expected (${Object.keys(registeredClass.constructor_body).toString()}) parameters instead!`)}return body.apply(this,args)});var instancePrototype=Object.create(basePrototype,{constructor:{value:constructor}});constructor.prototype=instancePrototype;var registeredClass=new RegisteredClass(name,constructor,instancePrototype,rawDestructor,baseClass,getActualType,upcast,downcast);if(registeredClass.baseClass){registeredClass.baseClass.__derivedClasses??=[];registeredClass.baseClass.__derivedClasses.push(registeredClass)}var referenceConverter=new RegisteredPointer(name,registeredClass,true,false,false);var pointerConverter=new RegisteredPointer(name+"*",registeredClass,false,false,false);var constPointerConverter=new RegisteredPointer(name+" const*",registeredClass,false,true,false);registeredPointers[rawType]={pointerType:pointerConverter,constPointerType:constPointerConverter};replacePublicSymbol(legalFunctionName,constructor);return[referenceConverter,pointerConverter,constPointerConverter]})};var heap32VectorToArray=(count,firstElement)=>{var array=[];for(var i=0;i>2])}return array};var runDestructors=destructors=>{while(destructors.length){var ptr=destructors.pop();var del=destructors.pop();del(ptr)}};function usesDestructorStack(argTypes){for(var i=1;i{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);invoker=embind__requireFunction(invokerSignature,invoker);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`constructor ${classType.name}`;if(undefined===classType.registeredClass.constructor_body){classType.registeredClass.constructor_body=[]}if(undefined!==classType.registeredClass.constructor_body[argCount-1]){throw new BindingError(`Cannot register multiple constructors with identical number of parameters (${argCount-1}) for class '${classType.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`)}classType.registeredClass.constructor_body[argCount-1]=()=>{throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes)};whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);classType.registeredClass.constructor_body[argCount-1]=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);return[]});return[]})};var validateThis=(this_,classType,humanName)=>{if(!(this_ instanceof Object)){throwBindingError(`${humanName} with invalid "this": ${this_}`)}if(!(this_ instanceof classType.registeredClass.constructor)){throwBindingError(`${humanName} incompatible with "this" of type ${this_.constructor.name}`)}if(!this_.$$.ptr){throwBindingError(`cannot call emscripten binding method ${humanName} on deleted object`)}return upcastPointer(this_.$$.ptr,this_.$$.ptrType.registeredClass,classType.registeredClass)};var __embind_register_class_property=(classType,fieldName,getterReturnType,getterSignature,getter,getterContext,setterArgumentType,setterSignature,setter,setterContext)=>{fieldName=readLatin1String(fieldName);getter=embind__requireFunction(getterSignature,getter);whenDependentTypesAreResolved([],[classType],classType=>{classType=classType[0];var humanName=`${classType.name}.${fieldName}`;var desc={get(){throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])},enumerable:true,configurable:true};if(setter){desc.set=()=>throwUnboundTypeError(`Cannot access ${humanName} due to unbound types`,[getterReturnType,setterArgumentType])}else{desc.set=v=>throwBindingError(humanName+" is a read-only property")}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);whenDependentTypesAreResolved([],setter?[getterReturnType,setterArgumentType]:[getterReturnType],types=>{var getterReturnType=types[0];var desc={get(){var ptr=validateThis(this,classType,humanName+" getter");return getterReturnType["fromWireType"](getter(getterContext,ptr))},enumerable:true};if(setter){setter=embind__requireFunction(setterSignature,setter);var setterArgumentType=types[1];desc.set=function(v){var ptr=validateThis(this,classType,humanName+" setter");var destructors=[];setter(setterContext,ptr,setterArgumentType["toWireType"](destructors,v));runDestructors(destructors)}}Object.defineProperty(classType.registeredClass.instancePrototype,fieldName,desc);return[]});return[]})};var emval_freelist=[];var emval_handles=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){emval_handles[handle]=undefined;emval_freelist.push(handle)}};var count_emval_handles=()=>emval_handles.length/2-5-emval_freelist.length;var init_emval=()=>{emval_handles.push(0,1,undefined,1,null,1,true,1,false,1);Module["count_emval_handles"]=count_emval_handles};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),argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction:null};var __embind_register_emval=rawType=>registerType(rawType,EmValType);var embindRepr=v=>{if(v===null){return"null"}var t=typeof v;if(t==="object"||t==="array"||t==="function"){return v.toString()}else{return""+v}};var floatReadValueFromPointer=(name,width)=>{switch(width){case 4:return function(pointer){return this["fromWireType"](HEAPF32[pointer>>2])};case 8:return function(pointer){return this["fromWireType"](HEAPF64[pointer>>3])};default:throw new TypeError(`invalid float width (${width}): ${name}`)}};var __embind_register_float=(rawType,name,size)=>{name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};var integerReadValueFromPointer=(name,width,signed)=>{switch(width){case 1:return signed?pointer=>HEAP8[pointer]:pointer=>HEAPU8[pointer];case 2:return signed?pointer=>HEAP16[pointer>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{name=readLatin1String(name);if(maxRange===-1){maxRange=4294967295}var fromWireType=value=>value;if(minRange===0){var bitshift=32-8*size;fromWireType=value=>value<>>bitshift}var isUnsignedType=name.includes("unsigned");var checkAssertions=(value,toTypeName)=>{};var toWireType;if(isUnsignedType){toWireType=function(destructors,value){checkAssertions(value,this.name);return value>>>0}}else{toWireType=function(destructors,value){checkAssertions(value,this.name);return value}}registerType(primitiveType,{name:name,fromWireType:fromWireType,toWireType:toWireType,argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,minRange!==0),destructorFunction:null})};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array];var TA=typeMapping[dataTypeIndex];function decodeMemoryView(handle){var size=HEAPU32[handle>>2];var data=HEAPU32[handle+4>>2];return new TA(HEAP8.buffer,data,size)}name=readLatin1String(name);registerType(rawType,{name:name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,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=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}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}}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=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=name==="std::string";registerType(rawType,{name:name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;if(stdStringIsUTF8){var decodeStartPtr=payload;for(var i=0;i<=length;++i){var currentBytePtr=payload+i;if(i==length||HEAPU8[currentBytePtr]==0){var maxRead=currentBytePtr-decodeStartPtr;var stringSegment=UTF8ToString(decodeStartPtr,maxRead);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+1}}}else{var a=new Array(length);for(var i=0;i>2]=length;if(stdStringIsUTF8&&valueIsOfTypeString){stringToUTF8(value,ptr,length+1)}else{if(valueIsOfTypeString){for(var i=0;i255){_free(ptr);throwBindingError("String has UTF-16 code units that do not fit in 8 bits")}HEAPU8[ptr+i]=charCode}}else{for(var i=0;i{var endPtr=ptr;var idx=endPtr>>1;var maxIdx=idx+maxBytesToRead/2;while(!(idx>=maxIdx)&&HEAPU16[idx])++idx;endPtr=idx<<1;if(endPtr-ptr>32&&UTF16Decoder)return UTF16Decoder.decode(HEAPU8.subarray(ptr,endPtr));var str="";for(var i=0;!(i>=maxBytesToRead/2);++i){var codeUnit=HEAP16[ptr+i*2>>1];if(codeUnit==0)break;str+=String.fromCharCode(codeUnit)}return str};var stringToUTF16=(str,outPtr,maxBytesToWrite)=>{maxBytesToWrite??=2147483647;if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead)=>{var i=0;var str="";while(!(i>=maxBytesToRead/4)){var utf32=HEAP32[ptr+i*4>>2];if(utf32==0)break;++i;if(utf32>=65536){var ch=utf32-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}else{str+=String.fromCharCode(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=55296&&codeUnit<=57343){var trailSurrogate=str.charCodeAt(++i);codeUnit=65536+((codeUnit&1023)<<10)|trailSurrogate&1023}HEAP32[outPtr>>2]=codeUnit;outPtr+=4;if(outPtr+4>endPtr)break}HEAP32[outPtr>>2]=0;return outPtr-startPtr};var lengthBytesUTF32=str=>{var len=0;for(var i=0;i=55296&&codeUnit<=57343)++i;len+=4}return len};var __embind_register_std_wstring=(rawType,charSize,name)=>{name=readLatin1String(name);var decodeString,encodeString,readCharAt,lengthBytesUTF;if(charSize===2){decodeString=UTF16ToString;encodeString=stringToUTF16;lengthBytesUTF=lengthBytesUTF16;readCharAt=pointer=>HEAPU16[pointer>>1]}else if(charSize===4){decodeString=UTF32ToString;encodeString=stringToUTF32;lengthBytesUTF=lengthBytesUTF32;readCharAt=pointer=>HEAPU32[pointer>>2]}registerType(rawType,{name:name,fromWireType:value=>{var length=HEAPU32[value>>2];var str;var decodeStartPtr=value+4;for(var i=0;i<=length;++i){var currentBytePtr=value+4+i*charSize;if(i==length||readCharAt(currentBytePtr)==0){var maxReadBytes=currentBytePtr-decodeStartPtr;var stringSegment=decodeString(decodeStartPtr,maxReadBytes);if(str===undefined){str=stringSegment}else{str+=String.fromCharCode(0);str+=stringSegment}decodeStartPtr=currentBytePtr+charSize}}_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(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr)}return ptr},argPackAdvance:GenericWireTypeSize,readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr)}})};var __embind_register_void=(rawType,name)=>{name=readLatin1String(name);registerType(rawType,{isVoid:true,name:name,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var __emscripten_memcpy_js=(dest,src,num)=>HEAPU8.copyWithin(dest,src,src+num);var abortOnCannotGrowMemory=requestedSize=>{abort("OOM")};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;abortOnCannotGrowMemory(requestedSize)};embind_init_charCodes();BindingError=Module["BindingError"]=class BindingError extends Error{constructor(message){super(message);this.name="BindingError"}};InternalError=Module["InternalError"]=class InternalError extends Error{constructor(message){super(message);this.name="InternalError"}};init_ClassHandle();init_embind();init_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var wasmImports={d:___assert_fail,b:___cxa_throw,m:__abort_js,l:__embind_register_bigint,j:__embind_register_bool,q:__embind_register_class,i:__embind_register_class_constructor,c:__embind_register_class_property,p:__embind_register_emval,h:__embind_register_float,e:__embind_register_integer,a:__embind_register_memory_view,g:__embind_register_std_string,f:__embind_register_std_wstring,k:__embind_register_void,o:__emscripten_memcpy_js,n:_emscripten_resize_heap};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["s"])();var _malloc=a0=>(_malloc=wasmExports["u"])(a0);var ___getTypeName=a0=>(___getTypeName=wasmExports["v"])(a0);var _free=a0=>(_free=wasmExports["w"])(a0);var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); diff --git a/demo/url-api.wasm b/demo/url-api.wasm new file mode 100644 index 0000000000000000000000000000000000000000..dc42a249327b63ce405ea6fa73dd24384ea0996c GIT binary patch literal 189055 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

# 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 n?h;UKA4bBbo)l^QHTM5kyuQd%Ooii_5x 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 F0|4D(0MY;e literal 0 HcmV?d00001 diff --git a/demo/url-demo.css b/demo/url-demo.css new file mode 100644 index 0000000..8b7b5ef --- /dev/null +++ b/demo/url-demo.css @@ -0,0 +1,47 @@ +* { box-sizing: border-box; } + +body { + font-family: Arial; + max-width: 70em; + margin: 16px; +} + +h2 { + font-size: 1.4em; + margin-top: 0.3em; + margin-bottom: 0.2em; +} + +form .label { + display: block; + margin-bottom: 6px; +} + +form .field { + width: 100%; + margin-bottom: 20px; + padding: 3px; +} + +.output { + background-color: #F7F0E0; + border: 1px solid #D2691E; + width: 100%; + padding: 1em; + margin: 0; +} + +.output th { + width: 80px; + text-align: right; + padding-right: 10px; +} + +.output td { + font-family: 'Bitstream Vera Sans Mono', 'Andale Mono', 'Lucida Console', monospace, fixed; + white-space: pre-wrap; +} + +.output.error { + color: #B90000; +} diff --git a/demo/url-demo.js b/demo/url-demo.js new file mode 100644 index 0000000..4f0de87 --- /dev/null +++ b/demo/url-demo.js @@ -0,0 +1,81 @@ +const component_list = [ + "href", + "protocol", + "username", + "password", + "host", + "hostname", + "port", + "pathname", + "search", + "hash", + "origin" +]; + +function getUrl() { + // construct URL + const url = elemBase.value.length !== 0 + ? new Module.URL(elemUrl.value, elemBase.value) + : new Module.URL(elemUrl.value); + // apply setter + if (elemSetter.value.length !== 0) + url[elemSetter.value] = elemSetterInp.value; + return url; +} + +function showResult(url) { + const output = document.getElementById("url-output"); + const error = document.getElementById("url-error"); + if (url.valid) { + output.hidden = false; + error.hidden = true; + for (const component of component_list) { + const trComponent = output.querySelector(`.${component}`); + if (trComponent) { + const elemComponent = trComponent.querySelector("td"); + elemComponent.textContent = url[component]; + } + } + } else { + output.hidden = true; + error.hidden = false; + error.textContent = url.base_valid ? "URL parse error" : "Base URL parse error"; + } +} + +function onInpChange() { + showResult(getUrl()); +} + +function onSetterChange() { + elemSetterInp.disabled = elemSetter.value.length === 0; + onInpChange(); +} + +// Input elements +const elemUrl = document.getElementById("url"); +const elemBase = document.getElementById("base"); +const elemSetter = document.getElementById("setter"); +const elemSetterInp = document.getElementById("setter-inp"); + +// After text change +elemUrl.addEventListener("input", onInpChange); +elemBase.addEventListener("input", onInpChange); +elemSetter.addEventListener("change", onSetterChange); +elemSetterInp.addEventListener("input", onInpChange); + +// Fill setters list +for (var component of component_list) { + if (component !== "origin") { + var option = document.createElement("option"); + option.text = component; + option.value = component; + elemSetter.add(option); + } +} + +// Parse initial URL +if (Module.URL) + onSetterChange(); +else + Module['onRuntimeInitialized'] = onSetterChange;