Status: CONCEPT · Erstellt März 2026
Übergeordnet: GLOBAL_concept-ecosystem.md
Übersicht
Event-System – Fundament für alle @xpulse/* Pakete. Zero dependencies.
Erweitert Node's nativen EventEmitter um optionale Registrierung und Introspection –
damit Events im Ökosystem dokumentiert und nachvollziehbar sind.
Konzept
Events können optional registriert werden – das ist keine Pflicht, aber eine Konvention.
Ein emit() auf einem nicht-registrierten Event funktioniert, taucht aber nicht in event.list() auf.
Basiert auf Node's EventEmitter – kein eigener Event-Loop, keine Queues, kein Persistence.
Fired and forgotten. Die Registrierungs-Map ist ein einfaches Map<name, metadata> on top.
// Limit auf 50 — im Ökosystem hören viele Packages auf dieselben Events
7
emitter.setMaxListeners(50);
Dependencies
Keine.
Debug Integration
Wenn @xpulse/debug als devDependency installiert ist, stellt @xpulse/event
automatisch einen DataCollector bereit. @xpulse/debug discovert ihn via
node_modules/@xpulse/event/src/datacollectors/ – keine Konfiguration nötig.
1
"optionalDependencies":{
2
"@xpulse/debug":"^1.0.0"
3
}
Der EventsCollector (name: 'events', icon: '⚡') zeigt im Web Profiler:
Registered Events (table): alle via event.register() bekannten Events mit
Name, Emitted By, aktiver Listener-Anzahl, Description
Emitted During Request (table): alle tatsächlich gefeuerten Events während
dieses Requests mit Name, Timestamp und gekürztem Payload
Strategie: Der EventsCollector umschließt event.emit direkt, statt für
jedes Event einen eigenen Listener zu registrieren. Damit werden auch Events
erfasst die nie via event.register() registriert wurden (z.B. template:render:after).
Ausgenommen sind http:response:before (zirkuläre Payload) und logger:write
(zu viele Einträge).
Badge in der Toolbar: Anzahl emittierter Events während des Requests (z.B. 7)
Offene Fragen
Frage
Stand
event.listAll() auch nicht-registrierte (aber aktive) Events?