Skip to content

A very simple signal library inspired by the 'signals' package

License

Notifications You must be signed in to change notification settings

moxystudio/js-pico-signals

Repository files navigation

pico-signals

NPM version Downloads Build Status Coverage Status Dependency status Dev Dependency status

A very simple signal library inspired by the signals package.

Installation

$ npm install pico-signals

This library is written in modern JavaScript and is published in both CommonJS and ES module transpiled variants.

If you target older browsers please make sure to transpile accordingly.

Usage

import signal from 'pico-signals';

const listener1 = () => console.log('Listener1');
const listener2 = () => console.log('Listener2');

const mySignal = signal();

const removeListener1 = mySignal.add(listener1);
const removeListener2 = mySignal.add(listener2);

mySignal.dispatch('foo', 'bar');
//=> Both listeners will be called and both logs produced.
//=> Every listener will receive the same arguments provided in the dispatch method.

removeListener2();
//=> Deletes `listener2` from the listeners list;

mySignal.dispatch();
//=> Only `listener1` will be called since its currently the only listener on the list.

mySignal.clear();
//=> Clears all listeners.

API

add(listener)

Adds a new listener to the list.

Returns a method to remove the listener.

listener

Type: Function

A listener to be called on dispatch.

delete(listener)

Deletes a listener from the list.

listener

Type: Function

An existing listener in the list.

clear()

Deletes all listeners from the list.

dispatch(...args)

Calls every listener with the specified arguments.

Tests

$ npm test
$ npm test -- --watch # during development

License

Released under the MIT License.