Tiny (<1kb), expressive, Svelte-optimized Finite State Machine (FSM) library
npm install svelte-fsm
A tiny, simple, expressive, pramgmatic Finite State
Machine (FSM) library, optimized for
Svelte.
* tiny: under 1kb (minified); zero dependencies
* simple: implements core FSM features, not the kitchen sink
* expressive: FSM constructs are mapped to core JavaScript features (see
Usage Overview below)
* pragmatic: prioritizes developer happiness over strict adherance to FSM or Statechart
formalizations
* Svelte-optimized: implements Svelte's
store contract;
philosophically aligned – feels at-home in a Svelte codebase
``bash`
npm install svelte-fsm
`svelte
`
Svelte FSM's API is delightfully simple. FSM constructs are intuitively mapped to core JavaScript
language features, resulting in a highly expressive API that's effortless to remember, a joy to
write, and natural to read.
* an fsm is defined by calling the default export fsm() function with 2 arguments: initialstates
and state
* states is just an object consisting of nested objects, which consist of…state
* transitions – property values or action return values that match another state
* actions – functions that optionally transition (return a ).debounce(wait)
* events are invoked on a state machine as function calls, returning the resulting state
* timers (often used in state machines) are available by calling on any event
context is just… context* (i.e., the lexical scope of your fsm)
* Watch the Lightning Talk from
Svelte Summit Fall 2021
* Review the Full Documentation
* Check out the Examples
* Thank you @ivanhofer for contributing TypeScriptsubscribe`
declarations, resulting in an improved developer experience.
* Thank you @morungos for contributing a fix for
#8 (derived stores) by eliminating
overloading.