UNPKG

octonom

Version:

Object Document Mapper for any database

28 lines (27 loc) 1.22 kB
import { Model } from './model'; import { ISchemaInstance, Path } from './schema/schema'; export interface IChangeHookOptions<TModel extends Model> { path: Path; value: any; modelInstance: TModel; schemaInstance: ISchemaInstance; } export interface IChangeHooks<TModel extends Model = Model> { beforeChange?(options: IChangeHookOptions<TModel>): any; afterChange?(options: IChangeHookOptions<TModel>): any; } export declare type IHooks<TModel extends Model = Model> = IChangeHooks<TModel>; export interface IHookOptionsMap<TModel extends Model> { beforeChange: IChangeHookOptions<TModel>; afterChange: IChangeHookOptions<TModel>; } export declare type hookHandlers<TOptions> = Array<(options: TOptions) => void>; export declare type HookHandlersMap<TModel extends Model> = { [k in keyof IHookOptionsMap<TModel>]: hookHandlers<IHookOptionsMap<TModel>[k]>; }; export declare class Hooks<TModel extends Model> { private handlers; constructor(hooks?: Hooks<TModel>); register<K extends keyof HookHandlersMap<TModel>>(name: K, handler: HookHandlersMap<TModel>[K][0]): void; run<K extends keyof IHookOptionsMap<TModel>>(name: K, options: IHookOptionsMap<TModel>[K]): void; }