Skip to content

Commit 0739a84

Browse files
committed
use new onStart
1 parent 4817b6b commit 0739a84

File tree

4 files changed

+169
-109
lines changed

4 files changed

+169
-109
lines changed

packages/core/src/v3/lifecycleHooks/adapters.ts

Lines changed: 37 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ import {
66
AnyOnSuccessHookFunction,
77
AnyOnCatchErrorHookFunction,
88
AnyOnMiddlewareHookFunction,
9+
TaskInitOutput,
10+
TaskSuccessHookParams,
11+
TaskFailureHookParams,
12+
TaskStartHookParams,
13+
TaskCatchErrorHookParams,
914
} from "./types.js";
1015

1116
export function createInitHookAdapter<TPayload>(
@@ -22,59 +27,59 @@ export function createInitHookAdapter<TPayload>(
2227
};
2328
}
2429

25-
export function createStartHookAdapter<TPayload>(
26-
fn: NonNullable<TaskOptions<string, TPayload, unknown, any>["onStart"]>
30+
export function createStartHookAdapter<
31+
TPayload,
32+
TInitOutput extends TaskInitOutput = TaskInitOutput,
33+
>(
34+
fn: NonNullable<TaskOptions<string, TPayload, unknown, TInitOutput>["onStart"]>
2735
): AnyOnStartHookFunction {
2836
return async (params) => {
29-
const paramsWithoutPayload = {
30-
...params,
31-
};
32-
33-
delete paramsWithoutPayload["payload"];
34-
35-
return await fn(params.payload as unknown as TPayload, paramsWithoutPayload);
37+
return await fn(
38+
params.payload as unknown as TPayload,
39+
params as TaskStartHookParams<TPayload, TInitOutput>
40+
);
3641
};
3742
}
3843

39-
export function createFailureHookAdapter<TPayload>(
40-
fn: NonNullable<TaskOptions<string, TPayload, unknown, any>["onFailure"]>
44+
export function createFailureHookAdapter<
45+
TPayload,
46+
TInitOutput extends TaskInitOutput = TaskInitOutput,
47+
>(
48+
fn: NonNullable<TaskOptions<string, TPayload, unknown, TInitOutput>["onFailure"]>
4149
): AnyOnFailureHookFunction {
4250
return async (params) => {
43-
const paramsWithoutPayload = {
44-
...params,
45-
};
46-
47-
delete paramsWithoutPayload["payload"];
48-
delete paramsWithoutPayload["error"];
49-
50-
return await fn(params.payload as unknown as TPayload, params.error, paramsWithoutPayload);
51+
return await fn(
52+
params.payload as unknown as TPayload,
53+
params.error,
54+
params as TaskFailureHookParams<TPayload, TInitOutput>
55+
);
5156
};
5257
}
5358

54-
export function createSuccessHookAdapter<TPayload, TOutput>(
55-
fn: NonNullable<TaskOptions<string, TPayload, TOutput, any>["onSuccess"]>
59+
export function createSuccessHookAdapter<TPayload, TOutput, TInitOutput extends TaskInitOutput>(
60+
fn: NonNullable<TaskOptions<string, TPayload, TOutput, TInitOutput>["onSuccess"]>
5661
): AnyOnSuccessHookFunction {
5762
return async (params) => {
58-
const paramsWithoutPayload = {
59-
...params,
60-
};
61-
62-
delete paramsWithoutPayload["payload"];
63-
delete paramsWithoutPayload["output"];
64-
6563
return await fn(
6664
params.payload as unknown as TPayload,
6765
params.output as unknown as TOutput,
68-
paramsWithoutPayload
66+
params as TaskSuccessHookParams<TPayload, TOutput, TInitOutput>
6967
);
7068
};
7169
}
7270

73-
export function createHandleErrorHookAdapter<TPayload>(
74-
fn: NonNullable<TaskOptions<string, TPayload, unknown, any>["handleError"]>
71+
export function createHandleErrorHookAdapter<
72+
TPayload,
73+
TInitOutput extends TaskInitOutput = TaskInitOutput,
74+
>(
75+
fn: NonNullable<TaskOptions<string, TPayload, unknown, TInitOutput>["handleError"]>
7576
): AnyOnCatchErrorHookFunction {
7677
return async (params) => {
77-
return await fn(params.payload as unknown as TPayload, params.error, params);
78+
return await fn(
79+
params.payload as unknown as TPayload,
80+
params.error,
81+
params as TaskCatchErrorHookParams<TPayload, TInitOutput>
82+
);
7883
};
7984
}
8085

packages/core/src/v3/lifecycleHooks/types.ts

Lines changed: 72 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,85 +1,112 @@
11
import { RetryOptions, TaskRunContext } from "../schemas/index.js";
22
import { HandleErrorResult } from "../types/index.js";
33

4+
export type TaskInitOutput = Record<string, any> | void | undefined;
5+
46
export 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

84111
export 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

112148
export 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

140181
export type TaskMiddlewareHookParams<TPayload = unknown> = {
141182
ctx: TaskRunContext;

0 commit comments

Comments
 (0)