# compress

> Compress and decompress data with gzip, zlib, lz4, and brotli. All I/O is base64.

# compress

Compress and decompress strings with gzip, zlib, lz4, or brotli. Every `compress` returns a base64 string, and every `decompress` expects that base64 string back. Import it with `import compress`.

## compress.gzip

| Function | Signature | Description |
| --- | --- | --- |
| `compress` | `compress.gzip.compress(data: string) → string` | Gzip-compress and base64-encode |
| `decompress` | `compress.gzip.decompress(data: string) → string` | Base64-decode and gzip-decompress |

## compress.zlib

| Function | Signature | Description |
| --- | --- | --- |
| `compress` | `compress.zlib.compress(data: string) → string` | Zlib-compress and base64-encode |
| `decompress` | `compress.zlib.decompress(data: string) → string` | Base64-decode and zlib-decompress |

## compress.lz4

Uses the self-describing LZ4 frame format, so decompression needs no size hint.

| Function | Signature | Description |
| --- | --- | --- |
| `compress` | `compress.lz4.compress(data: string) → string` | LZ4-compress and base64-encode |
| `decompress` | `compress.lz4.decompress(data: string) → string` | Base64-decode and LZ4-decompress |

## compress.brotli

| Function | Signature | Description |
| --- | --- | --- |
| `compress` | `compress.brotli.compress(data: string) → string` | Brotli-compress and base64-encode |
| `decompress` | `compress.brotli.decompress(data: string) → string` | Base64-decode and brotli-decompress |

## Top-level helpers

Backward-compatible shortcuts for gzip and zlib.

| Function | Signature | Description |
| --- | --- | --- |
| `gzip_compress` | `compress.gzip_compress(data: string) → string` | Same as `compress.gzip.compress` |
| `gunzip` | `compress.gunzip(data: string) → string` | Same as `compress.gzip.decompress` |
| `zlib_compress` | `compress.zlib_compress(data: string) → string` | Same as `compress.zlib.compress` |
| `unzlib` | `compress.unzlib(data: string) → string` | Same as `compress.zlib.decompress` |

## Example

```goost
import compress

let original = "the quick brown fox jumps over the lazy dog"

// gzip round-trip via base64
let packed = compress.gzip.compress(original)
print(compress.gzip.decompress(packed))   // the quick brown fox...

// other algorithms share the same shape
let br = compress.brotli.compress(original)
print(compress.brotli.decompress(br) == original)   // true
```