44 LifecycleHooksManager ,
55 RegisteredHookFunction ,
66 RegisterHookFunctionParams ,
7+ AnyOnFailureHookFunction ,
78} from "./types.js" ;
89
910export class StandardLifecycleHooksManager implements LifecycleHooksManager {
@@ -13,6 +14,11 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
1314 private globalStartHooks : Map < string , RegisteredHookFunction < AnyOnStartHookFunction > > = new Map ( ) ;
1415 private taskStartHooks : Map < string , RegisteredHookFunction < AnyOnStartHookFunction > > = new Map ( ) ;
1516
17+ private globalFailureHooks : Map < string , RegisteredHookFunction < AnyOnFailureHookFunction > > =
18+ new Map ( ) ;
19+ private taskFailureHooks : Map < string , RegisteredHookFunction < AnyOnFailureHookFunction > > =
20+ new Map ( ) ;
21+
1622 registerGlobalStartHook ( hook : RegisterHookFunctionParams < AnyOnStartHookFunction > ) : void {
1723 const id = generateHookId ( hook ) ;
1824
@@ -77,6 +83,37 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager {
7783 getGlobalInitHooks ( ) : RegisteredHookFunction < AnyOnInitHookFunction > [ ] {
7884 return Array . from ( this . globalInitHooks . values ( ) ) ;
7985 }
86+
87+ registerGlobalFailureHook ( hook : RegisterHookFunctionParams < AnyOnFailureHookFunction > ) : void {
88+ const id = generateHookId ( hook ) ;
89+
90+ this . globalFailureHooks . set ( id , {
91+ id,
92+ name : hook . id ?? hook . fn . name ? ( hook . fn . name === "" ? undefined : hook . fn . name ) : undefined ,
93+ fn : hook . fn ,
94+ } ) ;
95+ }
96+
97+ registerTaskFailureHook (
98+ taskId : string ,
99+ hook : RegisterHookFunctionParams < AnyOnFailureHookFunction >
100+ ) : void {
101+ const id = generateHookId ( hook ) ;
102+
103+ this . taskFailureHooks . set ( taskId , {
104+ id,
105+ name : hook . id ?? hook . fn . name ? ( hook . fn . name === "" ? undefined : hook . fn . name ) : undefined ,
106+ fn : hook . fn ,
107+ } ) ;
108+ }
109+
110+ getTaskFailureHook ( taskId : string ) : AnyOnFailureHookFunction | undefined {
111+ return this . taskFailureHooks . get ( taskId ) ?. fn ;
112+ }
113+
114+ getGlobalFailureHooks ( ) : RegisteredHookFunction < AnyOnFailureHookFunction > [ ] {
115+ return Array . from ( this . globalFailureHooks . values ( ) ) ;
116+ }
80117}
81118
82119export class NoopLifecycleHooksManager implements LifecycleHooksManager {
@@ -117,6 +154,25 @@ export class NoopLifecycleHooksManager implements LifecycleHooksManager {
117154 getGlobalStartHooks ( ) : RegisteredHookFunction < AnyOnStartHookFunction > [ ] {
118155 return [ ] ;
119156 }
157+
158+ registerGlobalFailureHook ( hook : RegisterHookFunctionParams < AnyOnFailureHookFunction > ) : void {
159+ // Noop
160+ }
161+
162+ registerTaskFailureHook (
163+ taskId : string ,
164+ hook : RegisterHookFunctionParams < AnyOnFailureHookFunction >
165+ ) : void {
166+ // Noop
167+ }
168+
169+ getTaskFailureHook ( taskId : string ) : AnyOnFailureHookFunction | undefined {
170+ return undefined ;
171+ }
172+
173+ getGlobalFailureHooks ( ) : RegisteredHookFunction < AnyOnFailureHookFunction > [ ] {
174+ return [ ] ;
175+ }
120176}
121177
122178function generateHookId ( hook : RegisterHookFunctionParams < any > ) : string {
0 commit comments