**[INACTIVE]** This library is no longer active. For an alternative take a look at [RxJs](https://github.com/Reactive-Extensions/RxJS).

# cobu-eventbus
[![Build Status](https://api.travis-ci.org/cschuller/cobu-eventbus.svg?branch=master)](http://travis-ci.org/cschuller/cobu-eventbus)
[![GitHub version](https://badge.fury.io/gh/cschuller%2Fcobu-eventbus.svg)](http://badge.fury.io/gh/cschuller%2Fcobu-eventbus)
[![NPM version](https://badge.fury.io/js/cobu-eventbus.svg)](http://badge.fury.io/js/cobu-eventbus)

cobu-eventbus is a simple, lightweight and flexible JavaScript library to manage events.
It works using strings or objects (even 'strong typed') as events.
You define what an event is, cobu-eventbus will support it.

The purpose of an event bus is to decouple components. This pattern is very
important for large scale JavaScript applications to be maintainable.

## Getting started

```npm install cobu-eventbus```

## Examples

### Simple scenario using a string as an event.

```js
// Create the EventBus instance.
var eventBus = new cobu.EventBus();

// Create an callback function that can handle the specific event.
function handleFooEvent(event) {
   console.log('Handling a foo event');
}

// Register the callback function to an event type.
eventBus.on('foo', handleFooEvent);

// Post an event
eventBus.post('foo');
```

### Using an object as an event

```js
// Create the EventBus instance.
var eventBus = new cobu.EventBus();

// Define a constructor function to create the helloEvent object later.
function HelloEvent(name) {
    this.type = 'helloEvent';
    this.name = name;
}

// Create an callback function that can handle the specific event type.
function handleHelloEvent(event) {
    console.log('Hello ' + event.name);
};

// Register the callback function to an event type.
eventBus.on(HelloEvent, handleAlertEvent);

// Post a new event.
eventBus.post(new HelloEvent('foo'));
```

## API

## Statistics for nerds

Performance difference between version 0.14.0 and 1.0.0

| Performance       | Scenario |
| --- 				| --- |
| 10x - 100x faster | posting an event when using a lot of context and handlers |
| 50% smaller       | file size |
| 25% slower        | when adding / removing an event handler |
