import { simulate } from './solver'; import type { BeadSystem, Excitation, SimOptions } from './types'; export interface WorkerRequest { sys: BeadSystem; exc: Excitation; opt: SimOptions; } self.onmessage = (ev: MessageEvent) => { const { sys, exc, opt } = ev.data; try { const result = simulate(sys, exc, opt, (f) => self.postMessage({ type: 'progress', fraction: f })); self.postMessage({ type: 'done', result }, { transfer: [result.audio.buffer, result.frames.buffer, result.frameTimes.buffer, result.energy.buffer, result.balance.buffer], }); } catch (e) { self.postMessage({ type: 'error', message: String(e) }); } };