15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
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
'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);
};