skir_client

Types

A value that can serialize and deserialize values of type a to/from JSON and binary formats.

Do not construct this directly, use the *_serializer() functions.

pub type Serializer(a) =
  serializer.Serializer(a)

A timestamp represented as milliseconds since the Unix epoch (1970-01-01T00:00:00Z).

pub type Timestamp =
  timestamp.Timestamp

Values

pub fn bool_serializer() -> serializer.Serializer(Bool)

Returns the serializer for Bool values.

pub fn bytes_serializer() -> serializer.Serializer(BitArray)

Returns the serializer for BitArray (bytes) values.

pub fn float32_serializer() -> serializer.Serializer(Float)

Returns the serializer for Float (float32) values.

pub fn float64_serializer() -> serializer.Serializer(Float)

Returns the serializer for Float (float64) values.

pub fn from_bytes(
  serializer: serializer.Serializer(a),
  bytes: BitArray,
) -> Result(a, String)

Deserializes a value from binary format. Unrecognized fields are dropped.

pub fn from_bytes_with_options(
  serializer: serializer.Serializer(a),
  bytes: BitArray,
  keep_unrecognized_values keep_unrecognized_values: Bool,
) -> Result(a, String)

Deserializes a value from binary format. When keep_unrecognized_values is True, field data that this client does not recognise is preserved in unrecognized_fields_.

pub fn from_gleam_timestamp(
  t: timestamp.Timestamp,
) -> timestamp.Timestamp

Converts a Gleam Timestamp to a Skir Timestamp.

pub fn from_json_code(
  serializer: serializer.Serializer(a),
  json_code: String,
) -> Result(a, String)

Deserializes a value from a JSON string. Accepts both dense and readable JSON. Unrecognized fields are dropped.

pub fn from_json_code_with_options(
  serializer: serializer.Serializer(a),
  json_code: String,
  keep_unrecognized_values keep_unrecognized_values: Bool,
) -> Result(a, String)

Deserializes a value from a JSON string. When keep_unrecognized_values is True, field data that this client does not recognise is preserved in unrecognized_fields_ so that re-serializing the value does not silently discard forward-compatible fields.

pub fn hash64_serializer() -> serializer.Serializer(Int)

Returns the serializer for Int (hash64) values.

pub fn int32_serializer() -> serializer.Serializer(Int)

Returns the serializer for Int (int32) values.

pub fn int64_serializer() -> serializer.Serializer(Int)

Returns the serializer for Int (int64) values.

pub fn json_decoder(
  serializer: serializer.Serializer(a),
) -> decode.Decoder(a)

Returns a JSON decoder for this serializer (Drop mode).

pub fn json_decoder_with_options(
  serializer: serializer.Serializer(a),
  keep_unrecognized_values keep_unrecognized_values: Bool,
) -> decode.Decoder(a)

Returns a JSON decoder for this serializer with configurable keep/drop mode.

pub fn keyed_list_serializer(
  item_serializer: serializer.Serializer(a),
  key_extractor: String,
) -> serializer.Serializer(List(a))

Returns a keyed serializer for List(a) values.

pub fn list_serializer(
  item_serializer: serializer.Serializer(a),
) -> serializer.Serializer(List(a))

Returns a serializer for List(a) values.

pub fn optional_serializer(
  item_serializer: serializer.Serializer(a),
) -> serializer.Serializer(option.Option(a))

Returns a serializer for Option(a) values.

pub fn recursive_serializer(
  item_serializer: serializer.Serializer(a),
) -> serializer.Serializer(recursive.Recursive(a))

Returns a serializer for Recursive(a) values.

pub fn string_serializer() -> serializer.Serializer(String)

Returns the serializer for String values.

pub fn timestamp_serializer() -> serializer.Serializer(
  timestamp.Timestamp,
)

Returns the serializer for Timestamp values.

pub fn to_bytes(
  serializer: serializer.Serializer(a),
  value: a,
) -> BitArray

Serializes a value to a compact binary format.

pub fn to_dense_json(
  serializer: serializer.Serializer(a),
  value: a,
) -> json.Json

Serializes a value to dense (field-index-based) JSON value.

pub fn to_dense_json_code(
  serializer: serializer.Serializer(a),
  value: a,
) -> String

Serializes a value to dense (field-index-based) JSON code. Dense JSON is safe for persistent storage: renaming a field does not break deserialization.

pub fn to_gleam_timestamp(
  t: timestamp.Timestamp,
) -> timestamp.Timestamp

Converts a Skir Timestamp to a Gleam Timestamp.

pub fn to_readable_json(
  serializer: serializer.Serializer(a),
  value: a,
) -> json.Json

Serializes a value to readable (field-name-based) JSON value.

pub fn to_readable_json_code(
  serializer: serializer.Serializer(a),
  value: a,
) -> String

Serializes a value to readable (field-name-based, indented) JSON code. Uses 2-space indentation.

pub fn type_descriptor(
  serializer: serializer.Serializer(a),
) -> type_descriptor.TypeDescriptor

Returns the TypeDescriptor for the type this serializer handles.

pub const unix_epoch: timestamp.Timestamp

The default Timestamp: the Unix epoch (1970-01-01T00:00:00Z).

Search Document