/** * Browser compression utilities * * Supports multiple formats: * - deflate-raw: Raw DEFLATE (for ZIP files) * - gzip: GZIP format (for tar.gz, HTTP compression) * * Primary: CompressionStream API (Chrome 103+, Firefox 113+, Safari 16.4+) * Fallback: Pure JS DEFLATE implementation for older browsers * * Worker Pool: Optional off-main-thread compression/decompression * to prevent UI blocking for large files. */ import { type CompressOptions, hasCompressionStream, GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATE, GZIP_MIN_SIZE, hasGzipCompressionStream, hasGzipDecompressionStream, ZLIB_CM_DEFLATE, ZLIB_CINFO_MAX, ZLIB_MIN_SIZE, isZlibData, detectCompressionFormat, hasDeflateCompressionStream, hasDeflateDecompressionStream } from "./compress.base.js"; import { hasWorkerSupport } from "./worker-pool/index.browser.js"; export { type CompressOptions }; export { hasCompressionStream, hasWorkerSupport, GZIP_ID1, GZIP_ID2, GZIP_CM_DEFLATE, GZIP_MIN_SIZE, hasGzipCompressionStream, hasGzipDecompressionStream, ZLIB_CM_DEFLATE, ZLIB_CINFO_MAX, ZLIB_MIN_SIZE, isZlibData, detectCompressionFormat, hasDeflateCompressionStream, hasDeflateDecompressionStream }; export { isGzipData } from "./compress.base.js"; /** * Default threshold (1MB) above which compression automatically uses workers. * Set to 0 to disable auto-worker, or Infinity to always use main thread. */ declare const DEFAULT_AUTO_WORKER_THRESHOLD: number; export { DEFAULT_AUTO_WORKER_THRESHOLD }; /** * Compress data using browser's native CompressionStream or JS fallback */ export declare function compress(data: Uint8Array, options?: CompressOptions): Promise; /** * Compress data synchronously using pure JS implementation */ export declare function compressSync(data: Uint8Array, options?: CompressOptions): Uint8Array; /** * Decompress data using browser's native DecompressionStream or JS fallback */ export declare function decompress(data: Uint8Array, options?: CompressOptions): Promise; /** * Decompress data synchronously using pure JS implementation */ export declare function decompressSync(data: Uint8Array): Uint8Array; /** * Gzip-compress data in the browser. * * Strategy: * 1. Native CompressionStream("gzip") when available * 2. Fallback: compress (deflate-raw) + manual GZIP wrapper * - Inherits Worker Pool support from compress() for large files */ export declare function gzip(data: Uint8Array, options?: CompressOptions): Promise; /** * Gzip-compress data synchronously using the JS fallback. */ export declare function gzipSync(data: Uint8Array, options?: CompressOptions): Uint8Array; /** * Gunzip data in the browser. * * Strategy: * 1. Native DecompressionStream("gzip") when available * 2. Fallback: parse header + decompress (inflate-raw) + verify CRC32 * - Inherits Worker Pool support from decompress() for large files */ export declare function gunzip(data: Uint8Array, options?: CompressOptions): Promise; /** * Gunzip data synchronously using the JS fallback. */ export declare function gunzipSync(data: Uint8Array): Uint8Array; /** * Compress data with Zlib wrapper (RFC 1950) * * Strategy: * 1. Native CompressionStream("deflate") when available * 2. Fallback: compress (deflate-raw) + manual Zlib wrapper */ export declare function zlib(data: Uint8Array, options?: CompressOptions): Promise; /** * Compress data with Zlib wrapper (sync) */ export declare function zlibSync(data: Uint8Array, options?: CompressOptions): Uint8Array; /** * Decompress Zlib data (RFC 1950) * * Strategy: * 1. Native DecompressionStream("deflate") when available * 2. Fallback: parse header + decompress (inflate-raw) + verify Adler-32 */ export declare function unzlib(data: Uint8Array, options?: CompressOptions): Promise; /** * Decompress Zlib data (sync) */ export declare function unzlibSync(data: Uint8Array): Uint8Array; /** * Decompress data, automatically detecting the format (GZIP, Zlib, or raw DEFLATE) * * Detection order: * 1. GZIP: magic bytes 0x1f 0x8b * 2. Zlib: valid CMF/FLG header with checksum * 3. Raw DEFLATE: fallback * * @example * ```ts * // Works with any format * const data = await decompressAuto(compressed); * ``` */ export declare function decompressAuto(data: Uint8Array, options?: CompressOptions): Promise; /** * Decompress data synchronously, automatically detecting the format */ export declare function decompressAutoSync(data: Uint8Array): Uint8Array;