| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- var pump = require('pump')
 
- var inherits = require('inherits')
 
- var Duplexify = require('duplexify')
 
- var toArray = function(args) {
 
-   if (!args.length) return []
 
-   return Array.isArray(args[0]) ? args[0] : Array.prototype.slice.call(args)
 
- }
 
- var define = function(opts) {
 
-   var Pumpify = function() {
 
-     var streams = toArray(arguments)
 
-     if (!(this instanceof Pumpify)) return new Pumpify(streams)
 
-     Duplexify.call(this, null, null, opts)
 
-     if (streams.length) this.setPipeline(streams)
 
-   }
 
-   inherits(Pumpify, Duplexify)
 
-   Pumpify.prototype.setPipeline = function() {
 
-     var streams = toArray(arguments)
 
-     var self = this
 
-     var ended = false
 
-     var w = streams[0]
 
-     var r = streams[streams.length-1]
 
-     r = r.readable ? r : null
 
-     w = w.writable ? w : null
 
-     var onclose = function() {
 
-       streams[0].emit('error', new Error('stream was destroyed'))
 
-     }
 
-     this.on('close', onclose)
 
-     this.on('prefinish', function() {
 
-       if (!ended) self.cork()
 
-     })
 
-     pump(streams, function(err) {
 
-       self.removeListener('close', onclose)
 
-       if (err) return self.destroy(err.message === 'premature close' ? null : err)
 
-       ended = true
 
-       // pump ends after the last stream is not writable *but*
 
-       // pumpify still forwards the readable part so we need to catch errors
 
-       // still, so reenable autoDestroy in this case
 
-       if (self._autoDestroy === false) self._autoDestroy = true
 
-       self.uncork()
 
-     })
 
-     if (this.destroyed) return onclose()
 
-     this.setWritable(w)
 
-     this.setReadable(r)
 
-   }
 
-   return Pumpify
 
- }
 
- module.exports = define({autoDestroy:false, destroy:false})
 
- module.exports.obj = define({autoDestroy: false, destroy:false, objectMode:true, highWaterMark:16})
 
- module.exports.ctor = define
 
 
  |