// Generated WASM loader class WasmLoader { constructor() { this.modules = new Map(); } async loadModule(name, wasmPath) { if (this.modules.has(name)) { return this.modules.get(name); } try { let wasmModule; if (typeof WebAssembly.instantiateStreaming === "function") { const response = await fetch(wasmPath); const result = await WebAssembly.instantiateStreaming(response); wasmModule = result.instance; } else { // Fallback for older browsers const response = await fetch(wasmPath); const bytes = await response.arrayBuffer(); const result = await WebAssembly.instantiate(bytes); wasmModule = result.instance; } this.modules.set(name, wasmModule); return wasmModule; } catch (error) { console.error(`Failed to load WASM module ${name}:`, error); throw error; } } async loadAll() { const modulePromises = [ {{MODULE_PROMISES}} ]; try { await Promise.all(modulePromises); console.log("All WASM modules loaded successfully"); } catch (error) { console.error("Failed to load some WASM modules:", error); } } getModule(name) { return this.modules.get(name); } } // Export for use window.WasmLoader = WasmLoader; // Auto-load if desired if (window.autoLoadWasm !== false) { const loader = new WasmLoader(); loader.loadAll().then(() => { window.wasm = loader; // Dispatch event when all modules are ready window.dispatchEvent(new CustomEvent("wasmReady", { detail: { loader } })); }); }