28 lines
		
	
	
		
			753 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			28 lines
		
	
	
		
			753 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | function inheritEvents(source, target, events) { | ||
|  |   const listeners = {}; | ||
|  |   target | ||
|  |     .on('newListener', (eventName) => { | ||
|  |       if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) { | ||
|  |         source.on( | ||
|  |           eventName, | ||
|  |           (listeners[eventName] = function () { | ||
|  |             const args = [].slice.call(arguments); | ||
|  |             args.unshift(eventName); | ||
|  | 
 | ||
|  |             target.emit.apply(target, args); | ||
|  |           }) | ||
|  |         ); | ||
|  |       } | ||
|  |     }) | ||
|  |     .on('removeListener', (eventName) => { | ||
|  |       if (events.indexOf(eventName) >= 0 && !target.listenerCount(eventName)) { | ||
|  |         source.removeListener(eventName, listeners[eventName]); | ||
|  |         delete listeners[eventName]; | ||
|  |       } | ||
|  |     }); | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = inheritEvents; |