interface Base64 exposes [ fromBytes, fromStr, toBytes, toStr ] imports [ Base64.Decode, Base64.Encode ] # base 64 encoding from a sequence of bytes fromBytes : List U8 -> Result Str [ InvalidInput ]* fromBytes = \bytes -> when Base64.Decode.fromBytes bytes is Ok v -> Ok v Err _ -> Err InvalidInput # base 64 encoding from a string fromStr : Str -> Result Str [ InvalidInput ]* fromStr = \str -> fromBytes (Str.toUtf8 str) # base64-encode bytes to the original toBytes : Str -> Result (List U8) [ InvalidInput ]* toBytes = \str -> Ok (Base64.Encode.toBytes str) toStr : Str -> Result Str [ InvalidInput ]* toStr = \str -> when toBytes str is Ok bytes -> when Str.fromUtf8 bytes is Ok v -> Ok v Err _ -> Err InvalidInput Err _ -> Err InvalidInput