packages/protocol holds the one list of /sim messages and checks every field, naming what is wrong. packages/sim has the simulation room for F and the web worker: the document's snapshot at start, the engine's clock on the wall clock with Java's speed as cable delay, subscriptions to cable activity, a card's new frames and a program's new window lines, capture and clock kept over a stop, the command line as first action, a core failure told to every client. LocalSimHost mirrors the document into the worker and back without echo. M9 in Chromium: 17 examples give the same capture as in Node, character for character; the room runs in a real worker. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
16 lines
564 B
TypeScript
16 lines
564 B
TypeScript
// The entry of the web worker that holds a LocalSimHost's room.
|
|
|
|
import type { Port } from './channel.js';
|
|
import { serveRoom } from './serveRoom.js';
|
|
|
|
// The worker's scope, with what it is used for here (the package has no DOM types).
|
|
declare const self: Port;
|
|
declare function setInterval(handler: () => void, milliseconds: number): unknown;
|
|
declare const performance: { now(): number };
|
|
|
|
serveRoom(self, {
|
|
now: () => performance.now(),
|
|
seed: () => Math.floor(Math.random() * 2 ** 31),
|
|
every: (milliseconds, tick) => setInterval(tick, milliseconds),
|
|
});
|