kafkajs-lz4
Version:
LZ4 compression codec for the KafkaJS library
45 lines (44 loc) • 1.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lz4init = require('lz4-asm');
const lz4Module = {};
const lz4Ready = lz4init(lz4Module);
/**
* LZ4 Compression codec for the [KafkaJS](https://github.com/tulios/kafkajs) library.
*/
class LZ4Codec {
constructor(options) {
this.options = options;
/**
* KafkaJS CompressionType-compatible LZ4 codec.
* @memberof LZ4Codec
*/
this.codec = () => {
return {
compress: this.compress,
decompress: this.decompress,
};
};
}
async compress(encoder) {
return await new Promise((resolve) => {
return lz4Ready.then((lz4) => {
var _a;
const lz4js = lz4.lz4js;
const compressedBuffer = lz4js.compress(encoder.buffer, Object.assign(Object.assign({}, this.options), { frameInfo: Object.assign(Object.assign({}, (_a = this.options) === null || _a === void 0 ? void 0 : _a.frameInfo), { blockMode: 1 }) }));
return resolve(compressedBuffer);
});
});
}
async decompress(buffer) {
return await new Promise((resolve) => {
return lz4Ready.then((lz4) => {
const lz4js = lz4.lz4js;
const decompressedBuffer = lz4js.decompress(buffer);
return resolve(decompressedBuffer);
});
});
}
}
exports.default = LZ4Codec;
module.exports = LZ4Codec;