1.5.1 • Published 10 months ago

@vandeurenglenn/little-pubsub v1.5.1

Weekly downloads
-
License
MIT
Repository
github
Last release
10 months ago

little-pubsub

Small publish & subscribe class

INSTALL

npm

npm i --save @vandeurenglenn/little-pubsub

USAGE

import PubSub from '@vandeurenglenn/little-pubsub'
const pubsub = new PubSub()

Breaking Changes

v1.5.0

subscribe[context] & unsubscribe[context] -> subscribe[options({keepValue, context})]

// before
pusbub.subscribe(topic, handler, context)

// now
pusbub.subscribe(topic, handler, { context })

Example

import PubSub from '@vandeurenglenn/little-pubsub'
const pubsub = new PubSub()

pubsub.subscribe('event', (value) => {
  console.log(value)
})

pubsub.publish('event', 'hello')
// always runs handler
// (can use to overide littlePubsub.verbose setting without changing the behavior of the rest)
pubsub.publishVerbose('event', 'hello')

pubsub.unsubscribe('event', (value) => {
  console.log(value)
})

pubsub.hasSubscribers('event')

await pubsub.once('event')

API

pubsub(options)

verbose: when false only fires after value change

pubsub = new PubSub({
  verbose: false // default: true
})

subscribe

name: name of the channel to subscribe to handler: method options: { context, keepValue }

subscribing to an event will also return it's initial value

pubsub.subscribe('event-name', (data) => {
  console.log(data)
})

unsubscribe

name: name of the channel to unsubscribe handler: method options: { context, keepValue }

pubsub.unsubscribe(
  'event-name',
  (data) => {
    console.log(data)
  },
  { keepValue: false } // default
)

publish

name: name of the channel to publish to handler: method verbose: boolean

pubsub.publish('event-name', 'data')

publish

name: name of the channel to publish to handler: method

pubsub.publishVerbose('event-name', 'data')

once

name: name of the channel to get the value from

pubsub.getValue('event-name')

once

name: name of the channel to publish to

await pubsub.once('event-name')

hasSubscribers

name: name of the channel to publish to

pubsub.hasSubscribers('event-name')