0

I am trying to Decompress and then Compress a Resource received , here from node fetch. As the script is brotly Compressed , i want to Decompress do some modification and Compress again but doing both DeCompress and Compress in pipe takes too long.

let fetch = require('node-fetch');
const {createBrotliCompress, createBrotliDecompress, brotliDecompress} = require('zlib');
(async () => {
    console.log('Checking compression');
    let url = 'https://www.youtube.com/s/desktop/25bf5aae/jsbin/desktop_polymer.vflset/desktop_polymer.js';
    let resp = await fetch(url, {
        method: "GET", headers: {
            "Accept-Encoding": "gzip, deflate, br"
        }, redirect: 'manual', response: 'stream', compress: false, credentials: true
    });
    let deComp = createBrotliDecompress({
        chunkSize: 16 * 1024
    });
    let comp = createBrotliCompress({
        chunkSize: 16 * 1024
    });
    // for await (const chunk of resp.body) {
    //     console.log(chunk.toString());
    // }
    // return;

    let i = 0;
    console.log('Status', resp.status);
    resp.body.pipe(deComp).pipe(comp);
    console.log('Pipe Start');
    deComp.on('data', function (data) {
        if (i++ === 0) {
            console.log(`DE-C Chunk ${i++}: ${data.length}`);
            // console.time('Got First Chunk');
            console.time('Decompression end');
        }
        console.log(`DE-C Chunk ${i++}: ${data.length}`);
    }).on("end", function () {
        console.timeEnd('Decompression end');
    }).on("error", function (e) {
        console.log(e)
    });

    let j = 0;
    comp.on('data', function (data) {
        if (j++ === 0) {
            console.log(`Chunk ${j++}: ${data.length}`);
            // console.time('Got First Chunk');
            console.time('Compression end');
        }
        console.log(`DC Chunk ${i++}: ${data.length}`);
    }).on("end", function () {
        console.timeEnd('Compression end');
    }).on("error", function (e) {
        console.log(e)
    });

})()

Here the Entire Decompression and Compression takes 12 Sec , it should not take that much time

I am expecting it to be completed in less than 1.5 sec as the file Compressed is 1.6 MB and UnCompressed is 9.8 Mb

0 Answers0