FluxFlow.Components.Projections 3.0.0

There is a newer version of this package available.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FluxFlow.Components.Projections" Version="3.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FluxFlow.Components.Projections" Version="3.0.0" />
                    
Directory.Packages.props
<PackageReference Include="FluxFlow.Components.Projections" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FluxFlow.Components.Projections --version 3.0.0
                    
#r "nuget: FluxFlow.Components.Projections, 3.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FluxFlow.Components.Projections@3.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FluxFlow.Components.Projections&version=3.0.0
                    
Install as a Cake Addin
#tool nuget:?package=FluxFlow.Components.Projections&version=3.0.0
                    
Install as a Cake Tool

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 InputOutput, 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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.