# Functions
NewEventSourcedRepository returns a new EventSourcedRepository implementation to store and load Aggregate Roots, specified by the aggregate.Type, using the provided event.Store implementation.
RecordThat records the Domain Event for the specified Aggregate Root.
RehydrateFromEvents rehydrates an Aggregate Root from a read-only Event Stream.
RehydrateFromState rehydrates an aggregate.Root instance using a state type, typically coming from an external state type (e.g.
Scenario is a scenario type to test the result of methods called on an Aggregate Root and their effects.
# Variables
ErrRootNotFound is returned when the Aggregate Root requested through a Repository was not found.
# Structs
BaseRoot segregates and completes the aggregate.Root interface implementation when embedded to a user-defined Aggregate Root type.
EventSourcedRepository provides an aggregate.Repository interface implementation that uses an event.Store to store and load the state of the Aggregate Root.
FusedRepository is a convenience type that can be used to fuse together different implementations for the Getter and Saver Repository interface components.
ScenarioGiven is the state of the scenario once the Aggregate Root preconditions have been set through the Scenario().Given() method.
ScenarioInit is the entrypoint of the Aggregate Root scenario API.
ScenarioThen is the state of the scenario where all parameters have been set and it's ready to be executed using a testing.T instance.
ScenarioWhen is the state of the scenario once the aggregate method to test has been provided through either Scenario().When() or Scenario().Given().When() paths.
Type represents the type of an Aggregate, which will expose the name of the Aggregate (used as Event Store type).
# Interfaces
Aggregate is the segregated interface, part of the Aggregate Root interface, that describes the left-folding behavior of Domain Events to update the Aggregate Root state.
Getter is an Aggregate Repository interface component, that can be used for retrieving Aggregate Roots from some storage.
ID represents an Aggregate ID type.
Internal contains some Aggregate Root methods that are used by internal packages and modules for this library.
Repository is an interface used to get Aggregate Roots from and save them to some kind of storage, depending on the implementation.
Root is the interface describing an Aggregate Root instance.
Saver is an Aggregate Repository interface component, that can be used for storing Aggregate Roots in some storage.
# Type aliases
Factory is a function that creates new zero-valued instances of an aggregate.Root implementation.