From 540d3ec70d38a339496169fb8b46130524334544 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Davut=20=C3=96zg=C3=BCr=20S=C3=BCk=C3=BCti?= <80099012+davutozgursukuti4531@users.noreply.github.com> Date: Thu, 16 Feb 2023 16:08:09 +0300 Subject: [PATCH] eventemitter.js a cool event emitter --- Classes/eventemitter.js | 56 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 Classes/eventemitter.js diff --git a/Classes/eventemitter.js b/Classes/eventemitter.js new file mode 100644 index 0000000..655a981 --- /dev/null +++ b/Classes/eventemitter.js @@ -0,0 +1,56 @@ +import EventEmitter from "node:events" + + + +class ExtendedEventEmitter extends EventEmitter{ + constructor(){ + super() + this.emittedEventNames() + this.eventNames() + } + /** + * + * @returns {any[]} + */ + emittedEventNames(){ + return [] + } + /** + * + * @returns {any[]} + */ + emittedEvents(){ + return [] + } + /** + * + * @param {string | symbol} eventName + * @returns + */ + hasListener(eventName){ + return super.eventNames().some((e) => e === eventName) + } + /** + * + * @param {string | symbol} eventName + * @returns + */ + emit(eventName, ...args){ + this.emittedEventNames.push(event) + this.emittedEvents.push({ + eventName, + args: args + }) + return super.emit(eventName, ...args) + } + /** + * + * @param {string | symbol} eventName + * @returns + */ + hasEmit(eventName){ + return this.emittedEventNames.some(eName => eName === eventName) + } +} + +export default ExtendedEventEmitter