1// N.B. The contents of this file are duplicated in src/library_wasm_worker.js 2// in variable "_wasmWorkerBlobUrl" (where the contents are pre-minified) If 3// doing any changes to this file, be sure to update the contents there too. 4 5'use strict'; 6 7// Node.js support 8var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; 9if (ENVIRONMENT_IS_NODE) { 10 // Create as web-worker-like an environment as we can. 11 12 var nodeWorkerThreads = await import('worker_threads'); 13 14 var parentPort = nodeWorkerThreads.parentPort; 15 16 parentPort.on('message', (data) => typeof onmessage === "function" && onmessage({ data: data })); 17 18 var fs = await import('fs'); 19 var vm = await import('vm'); 20 21 var msgHandlers = new Set(); 22 23 Object.assign(global, { 24 self: global, 25 __filename: import.meta.filename, 26 __dirname: import.meta.dirname, 27 Worker: nodeWorkerThreads.Worker, 28 importScripts: (f) => vm.runInThisContext(fs.readFileSync(f, 'utf8'), {filename: f}), 29 postMessage: (msg) => parentPort.postMessage(msg), 30 performance: global.performance || { now: Date.now }, 31 addEventListener: (name, handler) => { 32 msgHandlers.add(handler); 33 parentPort.on(name, handler); 34 }, 35 removeEventListener: (name, handler) => { 36 parentPort.off(name, handler); 37 if(msgHandlers.has(handler)) { 38 msgHandlers.delete(handler); 39 } 40 }, 41 dispatchEvent: (e) => msgHandlers.forEach((v) => v(e)) 42 }); 43} 44 45const __f = async function(d) { 46 // The first message sent to the Worker is always the bootstrap message. 47 // Drop this message listener, it served its purpose of bootstrapping 48 // the Wasm Module load, and is no longer needed. Let user code register 49 // any desired message handlers from now on. 50 self.removeEventListener("message", __f); 51 const eventQ = []; 52 const eventQpusher = (e) => eventQ.push(e); 53 self.addEventListener("message", eventQpusher); 54 d = ENVIRONMENT_IS_NODE ? d : d.data; 55 d['instantiateWasm'] = (info, receiveInstance) => { var instance = new WebAssembly.Instance(d['wasm'], info); return receiveInstance(instance, d['wasm']); } 56 const { default: instantiator } = await import(d.js); 57 await instantiator(d); 58 self.removeEventListener("message", eventQpusher); 59 eventQ.forEach(e => self.dispatchEvent(e)); 60 // Drop now unneeded references to from the Module object in this Worker, 61 // these are not needed anymore. 62 d.wasm = d.mem = d.js = 0; 63} 64 65self.addEventListener("message", __f); 66!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0d877057-96f6-5195-991e-09cdb2227aad")}catch(e){}}(); 67//# debugId=0d877057-96f6-5195-991e-09cdb2227aad
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.