-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.js
More file actions
41 lines (33 loc) · 844 Bytes
/
index.js
File metadata and controls
41 lines (33 loc) · 844 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var zlib = require('zlib')
module.exports = inflate
function inflate(stream, options) {
if (!stream) {
throw new TypeError('argument stream is required')
}
options = options || {}
var encoding = options.encoding
|| (stream.headers && stream.headers['content-encoding'])
|| 'identity'
var decompression
switch (encoding) {
case 'gzip':
case 'deflate':
delete options.brotli
delete options.encoding
decompression = zlib.createUnzip(options)
break
case 'br':
if (zlib.createBrotliDecompress) {
decompression = zlib.createBrotliDecompress(options.brotli)
}
break
case 'identity':
return stream
}
if (!decompression) {
var err = new Error('Unsupported Content-Encoding: ' + encoding)
err.status = 415
throw err
}
return stream.pipe(decompression)
}