continuum 4.1.0
continuum: ^4.1.0 copied to clipboard
An event sourcing library for Dart with code generation support.
Changelog #
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased] #
4.1.0 - 2026-01-22 #
Added #
- Projection System: A comprehensive read-model projection framework with automatic event-driven updates.
Projection<TReadModel, TKey>: Base class for event-driven read model maintenance.SingleStreamProjection<TReadModel>: Projections that follow a single aggregate stream.MultiStreamProjection<TReadModel, TKey>: Projections that aggregate across multiple streams.ProjectionRegistry: Central registry for projection registration and lookup.ReadModelStore<TReadModel, TKey>: Storage abstraction for read models withInMemoryReadModelStoreimplementation.ProjectionPositionStore: Tracks projection progress withInMemoryProjectionPositionStoreimplementation.InlineProjectionExecutor: Synchronous execution for strongly-consistent projections.AsyncProjectionExecutor: Asynchronous execution for eventually-consistent projections.PollingProjectionProcessor: Background processor for async projections.ProjectionEventStore: Interface for event stores that support projection queries.
EventSourcingStorenow accepts an optionalprojectionsparameter to enable automatic inline projection execution.InMemoryEventStoreandHiveEventStorenow implementProjectionEventStorefor projection support.
Fixed #
continuum_missing_apply_handlersno longer requiresapply<Event>(...)handlers for creation events marked with@AggregateEvent(creation: true).- Fix
ContinuumEventcontract so core compilation succeeds (restoring requiredid,occurredOn, andmetadatafields). - Fix
ContinuumEvent.metadatatyping to match examples/generator fixtures (Map<String, Object?>). - Stabilize
continuum_generatortests in CI by falling back to.dart_tool/package_config.jsonwhenIsolate.packageConfigis unavailable. - Run
melos run testwith--concurrency 1to reduce workspace test flakiness.
4.0.0 - 2026-01-14 #
Breaking Changes #
- BREAKING: Creation events are classified via
@AggregateEvent(creation: true)(no longer inferred from aggregatecreate*methods).
Added #
- Added
creationflag to@AggregateEventfor explicit creation-event declaration. - Generator now validates that each creation event has a matching
createFrom<Event>static factory on the aggregate. - Added a lint that warns when an
@Aggregate()class is missing requiredcreateFrom<Event>(...)factories for creation events. - Added a Quick Fix action to implement missing
createFrom<Event>(...)factory stubs. - Updated the example package to show both missing apply handlers and missing creation factories warnings.
3.2.0 - 2026-01-14 #
Added #
- Added a custom lint rule that reports when a non-abstract
@Aggregate()class mixes in the generated_$<Aggregate>EventHandlersbut does not implement all requiredapply<Event>(...)methods. - Added a Quick Fix action to implement missing
apply<Event>(...)handler stubs. - Added a runnable example package under
example/showing the lint in action.
3.1.1 - 2026-01-13 #
Fixed #
- Aggregate event discovery now scans all libraries in the package, so mutation apply methods and dispatch cases are generated even when the aggregate library does not import the event library (the aggregate still must import the event type for compilation).
3.1.0 - 2026-01-13 #
3.0.0 - 2026-01-12 #
Breaking Changes #
- BREAKING:
ContinuumEventnow implementsZooperDomainEventfor better integration with other Zooper packages.
Fixed #
JsonEventSerializer.deserializenow always includes ametadatakey (empty when no stored metadata) in the payload passed tofromJson.- Code generation now emits
ContinuumEventforapplyEvent(...),replayEvents(...), andcreateFromEvent(...)(instead of the non-existentDomainEvent).
2.0.0 - 2026-01-08 #
Breaking Changes #
- BREAKING: Renamed
@Eventannotation to@AggregateEventto avoid naming conflicts with user code. - BREAKING: Renamed
ofAggregate:parameter toof:in@AggregateEventannotation. - BREAKING: Renamed
DomainEventclass toContinuumEventto avoid naming conflicts. - BREAKING: Renamed
Sessioninterface toContinuumSessionto avoid naming conflicts. - BREAKING: Renamed
StoredEvent.fromDomainEvent()toStoredEvent.fromContinuumEvent(). - BREAKING: Updated all parameter names from
domainEventtocontinuumEvent.
Other Changes #
- Updated generator implementation for analyzer 8 API changes.
- Updated generator dependencies for
source_gen ^4.0.0(includinganalyzerandbuild).
1.0.0 #
- Initial release with event sourcing core functionality.
- Added
@Aggregate()and@Event()annotations for code generation. - Added strong types:
EventId,StreamId. - Added persistence interfaces and store implementations.
- Added exception types for error handling.