blob: 908d336c00d98227b8e4cf97856fc46684901f5d [file] [log] [blame]
module.exports = reemit
module.exports.filter = filter
var EventEmitter = require('events').EventEmitter
function reemit (source, target, events) {
if (!Array.isArray(events)) events = [ events ]
var listeners = []
events.forEach(function (event) {
var listener = function () {
var args = [].slice.call(arguments)
args.unshift(event)
target.emit.apply(target, args)
}
listeners.push(listener)
source.on(event, listener)
})
return function cancel () {
events.forEach(function (event, i) {
source.removeListener(event, listeners[i])
})
}
}
function filter (source, events) {
var emitter = new EventEmitter()
reemit(source, emitter, events)
return emitter
}