Package-level declarations

Types

Link copied to clipboard
sealed interface BufferAllocator

Strategy for allocating buffers during compression/decompression. Allows control over memory allocation to optimize for different use cases.

Link copied to clipboard
sealed interface CompressionAlgorithm

Compression algorithm types.

Link copied to clipboard
class CompressionException(message: String, cause: Throwable? = null) : Exception

Exception thrown when compression/decompression fails.

Link copied to clipboard
sealed interface CompressionLevel

Compression level.

Link copied to clipboard
sealed interface CompressionResult

Result of compression/decompression operations.

Link copied to clipboard

Stateful streaming compressor that processes data incrementally. Useful for compressing data that arrives in chunks (e.g., from network).

Link copied to clipboard

Stateful streaming decompressor that processes data incrementally.

Link copied to clipboard

Suspending streaming compressor for async-only platforms. Browser JavaScript requires this variant since CompressionStream is async.

Link copied to clipboard

Suspending streaming decompressor for async-only platforms.

Properties

Link copied to clipboard
actual val supportsRawDeflate: Boolean = true

Whether the current platform supports raw deflate (no zlib/gzip headers).

actual val supportsRawDeflate: Boolean = true
Link copied to clipboard
actual val supportsSyncCompression: Boolean = true

Apple supports synchronous compression via system zlib.

Whether this platform supports the synchronous compress and decompress functions.

JS supports synchronous compression only in Node.js via native zlib module. Browser only has async CompressionStream API - use SuspendingStreamingCompressor instead.

actual val supportsSyncCompression: Boolean = true

JVM/Android supports synchronous compression via java.util.zip.

Functions

Link copied to clipboard
actual fun compress(buffer: ReadBuffer, algorithm: CompressionAlgorithm, level: CompressionLevel): CompressionResult

Apple implementation using system zlib with direct buffer access.

expect fun compress(buffer: ReadBuffer, algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate, level: CompressionLevel = CompressionLevel.Default): CompressionResult

Compresses data from a ReadBuffer using the specified algorithm. Reads from current position to limit.

actual fun compress(buffer: ReadBuffer, algorithm: CompressionAlgorithm, level: CompressionLevel): CompressionResult

JS implementation using native Node.js zlib. Browser throws UnsupportedOperationException - use streaming API instead.

actual fun compress(buffer: ReadBuffer, algorithm: CompressionAlgorithm, level: CompressionLevel): CompressionResult

JVM/Android implementation delegating to streaming compression.

Link copied to clipboard
suspend fun compressAsync(buffer: ReadBuffer, algorithm: CompressionAlgorithm = CompressionAlgorithm.Gzip, level: CompressionLevel = CompressionLevel.Default, zone: AllocationZone = AllocationZone.Direct): PlatformBuffer

Compresses data using the specified algorithm. Works on all platforms.

Link copied to clipboard
actual fun SuspendingStreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm, allocator: BufferAllocator): SuspendingStreamingDecompressor
actual fun SuspendingStreamingCompressor.Companion.create(algorithm: CompressionAlgorithm, level: CompressionLevel, allocator: BufferAllocator): SuspendingStreamingCompressor
actual fun StreamingCompressor.Companion.create(algorithm: CompressionAlgorithm, level: CompressionLevel, allocator: BufferAllocator, outputBufferSize: Int): StreamingCompressor

Apple streaming compressor factory using z_stream for true incremental compression.

actual fun StreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm, allocator: BufferAllocator, outputBufferSize: Int, expectedSize: Int): StreamingDecompressor

Apple streaming decompressor factory using z_stream for true incremental decompression.

expect fun SuspendingStreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate, allocator: BufferAllocator = BufferAllocator.Default): SuspendingStreamingDecompressor

Creates a suspending streaming decompressor.

expect fun SuspendingStreamingCompressor.Companion.create(algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate, level: CompressionLevel = CompressionLevel.Default, allocator: BufferAllocator = BufferAllocator.Default): SuspendingStreamingCompressor

Creates a suspending streaming compressor. Required for browser JavaScript which only supports async CompressionStream.

expect fun StreamingCompressor.Companion.create(algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate, level: CompressionLevel = CompressionLevel.Default, allocator: BufferAllocator = BufferAllocator.Default, outputBufferSize: Int = 32768): StreamingCompressor

Creates a streaming compressor.

expect fun StreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate, allocator: BufferAllocator = BufferAllocator.Default, outputBufferSize: Int = 32768, expectedSize: Int = 0): StreamingDecompressor

Creates a streaming decompressor.

actual fun SuspendingStreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm, allocator: BufferAllocator): SuspendingStreamingDecompressor

JS suspending streaming decompressor factory. Node.js: wraps sync zlib. Browser: uses native DecompressionStream API.

actual fun SuspendingStreamingCompressor.Companion.create(algorithm: CompressionAlgorithm, level: CompressionLevel, allocator: BufferAllocator): SuspendingStreamingCompressor

JS suspending streaming compressor factory. Node.js: wraps sync zlib. Browser: uses native CompressionStream API.

actual fun StreamingCompressor.Companion.create(algorithm: CompressionAlgorithm, level: CompressionLevel, allocator: BufferAllocator, outputBufferSize: Int): StreamingCompressor

JS streaming compressor factory. Node.js: uses native zlib sync APIs. Browser: throws UnsupportedOperationException (use SuspendingStreamingCompressor instead).

actual fun StreamingDecompressor.Companion.create(algorithm: CompressionAlgorithm, allocator: BufferAllocator, outputBufferSize: Int, expectedSize: Int): StreamingDecompressor

JS streaming decompressor factory. Node.js: uses native zlib sync APIs. Browser: throws UnsupportedOperationException (use SuspendingStreamingDecompressor instead).

Link copied to clipboard
actual fun decompress(buffer: ReadBuffer, algorithm: CompressionAlgorithm): CompressionResult
expect fun decompress(buffer: ReadBuffer, algorithm: CompressionAlgorithm = CompressionAlgorithm.Deflate): CompressionResult

Decompresses data from a ReadBuffer using the specified algorithm. Reads from current position to limit.

actual fun decompress(buffer: ReadBuffer, algorithm: CompressionAlgorithm): CompressionResult
actual fun decompress(buffer: ReadBuffer, algorithm: CompressionAlgorithm): CompressionResult
Link copied to clipboard
fun StreamProcessorBuilder.decompress(algorithm: CompressionAlgorithm = CompressionAlgorithm.Gzip, allocator: BufferAllocator = BufferAllocator.Default): StreamProcessorBuilder

Adds decompression to the StreamProcessor pipeline.

Link copied to clipboard
suspend fun decompressAsync(buffer: ReadBuffer, algorithm: CompressionAlgorithm = CompressionAlgorithm.Gzip, zone: AllocationZone = AllocationZone.Direct, expectedOutputSize: Int = 0): PlatformBuffer

Decompresses data using the specified algorithm. Works on all platforms.

Link copied to clipboard
fun CompressionResult.getOrNull(): PlatformBuffer?

Extension function to get buffer from CompressionResult, returning null on failure.

Link copied to clipboard
fun CompressionResult.getOrThrow(): PlatformBuffer

Extension function to get buffer from CompressionResult, throwing on failure.

Link copied to clipboard
inline suspend fun <R> SuspendingStreamingCompressor.use(block: (compress: suspend (ReadBuffer) -> List<ReadBuffer>) -> R): R

Convenience function that handles compress, finish, and close automatically. Returns all output chunks (from both compress and finish calls).

inline suspend fun <R> SuspendingStreamingDecompressor.use(block: (decompress: suspend (ReadBuffer) -> List<ReadBuffer>) -> R): R
inline fun <R> StreamingDecompressor.use(noinline onOutput: (ReadBuffer) -> Unit, block: (decompress: (ReadBuffer) -> Unit) -> R): R

Convenience function that handles decompress, finish, and close automatically.

inline fun <R> StreamingCompressor.use(noinline onOutput: (ReadBuffer) -> Unit, block: (compress: (ReadBuffer) -> Unit) -> R): R

Convenience function that handles compress, finish, and close automatically. All output chunks (from both compress and finish) go to the same callback.

Link copied to clipboard
inline suspend fun <R> StreamingCompressor.useSuspending(noinline onOutput: (ReadBuffer) -> Unit, block: suspend (compress: (ReadBuffer) -> Unit) -> R): R

Suspending version of use for use with suspending I/O. Uses the efficient synchronous compressor but allows suspend calls in the block.

inline suspend fun <R> StreamingDecompressor.useSuspending(noinline onOutput: (ReadBuffer) -> Unit, block: suspend (decompress: (ReadBuffer) -> Unit) -> R): R

Suspending version of use for use with suspending I/O.