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-RPC-v1 contract shape: { “type”: “.<type_name>”, “variant”: “<variant_name>”, “fields”: }

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).

Lucy
says
trans
rights
now
Search Document