Package Exports
- fsm-event
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (fsm-event) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
fsm-event
Stateful finite state machine wrapper around
fsm
.
Installation
$ npm install fsm-event
Usage
const fsm = require('fsm-event')
const m = fsm({
START: {
data: 'START',
pause: 'PAUSED',
end: 'END',
error: 'ERROR'
},
PAUSED: {
pause: 'PAUSED',
resume: 'START',
error: 'ERROR'
},
ERROR: {},
END: {}
})
m.on('PAUSED', () => console.log('paused state!'))
m.on('PAUSED:enter', cb => cb())
m.on('PAUSED:leave', cb => cb())
m('START')
API
const m = fsm(events)
Create a state machine.
m.on(event, cb)
Attach a listener to the state machine.
m(event)
Trigger an event on the state machine. Must be a valid state defined on
init. Alias: m.emit(event)
.
Events
Each state triggers 3 events. important: When listening to :enter
or
:leave
events, the callback must be called so that the state machine can
proceed to the next state.
<state> main state function
<state>:enter called when transitioning into state
<state>:leave called when transitioning away from state
Why?
Most state machines have overly complicated interfaces for managing state. The
fsm
state machine is stateless, so I wrote a stateful wrapper around it. This
allows me to managage application state without creating complex branches; my
direct use case for this was building stateful UI elements.
See Also
- fsm - Finite State Machines in javascript
- machina.js - js ex machina - finite state machines in JavaScript
- javascript-state-machine - A finite state machine javascript micro framework
- SimpleStateManager - browser width state manager