2.1.1 • Published 7 years ago

app-bus v2.1.1

Weekly downloads
2
License
ISC
Repository
github
Last release
7 years ago

AppBus

A small library that give you a publish / subscribe application bus that runs synchronously and in-memory.

Installation

npm install app-bus --save

Usage

//Require in the instance factory
var AppBusFactory = require('app-bus');

//Create an instance
var appBus = AppBusFactory.new();

//Define an event as a name
var myEventName = "Events.MyEvent.Occured";

//Define a subscriber
var mySubscriber = function(payload){
    console.log(payload);
};

//Subscribe to the event as a name
appBus.subscribe(mySubscriber).to(myEventName);

//Define an optional payload for the subscription
var myPayload = "Hello World";

//Publish an event immediately with a payload
appBus.publish(myEventName).with(myPayload).now();

//Publish an event immediately without a payload
appBus.publish(myEventName).now();

//Unsubscribe when done
appBus.unSubscribe(mySubscriber).from(myEventName);

//Queue publications with a payload for the future when a subscription is made
appBus.publish(myEventName).with(myPayload).queue.all();
appBus.publish(myEventName).with(myPayload).queue.all();
appBus.publish(myEventName).with(myPayload).queue.all();

//Subscribe and receive all the queued publications
appBus.subscribe(mySubscriber).to(myEventName);

//Unsubscribe when done again
appBus.unSubscribe(mySubscriber).from(myEventName);

//Queue a publication again with a payload for the future when a subscription is made
appBus.publish(myEventName).with(myPayload).queue.all();

//Replace the publication with only the latest one queued
appBus.publish(myEventName).with(myPayload).queue.latest();

//Replace the latest publication again with only the latest one queued
appBus.publish(myEventName).with(myPayload).queue.latest();

//Replace the latest publication again with only the latest one queued without a payload
appBus.publish(myEventName).queue.latest();

//Subscribe and expect only the last queued publication without a payload to be received
appBus.subscribe(mySubscriber).to(myEventName);

//Clear subscription by event name
appBus.clear.subscriptions.byEventName(myEventName);

//Also clear all subscriptions
appBus.clear.subscriptions.all();

//Clear queued subscriptions by event name
appBus.clear.queue.byEventName(myEventName);

//Also clear all queued subscriptions
appBus.clear.queue.all();

//Post publications for future subscriptions
appBus.publish(myEventName).post();

//Update and overwrite the posted publication to have a payload 
appBus.publish(myEventName).with(myPayload).post();

//Subscribe and receive the posted publication
appBus.subscribe(mySubscriber).to(myEventName);

//Unsubscribe...
appBus.unSubscribe(mySubscriber).from(myEventName);

//Then subscribe again and receive the posted publication again
appBus.subscribe(mySubscriber).to(myEventName);

//Clear that particular posting
appBus.clear.posts.byEventName(myEventName);

//Also clear all posts
appBus.clear.posts.all();

Tests

npm test

Stack

  • Grunt
  • ES6 (Babel)
  • ESLint
  • Mocha
  • Chai

Contributing

Pull requests are welcome. Please take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.

2.1.1

7 years ago

2.1.0

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago