Chimeway.Rendering (chimeway v1.0.0)

Copy Markdown View Source

Normalizes notifier rendering declarations into one durable contract.

Summary

Types

channel_rendering()

@type channel_rendering() :: %{render_key: String.t(), render_version: pos_integer()}

rendered_delivery()

@type rendered_delivery() :: %{
  channel: String.t(),
  render_key: String.t(),
  render_version: pos_integer(),
  render_data: map()
}

rendering_declaration()

@type rendering_declaration() :: %{
  assigns: map(),
  channels: %{required(String.t()) => channel_rendering()},
  source: :notifier | :build_fallback
}

Functions

normalize_declaration(declaration)

@spec normalize_declaration(map()) ::
  {:ok, rendering_declaration()} | {:error, term()}

render_delivery(channel, render_key, render_version, attrs)

@spec render_delivery(atom() | binary(), String.t(), pos_integer(), map()) ::
  {:ok, rendered_delivery()} | {:error, term()}

resolve_declaration(notifier, trigger_params, recipient)

@spec resolve_declaration(module(), map(), map()) ::
  {:ok, rendering_declaration()} | {:error, term()}