HORPYNA

DESCRIPTION
This module is for better organizing chain processes with multiple branches.
It allows to design process flow by creating branches and setting conditions when
they should be called.
Main use case is to create flow template and reuse it with setting concrete functions instead of template ones.
Main unit is a Branch. Each branch accept condition function and action function.
Also each branch can accept next branches.
API
Horpyna(options: Object): branch
Creates new branches.
options
{
condition: Function,
action: Function,
branches: Object
}
- condition - function with condition to test
- action - function to call if condition pass
- branches - object where key is branch name and value a subbranch.
example
import Horpyna from "Horpyna";
const mainBranch = Horpyna({
condition: value => value > 10,
action: value => value + 1,
branches: {
maxBranch: Horpyna({
condition: value => value >= 15,
action: value => 15
})
}
});
mainBranch(10)
.then(console.log)
mainBranch(11)
.then(console.log)
mainBranch(15)
.then(console.log)
branch.changeCondition(condition: (value: any) => result: any): branch
Changes branch condition. Returns new branch with new condition.
example
import Horpyna from "Horpyna";
const mainBranch = Horpyna({
condition: value => value > 10,
action: value => value + 1,
});
const newMainBranch = mainBranch.changeCondition(value => value > 11);
mainBranch(11)
.then(console.log)
newMainBranch(11)
.then(console.log)
branch.changeAction(action: (value: any) => result: any): branch
Changes branch action. Returns new branch with new action.
example
import Horpyna from "Horpyna";
const mainBranch = Horpyna({
condition: value => value > 10,
action: value => value + 1,
});
const newMainBranch = mainBranch.changeAction(value => value + 2);
mainBranch(11)
.then(console.log)
newMainBranch(11)
.then(console.log)
branch.addBranch(branchName: String, subBranch: branch): branch
Adds additional branch to existing one
example
import Horpyna from "Horpyna";
const mainBranch = Horpyna({
condition: value => value > 10,
action: value => value + 1,
branches: {
maxBranch: Horpyna({
condition: value => value >= 15,
action: value => 15
})
}
});
const newMainBranch = mainBranch.addBranch("minBranch", Horpyna({
condition: value => value < 15,
action: value => value
}));
mainBranch(10)
.then(console.log)
newMainBranch(10)
.then(console.log)
Debugger
For easy debug this library run your script with
DEBUG=Horpyna <command to run>
LICENSE
MIT