guts/web/js/core/bus.js
jing 34f84ab162 [lane F] Round 0 scaffold: docs, contracts, lane charters, bootable stub world
GDD v1 (flow-locked hybrid movement, 5 biomes + secret, boss roster),
TECH contracts (world API, level schema v0, bus events, manifest law),
ART_BIBLE (synthetic scanner look), PIPELINE (MODELBEAST-first, fal gated),
PROCESS (PROCITY lane/round law), charters A-F + ROUND1 instructions.
Seed code: shell + boot + core (rng/bus/flags) + stub world (peristalsis
shader tube, 1 draw / 102k tris, contract-complete) + qa.sh (GREEN).
Verified in-browser; evidence docs/shots/laneF/round0_stub_tube.png.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-16 01:28:35 +10:00

18 lines
480 B
JavaScript

// core/bus.js (Lane F) — event bus. Event names are a contract: TECH.md §Bus.
export function createBus() {
const map = new Map();
return {
on(name, fn) {
if (!map.has(name)) map.set(name, new Set());
map.get(name).add(fn);
return () => map.get(name)?.delete(fn);
},
off(name, fn) { map.get(name)?.delete(fn); },
emit(name, payload) {
const set = map.get(name);
if (set) for (const fn of [...set]) fn(payload);
},
};
}