eventric-remote-inmemory
Version:
eventric InMemory Remote
45 lines (30 loc) • 1.11 kB
text/coffeescript
class PubSub
constructor: ->
= []
= 0
subscribe: (eventName, subscriberFunction) ->
new Promise (resolve) =>
subscriber =
eventName: eventName
subscriberFunction: subscriberFunction
subscriberId:
.push subscriber
resolve subscriber.subscriberId
publish: (eventName, payload) ->
subscribers = eventName
return Promise.all subscribers.map (subscriber) -> subscriber.subscriberFunction payload
_getRelevantSubscribers: (eventName) ->
if eventName
.filter (subscriber) -> subscriber.eventName is eventName
else
unsubscribe: (subscriberId) ->
new Promise (resolve) =>
= .filter (subscriber) -> subscriber.subscriberId isnt subscriberId
resolve()
_getNextSubscriberId: ->
++
getFullEventName: (eventParts...) ->
eventParts = eventParts.filter (eventPart) -> eventPart?
return eventParts.join '/'
module.exports = new PubSub