UNPKG

hypershield

Version:

Middleware suite for high-performance and resilient APIs

44 lines 2.09 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.GzipCompressor = void 0; const zlib_1 = require("zlib"); const util_1 = require("util"); const constants_1 = require("../../../core/constants/constants"); const gzipAsync = (0, util_1.promisify)(zlib_1.gzip); const gunzipAsync = (0, util_1.promisify)(zlib_1.gunzip); class GzipCompressor { constructor(level = constants_1.COMPRESSION.GZIP.DEFAULT_LEVEL) { this.level = Math.min(Math.max(level, constants_1.COMPRESSION.GZIP.MIN_LEVEL), constants_1.COMPRESSION.GZIP.MAX_LEVEL); } compress(data) { return __awaiter(this, void 0, void 0, function* () { if (!data || (typeof data === 'string' && !data.length)) { throw new Error('Invalid input: empty data'); } try { const input = Buffer.isBuffer(data) ? data : Buffer.from(data); return yield gzipAsync(input, { level: this.level }); } catch (error) { console.error(`Compression error: ${error}`); throw new Error(`Failed to compress data: ${error}`); } }); } decompress(data) { return __awaiter(this, void 0, void 0, function* () { return gunzipAsync(data); }); } } exports.GzipCompressor = GzipCompressor; //# sourceMappingURL=gzipCompressor.js.map