caffeine 2.0.0
caffeine: ^2.0.0 copied to clipboard
A reactive microstore for Dart. Event-driven stateful stores, lazy derived state with automatic dependency tracking, glitch-free reactivity, and hierarchical scope-based lifecycle management.
2.0.0 #
- Event binding: passing an
Event<T>in scopeoverridesbinds it to that scope;fire()from the owning scope or any descendant broadcasts through the entire subtree, enabling global and semi-global event routing - Unbound events default to root: unbound events broadcast from the root scope, consistent with how unbound stores are globally accessible; bind an event to an intermediate scope to restrict its broadcast to that subtree
- Automatic scope promotion: derived stores are now placed in the deepest scope that owns their dependencies rather than the requesting scope, so all reads within a subtree share one instance
- Constant derived stores live on root: derived stores with no dependencies are promoted to the root scope, consistent with unbound accum stores
Event<T>now implementsStoreOverride(extracted tooverride.dartto avoid circular imports)
1.0.0 #
Initial release.
Store<S, E>— reactive state machine with pure update function and explicit effect streamsStateful<S>— lazy derived reactive value with automatic dependency tracking viaSnapshotScope— runtime that manages the reactive graph, dispatches events, executes effects, and controls store lifecyclesStoreOverride— transparent store replacement for dependency injection and testing- Scope forking for hierarchical store lifetime management
- External stream subscriptions via
Store'ssubscribeparameter - Glitch-free update compression: every
Statefulnode recomputes at most once per event cycle regardless of how many upstream dependencies changed