@elium/mighty
Version:
Context agnostic TS & JS ORM
25 lines (24 loc) • 866 B
TypeScript
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/mergeMap';
export interface IHook {
name: string;
map: <I, O>(input: I) => Observable<I | O>;
}
export declare class Hook implements IHook {
name: string;
map: <I, O>(input: I) => Observable<O>;
constructor(name: string, action: <I, O>(input: I) => Observable<I | O>);
}
export interface IHookable {
addHook(hook: IHook): any;
removeHook(hook: IHook): any;
applyHook<I, O>(name: string, input: I): Observable<I | O>;
}
export declare function hookable(constructor: Function): void;
export declare class Hookable implements IHookable {
hooks: Array<IHook>;
addHook: (hook: IHook) => void;
removeHook: (hook: IHook) => void;
applyHook: <I, O>(name: string, input: I) => Observable<I | O>;
}