`automata-reducer` example

import createAutomataReducer, { AutomataSpec, StandardAction } from '../src/'
import actions from './actions'
import log from './console'

interface State {
  state: string
  value: number
}

const automata: AutomataSpec = {
  'init': {
    IDLE: 'idle',
    INCREMENT: [increment, 'idle']
  },
  'idle': {
    RESET: ['init', reset],
    INCREMENT: increment
  }
}

const reducer = createAutomataReducer(automata, 'init')

const idle = reducer(void 0, actions.IDLE())
log('IDLE():')(idle) // IDLE(): {"state":"idle"}
const fourtytwo = reducer(idle, actions.INCREMENT(42))
log('INCREMENT(42):')(fourtytwo) // INCREMENT(42): {"state":"idle","value":42}
const init = reducer(fourtytwo, actions.RESET())
log('RESET():')(init) // RESET(): {"state":"init","value":0}