UNPKG

surrogate

Version:

Object method hooks made easy

83 lines (82 loc) 3.45 kB
import type { Action, SurrogateForOptions, SurrogateDelegateOptions, SurrogateDecorateOptions } from './interfaces'; type PropertyDecorator<T extends object> = (target: T, property: Action<T>) => void; /** * @description Register class for automatic surrogate wrapping * * @export * @decorator * @template T * @param {SurrogateDecorateOptions<T>} [delegateOptions={}] */ export declare const SurrogateDelegate: <T extends object>(delegateOptions?: SurrogateDecorateOptions<T>) => <K extends Function>(klass: K) => K; /** * @description Registers hooks for decorated methods. Handler type must be assigned. * * @export * @decorator * @template T * @param {(SurrogateForOptions<T> | SurrogateForOptions<T>[])} forOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogateFor: <T extends object>(forOptions: SurrogateForOptions<T, any, any> | SurrogateForOptions<T, any, any>[]) => PropertyDecorator<T>; /** * @description Registers pre and post hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogatePreAndPost: <T extends object>(decoratorOptions: SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[]) => PropertyDecorator<T>; /** * @description Registers pre hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogatePre: <T extends object>(decoratorOptions: SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[]) => PropertyDecorator<T>; /** * @description Registers post hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogatePost: <T extends object>(decoratorOptions: SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[]) => PropertyDecorator<T>; /** * @description Registers async pre and post hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogateAsyncPreAndPost: <T extends object>(decoratorOptions: SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[]) => PropertyDecorator<T>; /** * @description Registers async post hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogateAsyncPost: <T extends object, Arguments extends any[] = any, Result = any>(decoratorOptions: SurrogateDelegateOptions<T, Arguments, Result> | SurrogateDelegateOptions<T, Arguments, Result>[]) => PropertyDecorator<T>; /** * @description Registers async pre hooks for decorated methods * * @export * @decorator * @template T * @param {(SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[])} decoratorOptions * @returns {PropertyDecorator<T>} */ export declare const SurrogateAsyncPre: <T extends object>(decoratorOptions: SurrogateDelegateOptions<T> | SurrogateDelegateOptions<T>[]) => PropertyDecorator<T>; export {};