Skip to content

Bluebird promise wrapper around event emitters

License

Notifications You must be signed in to change notification settings

toddbluhm/bluebird-events

Repository files navigation

Travis CI Coverage Status npm npm License TS-Standard - Typescript Standard Style Guide Dependabot badge

Bluebird-Events

This package wraps an event emitter object and returns a bluebird promise that is either resolved, or rejected based on what events are fired from the emitter.

Note: Bluebird-Events v2.x is NOT backwards compatible with v1.x see changelog for details

Installation

npm install bluebird-events

Optionally run tests:

npm test

Usage

import { promisify } from 'bluebird-events'

const someEmitter = new TestEmitter()

const promise = promisify(someEmitter, {
  resolve: 'success-event-name',
  reject: ['error-event-name', 'error-event-name-2']
})

// Will resolve the promise
someEmitter.emit('success-event-name')

// Will reject the promise with the given error
someEmitter.emit('error-event-name', new Error('Some Error Occurred!'))

API

promisify(emitter, events)

emitter[Object] - Some object that can emit events (usually inherited from Events.EventEmitter)

events[Object] - Contains a mapping of events to listen for

events.resolve[String, Array of Strings, or Boolean] - The name for the event that will cause the promise to resolve (defaults to: 'finish')

events.reject[String, Array of Strings, or Boolean] - The name for the event that will cause the promise to reject (defaults to: 'error')

Returns - a bluebird promise

Note: To disable listening for all resolve or reject events (including default and custom events) just pass in false for the resolve/reject value.

// This promise cannot be resolve successfully via an emitted event
// But it can be rejected via the default 'error' event
promisify(emitter, { resolve: false })

Dependencies

This library is dependent upon bluebird, but because bluebird is so common, there is no need to install it multiple times so bluebird is declared as a peerDependency

Note: bluebird is also declared as a devDependency for running the test suite

Contributors

📋 Contributing Guide

I welcome all pull requests. Please make sure you add appropriate test cases for any features added. Before opening a PR please make sure to run the following scripts:

  • npm run lint checks for code errors and format according to ts-standard
  • npm test make sure all tests pass
  • npm run test-cover make sure the coverage has not decreased from current master