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
JavaScript
;
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;