|
9 | 9 | AnyOnCompleteHookFunction, |
10 | 10 | AnyOnWaitHookFunction, |
11 | 11 | AnyOnResumeHookFunction, |
| 12 | + AnyOnHandleErrorHookFunction, |
12 | 13 | } from "./types.js"; |
13 | 14 |
|
14 | 15 | export class StandardLifecycleHooksManager implements LifecycleHooksManager { |
@@ -40,6 +41,13 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager { |
40 | 41 | new Map(); |
41 | 42 | private taskResumeHooks: Map<string, RegisteredHookFunction<AnyOnResumeHookFunction>> = new Map(); |
42 | 43 |
|
| 44 | + private globalHandleErrorHooks: Map< |
| 45 | + string, |
| 46 | + RegisteredHookFunction<AnyOnHandleErrorHookFunction> |
| 47 | + > = new Map(); |
| 48 | + private taskHandleErrorHooks: Map<string, RegisteredHookFunction<AnyOnHandleErrorHookFunction>> = |
| 49 | + new Map(); |
| 50 | + |
43 | 51 | registerGlobalStartHook(hook: RegisterHookFunctionParams<AnyOnStartHookFunction>): void { |
44 | 52 | const id = generateHookId(hook); |
45 | 53 |
|
@@ -259,6 +267,39 @@ export class StandardLifecycleHooksManager implements LifecycleHooksManager { |
259 | 267 | getGlobalResumeHooks(): RegisteredHookFunction<AnyOnResumeHookFunction>[] { |
260 | 268 | return Array.from(this.globalResumeHooks.values()); |
261 | 269 | } |
| 270 | + |
| 271 | + registerGlobalHandleErrorHook( |
| 272 | + hook: RegisterHookFunctionParams<AnyOnHandleErrorHookFunction> |
| 273 | + ): void { |
| 274 | + const id = generateHookId(hook); |
| 275 | + |
| 276 | + this.globalHandleErrorHooks.set(id, { |
| 277 | + id, |
| 278 | + name: hook.id ?? hook.fn.name ? (hook.fn.name === "" ? undefined : hook.fn.name) : undefined, |
| 279 | + fn: hook.fn, |
| 280 | + }); |
| 281 | + } |
| 282 | + |
| 283 | + registerTaskHandleErrorHook( |
| 284 | + taskId: string, |
| 285 | + hook: RegisterHookFunctionParams<AnyOnHandleErrorHookFunction> |
| 286 | + ): void { |
| 287 | + const id = generateHookId(hook); |
| 288 | + |
| 289 | + this.taskHandleErrorHooks.set(taskId, { |
| 290 | + id, |
| 291 | + name: hook.id ?? hook.fn.name ? (hook.fn.name === "" ? undefined : hook.fn.name) : undefined, |
| 292 | + fn: hook.fn, |
| 293 | + }); |
| 294 | + } |
| 295 | + |
| 296 | + getTaskHandleErrorHook(taskId: string): AnyOnHandleErrorHookFunction | undefined { |
| 297 | + return this.taskHandleErrorHooks.get(taskId)?.fn; |
| 298 | + } |
| 299 | + |
| 300 | + getGlobalHandleErrorHooks(): RegisteredHookFunction<AnyOnHandleErrorHookFunction>[] { |
| 301 | + return Array.from(this.globalHandleErrorHooks.values()); |
| 302 | + } |
262 | 303 | } |
263 | 304 |
|
264 | 305 | export class NoopLifecycleHooksManager implements LifecycleHooksManager { |
@@ -394,6 +435,27 @@ export class NoopLifecycleHooksManager implements LifecycleHooksManager { |
394 | 435 | getGlobalResumeHooks(): RegisteredHookFunction<AnyOnResumeHookFunction>[] { |
395 | 436 | return []; |
396 | 437 | } |
| 438 | + |
| 439 | + registerGlobalHandleErrorHook( |
| 440 | + hook: RegisterHookFunctionParams<AnyOnHandleErrorHookFunction> |
| 441 | + ): void { |
| 442 | + // Noop |
| 443 | + } |
| 444 | + |
| 445 | + registerTaskHandleErrorHook( |
| 446 | + taskId: string, |
| 447 | + hook: RegisterHookFunctionParams<AnyOnHandleErrorHookFunction> |
| 448 | + ): void { |
| 449 | + // Noop |
| 450 | + } |
| 451 | + |
| 452 | + getTaskHandleErrorHook(taskId: string): AnyOnHandleErrorHookFunction | undefined { |
| 453 | + return undefined; |
| 454 | + } |
| 455 | + |
| 456 | + getGlobalHandleErrorHooks(): RegisteredHookFunction<AnyOnHandleErrorHookFunction>[] { |
| 457 | + return []; |
| 458 | + } |
397 | 459 | } |
398 | 460 |
|
399 | 461 | function generateHookId(hook: RegisterHookFunctionParams<any>): string { |
|
0 commit comments