gurdasnijor / observable-fsm

An Observable interface to a Finite State Machine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

observable-fsm

Library for producing an Observable that represents a sequence of states in a state machine being transisitoned by a corresponding Observable sequence of events

Inspired by rx-state-machine

FSM

const stateMachineDefinition = {
  'CLOSED': {
    'open': 'OPEN',
    'lock': 'LOCKED'
  },
  'OPEN': {
    'close': 'CLOSED'
  },
  'LOCKED': {
    'unlock': 'CLOSED',
    'break': 'BROKEN'
  },
  'BROKEN': {
    'fix': 'OPEN'
   }
};
const eventStream =
  Observable.from(['open', 'close', 'lock']);

const doorObs$ =
  observableSM(stateMachineDefinition, 'CLOSED', eventStream);


doorObs$.subscribe(
  state => console.log(state)
);
// => 'OPEN'
// => 'CLOSED'
// => 'LOCKED'

About

An Observable interface to a Finite State Machine

License:MIT License


Languages

Language:TypeScript 76.2%Language:JavaScript 23.8%