Skip to content

crobinson42/event-sky

Repository files navigation

Event Sky (event-sky)

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.

npm version Build Status semantic-release

JavaScript Style Guide forthebadge forthebadge

forthebadge

An event pub-sub aggregate utility for javascript environments.

Usage

EventSky is bundled as a UMD (universal module design) and can be used in the following ways:

Browser

<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>

Commonjs - Node/Browserify/Webpack

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!')

API

Event Hook Lifecycle

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'...)

Trigger Events

const data = 'some string...'

eventSky.trigger('newMessage', data)

Turn Handlers Off

// 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')

Firehose

For development purposes you can initialize eventSky to see all event activity in the console:

eventSky.config.firehose = true

Registered Events

You can debug EventSky by checking the registered events and lifecycles via:

console.dir(eventSky.events)