0.0.2 • Published 7 years ago

ni-pubsub-composite v0.0.2

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

ni-pubsub-composite

Composite function to add the publish–subscribe pattern to an object.

Install using npm

$ npm install ni-pubsub-composite --save

Usage

// Import the Module
import pubsubComposite from 'ni-pubsub-composite'

// Create an object or have one already
const someObject = {};

// Add publish–subscribe pattern to object
pubsubComposite(someObject);

API

new PubSub()

Creates a PubSub instance.

pubSub.subscribe(topic, callback, once) ⇒ number

Subscribe to events of interest with a specific topic name and a callback function, to be executed when the topic/event is observed.

Kind: instance method of PubSub Returns: number - The topic's token this: {PubSub}

ParamTypeDefaultDescription
topicstringThe topic's name
callbackfunctionCallback function to execute on event, taking two arguments: - {*} data The data passed when publishing an event - {object} The topic's info (name & token)
oncebooleanfalseChecks if event will be triggered only one time

Example

var pubsub = new PubSub();

var onUserAdd = pubsub.subscribe('user_add', function (data, topic) {
  console.log('User added');
  console.log('user data:', data);
});

pubSub.subscribeOnce(topic, callback) ⇒ number

Subscribe to events of interest setting a flag indicating the event will be published only one time.

Kind: instance method of PubSub Returns: number - The topic's token this: {PubSub}

ParamTypeDescription
topicstringThe topic's name
callbackfunctionCallback function to execute on event, taking two arguments: - {*} data The data passed when publishing an event - {object} The topic's info (name & token)

Example

var onUserAdd = pubsub.subscribeOnce('user_add', function (data, topic) {
  console.log('User added');
  console.log('user data:', data);
});

pubSub.publish(topic, data) ⇒ boolean

Publishes a topic, passing the data to its subscribers.

Kind: instance method of PubSub Returns: boolean - Returns true if topic exists and event is published; otheriwse false this: {PubSub}

ParamTypeDescription
topicstringThe topic's name
data*The data to be passed to its subscribers

Example

pubsub.publish('user_added', [{
  firstName: 'John',
  lastName: 'Doe',
  email: 'johndoe@gmail.com'
}]);

pubSub.unsubscribe(topic) ⇒ boolean | string

Unsubscribes from a specific topic, based on the topic name, or based on a tokenized reference to the subscription.

Kind: instance method of PubSub Returns: boolean | string - Returns false if topic does not match a subscribed event; otherwise the topic's name this: {PubSub}

ParamTypeDescription
topicstring | numberTopic's name or subscription reference

Example

// Unsubscribe using the topic's name.
pubsub.unsubscribe('user_add');

// Unsubscribe using a tokenized reference to the subscription.
pubsub.unsubscribe(onUserAdd);

pubSub.unsubscribeAll() ⇒ PubSub

Clears all subscriptions whatsoever.

Kind: instance method of PubSub Returns: PubSub - The PubSub instance. this: {PubSub} Example

var pubsub = new PubSub();
...
...
pubsub.unsubscribeAll();

pubSub.hasSubscribers(topic) ⇒ Boolean

Checks if there are subscribers for a specific topic. If topic is not provided, checks if there is at least one subscriber.

Kind: instance method of PubSub Returns: Boolean - Returns true there are subscribers; otherwise false this: {PubSub}

ParamTypeDescription
topicStringThe topic's name to check

Example

var pubsub = new PubSub();
pubsub.on('message', function (data) {
  console.log(data);
});

pubsub.hasSubscribers('message');
// -> true

pubSub.subscribers() ⇒ object

Gets all the subscribers as a set of key value pairs that represent the topic's name and the event listener(s) bound.

Kind: instance method of PubSub Returns: object - A readonly object with all subscribers. this: {PubSub} Example

var pubsub = new PubSub();

pubsub.subscribe('message', listener);
pubsub.subscribe('message', listener);
pubsub.subscribe('another_message', listener);

pubsub.subscribers();
// -> Object { message: Array[2], another_message: Array[1] }

pubSub.alias(aliasMap) ⇒ PubSub

Creates aliases for public methods.

Kind: instance method of PubSub Returns: PubSub - The PubSub instance. this: {PubSub}

ParamTypeDescription
aliasMapobjectA plain object that maps the public methods to their aliases.

Example

var pubsub = new PubSub().alias({
  subscribe: 'on',
  subscribeOnce: 'once',
  publish: 'trigger',
  publishSync: 'triggerSync',
  unsubscribe: 'off',
  hasSubscribers: 'has'
});