1.0.4 • Published 5 years ago

@ciklum/xmess v1.0.4

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
5 years ago

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](https://docs.npmjs.com/cli/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-repeater](https://gitlab.ciklum.net/st-js/module-xmess-repeater)
1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago

0.5.9

5 years ago

0.5.8

5 years ago

0.5.0

5 years ago

0.5.7

5 years ago

0.5.6

6 years ago