11import { RetryOptions , TaskRunContext } from "../schemas/index.js" ;
22import { HandleErrorResult } from "../types/index.js" ;
33
4+ export type TaskInitOutput = Record < string , any > | void | undefined ;
5+
46export type TaskInitHookParams < TPayload = unknown > = {
57 ctx : TaskRunContext ;
68 payload : TPayload ;
79 task : string ;
810 signal ?: AbortSignal ;
911} ;
1012
11- export type OnInitHookFunction < TPayload , TInitOutput extends Record < string , unknown > > = (
13+ export type OnInitHookFunction < TPayload , TInitOutput extends TaskInitOutput > = (
1214 params : TaskInitHookParams < TPayload >
1315) => TInitOutput | undefined | void | Promise < TInitOutput | undefined | void > ;
1416
15- export type AnyOnInitHookFunction = OnInitHookFunction < unknown , Record < string , unknown > > ;
17+ export type AnyOnInitHookFunction = OnInitHookFunction < unknown , TaskInitOutput > ;
1618
17- export type TaskStartHookParams < TPayload = unknown > = {
19+ export type TaskStartHookParams <
20+ TPayload = unknown ,
21+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
22+ > = {
1823 ctx : TaskRunContext ;
1924 payload : TPayload ;
2025 task : string ;
2126 signal ?: AbortSignal ;
27+ init ?: TInitOutput ;
2228} ;
2329
24- export type OnStartHookFunction < TPayload > = (
25- params : TaskStartHookParams < TPayload >
30+ export type OnStartHookFunction < TPayload , TInitOutput extends TaskInitOutput = TaskInitOutput > = (
31+ params : TaskStartHookParams < TPayload , TInitOutput >
2632) => undefined | void | Promise < undefined | void > ;
2733
28- export type AnyOnStartHookFunction = OnStartHookFunction < unknown > ;
34+ export type AnyOnStartHookFunction = OnStartHookFunction < unknown , TaskInitOutput > ;
2935
30- export type TaskWaitHookParams < TPayload = unknown > = {
36+ export type TaskWaitHookParams <
37+ TPayload = unknown ,
38+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
39+ > = {
3140 ctx : TaskRunContext ;
3241 payload : TPayload ;
3342 task : string ;
3443 signal ?: AbortSignal ;
44+ init ?: TInitOutput ;
3545} ;
3646
37- export type OnWaitHookFunction < TPayload > = (
38- params : TaskWaitHookParams < TPayload >
47+ export type OnWaitHookFunction < TPayload , TInitOutput extends TaskInitOutput = TaskInitOutput > = (
48+ params : TaskWaitHookParams < TPayload , TInitOutput >
3949) => undefined | void | Promise < undefined | void > ;
4050
41- export type AnyOnWaitHookFunction = OnWaitHookFunction < unknown > ;
51+ export type AnyOnWaitHookFunction = OnWaitHookFunction < unknown , TaskInitOutput > ;
4252
43- export type TaskResumeHookParams < TPayload = unknown > = {
53+ export type TaskResumeHookParams <
54+ TPayload = unknown ,
55+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
56+ > = {
4457 ctx : TaskRunContext ;
4558 payload : TPayload ;
4659 task : string ;
4760 signal ?: AbortSignal ;
61+ init ?: TInitOutput ;
4862} ;
4963
50- export type OnResumeHookFunction < TPayload > = (
51- params : TaskResumeHookParams < TPayload >
64+ export type OnResumeHookFunction < TPayload , TInitOutput extends TaskInitOutput = TaskInitOutput > = (
65+ params : TaskResumeHookParams < TPayload , TInitOutput >
5266) => undefined | void | Promise < undefined | void > ;
5367
54- export type AnyOnResumeHookFunction = OnResumeHookFunction < unknown > ;
68+ export type AnyOnResumeHookFunction = OnResumeHookFunction < unknown , TaskInitOutput > ;
5569
56- export type TaskFailureHookParams < TPayload = unknown > = {
70+ export type TaskFailureHookParams <
71+ TPayload = unknown ,
72+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
73+ > = {
5774 ctx : TaskRunContext ;
5875 payload : TPayload ;
5976 task : string ;
6077 error : unknown ;
6178 signal ?: AbortSignal ;
79+ init ?: TInitOutput ;
6280} ;
6381
64- export type OnFailureHookFunction < TPayload > = (
65- params : TaskFailureHookParams < TPayload >
82+ export type OnFailureHookFunction < TPayload , TInitOutput extends TaskInitOutput = TaskInitOutput > = (
83+ params : TaskFailureHookParams < TPayload , TInitOutput >
6684) => undefined | void | Promise < undefined | void > ;
6785
68- export type AnyOnFailureHookFunction = OnFailureHookFunction < unknown > ;
86+ export type AnyOnFailureHookFunction = OnFailureHookFunction < unknown , TaskInitOutput > ;
6987
70- export type TaskSuccessHookParams < TPayload = unknown , TOutput = unknown > = {
88+ export type TaskSuccessHookParams <
89+ TPayload = unknown ,
90+ TOutput = unknown ,
91+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
92+ > = {
7193 ctx : TaskRunContext ;
7294 payload : TPayload ;
7395 task : string ;
7496 output : TOutput ;
7597 signal ?: AbortSignal ;
98+ init ?: TInitOutput ;
7699} ;
77100
78- export type OnSuccessHookFunction < TPayload , TOutput > = (
79- params : TaskSuccessHookParams < TPayload , TOutput >
101+ export type OnSuccessHookFunction <
102+ TPayload ,
103+ TOutput ,
104+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
105+ > = (
106+ params : TaskSuccessHookParams < TPayload , TOutput , TInitOutput >
80107) => undefined | void | Promise < undefined | void > ;
81108
82- export type AnyOnSuccessHookFunction = OnSuccessHookFunction < unknown , unknown > ;
109+ export type AnyOnSuccessHookFunction = OnSuccessHookFunction < unknown , unknown , TaskInitOutput > ;
83110
84111export type TaskCompleteSuccessResult < TOutput > = {
85112 ok : true ;
@@ -95,19 +122,28 @@ export type TaskCompleteResult<TOutput> =
95122 | TaskCompleteSuccessResult < TOutput >
96123 | TaskCompleteErrorResult ;
97124
98- export type TaskCompleteHookParams < TPayload = unknown , TOutput = unknown > = {
125+ export type TaskCompleteHookParams <
126+ TPayload = unknown ,
127+ TOutput = unknown ,
128+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
129+ > = {
99130 ctx : TaskRunContext ;
100131 payload : TPayload ;
101132 task : string ;
102133 result : TaskCompleteResult < TOutput > ;
103134 signal ?: AbortSignal ;
135+ init ?: TInitOutput ;
104136} ;
105137
106- export type OnCompleteHookFunction < TPayload , TOutput > = (
107- params : TaskCompleteHookParams < TPayload , TOutput >
138+ export type OnCompleteHookFunction <
139+ TPayload ,
140+ TOutput ,
141+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
142+ > = (
143+ params : TaskCompleteHookParams < TPayload , TOutput , TInitOutput >
108144) => undefined | void | Promise < undefined | void > ;
109145
110- export type AnyOnCompleteHookFunction = OnCompleteHookFunction < unknown , unknown > ;
146+ export type AnyOnCompleteHookFunction = OnCompleteHookFunction < unknown , unknown , TaskInitOutput > ;
111147
112148export type RegisterHookFunctionParams < THookFunction extends ( params : any ) => any > = {
113149 id ?: string ;
@@ -120,7 +156,10 @@ export type RegisteredHookFunction<THookFunction extends (params: any) => any> =
120156 fn : THookFunction ;
121157} ;
122158
123- export type TaskCatchErrorHookParams < TPayload = unknown > = {
159+ export type TaskCatchErrorHookParams <
160+ TPayload = unknown ,
161+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
162+ > = {
124163 ctx : TaskRunContext ;
125164 payload : TPayload ;
126165 task : string ;
@@ -129,13 +168,15 @@ export type TaskCatchErrorHookParams<TPayload = unknown> = {
129168 retryAt ?: Date ;
130169 retryDelayInMs ?: number ;
131170 signal ?: AbortSignal ;
171+ init ?: TInitOutput ;
132172} ;
133173
134- export type OnCatchErrorHookFunction < TPayload > = (
135- params : TaskCatchErrorHookParams < TPayload >
136- ) => HandleErrorResult ;
174+ export type OnCatchErrorHookFunction <
175+ TPayload ,
176+ TInitOutput extends TaskInitOutput = TaskInitOutput ,
177+ > = ( params : TaskCatchErrorHookParams < TPayload , TInitOutput > ) => HandleErrorResult ;
137178
138- export type AnyOnCatchErrorHookFunction = OnCatchErrorHookFunction < unknown > ;
179+ export type AnyOnCatchErrorHookFunction = OnCatchErrorHookFunction < unknown , TaskInitOutput > ;
139180
140181export type TaskMiddlewareHookParams < TPayload = unknown > = {
141182 ctx : TaskRunContext ;
0 commit comments