summaryrefslogtreecommitdiff
path: root/deps/npm/lib/utils/gunzip-maybe.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/utils/gunzip-maybe.js')
-rw-r--r--deps/npm/lib/utils/gunzip-maybe.js22
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
+}