UNPKG

genshin-manager

Version:

<div align="center"> <p> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https://img.shields.io/npm/v/genshin-manager.svg?maxAge=3600" alt="npm version" /></a> <a href="https://www.npmjs.com/package/genshin-manager"><img src="https:

90 lines (89 loc) 3.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PromiseEventEmitter = void 0; /* eslint-disable jsdoc/require-returns */ const events_1 = require("events"); /** * Class for supporting asynchronous event listeners. * @see EventEmitter */ class PromiseEventEmitter { /** * Create a PromiseEventEmitter. */ constructor() { this.emitter = new events_1.EventEmitter(); } /** * Adds a **one-time**`listener` function for the event named `eventName`. The next time `eventName` is triggered, this listener is removed and then invoked. * @param eventName The name of the event. * @param listener The callback function. (supports async) * @see EventEmitter.once() */ once(eventName, listener) { this.emitter.once(eventName, listener); return this; } /** * Adds the `listener` function to the end of the listeners array for the event named `eventName`. * No checks are made to see if the `listener` has already been added. * Multiple calls passing the same combination of `eventName`and `listener` will result in the `listener` being added, and called, multiple times. * @param eventName The name of the event. * @param listener The callback function. (supports async) * @see EventEmitter.on() */ on(eventName, listener) { this.addListener(eventName, listener); return this; } /** * Alias for `emitter.on(eventName, listener)`. * @param eventName The name of the event. * @param listener The callback function. (supports async) * @see EventEmitter.addListener() */ addListener(eventName, listener) { this.emitter.addListener(eventName, listener); return this; } /** * Alias for `emitter.removeListener()`. * @param eventName The name of the event. * @param listener The callback function. (supports async) * @see EventEmitter.off() */ off(eventName, listener) { this.removeListener(eventName, listener); return this; } /** * Removes the specified `listener` from the listener array for the event named`eventName`. * @param eventName The name of the event. * @param listener The callback function. (supports async) * @see EventEmitter.removeListener() */ removeListener(eventName, listener) { this.emitter.removeListener(eventName, listener); return this; } /** * Removes all listeners, or those of the specified `eventName`. * @param event The name of the event. * @see EventEmitter.removeAllListeners() */ removeAllListeners(event) { this.emitter.removeAllListeners(event); return this; } /** * Synchronously calls each of the listeners registered for the event named`eventName`, in the order they were registered, passing the supplied arguments to each. * Returns `true` if the event had listeners, `false` otherwise. * @param eventName The name of the event. * @param args Arguments to pass to the listeners. * @see EventEmitter.emit() */ emit(eventName, ...args) { return this.emitter.emit(eventName, ...args); } } exports.PromiseEventEmitter = PromiseEventEmitter;