--- a/third_party/devtools-frontend/src/scripts/build/compress_files.js 2022-12-07 18:53:39.853144467 +0000 +++ b/third_party/devtools-frontend/src/scripts/build/compress_files.js 2022-12-07 19:03:53.651224886 +0000 @@ -6,6 +6,7 @@ const fs = require('fs'); const crypto = require('crypto'); const zlib = require('zlib'); const {pipeline, Readable} = require('stream'); +const { spawn, spawnSync } = require("child_process"); const {promises: pfs} = fs; @@ -29,7 +30,7 @@ async function readBinaryFile(filename) return pfs.readFile(filename); } -async function brotli(sourceData, compressedFilename) { +async function brotli(sourceFilename, sourceData, compressedFilename) { const sizeBytes = sourceData.length; // This replicates the following compression logic: @@ -51,11 +52,14 @@ async function brotli(sourceData, compre const output = fs.createWriteStream(compressedFilename); output.write(Buffer.from(brotliConst)); output.write(Buffer.from(sizeHeader)); - return new Promise((resolve, reject) => { - pipeline(Readable.from(sourceData), zlib.createBrotliCompress(), output, err => { - return err ? reject(err) : resolve(); - }); - }); + + const result = spawnSync("/bin/brotli", ["-q", "11", "-w", "22", "-c", sourceFilename]); + if (result.status != 0) + { + throw result.stderr.toString(); + } + output.write(result.stdout); + output.close(); } async function compressFile(filename) { @@ -66,7 +70,7 @@ async function compressFile(filename) { const currHash = sha1(sourceData); if (prevHash !== currHash) { await writeTextFile(hashFilename, currHash); - await brotli(sourceData, compressedFilename); + await brotli(filename, sourceData, compressedFilename); } }