libero/json/codegen
Typed JSON encoder and decoder codegen.
Generates Gleam source code for per-type json.Json builders and
typed decoders. Each discovered type gets a pair of functions:
json_encode_<qualified_atom_name> — builds a json.Json value
json_decode_<qualified_atom_name> — validates and decodes from Dynamic
The generated wire format follows the JSON-transport-v1 contract shape:
{ “type”: “
Labelled variants encode fields as a JSON object under “fields”; unlabelled variants encode them as a JSON array. Mixed labelled / unlabelled constructors are rejected at codegen time.
Values
pub fn generate(
discovered: List(walker.DiscoveredType),
) -> Result(String, List(error.JsonError))
Generate Gleam source for JSON typed encoders and decoders.
Returns Ok(source) on success, or Error(List(JsonError)) if any
constructor has mixed labelled/unlabelled fields (rejected for JSON v1).
pub fn generate_transport_codecs_with_push_and_ssr(
discovered discovered: List(walker.DiscoveredType),
push_types push_types: List(contract.PushContract),
ssr_models ssr_models: List(contract.SsrModelContract),
) -> Result(String, List(error.JsonError))
Generate JSON codecs and transport wrappers for transport, push, and SSR.