1import cfg from '../diplomat.config.mjs'; 2import {readString8} from './diplomat-runtime.mjs' 3 4let wasm; 5 6const imports = { 7env: { 8 diplomat_console_debug_js(ptr, len) { 9 console.debug(readString8(wasm, ptr, len)); 10 }, 11 diplomat_console_error_js(ptr, len) { 12 console.error(readString8(wasm, ptr, len)); 13 }, 14 diplomat_console_info_js(ptr, len) { 15 console.info(readString8(wasm, ptr, len)); 16 }, 17 diplomat_console_log_js(ptr, len) { 18 console.log(readString8(wasm, ptr, len)); 19 }, 20 diplomat_console_warn_js(ptr, len) { 21 console.warn(readString8(wasm, ptr, len)); 22 }, 23 diplomat_throw_error_js(ptr, len) { 24 throw new Error(readString8(wasm, ptr, len)); 25 } 26} 27} 28 29if (globalThis.process?.getBuiltinModule) { 30 // Node (>=22) 31 const fs = globalThis.process.getBuiltinModule('fs'); 32 const wasmFile = new Uint8Array(fs.readFileSync(cfg['wasm_path'])); 33 const loadedWasm = await WebAssembly.instantiate(wasmFile, imports); 34 wasm = loadedWasm.instance.exports; 35} else if (globalThis.process) { 36 // Node (<22) 37 const fs = await import('fs'); 38 const wasmFile = new Uint8Array(fs.readFileSync(cfg['wasm_path'])); 39 const loadedWasm = await WebAssembly.instantiate(wasmFile, imports); 40 wasm = loadedWasm.instance.exports; 41} else { 42 // Browser 43 const loadedWasm = await WebAssembly.instantiateStreaming(fetch(cfg['wasm_path']), imports); 44 wasm = loadedWasm.instance.exports; 45} 46 47wasm.diplomat_init(); 48if (cfg['init'] !== undefined) { 49 cfg['init'](wasm); 50} 51 52export default wasm; 53