You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							69 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							69 lines
						
					
					
						
							1.1 KiB
						
					
					
				/*! | 
						|
 * unpipe | 
						|
 * Copyright(c) 2015 Douglas Christopher Wilson | 
						|
 * MIT Licensed | 
						|
 */ | 
						|
 | 
						|
'use strict' | 
						|
 | 
						|
/** | 
						|
 * Module exports. | 
						|
 * @public | 
						|
 */ | 
						|
 | 
						|
module.exports = unpipe | 
						|
 | 
						|
/** | 
						|
 * Determine if there are Node.js pipe-like data listeners. | 
						|
 * @private | 
						|
 */ | 
						|
 | 
						|
function hasPipeDataListeners(stream) { | 
						|
  var listeners = stream.listeners('data') | 
						|
 | 
						|
  for (var i = 0; i < listeners.length; i++) { | 
						|
    if (listeners[i].name === 'ondata') { | 
						|
      return true | 
						|
    } | 
						|
  } | 
						|
 | 
						|
  return false | 
						|
} | 
						|
 | 
						|
/** | 
						|
 * Unpipe a stream from all destinations. | 
						|
 * | 
						|
 * @param {object} stream | 
						|
 * @public | 
						|
 */ | 
						|
 | 
						|
function unpipe(stream) { | 
						|
  if (!stream) { | 
						|
    throw new TypeError('argument stream is required') | 
						|
  } | 
						|
 | 
						|
  if (typeof stream.unpipe === 'function') { | 
						|
    // new-style | 
						|
    stream.unpipe() | 
						|
    return | 
						|
  } | 
						|
 | 
						|
  // Node.js 0.8 hack | 
						|
  if (!hasPipeDataListeners(stream)) { | 
						|
    return | 
						|
  } | 
						|
 | 
						|
  var listener | 
						|
  var listeners = stream.listeners('close') | 
						|
 | 
						|
  for (var i = 0; i < listeners.length; i++) { | 
						|
    listener = listeners[i] | 
						|
 | 
						|
    if (listener.name !== 'cleanup' && listener.name !== 'onclose') { | 
						|
      continue | 
						|
    } | 
						|
 | 
						|
    // invoke the listener | 
						|
    listener.call(stream) | 
						|
  } | 
						|
}
 | 
						|
 |