Naivete Precedes Misrepresentation
    Wondering what’s next for npm?Check out our public roadmap! »

    fsmx

    1.0.2 • Public • Published

    FSMX Build Status

    Simple Finite State Machine based on async/await events and actions

    Documentation

    Setup

    import fsmx from 'fsmx'
    
    const fsm = new fsmx({
        initial: 'initial',
        actions: {
            waitForCmd: {from: ['initial', 'end', 'error'], to: 'wait'},
            listenForCmd: {from: 'wait', to: 'listen'},
            collectData: {from: 'listen', to: 'calculate'},
            giveAnswer: {from: 'calculate', to: 'speak'},
            endCmd: {from: 'speak', to: 'end'},
            wrongWay: {from: 'calculate', to: 'error'}
        },
        events: {
            async onLeaveState (from, to) {
                // do something asynchronous
            },
            async onEnterState (from, to) {
                // do something asynchronous
            }
        }
    })
    

    Initial parameters

    Name Type Default Required
    initial String undefined yes
    actions Object undefined yes
    actions[].from Array, String - yes
    actions[].to String - yes
    events Object {} no

    Methods

    fsm.is('initial') - check the current state

    fsm.can('wait') - check possibility to transition to some state from the current state

    fsm.reset() - reset the current state to initial

    // Call actions to transition between states
    (async () => {
        await fsm.waitForCmd()
        await fsm.listenForCmd()
        // ...
    })()
    

    Scripts

    yarn start - development

    yarn test - tests

    yarn test:watch - tests with watch flag

    yarn build - build

    yarn coverage - get coverage report

    Install

    npm i fsmx

    DownloadsWeekly Downloads

    7

    Version

    1.0.2

    License

    MIT

    Unpacked Size

    24.1 kB

    Total Files

    7

    Last publish

    Collaborators

    • avatar