index.js 844 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. var zlib = require('zlib')
  2. module.exports = inflate
  3. function inflate(stream, options) {
  4. if (!stream) {
  5. throw new TypeError('argument stream is required')
  6. }
  7. options = options || {}
  8. var encoding = options.encoding
  9. || (stream.headers && stream.headers['content-encoding'])
  10. || 'identity'
  11. var decompression
  12. switch (encoding) {
  13. case 'gzip':
  14. case 'deflate':
  15. delete options.brotli
  16. delete options.encoding
  17. decompression = zlib.createUnzip(options)
  18. break
  19. case 'br':
  20. if (zlib.createBrotliDecompress) {
  21. decompression = zlib.createBrotliDecompress(options.brotli)
  22. }
  23. break
  24. case 'identity':
  25. return stream
  26. }
  27. if (!decompression) {
  28. var err = new Error('Unsupported Content-Encoding: ' + encoding)
  29. err.status = 415
  30. throw err
  31. }
  32. return stream.pipe(decompression)
  33. }