local ____lualib = require("lualib_bundle") local __TS__Class = ____lualib.__TS__Class local __TS__ArrayIncludes = ____lualib.__TS__ArrayIncludes local __TS__ArrayIndexOf = ____lualib.__TS__ArrayIndexOf local __TS__ArraySplice = ____lualib.__TS__ArraySplice local __TS__ObjectKeys = ____lualib.__TS__ObjectKeys local __TS__ArrayForEach = ____lualib.__TS__ArrayForEach local __TS__Unpack = ____lualib.__TS__Unpack local __TS__SourceMapTraceBack = ____lualib.__TS__SourceMapTraceBack __TS__SourceMapTraceBack(debug.getinfo(1).short_src, {["12"] = 27,["13"] = 27,["14"] = 27,["15"] = 33,["16"] = 33,["17"] = 28,["18"] = 31,["19"] = 33,["20"] = 41,["21"] = 42,["22"] = 43,["24"] = 45,["25"] = 46,["26"] = 47,["28"] = 49,["29"] = 41,["30"] = 58,["31"] = 59,["32"] = 60,["33"] = 61,["35"] = 63,["36"] = 64,["37"] = 65,["38"] = 66,["40"] = 63,["41"] = 58,["42"] = 71,["43"] = 72,["46"] = 76,["47"] = 77,["48"] = 78,["50"] = 71,["51"] = 82,["52"] = 83,["53"] = 83,["54"] = 83,["55"] = 83,["56"] = 86,["57"] = 82,["58"] = 89,["59"] = 90,["60"] = 93,["61"] = 94,["62"] = 95,["63"] = 96,["64"] = 96,["65"] = 96,["68"] = 100,["71"] = 98,["72"] = 98,["73"] = 98,["74"] = 98,["80"] = 96,["81"] = 96,["83"] = 104,["85"] = 108,["86"] = 109,["87"] = 109,["88"] = 109,["91"] = 113,["94"] = 111,["95"] = 111,["96"] = 111,["97"] = 111,["103"] = 109,["104"] = 109,["105"] = 117,["106"] = 118,["108"] = 89,["109"] = 122,["110"] = 123,["111"] = 123,["112"] = 123,["113"] = 123,["114"] = 124,["115"] = 125,["116"] = 125,["117"] = 125,["118"] = 125,["119"] = 123,["120"] = 123,["121"] = 128,["122"] = 122}); local ____exports = {} ____exports.EventEmitter = __TS__Class() local EventEmitter = ____exports.EventEmitter EventEmitter.name = "EventEmitter" function EventEmitter.prototype.____constructor(self, log) self.log = log self.eventsListeners = {} self.anyEventsListeners = {} end function EventEmitter.prototype.on(self, eventName, listener) if type(self.eventsListeners[eventName]) ~= "table" then self.eventsListeners[eventName] = {} end local listeners = self.eventsListeners[eventName] if not __TS__ArrayIncludes(listeners, listener) then listeners[#listeners + 1] = listener end return function() return self:removeListener(eventName, listener) end end function EventEmitter.prototype.onAny(self, listener) local listeners = self.anyEventsListeners if not __TS__ArrayIncludes(listeners, listener) then listeners[#listeners + 1] = listener end return function() local idx = __TS__ArrayIndexOf(self.anyEventsListeners, listener) if idx > -1 then __TS__ArraySplice(self.anyEventsListeners, idx, 1) end end end function EventEmitter.prototype.removeListener(self, eventName, listener) if type(self.eventsListeners[eventName]) ~= "table" then return end local idx = __TS__ArrayIndexOf(self.eventsListeners[eventName], listener) if idx > -1 then __TS__ArraySplice(self.eventsListeners[eventName], idx, 1) end end function EventEmitter.prototype.removeAllListeners(self) __TS__ArrayForEach( __TS__ObjectKeys(self.eventsListeners), function(____, event) return __TS__ArraySplice(self.eventsListeners[event], 0, #self.eventsListeners[event]) end ) __TS__ArraySplice(self.anyEventsListeners, 0, #self.anyEventsListeners) end function EventEmitter.prototype.emit(self, event) local lastErr if type(self.eventsListeners[event.eventName]) == "table" then local thisEventListeners = self.eventsListeners[event.eventName] self.log:trace(((("Event [" .. event.eventName) .. "], calling ") .. tostring(#thisEventListeners)) .. " listeners") __TS__ArrayForEach( thisEventListeners, function(____, listener, index) do local function ____catch(err) lastErr = err end local ____try, ____hasReturned = pcall(function() listener( self, __TS__Unpack({event}) ) end) if not ____try then ____catch(____hasReturned) end end end ) else self.log:trace(("Event [" .. event.eventName) .. "] - no specific listeners") end self.log:trace(((("Event [" .. event.eventName) .. "] - Calling ") .. tostring(#self.anyEventsListeners)) .. " any-event listeners") __TS__ArrayForEach( self.anyEventsListeners, function(____, listener, index) do local function ____catch(err) lastErr = err end local ____try, ____hasReturned = pcall(function() listener( self, __TS__Unpack({event}) ) end) if not ____try then ____catch(____hasReturned) end end end ) if lastErr ~= nil then error(lastErr, 0) end end function EventEmitter.prototype.once(self, event, listener) local remove remove = self:on( event.eventName, function(____, ...) remove(nil) listener( self, __TS__Unpack({event}) ) end ) return remove end return ____exports