FluxFlow.Components.Storage
1.1.0
dotnet add package FluxFlow.Components.Storage --version 1.1.0
NuGet\Install-Package FluxFlow.Components.Storage -Version 1.1.0
<PackageReference Include="FluxFlow.Components.Storage" Version="1.1.0" />
<PackageVersion Include="FluxFlow.Components.Storage" Version="1.1.0" />
<PackageReference Include="FluxFlow.Components.Storage" />
paket add FluxFlow.Components.Storage --version 1.1.0
#r "nuget: FluxFlow.Components.Storage, 1.1.0"
#:package FluxFlow.Components.Storage@1.1.0
#addin nuget:?package=FluxFlow.Components.Storage&version=1.1.0
#tool nuget:?package=FluxFlow.Components.Storage&version=1.1.0
FluxFlow.Components.Storage
Reusable logical storage components for FluxFlow.
The package owns workflow storage node behavior and neutral contracts. Hosts provide the concrete store through an adapter.
Nodes
| Node type | Shape | Purpose |
|---|---|---|
storage.put |
Input → Result, Errors |
Stores or updates a logical record. |
storage.get |
Input → Result, Found, NotFound, Errors |
Reads a logical record and routes found/missing results. |
storage.query |
Input → Result, Records, Errors |
Queries records by collection, key prefix, attributes, time bounds, and limit. |
storage.delete |
Input → Result, Errors |
Deletes a logical record and reports whether it existed. |
Store Ownership
The package does not include a concrete database. Register a store factory from the host:
var registry = new RuntimeNodeFactoryRegistry()
.RegisterStorageComponents(options => options
.UseSharedStore(context => new AppStorageStore(context.StoreName)));
Use StorageStoreLease.Owned(store) when the node should dispose the store.
Use StorageStoreLease.Shared(store) when the host owns the store lifetime.
The factory receives the node address, node type, store name, and default
collection through StorageStoreContext.
Runtime Timing
Storage nodes use SystemStorageClock by default. Hosts can provide an
IStorageClock when tests, replay, or deterministic dashboards need stable
timestamps:
var registry = new RuntimeNodeFactoryRegistry()
.RegisterStorageComponents(options => options
.UseClock(storageClock)
.UseSharedStore(context => new AppStorageStore(context.StoreName)));
The configured clock is also available on StorageStoreContext, so backend
stores can use the same time source for stored records and expiration checks.
Put
{
"type": "storage.put",
"store": "default",
"collection": "items",
"mode": "upsert",
"emitStoredRecord": true,
"boundedCapacity": 128
}
storage.put consumes StoragePutRequest and emits StorageResult.
Supported modes are upsert, create, and replace. The request can override
the node mode per item.
Get
{
"type": "storage.get",
"store": "default",
"collection": "items",
"includeExpired": false,
"boundedCapacity": 128
}
storage.get consumes StorageGetRequest and emits StorageResult on
Result. Found records are also routed to Found; missing records are also
routed to NotFound. Missing records are normal results, not processing
errors.
Query
{
"type": "storage.query",
"store": "default",
"collection": "items",
"offset": 0,
"limit": 100,
"includeExpired": false,
"emitRecordsInResult": true,
"emitRecordOutputs": true,
"boundedCapacity": 128
}
storage.query consumes StorageQueryRequest and emits one
StorageQueryResult on Result. The Records port emits each returned
StorageRecord when emitRecordOutputs is true.
Requests can filter by collection, key prefix, exact-match attributes, stored
time bounds, expired-record policy, offset, and limit. Store failures emit
FlowError and the node continues processing later messages.
Delete
{
"type": "storage.delete",
"store": "default",
"collection": "items",
"emitMissingAsResult": true,
"boundedCapacity": 128
}
storage.delete consumes StorageDeleteRequest and emits StorageResult.
Missing deletes can be emitted as normal results or suppressed.
Contracts
Core contracts:
StoragePutRequestStorageGetRequestStorageQueryRequestStorageDeleteRequestStorageQueryResultStorageResultStorageRecordStorageWriteModeIStorageStoreIStorageStoreFactoryIStorageClockSystemStorageClockStorageStoreContextStorageStoreLease
StorageRecord.Value is object? in this first slice. Hosts own
serialization and can compose this package with serialization or payload
components before storage.
Per-message store failures emit FlowError and later messages continue.
Startup fails clearly when the store cannot be opened.
Design Metadata
This package exposes a package-owned IComponentDesignMetadataProvider for its
node types. Hosts can compose it through ComponentDesignMetadataCatalog to
populate palettes, editors, validation views, and documentation without
duplicating package descriptors.
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.Components.Designer (>= 1.0.1)
- FluxFlow.Engine (>= 1.0.1)
-
net8.0
- FluxFlow.Components.Designer (>= 1.0.1)
- FluxFlow.Engine (>= 1.0.1)
- System.Threading.Tasks.Dataflow (>= 9.0.4)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on FluxFlow.Components.Storage:
| Package | Downloads |
|---|---|
|
FluxFlow.Components.Storage.FileSystem
File-system-backed storage adapter for FluxFlow storage components. |
|
|
FluxFlow.Components.Storage.SqlFile
Single-file SQL storage adapter for FluxFlow storage components. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 44 | 6/5/2026 |
| 1.0.0 | 69 | 6/4/2026 |
| 0.4.0-alpha.1 | 44 | 6/3/2026 |
| 0.3.0-alpha.1 | 107 | 6/2/2026 |
| 0.2.1-alpha.1 | 62 | 6/2/2026 |
| 0.2.0-alpha.1 | 61 | 6/2/2026 |
| 0.1.0-alpha.1 | 63 | 6/1/2026 |
Adds package-owned IComponentDesignMetadataProvider metadata for host palettes, editors, validation views, generated docs, and catalog composition while keeping runtime behavior unchanged.