UNPKG

prepper

Version:

Prepper is an event based api for pre-processing log events before routing them to your logging framework of choice

35 lines (26 loc) 926 B
var EventEmitter = require('events').EventEmitter var util = require('util') var R = require('ramda') var isFunction = R.compose(R.equals('Function'), R.type) var Noop = require('./Noop') function Sequence(_handlers) { var handlers = R.map(function(handler) { if (isFunction(handler.handle) && isFunction(handler.on)) return handler throw new Error('Handlers must extend EventEmitter and expose a handle function') }, _handlers || [new Noop()]) var self = this this.handle = function(event) { R.head(handlers).handle(event) } R.times(function(i) { handlers[i].on('message', function(event) { handlers[i+1].handle(event) }) }, handlers.length - 1) R.last(handlers).on('message', function(event) { self.emit('message', event) }) EventEmitter.call(this); } util.inherits(Sequence, EventEmitter) module.exports = Sequence