fsm-vir
TypeScript icon, indicating that this package has built-in type declarations

2.0.0 • Public • Published

fsm-vir

The simple state machine runner. Can be used to quickly create Mealy or Moore finite state machines.

Install

npm i fsm-vir

Usage

Full type docs are here: https://electrovir.github.io/fsm-vir Here's an example usage:

import {runFsm} from 'fsm-vir';

runFsm({
    /** The initial state of the state machine. */
    initState: 'start',
    /** Any iterable of values to process. */
    inputs: [
        'a',
        'b',
        'c',
        'd',
        'e',
    ],
    /** Calculate the next state for the current input. */
    nextState({input}) {
        if (input === 'b') {
            return {
                /** Return `nextState` to update the current state to a new value. */
                nextState: 'next',
            };
        } else if (input === 'd') {
            return {
                /** Return `stop: true` to halt input processing and the state machine as a whole. */
                stop: true,
            };
        } else {
            /** Return `undefined` to not perform any state updates. */
            return undefined;
        }
    },
    /** Optionally perform actions for each processed input. */
    actions: {
        preNextState({input, state}) {
            /** Do some action here before the next state is calculated. */
        },
        postNextState({input, state}) {
            /** Do some action here after the next state is calculated. */
        },
    },
});

Package Sidebar

Install

npm i fsm-vir

Weekly Downloads

75

Version

2.0.0

License

(MIT or CC0 1.0)

Unpacked Size

16.7 kB

Total Files

10

Last publish

Collaborators

  • electrovir