mainEntry = (offscreen, callback) => {
const worker = createWorker(workerEntry, {
WIDTH,
HEIGHT,
sequence,
make2DArray,
aggregator,
drawCenterTo,
generate,
render,
})
const dispose = () => {
worker.terminate()
console.log(`${Date.now()}: worker terminated`)
}
console.log(`${Date.now()}: worker created`)
try {
// setup worker
const channnel = new MessageChannel()
const port = channnel.port1
// setup
worker.postMessage({
port: channnel.port2,
transitions,
colors,
pattern,
offscreen,
}, [channnel.port2, offscreen])
port.addEventListener('message', e => {
// got stats
callback(e.data)
})
port.addEventListener('messageerror', e => {
console.error(e)
})
port.start()
} catch (e) {
dispose()
throw e
}
return dispose
}