@ciklum/xmess

1.0.4 • Public • Published

XMESS - basic pub/sub pattern implementation

Table of contents

  1. Installation and usage
  2. Usage and API
  3. Working with local copy of module
  4. Publish a package
  5. Links

Installation and usage

Set private registry by adding //registry.npmjs.org/:_authToken=7e1daf59-1424-4261-a14b-ab23f404c1db to your .npmrc file

Install XMESS library by running

npm i @ciklum/xmess

Now you can use assets provided by XMESS:

import { Xmess } from '@ciklum/xmess'

Usage and API

Module exports xmess singleton that implements basic pub/sub pattern. Generally it is both publisher and subscriber. Every entity represented as 'channel', that stores last emitted message from corresponding channel and has methods:

  • subscribe - method to register subscriber to a specific channel. Callback function that invoked after publish event occurred in the current channel is a parameter to subscribe method. All data that was published, passed to callback function as an argument. Method returns function that unsubscribe current callback from current channel.

  • subscribeWithLatest - method to register subscriber to a specific channel and immediately fire callback with the last message. Callback function that invoked after publish event occurred in the current channel is a parameter to subscribeWithLatestt method. All All data that was published, passed to callback function as an argument. Method returns function that unsubscribe current callback from current channel.

  • publish - method to publish some data to all subscribers in current channel. Data that will be passed to all subscriber's callbacks in current channel, is a parameter to publish method.

Example:

import { Xmess } from '@ciklum/xmess'

// Provide 'xmessId' If you want to use Xmess in conjunction with @ciklum/xmess-repeater 
const xmess = new Xmess('xmessId')

const unsubscribe = xmess.channel('some-channel').subscribe(data => handler(data)) 
xmess.channel('some-channel').publish({ data: 'some data' }) // handler called

// handler will be called immediately after subscription
const unsubWithLatest = xmess.channel('some-channel').subscribeWithLatest(data => handler(data))

unsubscribe() // to unsubscribe from the channel
unsubWithLatest() // to unsubscribe from the channel

xmess.destroy() // to remove all subscriptions

Working with local copy of module

When you want to develop new features for module, this section will be helpful for you. Package linking is a two-step process which solves this need. You need npm link for this.

Steps:

  • Create global link. It will be available in folder were your npm modules are.

    npm link

  • Links to the global installation target from your front end app.

    npm link @ciklum/xmess

Publish a package

Publish a package to the registry by running

npm run build
npm publish

Links

/@ciklum/xmess/

    Package Sidebar

    Install

    npm i @ciklum/xmess

    Weekly Downloads

    0

    Version

    1.0.4

    License

    ISC

    Unpacked Size

    14.1 kB

    Total Files

    4

    Last publish

    Collaborators

    • ciklum