const fs = require('fs') const path = require('path') const resolveFolder = (folderName) => path.resolve(__dirname, '.', folderName) const EventEmitter = require('events') class EventManager extends EventEmitter { constructor() { super() this.cache = new Map() this.allEvents = {} } load(options = {}) { const eventsFolder = resolveFolder('../events') let i = 0 fs.readdirSync(eventsFolder).map(async (file) => { if (!file.endsWith('.js')) return i++ const fileName = path.join(eventsFolder, file) const event = require(fileName) const eventName = file.split('.')[0] this.allEvents[`${eventName}`] = (...args) => { this.emit(eventName, ...args) return event(...args) } }) return this.allEvents } } module.exports = EventManager