1 | var pump = require('pump')
|
2 | var duplexify = require('duplexify')
|
3 |
|
4 | var 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 |
|
30 | module.exports = pumpifier(duplexify)
|
31 | module.exports.obj = pumpifier(duplexify.obj) |
\ | No newline at end of file |