Byte2Pixel.TinyState
0.0.3-alpha
dotnet add package Byte2Pixel.TinyState --version 0.0.3-alpha
NuGet\Install-Package Byte2Pixel.TinyState -Version 0.0.3-alpha
<PackageReference Include="Byte2Pixel.TinyState" Version="0.0.3-alpha" />
<PackageVersion Include="Byte2Pixel.TinyState" Version="0.0.3-alpha" />
<PackageReference Include="Byte2Pixel.TinyState" />
paket add Byte2Pixel.TinyState --version 0.0.3-alpha
#r "nuget: Byte2Pixel.TinyState, 0.0.3-alpha"
#:package Byte2Pixel.TinyState@0.0.3-alpha
#addin nuget:?package=Byte2Pixel.TinyState&version=0.0.3-alpha&prerelease
#tool nuget:?package=Byte2Pixel.TinyState&version=0.0.3-alpha&prerelease
TinyState
⚠️ This package is under active development and is not ready for use. Contributions are not being accepted at this time.
TinyState is a lightweight, fluent, and dependency-free state machine library for .NET. Build robust workflows, UI logic, or domain models with a clean and minimal API.
TinyState is a minimal yet powerful state machine library for .NET developers. It helps you model transitions and logic flows using a clean, fluent API — without any external dependencies.
✨ Features:
- Compile-time safe fluent configuration
- Async and sync transition hooks (OnEnter, OnExit, OnTransition)
- Optional guards (sync/async) for transitions
- Immutability and runtime safety
- Optional state persistence
Example Usage
var machine = new StateMachine<OrderState, OrderTrigger>(OrderState.Created);
machine
.Configure(OrderState.Created)
.Trigger(OrderTrigger.Pay)
.TransitionTo(OrderState.Paid)
.Trigger(OrderTrigger.Cancel)
.TransitionTo(OrderState.Cancelled)
.OnEnter(() => Console.WriteLine("Order created."));
machine
.Configure(OrderState.Paid)
.Trigger(OrderTrigger.Ship)
.When(() => inventoryAvailable)
.TransitionTo(OrderState.Shipped)
.Trigger(OrderTrigger.Cancel)
.TransitionTo(OrderState.Cancelled)
.OnEnter(() => Console.WriteLine("Order paid."));
machine
.Configure(OrderState.Shipped)
.Trigger(OrderTrigger.Deliver)
.TransitionTo(OrderState.Delivered)
.OnEnter(() => Console.WriteLine("Order shipped."));
machine.Configure(OrderState.Delivered);
machine.Configure(OrderState.Cancelled);
Key Points
- After
.Trigger(...)
, you can chain.When(...)
,.WhenAsync(...)
, and.TransitionTo(...)
in any order, but only.Trigger(...)
or hooks after.TransitionTo(...)
. - Guards are optional and can be chained; all must pass for the transition to occur.
Installation
You can install TinyState via NuGet:
dotnet add package Byte2Pixel.TinyState
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. 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 is compatible. 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 was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.0.3-alpha | 122 | 6/30/2025 |
0.0.2-alpha | 118 | 6/29/2025 |
0.0.1-alpha | 77 | 6/29/2025 |