UNPKG

814 BJavaScriptView Raw
1var pump = require('pump')
2var duplexify = require('duplexify')
3
4var pumpifier = function(duplex) {
5 return function() {
6 var streams = Array.isArray(arguments[0]) ? arguments[0] : Array.prototype.slice.call(arguments)
7 var first = streams[0]
8 var last = streams[streams.length-1]
9
10 var dup = duplex()
11
12 dup.setWritable(first.writable ? first : null)
13 dup.setReadable(last.readable ? last : null)
14
15 var onclose = function() {
16 if (!first.writable && first.destroy) first.destroy()
17 if (!last.readable && last.destroy) last.destroy()
18 }
19
20 dup.on('close', onclose)
21 pump(streams, function(err) {
22 dup.removeListener('close', onclose)
23 dup.destroy(err)
24 })
25
26 return dup
27 }
28}
29
30module.exports = pumpifier(duplexify)
31module.exports.obj = pumpifier(duplexify.obj)
\No newline at end of file