@botol/dipo
Version:
## Simple Composite controller
16 lines (15 loc) • 727 B
TypeScript
import { Context } from './context';
import { Handler } from './handler';
export declare type DipoEvent<T extends Context, C extends Context = Context> = (handler: Handler<T>) => Handler<C>;
export declare function CreateEvent<T extends Context, C extends Context = Context>(event: DipoEvent<T, C>): DipoEvent<T, C>;
export declare function CreateEvents<C extends Context, T extends {
[key: string]: DipoEvent<Context, C>;
}>(events: {
[key in keyof T]: DipoEvent<T[key], C>;
}): {
[key in keyof T]: DipoEvent<T[key], C>;
};
export declare type ExtractContext<E> = E extends DipoEvent<infer T, any> ? T : never;
export declare type ExtractContexts<T> = {
[P in keyof T]: ExtractContext<T[P]>;
};