Stateful finite state machine wrapper around fsm
npm install fsm-eventStateful finite state machine wrapper aroundfsm. Emits events when transitioning
states.
bash
$ npm install fsm-event
`Usage
`js
const fsm = require('fsm-event')const m = fsm('START', {
START: { pause: 'PAUSED' },
PAUSED: { resume: 'START' }
})
m.on('START:leave', cb => console.log('leaving start!'); cb())
m.on('PAUSED', () => console.log('paused state!'))
m('pause')
// 'leaving start'
// 'paused state!'
`API
$3
Create a state machine. start defaults to START.$3
Attach a listener to the state machine. See events for an overview
of all events.$3
Transition states in the state machine. Must be a valid transition defined on
initalization. Will throw if an invalid transition is triggered. Alias:
m.emit(event).Events
Each state transition 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.
`txt
error incorrect transition
when new state is entered
:enter when transitioning into state
:leave when transitioning away from state
done when state transition finished
``[npm-image]: https://img.shields.io/npm/v/fsm-event.svg?style=flat-square
[npm-url]: https://npmjs.org/package/fsm-event
[travis-image]: https://img.shields.io/travis/yoshuawuyts/fsm-event/master.svg?style=flat-square
[travis-url]: https://travis-ci.org/yoshuawuyts/fsm-event
[coveralls-image]: https://img.shields.io/coveralls/yoshuawuyts/fsm-event.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/yoshuawuyts/fsm-event?branch=master
[downloads-image]: http://img.shields.io/npm/dm/fsm-event.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/fsm-event
[standard-image]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[standard-url]: https://github.com/feross/standard