New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

suby

Package Overview
Dependencies
Maintainers
0
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

suby

A simple pub - sub library

latest
Source
npmnpm
Version
1.2.9
Version published
Maintainers
0
Created
Source

Suby

Suby is a tiny publish-subscibe library.

Installation

$ npm i -S suby
$ yarn add suby

Methods

sub, subscribe, listen, on: (namespace, callback) - subscribes to messages in a namespace and returns unsubscribe function.

pub, publish, emit: (namespace, data?) - publish data to namespace.

unsub, off: (namespace, callback) - unsubscribes from messages in a namespace.

onAny: (callback) - subscribe to messages in all namespaces and returns unsubscribe function.

offAny: (calllback) - unsubscribes from messages in all namespaces.

hasSubscribers: returns Boolean weather the store has registered subscribers.

hasSubscriber: (namespace, callback?) - returns Boolean weather there are subscribers or specific subscriber in provided namespace.

registerMiddleware: (Middleware | Middleware[]): register middleware callbacks that will be called with event name and data Each middleware must return original or mutated data. Next middleware and callbacks willl be called with the new data.

unregisterMiddleware: (Middleware | Middleware[]): unregister middleware.

Usage

import Suby from 'suby'

const mySubyInstance = new Suby()

const unSub = mySubyInstance.sub('new-user', (userName) => {
    console.log(`Hello ${userName}!`)
})

const offAny = mySubyInstance.onAny((event, data) => {
    console.log('received new event', event, data)
})

mySubyInstance.pub('new-user', 'John')
// received new event new-user John
// Hello John!

unSub() // unsubscribe from future events in 'new-user' namespace
offAny() // unsubscribe from future events in all namespaces

mySubyInstance.pub('new-user', 'Homer') // nothing happens

//using middleware
function myLoggerMiddleware(event, data){
    console.log(`Logger`, event, data)
    return data // return data!
}

mySubyInstance.registerMiddleware(myLoggerMiddleware)

mySubyInstance.pub('new-user', 'Bob')
// Logger new-user Bob

// or with on/off pattern
function onPing(){
    console.log('PING')
}

mySubyInstance.on('ping', onPing)
mySubyInstance.off('ping', onPing)

Examples

// subscribe for single event
const eventBus = new Suby()

const unSub = eventBus.sub('assets-loaded', (error) => {
    unSub()
    // do some stuff...
})
type Events = {
	'event-a': string
	'event-b': number
	'event-c': undefined
}

const pubSub = new PubSub<Events>()

pubSub.on('event-a', 'hello')

Keywords

Publisher

FAQs

Package last updated on 25 Jun 2024

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts