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”: “.<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).

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.

Lucy
says
trans
rights
now
Search Document