FluxFlow.Components.Sources
3.0.0
See the version list below for details.
dotnet add package FluxFlow.Components.Sources --version 3.0.0
NuGet\Install-Package FluxFlow.Components.Sources -Version 3.0.0
<PackageReference Include="FluxFlow.Components.Sources" Version="3.0.0" />
<PackageVersion Include="FluxFlow.Components.Sources" Version="3.0.0" />
<PackageReference Include="FluxFlow.Components.Sources" />
paket add FluxFlow.Components.Sources --version 3.0.0
#r "nuget: FluxFlow.Components.Sources, 3.0.0"
#:package FluxFlow.Components.Sources@3.0.0
#addin nuget:?package=FluxFlow.Components.Sources&version=3.0.0
#tool nuget:?package=FluxFlow.Components.Sources&version=3.0.0
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.
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 Guidance
Use this package as one part of a host-composed graph. See Component Composition for recommended host boundaries, package boundaries, and extraction timing.
| 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 (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 | 71 | 9/5/2026 |
| 6.0.0 | 189 | 8/3/2026 |
| 3.1.2 | 136 | 7/3/2026 |
| 3.1.1 | 169 | 7/2/2026 |
| 3.0.0 | 124 | 6/19/2026 |
| 2.0.0 | 138 | 6/18/2026 |
| 1.2.1 | 120 | 6/15/2026 |
| 1.2.0 | 420 | 6/12/2026 |
| 1.1.0 | 119 | 6/5/2026 |
| 1.0.0 | 122 | 6/4/2026 |
| 0.2.0-alpha.1 | 240 | 6/2/2026 |
| 0.1.1-alpha.1 | 78 | 6/2/2026 |
| 0.1.0-alpha.1 | 92 | 6/1/2026 |
Rebuilt on the FluxFlow.Nodes kit: source.generated and source.sequence are FlowSource<T> sources (started via StartAsync, items minted as FlowMessage envelopes carrying a fresh correlation id) that time off the injected TimeProvider. The engine factories, module, registration extensions, ports, type constants, design-metadata provider, the definition-options reader, and the JSON item/string-to-Type resolution layer (SourcesComponentOptions) are removed; GeneratedSourceNode takes its options plus the already-materialized items, SequenceSourceNode takes its options, and both take a TimeProvider directly and depend only on FluxFlow.Nodes (runs without the engine).