scryfall-sdk
Version:
A Node.js SDK for https://scryfall.com/docs/api written in Typescript.
98 lines (97 loc) • 3.55 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const EMPTY = [];
class EventEmitter {
constructor() {
this._maxListeners = 10;
this._listeners = {};
}
addListener(eventName, listener) {
var _a;
var _b;
const listeners = (_a = (_b = this._listeners)[eventName]) !== null && _a !== void 0 ? _a : (_b[eventName] = []);
listeners.push(listener);
if (listeners.length > this._maxListeners)
console.warn(`MaxListenersExceededWarning: Possible EventEmitter memory leak detected. ${listeners.length} ${eventName.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`);
return this;
}
prependListener(eventName, listener) {
var _a;
var _b;
const listeners = (_a = (_b = this._listeners)[eventName]) !== null && _a !== void 0 ? _a : (_b[eventName] = []);
listeners.unshift(listener);
if (listeners.length > this._maxListeners)
console.warn(`MaxListenersExceededWarning: Possible EventEmitter memory leak detected. ${listeners.length} ${eventName.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`);
return this;
}
removeListener(eventName, listener) {
const listeners = this._listeners[eventName];
if (listeners) {
const index = listeners.indexOf(listener);
if (index >= 0) {
if (listeners.length === 1)
delete this._listeners[eventName];
else
listeners.splice(index, 1);
}
}
return this;
}
on(eventName, listener) {
this.addListener(eventName, listener);
return this;
}
once(eventName, listener) {
const realListener = (...args) => {
this.removeListener(eventName, realListener);
listener(...args);
};
this.addListener(eventName, realListener);
return this;
}
prependOnceListener(eventName, listener) {
const realListener = (...args) => {
this.removeListener(eventName, realListener);
listener(...args);
};
this.prependListener(eventName, realListener);
return this;
}
off(eventName, listener) {
this.removeListener(eventName, listener);
return this;
}
removeAllListeners(event) {
if (event !== undefined)
delete this._listeners[event];
return this;
}
emit(eventName, ...args) {
if (this._listeners[eventName])
for (const listener of this._listeners[eventName])
listener(...args);
return true;
}
setMaxListeners(n) {
this._maxListeners = n;
return this;
}
getMaxListeners() {
return this._maxListeners;
}
listeners(eventName) {
const listeners = this._listeners[eventName];
return listeners ? [...listeners] : EMPTY;
}
rawListeners(eventName) {
throw new Error("The rawListeners method is not available using this polyfill");
}
listenerCount(eventName) {
var _a, _b;
return (_b = (_a = this._listeners[eventName]) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;
}
eventNames() {
return Object.keys(this._listeners);
}
}
exports.default = EventEmitter;