beat 0.7.0
beat: ^0.7.0 copied to clipboard
A set of annotations for beat state management. Heavily inspired by xstate.js.org
Beat Station - State management with state machine #
Heavily inspired by xstate.js.
Go to the Beatly Book for more information.
Roadmap - Features compatible with xstate.js #
A roadmap is as follows, but not in the exact order.
- ✅ Support simple state transition without context
- ✅ Listen on state and context changes
- ✅ Map states
- ✅ Execute callback on state change
- ✅ Support reset
- ✅ Support context
- ✅ Initialize with context
- ✅ Get current context
- ✅ assign new context
- ✅ Initialize with context
- ✅ Support transition with an argument
- ❌ Support delay
- ❌ Support actions (fire-and-forget)
- ✅ callback action
- ✅ assign action
- ✅ callback action with variable length of arguments
- ❌ choose action
- ❌ forwardTo action
- ❌ log action
- ❌ pure action
- ❌ raise action
- ❌ respond action
- ❌ send action
- ✅ callback action
- ❌ Support invoking services
- ✅ async function (or Future)
- ✅ onDone/onError
- ❌ callback
- ❌ observables
- ❌ other beat station
- ❌ multiple services
- ✅ async function (or Future)
- ❌ Support
entryandexitevent - ❌ Support conditional (guarded) transition
- ❌ Support custom functions
- ❌ Support
instate condition
- ❌ Support
- ❌ Support custom functions
- ❌ Support eventless(always) transition
- ❌ Support internal transition
- ❌ Support external transition
- ❌ Support multiple targets
- ✅ Support any state transition
- ✅ BeatStation with common
Beatoption
- ✅ BeatStation with common
- ❌ Support actors
- ✅ Support
state.matchesas ais{State} - ❌ Support
state.nextEvents - ❌ Support
state.changed - ❌ Support
state.done - ❌ Support
state.meta,state.tags - ✅ Support state change history
- ❌ Support history json to persist
toString()is supported
- ❌ Support nested state
- ❌ Support parallel state
- ❌ Define parallel state
- ❌ Support multiple targets event
- ❌ Define parallel state
- ❌ Support scxml
- ❌ Support bootstraping
- ❌ Support CLI/GUI tools
- ❌ xstate.js compatible beat station
Features not supported by this package but in xstate.js #
- Final state is naturally defined which does not have any
Beatannotation state.toString(): naturally supportedstate.can(event)is not needed because we have typed system- wildcard transitions and forbidden transitions are not needed because there will be no typo
Additionals for flutter #
- ❌ Support beat-statation-friendly flutter widgets
- ❌ Support
remix.run's concept- ❌
loader- ❌
action(side effect) - ❌
ErrorBoundary/CatchBoundary
- ❌
- ❌