UNPKG

gzipper

Version:

CLI for compressing files.

69 lines 4.72 kB
import zlib from 'node:zlib'; import { Compression } from './Compression.js'; import { CompressionExtensions, CompressionNames } from '../enums.js'; /** * Brotli compression */ export class BrotliCompression extends Compression { compressionName = CompressionNames.BROTLI; ext = CompressionExtensions.BROTLI; /** * Returns brotli compression instance in closure. */ getCompression() { return zlib.createBrotliCompress({ params: this.compressionOptions, }); } /** * Returns human-readable brotli compression options info. */ readableOptions() { return super.readableOptions(this.getBrotliOptionName.bind(this)); } /** * Build brotli options object [compressionOptions]. */ selectCompression() { const options = {}; if (this.options.brotliParamMode !== undefined) { switch (this.options.brotliParamMode) { case 'text': options[zlib.constants.BROTLI_PARAM_MODE] = zlib.constants.BROTLI_MODE_TEXT; break; case 'font': options[zlib.constants.BROTLI_PARAM_MODE] = zlib.constants.BROTLI_MODE_FONT; break; case 'default': default: options[zlib.constants.BROTLI_PARAM_MODE] = zlib.constants.BROTLI_MODE_GENERIC; break; } } if (this.options.brotliQuality !== undefined) { options[zlib.constants.BROTLI_PARAM_QUALITY] = this.options.brotliQuality; } if (this.options.brotliSizeHint !== undefined) { options[zlib.constants.BROTLI_PARAM_SIZE_HINT] = this.options.brotliSizeHint; } this.compressionOptions = options; } /** * Returns human-readable brotli option name. */ getBrotliOptionName(index) { switch (parseInt(index)) { case zlib.constants.BROTLI_PARAM_MODE: return 'paramMode'; case zlib.constants.BROTLI_PARAM_QUALITY: return 'quality'; case zlib.constants.BROTLI_PARAM_SIZE_HINT: return 'sizeHint'; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQnJvdGxpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXByZXNzaW9ucy9Ccm90bGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFDO0FBRTdCLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUvQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsV0FBMEI7SUFDdEQsZUFBZSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztJQUMxQyxHQUFHLEdBQUcscUJBQXFCLENBQUMsTUFBTSxDQUFDO0lBRTVDOztPQUVHO0lBQ0gsY0FBYztRQUNaLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsa0JBQWtCO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILGVBQWU7UUFDYixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQjtRQUN6QixNQUFNLE9BQU8sR0FBa0IsRUFBRSxDQUFDO1FBRWxDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDL0MsUUFBUSxJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyxLQUFLLE1BQU07b0JBQ1QsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUM7d0JBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7b0JBQ2xDLE1BQU07Z0JBRVIsS0FBSyxNQUFNO29CQUNULE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO29CQUNsQyxNQUFNO2dCQUVSLEtBQUssU0FBUyxDQUFDO2dCQUNmO29CQUNFLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGlCQUFpQixDQUFDO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLG1CQUFtQixDQUFDO29CQUNyQyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzdDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDNUUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNPLG1CQUFtQixDQUFDLEtBQWE7UUFDekMsUUFBUSxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN4QixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsaUJBQWlCO2dCQUNuQyxPQUFPLFdBQVcsQ0FBQztZQUVyQixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsb0JBQW9CO2dCQUN0QyxPQUFPLFNBQVMsQ0FBQztZQUVuQixLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsc0JBQXNCO2dCQUN4QyxPQUFPLFVBQVUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztDQUNGIn0=