From aa870bcaff779bbb49dcada9bf9f7ea69afd7e09 Mon Sep 17 00:00:00 2001 From: Exelo Date: Mon, 10 Nov 2025 14:39:41 +0100 Subject: [PATCH] refactor(libraries): implement initialization validation and standardize nullable fields --- .../src/asset-manager.library.ts | 3 ++- .../src/context/contexts/library.context.ts | 2 +- .../exceptions/not-initialized.exception.ts | 11 +++++++++ packages/common/src/exception/index.ts | 3 ++- .../common/src/library/libraries/library.ts | 5 ++++ .../manager/managers/base-library.manager.ts | 4 +-- .../src/application/nanoforge-application.ts | 6 +++-- .../common/library/manager/library.manager.ts | 8 ++++-- packages/core/src/core/core.ts | 9 +++++-- packages/ecs/.prettierignore | 1 - packages/ecs/public/libecs.d.ts | 23 ------------------ packages/ecs/public/libecs.js | 15 ------------ packages/ecs/public/libecs.wasm | Bin 207593 -> 0 bytes packages/ecs/src/ecs-library.ts | 9 ++++--- packages/ecs/src/index.ts | 2 +- packages/ecs/tsconfig.build.json | 1 - .../graphics-2d/src/graphics-2d.library.ts | 3 ++- packages/input/src/input.library.ts | 4 ++- packages/music/src/music.library.ts | 11 +++++---- packages/sound/src/sound.library.ts | 11 +++++---- packages/tsconfig.build.json | 2 -- 21 files changed, 62 insertions(+), 71 deletions(-) create mode 100644 packages/common/src/exception/exceptions/not-initialized.exception.ts delete mode 100644 packages/ecs/public/libecs.d.ts delete mode 100644 packages/ecs/public/libecs.js delete mode 100755 packages/ecs/public/libecs.wasm diff --git a/packages/asset-manager/src/asset-manager.library.ts b/packages/asset-manager/src/asset-manager.library.ts index 9ad0d93..92bf277 100644 --- a/packages/asset-manager/src/asset-manager.library.ts +++ b/packages/asset-manager/src/asset-manager.library.ts @@ -1,7 +1,7 @@ import { BaseAssetManagerLibrary, type InitContext, NfFile, NfNotFound } from "@nanoforge/common"; export class AssetManagerLibrary extends BaseAssetManagerLibrary { - private _assets: Map; + private _assets?: Map; get __name(): string { return "AssetManagerLibrary"; @@ -12,6 +12,7 @@ export class AssetManagerLibrary extends BaseAssetManagerLibrary { } public getAsset(path: string): NfFile { + if (!this._assets) this.throwNotInitializedError(); const res = this._assets.get(this._parsePath(path)); if (!res) throw new NfNotFound(path, "Asset"); return new NfFile(res); diff --git a/packages/common/src/context/contexts/library.context.ts b/packages/common/src/context/contexts/library.context.ts index 92ae7fb..711473f 100644 --- a/packages/common/src/context/contexts/library.context.ts +++ b/packages/common/src/context/contexts/library.context.ts @@ -5,7 +5,7 @@ export enum LibraryStatusEnum { } export class LibraryContext { - protected _status: LibraryStatusEnum; + protected _status: LibraryStatusEnum = LibraryStatusEnum.UNLOADED; get status() { return this._status; diff --git a/packages/common/src/exception/exceptions/not-initialized.exception.ts b/packages/common/src/exception/exceptions/not-initialized.exception.ts new file mode 100644 index 0000000..02e3368 --- /dev/null +++ b/packages/common/src/exception/exceptions/not-initialized.exception.ts @@ -0,0 +1,11 @@ +import { NfException } from "../abstracts/exception.abstract"; + +export class NfNotInitializedException extends NfException { + get code(): number { + return 404; + } + + constructor(item: string, type?: string) { + super(`${type ? `${type} - ` : ""}${item} not initialized.`); + } +} diff --git a/packages/common/src/exception/index.ts b/packages/common/src/exception/index.ts index 8f3ee8a..2fb36e4 100644 --- a/packages/common/src/exception/index.ts +++ b/packages/common/src/exception/index.ts @@ -1,2 +1,3 @@ -export { NfNotFound } from "./exceptions/not-found.exception"; export { NfFetchException } from "./exceptions/fetch.exception"; +export { NfNotFound } from "./exceptions/not-found.exception"; +export { NfNotInitializedException } from "./exceptions/not-initialized.exception"; diff --git a/packages/common/src/library/libraries/library.ts b/packages/common/src/library/libraries/library.ts index ca1fac7..ec84f4a 100644 --- a/packages/common/src/library/libraries/library.ts +++ b/packages/common/src/library/libraries/library.ts @@ -1,4 +1,5 @@ import { type ClearContext, type InitContext } from "../../context"; +import { NfNotInitializedException } from "../../exception"; import { RelationshipHandler } from "../relationship/relationship-handler"; import { DEFAULT_LIBRARY_OPTIONS } from "./consts/library-options-default.const"; import { type ILibrary, type ILibraryOptions } from "./library.type"; @@ -30,4 +31,8 @@ export abstract class Library implements ILibrary { // eslint-disable-next-line @typescript-eslint/no-unused-vars public async __clear(_context: ClearContext): Promise {} + + protected throwNotInitializedError(): never { + throw new NfNotInitializedException(this.__name, "Library"); + } } diff --git a/packages/common/src/library/manager/managers/base-library.manager.ts b/packages/common/src/library/manager/managers/base-library.manager.ts index 418e607..1934ca4 100644 --- a/packages/common/src/library/manager/managers/base-library.manager.ts +++ b/packages/common/src/library/manager/managers/base-library.manager.ts @@ -4,9 +4,7 @@ import { LibraryHandle } from "../handle/library.handle"; export class BaseLibraryManager { protected _libraries: LibraryHandle[] = []; - private _librariesIndex: { - [sym: symbol]: number; - }; + private _librariesIndex: Record = {}; /** * @todo Add error management diff --git a/packages/core/src/application/nanoforge-application.ts b/packages/core/src/application/nanoforge-application.ts index 4891178..932e806 100644 --- a/packages/core/src/application/nanoforge-application.ts +++ b/packages/core/src/application/nanoforge-application.ts @@ -4,6 +4,7 @@ import { type ILibrary, type INetworkLibrary, type IRunOptions, + NfNotInitializedException, } from "@nanoforge/common"; import { EditableApplicationContext } from "../common/context/contexts/application.editable-context"; @@ -13,7 +14,7 @@ import type { IApplicationOptions } from "./application-options.type"; export abstract class NanoforgeApplication { protected applicationConfig: ApplicationConfig; - private _core: Core; + private _core?: Core; private readonly _options: IApplicationOptions; constructor(options?: Partial) { @@ -51,6 +52,7 @@ export abstract class NanoforgeApplication { } public run() { - return this._core.run(); + if (!this._core) throw new NfNotInitializedException("Core"); + return this._core?.run(); } } diff --git a/packages/core/src/common/library/manager/library.manager.ts b/packages/core/src/common/library/manager/library.manager.ts index af3de8c..46a4ffe 100644 --- a/packages/core/src/common/library/manager/library.manager.ts +++ b/packages/core/src/common/library/manager/library.manager.ts @@ -24,6 +24,10 @@ import { import { EditableLibraryContext } from "../../context/contexts/library.editable-context"; import { Relationship } from "../relationship-functions"; +const hasMethod = (obj: any, method: string) => { + return typeof obj[method] === "function"; +}; + export class EditableLibraryManager extends LibraryManager { public set(sym: symbol, library: ILibrary) { this.setNewLibrary(sym, library, new EditableLibraryContext()); @@ -90,13 +94,13 @@ export class EditableLibraryManager extends LibraryManager { public getMutableLibraries(): LibraryHandle[] { return this._libraries.filter( - (handle) => handle && typeof handle.library["mute"] === "function", + (handle) => handle && hasMethod(handle.library, "mute"), ) as LibraryHandle[]; } private _getRunnerLibraries(): LibraryHandle[] { return this._libraries.filter( - (handle) => handle && typeof handle.library["__run"] === "function", + (handle) => handle && hasMethod(handle.library, "__run"), ) as LibraryHandle[]; } } diff --git a/packages/core/src/core/core.ts b/packages/core/src/core/core.ts index d8fbb1b..15a403f 100644 --- a/packages/core/src/core/core.ts +++ b/packages/core/src/core/core.ts @@ -8,6 +8,7 @@ import { InitContext, type LibraryHandle, LibraryStatusEnum, + NfNotInitializedException, } from "@nanoforge/common"; import { type ApplicationConfig } from "../application/application-config"; @@ -19,8 +20,8 @@ import { ConfigRegistry } from "../config/config-registry"; export class Core { private readonly config: ApplicationConfig; private readonly context: ApplicationContext; - private options: IApplicationOptions; - private _configRegistry: ConfigRegistry; + private options?: IApplicationOptions; + private _configRegistry?: ConfigRegistry; constructor(config: ApplicationConfig, context: ApplicationContext) { this.config = config; @@ -34,6 +35,8 @@ export class Core { } public async run(): Promise { + if (!this.options) throw new NfNotInitializedException("Core"); + const context = this.getExecutionContext(); const clientContext = this.getClientContext(); const libraries = this.config.libraryManager.getExecutionLibraries(); @@ -58,6 +61,8 @@ export class Core { } private getInitContext(options: IRunOptions): InitContext { + if (!this._configRegistry) throw new NfNotInitializedException("Core"); + return new InitContext(this.context, this.config.libraryManager, this._configRegistry, options); } diff --git a/packages/ecs/.prettierignore b/packages/ecs/.prettierignore index 2ee93c4..0df3487 100644 --- a/packages/ecs/.prettierignore +++ b/packages/ecs/.prettierignore @@ -4,6 +4,5 @@ package-lock.json yarn.lock bun.lock -*.js *.d.ts build diff --git a/packages/ecs/public/libecs.d.ts b/packages/ecs/public/libecs.d.ts deleted file mode 100644 index 365c1c4..0000000 --- a/packages/ecs/public/libecs.d.ts +++ /dev/null @@ -1,23 +0,0 @@ -// TypeScript bindings for emscripten-generated code. Automatically generated at compile time. -declare namespace RuntimeExports { - let HEAPF32: any; - let HEAPF64: any; - let HEAP_DATA_VIEW: any; - let HEAP8: any; - let HEAPU8: any; - let HEAP16: any; - let HEAPU16: any; - let HEAP32: any; - let HEAPU32: any; - let HEAP64: any; - let HEAPU64: any; -} -interface WasmModule { - __initialize(): void; -} - -interface EmbindModule { -} - -export type MainModule = WasmModule & typeof RuntimeExports & EmbindModule; -export default function MainModuleFactory (options?: unknown): Promise; diff --git a/packages/ecs/public/libecs.js b/packages/ecs/public/libecs.js deleted file mode 100644 index 3735e26..0000000 --- a/packages/ecs/public/libecs.js +++ /dev/null @@ -1,15 +0,0 @@ -var Module = (() => { - var _scriptName = import.meta.url; - - return ( -async function(moduleArg = {}) { - var moduleRtn; - -var Module=moduleArg;var readyPromiseResolve,readyPromiseReject;var readyPromise=new Promise((resolve,reject)=>{readyPromiseResolve=resolve;readyPromiseReject=reject});var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof WorkerGlobalScope!="undefined";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(ENVIRONMENT_IS_NODE){const{createRequire}=await import("module");var require=createRequire(import.meta.url)}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");if(!import.meta.url.startsWith("data:")){scriptDirectory=nodePath.dirname(require("url").fileURLToPath(import.meta.url))+"/"}readBinary=filename=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename);return ret};readAsync=async(filename,binary=true)=>{filename=isFileURI(filename)?new URL(filename):filename;var ret=fs.readFileSync(filename,binary?undefined:"utf8");return ret};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptName){scriptDirectory=_scriptName}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.slice(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=async url=>{if(isFileURI(url)){return new Promise((resolve,reject)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){resolve(xhr.response);return}reject(xhr.status)};xhr.onerror=reject;xhr.send(null)})}var response=await fetch(url,{credentials:"same-origin"});if(response.ok){return response.arrayBuffer()}throw new Error(response.status+" : "+response.url)}}}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,HEAP64,HEAPU64,HEAPF64;var runtimeInitialized=false;var isFileURI=filename=>filename.startsWith("file://");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);Module["HEAP64"]=HEAP64=new BigInt64Array(b);Module["HEAPU64"]=HEAPU64=new BigUint64Array(b)}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(onPreRuns)}function initRuntime(){runtimeInitialized=true}function preMain(){}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(onPostRuns)}var runDependencies=0;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;Module["monitorRunDependencies"]?.(runDependencies)}function removeRunDependency(id){runDependencies--;Module["monitorRunDependencies"]?.(runDependencies);if(runDependencies==0){if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){Module["onAbort"]?.(what);what="Aborted("+what+")";err(what);ABORT=true;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var wasmBinaryFile;function findWasmBinary(){if(Module["locateFile"]){return locateFile("libecs.wasm")}return new URL("libecs.wasm",import.meta.url).href}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}async function getWasmBinary(binaryFile){if(!wasmBinary){try{var response=await readAsync(binaryFile);return new Uint8Array(response)}catch{}}return getBinarySync(binaryFile)}async function instantiateArrayBuffer(binaryFile,imports){try{var binary=await getWasmBinary(binaryFile);var instance=await WebAssembly.instantiate(binary,imports);return instance}catch(reason){err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)}}async function instantiateAsync(binary,binaryFile,imports){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE){try{var response=fetch(binaryFile,{credentials:"same-origin"});var instantiationResult=await WebAssembly.instantiateStreaming(response,imports);return instantiationResult}catch(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation")}}return instantiateArrayBuffer(binaryFile,imports)}function getWasmImports(){return{env:wasmImports,wasi_snapshot_preview1:wasmImports}}async function createWasm(){function receiveInstance(instance,module){wasmExports=instance.exports;wasmMemory=wasmExports["memory"];updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){return receiveInstance(result["instance"])}var info=getWasmImports();if(Module["instantiateWasm"]){return new Promise((resolve,reject)=>{Module["instantiateWasm"](info,(mod,inst)=>{receiveInstance(mod,inst);resolve(mod.exports)})})}wasmBinaryFile??=findWasmBinary();try{var result=await instantiateAsync(wasmBinary,wasmBinaryFile,info);var exports=receiveInstantiationResult(result);return exports}catch(e){readyPromiseReject(e);return Promise.reject(e)}}class ExitStatus{name="ExitStatus";constructor(status){this.message=`Program terminated with exit(${status})`;this.status=status}}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var onPostRuns=[];var addOnPostRun=cb=>onPostRuns.unshift(cb);var onPreRuns=[];var addOnPreRun=cb=>onPreRuns.unshift(cb);var noExitRuntime=Module["noExitRuntime"]||true;var stackRestore=val=>__emscripten_stack_restore(val);var stackSave=()=>_emscripten_stack_get_current();var exceptionCaught=[];var uncaughtExceptionCount=0;var ___cxa_begin_catch=ptr=>{var info=new ExceptionInfo(ptr);if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(info);___cxa_increment_exception_refcount(ptr);return ___cxa_get_exception_ptr(ptr)};var exceptionLast=0;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 ___resumeException=ptr=>{if(!exceptionLast){exceptionLast=ptr}throw exceptionLast};var setTempRet0=val=>__emscripten_tempret_set(val);var findMatchingCatch=args=>{var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0}var info=new ExceptionInfo(thrown);info.set_adjusted_ptr(thrown);var thrownType=info.get_type();if(!thrownType){setTempRet0(0);return thrown}for(var caughtType of args){if(caughtType===0||caughtType===thrownType){break}var adjusted_ptr_addr=info.ptr+16;if(___cxa_can_catch(caughtType,thrownType,adjusted_ptr_addr)){setTempRet0(caughtType);return thrown}}setTempRet0(thrownType);return thrown};var ___cxa_find_matching_catch_2=()=>findMatchingCatch([]);var ___cxa_find_matching_catch_3=arg0=>findMatchingCatch([arg0]);var ___cxa_throw=(ptr,type,destructor)=>{var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast};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 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(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 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=readLatin1String(name);var isUnsignedType=name.indexOf("u")!=-1;if(isUnsignedType){maxRange=(1n<<64n)-1n}registerType(primitiveType,{name,fromWireType:value=>value,toWireType:function(destructors,value){if(typeof value!="bigint"&&typeof value!="number"){throw new TypeError(`Cannot convert "${embindRepr(value)}" to ${this.name}`)}if(typeof value=="number"){value=BigInt(value)}return value},argPackAdvance:GenericWireTypeSize,readValueFromPointer:integerReadValueFromPointer(name,size,!isUnsignedType),destructorFunction:null})};var GenericWireTypeSize=8;var __embind_register_bool=(rawType,name,trueValue,falseValue)=>{name=readLatin1String(name);registerType(rawType,{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 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})}}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 deletionQueue=[];var flushPendingDeletes=()=>{while(deletionQueue.length){var obj=deletionQueue.pop();obj.$$.deleteScheduled=false;obj["delete"]()}};var delayFunction;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,func)=>Object.defineProperty(func,"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[name].overloadTable.hasOwnProperty(numArguments)){throwBindingError(`Cannot register multiple overloads of a function with the same number of arguments (${numArguments})!`)}Module[name].overloadTable[numArguments]=value}else{Module[name]=value;Module[name].argCount=numArguments}};var 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};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 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 embind__requireFunction=(signature,rawFunction)=>{signature=readLatin1String(signature);function makeDynCaller(){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 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=readLatin1String(methodName);methodName=getFunctionName(methodName);rawInvoker=embind__requireFunction(invokerSignature,rawInvoker);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];if(undefined===method||undefined===method.overloadTable&&method.className!==classType.name&&method.argCount===argCount-2){unboundTypesHandler.argCount=argCount-2;unboundTypesHandler.className=classType.name;proto[methodName]=unboundTypesHandler}else{ensureOverloadTable(proto,methodName,humanName);proto[methodName].overloadTable[argCount-2]=unboundTypesHandler}whenDependentTypesAreResolved([],rawArgTypes,argTypes=>{var memberFunction=craftInvokerFunction(humanName,argTypes,classType,rawInvoker,context,isAsync);if(undefined===proto[methodName].overloadTable){memberFunction.argCount=argCount-2;proto[methodName]=memberFunction}else{proto[methodName].overloadTable[argCount-2]=memberFunction}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 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,fromWireType:value=>value,toWireType:(destructors,value)=>value,argPackAdvance:GenericWireTypeSize,readValueFromPointer:floatReadValueFromPointer(name,size),destructorFunction:null})};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,fromWireType,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,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=readLatin1String(name);registerType(rawType,{name,fromWireType:decodeMemoryView,argPackAdvance:GenericWireTypeSize,readValueFromPointer:decodeMemoryView},{ignoreDuplicateRegistrations:true})};var EmValOptionalType=Object.assign({optional:true},EmValType);var __embind_register_optional=(rawOptionalType,rawType)=>{registerType(rawOptionalType,EmValOptionalType)};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 UTF8Decoder=typeof TextDecoder!="undefined"?new TextDecoder:undefined;var UTF8ArrayToString=(heapOrArray,idx=0,maxBytesToRead=NaN)=>{var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var UTF8ToString=(ptr,maxBytesToRead)=>ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):"";var __embind_register_std_string=(rawType,name)=>{name=readLatin1String(name);var stdStringIsUTF8=true;registerType(rawType,{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(base);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,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,argPackAdvance:0,fromWireType:()=>undefined,toWireType:(destructors,o)=>undefined})};var requireRegisteredType=(rawType,humanName)=>{var impl=registeredTypes[rawType];if(undefined===impl){throwBindingError(`${humanName} has unknown type ${getTypeName(rawType)}`)}return impl};var emval_returnValue=(returnType,destructorsRef,handle)=>{var destructors=[];var result=returnType["toWireType"](destructors,handle);if(destructors.length){HEAPU32[destructorsRef>>2]=Emval.toHandle(destructors)}return result};var __emval_as=(handle,returnType,destructorsRef)=>{handle=Emval.toValue(handle);returnType=requireRegisteredType(returnType,"emval::as");return emval_returnValue(returnType,destructorsRef,handle)};var emval_methodCallers=[];var __emval_call=(caller,handle,destructorsRef,args)=>{caller=emval_methodCallers[caller];handle=Emval.toValue(handle);return caller(null,handle,destructorsRef,args)};var __emval_equals=(first,second)=>{first=Emval.toValue(first);second=Emval.toValue(second);return first==second};var emval_symbols={};var getStringOrSymbol=address=>{var symbol=emval_symbols[address];if(symbol===undefined){return readLatin1String(address)}return symbol};var emval_get_global=()=>{if(typeof globalThis=="object"){return globalThis}return function(){return Function}()("return this")()};var __emval_get_global=name=>{if(name===0){return Emval.toHandle(emval_get_global())}else{name=getStringOrSymbol(name);return Emval.toHandle(emval_get_global()[name])}};var emval_addMethodCaller=caller=>{var id=emval_methodCallers.length;emval_methodCallers.push(caller);return id};var emval_lookupTypes=(argCount,argTypes)=>{var a=new Array(argCount);for(var i=0;i>2],"parameter "+i)}return a};var reflectConstruct=Reflect.construct;var __emval_get_method_caller=(argCount,argTypes,kind)=>{var types=emval_lookupTypes(argCount,argTypes);var retType=types.shift();argCount--;var functionBody=`return function (obj, func, destructorsRef, args) {\n`;var offset=0;var argsList=[];if(kind===0){argsList.push("obj")}var params=["retType"];var args=[retType];for(var i=0;it.name).join(", ")}) => ${retType.name}>`;return emval_addMethodCaller(createNamedFunction(functionName,invokerFunction))};var __emval_get_property=(handle,key)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);return Emval.toHandle(handle[key])};var __emval_incref=handle=>{if(handle>9){emval_handles[handle+1]+=1}};var __emval_instanceof=(object,constructor)=>{object=Emval.toValue(object);constructor=Emval.toValue(constructor);return object instanceof constructor};var __emval_is_string=handle=>{handle=Emval.toValue(handle);return typeof handle=="string"};var __emval_new_cstring=v=>Emval.toHandle(getStringOrSymbol(v));var __emval_new_object=()=>Emval.toHandle({});var __emval_run_destructors=handle=>{var destructors=Emval.toValue(handle);runDestructors(destructors);__emval_decref(handle)};var __emval_set_property=(handle,key,value)=>{handle=Emval.toValue(handle);key=Emval.toValue(key);value=Emval.toValue(value);handle[key]=value};var __emval_take_value=(type,arg)=>{type=requireRegisteredType(type,"_emval_take_value");var v=type["readValueFromPointer"](arg);return Emval.toHandle(v)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var incrementExceptionRefcount=ptr=>___cxa_increment_exception_refcount(ptr);Module["incrementExceptionRefcount"]=incrementExceptionRefcount;var decrementExceptionRefcount=ptr=>___cxa_decrement_exception_refcount(ptr);Module["decrementExceptionRefcount"]=decrementExceptionRefcount;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=ptr=>getExceptionMessageCommon(ptr);Module["getExceptionMessage"]=getExceptionMessage;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_RegisteredPointer();UnboundTypeError=Module["UnboundTypeError"]=extendError(Error,"UnboundTypeError");init_emval();var wasmImports={__cxa_begin_catch:___cxa_begin_catch,__cxa_find_matching_catch_2:___cxa_find_matching_catch_2,__cxa_find_matching_catch_3:___cxa_find_matching_catch_3,__cxa_throw:___cxa_throw,__resumeException:___resumeException,_embind_register_bigint:__embind_register_bigint,_embind_register_bool:__embind_register_bool,_embind_register_class:__embind_register_class,_embind_register_class_constructor:__embind_register_class_constructor,_embind_register_class_function:__embind_register_class_function,_embind_register_emval:__embind_register_emval,_embind_register_float:__embind_register_float,_embind_register_integer:__embind_register_integer,_embind_register_memory_view:__embind_register_memory_view,_embind_register_optional:__embind_register_optional,_embind_register_std_string:__embind_register_std_string,_embind_register_std_wstring:__embind_register_std_wstring,_embind_register_void:__embind_register_void,_emval_as:__emval_as,_emval_call:__emval_call,_emval_decref:__emval_decref,_emval_equals:__emval_equals,_emval_get_global:__emval_get_global,_emval_get_method_caller:__emval_get_method_caller,_emval_get_property:__emval_get_property,_emval_incref:__emval_incref,_emval_instanceof:__emval_instanceof,_emval_is_string:__emval_is_string,_emval_new_cstring:__emval_new_cstring,_emval_new_object:__emval_new_object,_emval_run_destructors:__emval_run_destructors,_emval_set_property:__emval_set_property,_emval_take_value:__emval_take_value,invoke_ii,invoke_iii,invoke_v,invoke_vii,invoke_viii};var wasmExports=await createWasm();var _malloc=wasmExports["malloc"];var ___getTypeName=wasmExports["__getTypeName"];var __initialize=Module["__initialize"]=wasmExports["_initialize"];var _free=wasmExports["free"];var _setThrew=wasmExports["setThrew"];var __emscripten_tempret_set=wasmExports["_emscripten_tempret_set"];var __emscripten_stack_restore=wasmExports["_emscripten_stack_restore"];var __emscripten_stack_alloc=wasmExports["_emscripten_stack_alloc"];var _emscripten_stack_get_current=wasmExports["emscripten_stack_get_current"];var ___cxa_increment_exception_refcount=wasmExports["__cxa_increment_exception_refcount"];var ___cxa_decrement_exception_refcount=wasmExports["__cxa_decrement_exception_refcount"];var ___get_exception_message=wasmExports["__get_exception_message"];var ___cxa_can_catch=wasmExports["__cxa_can_catch"];var ___cxa_get_exception_ptr=wasmExports["__cxa_get_exception_ptr"];function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_v(index){var sp=stackSave();try{getWasmTableEntry(index)()}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}var mainArgs=undefined;function callMain(args=[]){var entryFunction=__initialize;mainArgs=[thisProgram].concat(args);try{entryFunction();var ret=0;exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(args=arguments_){if(runDependencies>0){dependenciesFulfilled=run;return}preRun();if(runDependencies>0){dependenciesFulfilled=run;return}function doRun(){Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);Module["onRuntimeInitialized"]?.();var noInitialRun=Module["noInitialRun"];if(!noInitialRun)callMain(args);postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(()=>{setTimeout(()=>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();moduleRtn=readyPromise; - - - return moduleRtn; -} -); -})(); -export default Module; diff --git a/packages/ecs/public/libecs.wasm b/packages/ecs/public/libecs.wasm deleted file mode 100755 index f8f430bcb16c71dca6ea111eda004c0bd3b3c85c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 207593 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ØrTfwUokjlvY$gcE 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 diff --git a/packages/ecs/src/ecs-library.ts b/packages/ecs/src/ecs-library.ts index 3ecd9ee..dbcc4d4 100644 --- a/packages/ecs/src/ecs-library.ts +++ b/packages/ecs/src/ecs-library.ts @@ -6,12 +6,11 @@ import { type InitContext, } from "@nanoforge/common"; -import type { MainModule, Registry } from "../lib"; -import { Module } from "../lib"; +import { type MainModule, Module, type Registry } from "../lib"; export class ECSLibrary extends BaseComponentSystemLibrary { - private module: MainModule; - private _registry: Registry; + private module?: MainModule; + private _registry?: Registry; private readonly path: string = "libecs.wasm"; @@ -33,10 +32,12 @@ export class ECSLibrary extends BaseComponentSystemLibrary { } async __run(ctx: Context): Promise { + if (!this._registry) this.throwNotInitializedError(); this._registry.runSystems(ctx); } get registry(): Registry { + if (!this._registry) this.throwNotInitializedError(); return this._registry; } } diff --git a/packages/ecs/src/index.ts b/packages/ecs/src/index.ts index 3504fb0..dc434f7 100644 --- a/packages/ecs/src/index.ts +++ b/packages/ecs/src/index.ts @@ -1,4 +1,4 @@ -import "@lib/libecs.wasm"; +import "../lib/libecs.wasm"; export { ECSLibrary } from "./ecs-library"; export type { Component, System, Registry } from "../lib"; diff --git a/packages/ecs/tsconfig.build.json b/packages/ecs/tsconfig.build.json index f5a5c1b..64a74cc 100644 --- a/packages/ecs/tsconfig.build.json +++ b/packages/ecs/tsconfig.build.json @@ -4,7 +4,6 @@ "outDir": ".", "rootDir": ".", "paths": { - "@lib": ["./lib"], "@nanoforge/common": ["../common"] } }, diff --git a/packages/graphics-2d/src/graphics-2d.library.ts b/packages/graphics-2d/src/graphics-2d.library.ts index 44c208d..f921a54 100644 --- a/packages/graphics-2d/src/graphics-2d.library.ts +++ b/packages/graphics-2d/src/graphics-2d.library.ts @@ -3,13 +3,14 @@ import { BaseGraphicsLibrary, type InitContext } from "@nanoforge/common"; import { Graphics } from "."; export class Graphics2DLibrary extends BaseGraphicsLibrary { - private _stage: Graphics.Stage; + private _stage?: Graphics.Stage; get __name(): string { return "Graphics2DLibrary"; } get stage(): Graphics.Stage { + if (!this._stage) this.throwNotInitializedError(); return this._stage; } diff --git a/packages/input/src/input.library.ts b/packages/input/src/input.library.ts index 51e9700..a2f48af 100644 --- a/packages/input/src/input.library.ts +++ b/packages/input/src/input.library.ts @@ -4,7 +4,7 @@ import { InputHandler } from "./input-handler"; import { type InputEnum } from "./input.enum"; export class InputLibrary extends BaseInputLibrary { - private _inputHandler: InputHandler; + private _inputHandler?: InputHandler; get __name(): string { return "InputLibrary"; @@ -15,10 +15,12 @@ export class InputLibrary extends BaseInputLibrary { } public isKeyPressed(key: InputEnum): boolean { + if (!this._inputHandler) this.throwNotInitializedError(); return this._inputHandler.getKeyStatus(key); } public getPressedKeys(): InputEnum[] { + if (!this._inputHandler) this.throwNotInitializedError(); const res: InputEnum[] = []; for (const rawKey in this._inputHandler.inputs) { const key = rawKey as InputEnum; diff --git a/packages/music/src/music.library.ts b/packages/music/src/music.library.ts index 56ca03e..ec3a81e 100644 --- a/packages/music/src/music.library.ts +++ b/packages/music/src/music.library.ts @@ -1,8 +1,8 @@ import { BaseMusicLibrary, NfNotFound } from "@nanoforge/common"; export class MusicLibrary extends BaseMusicLibrary { - private muted: boolean; - private musics: Map; + private muted: boolean = true; + private musics?: Map; private current: HTMLAudioElement | null = null; get __name(): string { @@ -15,10 +15,9 @@ export class MusicLibrary extends BaseMusicLibrary { } public mute(): void { + if (!this.musics) this.throwNotInitializedError(); this.muted = !this.muted; - for (const key in this.musics) { - const element = this.musics[key]; - + for (const [, element] of this.musics) { if (element) { element.muted = this.muted; } @@ -26,6 +25,7 @@ export class MusicLibrary extends BaseMusicLibrary { } public play(music: string): void { + if (!this.musics) this.throwNotInitializedError(); const musicElement = this.musics.get(music); if (musicElement) { @@ -44,6 +44,7 @@ export class MusicLibrary extends BaseMusicLibrary { } public load(music: string, file: string) { + if (!this.musics) this.throwNotInitializedError(); const element = new Audio(file); if (element) { element.muted = this.muted; diff --git a/packages/sound/src/sound.library.ts b/packages/sound/src/sound.library.ts index 646ea95..5a0bf4a 100644 --- a/packages/sound/src/sound.library.ts +++ b/packages/sound/src/sound.library.ts @@ -1,8 +1,8 @@ import { BaseSoundLibrary, NfNotFound } from "@nanoforge/common"; export class SoundLibrary extends BaseSoundLibrary { - private muted: boolean; - private sounds: Map; + private muted: boolean = true; + private sounds?: Map; get __name(): string { return "NfSound"; @@ -14,10 +14,9 @@ export class SoundLibrary extends BaseSoundLibrary { } public mute(): void { + if (!this.sounds) this.throwNotInitializedError(); this.muted = !this.muted; - for (const key in this.sounds) { - const element = this.sounds[key]; - + for (const [, element] of this.sounds) { if (element) { element.muted = this.muted; } @@ -25,6 +24,7 @@ export class SoundLibrary extends BaseSoundLibrary { } public play(sound: string): void { + if (!this.sounds) this.throwNotInitializedError(); const soundElement = this.sounds.get(sound); if (soundElement) { @@ -40,6 +40,7 @@ export class SoundLibrary extends BaseSoundLibrary { } public load(sound: string, file: string) { + if (!this.sounds) this.throwNotInitializedError(); const element = new Audio(file); if (element) { element.muted = this.muted; diff --git a/packages/tsconfig.build.json b/packages/tsconfig.build.json index bdceab0..55d05e6 100644 --- a/packages/tsconfig.build.json +++ b/packages/tsconfig.build.json @@ -3,7 +3,6 @@ "composite": true, "module": "commonjs", "declaration": true, - "noImplicitAny": false, "skipLibCheck": true, "noUnusedLocals": false, "importHelpers": true, @@ -18,7 +17,6 @@ "strict": true, "strictNullChecks": true, "forceConsistentCasingInFileNames": true, - "strictPropertyInitialization": false, "types": ["node"] } }