Current section
Files
Jump to
Current section
Files
src/gossamer/decompression_stream.gleam
import gossamer/compression_format.{type CompressionFormat}
import gossamer/readable_stream.{type ReadableStream}
import gossamer/uint8_array.{type Uint8Array}
import gossamer/writable_stream.{type WritableStream}
/// An API for decompressing a stream of data.
///
/// ## Examples
///
/// ```gleam
/// let assert Ok(input) = deno.open_sync("./file.txt.gz", [open.Read])
/// let assert Ok(output) = deno.create_sync("./file.txt")
/// let assert Ok(decompressor) = decompression_stream.new(compression_format.Gzip)
///
/// fs_file.readable(input)
/// |> readable_stream.pipe_through(
/// #(
/// decompression_stream.readable(decompressor),
/// decompression_stream.writable(decompressor),
/// ),
/// [],
/// )
/// |> readable_stream.pipe_to(fs_file.writable(output), [])
/// ```
///
@external(javascript, "./decompression_stream.type.ts", "DecompressionStream$")
pub type DecompressionStream
/// Returns an error if the format is not supported.
///
@external(javascript, "./decompression_stream.ffi.mjs", "new_")
pub fn new(format: CompressionFormat) -> Result(DecompressionStream, String)
@external(javascript, "./decompression_stream.ffi.mjs", "readable")
pub fn readable(stream: DecompressionStream) -> ReadableStream(Uint8Array)
@external(javascript, "./decompression_stream.ffi.mjs", "writable")
pub fn writable(stream: DecompressionStream) -> WritableStream(Uint8Array)