'use strict'; const decompressResponse = require('decompress-response'); const is = require('@sindresorhus/is'); const mimicResponse = require('mimic-response'); const progress = require('./progress'); module.exports = (response, options, emitter) => { const downloadBodySize = Number(response.headers['content-length']) || null; const progressStream = progress.download(response, emitter, downloadBodySize); mimicResponse(response, progressStream); const newResponse = options.decompress === true && is.function(decompressResponse) && options.method !== 'HEAD' ? decompressResponse(progressStream) : progressStream; if (!options.decompress && ['gzip', 'deflate'].includes(response.headers['content-encoding'])) { options.encoding = null; } emitter.emit('response', newResponse); emitter.emit('downloadProgress', { percent: 0, transferred: 0, total: downloadBodySize }); response.pipe(progressStream); };