diff options
Diffstat (limited to 'deps/npm/lib/utils/gunzip-maybe.js')
-rw-r--r-- | deps/npm/lib/utils/gunzip-maybe.js | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/deps/npm/lib/utils/gunzip-maybe.js b/deps/npm/lib/utils/gunzip-maybe.js new file mode 100644 index 0000000000..db75f06017 --- /dev/null +++ b/deps/npm/lib/utils/gunzip-maybe.js @@ -0,0 +1,22 @@ +var duplex = require('mississippi').duplex +var through = require('mississippi').through +var zlib = require('zlib') + +function hasGzipHeader (c) { + return c[0] === 0x1F && c[1] === 0x8B && c[2] === 0x08 +} + +module.exports = gunzip +function gunzip () { + var stream = duplex() + var peeker = through(function (chunk, enc, cb) { + var newStream = hasGzipHeader(chunk) + ? zlib.createGunzip() + : through() + stream.setReadable(newStream) + stream.setWritable(newStream) + stream.write(chunk) + }) + stream.setWritable(peeker) + return stream +} |