From 90afed2c44df186910de2518354ca4e6fec292ca Mon Sep 17 00:00:00 2001 From: alexander-akait Date: Thu, 2 Oct 2025 07:51:32 +0300 Subject: [PATCH] feat(types): add `TypedHookMap` type --- tapable.d.ts | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tapable.d.ts b/tapable.d.ts index 60dba25..e2ca8c2 100644 --- a/tapable.d.ts +++ b/tapable.d.ts @@ -141,10 +141,10 @@ export class AsyncSeriesWaterfallHook< AdditionalOptions = UnsetAdditionalOptions > extends AsyncHook {} -type HookFactory = (key: any, hook?: H) => H; +type HookFactory = (key: K) => H; -interface HookMapInterceptor { - factory?: HookFactory; +interface HookMapInterceptor { + factory?: (key: K, hook: H) => H; } export class HookMap { @@ -155,6 +155,16 @@ export class HookMap { intercept(interceptor: HookMapInterceptor): void; } +type AnyHook = Hook; + +export class TypedHookMap> { + constructor(factory: HookFactory, name?: string); + name: string | undefined; + get(key: K): M[K] | undefined; + for(key: K): M[K]; + intercept(interceptor: HookMapInterceptor): void; +} + export class MultiHook { constructor(hooks: H[], name?: string); name: string | undefined;