-module(packkit@level). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/packkit/level.gleam"). -export([store/0, fast/0, default/0, balanced/0, best/0, custom_checked/1, custom/1, value/1, label/1]). -export_type([level/0, level_error/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. -opaque level() :: {level, integer(), binary()}. -type level_error() :: {level_out_of_range, integer()}. -file("src/packkit/level.gleam", 16). ?DOC(" Zero-compression / store mode.\n"). -spec store() -> level(). store() -> {level, 0, <<"store"/utf8>>}. -file("src/packkit/level.gleam", 21). ?DOC(" Fastest practical compression setting.\n"). -spec fast() -> level(). fast() -> {level, 1, <<"fast"/utf8>>}. -file("src/packkit/level.gleam", 26). ?DOC(" Project-default balanced setting.\n"). -spec default() -> level(). default() -> {level, 6, <<"default"/utf8>>}. -file("src/packkit/level.gleam", 31). ?DOC(" Human-friendly balanced alias.\n"). -spec balanced() -> level(). balanced() -> default(). -file("src/packkit/level.gleam", 36). ?DOC(" Highest generic compression setting.\n"). -spec best() -> level(). best() -> {level, 9, <<"best"/utf8>>}. -file("src/packkit/level.gleam", 42). ?DOC( " Build a custom level or return a typed error when it falls outside\n" " the current generic range of `0..9`.\n" ). -spec custom_checked(integer()) -> {ok, level()} | {error, level_error()}. custom_checked(Value) -> gleam@bool:guard( (Value < 0) orelse (Value > 9), {error, {level_out_of_range, Value}}, fun() -> {ok, {level, Value, <<"custom-"/utf8, (erlang:integer_to_binary(Value))/binary>>}} end ). -file("src/packkit/level.gleam", 51). ?DOC(" Panicking counterpart of `custom_checked`.\n"). -spec custom(integer()) -> level(). custom(Value) -> case custom_checked(Value) of {ok, Level} -> Level; {error, {level_out_of_range, _}} -> erlang:error(#{gleam_error => panic, message => <<"packkit/level.custom: level must be in the inclusive range 0..9"/utf8>>, file => <>, module => <<"packkit/level"/utf8>>, function => <<"custom"/utf8>>, line => 55}) end. -file("src/packkit/level.gleam", 60). ?DOC(" Numeric value for a level.\n"). -spec value(level()) -> integer(). value(Level) -> erlang:element(2, Level). -file("src/packkit/level.gleam", 65). ?DOC(" Stable string label for docs, tests, and diagnostics.\n"). -spec label(level()) -> binary(). label(Level) -> erlang:element(3, Level).