blackbox 0.3.0
blackbox: ^0.3.0 copied to clipboard
Deterministic reactive computation core with explicit dependency graphs, boxes, and flows. Designed for testable business logic and state pipelines.
0.3.0 #
- Breaking:
when()loading callback signature:() → R→(T? previousData) → Rwhen()error callback signature:(Object, StackTrace?) → R→(Object, StackTrace?, T? previousData) → R
- Added:
AsyncLoading.previousData— carries last known value during refreshAsyncError.previousData— carries last known value on error after refresh
0.2.0 #
- Breaking:
- Removed
LazyBox— usepersistKeyparameter on Box/AsyncBox constructors - Removed
computeValue()—NoInputBoxandNoInputAsyncBoxnow usecompute()directly - Renamed
dependencies:parameter toinput:in Graph.add() - Renamed
d.ready()tod.whenReady()in DependencyResolver - Removed
d.output()from DependencyResolver (usebox.outputdirectly) - Removed public
inputgetter from Box/AsyncBox
- Removed
- Added:
prepare(I input, O? previous)lifecycle hook — called once before first computedispose()lifecycle hook — called by Graph.dispose() for resource cleanuppersistKeyparameter on Box/AsyncBox constructors for built-in persistenceBlackboxPersistence.registerCodec<T>()for global codec registry- Graph signal tracing:
build(trace: true)for console output,onTrace:for custom handler PumpTrace/BoxTracedata classes for programmatic trace access
- Changed:
- Box hierarchy refactored: shared
_SyncBoxBase/_AsyncBoxBaseinternal base classes NoInputBox<O>andNoInputAsyncBox<O>are now independent fromBox<I,O>/AsyncBox<I,O>(both extend shared base)- All box types use
compute()as the override method name
- Box hierarchy refactored: shared
0.1.0 #
- Breaking:
Connector->GraphConnectorBuilder->GraphBuilderconnect(...)->add(...)connectWith(...)->addWith(...)PipelineBuilder.addWithDependencies(...)->addWith(...)FlowBoxBuilder()is now created viaFlowBox.builder()
- Changed:
- Updated docs, tests, and examples to the new graph/flow builder API
0.0.7 #
- Renamed:
- StateObserver -> FlowBox
- Breaking:
FlowBox<S>now requiresS extends FlowState
- Added:
FlowBoxBuilder.onLoading(...)andonError(...)for reacting toAsyncLoadingandAsyncError
- Changed:
- FlowBox is now a sync box without input (
Box<O>) onLoading(...)andonError(...)are compile-time restricted to async sources only
- FlowBox is now a sync box without input (
0.0.4 #
- Renamed:
- Graph -> Connector
- Flow -> StateObserver
0.0.3 #
- Added GraphBuilder
- Added Pipeline of Boxes
0.0.2 #
- Updated docs
0.0.1 #
- Initial release