app-bus

2.1.1 • Public • Published

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.

Package Sidebar

Install

npm i app-bus

Weekly Downloads

2

Version

2.1.1

License

ISC

Last publish

Collaborators

  • joshuaramirez