Skip to content

Commit c50437a

Browse files
committed
Add middleware hooks
1 parent 1c7b729 commit c50437a

File tree

5 files changed

+49
-14
lines changed

5 files changed

+49
-14
lines changed

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
AnyOnCompleteHookFunction,
88
AnyOnFailureHookFunction,
99
AnyOnInitHookFunction,
10+
AnyOnMiddlewareHookFunction,
1011
AnyOnResumeHookFunction,
1112
AnyOnStartHookFunction,
1213
AnyOnSuccessHookFunction,
@@ -199,6 +200,27 @@ export class LifecycleHooksAPI {
199200
return this.#getManager().getGlobalCatchErrorHooks();
200201
}
201202

203+
public registerGlobalMiddlewareHook(
204+
hook: RegisterHookFunctionParams<AnyOnMiddlewareHookFunction>
205+
): void {
206+
this.#getManager().registerGlobalMiddlewareHook(hook);
207+
}
208+
209+
public registerTaskMiddlewareHook(
210+
taskId: string,
211+
hook: RegisterHookFunctionParams<AnyOnMiddlewareHookFunction>
212+
): void {
213+
this.#getManager().registerTaskMiddlewareHook(taskId, hook);
214+
}
215+
216+
public getTaskMiddlewareHook(taskId: string): AnyOnMiddlewareHookFunction | undefined {
217+
return this.#getManager().getTaskMiddlewareHook(taskId);
218+
}
219+
220+
public getGlobalMiddlewareHooks(): RegisteredHookFunction<AnyOnMiddlewareHookFunction>[] {
221+
return this.#getManager().getGlobalMiddlewareHooks();
222+
}
223+
202224
#getManager(): LifecycleHooksManager {
203225
return getGlobal(API_NAME) ?? NOOP_LIFECYCLE_HOOKS_MANAGER;
204226
}

packages/trigger-sdk/src/v3/hooks.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
type AnyOnWaitHookFunction,
1111
type AnyOnResumeHookFunction,
1212
type AnyOnCatchErrorHookFunction,
13+
type AnyOnMiddlewareHookFunction,
1314
} from "@trigger.dev/core/v3";
1415

1516
export type {
@@ -23,6 +24,7 @@ export type {
2324
AnyOnWaitHookFunction,
2425
AnyOnResumeHookFunction,
2526
AnyOnCatchErrorHookFunction,
27+
AnyOnMiddlewareHookFunction,
2628
};
2729

2830
export function onStart(name: string, fn: AnyOnStartHookFunction): void;
@@ -117,3 +119,15 @@ export function onCatchError(
117119
fn: typeof fnOrName === "function" ? fnOrName : fn!,
118120
});
119121
}
122+
123+
export function middleware(name: string, fn: AnyOnMiddlewareHookFunction): void;
124+
export function middleware(fn: AnyOnMiddlewareHookFunction): void;
125+
export function middleware(
126+
fnOrName: string | AnyOnMiddlewareHookFunction,
127+
fn?: AnyOnMiddlewareHookFunction
128+
): void {
129+
lifecycleHooks.registerGlobalMiddlewareHook({
130+
id: typeof fnOrName === "string" ? fnOrName : fnOrName.name ? fnOrName.name : undefined,
131+
fn: typeof fnOrName === "function" ? fnOrName : fn!,
132+
});
133+
}

packages/trigger-sdk/src/v3/shared.ts

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -212,13 +212,6 @@ export function createTask<
212212
maxDuration: params.maxDuration,
213213
fns: {
214214
run: params.run,
215-
init: params.init,
216-
cleanup: params.cleanup,
217-
middleware: params.middleware,
218-
handleError: params.handleError,
219-
onSuccess: params.onSuccess,
220-
onFailure: params.onFailure,
221-
onStart: params.onStart,
222215
},
223216
});
224217

@@ -389,6 +382,12 @@ export function createSchemaTask<
389382
});
390383
}
391384

385+
if (params.middleware) {
386+
lifecycleHooks.registerTaskMiddlewareHook(params.id, {
387+
fn: lifecycleHooksAdapters.createMiddlewareHookAdapter(params.middleware),
388+
});
389+
}
390+
392391
resourceCatalog.registerTaskMetadata({
393392
id: params.id,
394393
description: params.description,
@@ -398,13 +397,6 @@ export function createSchemaTask<
398397
maxDuration: params.maxDuration,
399398
fns: {
400399
run: params.run,
401-
init: params.init,
402-
cleanup: params.cleanup,
403-
middleware: params.middleware,
404-
handleError: params.handleError,
405-
onSuccess: params.onSuccess,
406-
onFailure: params.onFailure,
407-
onStart: params.onStart,
408400
parsePayload,
409401
},
410402
});

packages/trigger-sdk/src/v3/tasks.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
onResume,
88
onHandleError,
99
onCatchError,
10+
middleware,
1011
} from "./hooks.js";
1112
import {
1213
batchTrigger,
@@ -97,4 +98,5 @@ export const tasks = {
9798
/** @deprecated Use catchError instead */
9899
handleError: onHandleError,
99100
catchError: onCatchError,
101+
middleware,
100102
};

references/hello-world/src/trigger/init.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import { logger, tasks } from "@trigger.dev/sdk";
22
// import { setDb } from "../db.js";
33

4+
tasks.middleware("db", ({ ctx, payload, next }) => {
5+
logger.info("Hello, world from the middleware", { ctx, payload });
6+
return next();
7+
});
8+
49
// tasks.onSuccess(({ ctx, payload, output }) => {
510
// logger.info("Hello, world from the success", { ctx, payload });
611
// });

0 commit comments

Comments
 (0)