Files
talk/services/events/index.js
T
2018-01-11 20:00:34 -07:00

37 lines
918 B
JavaScript

const { EventEmitter2 } = require('eventemitter2');
const constants = require('./constants');
const debug = require('debug')('talk:services:events');
const enabled = require('debug').enabled('talk:services:events');
const emitter = new EventEmitter2({
wildcard: true,
});
// If event debugging is enabled, bind the debugger to all events being emitted
// and log a debug message.
if (enabled) {
emitter.onAny(function(event) {
debug(
`[${event}] ${arguments.length - 1} argument${
arguments.length - 1 === 1 ? '' : 's'
}`
);
});
}
// Allow any number of listeners to attach to this.
emitter.setMaxListeners(0);
// The default error handler.
emitter.on('error', err => {
console.error('events error:', err);
});
emitter.on('newListener', event => {
if (!(event in constants)) {
throw new Error(`Event[${event}] not a valid event name`);
}
});
module.exports = emitter;