es-entity 0.10.33

Event Sourcing Entity Framework
Documentation
# Entity Pattern

In the Software Engineering community the term `Entity` can refer to many different things.
In the context of `es-entity` it is generally meant in the sense put forward by Domain Driven Design.
Strict adherence to DDD is not mandatory to use `es-entity` but there are a lot of benefits to be had by following these principles.

In DDD entities serve the following purpose:
- execute commands that
  - execute business logic
  - enforce domain invariants
  - mutate state
  - record events (in the context of Event Sourcing)
- supply queries that expose some of the entities state

They often host the most critical code in your application where correctness is of upmost importance.
Ideally they are unit-testable and thus should not be overly coupled to the persistence layer (as they generally are when using just about any ORM library / framework).
The design of `es-entity` is very deliberate in not getting in the way of testability of your `Entities`.

Each `Entity` type used in `es-entity` must have:
- an `EntityId` type
- an `EntityEvent` type
- a `NewEntity` type
- the `Entity` type itself