0.1.1 • Published 5 years ago
@ainc/onion v0.1.1
@ainc/onion
Let's do something nice with @ainc/onion!
Install
$ yarn add @ainc/onionUsage
import { Onion } from '@ainc/onion';
// create onion
const onion = new Onion();
// add `increase` action.
onion.add('increase', ctx => {
ctx.count ++;
ctx.next();
});
// add `decrease` action.
onion.add('decrease', ctx => {
ctx.count --;
ctx.next();
});
// add common action.
onion.add(ctx => {
ctx.count >= 3 && ctx.next();
});
// call untyped action, this will output '3'.
onion.call({ count: 3 }, (res) => console.log(res.count));
// call 'increase' action, this will output '4'.
onion.call('increase', { count: 3 }, (res) => console.log(res.count));
// call 'decrease' action, this will no output.
onion.call('decrease', { count: 3 }, (res) => console.log(res.count));API
add(type: string, handler: Handler<T>): () => void;add(handler: Handler<T>): () => void;call(type: string, state?: T, callback?: Callback<T>): void | Promise<void>;call(action?: Action<T>, callback?: Callback<T>): void | Promise<void>;clear(): void;