# `Chronicle.EventSources.ConcurrencyDimensions`
[🔗](https://github.com/Cratis/Chronicle.Elixir/blob/main/lib/chronicle/event_sources/concurrency_dimensions.ex#L4)

The dimensions of an append that take part in its concurrency check.

Written as a list of atoms — `:event_source_id`, `:event_source_type`,
`:event_stream_type`, `:event_stream_id` — or `:none` / `[]` for no
dimensions. The wire representation is the flags value of the Chronicle
`ConcurrencyDimensions` contract.

# `dimension`

```elixir
@type dimension() ::
  :event_source_id | :event_source_type | :event_stream_type | :event_stream_id
```

# `t`

```elixir
@type t() :: [dimension()]
```

# `normalize`

```elixir
@spec normalize(:none | dimension() | [dimension()] | non_neg_integer() | nil) :: t()
```

Normalizes dimensions given as atoms, a list of atoms, or a flags integer into a sorted list.

# `to_flags`

```elixir
@spec to_flags(:none | dimension() | [dimension()] | non_neg_integer() | nil) ::
  non_neg_integer()
```

Returns the flags integer sent on the wire.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
