LibTmux.Wire (libtmux v0.0.1-alpha.1)

Copy Markdown View Source

Bounded JSON decoding with duplicate keys preserved until validation.

Uses the built-in JSON decoder callbacks. Object keys stay strings; no atoms are created. Byte, nesting, node, array and string ceilings apply before conversion to public maps. Parsing failures retain root paths and offsets where supplied; duplicate-key failures identify the object path. Depth starts at zero for the root value and increases for every object member or array element; the maximum is inclusive for maps and JSON alike.

Summary

Types

A JSON object whose keys remain strings; validation never creates atoms from external names.

A JSON value with string-keyed objects; invalid external terms return a validation error.

Functions

Decodes one complete bounded JSON value, rejecting duplicate keys and trailing data.

Validates already-decoded JSON data and its complete encoded byte size.

Types

object()

@type object() :: %{optional(String.t()) => value()}

A JSON object whose keys remain strings; validation never creates atoms from external names.

value()

@type value() ::
  nil | boolean() | integer() | float() | String.t() | [value()] | object()

A JSON value with string-keyed objects; invalid external terms return a validation error.

Functions

decode(binary, options \\ [])

@spec decode(binary(), [LibTmux.Filter.limit_option()]) ::
  {:ok, value()} | {:error, LibTmux.Error.t()}

Decodes one complete bounded JSON value, rejecting duplicate keys and trailing data.

validate(value, options \\ [])

@spec validate(term(), [LibTmux.Filter.limit_option()]) ::
  {:ok, value()} | {:error, LibTmux.Error.t()}

Validates already-decoded JSON data and its complete encoded byte size.