tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

diplomat-wasm.mjs (1575B)


      1 import cfg from '../diplomat.config.mjs';
      2 import {readString8} from './diplomat-runtime.mjs'
      3 
      4 let wasm;
      5 
      6 const imports = {
      7 env: {
      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 
     29 if (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 
     47 wasm.diplomat_init();
     48 if (cfg['init'] !== undefined) {
     49    cfg['init'](wasm);
     50 }
     51 
     52 export default wasm;