Skip to content

shime/micro-machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.