| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | 
							- /*!
 
-  * 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)
 
-   }
 
- }
 
 
  |