signal-event
v1.0.2
Published
A 700 byte zero dependency single instance of an event emitter. 🎉
Downloads
6
Maintainers
Readme
Signal
Signal is a light ~700 Bytes Singleton instance of an Event bus. It works directly in the browser or has support for commonJS and amd modules.
Its Really tiny. Check it out here;
Motivation
I got the concept of creating a unified event bus whilst reading this article. What if an app had multiple tech stacks, was there was a way to communicate between them?? This can be super useful for people migrating their stacks from one to another. A unified bus is one of the ways for microservices / micro apps to communicate with one another. Typically they follow a pub sub design pattern
Installation
Using npm
npm install signal-event
yarn add signal-event
Usage
signal-event
exports a function which when invoked with a consturctor will generate the same instance every single time. Thereby keeping all your events at one place.
const Signal = require('signal-event');
const S1 = new Signal();
Register An Event handler
S1.on('foo', function(data) {
console.log(`got data for event name foo`, data)
});
Register Multiple Event handlers
S1.on('foo', handlerFunction1);
S1.on('foo', handlerFunction2);
S1.on('foo', handlerFunction3);
S1.on('foo', handlerFunction4);
S1.emit('foo', { foo: 'bar' })
// This will get triggered in all the handlers;
Emit an Event
S1.emit('foo', { foo: 'bar' })
Remove an Event Hanlder
function beepEventHandler(data) {
// do something with data
}
S1.on('beep', beepEventHandler);
S1.emit('beep', 'bloop');
S1.remove('beep', beepEventHandler);
/*
* If you need to remove an event handler the function specified
must have a name, annonymous arrow fn wont work
S1.remove('beep', () => {}); will not work
*/
Remove All event handlers for an event
S1.remove('beep', null, true);
API
- Add Event Listener
Signal.on(eventName, handlerFunction)
- Emit Event
Signal.emit(eventName, data)
- Remove Event Handler
Signal.remove(eventName, handlerFunction, removeAllHandlers)
#Dev Setup
yarn run test
yarn run cover
Liked the repo :star: it.
Found any Bugs File them here