Jido.Observe.EventContract (Jido v2.0.0)

View Source

Minimal helpers for validating custom telemetry event contracts.

Downstream packages can use this module to enforce stable required keys for metadata and measurements before emitting namespaced events.

Summary

Functions

Validates event metadata and measurements against required keys.

Validates that measurements contain all required keys.

Validates that metadata contains all required keys.

Types

event_error()

@type event_error() ::
  {:invalid_event_contract,
   %{
     event: event_prefix(),
     missing_metadata_keys: required_keys(),
     missing_measurement_keys: required_keys()
   }}

event_prefix()

@type event_prefix() :: [atom()]

key()

@type key() :: atom() | String.t()

measurements_error()

@type measurements_error() :: {:missing_measurement_keys, required_keys()}

metadata_error()

@type metadata_error() :: {:missing_metadata_keys, required_keys()}

required_keys()

@type required_keys() :: [key()]

Functions

validate_event(event_prefix, measurements, metadata, opts \\ [])

@spec validate_event(event_prefix(), map(), map(), keyword()) ::
  {:ok, %{event: event_prefix(), measurements: map(), metadata: map()}}
  | {:error, event_error()}

Validates event metadata and measurements against required keys.

Options

  • :required_metadata - Required metadata keys.
  • :required_measurements - Required measurement keys.

validate_measurements(measurements, required_keys)

@spec validate_measurements(map(), required_keys()) ::
  {:ok, map()} | {:error, measurements_error()}

Validates that measurements contain all required keys.

validate_metadata(metadata, required_keys)

@spec validate_metadata(map(), required_keys()) ::
  {:ok, map()} | {:error, metadata_error()}

Validates that metadata contains all required keys.