import * as plugins from './plugins.js'; import type { TCompressionLevel } from './interfaces.js'; /** * GZIP compression and decompression utilities (browser-compatible) */ export class GzipTools { /** * Compress data synchronously */ public compressSync(data: Uint8Array, level?: TCompressionLevel): Uint8Array { const options = level !== undefined ? { level } : undefined; return plugins.fflate.gzipSync(data, options); } /** * Decompress data synchronously */ public decompressSync(data: Uint8Array): Uint8Array { return plugins.fflate.gunzipSync(data); } /** * Compress data asynchronously * Note: Uses sync version for Deno compatibility (fflate async uses Web Workers * which have issues in Deno) */ public async compress(data: Uint8Array, level?: TCompressionLevel): Promise { // Use sync version wrapped in Promise for cross-runtime compatibility return this.compressSync(data, level); } /** * Decompress data asynchronously * Note: Uses sync version for Deno compatibility (fflate async uses Web Workers * which have issues in Deno) */ public async decompress(data: Uint8Array): Promise { // Use sync version wrapped in Promise for cross-runtime compatibility return this.decompressSync(data); } }