statemachinejs

0.1.1 • Public • Published

StateMachineJS

Implementation of State Machine Pattern in JavaScript.

Get Started

  1. Define states in host object

    var app = {                     // host object for state machine
        states: [{                  // states definition
            name: 'STATE_A'         // state name
            entry: 'stateAEntry'    // state entry function
            exit: 'stateAExit'      // state exit function
            transitions: [{         // transitions definition
                trigger: 'event1'   // transition trigger
                dest: 'STATE_B'     // transition destination
                action: 'action1'   // transition action function
                guard: 'guard1'     // transition guard function
            }]
        }, {
            name: 'STATE_B'         // minimal state definition
        }],
     
        // host object is used as the context (`this`) of all state functions
     
        stateAEntry: function() {
            // this function will be called when entering STATE_A
        },
     
        stateAExit: function() {
            // this function will be called when leaving STATE_A
        },
     
        action1: function() {
            // this function will be called when "event1" transition is taking place
        },
     
        guard1: function() {
            // this function returns `false` to prevent "event1" transition from
            // happening
        }
    };
  2. Initialize host object

    StateMachine.init(app);
  3. Check current state

    app.getCurrentStateName();          // => 'STATE_A', app is now in the first state
  4. Trigger state transition

    app.handleStateTrigger('event1')
  5. Check current state again

    app.getCurrentStateName();          // => 'STATE_B', app is now in the STATE_B state

API Document

TODO

Readme

Keywords

none

Package Sidebar

Install

npm i statemachinejs

Weekly Downloads

1

Version

0.1.1

License

MIT

Last publish

Collaborators

  • jaux