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