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

${name}

${description}

${initValue}

SharedWorker Value: ${initValue}

`) ) document.querySelector('#decrement')!.addEventListener('click', async () => { await counter.decrement() }) document.querySelector('#increment')!.addEventListener('click', async () => { await counter.increment() }) counter.onChange((value) => { document.querySelector('#value')!.textContent = value.toString() document.querySelector('#worker-value')!.textContent = `SharedWorker Value: ${value}` }) })().catch(console.error)