An event pub/sub aggregate utility for javascript apps.
When designing javascript apps it's best to keep modules/features loosely coupled. A great method for accomplishing this is events via publish/subscribe handlers. "Event Sky" was designed to help your apps work without knowing about eachother by utilizing the events with Event Sky.
An event pub-sub aggregate utility for javascript environments.
EventSky
is bundled as a UMD (universal module design) and can be used in the following ways:
<script src="https://unpkg.com/[email protected]/build.js" />
<script>
EventSky.on('testEvent', console.info)
EventSke.trigger('testEvent', 'It works!')
console.log(EventSky.events)
</script>
npm i -S event-sky
or yarn add event-sky
const EventSky = require('event-sky')
Note:
EventSky
exports a singleton pattern module. This means it's the same object across require/import's in your commonjs environment, ie:
/* file1.js */
const eventSky = require('event-sky')
eventSky.on('testSingleton', (msg) => console.log(msg))
/* file2.js */
const eventSky = require('event-sky')
eventSky.trigger('testSingleton', 'The singleton pattern works!')
You can add event handlers in different lifecycle hooks, beforeAll
, on
, once
, afterAll
const eventSky = require('event-sky')
eventSky.on('newMessage', (data) => { console.log(data) })
eventSky.beforeAll('newMessage'...)
eventSky.afterAll('newMessage'...)
eventSky.once('newMessage'...)
const data = 'some string...'
eventSky.trigger('newMessage', data)
// by event id
const eventId = eventSky.on('newMessage', (data) => { console.log(data) })
eventSky.off(eventId)
// or by event name and handler
const handler = (data) => { console.log(data) }
eventSky.on('newMessage', handler)
eventSky.off('newMessage', handler)
A convenience method is available to turn all handlers off associated with an event name, ie:
eventSky.beforeAll('eventName', () => { /* ... */ })
eventSky.on('eventName`, () => { /* ... */ })
// remove all lifecycle hooks for event name "eventName"
eventSky.off.all('eventName')
For development purposes you can initialize eventSky to see all event activity in the console:
eventSky.config.firehose = true
You can debug EventSky
by checking the registered events and lifecycles via:
console.dir(eventSky.events)