-module(aion_client@payload). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/aion_client/payload.gleam"). -export([encode/2, decode/2]). -export_type([payload/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(" Typed JSON encoder/decoder helpers and raw Payload escape hatch.\n"). -type payload() :: {payload, binary(), binary()}. -file("src/aion_client/payload.gleam", 18). ?DOC(" Encode a typed value as a JSON Payload.\n"). -spec encode(FES, fun((FES) -> gleam@json:json())) -> payload(). encode(Value, Encoder) -> {payload, <<"application/json"/utf8>>, begin _pipe = Value, _pipe@1 = Encoder(_pipe), gleam@json:to_string(_pipe@1) end}. -file("src/aion_client/payload.gleam", 39). -spec map_decode_error({ok, FEX} | {error, gleam@json:decode_error()}) -> {ok, FEX} | {error, aion_client@error:error()}. map_decode_error(Result) -> case Result of {ok, Value} -> {ok, Value}; {error, _} -> {error, invalid_argument} end. -file("src/aion_client/payload.gleam", 27). ?DOC( " Decode a JSON Payload into a typed value. Decode failures are explicit data\n" " and map to InvalidArgument rather than panicking or silently defaulting.\n" ). -spec decode(payload(), gleam@dynamic@decode:decoder(FET)) -> {ok, FET} | {error, aion_client@error:error()}. decode(Payload, Decoder) -> {payload, Content_type, Bytes} = Payload, case Content_type =:= <<"application/json"/utf8>> of true -> _pipe = Bytes, _pipe@1 = gleam@json:parse(_pipe, Decoder), map_decode_error(_pipe@1); false -> {error, invalid_argument} end.