@crossbind/example-lib-prebuilt-matrix 2.0.0-beta.50

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.
Files changed (50) hide show
  1. package/AGENTS.md +78 -0
  2. package/CHANGELOG.md +20 -0
  3. package/LICENSE +21 -0
  4. package/README.md +81 -0
  5. package/crossbind-example-lib-prebuilt-matrix.podspec +21 -0
  6. package/crossbind-example-lib-prebuilt-matrix.xcframework/Info.plist +47 -0
  7. package/crossbind-example-lib-prebuilt-matrix.xcframework/ios-arm64/Headers/Matrix.h +12 -0
  8. package/crossbind-example-lib-prebuilt-matrix.xcframework/ios-arm64/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  9. package/crossbind-example-lib-prebuilt-matrix.xcframework/ios-arm64-simulator/Headers/Matrix.h +12 -0
  10. package/crossbind-example-lib-prebuilt-matrix.xcframework/ios-arm64-simulator/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  11. package/crossbind.config.js +14 -0
  12. package/dist/crossbind-example-lib-prebuilt-matrix-wasi-wasm32-st-release.wasm +0 -0
  13. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-mt-release.browser.js +1363 -0
  14. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-mt-release.browser.wasm +0 -0
  15. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-mt-release.node.js +508 -0
  16. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-mt-release.node.wasm +0 -0
  17. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.browser.js +1363 -0
  18. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.browser.wasm +0 -0
  19. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.js +478 -0
  20. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.wasm +0 -0
  21. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.node.js +508 -0
  22. package/dist/crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.node.wasm +0 -0
  23. package/dist/prebuilt/CMakeLists.txt +57 -0
  24. package/dist/prebuilt/android-arm64-v8a-mt-release/crossbind-emccflags.fingerprint +1 -0
  25. package/dist/prebuilt/android-arm64-v8a-mt-release/include/Matrix.h +12 -0
  26. package/dist/prebuilt/android-arm64-v8a-mt-release/lib/libcrossbind-example-lib-prebuilt-matrix.so +0 -0
  27. package/dist/prebuilt/android-x86_64-mt-release/crossbind-emccflags.fingerprint +1 -0
  28. package/dist/prebuilt/android-x86_64-mt-release/include/Matrix.h +12 -0
  29. package/dist/prebuilt/android-x86_64-mt-release/lib/libcrossbind-example-lib-prebuilt-matrix.so +0 -0
  30. package/dist/prebuilt/ios-iphoneos-mt-release/crossbind-emccflags.fingerprint +1 -0
  31. package/dist/prebuilt/ios-iphoneos-mt-release/include/Matrix.h +12 -0
  32. package/dist/prebuilt/ios-iphoneos-mt-release/lib/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  33. package/dist/prebuilt/ios-iphonesimulator-mt-release/crossbind-emccflags.fingerprint +1 -0
  34. package/dist/prebuilt/ios-iphonesimulator-mt-release/include/Matrix.h +12 -0
  35. package/dist/prebuilt/ios-iphonesimulator-mt-release/lib/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  36. package/dist/prebuilt/wasi-wasm32-st-release/crossbind-emccflags.fingerprint +1 -0
  37. package/dist/prebuilt/wasi-wasm32-st-release/include/Matrix.h +12 -0
  38. package/dist/prebuilt/wasi-wasm32-st-release/lib/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  39. package/dist/prebuilt/wasm-wasm32-mt-release/crossbind-emccflags.fingerprint +1 -0
  40. package/dist/prebuilt/wasm-wasm32-mt-release/include/Matrix.h +12 -0
  41. package/dist/prebuilt/wasm-wasm32-mt-release/lib/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  42. package/dist/prebuilt/wasm-wasm32-st-release/crossbind-emccflags.fingerprint +1 -0
  43. package/dist/prebuilt/wasm-wasm32-st-release/include/Matrix.h +12 -0
  44. package/dist/prebuilt/wasm-wasm32-st-release/lib/libcrossbind-example-lib-prebuilt-matrix.a +0 -0
  45. package/dist/types/index.d.ts +9 -0
  46. package/package.json +38 -0
  47. package/playground/Matrix.js +19 -0
  48. package/playground/index.html +74 -0
  49. package/src/native/Matrix.cpp +17 -0
  50. package/src/native/Matrix.h +12 -0
@@ -0,0 +1,478 @@
1
+ (function (global, factory) {
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3
+ typeof define === 'function' && define.amd ? define(factory) :
4
+ (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.initNative = factory());
5
+ })(this, (function () { 'use strict';
6
+
7
+ function getDefaultExportFromCjs (x) {
8
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
9
+ }
10
+
11
+ var crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge = {exports: {}};
12
+
13
+ var hasRequiredCrossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge;
14
+
15
+ function requireCrossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge () {
16
+ if (hasRequiredCrossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge) return crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge.exports;
17
+ hasRequiredCrossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge = 1;
18
+ (function (module, exports) {
19
+ var Module2=(()=>{var _scriptName=globalThis.document?.currentScript?.src;return async function(moduleArg={}){var Module=moduleArg;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var readAsync;{try{scriptDirectory=new URL(".",_scriptName).href;}catch{}{readAsync=async url=>{var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)};}}console.log.bind(console);var err=console.error.bind(console);var wasmBinary;var ABORT=false;var runtimeInitialized=false;function getMemoryBuffer(){return wasmMemory.buffer}function updateMemoryViews(){if(HEAP8?.buffer?.resizable)return;var b=getMemoryBuffer();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(){var preRun=Module["preRun"];if(preRun){if(typeof preRun=="function")preRun=[preRun];onPreRuns.push(...preRun);}callRuntimeCallbacks(onPreRuns);}function initRuntime(){runtimeInitialized=true;wasmExports["x"]();}function postRun(){var postRun=Module["postRun"];if(postRun){if(typeof postRun=="function")postRun=[postRun];onPostRuns.push(...postRun);}callRuntimeCallbacks(onPostRuns);}function abort(what){Module["onAbort"]?.(what);what=`Aborted(${what})`;err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";if(runtimeInitialized){___trap();}var e=new WebAssembly.RuntimeError(what);throw e}var wasmBinaryFile;function findWasmBinary(){return locateFile("crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.wasm")}function getBinarySync(file){throw "both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){{try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync()}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){{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){wasmExports=instance.exports;assignWasmExports(wasmExports);updateMemoryViews();return wasmExports}function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();var instantiateWasm=Module["instantiateWasm"];if(instantiateWasm){return new Promise(resolve=>{instantiateWasm(info,inst=>resolve(receiveInstance(inst)));})}wasmBinaryFile??=findWasmBinary();var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}var HEAP16;var HEAP32;var HEAP64;var HEAP8;var HEAPF32;var HEAPF64;var HEAPU16;var HEAPU32;var HEAPU64;var HEAPU8;var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module);}};var onPostRuns=[];var onPreRuns=[];var __abort_js=()=>abort("");var AsciiToString=ptr=>{var str="";while(1){var ch=HEAPU8[ptr++];if(!ch)return str;str+=String.fromCharCode(ch);}};var awaitingDependencies={};var registeredTypes={};var typeDependencies={};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>>1]:pointer=>HEAPU16[pointer>>1];case 4:return signed?pointer=>HEAP32[pointer>>2]:pointer=>HEAPU32[pointer>>2];case 8:return signed?pointer=>HEAP64[pointer>>3]:pointer=>HEAPU64[pointer>>3];default:throw new TypeError(`invalid integer width (${width}): ${name}`)}};var __embind_register_bigint=(primitiveType,name,size,minRange,maxRange)=>{name=AsciiToString(name);const isUnsignedType=minRange===0n;let fromWireType=value=>value;if(isUnsignedType){const bitSize=size*8;fromWireType=value=>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});};var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{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 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 attachFinalizer=handle=>{if(!globalThis.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=()=>{let proto=ClassHandle.prototype;Object.assign(proto,{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");}this.$$.deleteScheduled=true;return this}});const symbolDispose=Symbol.dispose;if(symbolDispose){proto[symbolDispose]=proto["delete"];}};function ClassHandle(){}var createNamedFunction=(name,func)=>Object.defineProperty(func,"name",{value:name});var registeredPointers={};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 getSignature=(args,keys)=>{var signature="";keys.some(key=>{if(key.length!==args.length){return false}var isKeyMatched=key.every((field,i)=>field==="emscripten::val"||typeof args[i]==="bigint"&&field==="number"||typeof args[i]==="object"&&undefined!==registeredTypes[field]&&args[i]instanceof registeredTypes[field].registeredClass.constructor||typeof args[i]===field);if(isKeyMatched){signature=key.join(", ");return true}return false});return signature};var ensureOverloadSignatureTable=(proto,methodName,humanName,numArguments)=>{ensureOverloadTable(proto,methodName,humanName);if(undefined!==proto[methodName].overloadTable&&undefined!==proto[methodName].overloadTable[numArguments]&&undefined===proto[methodName].overloadTable[numArguments].signatures){var prevFunc=proto[methodName].overloadTable[numArguments];proto[methodName].overloadTable[numArguments]=function(...args){var keys=proto[methodName].overloadTable[args.length].signaturesArray;var signature=getSignature(args,keys);if(!proto[methodName].overloadTable[args.length].signatures.hasOwnProperty(signature)){var signatures=proto[methodName].overloadTable[args.length].signaturesArray.map(sig=>"("+sig.map(s=>typeof s==="string"?s:registeredTypes[s].name)+")");var params=args.map(arg=>typeof arg==="object"&&arg.constructor&&arg.constructor.name?arg.constructor.name:typeof arg);throwBindingError(`Function '${humanName}' called with an invalid signature (${params}) - expects one of (${signatures})!`);}return proto[methodName].overloadTable[args.length].signatures[signature].apply(this,args)};proto[methodName].overloadTable[numArguments].signatures={};proto[methodName].overloadTable[numArguments].signatures[prevFunc.signature]=prevFunc;proto[methodName].overloadTable[numArguments].signaturesArray=[];}};var exposePublicSymbol=(name,value,numArguments,rawSignature)=>{if(Module.hasOwnProperty(name)){{throwBindingError(`Cannot register public name '${name}' twice`);}if(undefined===Module[name].overloadTable&&Module[name].argCount===numArguments||undefined!==Module[name].overloadTable&&undefined!==Module[name].overloadTable[numArguments]){ensureOverloadSignatureTable(Module,name,name,numArguments);Module[name].overloadTable[numArguments].signatures[rawSignature]=value;}else {ensureOverloadTable(Module,name,name);Module[name].overloadTable[numArguments]=value;Module[name].overloadTable[numArguments].signature=rawSignature;}}else {Module[name]=value;}};var char_0=48;var char_9=57;var makeLegalFunctionName=name=>{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};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}};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("Unsupported 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 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 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 InternalError=class InternalError extends Error{constructor(message){super(message);this.name="InternalError";}};var throwInternalError=message=>{throw new InternalError(message)};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})}}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 init_RegisteredPointer=()=>{Object.assign(RegisteredPointer.prototype,{getPointee(ptr){if(this.rawGetPointee){ptr=this.rawGetPointee(ptr);}return ptr},destructor(ptr){this.rawDestructor?.(ptr);},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&&registeredClass.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,signatureArray,rawSignature)=>{if(!Module.hasOwnProperty(name)){throwInternalError("Replacing nonexistent public symbol");}var signatureString=undefined;if(undefined!==Module[name].overloadTable&&undefined!==numArguments);else {Module[name]=value;Module[name].argCount=numArguments;Module[name].signature=signatureString;}};var wasmTableMirror=[];var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr);}return func};var embind__requireFunction=(signature,rawFunction,isAsync=false)=>{signature=AsciiToString(signature);function makeDynCaller(){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 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 __embind_register_class=(rawType,rawPointerType,rawConstPointerType,baseClassRawType,getActualTypeSignature,getActualType,upcastSignature,upcast,downcastSignature,downcast,name,destructorSignature,rawDestructor)=>{name=AsciiToString(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=undefined;if(undefined!==registeredClass.constructor_body[args.length]){if(undefined!==registeredClass.constructor_body[args.length].func){body=registeredClass.constructor_body[args.length].func;}else {var keys=registeredClass.constructor_body[args.length].signaturesArray;var signature=getSignature(args,keys);body=registeredClass.constructor_body[args.length].signatures[signature];}}if(undefined===body){if(undefined===registeredClass.constructor_body[args.length]){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!`)}else {var signatures=registeredClass.constructor_body[args.length].signaturesArray.map(sig=>"("+sig.map(s=>typeof s==="string"?s:registeredTypes[s].name)+")");var params=args.map(arg=>typeof arg==="object"&&arg.constructor&&arg.constructor.name?arg.constructor.name:typeof arg);throw new BindingError(`Tried to invoke ctor of ${name} with invalid signature (${params}) - expected [${signatures}] 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<count;i++){array.push(HEAPU32[firstElement+i*4>>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<argTypes.length;++i){if(argTypes[i]!==null&&argTypes[i].destructorFunction===undefined){return true}}return false}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 expectedArgCount=argCount-2;var argsWired=new Array(expectedArgCount);var invokerFuncArgs=[];var destructors=[];var invokerFn=function(...args){destructors.length=0;var thisWired;invokerFuncArgs.length=isClassMethodFunc?2:1;invokerFuncArgs[0]=cppTargetFunc;if(isClassMethodFunc){thisWired=argTypes[1].toWireType(destructors,this);invokerFuncArgs[1]=thisWired;}for(var i=0;i<expectedArgCount;++i){argsWired[i]=argTypes[i+2].toWireType(destructors,args[i]);invokerFuncArgs.push(argsWired[i]);}var rv=cppInvokerFunc(...invokerFuncArgs);function onDone(rv){if(needsDestructorStack){runDestructors(destructors);}else {for(var i=isClassMethodFunc?1:2;i<argTypes.length;i++){var param=i===1?thisWired:argsWired[i-2];if(argTypes[i].destructorFunction!==null){argTypes[i].destructorFunction(param);}}}if(returns){return argTypes[0].fromWireType(rv)}}return onDone(rv)};return createNamedFunction(humanName,invokerFn)}var cppTypeToJsType=typeId=>{var type=registeredTypes[typeId];if(type.name==="std::string"||type.name==="std::wstring")return "string";else if(type.name==="bool")return "boolean";else if(["char","signed char","unsigned char","short","unsigned short","int","unsigned int","long","unsigned long","float","double","int64_t","uint64_t"].includes(type.name))return "number";return typeId};var __embind_register_class_constructor=(rawClassType,argCount,rawArgTypesAddr,invokerSignature,invoker,rawConstructor)=>{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=[];}var rawSignatureArray=rawArgTypes.slice(1);var rawSignatureString=rawSignatureArray.join(", ");if(undefined!==classType.registeredClass.constructor_body[argCount-1]&&undefined!==classType.registeredClass.constructor_body[argCount-1].signatures[rawSignatureString]){throw new BindingError(`Cannot register multiple constructors with identical javascript types of parameters for class '${classType.name}'!`)}function unboundTypesHandler(){throwUnboundTypeError(`Cannot construct ${classType.name} due to unbound types`,rawArgTypes);}if(undefined===classType.registeredClass.constructor_body[argCount-1]){classType.registeredClass.constructor_body[argCount-1]={func:unboundTypesHandler,signatures:{},signaturesArray:[]};}else {delete classType.registeredClass.constructor_body[argCount-1].func;}classType.registeredClass.constructor_body[argCount-1].signatures[rawSignatureString]=unboundTypesHandler;whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{argTypes.splice(1,0,null);delete classType.registeredClass.constructor_body[argCount-1].signatures[rawSignatureString];var func=craftInvokerFunction(humanName,argTypes,null,invoker,rawConstructor);var signatureArray=rawSignatureArray.map(a=>cppTypeToJsType(a));var signatureString=signatureArray.join(", ");if(undefined!==classType.registeredClass.constructor_body[argCount-1].func){classType.registeredClass.constructor_body[argCount-1].func=func;}classType.registeredClass.constructor_body[argCount-1].signatures[signatureString]=func;classType.registeredClass.constructor_body[argCount-1].signaturesArray.push(signatureArray);return []});return []});};var getFunctionName=signature=>{signature=signature.trim();const argsIndex=signature.indexOf("(");if(argsIndex===-1)return signature;return signature.slice(0,argsIndex)};var __embind_register_class_function=(rawClassType,methodName,argCount,rawArgTypesAddr,invokerSignature,rawInvoker,context,isPureVirtual,isAsync,isNonnullReturn)=>{var rawArgTypes=heap32VectorToArray(argCount,rawArgTypesAddr);methodName=AsciiToString(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker,isAsync);whenDependentTypesAreResolved([],[rawClassType],classType=>{classType=classType[0];var humanName=`${classType.name}.${methodName}`;if(methodName.startsWith("@@")){methodName=Symbol[methodName.substring(2)];}if(isPureVirtual){classType.registeredClass.pureVirtualFunctions.push(methodName);}function unboundTypesHandler(){throwUnboundTypeError(`Cannot call ${humanName} due to unbound types`,rawArgTypes);}var proto=classType.registeredClass.instancePrototype;var method=proto[methodName];var rawSignatureArray=rawArgTypes.slice(2);var rawSignatureString=rawSignatureArray.join(", ");if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.signature===rawSignatureString){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.signature=rawSignatureString;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler;}else if(undefined===proto[methodName].overloadTable&&proto[methodName].argCount!==argCount-2||undefined!==proto[methodName].overloadTable&&undefined===proto[methodName].overloadTable[argCount-2]){ensureOverloadTable(proto,methodName,humanName);unboundTypesHandler.signature=rawSignatureString;proto[methodName].overloadTable[argCount-2]=unboundTypesHandler;}else {ensureOverloadSignatureTable(proto,methodName,humanName,argCount-2);proto[methodName].overloadTable[argCount-2].signatures[rawSignatureString]=unboundTypesHandler;}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context);var signatureArray=rawSignatureArray.map(a=>cppTypeToJsType(a));var signatureString=signatureArray.join(", ");if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;memberFunction.signature=signatureString;proto[methodName]=memberFunction;}else if(undefined===proto[methodName].overloadTable[argCount-2].signatures){memberFunction.signature=signatureString;proto[methodName].overloadTable[argCount-2]=memberFunction;}else {delete proto[methodName].overloadTable[argCount-2].signatures[rawSignatureString];proto[methodName].overloadTable[argCount-2].signatures[signatureString]=memberFunction;proto[methodName].overloadTable[argCount-2].signaturesArray.push(signatureArray);}return []});return []});};var emval_freelist=[];var emval_handles=[0,1,,1,null,1,true,1,false,1];var emval_exception_decrefs=[];var __emval_decref=handle=>{if(handle>9&&0===--emval_handles[handle+1]){var value=emval_handles[handle];emval_handles[handle]=undefined;var destructor=emval_exception_decrefs[handle];if(destructor){emval_exception_decrefs[handle]=undefined;destructor(value);}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};var __embind_register_emval=rawType=>registerType(rawType,EmValType);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=AsciiToString(name);registerType(rawType,{name,fromWireType:value=>value,toWireType:(destructors,value)=>value,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null});};var __embind_register_integer=(primitiveType,name,size,minRange,maxRange)=>{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});};var installIndexedIterator=(proto,sizeMethodName,getMethodName)=>{const makeIterator=(size,getValue)=>{let index=0;return {next(){if(index>=size){return {done:true}}const current=index;index++;const value=getValue(current);return {value,done:false}},[Symbol.iterator](){return this}}};if(!proto[Symbol.iterator]){proto[Symbol.iterator]=function(){const size=this[sizeMethodName]();return makeIterator(size,i=>this[getMethodName](i))};}};var __embind_register_iterable=(rawClassType,rawElementType,sizeMethodName,getMethodName)=>{sizeMethodName=AsciiToString(sizeMethodName);getMethodName=AsciiToString(getMethodName);whenDependentTypesAreResolved([],[rawClassType,rawElementType],types=>{const classType=types[0];installIndexedIterator(classType.registeredClass.instancePrototype,sizeMethodName,getMethodName);return []});};var __embind_register_memory_view=(rawType,dataTypeIndex,name)=>{var typeMapping=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array];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=AsciiToString(name);registerType(rawType,{name,fromWireType:decodeMemoryView,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true});};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType);};var __embind_register_smart_ptr=(rawType,rawPointeeType,name,sharingPolicy,getPointeeSignature,rawGetPointee,constructorSignature,rawConstructor,shareSignature,rawShare,destructorSignature,rawDestructor)=>{name=AsciiToString(name);rawGetPointee=embind__requireFunction(getPointeeSignature,rawGetPointee);rawConstructor=embind__requireFunction(constructorSignature,rawConstructor);rawShare=embind__requireFunction(shareSignature,rawShare);rawDestructor=embind__requireFunction(destructorSignature,rawDestructor);whenDependentTypesAreResolved([rawType],[rawPointeeType],pointeeType=>{pointeeType=pointeeType[0];var registeredPointer=new RegisteredPointer(name,pointeeType.registeredClass,false,false,true,pointeeType,sharingPolicy,rawGetPointee,rawConstructor,rawShare,rawDestructor);return [registeredPointer]});};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=globalThis.TextDecoder&&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 UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead,ignoreNul)=>{var endPtr=findStringEnd(heapOrArray,idx,maxBytesToRead,ignoreNul);if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx<endPtr){var u0=heapOrArray[idx++];if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heapOrArray[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heapOrArray[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2;}else {u0=(u0&7)<<18|u1<<12|u2<<6|heapOrArray[idx++]&63;}if(u0<65536){str+=String.fromCharCode(u0);}else {var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023);}}return str};var UTF8ToString=(ptr,maxBytesToRead,ignoreNul)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead,ignoreNul):"";var __embind_register_std_string=(rawType,name)=>{name=AsciiToString(name);registerType(rawType,{name,fromWireType(value){var length=HEAPU32[value>>2];var payload=value+4;var str;{str=UTF8ToString(payload,length,true);}_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(valueIsOfTypeString){length=lengthBytesUTF8(value);}else {length=value.length;}var base=_malloc(4+length+1);var ptr=base+4;HEAPU32[base>>2]=length;if(valueIsOfTypeString){{stringToUTF8(value,ptr,length+1);}}else {HEAPU8.set(value,ptr);}if(destructors!==null){destructors.push(_free,base);}return base},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr);}});};var UTF16Decoder=globalThis.TextDecoder?new TextDecoder("utf-16le"):undefined;var UTF16ToString=(ptr,maxBytesToRead,ignoreNul)=>{var idx=ptr>>1;var endIdx=findStringEnd(HEAPU16,idx,maxBytesToRead/2,ignoreNul);if(endIdx-idx>16&&UTF16Decoder)return UTF16Decoder.decode(HEAPU16.subarray(idx,endIdx));var str="";for(var i=idx;i<endIdx;++i){var codeUnit=HEAPU16[i];str+=String.fromCharCode(codeUnit);}return str};var stringToUTF16=(str,outPtr,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>>1]=codeUnit;outPtr+=2;}HEAP16[outPtr>>1]=0;return outPtr-startPtr};var lengthBytesUTF16=str=>str.length*2;var UTF32ToString=(ptr,maxBytesToRead,ignoreNul)=>{var str="";var startIdx=ptr>>2;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=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>>2]=codePoint;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<str.length;++i){var codePoint=str.codePointAt(i);if(codePoint>65535){i++;}len+=4;}return len};var __embind_register_std_wstring=(rawType,charSize,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=HEAPU32[value>>2];var str=decodeString(value+4,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(4+length+charSize);HEAPU32[ptr>>2]=length/charSize;encodeString(value,ptr+4,length+charSize);if(destructors!==null){destructors.push(_free,ptr);}return ptr},readValueFromPointer:readPointer,destructorFunction(ptr){_free(ptr);}});};var __embind_register_void=(rawType,name)=>{name=AsciiToString(name);registerType(rawType,{isVoid:true,name,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined});};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(HEAPU32[argTypes+i*4>>2],`parameter ${i}`);}return a};var emval_returnValue=(toReturnWire,destructorsRef,handle)=>{var destructors=[];var result=toReturnWire(destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=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=(argCount,argTypesPtr,kind)=>{var GenericWireTypeSize=8;var[retType,...argTypes]=emval_lookupTypes(argCount,argTypesPtr);var toReturnWire=retType.toWireType.bind(retType);var argFromPtr=argTypes.map(type=>type.readValueFromPointer.bind(type));argCount--;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: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))};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1;}};var __emval_invoke=(caller,handle,methodName,destructorsRef,args)=>emval_methodCallers[caller](handle,methodName,destructorsRef,args);var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle);};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(pages);updateMemoryViews();return 1}catch(e){}};var _emscripten_resize_heap=requestedSize=>{var oldSize=HEAPU8.length;requestedSize>>>=0;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 ENV={};var getCppExceptionTag=()=>___cpp_exception;var getCppExceptionThrownObjectFromWebAssemblyException=ex=>{var unwind_header=ex.getArg(getCppExceptionTag(),0);return ___thrown_object_from_unwind_exception(unwind_header)};var stackSave=()=>_emscripten_stack_get_current();var stackRestore=val=>__emscripten_stack_restore(val);var stackAlloc=sz=>__emscripten_stack_alloc(sz);var getExceptionMessageCommon=ptr=>{var sp=stackSave();var type_addr_addr=stackAlloc(4);var message_addr_addr=stackAlloc(4);___get_exception_message(ptr,type_addr_addr,message_addr_addr);var type_addr=HEAPU32[type_addr_addr>>2];var message_addr=HEAPU32[message_addr_addr>>2];var type=UTF8ToString(type_addr);_free(type_addr);var message;if(message_addr){message=UTF8ToString(message_addr);_free(message_addr);}stackRestore(sp);return [type,message]};var getExceptionMessage=ex=>{var ptr=getCppExceptionThrownObjectFromWebAssemblyException(ex);return getExceptionMessageCommon(ptr)};init_ClassHandle();init_RegisteredPointer();{if(Module["noExitRuntime"])Module["noExitRuntime"];if(Module["print"])Module["print"];if(Module["printErr"])err=Module["printErr"];if(Module["arguments"])Module["arguments"];if(Module["thisProgram"])Module["thisProgram"];var preInit=Module["preInit"];if(preInit){if(typeof preInit=="function")Module["preInit"]=preInit=[preInit];while(preInit.length>0){preInit.shift()();}}}Module["ENV"]=ENV;Module["getExceptionMessage"]=getExceptionMessage;var ___getTypeName,_malloc,_free,___trap,__emscripten_stack_restore,__emscripten_stack_alloc,_emscripten_stack_get_current,___thrown_object_from_unwind_exception,___get_exception_message,___cpp_exception,wasmMemory,wasmTable;function assignWasmExports(wasmExports){___getTypeName=wasmExports["y"];_malloc=wasmExports["A"];_free=wasmExports["C"];___trap=wasmExports["D"];__emscripten_stack_restore=wasmExports["E"];__emscripten_stack_alloc=wasmExports["F"];_emscripten_stack_get_current=wasmExports["G"];___thrown_object_from_unwind_exception=wasmExports["H"];___get_exception_message=wasmExports["I"];wasmMemory=wasmExports["w"];wasmTable=wasmExports["z"];___cpp_exception=wasmExports["B"];}var wasmImports={p:__abort_js,n:__embind_register_bigint,u:__embind_register_bool,d:__embind_register_class,c:__embind_register_class_constructor,a:__embind_register_class_function,s:__embind_register_emval,m:__embind_register_float,j:__embind_register_integer,i:__embind_register_iterable,b:__embind_register_memory_view,e:__embind_register_optional,r:__embind_register_smart_ptr,t:__embind_register_std_string,l:__embind_register_std_wstring,v:__embind_register_void,h:__emval_create_invoker,k:__emval_decref,o:__emval_incref,g:__emval_invoke,f:__emval_run_destructors,q:_emscripten_resize_heap};async function run(){preRun();var setStatus=Module["setStatus"];if(setStatus){setStatus("Running...");await new Promise(resolve=>setTimeout(resolve,1));setTimeout(setStatus,1,"");}if(ABORT)return;initRuntime();Module["onRuntimeInitialized"]?.();postRun();}var wasmExports;wasmExports=await createWasm();await run();
20
+ return Module}})();{module.exports=Module2;module.exports.default=Module2;}
21
+ } (crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge));
22
+ return crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge.exports;
23
+ }
24
+
25
+ var crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edgeExports = requireCrossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edge();
26
+ var Module = /*@__PURE__*/getDefaultExportFromCjs(crossbindExampleLibPrebuiltMatrixWasmWasm32StRelease_edgeExports);
27
+
28
+ var systemConfig = {
29
+ env: {},
30
+ useWorker: !!globalThis.Worker,
31
+ general: {
32
+ name: 'crossbind-example-lib-prebuilt-matrix',
33
+ },
34
+ fs: {
35
+ opfs: false,
36
+ },
37
+ paths: {
38
+ wasm: 'crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.wasm',
39
+ data: 'crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.data.txt',
40
+ worker: 'crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.js',
41
+ js: 'crossbind-example-lib-prebuilt-matrix-wasm-wasm32-st-release.edge.js',
42
+ }
43
+ };
44
+
45
+ // === wasm-EH exception decoding (shared by the worker and direct runtimes) ===
46
+ // Builds link with -fwasm-exceptions, so an uncaught C++ exception reaches JS as a raw
47
+ // WebAssembly.Exception with no .message. The glue exports getExceptionMessage (via
48
+ // -sEXPORT_EXCEPTION_HANDLING_HELPERS), which decodes it back into [type, what()]. This
49
+ // adapter turns such values into real JS Errors at the binding boundary; anything else
50
+ // passes through untouched, so it is safe to apply on every call path.
51
+ let decodeModule = null;
52
+
53
+ function setExceptionDecodeModule(m) {
54
+ decodeModule = m;
55
+ }
56
+
57
+ function decodeCppException(value) {
58
+ const m = decodeModule;
59
+ if (m == null
60
+ || typeof m.getExceptionMessage !== 'function'
61
+ || typeof WebAssembly === 'undefined'
62
+ || typeof WebAssembly.Exception !== 'function'
63
+ || !(value instanceof WebAssembly.Exception)) {
64
+ return value;
65
+ }
66
+ try {
67
+ const [type, message] = m.getExceptionMessage(value);
68
+ const error = new Error(message ? `${type}: ${message}` : `${type}`);
69
+ error.cppType = type;
70
+ error.cppMessage = message;
71
+ return error;
72
+ } catch (decodeFailure) {
73
+ return value;
74
+ }
75
+ }
76
+
77
+ const STATIC_SKIP = new Set(['prototype', 'name', 'length', 'caller', 'arguments', 'argCount']);
78
+
79
+ function wrapOwnMethod(holder, name) {
80
+ const desc = Object.getOwnPropertyDescriptor(holder, name);
81
+ if (!desc || typeof desc.value !== 'function' || desc.writable === false) return;
82
+ const original = desc.value;
83
+ function decoded(...args) {
84
+ let result;
85
+ try {
86
+ result = original.apply(this, args);
87
+ } catch (e) {
88
+ throw decodeCppException(e);
89
+ }
90
+ if (result && typeof result.then === 'function') {
91
+ // Async (JSPI-style) binding: decode the rejection reason as well.
92
+ return result.then(undefined, (e) => { throw decodeCppException(e); });
93
+ }
94
+ return result;
95
+ }
96
+ // Overload dispatch reads properties (e.g. overloadTable) off the exposed function.
97
+ Object.assign(decoded, original);
98
+ Object.defineProperty(holder, name, { ...desc, value: decoded });
99
+ }
100
+
101
+ // Direct (non-worker) mode exposes embind class instances raw, so a thrown C++ exception in
102
+ // an instance or static method never crosses a wrapper. Patching each bound class's
103
+ // prototype and statics once at module-ready keeps object identity intact (embind checks
104
+ // prototypes, not method identity) while every call site gains the decode.
105
+ function patchModuleForExceptionDecode(m) {
106
+ setExceptionDecodeModule(m);
107
+ if (m == null || typeof m !== 'object') return m;
108
+ for (const key of Object.keys(m)) {
109
+ const Cls = m[key];
110
+ if (typeof Cls !== 'function') continue;
111
+ if (Cls.prototype) {
112
+ // Static-only classes are common (pure class_function surfaces), so statics are
113
+ // wrapped below regardless of whether the prototype carries any method.
114
+ Object.getOwnPropertyNames(Cls.prototype)
115
+ .filter((n) => n !== 'constructor')
116
+ .forEach((n) => wrapOwnMethod(Cls.prototype, n));
117
+ }
118
+ Object.getOwnPropertyNames(Cls)
119
+ .filter((n) => !STATIC_SKIP.has(n))
120
+ .forEach((n) => wrapOwnMethod(Cls, n));
121
+ }
122
+ return m;
123
+ }
124
+
125
+ // === Plain array -> embind vector coercion (shared by the worker and direct runtimes) ===
126
+ // Vectors RETURNED across the worker boundary arrive as plain arrays, so callers naturally
127
+ // try to pass plain arrays back as vector PARAMETERS - which embind rejects with
128
+ // 'Cannot pass "..." as a VectorX'. Coercion catches that error, converts the first
129
+ // remaining plain-array argument with Module.toVector, and retries, so mixed signatures
130
+ // (VectorDataset + VectorString, ...) resolve left to right, matching embind's argument
131
+ // order. embind passes std::vector parameters by value, so the temporaries are deleted
132
+ // after the call instead of leaking wasm memory.
133
+ //
134
+ // This is a REACTIVE strategy: embind does not expose parameter types to JS, so we can
135
+ // only learn that an argument should have been a vector from the failed call. See
136
+ // EXPECTED_VECTOR_RE below - the coercion silently disengages (rethrows) if embind ever
137
+ // changes that message, which the canary test in vectorCoercion.test.js guards against.
138
+
139
+ let coercionModule = null;
140
+
141
+ // Matches embind's "Cannot pass <value> as a VectorX" BindingError message.
142
+ const EXPECTED_VECTOR_RE = /as a (Vector\w+)\b/;
143
+
144
+ function setCoercionModule(m) {
145
+ coercionModule = m;
146
+ }
147
+
148
+ // Proxies created by the coercion wrappers, mapped back to their raw targets. embind
149
+ // rejects a proxied `this` or argument (its class checks compare $$.ptrType.registeredClass
150
+ // by identity), so every invocation unwraps them back to the raw objects first.
151
+ const coercionProxies = new WeakMap();
152
+
153
+ function unwrapCoercionProxy(value) {
154
+ const raw = coercionProxies.get(value);
155
+ return raw === undefined ? value : raw;
156
+ }
157
+
158
+ // The retry-on-vector-error loop shared by call and construct. `invoke(args)` performs the
159
+ // actual apply/construct; on a 'Cannot pass ... as a VectorX' error that names a registered
160
+ // Vector class while a plain-array argument remains, the first remaining array is converted
161
+ // with Module.toVector and the invocation retried. Each retry converts exactly one array, so
162
+ // the array count strictly decreases and the loop always terminates.
163
+ function retryWithCoercion(invoke, args) {
164
+ const temp = [];
165
+ const cleanup = () => {
166
+ for (const v of temp) {
167
+ try {
168
+ v.delete();
169
+ } catch (e) { /* already deleted by the callee */ }
170
+ }
171
+ };
172
+ const current = args.slice();
173
+ for (;;) {
174
+ let result;
175
+ try {
176
+ result = invoke(current);
177
+ } catch (rawError) {
178
+ const e = decodeCppException(rawError);
179
+ const match = EXPECTED_VECTOR_RE.exec(String((e && e.message) || e));
180
+ const VectorClass = match && coercionModule ? coercionModule[match[1]] : undefined;
181
+ const index = current.findIndex((a) => Array.isArray(a));
182
+ if (typeof VectorClass !== 'function' || index < 0) {
183
+ cleanup();
184
+ throw e;
185
+ }
186
+ let vector;
187
+ try {
188
+ vector = coercionModule.toVector(VectorClass, current[index]);
189
+ } catch (convError) {
190
+ cleanup();
191
+ throw e;
192
+ }
193
+ temp.push(vector);
194
+ current[index] = vector;
195
+ continue;
196
+ }
197
+ if (temp.length && result && typeof result.then === 'function') {
198
+ // Async (JSPI-style) binding: arguments were already converted synchronously,
199
+ // but hold the temporaries until it settles.
200
+ return result.then(
201
+ (value) => {
202
+ cleanup();
203
+ return value;
204
+ },
205
+ (err) => {
206
+ cleanup();
207
+ throw decodeCppException(err);
208
+ },
209
+ );
210
+ }
211
+ cleanup();
212
+ return result;
213
+ }
214
+ }
215
+
216
+ function callWithVectorCoercion(fn, thisArg, args) {
217
+ return retryWithCoercion((current) => Reflect.apply(fn, thisArg, current), args);
218
+ }
219
+
220
+ function constructWithVectorCoercion(Class, args, newTarget) {
221
+ return retryWithCoercion((current) => Reflect.construct(Class, current, newTarget || Class), args);
222
+ }
223
+
224
+ // Narrow wrapper (DIRECT / non-worker mode): only the module's own function calls and
225
+ // constructions are coerced. Data members (HEAP*, FS, typed arrays) and returned objects
226
+ // stay raw, because direct-mode code accesses those by index and by identity - a blanket
227
+ // proxy (like the worker wrapper above) would break them. Returned embind objects are
228
+ // already real vectors/objects in direct mode (they are not flattened to plain arrays the
229
+ // way the worker boundary does), so module-level coercion covers the plain-array-literal
230
+ // case without changing any object's identity.
231
+ function wrapModuleForCoercion(m) {
232
+ if (m == null || (typeof m !== 'object' && typeof m !== 'function')) {
233
+ return m;
234
+ }
235
+ const wrappedFns = new Map();
236
+ const moduleProxy = new Proxy(m, {
237
+ get(target, prop) {
238
+ const member = Reflect.get(target, prop);
239
+ if (typeof member !== 'function') {
240
+ return member; // HEAP*, FS, typed arrays and other data pass through raw
241
+ }
242
+ let wrapped = wrappedFns.get(prop);
243
+ if (!wrapped) {
244
+ wrapped = new Proxy(member, {
245
+ apply(fn, thisArg, args) {
246
+ return callWithVectorCoercion(
247
+ fn,
248
+ unwrapCoercionProxy(thisArg),
249
+ args.map(unwrapCoercionProxy),
250
+ );
251
+ },
252
+ construct(Class, args) {
253
+ return constructWithVectorCoercion(Class, args.map(unwrapCoercionProxy));
254
+ },
255
+ });
256
+ wrappedFns.set(prop, wrapped);
257
+ }
258
+ return wrapped;
259
+ },
260
+ });
261
+ coercionProxies.set(moduleProxy, m);
262
+ return moduleProxy;
263
+ }
264
+
265
+ function isObject(item) {
266
+ return (item && typeof item === 'object' && !Array.isArray(item));
267
+ }
268
+
269
+ function mergeDeep(target, ...sources) {
270
+ if (!sources.length) return target;
271
+ const source = sources.shift();
272
+
273
+ if (isObject(target) && isObject(source)) {
274
+ for (const key in source) {
275
+ if (isObject(source[key])) {
276
+ if (!target[key]) Object.assign(target, { [key]: {} });
277
+ mergeDeep(target[key], source[key]);
278
+ } else {
279
+ Object.assign(target, { [key]: source[key] });
280
+ }
281
+ }
282
+ }
283
+
284
+ return mergeDeep(target, ...sources);
285
+ }
286
+
287
+ function composeAdapters(adapters) {
288
+ const composed = {};
289
+ const extendFns = [];
290
+ const readyFns = [];
291
+ for (const a of adapters) {
292
+ if (!a) continue;
293
+ if (a.getDefaultPathPrefix) composed.getDefaultPathPrefix = a.getDefaultPathPrefix;
294
+ if (a.getDataPath) composed.getDataPath = a.getDataPath;
295
+ if (a.finalizePath) composed.finalizePath = a.finalizePath;
296
+ if (a.extendModule) extendFns.push(a.extendModule);
297
+ if (a.onModuleReady) readyFns.push(a.onModuleReady);
298
+ }
299
+ if (extendFns.length) {
300
+ composed.extendModule = (m, config) => extendFns.forEach((fn) => fn(m, config));
301
+ }
302
+ if (readyFns.length) {
303
+ composed.onModuleReady = async (m, config) => {
304
+ for (const fn of readyFns) {
305
+ await fn(m, config);
306
+ }
307
+ };
308
+ }
309
+ return composed;
310
+ }
311
+
312
+ function buildLocateFile(config, adapter) {
313
+ return function locateFile(fileName) {
314
+ let path = fileName;
315
+ if (config.paths && config.paths.wasm && fileName.endsWith('.wasm')) {
316
+ path = config.paths.wasm;
317
+ } else if (config.paths && config.paths.data && (fileName.endsWith('.data.txt') || fileName.endsWith('.data'))) {
318
+ path = config.paths.data;
319
+ }
320
+
321
+ let prefix = '';
322
+ if (config.path) {
323
+ prefix = config.path;
324
+ if (prefix.slice(-1) !== '/') prefix += '/';
325
+ } else if (adapter.getDefaultPathPrefix) {
326
+ prefix = adapter.getDefaultPathPrefix();
327
+ }
328
+
329
+ let output = prefix + path;
330
+ if (output.endsWith('.data')) output += '.txt';
331
+ if (adapter.finalizePath) output = adapter.finalizePath(output);
332
+
333
+ return output;
334
+ };
335
+ }
336
+
337
+ function createBaseModule(Module, config, adapter) {
338
+ return new Promise((resolve, reject) => {
339
+ const locateFile = buildLocateFile(config, adapter);
340
+ const dataPath = adapter.getDataPath ? adapter.getDataPath() : '/crossbind';
341
+
342
+ const m = {
343
+ print(text) {
344
+ if (config.logHandler) {
345
+ config.logHandler(text, 'stdout');
346
+ } else {
347
+ console.debug(`wasm stdout: ${text}`);
348
+ }
349
+ },
350
+ printErr(text) {
351
+ if (config.errorHandler) {
352
+ config.errorHandler(text, 'stderr');
353
+ } else {
354
+ console.error(`wasm stderr: ${text}`);
355
+ }
356
+ },
357
+ locateFile,
358
+ preRun: [
359
+ ({ ENV }) => {
360
+ if (ENV && config && config.env) {
361
+ Object.entries(config.env).forEach(([key, value]) => {
362
+ ENV[key] = value?.replace('_CROSSBIND_DATA_PATH_', dataPath);
363
+ });
364
+ }
365
+ },
366
+ ],
367
+ unmount() {},
368
+ toArray(vector) {
369
+ if (Array.isArray(vector)) return vector;
370
+ const len = vector.size();
371
+ const output = new Array(len);
372
+ for (let i = 0; i < len; i += 1) {
373
+ output[i] = vector.get(i);
374
+ }
375
+ return output;
376
+ },
377
+ toVector(classOrName, array = []) {
378
+ const VectorClass = typeof classOrName === 'string' ? m[classOrName] : classOrName;
379
+ const vector = new VectorClass();
380
+ array.forEach((item) => {
381
+ vector.push_back(item);
382
+ });
383
+ return vector;
384
+ },
385
+ };
386
+
387
+ if (adapter.extendModule) adapter.extendModule(m, config);
388
+
389
+ if (config.getWasmFunction) {
390
+ m.instantiateWasm = function instantiateWasm(info, receive) {
391
+ const instance = new WebAssembly.Instance(config.getWasmFunction(), info);
392
+ receive(instance);
393
+ return instance.exports;
394
+ };
395
+ }
396
+
397
+ // onModuleReady may need to await async setup (e.g. the OPFS preflight in
398
+ // fs-browser), which emscripten's onRuntimeInitialized callback cannot, so
399
+ // both hooks run after the factory settles - adapter first, then the user's.
400
+ Module(m).then(async (mod) => {
401
+ if (adapter.onModuleReady) await adapter.onModuleReady(mod, config);
402
+ if (config.onRuntimeInitialized) config.onRuntimeInitialized(mod);
403
+ return mod;
404
+ }).then(resolve).catch(reject);
405
+ });
406
+ }
407
+
408
+ function createInitCrossbind({
409
+ Module, systemConfig, adapter, worker,
410
+ }) {
411
+ let crossbindPromise;
412
+
413
+ function createModule(config) {
414
+ return createBaseModule(Module, config, adapter);
415
+ }
416
+
417
+ if (worker && worker.isWorkerScope) {
418
+ worker.exposeWorker(systemConfig, createModule);
419
+ }
420
+
421
+ function initNative(userConfig = {}) {
422
+ if (crossbindPromise) return crossbindPromise;
423
+
424
+ const config = mergeDeep(systemConfig, userConfig);
425
+
426
+ if (worker && config.useWorker && !worker.isWorkerScope) {
427
+ crossbindPromise = worker.initWithWorker(config, userConfig);
428
+ } else {
429
+ // Direct (non-worker) mode: wrap the module so plain-array arguments coerce to
430
+ // embind vectors like they do in worker mode. Narrow wrapper — only the module's
431
+ // own calls, leaving HEAP*/FS/returned objects raw (see wrapModuleForCoercion).
432
+ crossbindPromise = createModule(config).then((m) => {
433
+ setCoercionModule(m);
434
+ // Instance/static methods stay raw in direct mode, so the decode has to
435
+ // land on the class prototypes themselves.
436
+ patchModuleForExceptionDecode(m);
437
+ return wrapModuleForCoercion(m);
438
+ });
439
+ }
440
+
441
+ return crossbindPromise;
442
+ }
443
+
444
+ initNative.terminate = function terminate() {
445
+ if (worker && worker.terminate) worker.terminate();
446
+ crossbindPromise = null;
447
+ };
448
+
449
+ if (typeof globalThis === 'object') {
450
+ globalThis.Crossbind = { initNative };
451
+ }
452
+
453
+ return initNative;
454
+ }
455
+
456
+ function pathFs({ defaultPathPrefix, dataPath }) {
457
+ return {
458
+ getDefaultPathPrefix: () => defaultPathPrefix,
459
+ getDataPath: () => dataPath,
460
+ };
461
+ }
462
+
463
+ const adapter = composeAdapters([
464
+ pathFs({
465
+ defaultPathPrefix: '',
466
+ dataPath: '/crossbind',
467
+ }),
468
+ ]);
469
+
470
+ var edge = createInitCrossbind({
471
+ Module,
472
+ systemConfig,
473
+ adapter,
474
+ });
475
+
476
+ return edge;
477
+
478
+ }));