@@ -11,6 +11,7 @@ import {
1111 AnyOnResumeHookFunction ,
1212 AnyOnCatchErrorHookFunction ,
1313 AnyOnMiddlewareHookFunction ,
14+ AnyOnCleanupHookFunction ,
1415} from "./types.js" ;
1516
1617export class StandardLifecycleHooksManager implements LifecycleHooksManager {
@@ -52,6 +53,11 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
5253 private taskMiddlewareHooks : Map < string , RegisteredHookFunction < AnyOnMiddlewareHookFunction > > =
5354 new Map ( ) ;
5455
56+ private globalCleanupHooks : Map < string , RegisteredHookFunction < AnyOnCleanupHookFunction > > =
57+ new Map ( ) ;
58+ private taskCleanupHooks : Map < string , RegisteredHookFunction < AnyOnCleanupHookFunction > > =
59+ new Map ( ) ;
60+
5561 registerGlobalStartHook ( hook : RegisterHookFunctionParams < AnyOnStartHookFunction > ) : void {
5662 const id = generateHookId ( hook ) ;
5763
@@ -337,6 +343,37 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
337343 getGlobalMiddlewareHooks ( ) : RegisteredHookFunction < AnyOnMiddlewareHookFunction > [ ] {
338344 return Array . from ( this . globalMiddlewareHooks . values ( ) ) ;
339345 }
346+
347+ registerGlobalCleanupHook ( hook : RegisterHookFunctionParams < AnyOnCleanupHookFunction > ) : void {
348+ const id = generateHookId ( hook ) ;
349+
350+ this . globalCleanupHooks . set ( id , {
351+ id,
352+ name : hook . id ,
353+ fn : hook . fn ,
354+ } ) ;
355+ }
356+
357+ registerTaskCleanupHook (
358+ taskId : string ,
359+ hook : RegisterHookFunctionParams < AnyOnCleanupHookFunction >
360+ ) : void {
361+ const id = generateHookId ( hook ) ;
362+
363+ this . taskCleanupHooks . set ( taskId , {
364+ id,
365+ name : hook . id ,
366+ fn : hook . fn ,
367+ } ) ;
368+ }
369+
370+ getTaskCleanupHook ( taskId : string ) : AnyOnCleanupHookFunction | undefined {
371+ return this . taskCleanupHooks . get ( taskId ) ?. fn ;
372+ }
373+
374+ getGlobalCleanupHooks ( ) : RegisteredHookFunction < AnyOnCleanupHookFunction > [ ] {
375+ return Array . from ( this . globalCleanupHooks . values ( ) ) ;
376+ }
340377}
341378
342379export class NoopLifecycleHooksManager implements LifecycleHooksManager {
@@ -504,6 +541,25 @@ export class NoopLifecycleHooksManager implements LifecycleHooksManager {
504541 getGlobalMiddlewareHooks ( ) : [ ] {
505542 return [ ] ;
506543 }
544+
545+ registerGlobalCleanupHook ( hook : RegisterHookFunctionParams < AnyOnCleanupHookFunction > ) : void {
546+ // Noop
547+ }
548+
549+ registerTaskCleanupHook (
550+ taskId : string ,
551+ hook : RegisterHookFunctionParams < AnyOnCleanupHookFunction >
552+ ) : void {
553+ // Noop
554+ }
555+
556+ getTaskCleanupHook ( taskId : string ) : AnyOnCleanupHookFunction | undefined {
557+ return undefined ;
558+ }
559+
560+ getGlobalCleanupHooks ( ) : RegisteredHookFunction < AnyOnCleanupHookFunction > [ ] {
561+ return [ ] ;
562+ }
507563}
508564
509565function generateHookId ( hook : RegisterHookFunctionParams < any > ) : string {
0 commit comments