Minimal state machine implementation.
Heavily inspired by soveran/micromachine.
npm install micro-machine
var Machine = require('micro-machine')
, machine = new Machine('pending')
machine.transitionsFor.confirm = { pending: 'confirmed' }
machine.transitionsFor.reset = { confirmed: 'pending' }
machine.trigger('confirm')
console.log(machine.state) // 'confirmed'
machine.trigger('reset')
console.log(machine.state) // 'pending'
You can also define callbacks that will be invoked after the specified transition.
var Machine = require('micro-machine')
, machine = new Machine('pending')
machine.transitionsFor.confirm = { pending: 'confirmed' }
machine.transitionsFor.reset = { confirmed: 'pending' }
var state
/* Use 'any' to define callback for any transition. */
machine.on('any', function(machine){
state = machine.state
})
machine.on('reset', function() { console.log('resetting...') })
machine.trigger('confirm')
console.log(state) // 'confirmed'
machine.trigger('reset') // 'resetting...'
Run tests with
npm test
or build it with
npm run build
This repository and its contents belong to the public domain.
It has been released under the UNLICENSE.