-module(packkit@codec). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/packkit/codec.gleam"). -export([identity/0, lz4/0, snappy/0, lzw/0, dictionary/1, dictionary_bytes/1, with_level/2, clear_level/1, with_dictionary/2, clear_dictionary/1, kind/1, name/1, level/1, gzip/0, zlib/0, deflate/0, bzip2/0, xz/0, brotli/0, zstd/0, dictionary_of/1, has_dictionary/1]). -export_type([codec_kind/0, dictionary/0, codec/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type codec_kind() :: identity | deflate | zlib | gzip | lz4 | snappy | bzip2 | lzw | xz | zstd | brotli. -opaque dictionary() :: {dictionary, bitstring()}. -opaque codec() :: {codec, codec_kind(), gleam@option:option(packkit@level:level()), gleam@option:option(dictionary())}. -file("src/packkit/codec.gleam", 36). ?DOC(" No-op codec useful for testing and raw recipe assembly.\n"). -spec identity() -> codec(). identity() -> {codec, identity, none, none}. -file("src/packkit/codec.gleam", 56). ?DOC(" LZ4 frame format.\n"). -spec lz4() -> codec(). lz4() -> {codec, lz4, none, none}. -file("src/packkit/codec.gleam", 61). ?DOC(" Snappy framed format.\n"). -spec snappy() -> codec(). snappy() -> {codec, snappy, none, none}. -file("src/packkit/codec.gleam", 88). ?DOC(" Unix LZW `.Z` stream.\n"). -spec lzw() -> codec(). lzw() -> {codec, lzw, none, none}. -file("src/packkit/codec.gleam", 93). ?DOC(" Build a dictionary value from raw bytes.\n"). -spec dictionary(bitstring()) -> dictionary(). dictionary(Bytes) -> {dictionary, Bytes}. -file("src/packkit/codec.gleam", 98). ?DOC(" Access the raw bytes stored in a dictionary.\n"). -spec dictionary_bytes(dictionary()) -> bitstring(). dictionary_bytes(Dict) -> erlang:element(2, Dict). -file("src/packkit/codec.gleam", 103). ?DOC(" Override the codec's compression level.\n"). -spec with_level(codec(), packkit@level:level()) -> codec(). with_level(Codec, Level) -> {codec, erlang:element(2, Codec), {some, Level}, erlang:element(4, Codec)}. -file("src/packkit/codec.gleam", 108). ?DOC(" Remove any explicit level override.\n"). -spec clear_level(codec()) -> codec(). clear_level(Codec) -> {codec, erlang:element(2, Codec), none, erlang:element(4, Codec)}. -file("src/packkit/codec.gleam", 113). ?DOC(" Attach a preset dictionary.\n"). -spec with_dictionary(codec(), dictionary()) -> codec(). with_dictionary(Codec, Dictionary) -> {codec, erlang:element(2, Codec), erlang:element(3, Codec), {some, Dictionary}}. -file("src/packkit/codec.gleam", 118). ?DOC(" Remove any preset dictionary.\n"). -spec clear_dictionary(codec()) -> codec(). clear_dictionary(Codec) -> {codec, erlang:element(2, Codec), erlang:element(3, Codec), none}. -file("src/packkit/codec.gleam", 123). ?DOC(" Internal tagged kind for the codec family.\n"). -spec kind(codec()) -> codec_kind(). kind(Codec) -> erlang:element(2, Codec). -file("src/packkit/codec.gleam", 129). ?DOC( " Codec family name. Kept for diagnostics and `description` output;\n" " internal dispatch uses [kind].\n" ). -spec name(codec()) -> binary(). name(Codec) -> case erlang:element(2, Codec) of identity -> <<"identity"/utf8>>; deflate -> <<"deflate"/utf8>>; zlib -> <<"zlib"/utf8>>; gzip -> <<"gzip"/utf8>>; lz4 -> <<"lz4"/utf8>>; snappy -> <<"snappy"/utf8>>; bzip2 -> <<"bzip2"/utf8>>; lzw -> <<"lzw"/utf8>>; xz -> <<"xz"/utf8>>; zstd -> <<"zstd"/utf8>>; brotli -> <<"brotli"/utf8>> end. -file("src/packkit/codec.gleam", 146). ?DOC(" Optional level override.\n"). -spec level(codec()) -> gleam@option:option(packkit@level:level()). level(Codec) -> erlang:element(3, Codec). -file("src/packkit/codec.gleam", 41). ?DOC(" Gzip wrapper over deflate.\n"). -spec gzip() -> codec(). gzip() -> {codec, gzip, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 46). ?DOC(" Zlib wrapper over deflate.\n"). -spec zlib() -> codec(). zlib() -> {codec, zlib, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 51). ?DOC(" Raw deflate stream.\n"). -spec deflate() -> codec(). deflate() -> {codec, deflate, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 68). ?DOC( " BZip2 stream. Defaults to level 9 (900 KiB block size) to match\n" " the canonical `bzip2` default and the level `bzip2.encode` uses\n" " when no level is supplied explicitly.\n" ). -spec bzip2() -> codec(). bzip2() -> {codec, bzip2, {some, packkit@level:custom(9)}, none}. -file("src/packkit/codec.gleam", 73). ?DOC(" XZ stream.\n"). -spec xz() -> codec(). xz() -> {codec, xz, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 78). ?DOC(" Brotli stream.\n"). -spec brotli() -> codec(). brotli() -> {codec, brotli, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 83). ?DOC(" Zstandard stream.\n"). -spec zstd() -> codec(). zstd() -> {codec, zstd, {some, packkit@level:default()}, none}. -file("src/packkit/codec.gleam", 151). ?DOC(" Optional dictionary.\n"). -spec dictionary_of(codec()) -> gleam@option:option(dictionary()). dictionary_of(Codec) -> erlang:element(4, Codec). -file("src/packkit/codec.gleam", 156). ?DOC(" `True` when a codec carries a preset dictionary.\n"). -spec has_dictionary(codec()) -> boolean(). has_dictionary(Codec) -> case erlang:element(4, Codec) of {some, _} -> true; none -> false end.