dispatcher.d.ts 1.4 KB

1234567891011121314151617
  1. import { AnyFunction, AnyFunctionMap } from "apollo-server-types";
  2. declare type Args<F> = F extends (...args: infer A) => any ? A : never;
  3. declare type AsFunction<F> = F extends AnyFunction ? F : never;
  4. declare type UnwrapPromise<T> = T extends Promise<infer U> ? U : T;
  5. declare type DidEndHook<TArgs extends any[]> = (...args: TArgs) => void;
  6. export declare class Dispatcher<T extends AnyFunctionMap> {
  7. protected targets: T[];
  8. constructor(targets: T[]);
  9. private callTargets;
  10. invokeHookAsync<TMethodName extends keyof T>(methodName: TMethodName, ...args: Args<T[TMethodName]>): Promise<ReturnType<AsFunction<T[TMethodName]>>[]>;
  11. invokeHookSync<TMethodName extends keyof T>(methodName: TMethodName, ...args: Args<T[TMethodName]>): ReturnType<AsFunction<T[TMethodName]>>[];
  12. reverseInvokeHookSync<TMethodName extends keyof T>(methodName: TMethodName, ...args: Args<T[TMethodName]>): ReturnType<AsFunction<T[TMethodName]>>[];
  13. invokeHooksUntilNonNull<TMethodName extends keyof T>(methodName: TMethodName, ...args: Args<T[TMethodName]>): Promise<UnwrapPromise<ReturnType<AsFunction<T[TMethodName]>>> | null>;
  14. invokeDidStartHook<TMethodName extends keyof T, TEndHookArgs extends Args<ReturnType<AsFunction<T[TMethodName]>>>>(methodName: TMethodName, ...args: Args<T[TMethodName]>): DidEndHook<TEndHookArgs>;
  15. }
  16. export {};
  17. //# sourceMappingURL=dispatcher.d.ts.map