//#region src/aop/Advice.d.ts /** Shared metadata marker written by @Advice. */ export declare const IS_ADVICE: symbol; export interface AdviceContext { that: T; method: PropertyKey; args: any[]; adviceParams?: K; get(key: PropertyKey): any | undefined; set(set: PropertyKey, value: any): this; } /** * execute order: * 1. beforeCall * 1. around * 1. afterReturn/afterThrow * 1. afterFinally */ export interface IAdvice { /** * call before function * @param ctx */ beforeCall?(ctx: AdviceContext): Promise; /** * call after function succeed */ afterReturn?(ctx: AdviceContext, result: any): Promise; /** * call after function throw error */ afterThrow?(ctx: AdviceContext, error: Error): Promise; /** * always call after function done */ afterFinally?(ctx: AdviceContext): Promise; /** * execute the function * the only one can modify the function return value */ around?(ctx: AdviceContext, next: () => Promise): Promise; } //#endregion