Get unlimited public & private packages + package-based permissions with npm Pro.Get started »

@cloudcmd/state

2.0.0 • Public • Published

State License NPM version Dependency Status Build Status Coverage Status

Simplest possible state machine.

Install

npm i @cloudcmd/state --save

How to use?

const simpleState = require('@cloudcmd/state');
const states = {
    'init': ['process'],
    'process': ['error', 'ok'],
    'error': [],
    'ok': [],
};
 
const stateMachine = simpleState('init', states);
 
stateMachine.on('state-not-found', (name) => {
    console.error('state not found:', name);
})
 
stateMachine.on('before-next-state', (name) => {
    console.log(`before next state: ${name}`);
})
 
stateMachine.on('next-state', (name) => {
    console.log(`next state: ${name}`);
})
 
stateMachine.on('after-next-state', (name) => {
    console.log(`after next state: ${name}`);
})
 
stateMachine.on('before:next-state:init') => {
    console.log('before some kind of init');
})
 
stateMachine.on('next-state:init') => {
    console.log('some kind of init');
});
 
stateMachine.on('after:next-state:init') => {
    console.log('after some kind of init');
})
 
const {setNext} = stateMachine;
 
const [status, processName] = setNext('process');
// returns
[true, 'process']
 
const [status] = setNext('hello');
// returns
[false];
 
setNext('error');
// returns
[true, 'error']

Related

  • zames - converts callback-based functions to Promises and apply currying to arguments.

  • currify - translate the evaluation of a function that takes multiple arguments into evaluating a sequence of functions, each with a single or more arguments.

  • fullstore - functional variables.

License

MIT

Install

npm i @cloudcmd/state

DownloadsWeekly Downloads

0

Version

2.0.0

License

MIT

Unpacked Size

6.49 kB

Total Files

5

Last publish

Collaborators

  • avatar