Electrum command
The electrum-command
package provides a function to declare higher order
commands, which can be parameterized.
import Command from 'electrum-command';
const RESET = Command ('RESET', (_, state) => state.value = 0);
const INCREMENT = Command ('INCREMENT', ({step}, state) => state.value += step);
const INC_1 = INCREMENT ({step: 1});
const DEC_1 = INCREMENT ({step: -1});
let state = {value:0};
INC_1.run (state);
expect (state.value).to.equal (1);
INC_1.run (state);
expect (state.value).to.equal (2);
DEC_1.run (state);
expect (state.value).to.equal (1);
RESET.run (state);
expect (state.value).to.equal (0);
The parameterization of the concrete commands can be chained, simply
by invoking it as many times as needed:
const INC_1 = INCREMENT ({doc: 'adds one', version: '1.2.0'}) ({step: -1});