1234567891011121314151617181920212223242526272829 |
- 'use strict';
- const PassThrough = require('stream').PassThrough;
- const zlib = require('zlib');
- const mimicResponse = require('mimic-response');
-
- module.exports = response => {
- // TODO: Use Array#includes when targeting Node.js 6
- if (['gzip', 'deflate'].indexOf(response.headers['content-encoding']) === -1) {
- return response;
- }
-
- const unzip = zlib.createUnzip();
- const stream = new PassThrough();
-
- mimicResponse(response, stream);
-
- unzip.on('error', err => {
- if (err.code === 'Z_BUF_ERROR') {
- stream.end();
- return;
- }
-
- stream.emit('error', err);
- });
-
- response.pipe(unzip).pipe(stream);
-
- return stream;
- };
|