UNPKG

@mswjs/interceptors

Version:

Low-level HTTP/HTTPS/XHR/fetch request interception library.

32 lines (26 loc) 910 B
import zlib from 'node:zlib' export class BrotliDecompressionStream extends TransformStream { constructor() { const decompress = zlib.createBrotliDecompress({ flush: zlib.constants.BROTLI_OPERATION_FLUSH, finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH, }) super({ async transform(chunk, controller) { const buffer = Buffer.from(chunk) const decompressed = await new Promise<Buffer>((resolve, reject) => { decompress.write(buffer, (error) => { if (error) reject(error) }) decompress.flush() decompress.once('data', (data) => resolve(data)) decompress.once('error', (error) => reject(error)) decompress.once('end', () => controller.terminate()) }).catch((error) => { controller.error(error) }) controller.enqueue(decompressed) }, }) } }