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)
-
.events :
- 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);
Record.<string, UttoriEvent>
eventDispatcher.events : The collection of events to listen for.
Kind: instance property of EventDispatcher
Promise.<boolean>
eventDispatcher.validate(label, data, [context]) ⇒ 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);
Promise.<T>
eventDispatcher.filter(label, data, [context]) ⇒ 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);
Promise.<Array.<T>>
eventDispatcher.fetch(label, data, [context]) ⇒ 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