application library

Application-layer orchestration APIs.

Exports aggregate, view, repository, metadata, action publishing, and saga manager contracts.

Classes

ActionPublisher<A, ARM, AM>
Publishes actions produced by a saga manager.
EphemeralView<S, E, Q>
Handles queries by folding fetched events into transient state.
EphemeralViewRepository<E, Q>
Repository contract for resolving a query into a stream of events.
EventLockingRepository<C, E, V, CM, EM>
Stores and retrieves event streams with optimistic locking.
EventRepository<C, E, CM, EM>
Stores and retrieves event streams for event-sourced aggregates.
EventSourcingAggregate<C, S, E, CM, EM>
Handles commands by loading, computing, and saving events.
EventSourcingLockingAggregate<C, S, E, V, CM, EM>
Handles commands with optimistic locking over an event stream.
EventSourcingLockingOrchestratingAggregate<C, S, E, V, CM, EM>
Handles orchestrated commands with optimistic event-stream locking.
EventSourcingOrchestratingAggregate<C, S, E, CM, EM>
Handles commands and recursively persists saga-produced follow-up events.
MaterializedLockingDeduplicationView<S, E, EV, SV, M>
Handles events with optimistic locking and event deduplication.
MaterializedLockingView<S, E, V, M>
Handles events with optimistic locking over projection state.
MaterializedView<S, E, M>
Handles events by updating and persisting projection state.
NoMetadata
Marker metadata type for APIs that do not use metadata.
SagaManager<AR, A, ARM, AM>
Coordinates saga reactions and action publishing.
StateLockingRepository<C, S, V, CM, SM>
Stores and retrieves aggregate state with optimistic locking.
StateRepository<C, S, CM, SM>
Stores and retrieves aggregate state for state-stored aggregates.
StateStoredAggregate<C, S, E, CM, SM>
Handles commands by loading, computing, and saving state.
StateStoredLockingAggregate<C, S, E, V, CM, SM>
Handles commands with optimistic locking over stored state.
StateStoredLockingOrchestratingAggregate<C, S, E, V, CM, SM>
Handles orchestrated commands with optimistic state locking.
StateStoredOrchestratingAggregate<C, S, E, CM, SM>
Handles commands and saga-produced follow-up commands over stored state.
ViewStateLockingDeduplicationRepository<E, S, EV, SV, M>
Stores materialized-view state with optimistic locking and deduplication.
ViewStateLockingRepository<E, S, V, M>
Stores and retrieves materialized-view state with optimistic locking.
ViewStateRepository<E, S, M>
Stores and retrieves materialized-view state.

Mixins

EventComputation<C, S, E>
Computes new events from prior events and a command.
EventLockingRepositoryDefaults<C, E, V>
Default implementation of metadata-related methods for EventLockingRepository.
EventOrchestratingComputation<C, S, E>
Computes events and recursively handles saga-produced commands.
EventRepositoryDefaults<C, E>
Default implementation of metadata-related methods for EventRepository.
StateComputation<C, S, E>
Computes new state from current state and a command.
StateLockingRepositoryDefaults<C, S, V>
Default metadata behavior for StateLockingRepository.
StateOrchestratingComputation<C, S, E>
Computes state and recursively handles saga-produced commands.
StateRepositoryDefaults<C, S>
Default metadata behavior for StateRepository.
ViewStateComputation<S, E>
Mixin that formalizes the View State Computation algorithm for View.
ViewStateLockingDeduplicationRepositoryDefaults<E, S, EV, SV>
Default metadata behavior for ViewStateLockingDeduplicationRepository.
ViewStateLockingRepositoryDefaults<E, S, V>
Default metadata behavior for ViewStateLockingRepository.
ViewStateRepositoryDefaults<E, S>
Default metadata behavior for ViewStateRepository.

Constants

noMetadata → const NoMetadata
Empty metadata value for APIs that do not use metadata.

Functions

createActionPublisher<A, ARM, AM>({required PublishActions<A> publish, required PublishActionsWithMetadata<A, ARM, AM> publishWithMetadata}) ActionPublisher<A, ARM, AM>
Creates an ActionPublisher from publish functions.
createEphemeralView<S, E, Q>({required View<S, E> view, required EphemeralViewRepository<E, Q> ephemeralViewRepository}) EphemeralView<S, E, Q>
Creates an ephemeral view from a view and event-fetching repository.
createEventLockingRepository<C, E, V>({required FetchEventsLocking<C, E, V> fetchEvents, required LatestVersionProvider<E, V> latestVersionProvider, required SaveEventsWithProvider<E, V> save, required SaveEventsAtVersion<E, V> saveAtVersion}) EventLockingRepository<C, E, V, NoMetadata, NoMetadata>
Creates an EventLockingRepository from storage functions.
createEventSourcingAggregate<C, S, E, CM, EM>({required DeciderContract<C, S, E> decider, required EventRepository<C, E, CM, EM> eventRepository}) EventSourcingAggregate<C, S, E, CM, EM>
Creates an EventSourcingAggregate from a decider and event repository.
createEventSourcingLockingAggregate<C, S, E, V, CM, EM>({required DeciderContract<C, S, E> decider, required EventLockingRepository<C, E, V, CM, EM> eventRepository}) EventSourcingLockingAggregate<C, S, E, V, CM, EM>
Creates a locking event-sourcing aggregate.
createEventSourcingLockingOrchestratingAggregate<C, S, E, V, CM, EM>({required DeciderContract<C, S, E> decider, required EventLockingRepository<C, E, V, CM, EM> eventRepository, required SagaContract<E, C> saga}) EventSourcingLockingOrchestratingAggregate<C, S, E, V, CM, EM>
Creates a locking orchestrating event-sourcing aggregate.
createEventSourcingOrchestratingAggregate<C, S, E, CM, EM>({required DeciderContract<C, S, E> decider, required EventRepository<C, E, CM, EM> eventRepository, required SagaContract<E, C> saga}) EventSourcingOrchestratingAggregate<C, S, E, CM, EM>
Creates an orchestrating event-sourcing aggregate.
createMaterializedLockingDeduplicationView<S, E, EV, SV, M>({required View<S, E> view, required ViewStateLockingDeduplicationRepository<E, S, EV, SV, M> viewStateLockingDeduplicationRepository}) MaterializedLockingDeduplicationView<S, E, EV, SV, M>
Creates a locking deduplicating materialized view.
createMaterializedLockingView<S, E, V, M>({required View<S, E> view, required ViewStateLockingRepository<E, S, V, M> viewStateLockingRepository}) MaterializedLockingView<S, E, V, M>
Creates a locking materialized view.
createMaterializedView<S, E, M>({required View<S, E> view, required ViewStateRepository<E, S, M> viewStateRepository}) MaterializedView<S, E, M>
Creates a materialized view from a view and state repository.
createSagaManager<AR, A, ARM, AM>({required SagaContract<AR, A> saga, required ActionPublisher<A, ARM, AM> actionPublisher}) SagaManager<AR, A, ARM, AM>
Creates a SagaManager from a saga and actionPublisher.
createStateStoredAggregate<C, S, E, CM, SM>({required DeciderContract<C, S, E> decider, required StateRepository<C, S, CM, SM> stateRepository}) StateStoredAggregate<C, S, E, CM, SM>
Creates a state-stored aggregate from a decider and state repository.
createStateStoredLockingAggregate<C, S, E, V, CM, SM>({required DeciderContract<C, S, E> decider, required StateLockingRepository<C, S, V, CM, SM> stateRepository}) StateStoredLockingAggregate<C, S, E, V, CM, SM>
Creates a locking state-stored aggregate.
createStateStoredLockingOrchestratingAggregate<C, S, E, V, CM, SM>({required DeciderContract<C, S, E> decider, required StateLockingRepository<C, S, V, CM, SM> stateRepository, required SagaContract<E, C> saga}) StateStoredLockingOrchestratingAggregate<C, S, E, V, CM, SM>
Creates a locking orchestrating state-stored aggregate.
createStateStoredOrchestratingAggregate<C, S, E, CM, SM>({required DeciderContract<C, S, E> decider, required StateRepository<C, S, CM, SM> stateRepository, required SagaContract<E, C> saga}) StateStoredOrchestratingAggregate<C, S, E, CM, SM>
Creates an orchestrating state-stored aggregate.

Typedefs

FetchEventsLocking<C, E, V> = Stream<(E, V)> Function(C command)
Fetches events with their storage versions.
LatestVersionProvider<E, V> = V? Function(E event)
Returns the version associated with an event.
MapMetadata = Map<String, Object>
Convenience metadata type for map-based integrations.
PublishActions<A> = Stream<A> Function(Stream<A> actions)
Function that publishes actions without metadata.
PublishActionsWithMetadata<A, ARM, AM> = Stream<(A, AM)> Function(Stream<(A, ARM)> actions)
Function that publishes actions and maps result metadata to action metadata.
SaveEventsAtVersion<E, V> = Stream<(E, V)> Function(Stream<E> events, V? latestVersion)
Saves events using an explicit latest expected version.
SaveEventsWithProvider<E, V> = Stream<(E, V)> Function(Stream<E> events, LatestVersionProvider<E, V> latestVersionProvider)
Saves events using a provider for the latest expected version.