gzipper
Version:
CLI for compressing files.
69 lines • 4.72 kB
JavaScript
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=