UNPKG

@resin/pinejs

Version:

Pine.js is a sophisticated rules-driven API engine that enables you to define rules in a structured subset of English. Those rules are used in order for Pine.js to generate a database schema and the associated [OData](http://www.odata.org/) API. This make

26 lines (25 loc) 954 B
import type { Resolvable } from './common-types'; import * as Bluebird from 'bluebird'; export declare type RollbackAction = () => Resolvable<void>; export declare type HookFn = (...args: any[]) => any; export interface HookBlueprint { HOOK: HookFn; effects: boolean; } export declare type InstantiatedHooks<T extends object> = { [key in keyof T]: Hook[]; }; export declare class Hook { private hookFn; constructor(hookFn: HookFn); run(...args: any[]): Promise<any>; } export declare class SideEffectHook extends Hook { private rollbackFns; private rolledBack; constructor(hookFn: HookFn); registerRollback(fn: RollbackAction): void; rollback(): Bluebird<void> | undefined; } export declare const rollbackRequestHooks: <T extends InstantiatedHooks<any>>(hooks: T | undefined) => void; export declare const instantiateHooks: <T extends { [key in keyof T]: HookBlueprint[]; }>(hooks: T) => InstantiatedHooks<T>;