Normalizes notifier rendering declarations into one durable contract.
Summary
Types
@type channel_rendering() :: %{render_key: String.t(), render_version: pos_integer()}
@type rendered_delivery() :: %{ channel: String.t(), render_key: String.t(), render_version: pos_integer(), render_data: map() }
@type rendering_declaration() :: %{ assigns: map(), channels: %{required(String.t()) => channel_rendering()}, source: :notifier | :build_fallback }
Functions
@spec normalize_declaration(map()) :: {:ok, rendering_declaration()} | {:error, term()}
@spec render_delivery(atom() | binary(), String.t(), pos_integer(), map()) :: {:ok, rendered_delivery()} | {:error, term()}
@spec resolve_declaration(module(), map(), map()) :: {:ok, rendering_declaration()} | {:error, term()}