Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

st8

dy3.7kMIT3.0.1

Tiny state machine

state, fsm, state machine, component, stateful

readme

st8 test npm

Tiny state machine for structural describing behavior of components.

Usage

$ npm install st8

Standalone state machine

import State from 'st8';

var state = new State({
    // enter, exit
    b: () => () => {},

    // enter shortcut, forwards to state d
    c: () => 'd',

    // shorter cut, redirects to state a
    d: 'a',

    // any other state
    _: 'a'
});


//enter state 'a', invoke corresponding callbacks
state.set('a');

//get current state
state.get(); // 'a'

Define stateful object property

import State from 'st8'

var state = new State({
    a() {
        // onenter
        this === target //true
    },

    b() {
        // onenter
        this === target //true
        return () => {
            // onexit
        }
    }

}, target);

Object.defineProperty(target, property, {
    set: function (value) {
        return state.set(value);
    },
    get: function () {
        return state.get();
    }
});

API

let state = new State(states [, context])

Create a new state machine based on the states object. Optionally pass a context for callbacks.

state.get()

Get current state.

state.set(value)

Transition to a new state, invoking necessary callbacks.

🕉