UNPKG

shipy-sdk-js

Version:

Shipy Payment Gateway SDK for JavaScript/TypeScript

78 lines (77 loc) 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitter = void 0; class EventEmitter { constructor() { this.events = new Map(); } /** * Subscribe to an event * @param event The event name to subscribe to * @param callback The callback function to execute when the event is emitted * @returns A function to unsubscribe from the event */ on(event, callback) { if (!this.events.has(event)) { this.events.set(event, new Set()); } const callbacks = this.events.get(event); callbacks.add(callback); // Return unsubscribe function return () => { const callbacks = this.events.get(event); if (callbacks) { callbacks.delete(callback); if (callbacks.size === 0) { this.events.delete(event); } } }; } /** * Subscribe to an event once * @param event The event name to subscribe to * @param callback The callback function to execute when the event is emitted */ once(event, callback) { const unsubscribe = this.on(event, ((data) => { unsubscribe(); callback(data); })); } /** * Emit an event * @param event The event name to emit * @param data The data to pass to the event handlers */ emit(event, data) { const callbacks = this.events.get(event); if (callbacks) { callbacks.forEach(callback => { try { callback(data); } catch (error) { this.emit('error', error instanceof Error ? error : new Error(String(error))); } }); } } /** * Remove all listeners for a specific event * @param event The event name to remove listeners from */ removeAllListeners(event) { this.events.delete(event); } /** * Get the number of listeners for a specific event * @param event The event name to get listener count for * @returns The number of listeners for the event */ listenerCount(event) { var _a, _b; return (_b = (_a = this.events.get(event)) === null || _a === void 0 ? void 0 : _a.size) !== null && _b !== void 0 ? _b : 0; } } exports.EventEmitter = EventEmitter;