libero/codegen_decoders

Typed decoder generators.

Emits JS decoder source from discovered types. Returns strings; writing to disk is the consumer’s responsibility.

Values

pub fn emit_class_statics(
  discovered: List(walker.DiscoveredType),
) -> String

Emit per-variant class-static assignments for every discovered user type. __wireAtom carries the 10-char hash; __fieldTypes carries the positional field-type hints the encoder needs (Float marked, containers wrapped, primitives null). These statics replace the runtime _bareToQualifiedAtom and fieldTypeRegistry lookup tables.

Even 0-arity variants get a __fieldTypes = [] for symmetry; the encoder branches on key count so the empty array is never indexed.

pub fn emit_typed_decoders(
  discovered: List(walker.DiscoveredType),
) -> String

Emit a JS string with one decoder function per discovered type, registration calls that populate etf/wire_ffi.mjs’s typed decoder registry, and an ensure_decoders entry point.

pub fn generate_decoders_ffi(
  discovered discovered: List(walker.DiscoveredType),
  relpath_prefix relpath_prefix: String,
  package package: String,
  dependency_packages dependency_packages: List(String),
) -> String

Generate the JS FFI decoder source from discovered types.

pub fn generate_decoders_gleam(
  ffi_module_path ffi_module_path: String,
) -> String

Generate the Gleam wrapper module source for the typed decoder FFI.

Search Document