"use strict"; const events = new Map(); function on(event, callback) { if (!events.has(event)) { events.set(event, []); } events.get(event).push(callback); } function emit(event, ...args) { if (events.has(event)) { for (const callback of events.get(event)) { try { callback(...args); } catch (error) { console.error(`Event error [${event}]:`, error); } } } } function once(event, callback) { const wrapper = (...args) => { off(event, wrapper); callback(...args); }; on(event, wrapper); } function off(event, callback) { if (events.has(event)) { const callbacks = events.get(event); const index = callbacks.indexOf(callback); if (index > -1) { callbacks.splice(index, 1); } } } function removeAllListeners(event) { if (event) { events.delete(event); } else { events.clear(); } } function listenerCount(event) { return events.has(event) ? events.get(event).length : 0; } module.exports = { on, emit, once, off, removeAllListeners, listenerCount, events };