barakplasma / finite-state-machine

finite state machine library in Typescript

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Build Status Coverage Status MIT license

Finite State Machine

Tiny finite state machine library for fun and profit. See the tests for more usage examples.

Using this module in other modules

Here is a quick example of how this module can be used in other modules. The TypeScript Module Resolution Logic makes it quite easy. The file src/index.ts is a barrel that re-exports selected exports from other files. The package.json file contains main attribute that points to the generated lib/index.js file and typings attribute that points to the generated lib/index.d.ts file.

  • To use the FSM class in a TypeScript file -
import { FSM } from "@barakplasma/finite-state-machine";

const anFSM = new FSM();

anFSM.addState('on');
anFSM.addState('off');

anFSM.on({ inputName: 'toggle' }, () => {
    return new Map([['on', 'off'], ['off', 'on']]);
});

const { dispatch } = anFSM;

dispatch({ inputName: 'toggle' });

anFSM.getCurrentState() // 'off'
  • To use the FSM class in a JavaScript file -
const FSM = require('@barakplasma/finite-state-machine').FSM;

const anFSM = new FSM();

anFSM.addState('on');
anFSM.addState('off');

anFSM.on({ inputName: 'toggle' }, () => {
    return new Map([['on', 'off'], ['off', 'on']]);
});

const { dispatch } = anFSM;

dispatch({ inputName: 'toggle' });

anFSM.getCurrentState() // 'off'

finite-state-machine

About

finite state machine library in Typescript

License:MIT License


Languages

Language:TypeScript 100.0%