FluxFlow.Components.Projections
3.0.0
See the version list below for details.
dotnet add package FluxFlow.Components.Projections --version 3.0.0
NuGet\Install-Package FluxFlow.Components.Projections -Version 3.0.0
<PackageReference Include="FluxFlow.Components.Projections" Version="3.0.0" />
<PackageVersion Include="FluxFlow.Components.Projections" Version="3.0.0" />
<PackageReference Include="FluxFlow.Components.Projections" />
paket add FluxFlow.Components.Projections --version 3.0.0
#r "nuget: FluxFlow.Components.Projections, 3.0.0"
#:package FluxFlow.Components.Projections@3.0.0
#addin nuget:?package=FluxFlow.Components.Projections&version=3.0.0
#tool nuget:?package=FluxFlow.Components.Projections&version=3.0.0
FluxFlow.Components.Projections
A standalone event-projection node for FluxFlow, built on the FluxFlow.Nodes kit.
No engine required: new the node, post events, link the output.
Node
| Node | Shape | Purpose |
|---|---|---|
EventProjectionNode |
Input → Output, Errors, Events |
Folds matching events into count, latest-event, and rolling-rate snapshots. |
EventProjectionNode is a FlowNode<ProjectionEvent, EventProjectionSnapshot>. Post a
FlowMessage<ProjectionEvent> to Input; the node broadcasts a
FlowMessage<EventProjectionSnapshot> on Output carrying the triggering event's
correlation id. Errors surface on Errors (FlowError) and diagnostics on Events
(FlowEvent).
Example
var node = new EventProjectionNode(new EventProjectionOptions
{
Name = "failed-operations",
RateWindowSeconds = 60,
MaxPreviewChars = 256,
Filter = new EventFilter
{
TypePrefix = "operation.",
Status = "failed",
SubjectPrefix = "orders/",
Attributes = new Dictionary<string, string> { ["tenant"] = "north" }
}
});
var snapshots = new BufferBlock<FlowMessage<EventProjectionSnapshot>>();
node.Output.LinkTo(snapshots, new DataflowLinkOptions { PropagateCompletion = true });
await node.Input.SendAsync(FlowMessage.Create(new ProjectionEvent
{
Timestamp = DateTimeOffset.UtcNow,
Type = "operation.completed",
Source = "orders",
Subject = "orders/42",
Status = "failed",
Attributes = new Dictionary<string, string> { ["tenant"] = "north" }
}));
The snapshot includes:
- observed event count
- matched event count
- rolling current rate
- first and last matched timestamps
- latest matching event summary
- latest payload preview with a configured length limit
Filters
EventFilter supports:
- event type or type prefix
- subject prefix
- channel prefix
- excluded subject prefix
- excluded channel prefix
- status
- source
- source node id
- component id through an event attribute named
componentId - attribute key/value pairs
- event timestamp range
Filters use ordinal string comparison.
Timing
Pass a TimeProvider to the constructor for deterministic snapshot timestamps in
tests or hosts:
var node = new EventProjectionNode(options, timeProvider);
Event rate uses matching event timestamps. Snapshot timestamps use the supplied
TimeProvider (defaults to TimeProvider.System).
Final snapshot
With EmitFinalSnapshot = true (and typically EmitEveryMatch = false) the node
emits a single closing snapshot when the stream ends. Drain and close it via
await node.CompleteWithFinalSnapshotAsync() instead of Complete(); the flush rides
the ordered input pump so it lands after every event already posted.
Boundaries
This package has no UI dependency and no host-specific resource assumptions. It
depends only on FluxFlow.Nodes. Hosts decide how snapshots are displayed, stored,
tested, or forwarded.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FluxFlow.Nodes (>= 1.0.0)
-
net8.0
- FluxFlow.Nodes (>= 1.0.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on FluxFlow.Components.Projections:
| Package | Downloads |
|---|---|
|
FluxFlow.Components.Expectations
Standalone projection-event expectations with typed outcomes and diagnostics. |
|
|
FluxFlow.Components.Projections.Composition
Canonical event-projection result registration and Designer metadata over host-owned clocks. |
|
|
FluxFlow.Components.Expectations.Composition
Canonical projection-event expectation registration and Designer metadata over exact host-owned clock addresses. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.0.0-rc.1 | 89 | 9/5/2026 |
| 7.0.0 | 247 | 8/3/2026 |
| 3.0.2 | 150 | 7/3/2026 |
| 3.0.1 | 240 | 7/2/2026 |
| 3.0.0 | 132 | 6/19/2026 |
| 2.0.0 | 158 | 6/18/2026 |
| 1.1.0 | 170 | 6/12/2026 |
| 1.0.0 | 140 | 6/4/2026 |
| 0.1.0-alpha.1 | 79 | 6/3/2026 |
Rebuilt as a single standalone event.projection node over the FluxFlow.Nodes kit: post FlowMessage<ProjectionEvent> in, rolling FlowMessage<EventProjectionSnapshot> broadcast out, failures on the error port, diagnostics on the event port. The engine glue (node factory, module, registration extensions, component-type/port constants, JSON options reader, and design-metadata provider) is removed; the node depends only on FluxFlow.Nodes and runs without the engine. ProjectionEvent replaces the engine FlowEvent as the standalone input contract; correlation flows event -> snapshot via the envelope.