| 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 |
| } |