@@ -10,6 +10,7 @@ import {
1010 AnyOnWaitHookFunction ,
1111 AnyOnResumeHookFunction ,
1212 AnyOnCatchErrorHookFunction ,
13+ AnyOnMiddlewareHookFunction ,
1314} from "./types.js" ;
1415
1516export class StandardLifecycleHooksManager implements LifecycleHooksManager {
@@ -46,6 +47,11 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
4647 private taskCatchErrorHooks : Map < string , RegisteredHookFunction < AnyOnCatchErrorHookFunction > > =
4748 new Map ( ) ;
4849
50+ private globalMiddlewareHooks : Map < string , RegisteredHookFunction < AnyOnMiddlewareHookFunction > > =
51+ new Map ( ) ;
52+ private taskMiddlewareHooks : Map < string , RegisteredHookFunction < AnyOnMiddlewareHookFunction > > =
53+ new Map ( ) ;
54+
4955 registerGlobalStartHook ( hook : RegisterHookFunctionParams < AnyOnStartHookFunction > ) : void {
5056 const id = generateHookId ( hook ) ;
5157
@@ -298,6 +304,39 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
298304 getGlobalCatchErrorHooks ( ) : RegisteredHookFunction < AnyOnCatchErrorHookFunction > [ ] {
299305 return Array . from ( this . globalCatchErrorHooks . values ( ) ) ;
300306 }
307+
308+ registerGlobalMiddlewareHook (
309+ hook : RegisterHookFunctionParams < AnyOnMiddlewareHookFunction >
310+ ) : void {
311+ const id = generateHookId ( hook ) ;
312+
313+ this . globalMiddlewareHooks . set ( id , {
314+ id,
315+ name : hook . id ?? hook . fn . name ? ( hook . fn . name === "" ? undefined : hook . fn . name ) : undefined ,
316+ fn : hook . fn ,
317+ } ) ;
318+ }
319+
320+ registerTaskMiddlewareHook (
321+ taskId : string ,
322+ hook : RegisterHookFunctionParams < AnyOnMiddlewareHookFunction >
323+ ) : void {
324+ const id = generateHookId ( hook ) ;
325+
326+ this . taskMiddlewareHooks . set ( taskId , {
327+ id,
328+ name : hook . id ?? hook . fn . name ? ( hook . fn . name === "" ? undefined : hook . fn . name ) : undefined ,
329+ fn : hook . fn ,
330+ } ) ;
331+ }
332+
333+ getTaskMiddlewareHook ( taskId : string ) : AnyOnMiddlewareHookFunction | undefined {
334+ return this . taskMiddlewareHooks . get ( taskId ) ?. fn ;
335+ }
336+
337+ getGlobalMiddlewareHooks ( ) : RegisteredHookFunction < AnyOnMiddlewareHookFunction > [ ] {
338+ return Array . from ( this . globalMiddlewareHooks . values ( ) ) ;
339+ }
301340}
302341
303342export class NoopLifecycleHooksManager implements LifecycleHooksManager {
@@ -449,6 +488,22 @@ export class NoopLifecycleHooksManager implements LifecycleHooksManager {
449488 getGlobalCatchErrorHooks ( ) : [ ] {
450489 return [ ] ;
451490 }
491+
492+ registerGlobalMiddlewareHook ( ) : void {
493+ // Noop
494+ }
495+
496+ registerTaskMiddlewareHook ( ) : void {
497+ // Noop
498+ }
499+
500+ getTaskMiddlewareHook ( ) : undefined {
501+ return undefined ;
502+ }
503+
504+ getGlobalMiddlewareHooks ( ) : [ ] {
505+ return [ ] ;
506+ }
452507}
453508
454509function generateHookId ( hook : RegisterHookFunctionParams < any > ) : string {
0 commit comments