diff --git a/.changeset/six-humans-happen.md b/.changeset/six-humans-happen.md new file mode 100644 index 000000000..8f30670e7 --- /dev/null +++ b/.changeset/six-humans-happen.md @@ -0,0 +1,5 @@ +--- +"@trigger.dev/sdk": patch +--- + +eventTrigger() jsdocs diff --git a/packages/internal/src/schemas/eventFilter.ts b/packages/internal/src/schemas/eventFilter.ts index 9cd2cdae1..b0499f19b 100644 --- a/packages/internal/src/schemas/eventFilter.ts +++ b/packages/internal/src/schemas/eventFilter.ts @@ -1,12 +1,17 @@ import { z } from "zod"; const EventMatcherSchema = z.union([ + /** Match against a string */ z.array(z.string()), + /** Match against a number */ z.array(z.number()), + /** Match against a boolean */ z.array(z.boolean()), ]); + type EventMatcher = z.infer; +/** A filter for matching against data */ export type EventFilter = { [key: string]: EventMatcher | EventFilter }; export const EventFilterSchema: z.ZodType = z.lazy(() => diff --git a/packages/trigger-sdk/src/triggers/eventTrigger.ts b/packages/trigger-sdk/src/triggers/eventTrigger.ts index b39e175f2..3951271a0 100644 --- a/packages/trigger-sdk/src/triggers/eventTrigger.ts +++ b/packages/trigger-sdk/src/triggers/eventTrigger.ts @@ -54,13 +54,41 @@ export class EventTrigger> } } +/** Configuration options for an EventTrigger */ type TriggerOptions = { + /** The name of the event you are subscribing to. Must be an exact match (case sensitive). */ name: string; + /** A [Zod](https://trigger.dev/docs/documentation/guides/zod) schema that defines the shape of the event payload. + * The default is `z.any()` which is `any`. + * */ schema?: z.Schema; + /** You can use this to filter events based on the source. */ source?: string; + /** Used to filter which events trigger the Job + * @example + * filter: + * ```ts + * { + * name: ["John", "Jane"], + * age: [18, 21] + * } + * ``` + * + * This filter would match against an event with the following data: + * ```json + * { + * "name": "Jane", + * "age": 18, + * "location": "San Francisco" + * } + * ``` + */ filter?: EventFilter; }; +/** `eventTrigger()` is set as a [Job's trigger](https://trigger.dev/docs/sdk/job) to subscribe to an event a Job from [a sent event](https://trigger.dev/docs/sdk/triggerclient/instancemethods/sendevent) + * @param options options for the EventTrigger + */ export function eventTrigger( options: TriggerOptions ): Trigger> {