FluxFlow.Components.Sources 3.1.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package FluxFlow.Components.Sources --version 3.1.2
                    
NuGet\Install-Package FluxFlow.Components.Sources -Version 3.1.2
                    
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.Sources" Version="3.1.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FluxFlow.Components.Sources" Version="3.1.2" />
                    
Directory.Packages.props
<PackageReference Include="FluxFlow.Components.Sources" />
                    
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.Sources --version 3.1.2
                    
#r "nuget: FluxFlow.Components.Sources, 3.1.2"
                    
#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.Sources@3.1.2
                    
#: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.Sources&version=3.1.2
                    
Install as a Cake Addin
#tool nuget:?package=FluxFlow.Components.Sources&version=3.1.2
                    
Install as a Cake Tool

FluxFlow.Components.Sources

Standalone deterministic source nodes for FluxFlow, built on the FluxFlow.Nodes kit. Every node is a self-contained TPL Dataflow processor: new it, LinkTo the next node, StartAsync() it, and run it — no engine, registry, or runtime required. All timing is driven by an injected TimeProvider, so tests stay deterministic with a FakeTimeProvider.

Nodes

Node Kind Shape Purpose
GeneratedSourceNode<T> source Output Emits a configured list of T values as FlowMessage<T>.
SequenceSourceNode source Output Emits a deterministic numeric FlowMessage<SourceSequenceItem> sequence.

Both nodes are zero-input emitters. Call StartAsync() and they produce until their configured count is reached (source complete) or they are stopped via Complete()/DisposeAsync(). Every emitted item is a FlowMessage<T> envelope with a fresh CorrelationId. Lifecycle notes (started, emitted, completed, failed) surface on the Events port using SourceDiagnosticNames; failures surface a FlowError on the Errors port.

BoundedCapacity configures the source output capacity. Generated and sequence loops await source output acceptance. Output remains broadcast/latest-wins; use a dedicated durable buffer if a workflow edge must guarantee no loss. Source options validate at construction. Invalid capacities, negative delays, invalid generated loop/max item settings, invalid sequence counts, and zero steps fail before source pipelines are created.

Generated

await using var node = new GeneratedSourceNode<AppMessage>(
    new GeneratedSourceOptions
    {
        Name = "feed",
        OutputType = "app.message",
        Loop = true,
        MaxItems = 5,
        IntervalMilliseconds = 100
    },
    items: new[]
    {
        new AppMessage("A-100", "alpha"),
        new AppMessage("A-101", "beta")
    });
node.Output.LinkTo(downstream);
await node.StartAsync();

The host materializes (and, if it started from JSON, deserializes) the items it wants to emit and hands them in directly — the package no longer resolves output types from strings or deserializes JSON. MaxItems caps the emitted count, and Loop = true (which requires MaxItems) cycles through the items until that cap is reached.

Sequence

await using var node = new SequenceSourceNode(new SequenceSourceOptions
{
    Name = "numbers",
    Start = 10,
    Step = 5,
    Count = 3,
    InitialDelayMilliseconds = 0,
    IntervalMilliseconds = 0
});
node.Output.LinkTo(downstream);
await node.StartAsync();

SequenceSourceNode emits SourceSequenceItem values with a name, sequence number, computed value (Start + Step * index), the start/step inputs, and a timestamp from the injected clock.

Deterministic time

Pass a TimeProvider to either node's constructor (it defaults to TimeProvider.System). Both honor InitialDelayMilliseconds and IntervalMilliseconds off that clock, so tests can supply a FakeTimeProvider and advance it to release each delay without real-time waits, and item timestamps come from the configured clock's timeline.

Composition

The optional FluxFlow.Components.Sources.Composition package registers source factories for FluxFlow.Composition. It binds the existing source options from node configuration, resolves an optional host-owned keyed TimeProvider resource, and deserializes source.generated inline items into the closed generic output type registered by the host.

services
    .AddFluxFlowComposition(configuration)
    .RegisterNodes(registry => registry
        .RegisterGeneratedSource<AppMessage>()
        .RegisterSequenceSource());

Use custom node type strings for multiple generated output shapes, for example source.generated.order and source.generated.http. OutputType remains diagnostic metadata; the CLR output port type comes from the closed generic registration. The composition adapter does not own generated item sources, clock lifetime, or source lifecycle beyond the composed runtime start/stop contract.

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 (1)

Showing the top 1 NuGet packages that depend on FluxFlow.Components.Sources:

Package Downloads
FluxFlow.Components.Sources.Composition

Typed generated and sequence source registration and Designer metadata over host-owned clocks.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
7.0.0-rc.1 69 9/5/2026
6.0.0 185 8/3/2026
3.1.2 135 7/3/2026
3.1.1 167 7/2/2026
3.0.0 122 6/19/2026
2.0.0 137 6/18/2026
1.2.1 119 6/15/2026
1.2.0 418 6/12/2026
1.1.0 117 6/5/2026
1.0.0 122 6/4/2026
0.2.0-alpha.1 237 6/2/2026
0.1.1-alpha.1 76 6/2/2026
0.1.0-alpha.1 91 6/1/2026

Adds the shared FluxFlow package icon. No source, API, or dependency changes.