@uttori/event-dispatcher
v3.0.2
Published
An event bus system for registering, unregistering and triggering events.
Downloads
24
Readme
Uttori Event Dispatcher
An event bus system for registering, unregistering and triggering events.
Install
npm install --save @uttori/event-dispatcher
Example
const hooks = new EventDispatcher();
hooks.on('update', callback);
hooks.dispatch('update', { data }, this);
hooks.off('update', callback);
API Reference
EventDispatcher
An event bus system for registering, unregistering and triggering events.
Kind: global class
Properties
| Name | Type | Description | | --- | --- | --- | | events | Record.<string, UttoriEvent> | The collection of events to listen for. |
- EventDispatcher
- new EventDispatcher()
- instance
- .events : Record.<string, UttoriEvent>
- .validate(label, data, [context]) ⇒ Promise.<boolean>
- .filter(label, data, [context]) ⇒ Promise.<T>
- .dispatch(label, data, [context])
- .fetch(label, data, [context]) ⇒ Promise.<Array.<T>>
- .on(label, callback)
- .once(label, callback)
- .off(label, callback)
- static
new EventDispatcher()
Creates a new EventDispatcher instance.
Example (new EventDispatcher())
const bus = new EventDispatcher();
bus.on('update', callback);
bus.dispatch('update', { data }, { context });
bus.off('update', callback);
eventDispatcher.events : Record.<string, UttoriEvent>
The collection of events to listen for.
Kind: instance property of EventDispatcher
eventDispatcher.validate(label, data, [context]) ⇒ Promise.<boolean>
Fires off an event with passed in data and context for a given label.
Kind: instance method of EventDispatcher
Returns: Promise.<boolean> - The conclusion of the spam checks, true being it is spam, false meaning it is clean.
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | data | any | Data to be used, updated, or modified by event callbacks. | | [context] | object | Context to help with updating or modification of the data. |
Example
is_spam = await bus.validate('check-for-spam', { data }, this);
eventDispatcher.filter(label, data, [context]) ⇒ Promise.<T>
Fires off an event with passed in data and context for a given label.
Kind: instance method of EventDispatcher
Returns: Promise.<T> - The original input data, either modified or untouched.
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | data | any | Data to be used, updated, or modified by event callbacks. | | [context] | object | Context to help with updating or modification of the data. |
Example
output = await bus.filter('loaded', { data }, this);
eventDispatcher.dispatch(label, data, [context])
Fires off an event with passed in data and context for a given label.
Kind: instance method of EventDispatcher
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | data | any | Data to be used, updated, or modified by event callbacks. | | [context] | object | Context to help with updating or modification of the data. |
Example
bus.dispatch('loaded', { data }, this);
eventDispatcher.fetch(label, data, [context]) ⇒ Promise.<Array.<T>>
Fires off an event with passed in data and context for a given label and returns an array of the results.
Kind: instance method of EventDispatcher
Returns: Promise.<Array.<T>> - An array of the results.
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | data | any | Data to be used by event callbacks. | | [context] | object | Context to help with updating or modification of the data. |
Example
popular = await bus.fetch('popular-documents', { limit: 10 }, this);
eventDispatcher.on(label, callback)
Add a function to an event that will be called when the label is dispatched. If no label is found, one is created.
Kind: instance method of EventDispatcher
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | callback | UttoriEventCallback.<any, any> | Function to be called when the event is fired. |
Example
bus.on('loaded', callback);
eventDispatcher.once(label, callback)
Add a function to an event that will be called only once when the label is dispatched.
Uses the EventDispatcher.on
method with a function wrapped to call off on use.
Kind: instance method of EventDispatcher
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | callback | UttoriEventCallback.<any, any> | Function to be called when the event is fired. |
Example
bus.once('one-time-process', callback);
eventDispatcher.off(label, callback)
Remove a function from an event.
Kind: instance method of EventDispatcher
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. | | callback | UttoriEventCallback.<any, any> | Function to be removed. |
Example
bus.off('loaded', callback);
EventDispatcher.check(label)
Verifies an event label.
Kind: static method of EventDispatcher
| Param | Type | Description | | --- | --- | --- | | label | string | The human readable identifier of the event. |
Example
EventDispatcher.check('event'); // No Error
EventDispatcher.check(1); // Throws Error
Tests
To run the test suite, first install the dependencies, then run npm test
:
npm install
npm test
DEBUG=Uttori* npm test