Home

Awesome

Micro Machine

Build Status

Minimal state machine implementation.

Heavily inspired by soveran/micromachine.

Installation

npm install micro-machine

Usage

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'

Callbacks

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...'

Development

Run tests with

npm test

or build it with

npm run build

Unlicense

This repository and its contents belong to the public domain.

It has been released under the UNLICENSE.