import { name, description } from '../package.json' import './style.css' import createElement from './utils/createElement' import { WorkerAdapter } from './service/adapter' import { injectCounter } from './service/counter' void (async () => { // Use the proxy object const worker = new Worker(new URL('./worker.ts', import.meta.url), { type: 'module' }) const counter = injectCounter(new WorkerAdapter(worker, 'worker-transfer-injector')) const initValue = await counter.getValue() document.querySelector('#app')!.appendChild( createElement(`

${name}

${description}

${initValue}

WebWorker Stream Value: ${initValue}

`) ) document.querySelector('#decrement')!.addEventListener('click', async () => { await counter.decrement() }) document.querySelector('#increment')!.addEventListener('click', async () => { await counter.increment() }) const onChange = async () => { const stream = await counter.getStream() const reader = stream.getReader() while (true) { const { value, done } = await reader.read() if (done) break document.querySelector('#value')!.textContent = value.toString() document.querySelector('#worker-value')!.textContent = `WebWorker Stream Value: ${value}` } } onChange() })().catch(console.error)