Repository navigation
JasperFx 2.82.0
Event Modeling
- #992: definitions without a
Namejoin the application's model.EventModelDefinition.Namenow defaults to the service name (JasperFxOptions.ServiceName), so a definition per chapter merges with the model derived from code. Before, each definition became its own model, named after its class. - #993: AOT-safe definition discovery. JasperFx.SourceGenerator now emits a
DiscoveredEventModelsmanifest per assembly. The newAddDiscoveredEventModels(assembly)registers definitions from it, without scanning types. - #994: default and opt-out aggregates.
ForAggregate<T>()sets the default aggregate for the command slices declared after it.- On a single slice,
NoAggregate()andDeciderModel<T>()override that default. - Each slice records why it has its aggregate in the new
AggregateDeclaration.
- #995: specification links.
- New typed
LinksToSpecification<TSpec>(nameof(...)). - The new
SpecificationBindingDescriptorcontract andEventModelSpecifications.Linkjoin specs to slices by command type. - A new
Specifiedprovenance rung ranks betweenDeclaredandDerived. Compare rungs withRank()/Outranks(), not the raw enum value. - New
UnresolvedSpecificationhotspot.
- New typed
Source generator
- #990: emitted-events manifest. JasperFx.Events.SourceGenerator infers which events a handler emits from its body, and records them as
[assembly: EmittedEvents(...)].- New
ICarriesEventsmarker. - Pass 2 now recognizes aggregate parameters by the
IRefersToAggregatemarker rather than by attribute name.
- New
Event store
- #985:
InMemoryDocumentStoreimplementsIEventStore. - #989: a composite single-pass replay that ends on an empty page now persists its progression.
Wire additions
These are appended enum members, so existing integer values don't change:
EventModelProvenance.SpecifiedHotspotOrigin.UnresolvedSpecificationEventModelRole.AggregateDeclarationandEventModelRole.DeciderModel