export function startWorker(module, memory, state, opts, helper) {
const worker = new Worker(new URL('./worker.js',
import.meta.url), opts);
worker.postMessage([module, memory, state, helper.mainJS()]);
return new Promise((res, rej) => {
worker.onmessage = ev => {
if (ev.data === 'started') res();
};
worker.onerror = rej;
});
}
if ('WorkerGlobalScope' in self &&
self instanceof WorkerGlobalScope) {
self.onmessage = async event => {
let [module, memory, state, mainJS] = event.data;
const importFrom = (typeof __webpack_require__ === 'function') ? import('../..') : import(mainJS);
try {
const {
default: init,
worker_entry_point
} = await importFrom;
await init(module, memory);
worker_entry_point(state);
postMessage('started');
self.onmessage = event => {
console.error("Unexpected message", event);
}
} catch (err) {
setTimeout(() => {
throw err;
close();
});
throw err;
}
}
}