-module(apiculture@alphabets). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/apiculture/alphabets.gleam"). -export([hex_lower/0, hex_upper/0, base32_rfc/0, base32_rfc_padding/0, base32_hex/0, base32_crockford/0, base32_z/0, base36_lower/0, base36_upper/0, base58/0, base62/0, base64/0, base64_url/0, lower/0, upper/0, numeric/0, alphanumeric_lower/0, alphanumeric_upper/0, alphanumeric_mixed/0, human_safe/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. ?MODULEDOC( " Built-in alphabets for key generation.\n" "\n" " These alphabets are useful with direct character sampling. The matching\n" " `apiculture/encoding` functions instead transform arbitrary bytes into\n" " text; the distinction matters when choosing a generation method.\n" ). -file("src/apiculture/alphabets.gleam", 14). ?DOC(" Lowercase hexadecimal (0-9, a-f)\n"). -spec hex_lower() -> apiculture@alphabet:alphabet(). hex_lower() -> {alphabet, <<"0123456789abcdef"/utf8>>}. -file("src/apiculture/alphabets.gleam", 19). ?DOC(" Uppercase hexadecimal (0-9, A-F)\n"). -spec hex_upper() -> apiculture@alphabet:alphabet(). hex_upper() -> {alphabet, <<"0123456789ABCDEF"/utf8>>}. -file("src/apiculture/alphabets.gleam", 28). ?DOC(" RFC 4648 Base32 alphabet (A-Z, 2-7)\n"). -spec base32_rfc() -> apiculture@alphabet:alphabet(). base32_rfc() -> {alphabet, <<"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567"/utf8>>}. -file("src/apiculture/alphabets.gleam", 33). ?DOC(" RFC 4648 Base32 alphabet with padding (not typically used for sampling)\n"). -spec base32_rfc_padding() -> apiculture@alphabet:alphabet(). base32_rfc_padding() -> {alphabet, <<"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567="/utf8>>}. -file("src/apiculture/alphabets.gleam", 38). ?DOC(" Base32hex alphabet (0-9, A-V)\n"). -spec base32_hex() -> apiculture@alphabet:alphabet(). base32_hex() -> {alphabet, <<"0123456789ABCDEFGHIJKLMNOPQRSTUV"/utf8>>}. -file("src/apiculture/alphabets.gleam", 44). ?DOC( " Crockford's Base32 alphabet\n" " Designed to be human-safe, excludes I, L, O, U\n" ). -spec base32_crockford() -> apiculture@alphabet:alphabet(). base32_crockford() -> {alphabet, <<"0123456789ABCDEFGHJKMNPQRSTVWXYZ"/utf8>>}. -file("src/apiculture/alphabets.gleam", 50). ?DOC( " z-base-32 alphabet (human-friendly)\n" " Order is designed for easy memorization and transcription\n" ). -spec base32_z() -> apiculture@alphabet:alphabet(). base32_z() -> {alphabet, <<"ybndrfg8ejkmcpqxot1uwisza345h769"/utf8>>}. -file("src/apiculture/alphabets.gleam", 59). ?DOC(" Lowercase Base36 (0-9, a-z)\n"). -spec base36_lower() -> apiculture@alphabet:alphabet(). base36_lower() -> {alphabet, <<"0123456789abcdefghijklmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 64). ?DOC(" Uppercase Base36 (0-9, A-Z)\n"). -spec base36_upper() -> apiculture@alphabet:alphabet(). base36_upper() -> {alphabet, <<"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"/utf8>>}. -file("src/apiculture/alphabets.gleam", 74). ?DOC( " Bitcoin-style Base58 alphabet\n" " Excludes 0, O, I, l for visual clarity\n" ). -spec base58() -> apiculture@alphabet:alphabet(). base58() -> {alphabet, <<"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 85). ?DOC(" Standard Base62 (0-9, A-Z, a-z)\n"). -spec base62() -> apiculture@alphabet:alphabet(). base62() -> {alphabet, <<"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 96). ?DOC(" Standard Base64 character repertoire\n"). -spec base64() -> apiculture@alphabet:alphabet(). base64() -> {alphabet, <<"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"/utf8>>}. -file("src/apiculture/alphabets.gleam", 103). ?DOC(" Base64URL variant (URL-safe, replaces +/ with -_)\n"). -spec base64_url() -> apiculture@alphabet:alphabet(). base64_url() -> {alphabet, <<"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"/utf8>>}. -file("src/apiculture/alphabets.gleam", 114). ?DOC(" Lowercase letters only (a-z)\n"). -spec lower() -> apiculture@alphabet:alphabet(). lower() -> {alphabet, <<"abcdefghijklmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 119). ?DOC(" Uppercase letters only (A-Z)\n"). -spec upper() -> apiculture@alphabet:alphabet(). upper() -> {alphabet, <<"ABCDEFGHIJKLMNOPQRSTUVWXYZ"/utf8>>}. -file("src/apiculture/alphabets.gleam", 128). ?DOC(" Numeric characters only (0-9)\n"). -spec numeric() -> apiculture@alphabet:alphabet(). numeric() -> {alphabet, <<"0123456789"/utf8>>}. -file("src/apiculture/alphabets.gleam", 137). ?DOC(" Lowercase alphanumeric (0-9, a-z)\n"). -spec alphanumeric_lower() -> apiculture@alphabet:alphabet(). alphanumeric_lower() -> {alphabet, <<"0123456789abcdefghijklmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 142). ?DOC(" Uppercase alphanumeric (0-9, A-Z)\n"). -spec alphanumeric_upper() -> apiculture@alphabet:alphabet(). alphanumeric_upper() -> {alphabet, <<"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"/utf8>>}. -file("src/apiculture/alphabets.gleam", 147). ?DOC(" Mixed-case alphanumeric (0-9, A-Z, a-z)\n"). -spec alphanumeric_mixed() -> apiculture@alphabet:alphabet(). alphanumeric_mixed() -> {alphabet, <<"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"/utf8>>}. -file("src/apiculture/alphabets.gleam", 160). ?DOC( " Human-safe alphabet excluding visually ambiguous characters\n" " Excludes: 0, O, 1, I, l, B, 8, S (can be confused)\n" " Uses: 2-9, A-H, J-N, P-R, T-Z, a-k, m-n, p-t, v-z\n" ). -spec human_safe() -> apiculture@alphabet:alphabet(). human_safe() -> {alphabet, <<"23456789ABCDEFGHJKMNPQRTVWXYZabcdefghjkmnpqrtvwxyz"/utf8>>}.