UNPKG

@versatiles/server

Version:
66 lines (65 loc) 1.94 kB
import zlib from 'zlib'; /** * Compresses data using Gzip with maximum compression level. * @param dataIn - The input data as a Buffer to be compressed. * @returns A Promise that resolves to the Gzip-compressed Buffer. */ export async function gzip(dataIn) { return new Promise((res, rej) => { zlib.gzip(dataIn, { level: 9 }, (err, dataOut) => { if (err) { rej(err); return; } res(dataOut); }); }); } /** * Decompresses Gzip-compressed data. * @param dataIn - The Gzip-compressed data as a Buffer to be decompressed. * @returns A Promise that resolves to the decompressed Buffer. */ export async function ungzip(dataIn) { return new Promise((res, rej) => { zlib.gunzip(dataIn, (err, dataOut) => { if (err) { rej(err); return; } res(dataOut); }); }); } /** * Compresses data using Brotli with maximum quality parameter. * @param dataIn - The input data as a Buffer to be compressed. * @returns A Promise that resolves to the Brotli-compressed Buffer. */ export async function brotli(dataIn) { return new Promise((res, rej) => { zlib.brotliCompress(dataIn, { params: { [zlib.constants.BROTLI_PARAM_QUALITY]: 11 } }, (err, dataOut) => { if (err) { rej(err); return; } res(dataOut); }); }); } /** * Decompresses Brotli-compressed data. * @param dataIn - The Brotli-compressed data as a Buffer to be decompressed. * @returns A Promise that resolves to the decompressed Buffer. */ export async function unbrotli(dataIn) { return new Promise((res, rej) => { zlib.brotliDecompress(dataIn, (err, dataOut) => { if (err) { rej(err); return; } res(dataOut); }); }); }