@dvsa/appdev-api-common
Version:
Utils library for common API functionality
31 lines (30 loc) • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DataCompression = void 0;
const node_zlib_1 = require("node:zlib");
// biome-ignore lint/complexity/noStaticOnlyClass: Valid use case for a static class
class DataCompression {
/**
* Extracts a compressed (in base64) string using gunzip into a JSON object
* @template T
* @param {string} compressedData
* @returns {T}
*/
static decompress(compressedData) {
const gzippedBytes = Buffer.from(compressedData, "base64");
const unzippedJson = (0, node_zlib_1.gunzipSync)(gzippedBytes).toString();
return JSON.parse(unzippedJson);
}
/**
* Compresses (with gzip) a JSON object into a base64 string
* @template T
* @param {T} data
* @returns {string}
*/
static compress(data) {
const jsonString = JSON.stringify(data);
const gzippedData = (0, node_zlib_1.gzipSync)(Buffer.from(jsonString));
return gzippedData.toString("base64");
}
}
exports.DataCompression = DataCompression;