| 12345678910111213141516171819202122232425262728293031323334353637383940 | 'use strict';const {PassThrough: PassThroughStream} = require('stream');const zlib = require('zlib');const mimicResponse = require('mimic-response');const decompressResponse = response => {	const contentEncoding = (response.headers['content-encoding'] || '').toLowerCase();	if (!['gzip', 'deflate', 'br'].includes(contentEncoding)) {		return response;	}	const isBrotli = contentEncoding === 'br';	if (isBrotli && typeof zlib.createBrotliDecompress !== 'function') {		return response;	}	const decompress = isBrotli ? zlib.createBrotliDecompress() : zlib.createUnzip();	const stream = new PassThroughStream();	mimicResponse(response, stream);	decompress.on('error', error => {		// Ignore empty response		if (error.code === 'Z_BUF_ERROR') {			stream.end();			return;		}		stream.emit('error', error);	});	response.pipe(decompress).pipe(stream);	return stream;};module.exports = decompressResponse;// TODO: remove this in the next major versionmodule.exports.default = decompressResponse;
 |