UNPKG

native-update

Version:

Foundation package for building a comprehensive update system for Capacitor apps. Provides architecture and interfaces but requires backend implementation.

75 lines 2.03 kB
/** * Centralized event emitter for the Native Update plugin */ export class EventEmitter { constructor() { this.listeners = new Map(); } static getInstance() { if (!EventEmitter.instance) { EventEmitter.instance = new EventEmitter(); } return EventEmitter.instance; } /** * Add a listener for an event */ addListener(eventName, listener) { if (!this.listeners.has(eventName)) { this.listeners.set(eventName, new Set()); } this.listeners.get(eventName).add(listener); // Return remove function return () => { const listeners = this.listeners.get(eventName); if (listeners) { listeners.delete(listener); if (listeners.size === 0) { this.listeners.delete(eventName); } } }; } /** * Emit an event to all listeners */ emit(eventName, data) { const listeners = this.listeners.get(eventName); if (listeners) { listeners.forEach(listener => { try { listener(data); } catch (error) { console.error(`Error in event listener for ${eventName}:`, error); } }); } } /** * Remove all listeners for a specific event */ removeListeners(eventName) { this.listeners.delete(eventName); } /** * Remove all listeners */ removeAllListeners() { this.listeners.clear(); } /** * Get the number of listeners for an event */ listenerCount(eventName) { var _a; return ((_a = this.listeners.get(eventName)) === null || _a === void 0 ? void 0 : _a.size) || 0; } /** * Get all event names that have listeners */ eventNames() { return Array.from(this.listeners.keys()); } } //# sourceMappingURL=event-emitter.js.map