# `WardrikEvents.Reader`

Reads kept events back from the logs patterns match.

# `entry`

```elixir
@type entry() :: {String.t(), non_neg_integer(), WardrikEvents.CloudEvent.t()}
```

`{log, sequence, event}`.

# `advanced`

```elixir
@spec advanced(WardrikEvents.Cursor.t(), [entry()]) :: WardrikEvents.Cursor.t()
```

Returns `cursor` moved past each of `entries`.

# `all`

```elixir
@spec all(map(), String.t()) :: Enumerable.t(entry())
```

Streams every entry of `log`, oldest first.

# `covered`

```elixir
@spec covered(WardrikStore.t(), [String.t()]) :: [String.t()]
```

Returns the logs `resources` match.

# `entries`

```elixir
@spec entries(map(), String.t(), non_neg_integer(), pos_integer()) :: [entry()]
```

Returns up to `limit` entries of `log` after the sequence number `at`.

If retention dropped the next one, the entries start with a `wardrik.events.dropped`.

# `head`

```elixir
@spec head(WardrikStore.t(), [String.t()]) :: WardrikEvents.Cursor.t()
```

Returns the cursor at the end of the logs `resources` match.

# `page`

```elixir
@spec page(map(), [String.t()], WardrikEvents.Cursor.t(), pos_integer()) ::
  {[entry()], WardrikEvents.Cursor.t()}
```

Returns up to `limit` entries after `cursor` from the logs `resources` match, oldest first, and the cursor after them.

---

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