@trigger.dev/sdk 2.0.0-next.2 → 2.0.0-next.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/job.ts","../../internal/src/logger.ts","../../internal/src/schemas/api.ts","../../internal/src/schemas/errors.ts","../../internal/src/schemas/eventFilter.ts","../../internal/src/schemas/integrations.ts","../../internal/src/schemas/json.ts","../../internal/src/schemas/properties.ts","../../internal/src/schemas/schedules.ts","../../internal/src/schemas/tasks.ts","../../internal/src/schemas/triggers.ts","../../internal/src/schemas/notifications.ts","../../internal/src/schemas/fetch.ts","../../internal/src/utils.ts","../../internal/src/retry.ts","../../internal/src/replacements.ts","../src/apiClient.ts","../src/errors.ts","../src/io.ts","../src/ioWithIntegrations.ts","../src/triggers/eventTrigger.ts","../src/triggerClient.ts","../src/integrations.ts","../src/triggers/externalSource.ts","../src/triggers/dynamic.ts","../src/triggers/scheduled.ts","../src/triggers/notifications.ts"],"sourcesContent":["export * from \"./job\";\nexport * from \"./triggerClient\";\nexport * from \"./integrations\";\nexport * from \"./triggers/eventTrigger\";\nexport * from \"./triggers/externalSource\";\nexport * from \"./triggers/dynamic\";\nexport * from \"./triggers/scheduled\";\nexport * from \"./triggers/notifications\";\nexport * from \"./io\";\nexport * from \"./types\";\n\nimport { ServerTask } from \"@trigger.dev/internal\";\nimport { RedactString } from \"./types\";\nexport { isTriggerError } from \"./errors\";\n\nexport type { NormalizedRequest, EventFilter } from \"@trigger.dev/internal\";\n\nexport type Task = ServerTask;\n\n/*\n * This function is used to create a redacted string that can be used in the headers of a fetch request.\n * It is used to prevent the string from being logged in trigger.dev.\n * You can use it like this:\n *\n * await ctx.fetch(\"https://example.com\", {\n * headers: {\n * Authorization: redactString`Bearer ${ACCESS_TOKEN}`,\n * },\n * })\n */\nexport function redactString(\n strings: TemplateStringsArray,\n ...interpolations: string[]\n): RedactString {\n return {\n __redactedString: true,\n strings: strings.raw as string[],\n interpolations,\n };\n}\n","export function slugifyId(input: string): string {\n // Replace any number of spaces with a single dash\n const replaceSpacesWithDash = input.toLowerCase().replace(/\\s+/g, \"-\");\n\n // Remove any non-URL-safe characters\n const removeNonUrlSafeChars = replaceSpacesWithDash.replace(\n /[^a-zA-Z0-9-._~]/g,\n \"\"\n );\n\n return removeNonUrlSafeChars;\n}\n","import {\n IntegrationConfig,\n JobMetadata,\n LogLevel,\n QueueOptions,\n} from \"@trigger.dev/internal\";\nimport {\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"./integrations\";\nimport { TriggerClient } from \"./triggerClient\";\nimport type {\n EventSpecification,\n Trigger,\n TriggerContext,\n TriggerEventType,\n} from \"./types\";\nimport { slugifyId } from \"./utils\";\n\nexport type JobOptions<\n TTrigger extends Trigger<EventSpecification<any>>,\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n > = {}\n> = {\n id: string;\n name: string;\n version: string;\n trigger: TTrigger;\n logLevel?: LogLevel;\n integrations?: TIntegrations;\n queue?: QueueOptions | string;\n startPosition?: \"initial\" | \"latest\";\n enabled?: boolean;\n\n run: (\n event: TriggerEventType<TTrigger>,\n io: IOWithIntegrations<TIntegrations>,\n ctx: TriggerContext\n ) => Promise<any>;\n};\n\nexport class Job<\n TTrigger extends Trigger<EventSpecification<any>>,\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n > = {}\n> {\n readonly options: JobOptions<TTrigger, TIntegrations>;\n\n client: TriggerClient;\n\n constructor(\n client: TriggerClient,\n options: JobOptions<TTrigger, TIntegrations>\n ) {\n this.client = client;\n this.options = options;\n this.#validate();\n\n client.attach(this);\n }\n\n get id() {\n return slugifyId(this.options.id);\n }\n\n get enabled() {\n return typeof this.options.enabled === \"boolean\"\n ? this.options.enabled\n : true;\n }\n\n get name() {\n return this.options.name;\n }\n\n get trigger() {\n return this.options.trigger;\n }\n\n get version() {\n return this.options.version;\n }\n\n get integrations(): Record<string, IntegrationConfig> {\n return Object.keys(this.options.integrations ?? {}).reduce(\n (acc: Record<string, IntegrationConfig>, key) => {\n const integration = this.options.integrations![key];\n\n acc[key] = {\n id: integration.id,\n metadata: integration.metadata,\n authSource: integration.client.usesLocalAuth ? \"LOCAL\" : \"HOSTED\",\n };\n\n return acc;\n },\n {}\n );\n }\n\n toJSON(): JobMetadata {\n // @ts-ignore\n const internal = this.options.__internal as JobMetadata[\"internal\"];\n\n return {\n id: this.id,\n name: this.name,\n version: this.version,\n event: this.trigger.event,\n trigger: this.trigger.toJSON(),\n integrations: this.integrations,\n queue: this.options.queue,\n startPosition: this.options.startPosition ?? \"latest\",\n enabled:\n typeof this.options.enabled === \"boolean\" ? this.options.enabled : true,\n preprocessRuns: this.trigger.preprocessRuns,\n internal,\n };\n }\n\n // Make sure the id is valid (must only contain alphanumeric characters and dashes)\n // Make sure the version is valid (must be a valid semver version)\n #validate() {\n if (!this.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/)) {\n throw new Error(\n `Invalid job version: \"${this.version}\". Job versions must be valid semver versions.`\n );\n }\n }\n}\n","// Create a logger class that uses the debug package internally\n\nexport type LogLevel = \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nconst logLevels: Array<LogLevel> = [\"log\", \"error\", \"warn\", \"info\", \"debug\"];\n\nexport class Logger {\n #name: string;\n readonly #level: number;\n #filteredKeys: string[] = [];\n #jsonReplacer?: (key: string, value: unknown) => unknown;\n\n constructor(\n name: string,\n level: LogLevel = \"info\",\n filteredKeys: string[] = [],\n jsonReplacer?: (key: string, value: unknown) => unknown\n ) {\n this.#name = name;\n this.#level = logLevels.indexOf(\n (process.env.TRIGGER_LOG_LEVEL ?? level) as LogLevel\n );\n this.#filteredKeys = filteredKeys;\n this.#jsonReplacer = jsonReplacer;\n }\n\n // Return a new Logger instance with the same name and a new log level\n // but filter out the keys from the log messages (at any level)\n filter(...keys: string[]) {\n return new Logger(\n this.#name,\n logLevels[this.#level],\n keys,\n this.#jsonReplacer\n );\n }\n\n log(...args: any[]) {\n if (this.#level < 0) return;\n\n console.log(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n error(...args: any[]) {\n if (this.#level < 1) return;\n\n console.error(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n warn(...args: any[]) {\n if (this.#level < 2) return;\n\n console.warn(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n info(...args: any[]) {\n if (this.#level < 3) return;\n\n console.info(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n debug(message: string, ...args: Array<Record<string, unknown> | undefined>) {\n if (this.#level < 4) return;\n\n const structuredLog = {\n timestamp: new Date(),\n name: this.#name,\n message,\n args: structureArgs(\n safeJsonClone(args) as Record<string, unknown>[],\n this.#filteredKeys\n ),\n };\n\n console.debug(\n JSON.stringify(structuredLog, createReplacer(this.#jsonReplacer))\n );\n }\n}\n\nfunction createReplacer(replacer?: (key: string, value: unknown) => unknown) {\n return (key: string, value: unknown) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n if (replacer) {\n return replacer(key, value);\n }\n\n return value;\n };\n}\n\n// Replacer function for JSON.stringify that converts BigInts to strings\nfunction bigIntReplacer(_key: string, value: unknown) {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n}\n\nfunction safeJsonClone(obj: unknown) {\n try {\n return JSON.parse(JSON.stringify(obj, bigIntReplacer));\n } catch (e) {\n return obj;\n }\n}\n\nfunction formattedDateTime() {\n const date = new Date();\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n\n // Make sure the time is always 2 digits\n const formattedHours = hours < 10 ? `0${hours}` : hours;\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\n const formattedSeconds = seconds < 10 ? `0${seconds}` : seconds;\n const formattedMilliseconds =\n milliseconds < 10\n ? `00${milliseconds}`\n : milliseconds < 100\n ? `0${milliseconds}`\n : milliseconds;\n\n return `${formattedHours}:${formattedMinutes}:${formattedSeconds}.${formattedMilliseconds}`;\n}\n\n// If args is has a single item that is an object, return that object\nfunction structureArgs(\n args: Array<Record<string, unknown>>,\n filteredKeys: string[] = []\n) {\n if (args.length === 0) {\n return;\n }\n\n if (args.length === 1 && typeof args[0] === \"object\") {\n return filterKeys(\n JSON.parse(JSON.stringify(args[0], bigIntReplacer)),\n filteredKeys\n );\n }\n\n return args;\n}\n\n// Recursively filter out keys from an object, including nested objects, and arrays\nfunction filterKeys(obj: unknown, keys: string[]): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => filterKeys(item, keys));\n }\n\n const filteredObj: any = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key)) {\n continue;\n }\n\n filteredObj[key] = filterKeys(value, keys);\n }\n\n return filteredObj;\n}\n","import { ulid } from \"ulid\";\nimport { z } from \"zod\";\nimport { ErrorWithStackSchema } from \"./errors\";\nimport { EventRuleSchema } from \"./eventFilter\";\nimport { ConnectionAuthSchema, IntegrationConfigSchema } from \"./integrations\";\nimport { DeserializedJsonSchema, SerializableJsonSchema } from \"./json\";\nimport { DisplayPropertySchema, StyleSchema } from \"./properties\";\nimport {\n CronMetadataSchema,\n IntervalMetadataSchema,\n RegisterDynamicSchedulePayloadSchema,\n ScheduleMetadataSchema,\n} from \"./schedules\";\nimport { CachedTaskSchema, ServerTaskSchema, TaskSchema } from \"./tasks\";\nimport { EventSpecificationSchema, TriggerMetadataSchema } from \"./triggers\";\n\nexport const UpdateTriggerSourceBodySchema = z.object({\n registeredEvents: z.array(z.string()),\n secret: z.string().optional(),\n data: SerializableJsonSchema.optional(),\n});\n\nexport type UpdateTriggerSourceBody = z.infer<\n typeof UpdateTriggerSourceBodySchema\n>;\n\nexport const HttpEventSourceSchema = UpdateTriggerSourceBodySchema.extend({\n id: z.string(),\n active: z.boolean(),\n url: z.string().url(),\n});\n\nexport const RegisterHTTPTriggerSourceBodySchema = z.object({\n type: z.literal(\"HTTP\"),\n url: z.string().url(),\n});\n\nexport const RegisterSMTPTriggerSourceBodySchema = z.object({\n type: z.literal(\"SMTP\"),\n});\n\nexport const RegisterSQSTriggerSourceBodySchema = z.object({\n type: z.literal(\"SQS\"),\n});\n\nexport const RegisterSourceChannelBodySchema = z.discriminatedUnion(\"type\", [\n RegisterHTTPTriggerSourceBodySchema,\n RegisterSMTPTriggerSourceBodySchema,\n RegisterSQSTriggerSourceBodySchema,\n]);\n\nexport const REGISTER_SOURCE_EVENT = \"dev.trigger.source.register\";\n\nexport const RegisterTriggerSourceSchema = z.object({\n key: z.string(),\n params: z.any(),\n active: z.boolean(),\n secret: z.string(),\n data: DeserializedJsonSchema.optional(),\n channel: RegisterSourceChannelBodySchema,\n clientId: z.string().optional(),\n});\n\nexport type RegisterTriggerSource = z.infer<typeof RegisterTriggerSourceSchema>;\n\nexport const RegisterSourceEventSchema = z.object({\n id: z.string(),\n source: RegisterTriggerSourceSchema,\n events: z.array(z.string()),\n missingEvents: z.array(z.string()),\n orphanedEvents: z.array(z.string()),\n dynamicTriggerId: z.string().optional(),\n});\n\nexport type RegisterSourceEvent = z.infer<typeof RegisterSourceEventSchema>;\n\nexport const TriggerSourceSchema = z.object({\n id: z.string(),\n key: z.string(),\n});\n\nexport const HandleTriggerSourceSchema = z.object({\n key: z.string(),\n secret: z.string(),\n data: z.any(),\n params: z.any(),\n});\n\nexport type HandleTriggerSource = z.infer<typeof HandleTriggerSourceSchema>;\n\nexport type TriggerSource = z.infer<typeof TriggerSourceSchema>;\n\nexport const HttpSourceRequestSchema = z.object({\n url: z.string().url(),\n method: z.string(),\n headers: z.record(z.string()),\n rawBody: z.instanceof(Buffer).optional().nullable(),\n});\n\nexport type HttpSourceRequest = z.infer<typeof HttpSourceRequestSchema>;\n\nexport const HttpSourceRequestHeadersSchema = z.object({\n \"x-ts-key\": z.string(),\n \"x-ts-dynamic-id\": z.string().optional(),\n \"x-ts-secret\": z.string(),\n \"x-ts-data\": z.string().transform((s) => JSON.parse(s)),\n \"x-ts-params\": z.string().transform((s) => JSON.parse(s)),\n \"x-ts-http-url\": z.string(),\n \"x-ts-http-method\": z.string(),\n \"x-ts-http-headers\": z\n .string()\n .transform((s) => z.record(z.string()).parse(JSON.parse(s))),\n});\n\nexport type HttpSourceRequestHeaders = z.output<\n typeof HttpSourceRequestHeadersSchema\n>;\n\nexport const PongSuccessResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const PongErrorResponseSchema = z.object({\n ok: z.literal(false),\n error: z.string(),\n});\n\nexport const PongResponseSchema = z.discriminatedUnion(\"ok\", [\n PongSuccessResponseSchema,\n PongErrorResponseSchema,\n]);\n\nexport type PongResponse = z.infer<typeof PongResponseSchema>;\n\nexport const QueueOptionsSchema = z.object({\n name: z.string(),\n maxConcurrent: z.number().optional(),\n});\n\nexport type QueueOptions = z.infer<typeof QueueOptionsSchema>;\n\nexport const JobMetadataSchema = z.object({\n id: z.string(),\n name: z.string(),\n version: z.string(),\n event: EventSpecificationSchema,\n trigger: TriggerMetadataSchema,\n integrations: z.record(IntegrationConfigSchema),\n internal: z.boolean().default(false),\n queue: z.union([QueueOptionsSchema, z.string()]).optional(),\n startPosition: z.enum([\"initial\", \"latest\"]),\n enabled: z.boolean(),\n preprocessRuns: z.boolean(),\n});\n\nexport type JobMetadata = z.infer<typeof JobMetadataSchema>;\n\nexport const SourceMetadataSchema = z.object({\n channel: z.enum([\"HTTP\", \"SQS\", \"SMTP\"]),\n integration: IntegrationConfigSchema,\n key: z.string(),\n params: z.any(),\n events: z.array(z.string()),\n});\n\nexport type SourceMetadata = z.infer<typeof SourceMetadataSchema>;\n\nexport const DynamicTriggerEndpointMetadataSchema = z.object({\n id: z.string(),\n jobs: z.array(JobMetadataSchema.pick({ id: true, version: true })),\n});\n\nexport type DynamicTriggerEndpointMetadata = z.infer<\n typeof DynamicTriggerEndpointMetadataSchema\n>;\n\nexport const IndexEndpointResponseSchema = z.object({\n jobs: z.array(JobMetadataSchema),\n sources: z.array(SourceMetadataSchema),\n dynamicTriggers: z.array(DynamicTriggerEndpointMetadataSchema),\n dynamicSchedules: z.array(RegisterDynamicSchedulePayloadSchema),\n});\n\nexport type IndexEndpointResponse = z.infer<typeof IndexEndpointResponseSchema>;\n\nexport const RawEventSchema = z.object({\n id: z.string().default(() => ulid()),\n name: z.string(),\n source: z.string().optional(),\n payload: z.any(),\n context: z.any().optional(),\n timestamp: z.string().datetime().optional(),\n});\n\nexport type RawEvent = z.infer<typeof RawEventSchema>;\nexport type SendEvent = z.input<typeof RawEventSchema>;\n\nexport const ApiEventLogSchema = z.object({\n id: z.string(),\n name: z.string(),\n payload: DeserializedJsonSchema,\n context: DeserializedJsonSchema.optional().nullable(),\n timestamp: z.coerce.date(),\n deliverAt: z.coerce.date().optional().nullable(),\n deliveredAt: z.coerce.date().optional().nullable(),\n});\n\nexport type ApiEventLog = z.infer<typeof ApiEventLogSchema>;\n\nexport const SendEventOptionsSchema = z.object({\n deliverAt: z.string().datetime().optional(),\n deliverAfter: z.number().int().optional(),\n accountId: z.string().optional(),\n});\n\nexport const SendEventBodySchema = z.object({\n event: RawEventSchema,\n options: SendEventOptionsSchema.optional(),\n});\n\nexport type SendEventBody = z.infer<typeof SendEventBodySchema>;\nexport type SendEventOptions = z.infer<typeof SendEventOptionsSchema>;\n\nexport const DeliverEventResponseSchema = z.object({\n deliveredAt: z.string().datetime(),\n});\n\nexport type DeliverEventResponse = z.infer<typeof DeliverEventResponseSchema>;\n\nexport const RuntimeEnvironmentTypeSchema = z.enum([\n \"PRODUCTION\",\n \"STAGING\",\n \"DEVELOPMENT\",\n \"PREVIEW\",\n]);\n\nexport type RuntimeEnvironmentType = z.infer<\n typeof RuntimeEnvironmentTypeSchema\n>;\n\nexport const RunJobBodySchema = z.object({\n event: ApiEventLogSchema,\n job: z.object({\n id: z.string(),\n version: z.string(),\n }),\n run: z.object({\n id: z.string(),\n isTest: z.boolean(),\n startedAt: z.coerce.date(),\n }),\n environment: z.object({\n id: z.string(),\n slug: z.string(),\n type: RuntimeEnvironmentTypeSchema,\n }),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n }),\n account: z\n .object({\n id: z.string(),\n metadata: z.any(),\n })\n .optional(),\n tasks: z.array(CachedTaskSchema).optional(),\n connections: z.record(ConnectionAuthSchema).optional(),\n});\n\nexport type RunJobBody = z.infer<typeof RunJobBodySchema>;\n\nexport const RunJobErrorSchema = z.object({\n status: z.literal(\"ERROR\"),\n error: ErrorWithStackSchema,\n task: TaskSchema.optional(),\n});\n\nexport type RunJobError = z.infer<typeof RunJobErrorSchema>;\n\nexport const RunJobResumeWithTaskSchema = z.object({\n status: z.literal(\"RESUME_WITH_TASK\"),\n task: TaskSchema,\n});\n\nexport type RunJobResumeWithTask = z.infer<typeof RunJobResumeWithTaskSchema>;\n\nexport const RunJobRetryWithTaskSchema = z.object({\n status: z.literal(\"RETRY_WITH_TASK\"),\n task: TaskSchema,\n error: ErrorWithStackSchema,\n retryAt: z.coerce.date(),\n});\n\nexport type RunJobRetryWithTask = z.infer<typeof RunJobRetryWithTaskSchema>;\n\nexport const RunJobSuccessSchema = z.object({\n status: z.literal(\"SUCCESS\"),\n output: DeserializedJsonSchema.optional(),\n});\n\nexport type RunJobSuccess = z.infer<typeof RunJobSuccessSchema>;\n\nexport const RunJobResponseSchema = z.discriminatedUnion(\"status\", [\n RunJobErrorSchema,\n RunJobResumeWithTaskSchema,\n RunJobRetryWithTaskSchema,\n RunJobSuccessSchema,\n]);\n\nexport type RunJobResponse = z.infer<typeof RunJobResponseSchema>;\n\nexport const PreprocessRunBodySchema = z.object({\n event: ApiEventLogSchema,\n job: z.object({\n id: z.string(),\n version: z.string(),\n }),\n run: z.object({\n id: z.string(),\n isTest: z.boolean(),\n }),\n environment: z.object({\n id: z.string(),\n slug: z.string(),\n type: RuntimeEnvironmentTypeSchema,\n }),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n }),\n account: z\n .object({\n id: z.string(),\n metadata: z.any(),\n })\n .optional(),\n});\n\nexport type PreprocessRunBody = z.infer<typeof PreprocessRunBodySchema>;\n\nexport const PreprocessRunResponseSchema = z.object({\n abort: z.boolean(),\n properties: z.array(DisplayPropertySchema).optional(),\n});\n\nexport type PreprocessRunResponse = z.infer<typeof PreprocessRunResponseSchema>;\n\nexport const CreateRunBodySchema = z.object({\n client: z.string(),\n job: JobMetadataSchema,\n event: ApiEventLogSchema,\n properties: z.array(DisplayPropertySchema).optional(),\n});\n\nexport type CreateRunBody = z.infer<typeof CreateRunBodySchema>;\n\nconst CreateRunResponseOkSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n id: z.string(),\n }),\n});\n\nconst CreateRunResponseErrorSchema = z.object({\n ok: z.literal(false),\n error: z.string(),\n});\n\nexport const CreateRunResponseBodySchema = z.discriminatedUnion(\"ok\", [\n CreateRunResponseOkSchema,\n CreateRunResponseErrorSchema,\n]);\n\nexport type CreateRunResponseBody = z.infer<typeof CreateRunResponseBodySchema>;\n\nexport const RedactStringSchema = z.object({\n __redactedString: z.literal(true),\n strings: z.array(z.string()),\n interpolations: z.array(z.string()),\n});\n\nexport type RedactString = z.infer<typeof RedactStringSchema>;\n\nexport const LogMessageSchema = z.object({\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: z.string(),\n data: SerializableJsonSchema.optional(),\n});\n\nexport type LogMessage = z.infer<typeof LogMessageSchema>;\n\nexport type ClientTask = z.infer<typeof TaskSchema>;\nexport type CachedTask = z.infer<typeof CachedTaskSchema>;\n\nexport const RedactSchema = z.object({\n paths: z.array(z.string()),\n});\n\nexport const RetryOptionsSchema = z.object({\n limit: z.number().optional(),\n factor: z.number().optional(),\n minTimeoutInMs: z.number().optional(),\n maxTimeoutInMs: z.number().optional(),\n randomize: z.boolean().optional(),\n});\n\nexport type RetryOptions = z.infer<typeof RetryOptionsSchema>;\n\nexport const RunTaskOptionsSchema = z.object({\n name: z.string(),\n icon: z.string().optional(),\n displayKey: z.string().optional(),\n noop: z.boolean().default(false),\n operation: z.enum([\"fetch\"]).optional(),\n delayUntil: z.coerce.date().optional(),\n description: z.string().optional(),\n properties: z.array(DisplayPropertySchema).optional(),\n params: z.any(),\n trigger: TriggerMetadataSchema.optional(),\n redact: RedactSchema.optional(),\n connectionKey: z.string().optional(),\n style: StyleSchema.optional(),\n retry: RetryOptionsSchema.optional(),\n});\n\nexport type RunTaskOptions = z.input<typeof RunTaskOptionsSchema>;\n\nexport const RunTaskBodyInputSchema = RunTaskOptionsSchema.extend({\n idempotencyKey: z.string(),\n parentId: z.string().optional(),\n});\n\nexport type RunTaskBodyInput = z.infer<typeof RunTaskBodyInputSchema>;\n\nexport const RunTaskBodyOutputSchema = RunTaskBodyInputSchema.extend({\n params: DeserializedJsonSchema.optional().nullable(),\n});\n\nexport type RunTaskBodyOutput = z.infer<typeof RunTaskBodyOutputSchema>;\n\nexport const CompleteTaskBodyInputSchema = RunTaskBodyInputSchema.pick({\n properties: true,\n description: true,\n params: true,\n}).extend({\n output: SerializableJsonSchema.optional().transform((v) =>\n v ? DeserializedJsonSchema.parse(JSON.parse(JSON.stringify(v))) : {}\n ),\n});\n\nexport type CompleteTaskBodyInput = z.input<typeof CompleteTaskBodyInputSchema>;\nexport type CompleteTaskBodyOutput = z.infer<\n typeof CompleteTaskBodyInputSchema\n>;\n\nexport const FailTaskBodyInputSchema = z.object({\n error: ErrorWithStackSchema,\n});\n\nexport type FailTaskBodyInput = z.infer<typeof FailTaskBodyInputSchema>;\n\nexport const NormalizedRequestSchema = z.object({\n headers: z.record(z.string()),\n method: z.string(),\n query: z.record(z.string()),\n url: z.string(),\n body: z.any(),\n});\n\nexport type NormalizedRequest = z.infer<typeof NormalizedRequestSchema>;\n\nexport const NormalizedResponseSchema = z.object({\n status: z.number(),\n body: z.any(),\n headers: z.record(z.string()).optional(),\n});\n\nexport type NormalizedResponse = z.infer<typeof NormalizedResponseSchema>;\n\nexport const HttpSourceResponseSchema = z.object({\n response: NormalizedResponseSchema,\n events: z.array(RawEventSchema),\n});\n\nexport const RegisterTriggerBodySchema = z.object({\n rule: EventRuleSchema,\n source: SourceMetadataSchema,\n});\n\nexport type RegisterTriggerBody = z.infer<typeof RegisterTriggerBodySchema>;\n\nexport const InitializeTriggerBodySchema = z.object({\n id: z.string(),\n params: z.any(),\n accountId: z.string().optional(),\n});\n\nexport type InitializeTriggerBody = z.infer<typeof InitializeTriggerBodySchema>;\n\nconst RegisterCommonScheduleBodySchema = z.object({\n id: z.string(),\n metadata: z.any(),\n accountId: z.string().optional(),\n});\n\nexport const RegisterIntervalScheduleBodySchema =\n RegisterCommonScheduleBodySchema.merge(IntervalMetadataSchema);\n\nexport type RegisterIntervalScheduleBody = z.infer<\n typeof RegisterIntervalScheduleBodySchema\n>;\n\nexport const InitializeCronScheduleBodySchema =\n RegisterCommonScheduleBodySchema.merge(CronMetadataSchema);\n\nexport type RegisterCronScheduleBody = z.infer<\n typeof InitializeCronScheduleBodySchema\n>;\n\nexport const RegisterScheduleBodySchema = z.discriminatedUnion(\"type\", [\n RegisterIntervalScheduleBodySchema,\n InitializeCronScheduleBodySchema,\n]);\n\nexport type RegisterScheduleBody = z.infer<typeof RegisterScheduleBodySchema>;\n\nexport const RegisterScheduleResponseBodySchema = z.object({\n id: z.string(),\n schedule: ScheduleMetadataSchema,\n metadata: z.any(),\n active: z.boolean(),\n});\n\nexport type RegisterScheduleResponseBody = z.infer<\n typeof RegisterScheduleResponseBodySchema\n>;\n\nexport const CreateExternalConnectionBodySchema = z.object({\n accessToken: z.string(),\n type: z.enum([\"oauth2\"]),\n scopes: z.array(z.string()).optional(),\n metadata: z.any(),\n});\n\nexport type CreateExternalConnectionBody = z.infer<\n typeof CreateExternalConnectionBodySchema\n>;\n","import { z } from \"zod\";\n\nexport const ErrorWithStackSchema = z.object({\n message: z.string(),\n name: z.string().optional(),\n stack: z.string().optional(),\n});\n\nexport type ErrorWithStack = z.infer<typeof ErrorWithStackSchema>;\n","import { z } from \"zod\";\n\nconst EventMatcherSchema = z.union([\n z.array(z.string()),\n z.array(z.number()),\n z.array(z.boolean()),\n]);\ntype EventMatcher = z.infer<typeof EventMatcherSchema>;\n\nexport type EventFilter = { [key: string]: EventMatcher | EventFilter };\n\nexport const EventFilterSchema: z.ZodType<EventFilter> = z.lazy(() =>\n z.record(z.union([EventMatcherSchema, EventFilterSchema]))\n);\n\nexport const EventRuleSchema = z.object({\n event: z.string(),\n source: z.string(),\n payload: EventFilterSchema.optional(),\n context: EventFilterSchema.optional(),\n});\n\nexport type EventRule = z.infer<typeof EventRuleSchema>;\n","import { z } from \"zod\";\n\nexport const ConnectionAuthSchema = z.object({\n type: z.enum([\"oauth2\"]),\n accessToken: z.string(),\n scopes: z.array(z.string()).optional(),\n additionalFields: z.record(z.string()).optional(),\n});\n\nexport type ConnectionAuth = z.infer<typeof ConnectionAuthSchema>;\n\nexport const IntegrationMetadataSchema = z.object({\n id: z.string(),\n name: z.string(),\n instructions: z.string().optional(),\n});\n\nexport type IntegrationMetadata = z.infer<typeof IntegrationMetadataSchema>;\n\nexport const IntegrationConfigSchema = z.object({\n id: z.string(),\n metadata: IntegrationMetadataSchema,\n authSource: z.enum([\"HOSTED\", \"LOCAL\"]),\n});\n\nexport type IntegrationConfig = z.infer<typeof IntegrationConfigSchema>;\n","import { z } from \"zod\";\n\nconst LiteralSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\ntype Literal = z.infer<typeof LiteralSchema>;\n\nexport type DeserializedJson =\n | Literal\n | { [key: string]: DeserializedJson }\n | DeserializedJson[];\n\nexport const DeserializedJsonSchema: z.ZodType<DeserializedJson> = z.lazy(() =>\n z.union([\n LiteralSchema,\n z.array(DeserializedJsonSchema),\n z.record(DeserializedJsonSchema),\n ])\n);\n\nconst SerializableSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.date(),\n z.undefined(),\n z.symbol(),\n]);\ntype Serializable = z.infer<typeof SerializableSchema>;\n\nexport type SerializableJson =\n | Serializable\n | { [key: string]: SerializableJson }\n | SerializableJson[];\n\nexport const SerializableJsonSchema: z.ZodType<SerializableJson> = z.lazy(() =>\n z.union([\n SerializableSchema,\n z.array(SerializableJsonSchema),\n z.record(SerializableJsonSchema),\n ])\n);\n","import { z } from \"zod\";\n\nexport const DisplayPropertySchema = z.object({\n label: z.string(),\n text: z.string(),\n url: z.string().optional(),\n});\n\nexport const DisplayPropertiesSchema = z.array(DisplayPropertySchema);\n\nexport type DisplayProperty = z.infer<typeof DisplayPropertySchema>;\n\nexport const StyleSchema = z.object({\n style: z.enum([\"normal\", \"minimal\"]),\n variant: z.string().optional(),\n});\n\nexport type Style = z.infer<typeof StyleSchema>;\nexport type StyleName = Style[\"style\"];\n","import { z } from \"zod\";\n\nexport const SCHEDULED_EVENT = \"dev.trigger.scheduled\";\n\nexport const ScheduledPayloadSchema = z.object({\n ts: z.coerce.date(),\n lastTimestamp: z.coerce.date().optional(),\n});\n\nexport type ScheduledPayload = z.infer<typeof ScheduledPayloadSchema>;\n\nexport const IntervalOptionsSchema = z.object({\n seconds: z.number().int().positive().min(60).max(86400),\n});\n\nexport type IntervalOptions = z.infer<typeof IntervalOptionsSchema>;\n\nexport const CronOptionsSchema = z.object({\n cron: z.string(),\n});\n\nexport type CronOptions = z.infer<typeof CronOptionsSchema>;\n\nexport const CronMetadataSchema = z.object({\n type: z.literal(\"cron\"),\n options: CronOptionsSchema,\n metadata: z.any(),\n});\n\nexport type CronMetadata = z.infer<typeof CronMetadataSchema>;\n\nexport const IntervalMetadataSchema = z.object({\n type: z.literal(\"interval\"),\n options: IntervalOptionsSchema,\n metadata: z.any(),\n});\n\nexport type IntervalMetadata = z.infer<typeof IntervalMetadataSchema>;\n\nexport const ScheduleMetadataSchema = z.discriminatedUnion(\"type\", [\n IntervalMetadataSchema,\n CronMetadataSchema,\n]);\n\nexport type ScheduleMetadata = z.infer<typeof ScheduleMetadataSchema>;\n\nexport const RegisterDynamicSchedulePayloadSchema = z.object({\n id: z.string(),\n jobs: z.array(\n z.object({\n id: z.string(),\n version: z.string(),\n })\n ),\n});\n\nexport type RegisterDynamicSchedulePayload = z.infer<\n typeof RegisterDynamicSchedulePayloadSchema\n>;\n","import { z } from \"zod\";\nimport { DisplayPropertySchema, StyleSchema } from \"./properties\";\nimport { DeserializedJsonSchema } from \"./json\";\n\nexport const TaskStatusSchema = z.enum([\n \"PENDING\",\n \"WAITING\",\n \"RUNNING\",\n \"COMPLETED\",\n \"ERRORED\",\n]);\n\nexport type TaskStatus = z.infer<typeof TaskStatusSchema>;\n\nexport const TaskSchema = z.object({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional().nullable(),\n noop: z.boolean(),\n startedAt: z.coerce.date().optional().nullable(),\n completedAt: z.coerce.date().optional().nullable(),\n delayUntil: z.coerce.date().optional().nullable(),\n status: TaskStatusSchema,\n description: z.string().optional().nullable(),\n properties: z.array(DisplayPropertySchema).optional().nullable(),\n params: DeserializedJsonSchema.optional().nullable(),\n output: DeserializedJsonSchema.optional().nullable(),\n error: z.string().optional().nullable(),\n parentId: z.string().optional().nullable(),\n style: StyleSchema.optional().nullable(),\n operation: z.string().optional().nullable(),\n});\n\nexport const ServerTaskSchema = TaskSchema.extend({\n idempotencyKey: z.string(),\n attempts: z.number(),\n});\n\nexport type ServerTask = z.infer<typeof ServerTaskSchema>;\n\nexport const CachedTaskSchema = z.object({\n id: z.string(),\n idempotencyKey: z.string(),\n status: TaskStatusSchema,\n noop: z.boolean().default(false),\n output: DeserializedJsonSchema.optional().nullable(),\n parentId: z.string().optional().nullable(),\n});\n","import { z } from \"zod\";\nimport { EventFilterSchema, EventRuleSchema } from \"./eventFilter\";\nimport { DisplayPropertySchema } from \"./properties\";\nimport { ScheduleMetadataSchema } from \"./schedules\";\n\nexport const EventExampleSchema = z.object({\n id: z.string(),\n icon: z.string().optional(),\n name: z.string(),\n payload: z.any(),\n});\n\nexport type EventExample = z.infer<typeof EventExampleSchema>;\n\nexport const EventSpecificationSchema = z.object({\n name: z.string(),\n title: z.string(),\n source: z.string(),\n icon: z.string(),\n filter: EventFilterSchema.optional(),\n properties: z.array(DisplayPropertySchema).optional(),\n schema: z.any().optional(),\n examples: z.array(EventExampleSchema).optional(),\n});\n\nexport const DynamicTriggerMetadataSchema = z.object({\n type: z.literal(\"dynamic\"),\n id: z.string(),\n});\n\nexport const StaticTriggerMetadataSchema = z.object({\n type: z.literal(\"static\"),\n title: z.string(),\n properties: z.array(DisplayPropertySchema).optional(),\n rule: EventRuleSchema,\n});\n\nexport const ScheduledTriggerMetadataSchema = z.object({\n type: z.literal(\"scheduled\"),\n schedule: ScheduleMetadataSchema,\n});\n\nexport const TriggerMetadataSchema = z.discriminatedUnion(\"type\", [\n DynamicTriggerMetadataSchema,\n StaticTriggerMetadataSchema,\n ScheduledTriggerMetadataSchema,\n]);\n\nexport type TriggerMetadata = z.infer<typeof TriggerMetadataSchema>;\n","import { z } from \"zod\";\n\nexport const MISSING_CONNECTION_NOTIFICATION =\n \"dev.trigger.notifications.missingConnection\";\n\nexport const MISSING_CONNECTION_RESOLVED_NOTIFICATION =\n \"dev.trigger.notifications.missingConnectionResolved\";\n\nexport const CommonMissingConnectionNotificationPayloadSchema = z.object({\n id: z.string(),\n client: z.object({\n id: z.string(),\n title: z.string(),\n scopes: z.array(z.string()),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n }),\n authorizationUrl: z.string(),\n});\n\nexport const MissingDeveloperConnectionNotificationPayloadSchema =\n CommonMissingConnectionNotificationPayloadSchema.extend({\n type: z.literal(\"DEVELOPER\"),\n });\n\nexport const MissingExternalConnectionNotificationPayloadSchema =\n CommonMissingConnectionNotificationPayloadSchema.extend({\n type: z.literal(\"EXTERNAL\"),\n account: z.object({\n id: z.string(),\n metadata: z.any(),\n }),\n });\n\nexport const MissingConnectionNotificationPayloadSchema = z.discriminatedUnion(\n \"type\",\n [\n MissingDeveloperConnectionNotificationPayloadSchema,\n MissingExternalConnectionNotificationPayloadSchema,\n ]\n);\n\nexport type MissingConnectionNotificationPayload = z.infer<\n typeof MissingConnectionNotificationPayloadSchema\n>;\n\nexport const CommonMissingConnectionNotificationResolvedPayloadSchema =\n z.object({\n id: z.string(),\n client: z.object({\n id: z.string(),\n title: z.string(),\n scopes: z.array(z.string()),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n integrationIdentifier: z.string(),\n integrationAuthMethod: z.string(),\n }),\n expiresAt: z.coerce.date(),\n });\n\nexport const MissingDeveloperConnectionResolvedNotificationPayloadSchema =\n CommonMissingConnectionNotificationResolvedPayloadSchema.extend({\n type: z.literal(\"DEVELOPER\"),\n });\n\nexport const MissingExternalConnectionResolvedNotificationPayloadSchema =\n CommonMissingConnectionNotificationResolvedPayloadSchema.extend({\n type: z.literal(\"EXTERNAL\"),\n account: z.object({\n id: z.string(),\n metadata: z.any(),\n }),\n });\n\nexport const MissingConnectionResolvedNotificationPayloadSchema =\n z.discriminatedUnion(\"type\", [\n MissingDeveloperConnectionResolvedNotificationPayloadSchema,\n MissingExternalConnectionResolvedNotificationPayloadSchema,\n ]);\n\nexport type MissingConnectionResolvedNotificationPayload = z.infer<\n typeof MissingConnectionResolvedNotificationPayloadSchema\n>;\n","import { z } from \"zod\";\nimport { RedactStringSchema, RetryOptionsSchema } from \"./api\";\n\nexport const FetchRetryHeadersStrategySchema = z.object({\n strategy: z.literal(\"headers\"),\n limitHeader: z.string(),\n remainingHeader: z.string(),\n resetHeader: z.string(),\n});\n\nexport type FetchRetryHeadersStrategy = z.infer<\n typeof FetchRetryHeadersStrategySchema\n>;\n\nexport const FetchRetryBackoffStrategySchema = RetryOptionsSchema.extend({\n strategy: z.literal(\"backoff\"),\n});\n\nexport type FetchRetryBackoffStrategy = z.infer<\n typeof FetchRetryBackoffStrategySchema\n>;\n\nexport const FetchRetryStrategySchema = z.discriminatedUnion(\"strategy\", [\n FetchRetryHeadersStrategySchema,\n FetchRetryBackoffStrategySchema,\n]);\n\nexport type FetchRetryStrategy = z.infer<typeof FetchRetryStrategySchema>;\n\nexport const FetchRequestInitSchema = z.object({\n method: z.string().optional(),\n headers: z.record(z.union([z.string(), RedactStringSchema])).optional(),\n body: z.union([z.string(), z.instanceof(ArrayBuffer)]).optional(),\n});\n\nexport type FetchRequestInit = z.infer<typeof FetchRequestInitSchema>;\n\nexport const FetchRetryOptionsSchema = z.record(FetchRetryStrategySchema);\n\nexport type FetchRetryOptions = z.infer<typeof FetchRetryOptionsSchema>;\n\nexport const FetchOperationSchema = z.object({\n url: z.string(),\n requestInit: FetchRequestInitSchema.optional(),\n retry: z.record(FetchRetryStrategySchema).optional(),\n});\n\nexport type FetchOperation = z.infer<typeof FetchOperationSchema>;\n","// EventFilter is typed as type EventFilter = { [key: string]: EventFilter | string[] | number[] | boolean[] }\n\nimport { EventFilter } from \"./schemas\";\n\n// This function should take two EventFilters and return a new EventFilter that is the result of merging the two.\nexport function deepMergeFilters(\n filter: EventFilter,\n other: EventFilter\n): EventFilter {\n const result: EventFilter = { ...filter };\n\n for (const key in other) {\n if (other.hasOwnProperty(key)) {\n const otherValue = other[key];\n\n if (\n typeof otherValue === \"object\" &&\n !Array.isArray(otherValue) &&\n otherValue !== null\n ) {\n const filterValue = filter[key];\n\n if (\n filterValue &&\n typeof filterValue === \"object\" &&\n !Array.isArray(filterValue)\n ) {\n result[key] = deepMergeFilters(filterValue, otherValue);\n } else {\n result[key] = { ...other[key] };\n }\n } else {\n result[key] = other[key];\n }\n }\n }\n\n return result;\n}\n","import { RetryOptions } from \"./schemas\";\n\nconst DEFAULT_RETRY_OPTIONS = {\n limit: 5,\n factor: 1.8,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport function calculateRetryAt(\n retryOptions: RetryOptions,\n attempts: number\n): Date | undefined {\n const options = {\n ...DEFAULT_RETRY_OPTIONS,\n ...retryOptions,\n };\n\n const retryCount = attempts + 1;\n\n if (retryCount >= options.limit) {\n return;\n }\n\n const random = options.randomize ? Math.random() + 1 : 1;\n\n let timeoutInMs = Math.round(\n random *\n Math.max(options.minTimeoutInMs, 1) *\n Math.pow(options.factor, Math.max(attempts - 1, 0))\n );\n\n timeoutInMs = Math.min(timeoutInMs, options.maxTimeoutInMs);\n\n return new Date(Date.now() + timeoutInMs);\n}\n","import { DeserializedJson, DeserializedJsonSchema } from \"./schemas\";\n\nexport interface ExampleReplacement {\n marker: string;\n replace(input: ExampleInputData): DeserializedJson;\n}\n\ntype ExampleInputData = {\n match: {\n key: string;\n value: string;\n };\n data: {\n now: Date;\n };\n};\n\nexport const currentDate: ExampleReplacement = {\n marker: \"__CURRENT_DATE__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.toISOString();\n },\n};\n\nexport const currentTimestampMilliseconds: ExampleReplacement = {\n marker: \"__CURRENT_TIMESTAMP_MS__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.getTime();\n },\n};\n\nexport const currentTimestampSeconds: ExampleReplacement = {\n marker: \"__CURRENT_TIMESTAMP_S__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.getTime() / 1000;\n },\n};\n\nexport const replacements: ExampleReplacement[] = [\n currentDate,\n currentTimestampMilliseconds,\n currentTimestampSeconds,\n];\n","import {\n ApiEventLog,\n ApiEventLogSchema,\n CompleteTaskBodyInput,\n ConnectionAuthSchema,\n CreateRunBody,\n CreateRunResponseBodySchema,\n FailTaskBodyInput,\n LogLevel,\n Logger,\n RegisterScheduleResponseBodySchema,\n RegisterSourceEvent,\n RegisterSourceEventSchema,\n RegisterTriggerBody,\n RunTaskBodyInput,\n ScheduleMetadata,\n SendEvent,\n SendEventOptions,\n ServerTaskSchema,\n TriggerSource,\n TriggerSourceSchema,\n UpdateTriggerSourceBody,\n} from \"@trigger.dev/internal\";\nimport { z } from \"zod\";\n\nexport type ApiClientOptions = {\n apiKey?: string;\n apiUrl?: string;\n logLevel?: LogLevel;\n};\n\nexport type EndpointRecord = {\n id: string;\n name: string;\n url: string;\n};\n\nexport type HttpSourceRecord = {\n id: string;\n key: string;\n managed: boolean;\n url: string;\n status: \"PENDING\" | \"ACTIVE\" | \"INACTIVE\";\n secret?: string;\n data?: any;\n};\n\nexport type RunRecord = {\n id: string;\n jobId: string;\n callbackUrl: string;\n event: ApiEventLog;\n};\n\nexport class ApiClient {\n #apiUrl: string;\n #options: ApiClientOptions;\n #logger: Logger;\n\n constructor(options: ApiClientOptions) {\n this.#options = options;\n\n this.#apiUrl =\n this.#options.apiUrl ??\n process.env.TRIGGER_API_URL ??\n \"https://api.trigger.dev\";\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n async registerEndpoint(options: {\n url: string;\n name: string;\n }): Promise<EndpointRecord> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Registering endpoint\", {\n url: options.url,\n name: options.name,\n });\n\n const response = await fetch(`${this.#apiUrl}/api/v1/endpoints`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n url: options.url,\n name: options.name,\n }),\n });\n\n if (response.status >= 400 && response.status < 500) {\n const body = await response.json();\n\n throw new Error(body.error);\n }\n\n if (response.status !== 200) {\n throw new Error(\n `Failed to register entry point, got status code ${response.status}`\n );\n }\n\n return await response.json();\n }\n\n async createRun(params: CreateRunBody) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Creating run\", {\n params,\n });\n\n return await zodfetch(\n CreateRunResponseBodySchema,\n `${this.#apiUrl}/api/v1/runs`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(params),\n }\n );\n }\n\n async runTask(runId: string, task: RunTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Running Task\", {\n task,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n \"Idempotency-Key\": task.idempotencyKey,\n },\n body: JSON.stringify(task),\n }\n );\n }\n\n async completeTask(runId: string, id: string, task: CompleteTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Complete Task\", {\n task,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks/${id}/complete`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(task),\n }\n );\n }\n\n async failTask(runId: string, id: string, body: FailTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Fail Task\", {\n id,\n runId,\n body,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks/${id}/fail`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async sendEvent(event: SendEvent, options: SendEventOptions = {}) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Sending event\", {\n event,\n });\n\n return await zodfetch(ApiEventLogSchema, `${this.#apiUrl}/api/v1/events`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ event, options }),\n });\n }\n\n async updateSource(\n client: string,\n key: string,\n source: UpdateTriggerSourceBody\n ): Promise<TriggerSource> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"activating http source\", {\n source,\n });\n\n const response = await zodfetch(\n TriggerSourceSchema,\n `${this.#apiUrl}/api/v1/${client}/sources/${key}`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(source),\n }\n );\n\n return response;\n }\n\n async registerTrigger(\n client: string,\n id: string,\n key: string,\n payload: RegisterTriggerBody\n ): Promise<RegisterSourceEvent> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"registering trigger\", {\n id,\n payload,\n });\n\n const response = await zodfetch(\n RegisterSourceEventSchema,\n `${this.#apiUrl}/api/v1/${client}/triggers/${id}/registrations/${key}`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(payload),\n }\n );\n\n return response;\n }\n\n async registerSchedule(\n client: string,\n id: string,\n key: string,\n payload: ScheduleMetadata\n ) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"registering schedule\", {\n id,\n payload,\n });\n\n const response = await zodfetch(\n RegisterScheduleResponseBodySchema,\n `${this.#apiUrl}/api/v1/${client}/schedules/${id}/registrations`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ id: key, ...payload }),\n }\n );\n\n return response;\n }\n\n async unregisterSchedule(client: string, id: string, key: string) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"unregistering schedule\", {\n id,\n });\n\n const response = await zodfetch(\n z.object({ ok: z.boolean() }),\n `${\n this.#apiUrl\n }/api/v1/${client}/schedules/${id}/registrations/${encodeURIComponent(\n key\n )}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n }\n );\n\n return response;\n }\n\n async getAuth(client: string, id: string) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"getting auth\", {\n id,\n });\n\n const response = await zodfetch(\n ConnectionAuthSchema,\n `${this.#apiUrl}/api/v1/${client}/auth/${id}`,\n {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n },\n {\n optional: true,\n }\n );\n\n return response;\n }\n\n async #apiKey() {\n const apiKey = getApiKey(this.#options.apiKey);\n\n if (apiKey.status === \"invalid\") {\n throw new Error(\"Invalid API key\");\n\n // const chalk = (await import(\"chalk\")).default;\n // const terminalLink = (await import(\"terminal-link\")).default;\n\n // throw new Error(\n // `${chalk.red(\"Trigger.dev error\")}: Invalid API key (\"${chalk.italic(\n // apiKey.apiKey\n // )}\"), please set the TRIGGER_API_KEY environment variable or pass the apiKey option to a valid value. ${terminalLink(\n // \"Get your API key here\",\n // \"https://app.trigger.dev\",\n // {\n // fallback(text, url) {\n // return `${text} 👉 ${url}`;\n // },\n // }\n // )}`\n // );\n } else if (apiKey.status === \"missing\") {\n throw new Error(\"Missing API key\");\n // const chalk = (await import(\"chalk\")).default;\n // const terminalLink = (await import(\"terminal-link\")).default;\n\n // throw new Error(\n // `${chalk.red(\n // \"Trigger.dev error\"\n // )}: Missing an API key, please set the TRIGGER_API_KEY environment variable or pass the apiKey option to the Trigger constructor. ${terminalLink(\n // \"Get your API key here\",\n // \"https://app.trigger.dev\",\n // {\n // fallback(text, url) {\n // return `${text} 👉 ${url}`;\n // },\n // }\n // )}`\n // );\n }\n\n return apiKey.apiKey;\n }\n}\n\nfunction getApiKey(key?: string) {\n const apiKey = key ?? process.env.TRIGGER_API_KEY;\n\n if (!apiKey) {\n return { status: \"missing\" as const };\n }\n\n // Validate the api_key format (should be tr_{env}_XXXXX)\n const isValid = apiKey.match(/^tr_[a-z]+_[a-zA-Z0-9]+$/);\n\n if (!isValid) {\n return { status: \"invalid\" as const, apiKey };\n }\n\n return { status: \"valid\" as const, apiKey };\n}\n\nasync function zodfetch<\n TResponseBody extends any,\n TOptional extends boolean = false\n>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: {\n errorMessage?: string;\n optional?: TOptional;\n }\n): Promise<TOptional extends true ? TResponseBody | undefined : TResponseBody> {\n const response = await fetch(url, requestInit);\n\n if (\n (!requestInit || requestInit.method === \"GET\") &&\n response.status === 404 &&\n options?.optional\n ) {\n // @ts-ignore\n return;\n }\n\n if (response.status >= 400 && response.status < 500) {\n const body = await response.json();\n\n throw new Error(body.error);\n }\n\n if (response.status !== 200) {\n throw new Error(\n options?.errorMessage ??\n `Failed to fetch ${url}, got status code ${response.status}`\n );\n }\n\n const jsonBody = await response.json();\n\n return schema.parse(jsonBody);\n}\n","import { ErrorWithStack, ServerTask } from \"@trigger.dev/internal\";\n\nexport class ResumeWithTaskError {\n constructor(public task: ServerTask) {}\n}\n\nexport class RetryWithTaskError {\n constructor(\n public cause: ErrorWithStack,\n public task: ServerTask,\n public retryAt: Date\n ) {}\n}\n\nexport function isTriggerError(\n err: unknown\n): err is ResumeWithTaskError | RetryWithTaskError {\n return (\n err instanceof ResumeWithTaskError || err instanceof RetryWithTaskError\n );\n}\n","import {\n CachedTask,\n ConnectionAuth,\n CronOptions,\n ErrorWithStackSchema,\n FetchRequestInit,\n FetchRetryOptions,\n IntervalOptions,\n LogLevel,\n Logger,\n RunTaskOptions,\n SendEvent,\n SendEventOptions,\n SerializableJson,\n ServerTask,\n UpdateTriggerSourceBody,\n} from \"@trigger.dev/internal\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { webcrypto } from \"node:crypto\";\nimport { ApiClient } from \"./apiClient\";\nimport {\n ResumeWithTaskError,\n RetryWithTaskError,\n isTriggerError,\n} from \"./errors\";\nimport { createIOWithIntegrations } from \"./ioWithIntegrations\";\nimport { calculateRetryAt } from \"./retry\";\nimport { TriggerClient } from \"./triggerClient\";\nimport { DynamicTrigger } from \"./triggers/dynamic\";\nimport {\n ExternalSource,\n ExternalSourceParams,\n} from \"./triggers/externalSource\";\nimport { DynamicSchedule } from \"./triggers/scheduled\";\nimport { EventSpecification, TaskLogger, TriggerContext } from \"./types\";\n\nexport type IOTask = ServerTask;\n\nexport type IOOptions = {\n id: string;\n apiClient: ApiClient;\n client: TriggerClient;\n context: TriggerContext;\n logger?: Logger;\n logLevel?: LogLevel;\n cachedTasks?: Array<CachedTask>;\n};\n\nexport class IO {\n private _id: string;\n private _apiClient: ApiClient;\n private _triggerClient: TriggerClient;\n private _logger: Logger;\n private _cachedTasks: Map<string, CachedTask>;\n private _taskStorage: AsyncLocalStorage<{ taskId: string }>;\n private _context: TriggerContext;\n\n constructor(options: IOOptions) {\n this._id = options.id;\n this._apiClient = options.apiClient;\n this._triggerClient = options.client;\n this._logger =\n options.logger ?? new Logger(\"trigger.dev\", options.logLevel);\n this._cachedTasks = new Map();\n\n if (options.cachedTasks) {\n options.cachedTasks.forEach((task) => {\n this._cachedTasks.set(task.id, task);\n });\n }\n\n this._taskStorage = new AsyncLocalStorage();\n this._context = options.context;\n }\n\n get logger() {\n return new IOLogger(async (level, message, data) => {\n switch (level) {\n case \"DEBUG\": {\n this._logger.debug(message, data);\n break;\n }\n case \"INFO\": {\n this._logger.info(message, data);\n break;\n }\n case \"WARN\": {\n this._logger.warn(message, data);\n break;\n }\n case \"ERROR\": {\n this._logger.error(message, data);\n break;\n }\n }\n\n await this.runTask(\n [message, level],\n {\n name: \"log\",\n icon: \"log\",\n description: message,\n params: data,\n properties: [{ label: \"Level\", text: level }],\n style: { style: \"minimal\", variant: level.toLowerCase() },\n noop: true,\n },\n async (task) => {}\n );\n });\n }\n\n async wait(key: string | any[], seconds: number) {\n return await this.runTask(\n key,\n {\n name: \"wait\",\n icon: \"clock\",\n params: { seconds },\n noop: true,\n delayUntil: new Date(Date.now() + seconds * 1000),\n style: { style: \"minimal\" },\n },\n async (task) => {}\n );\n }\n\n async backgroundFetch<TResponseData>(\n key: string | any[],\n url: string,\n requestInit?: FetchRequestInit,\n retry?: FetchRetryOptions\n ): Promise<TResponseData> {\n const urlObject = new URL(url);\n\n return (await this.runTask(\n key,\n {\n name: `fetch ${urlObject.hostname}${urlObject.pathname}`,\n params: { url, requestInit, retry },\n operation: \"fetch\",\n icon: \"background\",\n noop: false,\n properties: [\n {\n label: \"url\",\n text: url,\n url,\n },\n {\n label: \"method\",\n text: requestInit?.method ?? \"GET\",\n },\n {\n label: \"background\",\n text: \"true\",\n },\n ],\n },\n async (task) => {\n return task.output;\n }\n )) as TResponseData;\n }\n\n async sendEvent(\n key: string | any[],\n event: SendEvent,\n options?: SendEventOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"sendEvent\",\n params: { event, options },\n },\n async (task) => {\n return await this._triggerClient.sendEvent(event, options);\n }\n );\n }\n\n async updateSource(\n key: string | any[],\n options: { key: string } & UpdateTriggerSourceBody\n ) {\n return this.runTask(\n key,\n {\n name: \"Update Source\",\n description: `Update Source ${options.key}`,\n properties: [\n {\n label: \"key\",\n text: options.key,\n },\n ],\n redact: {\n paths: [\"secret\"],\n },\n },\n async (task) => {\n return await this._apiClient.updateSource(\n this._triggerClient.id,\n options.key,\n options\n );\n }\n );\n }\n\n async registerInterval(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string,\n options: IntervalOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"register-interval\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n { label: \"seconds\", text: options.seconds.toString() },\n ],\n params: options,\n },\n async (task) => {\n return dynamicSchedule.register(id, {\n type: \"interval\",\n options,\n });\n }\n );\n }\n\n async unregisterInterval(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string\n ) {\n return await this.runTask(\n key,\n {\n name: \"unregister-interval\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n ],\n },\n async (task) => {\n return dynamicSchedule.unregister(id);\n }\n );\n }\n\n async registerCron(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string,\n options: CronOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"register-cron\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n { label: \"cron\", text: options.cron },\n ],\n params: options,\n },\n async (task) => {\n return dynamicSchedule.register(id, {\n type: \"cron\",\n options,\n });\n }\n );\n }\n\n async unregisterCron(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string\n ) {\n return await this.runTask(\n key,\n {\n name: \"unregister-cron\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n ],\n },\n async (task) => {\n return dynamicSchedule.unregister(id);\n }\n );\n }\n\n async registerTrigger<\n TTrigger extends DynamicTrigger<\n EventSpecification<any>,\n ExternalSource<any, any, any>\n >\n >(\n key: string | any[],\n trigger: TTrigger,\n id: string,\n params: ExternalSourceParams<TTrigger[\"source\"]>\n ): Promise<{ id: string; key: string } | undefined> {\n return await this.runTask(\n key,\n {\n name: \"register-trigger\",\n properties: [\n { label: \"trigger\", text: trigger.id },\n { label: \"id\", text: id },\n ],\n params: params as any,\n },\n async (task) => {\n const registration = await this.runTask(\n \"register-source\",\n {\n name: \"register-source\",\n },\n async (subtask1) => {\n return trigger.register(id, params);\n }\n );\n\n const connection = await this.getAuth(\n \"get-auth\",\n registration.source.clientId\n );\n\n const io = createIOWithIntegrations(\n // @ts-ignore\n this,\n {\n integration: connection,\n },\n {\n integration: trigger.source.integration,\n }\n );\n\n const updates = await trigger.source.register(\n params,\n registration,\n io,\n this._context\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await this.updateSource(\"update-source\", {\n key: registration.source.key,\n ...updates,\n });\n }\n );\n }\n\n async getAuth(\n key: string | any[],\n clientId?: string\n ): Promise<ConnectionAuth | undefined> {\n if (!clientId) {\n return;\n }\n\n return this.runTask(key, { name: \"get-auth\" }, async (task) => {\n return await this._triggerClient.getAuth(clientId);\n });\n }\n\n async runTask<TResult extends SerializableJson | void = void>(\n key: string | any[],\n options: RunTaskOptions,\n callback: (task: IOTask, io: IO) => Promise<TResult>,\n onError?: (\n error: unknown,\n task: IOTask,\n io: IO\n ) => { retryAt: Date; error?: Error; jitter?: number } | undefined | void\n ): Promise<TResult> {\n const parentId = this._taskStorage.getStore()?.taskId;\n\n if (parentId) {\n this._logger.debug(\"Using parent task\", {\n parentId,\n key,\n options,\n });\n }\n\n const idempotencyKey = await generateIdempotencyKey(\n [this._id, parentId ?? \"\", key].flat()\n );\n\n const cachedTask = this._cachedTasks.get(idempotencyKey);\n\n if (cachedTask) {\n this._logger.debug(\"Using cached task\", {\n idempotencyKey,\n cachedTask,\n });\n\n return cachedTask.output as TResult;\n }\n\n const task = await this._apiClient.runTask(this._id, {\n idempotencyKey,\n displayKey: typeof key === \"string\" ? key : undefined,\n noop: false,\n ...options,\n parentId,\n });\n\n if (task.status === \"COMPLETED\") {\n this._logger.debug(\"Using task output\", {\n idempotencyKey,\n task,\n });\n\n this.#addToCachedTasks(task);\n\n return task.output as TResult;\n }\n\n if (task.status === \"ERRORED\") {\n this._logger.debug(\"Task errored\", {\n idempotencyKey,\n task,\n });\n\n throw new Error(task.error ?? \"Task errored\");\n }\n\n if (task.status === \"WAITING\") {\n this._logger.debug(\"Task waiting\", {\n idempotencyKey,\n task,\n });\n\n throw new ResumeWithTaskError(task);\n }\n\n if (task.status === \"RUNNING\" && typeof task.operation === \"string\") {\n this._logger.debug(\"Task running operation\", {\n idempotencyKey,\n task,\n });\n\n throw new ResumeWithTaskError(task);\n }\n\n const executeTask = async () => {\n try {\n const result = await callback(task, this);\n\n this._logger.debug(\"Completing using output\", {\n idempotencyKey,\n task,\n });\n\n await this._apiClient.completeTask(this._id, task.id, {\n output: result ?? undefined,\n });\n\n return result;\n } catch (error) {\n if (isTriggerError(error)) {\n throw error;\n }\n\n if (onError) {\n const onErrorResult = onError(error, task, this);\n\n if (onErrorResult) {\n const parsedError = ErrorWithStackSchema.safeParse(\n onErrorResult.error\n );\n\n throw new RetryWithTaskError(\n parsedError.success\n ? parsedError.data\n : { message: \"Unknown error\" },\n task,\n onErrorResult.retryAt\n );\n }\n }\n\n const parsedError = ErrorWithStackSchema.safeParse(error);\n\n if (options.retry) {\n const retryAt = calculateRetryAt(options.retry, task.attempts - 1);\n\n if (retryAt) {\n throw new RetryWithTaskError(\n parsedError.success\n ? parsedError.data\n : { message: \"Unknown error\" },\n task,\n retryAt\n );\n }\n }\n\n if (parsedError.success) {\n await this._apiClient.failTask(this._id, task.id, {\n error: parsedError.data,\n });\n } else {\n await this._apiClient.failTask(this._id, task.id, {\n error: { message: JSON.stringify(error), name: \"Unknown Error\" },\n });\n }\n\n throw error;\n }\n };\n\n return this._taskStorage.run({ taskId: task.id }, executeTask);\n }\n\n async try<TResult, TCatchResult>(\n tryCallback: () => Promise<TResult>,\n catchCallback: (error: unknown) => Promise<TCatchResult>\n ): Promise<TResult | TCatchResult> {\n try {\n return await tryCallback();\n } catch (error) {\n if (isTriggerError(error)) {\n throw error;\n }\n\n return await catchCallback(error);\n }\n }\n\n #addToCachedTasks(task: ServerTask) {\n this._cachedTasks.set(task.idempotencyKey, task);\n }\n}\n\n// Generate a stable idempotency key for the key material, using a stable json stringification\nasync function generateIdempotencyKey(keyMaterial: any[]) {\n const keys = keyMaterial.map((key) => {\n if (typeof key === \"string\") {\n return key;\n }\n\n return stableStringify(key);\n });\n\n const key = keys.join(\":\");\n\n const hash = await webcrypto.subtle.digest(\"SHA-256\", Buffer.from(key));\n\n return Buffer.from(hash).toString(\"hex\");\n}\n\nfunction stableStringify(obj: any): string {\n function sortKeys(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortKeys);\n }\n\n const sortedKeys = Object.keys(obj).sort();\n const sortedObj: { [key: string]: any } = {};\n\n for (const key of sortedKeys) {\n sortedObj[key] = sortKeys(obj[key]);\n }\n\n return sortedObj;\n }\n\n const sortedObj = sortKeys(obj);\n return JSON.stringify(sortedObj);\n}\n\ntype CallbackFunction = (\n level: \"DEBUG\" | \"INFO\" | \"WARN\" | \"ERROR\",\n message: string,\n properties?: Record<string, any>\n) => Promise<void>;\n\nexport class IOLogger implements TaskLogger {\n constructor(private callback: CallbackFunction) {}\n\n debug(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"DEBUG\", message, properties);\n }\n info(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"INFO\", message, properties);\n }\n warn(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"WARN\", message, properties);\n }\n error(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"ERROR\", message, properties);\n }\n}\n","import { ConnectionAuth } from \"@trigger.dev/internal\";\nimport {\n AuthenticatedTask,\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"./integrations\";\nimport { IO } from \"./io\";\n\nexport function createIOWithIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n>(\n io: IO,\n auths?: Record<string, ConnectionAuth | undefined>,\n integrations?: TIntegrations\n): IOWithIntegrations<TIntegrations> {\n if (!integrations) {\n return io as IOWithIntegrations<TIntegrations>;\n }\n\n const connections = Object.entries(integrations).reduce(\n (acc, [connectionKey, integration]) => {\n let auth = auths?.[connectionKey];\n\n const client = integration.client.usesLocalAuth\n ? integration.client.client\n : auth\n ? integration.client.clientFactory?.(auth)\n : undefined;\n\n if (!client) {\n return acc;\n }\n\n auth = integration.client.usesLocalAuth ? integration.client.auth : auth;\n\n const ioConnection = {\n client,\n } as any;\n\n if (integration.client.tasks) {\n const tasks: Record<\n string,\n AuthenticatedTask<any, any, any, any>\n > = integration.client.tasks;\n\n Object.keys(tasks).forEach((taskName) => {\n const authenticatedTask = tasks[taskName];\n\n ioConnection[taskName] = async (\n key: string | string[],\n params: any\n ) => {\n const options = authenticatedTask.init(params);\n options.connectionKey = connectionKey;\n\n return await io.runTask(\n key,\n options,\n async (ioTask) => {\n return authenticatedTask.run(params, client, ioTask, io, auth);\n },\n authenticatedTask.onError\n );\n };\n });\n }\n\n acc[connectionKey] = ioConnection;\n\n return acc;\n },\n {} as any\n );\n\n return new Proxy(io, {\n get(target, prop, receiver) {\n // We can return the original io back if the prop is __io\n if (prop === \"__io\") {\n return io;\n }\n\n if (prop in connections) {\n return connections[prop];\n }\n\n const value = Reflect.get(target, prop, receiver);\n return typeof value == \"function\" ? value.bind(target) : value;\n },\n }) as IOWithIntegrations<TIntegrations>;\n}\n","import {\n EventFilter,\n TriggerMetadata,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport { z } from \"zod\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\ntype EventTriggerOptions<TEventSpecification extends EventSpecification<any>> =\n {\n event: TEventSpecification;\n name?: string;\n source?: string;\n filter?: EventFilter;\n };\n\nexport class EventTrigger<TEventSpecification extends EventSpecification<any>>\n implements Trigger<TEventSpecification>\n{\n #options: EventTriggerOptions<TEventSpecification>;\n\n constructor(options: EventTriggerOptions<TEventSpecification>) {\n this.#options = options;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.#options.name ?? this.#options.event.title,\n rule: {\n event: this.#options.name ?? this.#options.event.name,\n source: this.#options.source ?? \"trigger.dev\",\n payload: deepMergeFilters(\n this.#options.filter ?? {},\n this.#options.event.filter ?? {}\n ),\n },\n };\n }\n\n get event() {\n return this.#options.event;\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n}\n\ntype TriggerOptions<TEvent> = {\n name: string;\n schema?: z.Schema<TEvent>;\n source?: string;\n filter?: EventFilter;\n};\n\nexport function eventTrigger<TEvent extends any = any>(\n options: TriggerOptions<TEvent>\n): Trigger<EventSpecification<TEvent>> {\n return new EventTrigger({\n name: options.name,\n filter: options.filter,\n event: {\n name: options.name,\n title: \"Event\",\n source: options.source ?? \"trigger.dev\",\n icon: \"custom-event\",\n parsePayload: (rawPayload: any) => {\n if (options.schema) {\n return options.schema.parse(rawPayload);\n }\n\n return rawPayload as any;\n },\n },\n });\n}\n","import {\n ErrorWithStackSchema,\n IndexEndpointResponse,\n HandleTriggerSource,\n HttpSourceRequestHeadersSchema,\n InitializeTriggerBodySchema,\n LogLevel,\n Logger,\n NormalizedResponse,\n PreprocessRunBody,\n PreprocessRunBodySchema,\n REGISTER_SOURCE_EVENT,\n RegisterSourceEvent,\n RegisterSourceEventSchema,\n RegisterTriggerBody,\n RunJobBody,\n RunJobBodySchema,\n RunJobResponse,\n ScheduleMetadata,\n SendEvent,\n SendEventOptions,\n SourceMetadata,\n} from \"@trigger.dev/internal\";\nimport { ApiClient } from \"./apiClient\";\nimport { ResumeWithTaskError, RetryWithTaskError } from \"./errors\";\nimport { IO } from \"./io\";\nimport { createIOWithIntegrations } from \"./ioWithIntegrations\";\nimport { Job } from \"./job\";\nimport { DynamicTrigger } from \"./triggers/dynamic\";\nimport { EventTrigger } from \"./triggers/eventTrigger\";\nimport { ExternalSource } from \"./triggers/externalSource\";\nimport type {\n EventSpecification,\n Trigger,\n TriggerContext,\n TriggerPreprocessContext,\n} from \"./types\";\n\nconst registerSourceEvent: EventSpecification<RegisterSourceEvent> = {\n name: REGISTER_SOURCE_EVENT,\n title: \"Register Source\",\n source: \"internal\",\n icon: \"register-source\",\n parsePayload: RegisterSourceEventSchema.parse,\n};\n\nexport type TriggerClientOptions = {\n id: string;\n url?: string;\n apiKey?: string;\n apiUrl?: string;\n logLevel?: LogLevel;\n};\n\nexport type ListenOptions = {\n url: string;\n};\n\nexport class TriggerClient {\n #options: TriggerClientOptions;\n #registeredJobs: Record<string, Job<Trigger<EventSpecification<any>>, any>> =\n {};\n #registeredSources: Record<string, SourceMetadata> = {};\n #registeredHttpSourceHandlers: Record<\n string,\n (\n source: HandleTriggerSource,\n request: Request\n ) => Promise<{\n events: Array<SendEvent>;\n response?: NormalizedResponse;\n } | void>\n > = {};\n #registeredDynamicTriggers: Record<\n string,\n DynamicTrigger<EventSpecification<any>, ExternalSource<any, any, any>>\n > = {};\n #jobMetadataByDynamicTriggers: Record<\n string,\n Array<{ id: string; version: string }>\n > = {};\n #registeredSchedules: Record<string, Array<{ id: string; version: string }>> =\n {};\n\n #client: ApiClient;\n #logger: Logger;\n private _url: string;\n id: string;\n path?: string;\n\n constructor(options: TriggerClientOptions) {\n this.id = options.id;\n this._url = buildClientUrl(options.url);\n this.#options = options;\n this.#client = new ApiClient(this.#options);\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n get url() {\n return `${this._url}${\n this.path ? `${this.path.startsWith(\"/\") ? \"\" : \"/\"}${this.path}` : \"\"\n }`;\n }\n\n async handleRequest(request: Request): Promise<NormalizedResponse> {\n this.#logger.debug(\"handling request\", {\n url: request.url,\n headers: Object.fromEntries(request.headers.entries()),\n method: request.method,\n });\n\n const apiKey = request.headers.get(\"x-trigger-api-key\");\n\n if (!this.authorized(apiKey)) {\n return {\n status: 401,\n body: {\n message: \"Unauthorized\",\n },\n };\n }\n\n if (request.method !== \"POST\") {\n return {\n status: 405,\n body: {\n message: \"Method not allowed\",\n },\n };\n }\n\n const action = request.headers.get(\"x-trigger-action\");\n\n if (!action) {\n return {\n status: 400,\n body: {\n message: \"Missing x-trigger-action header\",\n },\n };\n }\n\n switch (action) {\n case \"PING\": {\n const endpointId = request.headers.get(\"x-trigger-endpoint-id\");\n\n if (!endpointId) {\n return {\n status: 200,\n body: {\n ok: false,\n message: \"Missing endpoint ID\",\n },\n };\n }\n\n if (this.id !== endpointId) {\n return {\n status: 200,\n body: {\n ok: false,\n message: `Endpoint ID mismatch error. Expected ${this.id}, got ${endpointId}`,\n },\n };\n }\n\n return {\n status: 200,\n body: {\n ok: true,\n },\n };\n }\n case \"INDEX_ENDPOINT\": {\n // if the x-trigger-job-id header is set, we return the job with that id\n const jobId = request.headers.get(\"x-trigger-job-id\");\n\n if (jobId) {\n const job = this.#registeredJobs[jobId];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n return {\n status: 200,\n body: job.toJSON(),\n };\n }\n\n const body: IndexEndpointResponse = {\n jobs: Object.values(this.#registeredJobs).map((job) => job.toJSON()),\n sources: Object.values(this.#registeredSources),\n dynamicTriggers: Object.values(this.#registeredDynamicTriggers).map(\n (trigger) => ({\n id: trigger.id,\n jobs: this.#jobMetadataByDynamicTriggers[trigger.id] ?? [],\n })\n ),\n dynamicSchedules: Object.entries(this.#registeredSchedules).map(\n ([id, jobs]) => ({\n id,\n jobs,\n })\n ),\n };\n\n // if the x-trigger-job-id header is not set, we return all jobs\n return {\n status: 200,\n body,\n };\n }\n case \"INITIALIZE_TRIGGER\": {\n const json = await request.json();\n const body = InitializeTriggerBodySchema.safeParse(json);\n\n if (!body.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid trigger body\",\n },\n };\n }\n\n const dynamicTrigger = this.#registeredDynamicTriggers[body.data.id];\n\n if (!dynamicTrigger) {\n return {\n status: 404,\n body: {\n message: \"Dynamic trigger not found\",\n },\n };\n }\n\n return {\n status: 200,\n body: dynamicTrigger.registeredTriggerForParams(body.data.params),\n };\n }\n case \"EXECUTE_JOB\": {\n const json = await request.json();\n const execution = RunJobBodySchema.safeParse(json);\n\n if (!execution.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid execution\",\n },\n };\n }\n\n const job = this.#registeredJobs[execution.data.job.id];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n const results = await this.#executeJob(execution.data, job);\n\n return {\n status: 200,\n body: results,\n };\n }\n case \"PREPROCESS_RUN\": {\n const json = await request.json();\n const body = PreprocessRunBodySchema.safeParse(json);\n\n if (!body.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid body\",\n },\n };\n }\n\n const job = this.#registeredJobs[body.data.job.id];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n const results = await this.#preprocessRun(body.data, job);\n\n return {\n status: 200,\n body: {\n abort: results.abort,\n properties: results.properties,\n },\n };\n }\n case \"DELIVER_HTTP_SOURCE_REQUEST\": {\n const headers = HttpSourceRequestHeadersSchema.safeParse(\n Object.fromEntries(request.headers.entries())\n );\n\n if (!headers.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid headers\",\n },\n };\n }\n\n const sourceRequest = new Request(headers.data[\"x-ts-http-url\"], {\n method: headers.data[\"x-ts-http-method\"],\n headers: headers.data[\"x-ts-http-headers\"],\n body:\n headers.data[\"x-ts-http-method\"] !== \"GET\"\n ? request.body\n : undefined,\n });\n\n const key = headers.data[\"x-ts-key\"];\n const dynamicId = headers.data[\"x-ts-dynamic-id\"];\n const secret = headers.data[\"x-ts-secret\"];\n const params = headers.data[\"x-ts-params\"];\n const data = headers.data[\"x-ts-data\"];\n\n const source = {\n key,\n dynamicId,\n secret,\n params,\n data,\n };\n\n const { response, events } = await this.#handleHttpSourceRequest(\n source,\n sourceRequest\n );\n\n return {\n status: 200,\n body: {\n events,\n response,\n },\n };\n }\n }\n\n return {\n status: 405,\n body: {\n message: \"Method not allowed\",\n },\n };\n }\n\n attach(job: Job<Trigger<any>, any>): void {\n if (!job.enabled) {\n return;\n }\n\n this.#registeredJobs[job.id] = job;\n\n job.trigger.attachToJob(this, job);\n }\n\n attachDynamicTrigger(trigger: DynamicTrigger<any, any>): void {\n this.#registeredDynamicTriggers[trigger.id] = trigger;\n\n new Job(this, {\n id: `register-dynamic-trigger-${trigger.id}`,\n name: `Register dynamic trigger ${trigger.id}`,\n version: trigger.source.version,\n trigger: new EventTrigger({\n event: registerSourceEvent,\n filter: { dynamicTriggerId: [trigger.id] },\n }),\n integrations: {\n integration: trigger.source.integration,\n },\n run: async (event, io, ctx) => {\n const updates = await trigger.source.register(\n event.source.params,\n event,\n io,\n ctx\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await io.updateSource(\"update-source\", {\n key: event.source.key,\n ...updates,\n });\n },\n // @ts-ignore\n __internal: true,\n });\n }\n\n attachJobToDynamicTrigger(\n job: Job<Trigger<any>, any>,\n trigger: DynamicTrigger<any, any>\n ): void {\n const jobs = this.#jobMetadataByDynamicTriggers[trigger.id] ?? [];\n\n jobs.push({ id: job.id, version: job.version });\n\n this.#jobMetadataByDynamicTriggers[trigger.id] = jobs;\n }\n\n attachSource(options: {\n key: string;\n source: ExternalSource<any, any>;\n event: EventSpecification<any>;\n params: any;\n }): void {\n this.#registeredHttpSourceHandlers[options.key] = async (s, r) => {\n return await options.source.handle(s, r, this.#logger);\n };\n\n let registeredSource = this.#registeredSources[options.key];\n\n if (!registeredSource) {\n registeredSource = {\n channel: options.source.channel,\n key: options.key,\n params: options.params,\n events: [],\n integration: {\n id: options.source.integration.id,\n metadata: options.source.integration.metadata,\n authSource: options.source.integration.client.usesLocalAuth\n ? \"LOCAL\"\n : \"HOSTED\",\n },\n };\n }\n\n registeredSource.events = Array.from(\n new Set([...registeredSource.events, options.event.name])\n );\n\n this.#registeredSources[options.key] = registeredSource;\n\n new Job(this, {\n id: options.key,\n name: options.key,\n version: options.source.version,\n trigger: new EventTrigger({\n event: registerSourceEvent,\n filter: { source: { key: [options.key] } },\n }),\n integrations: {\n integration: options.source.integration,\n },\n queue: {\n name: options.key,\n maxConcurrent: 1,\n },\n startPosition: \"initial\",\n run: async (event, io, ctx) => {\n const updates = await options.source.register(\n options.params,\n event,\n io,\n ctx\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await io.updateSource(\"update-source\", {\n key: options.key,\n ...updates,\n });\n },\n // @ts-ignore\n __internal: true,\n });\n }\n\n attachDynamicSchedule(key: string, job: Job<Trigger<any>, any>): void {\n const jobs = this.#registeredSchedules[key] ?? [];\n\n jobs.push({ id: job.id, version: job.version });\n\n this.#registeredSchedules[key] = jobs;\n }\n\n async registerTrigger(id: string, key: string, options: RegisterTriggerBody) {\n return this.#client.registerTrigger(this.id, id, key, options);\n }\n\n async getAuth(id: string) {\n return this.#client.getAuth(this.id, id);\n }\n\n async sendEvent(event: SendEvent, options?: SendEventOptions) {\n return this.#client.sendEvent(event, options);\n }\n\n async registerSchedule(id: string, key: string, schedule: ScheduleMetadata) {\n return this.#client.registerSchedule(this.id, id, key, schedule);\n }\n\n async unregisterSchedule(id: string, key: string) {\n return this.#client.unregisterSchedule(this.id, id, key);\n }\n\n authorized(apiKey?: string | null) {\n const localApiKey = this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n\n if (!localApiKey) {\n return false;\n }\n\n return apiKey === localApiKey;\n }\n\n apiKey() {\n return this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n }\n\n async #preprocessRun(\n body: PreprocessRunBody,\n job: Job<Trigger<EventSpecification<any>>, any>\n ) {\n const context = this.#createPreprocessRunContext(body);\n\n const parsedPayload = job.trigger.event.parsePayload(\n body.event.payload ?? {}\n );\n\n const properties = job.trigger.event.runProperties?.(parsedPayload) ?? [];\n\n return {\n abort: false,\n properties,\n };\n }\n\n async #executeJob(\n body: RunJobBody,\n job: Job<Trigger<any>, any>\n ): Promise<RunJobResponse> {\n this.#logger.debug(\"executing job\", { execution: body, job: job.toJSON() });\n\n const context = this.#createRunContext(body);\n\n const io = new IO({\n id: body.run.id,\n cachedTasks: body.tasks,\n apiClient: this.#client,\n logger: this.#logger,\n client: this,\n context,\n });\n\n const ioWithConnections = createIOWithIntegrations(\n io,\n body.connections,\n job.options.integrations\n );\n\n try {\n const output = await job.options.run(\n job.trigger.event.parsePayload(body.event.payload ?? {}),\n ioWithConnections,\n context\n );\n\n return { status: \"SUCCESS\", output };\n } catch (error) {\n if (error instanceof ResumeWithTaskError) {\n return { status: \"RESUME_WITH_TASK\", task: error.task };\n }\n\n if (error instanceof RetryWithTaskError) {\n return {\n status: \"RETRY_WITH_TASK\",\n task: error.task,\n error: error.cause,\n retryAt: error.retryAt,\n };\n }\n\n if (error instanceof RetryWithTaskError) {\n const errorWithStack = ErrorWithStackSchema.safeParse(error.cause);\n\n if (errorWithStack.success) {\n return {\n status: \"ERROR\",\n error: errorWithStack.data,\n task: error.task,\n };\n }\n\n return {\n status: \"ERROR\",\n error: { message: \"Unknown error\" },\n task: error.task,\n };\n }\n\n const errorWithStack = ErrorWithStackSchema.safeParse(error);\n\n if (errorWithStack.success) {\n return { status: \"ERROR\", error: errorWithStack.data };\n }\n\n return {\n status: \"ERROR\",\n error: { message: \"Unknown error\" },\n };\n }\n }\n\n #createRunContext(execution: RunJobBody): TriggerContext {\n const { event, organization, environment, job, run } = execution;\n\n return {\n event: {\n id: event.id,\n name: event.name,\n context: event.context,\n timestamp: event.timestamp,\n },\n organization,\n environment,\n job,\n run,\n account: execution.account,\n };\n }\n\n #createPreprocessRunContext(\n body: PreprocessRunBody\n ): TriggerPreprocessContext {\n const { event, organization, environment, job, run, account } = body;\n\n return {\n event: {\n id: event.id,\n name: event.name,\n context: event.context,\n timestamp: event.timestamp,\n },\n organization,\n environment,\n job,\n run,\n account,\n };\n }\n\n async #handleHttpSourceRequest(\n source: {\n key: string;\n dynamicId?: string;\n secret: string;\n data: any;\n params: any;\n },\n sourceRequest: Request\n ): Promise<{ response: NormalizedResponse; events: SendEvent[] }> {\n this.#logger.debug(\"Handling HTTP source request\", {\n source,\n });\n\n if (source.dynamicId) {\n const dynamicTrigger = this.#registeredDynamicTriggers[source.dynamicId];\n\n if (!dynamicTrigger) {\n this.#logger.debug(\"No dynamic trigger registered for HTTP source\", {\n source,\n });\n\n return {\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n events: [],\n };\n }\n\n const results = await dynamicTrigger.source.handle(\n source,\n sourceRequest,\n this.#logger\n );\n\n if (!results) {\n return {\n events: [],\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n return {\n events: results.events,\n response: results.response ?? {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n const handler = this.#registeredHttpSourceHandlers[source.key];\n\n if (!handler) {\n this.#logger.debug(\"No handler registered for HTTP source\", {\n source,\n });\n\n return {\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n events: [],\n };\n }\n\n const results = await handler(source, sourceRequest);\n\n if (!results) {\n return {\n events: [],\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n return {\n events: results.events,\n response: results.response ?? {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n}\n\nfunction buildClientUrl(url?: string): string {\n if (!url) {\n // Try and get the host from the environment\n const host =\n process.env.TRIGGER_CLIENT_HOST ??\n process.env.HOST ??\n process.env.HOSTNAME ??\n process.env.NOW_URL ??\n process.env.VERCEL_URL;\n\n // If the host is set, we return it + the path\n if (host) {\n return \"https://\" + host;\n }\n\n // If we can't get the host, we throw an error\n throw new Error(\n \"Could not determine the url for this TriggerClient. Please set the TRIGGER_CLIENT_HOST environment variable or pass in the `url` option to the TriggerClient constructor.\"\n );\n }\n\n // Check to see if url has the protocol, and if it doesn't, add it\n if (!url.startsWith(\"http\")) {\n return \"https://\" + url;\n }\n\n return url;\n}\n","import {\n ConnectionAuth,\n IntegrationMetadata,\n RunTaskOptions,\n ServerTask,\n} from \"@trigger.dev/internal\";\nimport { IO } from \"./io\";\n\nexport type ClientFactory<TClient> = (auth: ConnectionAuth) => TClient;\n\nexport interface TriggerIntegration<\n TIntegrationClient extends IntegrationClient<any, any> = IntegrationClient<\n any,\n any\n >\n> {\n client: TIntegrationClient;\n id: string;\n metadata: IntegrationMetadata;\n}\n\nexport type IntegrationClient<\n TClient,\n TTasks extends Record<string, AuthenticatedTask<TClient, any, any, any>>\n> =\n | {\n usesLocalAuth: true;\n client: TClient;\n tasks?: TTasks;\n auth: any;\n }\n | {\n usesLocalAuth: false;\n clientFactory: ClientFactory<TClient>;\n tasks?: TTasks;\n };\n\nexport type AuthenticatedTask<\n TClient,\n TParams,\n TResult,\n TAuth = ConnectionAuth\n> = {\n run: (\n params: TParams,\n client: TClient,\n task: ServerTask,\n io: IO,\n auth: TAuth\n ) => Promise<TResult>;\n init: (params: TParams) => RunTaskOptions;\n onError?: (\n error: unknown,\n task: ServerTask\n ) => { retryAt: Date; error?: Error } | undefined | void;\n};\n\nexport function authenticatedTask<TClient, TParams, TResult>(options: {\n run: (\n params: TParams,\n client: TClient,\n task: ServerTask,\n io: IO\n ) => Promise<TResult>;\n init: (params: TParams) => RunTaskOptions;\n}): AuthenticatedTask<TClient, TParams, TResult> {\n return options;\n}\n\ntype ExtractRunFunction<T> = T extends AuthenticatedTask<\n any,\n infer TParams,\n infer TResult,\n infer TAuth\n>\n ? (key: string, params: TParams) => Promise<TResult>\n : never;\n\ntype ExtractTasks<\n TTasks extends Record<string, AuthenticatedTask<any, any, any, any>>\n> = {\n [key in keyof TTasks]: ExtractRunFunction<TTasks[key]>;\n};\n\ntype ExtractIntegrationClientClient<\n TIntegrationClient extends IntegrationClient<any, any>\n> = TIntegrationClient extends {\n usesLocalAuth: true;\n client: infer TClient;\n}\n ? { client: TClient }\n : TIntegrationClient extends {\n usesLocalAuth: false;\n clientFactory: ClientFactory<infer TClient>;\n }\n ? { client: TClient }\n : never;\n\ntype ExtractIntegrationClient<\n TIntegrationClient extends IntegrationClient<any, any>\n> = ExtractIntegrationClientClient<TIntegrationClient> &\n ExtractTasks<TIntegrationClient[\"tasks\"]>;\n\ntype ExtractIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n> = {\n [key in keyof TIntegrations]: ExtractIntegrationClient<\n TIntegrations[key][\"client\"]\n >;\n};\n\nexport type IOWithIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n> = IO & ExtractIntegrations<TIntegrations>;\n","import { z } from \"zod\";\n\nimport {\n DisplayProperty,\n EventFilter,\n HandleTriggerSource,\n Logger,\n NormalizedResponse,\n RegisterSourceEvent,\n SendEvent,\n TriggerMetadata,\n UpdateTriggerSourceBody,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport {\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"../integrations\";\nimport { IO } from \"../io\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport type { EventSpecification, Trigger, TriggerContext } from \"../types\";\nimport { slugifyId } from \"../utils\";\n\nexport type HttpSourceEvent = {\n url: string;\n method: string;\n headers: Record<string, string>;\n rawBody?: Buffer | null;\n};\n\ntype SmtpSourceEvent = {\n from: string;\n to: string;\n subject: string;\n body: string;\n};\n\ntype SqsSourceEvent = {\n body: string;\n};\n\ntype ExternalSourceChannelMap = {\n HTTP: {\n event: Request;\n register: {\n url: string;\n };\n };\n SMTP: {\n event: SmtpSourceEvent;\n register: {};\n };\n SQS: {\n event: SqsSourceEvent;\n register: {};\n };\n};\n\ntype ChannelNames = keyof ExternalSourceChannelMap;\n\ntype RegisterFunctionEvent<\n TChannel extends ChannelNames,\n TParams extends any\n> = {\n events: Array<string>;\n missingEvents: Array<string>;\n orphanedEvents: Array<string>;\n source: {\n active: boolean;\n data?: any;\n secret: string;\n } & ExternalSourceChannelMap[TChannel][\"register\"];\n params: TParams;\n};\n\ntype RegisterFunction<\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any,\n TChannel extends ChannelNames\n> = (\n event: RegisterFunctionEvent<TChannel, TParams>,\n io: IOWithIntegrations<{ integration: TIntegration }>,\n ctx: TriggerContext\n) => Promise<UpdateTriggerSourceBody | undefined>;\n\nexport type HandlerEvent<\n TChannel extends ChannelNames,\n TParams extends any = any\n> = {\n rawEvent: ExternalSourceChannelMap[TChannel][\"event\"];\n source: HandleTriggerSource & { params: TParams };\n};\n\ntype HandlerFunction<TChannel extends ChannelNames, TParams extends any> = (\n event: HandlerEvent<TChannel, TParams>,\n logger: Logger\n) => Promise<{ events: SendEvent[]; response?: NormalizedResponse } | void>;\n\ntype KeyFunction<TParams extends any> = (params: TParams) => string;\ntype FilterFunction<TParams extends any> = (params: TParams) => EventFilter;\n\ntype ExternalSourceOptions<\n TChannel extends ChannelNames,\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any\n> = {\n id: string;\n version: string;\n schema: z.Schema<TParams>;\n integration: TIntegration;\n register: RegisterFunction<TIntegration, TParams, TChannel>;\n filter: FilterFunction<TParams>;\n handler: HandlerFunction<TChannel, TParams>;\n key: KeyFunction<TParams>;\n properties?: (params: TParams) => DisplayProperty[];\n};\n\nexport class ExternalSource<\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any,\n TChannel extends ChannelNames = ChannelNames\n> {\n channel: TChannel;\n\n constructor(\n channel: TChannel,\n private options: ExternalSourceOptions<TChannel, TIntegration, TParams>\n ) {\n this.channel = channel;\n }\n\n async handle(\n source: HandleTriggerSource,\n rawEvent: ExternalSourceChannelMap[TChannel][\"event\"],\n logger: Logger\n ) {\n return this.options.handler(\n {\n source: { ...source, params: source.params as TParams },\n rawEvent,\n },\n logger\n );\n }\n\n filter(params: TParams): EventFilter {\n return this.options.filter(params);\n }\n\n properties(params: TParams): DisplayProperty[] {\n return this.options.properties?.(params) ?? [];\n }\n\n async register(\n params: TParams,\n registerEvent: RegisterSourceEvent,\n io: IO,\n ctx: TriggerContext\n ) {\n const { result: event, ommited: source } = omit(registerEvent, \"source\");\n const { result: sourceWithoutChannel, ommited: channel } = omit(\n source,\n \"channel\"\n );\n const { result: channelWithoutType } = omit(channel, \"type\");\n\n const updates = await this.options.register(\n {\n ...event,\n source: { ...sourceWithoutChannel, ...channelWithoutType },\n params,\n },\n io as IOWithIntegrations<{ integration: TIntegration }>,\n ctx\n );\n\n return updates;\n }\n\n key(params: TParams): string {\n const parts = [this.options.id, this.channel];\n\n parts.push(this.options.key(params));\n parts.push(this.integration.id);\n\n return parts.join(\"-\");\n }\n\n get integration() {\n return this.options.integration;\n }\n\n get integrationConfig() {\n return {\n id: this.integration.id,\n metadata: this.integration.metadata,\n };\n }\n\n get id() {\n return this.options.id;\n }\n\n get version() {\n return this.options.version;\n }\n}\n\nexport type ExternalSourceParams<\n TExternalSource extends ExternalSource<any, any, any>\n> = TExternalSource extends ExternalSource<any, infer TParams, any>\n ? TParams\n : never;\n\nexport type ExternalSourceTriggerOptions<\n TEventSpecification extends EventSpecification<any>,\n TEventSource extends ExternalSource<any, any, any>\n> = {\n event: TEventSpecification;\n source: TEventSource;\n params: ExternalSourceParams<TEventSource>;\n};\n\nexport class ExternalSourceTrigger<\n TEventSpecification extends EventSpecification<any>,\n TEventSource extends ExternalSource<any, any, any>\n> implements Trigger<TEventSpecification>\n{\n constructor(\n private options: ExternalSourceTriggerOptions<\n TEventSpecification,\n TEventSource\n >\n ) {}\n\n get event() {\n return this.options.event;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: \"External Source\",\n rule: {\n event: this.event.name,\n payload: deepMergeFilters(\n this.options.source.filter(this.options.params),\n this.event.filter ?? {}\n ),\n source: this.event.source,\n },\n properties: this.options.source.properties(this.options.params),\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpecification>, any>\n ) {\n triggerClient.attachSource({\n key: slugifyId(this.options.source.key(this.options.params)),\n source: this.options.source,\n event: this.options.event,\n params: this.options.params,\n });\n }\n\n get preprocessRuns() {\n return true;\n }\n}\n\nexport function omit<T extends Record<string, unknown>, K extends keyof T>(\n obj: T,\n key: K\n): { result: Omit<T, K>; ommited: T[K] } {\n const result: any = {};\n\n for (const k of Object.keys(obj)) {\n if (k === key) continue;\n\n result[k] = obj[k];\n }\n\n return { result, ommited: obj[key] };\n}\n","import {\n RegisterSourceEvent,\n RegisterTriggerBody,\n TriggerMetadata,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\nimport { slugifyId } from \"../utils\";\nimport { ExternalSource, ExternalSourceParams } from \"./externalSource\";\n\nexport type DynamicTriggerOptions<\n TEventSpec extends EventSpecification<any>,\n TExternalSource extends ExternalSource<any, any, any>\n> = {\n id: string;\n event: TEventSpec;\n source: TExternalSource;\n};\n\nexport class DynamicTrigger<\n TEventSpec extends EventSpecification<any>,\n TExternalSource extends ExternalSource<any, any, any>\n> implements Trigger<TEventSpec>\n{\n #client: TriggerClient;\n #options: DynamicTriggerOptions<TEventSpec, TExternalSource>;\n source: TExternalSource;\n\n constructor(\n client: TriggerClient,\n options: DynamicTriggerOptions<TEventSpec, TExternalSource>\n ) {\n this.#client = client;\n this.#options = options;\n this.source = options.source;\n\n client.attachDynamicTrigger(this);\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"dynamic\",\n id: this.#options.id,\n };\n }\n\n get id() {\n return this.#options.id;\n }\n\n get event() {\n return this.#options.event;\n }\n\n registeredTriggerForParams(\n params: ExternalSourceParams<TExternalSource>\n ): RegisterTriggerBody {\n return {\n rule: {\n event: this.event.name,\n source: this.event.source,\n payload: deepMergeFilters(\n this.source.filter(params),\n this.event.filter ?? {}\n ),\n },\n source: {\n key: slugifyId(this.source.key(params)),\n channel: this.source.channel,\n params,\n events: [this.event.name],\n integration: {\n id: this.source.integration.id,\n metadata: this.source.integration.metadata,\n authSource: this.source.integration.client.usesLocalAuth\n ? \"LOCAL\"\n : \"HOSTED\",\n },\n },\n };\n }\n\n async register(\n key: string,\n params: ExternalSourceParams<TExternalSource>\n ): Promise<RegisterSourceEvent> {\n return this.#client.registerTrigger(\n this.id,\n key,\n this.registeredTriggerForParams(params)\n );\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpec>, any>\n ): void {\n triggerClient.attachJobToDynamicTrigger(job, this);\n }\n\n get preprocessRuns() {\n return false;\n }\n}\n","import {\n CronOptions,\n EventExample,\n IntervalOptions,\n ScheduleMetadata,\n ScheduledPayload,\n ScheduledPayloadSchema,\n TriggerMetadata,\n currentDate,\n} from \"@trigger.dev/internal\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\ntype ScheduledEventSpecification = EventSpecification<ScheduledPayload>;\n\nconst examples = [\n {\n id: \"now\",\n name: \"Now\",\n icon: \"clock\",\n payload: {\n ts: currentDate.marker,\n lastTimestamp: currentDate.marker,\n },\n },\n];\n\nexport class IntervalTrigger implements Trigger<ScheduledEventSpecification> {\n constructor(private options: IntervalOptions) {}\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-interval\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n properties: [\n {\n label: \"Interval\",\n text: `${this.options.seconds}s`,\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"scheduled\",\n schedule: {\n type: \"interval\",\n options: {\n seconds: this.options.seconds,\n },\n },\n };\n }\n}\n\nexport function intervalTrigger(options: IntervalOptions) {\n return new IntervalTrigger(options);\n}\n\nexport class CronTrigger implements Trigger<ScheduledEventSpecification> {\n constructor(private options: CronOptions) {}\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Cron Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-cron\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n properties: [\n {\n label: \"Expression\",\n text: this.options.cron,\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"scheduled\",\n schedule: {\n type: \"cron\",\n options: {\n cron: this.options.cron,\n },\n },\n };\n }\n}\n\nexport function cronTrigger(options: CronOptions) {\n return new CronTrigger(options);\n}\n\nexport type DynamicIntervalOptions = { id: string };\n\nexport class DynamicSchedule implements Trigger<ScheduledEventSpecification> {\n constructor(\n private client: TriggerClient,\n private options: DynamicIntervalOptions\n ) {}\n\n get id() {\n return this.options.id;\n }\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Dynamic Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-dynamic\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n };\n }\n\n async register(key: string, metadata: ScheduleMetadata) {\n return this.client.registerSchedule(this.id, key, metadata);\n }\n\n async unregister(key: string) {\n return this.client.unregisterSchedule(this.id, key);\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {\n triggerClient.attachDynamicSchedule(this.options.id, job);\n }\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"dynamic\",\n id: this.options.id,\n };\n }\n}\n","import {\n MISSING_CONNECTION_NOTIFICATION,\n MISSING_CONNECTION_RESOLVED_NOTIFICATION,\n MissingConnectionNotificationPayload,\n MissingConnectionNotificationPayloadSchema,\n MissingConnectionResolvedNotificationPayload,\n MissingConnectionResolvedNotificationPayloadSchema,\n TriggerMetadata,\n} from \"@trigger.dev/internal\";\nimport { TriggerIntegration } from \"../integrations\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\nexport function missingConnectionNotification(\n integrations: Array<TriggerIntegration>\n) {\n return new MissingConnectionNotification({ integrations });\n}\n\nexport function missingConnectionResolvedNotification(\n integrations: Array<TriggerIntegration>\n) {\n return new MissingConnectionResolvedNotification({ integrations });\n}\n\ntype MissingConnectionNotificationSpecification =\n EventSpecification<MissingConnectionNotificationPayload>;\n\ntype MissingConnectionNotificationOptions = {\n integrations: Array<TriggerIntegration>;\n};\n\nexport class MissingConnectionNotification\n implements Trigger<MissingConnectionNotificationSpecification>\n{\n constructor(private options: MissingConnectionNotificationOptions) {}\n\n get event() {\n return {\n name: MISSING_CONNECTION_NOTIFICATION,\n title: \"Missing Connection Notification\",\n source: \"trigger.dev\",\n icon: \"connection-alert\",\n parsePayload: MissingConnectionNotificationPayloadSchema.parse,\n properties: [\n {\n label: \"Integrations\",\n text: this.options.integrations.map((i) => i.id).join(\", \"),\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<MissingConnectionNotificationSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.event.title,\n rule: {\n event: this.event.name,\n source: \"trigger.dev\",\n payload: {\n client: {\n id: this.options.integrations.map((i) => i.id),\n },\n },\n },\n };\n }\n}\n\ntype MissingConnectionResolvedNotificationSpecification =\n EventSpecification<MissingConnectionResolvedNotificationPayload>;\n\nexport class MissingConnectionResolvedNotification\n implements Trigger<MissingConnectionResolvedNotificationSpecification>\n{\n constructor(private options: MissingConnectionNotificationOptions) {}\n\n get event() {\n return {\n name: MISSING_CONNECTION_RESOLVED_NOTIFICATION,\n title: \"Missing Connection Resolved Notification\",\n source: \"trigger.dev\",\n icon: \"connection-alert\",\n parsePayload: MissingConnectionResolvedNotificationPayloadSchema.parse,\n properties: [\n {\n label: \"Integrations\",\n text: this.options.integrations.map((i) => i.id).join(\", \"),\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<MissingConnectionResolvedNotificationSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.event.title,\n rule: {\n event: this.event.name,\n source: \"trigger.dev\",\n payload: {\n client: {\n id: this.options.integrations.map((i) => i.id),\n },\n },\n },\n };\n }\n}\n"],"mappings":"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","names":["slugifyId","input","replaceSpacesWithDash","toLowerCase","replace","removeNonUrlSafeChars","Job","constructor","client","options","attach","id","slugifyId","enabled","name","trigger","version","integrations","Object","keys","reduce","acc","key","integration","metadata","authSource","usesLocalAuth","toJSON","internal","__internal","event","queue","startPosition","preprocessRuns","match","Error","logLevels","Logger","constructor","name","level","filteredKeys","jsonReplacer","indexOf","process","env","TRIGGER_LOG_LEVEL","filter","keys","log","args","console","formattedDateTime","error","warn","info","debug","message","structuredLog","timestamp","Date","structureArgs","safeJsonClone","JSON","stringify","createReplacer","replacer","key","value","toString","bigIntReplacer","_key","obj","parse","e","date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","formattedHours","formattedMinutes","formattedSeconds","formattedMilliseconds","length","filterKeys","Array","isArray","map","item","filteredObj","Object","entries","includes","import_zod","ErrorWithStackSchema","z","object","message","string","name","optional","stack","import_zod","EventMatcherSchema","z","union","array","string","number","boolean","EventFilterSchema","lazy","record","EventRuleSchema","object","event","source","payload","optional","context","import_zod","ConnectionAuthSchema","z","object","type","enum","accessToken","string","scopes","array","optional","additionalFields","record","IntegrationMetadataSchema","id","name","instructions","IntegrationConfigSchema","metadata","authSource","import_zod","LiteralSchema","z","union","string","number","boolean","null","DeserializedJsonSchema","lazy","array","record","SerializableSchema","date","undefined","symbol","SerializableJsonSchema","import_zod","DisplayPropertySchema","z","object","label","string","text","url","optional","DisplayPropertiesSchema","array","StyleSchema","style","enum","variant","import_zod","ScheduledPayloadSchema","z","object","ts","coerce","date","lastTimestamp","optional","IntervalOptionsSchema","seconds","number","int","positive","min","max","CronOptionsSchema","cron","string","CronMetadataSchema","type","literal","options","metadata","any","IntervalMetadataSchema","ScheduleMetadataSchema","discriminatedUnion","RegisterDynamicSchedulePayloadSchema","id","jobs","array","version","import_zod","TaskStatusSchema","z","enum","TaskSchema","object","id","string","name","icon","optional","nullable","noop","boolean","startedAt","coerce","date","completedAt","delayUntil","status","description","properties","array","DisplayPropertySchema","params","DeserializedJsonSchema","output","error","parentId","style","StyleSchema","operation","ServerTaskSchema","extend","idempotencyKey","attempts","number","CachedTaskSchema","default","import_zod","EventExampleSchema","z","object","id","string","icon","optional","name","payload","any","EventSpecificationSchema","title","source","filter","EventFilterSchema","properties","array","DisplayPropertySchema","schema","examples","DynamicTriggerMetadataSchema","type","literal","StaticTriggerMetadataSchema","rule","EventRuleSchema","ScheduledTriggerMetadataSchema","schedule","ScheduleMetadataSchema","TriggerMetadataSchema","discriminatedUnion","UpdateTriggerSourceBodySchema","z","object","registeredEvents","array","string","secret","optional","data","SerializableJsonSchema","HttpEventSourceSchema","extend","id","active","boolean","url","RegisterHTTPTriggerSourceBodySchema","type","literal","RegisterSMTPTriggerSourceBodySchema","RegisterSQSTriggerSourceBodySchema","RegisterSourceChannelBodySchema","discriminatedUnion","REGISTER_SOURCE_EVENT","RegisterTriggerSourceSchema","key","params","any","DeserializedJsonSchema","channel","clientId","RegisterSourceEventSchema","source","events","missingEvents","orphanedEvents","dynamicTriggerId","TriggerSourceSchema","HandleTriggerSourceSchema","HttpSourceRequestSchema","method","headers","record","rawBody","instanceof","Buffer","nullable","HttpSourceRequestHeadersSchema","transform","s","JSON","parse","PongSuccessResponseSchema","ok","PongErrorResponseSchema","error","PongResponseSchema","QueueOptionsSchema","name","maxConcurrent","number","JobMetadataSchema","version","event","EventSpecificationSchema","trigger","TriggerMetadataSchema","integrations","IntegrationConfigSchema","internal","default","queue","union","startPosition","enum","enabled","preprocessRuns","SourceMetadataSchema","integration","DynamicTriggerEndpointMetadataSchema","jobs","pick","IndexEndpointResponseSchema","sources","dynamicTriggers","dynamicSchedules","RegisterDynamicSchedulePayloadSchema","RawEventSchema","ulid","payload","context","timestamp","datetime","ApiEventLogSchema","coerce","date","deliverAt","deliveredAt","SendEventOptionsSchema","deliverAfter","int","accountId","SendEventBodySchema","options","DeliverEventResponseSchema","RuntimeEnvironmentTypeSchema","RunJobBodySchema","job","run","isTest","startedAt","environment","slug","organization","title","account","metadata","tasks","CachedTaskSchema","connections","ConnectionAuthSchema","RunJobErrorSchema","status","ErrorWithStackSchema","task","TaskSchema","RunJobResumeWithTaskSchema","RunJobRetryWithTaskSchema","retryAt","RunJobSuccessSchema","output","RunJobResponseSchema","PreprocessRunBodySchema","PreprocessRunResponseSchema","abort","properties","DisplayPropertySchema","CreateRunBodySchema","client","CreateRunResponseOkSchema","CreateRunResponseErrorSchema","CreateRunResponseBodySchema","RedactStringSchema","__redactedString","strings","interpolations","LogMessageSchema","level","message","RedactSchema","paths","RetryOptionsSchema","limit","factor","minTimeoutInMs","maxTimeoutInMs","randomize","RunTaskOptionsSchema","icon","displayKey","noop","operation","delayUntil","description","redact","connectionKey","style","StyleSchema","retry","RunTaskBodyInputSchema","idempotencyKey","parentId","RunTaskBodyOutputSchema","CompleteTaskBodyInputSchema","v","stringify","FailTaskBodyInputSchema","NormalizedRequestSchema","query","body","NormalizedResponseSchema","HttpSourceResponseSchema","response","RegisterTriggerBodySchema","rule","EventRuleSchema","InitializeTriggerBodySchema","RegisterCommonScheduleBodySchema","RegisterIntervalScheduleBodySchema","merge","IntervalMetadataSchema","InitializeCronScheduleBodySchema","CronMetadataSchema","RegisterScheduleBodySchema","RegisterScheduleResponseBodySchema","schedule","ScheduleMetadataSchema","CreateExternalConnectionBodySchema","accessToken","scopes","import_zod","MISSING_CONNECTION_NOTIFICATION","MISSING_CONNECTION_RESOLVED_NOTIFICATION","CommonMissingConnectionNotificationPayloadSchema","z","object","id","string","client","title","scopes","array","createdAt","coerce","date","updatedAt","authorizationUrl","MissingDeveloperConnectionNotificationPayloadSchema","extend","type","literal","MissingExternalConnectionNotificationPayloadSchema","account","metadata","any","MissingConnectionNotificationPayloadSchema","discriminatedUnion","CommonMissingConnectionNotificationResolvedPayloadSchema","integrationIdentifier","integrationAuthMethod","expiresAt","MissingDeveloperConnectionResolvedNotificationPayloadSchema","MissingExternalConnectionResolvedNotificationPayloadSchema","MissingConnectionResolvedNotificationPayloadSchema","import_zod","FetchRetryHeadersStrategySchema","z","object","strategy","literal","limitHeader","string","remainingHeader","resetHeader","FetchRetryBackoffStrategySchema","RetryOptionsSchema","extend","FetchRetryStrategySchema","discriminatedUnion","FetchRequestInitSchema","method","optional","headers","record","union","RedactStringSchema","body","instanceof","ArrayBuffer","FetchRetryOptionsSchema","FetchOperationSchema","url","requestInit","retry","deepMergeFilters","filter","other","result","key","hasOwnProperty","otherValue","Array","isArray","filterValue","DEFAULT_RETRY_OPTIONS","limit","factor","minTimeoutInMs","maxTimeoutInMs","randomize","calculateRetryAt","retryOptions","attempts","options","retryCount","random","Math","timeoutInMs","round","max","pow","min","Date","now","currentDate","marker","replace","data","now","toISOString","import_zod","ApiClient","constructor","options","apiUrl","process","env","TRIGGER_API_URL","Logger","logLevel","registerEndpoint","apiKey","debug","url","name","response","fetch","method","headers","Authorization","body","JSON","stringify","status","json","Error","error","createRun","params","zodfetch","CreateRunResponseBodySchema","runTask","runId","task","ServerTaskSchema","idempotencyKey","completeTask","id","failTask","sendEvent","event","ApiEventLogSchema","updateSource","client","key","source","TriggerSourceSchema","registerTrigger","payload","RegisterSourceEventSchema","registerSchedule","RegisterScheduleResponseBodySchema","unregisterSchedule","z","object","ok","boolean","encodeURIComponent","getAuth","ConnectionAuthSchema","Accept","optional","getApiKey","TRIGGER_API_KEY","isValid","match","schema","requestInit","errorMessage","jsonBody","parse","ResumeWithTaskError","constructor","task","RetryWithTaskError","cause","retryAt","isTriggerError","err","createIOWithIntegrations","io","auths","integrations","connections","Object","entries","reduce","acc","connectionKey","integration","auth","client","usesLocalAuth","clientFactory","undefined","ioConnection","tasks","keys","forEach","taskName","authenticatedTask","key","params","options","init","runTask","ioTask","run","onError","Proxy","get","target","prop","receiver","value","Reflect","bind","IO","constructor","options","_id","id","_apiClient","apiClient","_triggerClient","client","_logger","logger","Logger","logLevel","_cachedTasks","Map","cachedTasks","forEach","task","set","_taskStorage","AsyncLocalStorage","_context","context","IOLogger","level","message","data","debug","info","warn","error","runTask","name","icon","description","params","properties","label","text","style","variant","toLowerCase","noop","wait","key","seconds","delayUntil","Date","now","backgroundFetch","url","requestInit","retry","urlObject","URL","hostname","pathname","operation","method","output","sendEvent","event","updateSource","redact","paths","registerInterval","dynamicSchedule","toString","register","type","unregisterInterval","unregister","registerCron","cron","unregisterCron","registerTrigger","trigger","registration","subtask1","connection","getAuth","source","clientId","io","createIOWithIntegrations","integration","updates","callback","onError","parentId","getStore","taskId","idempotencyKey","generateIdempotencyKey","flat","cachedTask","get","displayKey","undefined","status","Error","ResumeWithTaskError","executeTask","result","completeTask","isTriggerError","onErrorResult","parsedError","ErrorWithStackSchema","safeParse","RetryWithTaskError","success","retryAt","calculateRetryAt","attempts","failTask","JSON","stringify","run","try","tryCallback","catchCallback","keyMaterial","keys","map","stableStringify","join","hash","webcrypto","subtle","digest","Buffer","from","obj","sortKeys","Array","isArray","sortedKeys","Object","sort","sortedObj","_options","EventTrigger","constructor","options","toJSON","type","title","name","event","rule","source","payload","deepMergeFilters","filter","attachToJob","triggerClient","job","preprocessRuns","eventTrigger","icon","parsePayload","rawPayload","schema","parse","registerSourceEvent","name","REGISTER_SOURCE_EVENT","title","source","icon","parsePayload","RegisterSourceEventSchema","parse","_options","_logger","TriggerClient","constructor","options","id","_url","buildClientUrl","url","ApiClient","Logger","logLevel","path","startsWith","handleRequest","request","debug","headers","Object","fromEntries","entries","method","apiKey","get","authorized","status","body","message","action","endpointId","ok","jobId","job","toJSON","jobs","values","map","sources","dynamicTriggers","trigger","dynamicSchedules","json","InitializeTriggerBodySchema","safeParse","success","dynamicTrigger","data","registeredTriggerForParams","params","execution","RunJobBodySchema","results","PreprocessRunBodySchema","abort","properties","HttpSourceRequestHeadersSchema","sourceRequest","Request","undefined","key","dynamicId","secret","response","events","attach","enabled","attachToJob","attachDynamicTrigger","Job","version","EventTrigger","event","filter","dynamicTriggerId","integrations","integration","run","io","ctx","updates","register","updateSource","__internal","attachJobToDynamicTrigger","push","attachSource","s","r","handle","registeredSource","channel","metadata","authSource","client","usesLocalAuth","Array","from","Set","queue","maxConcurrent","startPosition","attachDynamicSchedule","registerTrigger","getAuth","sendEvent","registerSchedule","schedule","unregisterSchedule","localApiKey","process","env","TRIGGER_API_KEY","context","parsedPayload","payload","runProperties","IO","cachedTasks","tasks","apiClient","logger","ioWithConnections","createIOWithIntegrations","connections","output","error","ResumeWithTaskError","task","RetryWithTaskError","cause","retryAt","errorWithStack","ErrorWithStackSchema","organization","environment","timestamp","account","handler","host","TRIGGER_CLIENT_HOST","HOST","HOSTNAME","NOW_URL","VERCEL_URL","Error","authenticatedTask","options","ExternalSource","constructor","channel","options","handle","source","rawEvent","logger","handler","params","filter","properties","register","registerEvent","io","ctx","result","event","ommited","omit","sourceWithoutChannel","channelWithoutType","updates","key","parts","id","push","integration","join","integrationConfig","metadata","version","ExternalSourceTrigger","toJSON","type","title","rule","name","payload","deepMergeFilters","attachToJob","triggerClient","job","attachSource","slugifyId","preprocessRuns","obj","k","Object","keys","_client","_options","DynamicTrigger","constructor","client","options","source","attachDynamicTrigger","toJSON","type","id","event","registeredTriggerForParams","params","rule","name","payload","deepMergeFilters","filter","key","slugifyId","channel","events","integration","metadata","authSource","usesLocalAuth","register","registerTrigger","attachToJob","triggerClient","job","attachJobToDynamicTrigger","preprocessRuns","examples","id","name","icon","payload","ts","currentDate","marker","lastTimestamp","IntervalTrigger","constructor","options","event","title","source","parsePayload","ScheduledPayloadSchema","parse","properties","label","text","seconds","attachToJob","triggerClient","job","preprocessRuns","toJSON","type","schedule","intervalTrigger","CronTrigger","cron","cronTrigger","DynamicSchedule","client","register","key","metadata","registerSchedule","unregister","unregisterSchedule","attachDynamicSchedule","missingConnectionNotification","integrations","MissingConnectionNotification","missingConnectionResolvedNotification","MissingConnectionResolvedNotification","constructor","options","event","name","MISSING_CONNECTION_NOTIFICATION","title","source","icon","parsePayload","MissingConnectionNotificationPayloadSchema","parse","properties","label","text","map","i","id","join","attachToJob","triggerClient","job","preprocessRuns","toJSON","type","rule","payload","client","MISSING_CONNECTION_RESOLVED_NOTIFICATION","MissingConnectionResolvedNotificationPayloadSchema","redactString","strings","interpolations","__redactedString","raw"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/utils.ts","../src/job.ts","../../internal/src/logger.ts","../../internal/src/schemas/api.ts","../../internal/src/schemas/errors.ts","../../internal/src/schemas/eventFilter.ts","../../internal/src/schemas/integrations.ts","../../internal/src/schemas/json.ts","../../internal/src/schemas/properties.ts","../../internal/src/schemas/schedules.ts","../../internal/src/schemas/tasks.ts","../../internal/src/schemas/triggers.ts","../../internal/src/schemas/notifications.ts","../../internal/src/schemas/fetch.ts","../../internal/src/utils.ts","../../internal/src/retry.ts","../../internal/src/replacements.ts","../src/apiClient.ts","../src/errors.ts","../src/io.ts","../src/ioWithIntegrations.ts","../src/triggers/eventTrigger.ts","../src/triggerClient.ts","../src/integrations.ts","../src/triggers/externalSource.ts","../src/triggers/dynamic.ts","../src/triggers/scheduled.ts","../src/triggers/notifications.ts"],"sourcesContent":["export * from \"./job\";\nexport * from \"./triggerClient\";\nexport * from \"./integrations\";\nexport * from \"./triggers/eventTrigger\";\nexport * from \"./triggers/externalSource\";\nexport * from \"./triggers/dynamic\";\nexport * from \"./triggers/scheduled\";\nexport * from \"./triggers/notifications\";\nexport * from \"./io\";\nexport * from \"./types\";\n\nimport { ServerTask } from \"@trigger.dev/internal\";\nimport { RedactString } from \"./types\";\nexport { isTriggerError } from \"./errors\";\n\nexport type { NormalizedRequest, EventFilter } from \"@trigger.dev/internal\";\n\nexport type Task = ServerTask;\n\n/*\n * This function is used to create a redacted string that can be used in the headers of a fetch request.\n * It is used to prevent the string from being logged in trigger.dev.\n * You can use it like this:\n *\n * await ctx.fetch(\"https://example.com\", {\n * headers: {\n * Authorization: redactString`Bearer ${ACCESS_TOKEN}`,\n * },\n * })\n */\nexport function redactString(\n strings: TemplateStringsArray,\n ...interpolations: string[]\n): RedactString {\n return {\n __redactedString: true,\n strings: strings.raw as string[],\n interpolations,\n };\n}\n","export function slugifyId(input: string): string {\n // Replace any number of spaces with a single dash\n const replaceSpacesWithDash = input.toLowerCase().replace(/\\s+/g, \"-\");\n\n // Remove any non-URL-safe characters\n const removeNonUrlSafeChars = replaceSpacesWithDash.replace(\n /[^a-zA-Z0-9-._~]/g,\n \"\"\n );\n\n return removeNonUrlSafeChars;\n}\n","import {\n IntegrationConfig,\n JobMetadata,\n LogLevel,\n QueueOptions,\n} from \"@trigger.dev/internal\";\nimport {\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"./integrations\";\nimport { TriggerClient } from \"./triggerClient\";\nimport type {\n EventSpecification,\n Trigger,\n TriggerContext,\n TriggerEventType,\n} from \"./types\";\nimport { slugifyId } from \"./utils\";\n\nexport type JobOptions<\n TTrigger extends Trigger<EventSpecification<any>>,\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n > = {}\n> = {\n id: string;\n name: string;\n version: string;\n trigger: TTrigger;\n logLevel?: LogLevel;\n integrations?: TIntegrations;\n queue?: QueueOptions | string;\n startPosition?: \"initial\" | \"latest\";\n enabled?: boolean;\n\n run: (\n event: TriggerEventType<TTrigger>,\n io: IOWithIntegrations<TIntegrations>,\n ctx: TriggerContext\n ) => Promise<any>;\n};\n\nexport class Job<\n TTrigger extends Trigger<EventSpecification<any>>,\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n > = {}\n> {\n readonly options: JobOptions<TTrigger, TIntegrations>;\n\n client: TriggerClient;\n\n constructor(\n client: TriggerClient,\n options: JobOptions<TTrigger, TIntegrations>\n ) {\n this.client = client;\n this.options = options;\n this.#validate();\n\n client.attach(this);\n }\n\n get id() {\n return slugifyId(this.options.id);\n }\n\n get enabled() {\n return typeof this.options.enabled === \"boolean\"\n ? this.options.enabled\n : true;\n }\n\n get name() {\n return this.options.name;\n }\n\n get trigger() {\n return this.options.trigger;\n }\n\n get version() {\n return this.options.version;\n }\n\n get integrations(): Record<string, IntegrationConfig> {\n return Object.keys(this.options.integrations ?? {}).reduce(\n (acc: Record<string, IntegrationConfig>, key) => {\n const integration = this.options.integrations![key];\n\n acc[key] = {\n id: integration.id,\n metadata: integration.metadata,\n authSource: integration.client.usesLocalAuth ? \"LOCAL\" : \"HOSTED\",\n };\n\n return acc;\n },\n {}\n );\n }\n\n toJSON(): JobMetadata {\n // @ts-ignore\n const internal = this.options.__internal as JobMetadata[\"internal\"];\n\n return {\n id: this.id,\n name: this.name,\n version: this.version,\n event: this.trigger.event,\n trigger: this.trigger.toJSON(),\n integrations: this.integrations,\n queue: this.options.queue,\n startPosition: this.options.startPosition ?? \"latest\",\n enabled:\n typeof this.options.enabled === \"boolean\" ? this.options.enabled : true,\n preprocessRuns: this.trigger.preprocessRuns,\n internal,\n };\n }\n\n // Make sure the id is valid (must only contain alphanumeric characters and dashes)\n // Make sure the version is valid (must be a valid semver version)\n #validate() {\n if (!this.version.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/)) {\n throw new Error(\n `Invalid job version: \"${this.version}\". Job versions must be valid semver versions.`\n );\n }\n }\n}\n","// Create a logger class that uses the debug package internally\n\nexport type LogLevel = \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nconst logLevels: Array<LogLevel> = [\"log\", \"error\", \"warn\", \"info\", \"debug\"];\n\nexport class Logger {\n #name: string;\n readonly #level: number;\n #filteredKeys: string[] = [];\n #jsonReplacer?: (key: string, value: unknown) => unknown;\n\n constructor(\n name: string,\n level: LogLevel = \"info\",\n filteredKeys: string[] = [],\n jsonReplacer?: (key: string, value: unknown) => unknown\n ) {\n this.#name = name;\n this.#level = logLevels.indexOf(\n (process.env.TRIGGER_LOG_LEVEL ?? level) as LogLevel\n );\n this.#filteredKeys = filteredKeys;\n this.#jsonReplacer = jsonReplacer;\n }\n\n // Return a new Logger instance with the same name and a new log level\n // but filter out the keys from the log messages (at any level)\n filter(...keys: string[]) {\n return new Logger(\n this.#name,\n logLevels[this.#level],\n keys,\n this.#jsonReplacer\n );\n }\n\n log(...args: any[]) {\n if (this.#level < 0) return;\n\n console.log(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n error(...args: any[]) {\n if (this.#level < 1) return;\n\n console.error(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n warn(...args: any[]) {\n if (this.#level < 2) return;\n\n console.warn(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n info(...args: any[]) {\n if (this.#level < 3) return;\n\n console.info(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n debug(message: string, ...args: Array<Record<string, unknown> | undefined>) {\n if (this.#level < 4) return;\n\n const structuredLog = {\n timestamp: new Date(),\n name: this.#name,\n message,\n args: structureArgs(\n safeJsonClone(args) as Record<string, unknown>[],\n this.#filteredKeys\n ),\n };\n\n console.debug(\n JSON.stringify(structuredLog, createReplacer(this.#jsonReplacer))\n );\n }\n}\n\nfunction createReplacer(replacer?: (key: string, value: unknown) => unknown) {\n return (key: string, value: unknown) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n if (replacer) {\n return replacer(key, value);\n }\n\n return value;\n };\n}\n\n// Replacer function for JSON.stringify that converts BigInts to strings\nfunction bigIntReplacer(_key: string, value: unknown) {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n\n return value;\n}\n\nfunction safeJsonClone(obj: unknown) {\n try {\n return JSON.parse(JSON.stringify(obj, bigIntReplacer));\n } catch (e) {\n return obj;\n }\n}\n\nfunction formattedDateTime() {\n const date = new Date();\n\n const hours = date.getHours();\n const minutes = date.getMinutes();\n const seconds = date.getSeconds();\n const milliseconds = date.getMilliseconds();\n\n // Make sure the time is always 2 digits\n const formattedHours = hours < 10 ? `0${hours}` : hours;\n const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;\n const formattedSeconds = seconds < 10 ? `0${seconds}` : seconds;\n const formattedMilliseconds =\n milliseconds < 10\n ? `00${milliseconds}`\n : milliseconds < 100\n ? `0${milliseconds}`\n : milliseconds;\n\n return `${formattedHours}:${formattedMinutes}:${formattedSeconds}.${formattedMilliseconds}`;\n}\n\n// If args is has a single item that is an object, return that object\nfunction structureArgs(\n args: Array<Record<string, unknown>>,\n filteredKeys: string[] = []\n) {\n if (args.length === 0) {\n return;\n }\n\n if (args.length === 1 && typeof args[0] === \"object\") {\n return filterKeys(\n JSON.parse(JSON.stringify(args[0], bigIntReplacer)),\n filteredKeys\n );\n }\n\n return args;\n}\n\n// Recursively filter out keys from an object, including nested objects, and arrays\nfunction filterKeys(obj: unknown, keys: string[]): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map((item) => filterKeys(item, keys));\n }\n\n const filteredObj: any = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (keys.includes(key)) {\n continue;\n }\n\n filteredObj[key] = filterKeys(value, keys);\n }\n\n return filteredObj;\n}\n","import { ulid } from \"ulid\";\nimport { z } from \"zod\";\nimport { ErrorWithStackSchema } from \"./errors\";\nimport { EventRuleSchema } from \"./eventFilter\";\nimport { ConnectionAuthSchema, IntegrationConfigSchema } from \"./integrations\";\nimport { DeserializedJsonSchema, SerializableJsonSchema } from \"./json\";\nimport { DisplayPropertySchema, StyleSchema } from \"./properties\";\nimport {\n CronMetadataSchema,\n IntervalMetadataSchema,\n RegisterDynamicSchedulePayloadSchema,\n ScheduleMetadataSchema,\n} from \"./schedules\";\nimport { CachedTaskSchema, ServerTaskSchema, TaskSchema } from \"./tasks\";\nimport { EventSpecificationSchema, TriggerMetadataSchema } from \"./triggers\";\n\nexport const UpdateTriggerSourceBodySchema = z.object({\n registeredEvents: z.array(z.string()),\n secret: z.string().optional(),\n data: SerializableJsonSchema.optional(),\n});\n\nexport type UpdateTriggerSourceBody = z.infer<\n typeof UpdateTriggerSourceBodySchema\n>;\n\nexport const HttpEventSourceSchema = UpdateTriggerSourceBodySchema.extend({\n id: z.string(),\n active: z.boolean(),\n url: z.string().url(),\n});\n\nexport const RegisterHTTPTriggerSourceBodySchema = z.object({\n type: z.literal(\"HTTP\"),\n url: z.string().url(),\n});\n\nexport const RegisterSMTPTriggerSourceBodySchema = z.object({\n type: z.literal(\"SMTP\"),\n});\n\nexport const RegisterSQSTriggerSourceBodySchema = z.object({\n type: z.literal(\"SQS\"),\n});\n\nexport const RegisterSourceChannelBodySchema = z.discriminatedUnion(\"type\", [\n RegisterHTTPTriggerSourceBodySchema,\n RegisterSMTPTriggerSourceBodySchema,\n RegisterSQSTriggerSourceBodySchema,\n]);\n\nexport const REGISTER_SOURCE_EVENT = \"dev.trigger.source.register\";\n\nexport const RegisterTriggerSourceSchema = z.object({\n key: z.string(),\n params: z.any(),\n active: z.boolean(),\n secret: z.string(),\n data: DeserializedJsonSchema.optional(),\n channel: RegisterSourceChannelBodySchema,\n clientId: z.string().optional(),\n});\n\nexport type RegisterTriggerSource = z.infer<typeof RegisterTriggerSourceSchema>;\n\nexport const RegisterSourceEventSchema = z.object({\n id: z.string(),\n source: RegisterTriggerSourceSchema,\n events: z.array(z.string()),\n missingEvents: z.array(z.string()),\n orphanedEvents: z.array(z.string()),\n dynamicTriggerId: z.string().optional(),\n});\n\nexport type RegisterSourceEvent = z.infer<typeof RegisterSourceEventSchema>;\n\nexport const TriggerSourceSchema = z.object({\n id: z.string(),\n key: z.string(),\n});\n\nexport const HandleTriggerSourceSchema = z.object({\n key: z.string(),\n secret: z.string(),\n data: z.any(),\n params: z.any(),\n});\n\nexport type HandleTriggerSource = z.infer<typeof HandleTriggerSourceSchema>;\n\nexport type TriggerSource = z.infer<typeof TriggerSourceSchema>;\n\nexport const HttpSourceRequestSchema = z.object({\n url: z.string().url(),\n method: z.string(),\n headers: z.record(z.string()),\n rawBody: z.instanceof(Buffer).optional().nullable(),\n});\n\nexport type HttpSourceRequest = z.infer<typeof HttpSourceRequestSchema>;\n\nexport const HttpSourceRequestHeadersSchema = z.object({\n \"x-ts-key\": z.string(),\n \"x-ts-dynamic-id\": z.string().optional(),\n \"x-ts-secret\": z.string(),\n \"x-ts-data\": z.string().transform((s) => JSON.parse(s)),\n \"x-ts-params\": z.string().transform((s) => JSON.parse(s)),\n \"x-ts-http-url\": z.string(),\n \"x-ts-http-method\": z.string(),\n \"x-ts-http-headers\": z\n .string()\n .transform((s) => z.record(z.string()).parse(JSON.parse(s))),\n});\n\nexport type HttpSourceRequestHeaders = z.output<\n typeof HttpSourceRequestHeadersSchema\n>;\n\nexport const PongSuccessResponseSchema = z.object({\n ok: z.literal(true),\n});\n\nexport const PongErrorResponseSchema = z.object({\n ok: z.literal(false),\n error: z.string(),\n});\n\nexport const PongResponseSchema = z.discriminatedUnion(\"ok\", [\n PongSuccessResponseSchema,\n PongErrorResponseSchema,\n]);\n\nexport type PongResponse = z.infer<typeof PongResponseSchema>;\n\nexport const QueueOptionsSchema = z.object({\n name: z.string(),\n maxConcurrent: z.number().optional(),\n});\n\nexport type QueueOptions = z.infer<typeof QueueOptionsSchema>;\n\nexport const JobMetadataSchema = z.object({\n id: z.string(),\n name: z.string(),\n version: z.string(),\n event: EventSpecificationSchema,\n trigger: TriggerMetadataSchema,\n integrations: z.record(IntegrationConfigSchema),\n internal: z.boolean().default(false),\n queue: z.union([QueueOptionsSchema, z.string()]).optional(),\n startPosition: z.enum([\"initial\", \"latest\"]),\n enabled: z.boolean(),\n preprocessRuns: z.boolean(),\n});\n\nexport type JobMetadata = z.infer<typeof JobMetadataSchema>;\n\nexport const SourceMetadataSchema = z.object({\n channel: z.enum([\"HTTP\", \"SQS\", \"SMTP\"]),\n integration: IntegrationConfigSchema,\n key: z.string(),\n params: z.any(),\n events: z.array(z.string()),\n});\n\nexport type SourceMetadata = z.infer<typeof SourceMetadataSchema>;\n\nexport const DynamicTriggerEndpointMetadataSchema = z.object({\n id: z.string(),\n jobs: z.array(JobMetadataSchema.pick({ id: true, version: true })),\n});\n\nexport type DynamicTriggerEndpointMetadata = z.infer<\n typeof DynamicTriggerEndpointMetadataSchema\n>;\n\nexport const IndexEndpointResponseSchema = z.object({\n jobs: z.array(JobMetadataSchema),\n sources: z.array(SourceMetadataSchema),\n dynamicTriggers: z.array(DynamicTriggerEndpointMetadataSchema),\n dynamicSchedules: z.array(RegisterDynamicSchedulePayloadSchema),\n});\n\nexport type IndexEndpointResponse = z.infer<typeof IndexEndpointResponseSchema>;\n\nexport const RawEventSchema = z.object({\n id: z.string().default(() => ulid()),\n name: z.string(),\n source: z.string().optional(),\n payload: z.any(),\n context: z.any().optional(),\n timestamp: z.string().datetime().optional(),\n});\n\nexport type RawEvent = z.infer<typeof RawEventSchema>;\nexport type SendEvent = z.input<typeof RawEventSchema>;\n\nexport const ApiEventLogSchema = z.object({\n id: z.string(),\n name: z.string(),\n payload: DeserializedJsonSchema,\n context: DeserializedJsonSchema.optional().nullable(),\n timestamp: z.coerce.date(),\n deliverAt: z.coerce.date().optional().nullable(),\n deliveredAt: z.coerce.date().optional().nullable(),\n});\n\nexport type ApiEventLog = z.infer<typeof ApiEventLogSchema>;\n\nexport const SendEventOptionsSchema = z.object({\n deliverAt: z.string().datetime().optional(),\n deliverAfter: z.number().int().optional(),\n accountId: z.string().optional(),\n});\n\nexport const SendEventBodySchema = z.object({\n event: RawEventSchema,\n options: SendEventOptionsSchema.optional(),\n});\n\nexport type SendEventBody = z.infer<typeof SendEventBodySchema>;\nexport type SendEventOptions = z.infer<typeof SendEventOptionsSchema>;\n\nexport const DeliverEventResponseSchema = z.object({\n deliveredAt: z.string().datetime(),\n});\n\nexport type DeliverEventResponse = z.infer<typeof DeliverEventResponseSchema>;\n\nexport const RuntimeEnvironmentTypeSchema = z.enum([\n \"PRODUCTION\",\n \"STAGING\",\n \"DEVELOPMENT\",\n \"PREVIEW\",\n]);\n\nexport type RuntimeEnvironmentType = z.infer<\n typeof RuntimeEnvironmentTypeSchema\n>;\n\nexport const RunSourceContextSchema = z.object({\n id: z.string(),\n metadata: z.any(),\n});\n\nexport const RunJobBodySchema = z.object({\n event: ApiEventLogSchema,\n job: z.object({\n id: z.string(),\n version: z.string(),\n }),\n run: z.object({\n id: z.string(),\n isTest: z.boolean(),\n startedAt: z.coerce.date(),\n }),\n environment: z.object({\n id: z.string(),\n slug: z.string(),\n type: RuntimeEnvironmentTypeSchema,\n }),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n }),\n account: z\n .object({\n id: z.string(),\n metadata: z.any(),\n })\n .optional(),\n source: RunSourceContextSchema.optional(),\n tasks: z.array(CachedTaskSchema).optional(),\n connections: z.record(ConnectionAuthSchema).optional(),\n});\n\nexport type RunJobBody = z.infer<typeof RunJobBodySchema>;\n\nexport const RunJobErrorSchema = z.object({\n status: z.literal(\"ERROR\"),\n error: ErrorWithStackSchema,\n task: TaskSchema.optional(),\n});\n\nexport type RunJobError = z.infer<typeof RunJobErrorSchema>;\n\nexport const RunJobResumeWithTaskSchema = z.object({\n status: z.literal(\"RESUME_WITH_TASK\"),\n task: TaskSchema,\n});\n\nexport type RunJobResumeWithTask = z.infer<typeof RunJobResumeWithTaskSchema>;\n\nexport const RunJobRetryWithTaskSchema = z.object({\n status: z.literal(\"RETRY_WITH_TASK\"),\n task: TaskSchema,\n error: ErrorWithStackSchema,\n retryAt: z.coerce.date(),\n});\n\nexport type RunJobRetryWithTask = z.infer<typeof RunJobRetryWithTaskSchema>;\n\nexport const RunJobSuccessSchema = z.object({\n status: z.literal(\"SUCCESS\"),\n output: DeserializedJsonSchema.optional(),\n});\n\nexport type RunJobSuccess = z.infer<typeof RunJobSuccessSchema>;\n\nexport const RunJobResponseSchema = z.discriminatedUnion(\"status\", [\n RunJobErrorSchema,\n RunJobResumeWithTaskSchema,\n RunJobRetryWithTaskSchema,\n RunJobSuccessSchema,\n]);\n\nexport type RunJobResponse = z.infer<typeof RunJobResponseSchema>;\n\nexport const PreprocessRunBodySchema = z.object({\n event: ApiEventLogSchema,\n job: z.object({\n id: z.string(),\n version: z.string(),\n }),\n run: z.object({\n id: z.string(),\n isTest: z.boolean(),\n }),\n environment: z.object({\n id: z.string(),\n slug: z.string(),\n type: RuntimeEnvironmentTypeSchema,\n }),\n organization: z.object({\n id: z.string(),\n title: z.string(),\n slug: z.string(),\n }),\n account: z\n .object({\n id: z.string(),\n metadata: z.any(),\n })\n .optional(),\n});\n\nexport type PreprocessRunBody = z.infer<typeof PreprocessRunBodySchema>;\n\nexport const PreprocessRunResponseSchema = z.object({\n abort: z.boolean(),\n properties: z.array(DisplayPropertySchema).optional(),\n});\n\nexport type PreprocessRunResponse = z.infer<typeof PreprocessRunResponseSchema>;\n\nexport const CreateRunBodySchema = z.object({\n client: z.string(),\n job: JobMetadataSchema,\n event: ApiEventLogSchema,\n properties: z.array(DisplayPropertySchema).optional(),\n});\n\nexport type CreateRunBody = z.infer<typeof CreateRunBodySchema>;\n\nconst CreateRunResponseOkSchema = z.object({\n ok: z.literal(true),\n data: z.object({\n id: z.string(),\n }),\n});\n\nconst CreateRunResponseErrorSchema = z.object({\n ok: z.literal(false),\n error: z.string(),\n});\n\nexport const CreateRunResponseBodySchema = z.discriminatedUnion(\"ok\", [\n CreateRunResponseOkSchema,\n CreateRunResponseErrorSchema,\n]);\n\nexport type CreateRunResponseBody = z.infer<typeof CreateRunResponseBodySchema>;\n\nexport const RedactStringSchema = z.object({\n __redactedString: z.literal(true),\n strings: z.array(z.string()),\n interpolations: z.array(z.string()),\n});\n\nexport type RedactString = z.infer<typeof RedactStringSchema>;\n\nexport const LogMessageSchema = z.object({\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: z.string(),\n data: SerializableJsonSchema.optional(),\n});\n\nexport type LogMessage = z.infer<typeof LogMessageSchema>;\n\nexport type ClientTask = z.infer<typeof TaskSchema>;\nexport type CachedTask = z.infer<typeof CachedTaskSchema>;\n\nexport const RedactSchema = z.object({\n paths: z.array(z.string()),\n});\n\nexport const RetryOptionsSchema = z.object({\n limit: z.number().optional(),\n factor: z.number().optional(),\n minTimeoutInMs: z.number().optional(),\n maxTimeoutInMs: z.number().optional(),\n randomize: z.boolean().optional(),\n});\n\nexport type RetryOptions = z.infer<typeof RetryOptionsSchema>;\n\nexport const RunTaskOptionsSchema = z.object({\n name: z.string(),\n icon: z.string().optional(),\n displayKey: z.string().optional(),\n noop: z.boolean().default(false),\n operation: z.enum([\"fetch\"]).optional(),\n delayUntil: z.coerce.date().optional(),\n description: z.string().optional(),\n properties: z.array(DisplayPropertySchema).optional(),\n params: z.any(),\n trigger: TriggerMetadataSchema.optional(),\n redact: RedactSchema.optional(),\n connectionKey: z.string().optional(),\n style: StyleSchema.optional(),\n retry: RetryOptionsSchema.optional(),\n});\n\nexport type RunTaskOptions = z.input<typeof RunTaskOptionsSchema>;\n\nexport const RunTaskBodyInputSchema = RunTaskOptionsSchema.extend({\n idempotencyKey: z.string(),\n parentId: z.string().optional(),\n});\n\nexport type RunTaskBodyInput = z.infer<typeof RunTaskBodyInputSchema>;\n\nexport const RunTaskBodyOutputSchema = RunTaskBodyInputSchema.extend({\n params: DeserializedJsonSchema.optional().nullable(),\n});\n\nexport type RunTaskBodyOutput = z.infer<typeof RunTaskBodyOutputSchema>;\n\nexport const CompleteTaskBodyInputSchema = RunTaskBodyInputSchema.pick({\n properties: true,\n description: true,\n params: true,\n}).extend({\n output: SerializableJsonSchema.optional().transform((v) =>\n v ? DeserializedJsonSchema.parse(JSON.parse(JSON.stringify(v))) : {}\n ),\n});\n\nexport type CompleteTaskBodyInput = z.input<typeof CompleteTaskBodyInputSchema>;\nexport type CompleteTaskBodyOutput = z.infer<\n typeof CompleteTaskBodyInputSchema\n>;\n\nexport const FailTaskBodyInputSchema = z.object({\n error: ErrorWithStackSchema,\n});\n\nexport type FailTaskBodyInput = z.infer<typeof FailTaskBodyInputSchema>;\n\nexport const NormalizedRequestSchema = z.object({\n headers: z.record(z.string()),\n method: z.string(),\n query: z.record(z.string()),\n url: z.string(),\n body: z.any(),\n});\n\nexport type NormalizedRequest = z.infer<typeof NormalizedRequestSchema>;\n\nexport const NormalizedResponseSchema = z.object({\n status: z.number(),\n body: z.any(),\n headers: z.record(z.string()).optional(),\n});\n\nexport type NormalizedResponse = z.infer<typeof NormalizedResponseSchema>;\n\nexport const HttpSourceResponseSchema = z.object({\n response: NormalizedResponseSchema,\n events: z.array(RawEventSchema),\n});\n\nexport const RegisterTriggerBodySchema = z.object({\n rule: EventRuleSchema,\n source: SourceMetadataSchema,\n});\n\nexport type RegisterTriggerBody = z.infer<typeof RegisterTriggerBodySchema>;\n\nexport const InitializeTriggerBodySchema = z.object({\n id: z.string(),\n params: z.any(),\n accountId: z.string().optional(),\n metadata: z.any().optional()\n});\n\nexport type InitializeTriggerBody = z.infer<typeof InitializeTriggerBodySchema>;\n\nconst RegisterCommonScheduleBodySchema = z.object({\n id: z.string(),\n metadata: z.any(),\n accountId: z.string().optional(),\n});\n\nexport const RegisterIntervalScheduleBodySchema =\n RegisterCommonScheduleBodySchema.merge(IntervalMetadataSchema);\n\nexport type RegisterIntervalScheduleBody = z.infer<\n typeof RegisterIntervalScheduleBodySchema\n>;\n\nexport const InitializeCronScheduleBodySchema =\n RegisterCommonScheduleBodySchema.merge(CronMetadataSchema);\n\nexport type RegisterCronScheduleBody = z.infer<\n typeof InitializeCronScheduleBodySchema\n>;\n\nexport const RegisterScheduleBodySchema = z.discriminatedUnion(\"type\", [\n RegisterIntervalScheduleBodySchema,\n InitializeCronScheduleBodySchema,\n]);\n\nexport type RegisterScheduleBody = z.infer<typeof RegisterScheduleBodySchema>;\n\nexport const RegisterScheduleResponseBodySchema = z.object({\n id: z.string(),\n schedule: ScheduleMetadataSchema,\n metadata: z.any(),\n active: z.boolean(),\n});\n\nexport type RegisterScheduleResponseBody = z.infer<\n typeof RegisterScheduleResponseBodySchema\n>;\n\nexport const CreateExternalConnectionBodySchema = z.object({\n accessToken: z.string(),\n type: z.enum([\"oauth2\"]),\n scopes: z.array(z.string()).optional(),\n metadata: z.any(),\n});\n\nexport type CreateExternalConnectionBody = z.infer<\n typeof CreateExternalConnectionBodySchema\n>;\n","import { z } from \"zod\";\n\nexport const ErrorWithStackSchema = z.object({\n message: z.string(),\n name: z.string().optional(),\n stack: z.string().optional(),\n});\n\nexport type ErrorWithStack = z.infer<typeof ErrorWithStackSchema>;\n","import { z } from \"zod\";\n\nconst EventMatcherSchema = z.union([\n z.array(z.string()),\n z.array(z.number()),\n z.array(z.boolean()),\n]);\ntype EventMatcher = z.infer<typeof EventMatcherSchema>;\n\nexport type EventFilter = { [key: string]: EventMatcher | EventFilter };\n\nexport const EventFilterSchema: z.ZodType<EventFilter> = z.lazy(() =>\n z.record(z.union([EventMatcherSchema, EventFilterSchema]))\n);\n\nexport const EventRuleSchema = z.object({\n event: z.string(),\n source: z.string(),\n payload: EventFilterSchema.optional(),\n context: EventFilterSchema.optional(),\n});\n\nexport type EventRule = z.infer<typeof EventRuleSchema>;\n","import { z } from \"zod\";\n\nexport const ConnectionAuthSchema = z.object({\n type: z.enum([\"oauth2\"]),\n accessToken: z.string(),\n scopes: z.array(z.string()).optional(),\n additionalFields: z.record(z.string()).optional(),\n});\n\nexport type ConnectionAuth = z.infer<typeof ConnectionAuthSchema>;\n\nexport const IntegrationMetadataSchema = z.object({\n id: z.string(),\n name: z.string(),\n instructions: z.string().optional(),\n});\n\nexport type IntegrationMetadata = z.infer<typeof IntegrationMetadataSchema>;\n\nexport const IntegrationConfigSchema = z.object({\n id: z.string(),\n metadata: IntegrationMetadataSchema,\n authSource: z.enum([\"HOSTED\", \"LOCAL\"]),\n});\n\nexport type IntegrationConfig = z.infer<typeof IntegrationConfigSchema>;\n","import { z } from \"zod\";\n\nconst LiteralSchema = z.union([z.string(), z.number(), z.boolean(), z.null()]);\ntype Literal = z.infer<typeof LiteralSchema>;\n\nexport type DeserializedJson =\n | Literal\n | { [key: string]: DeserializedJson }\n | DeserializedJson[];\n\nexport const DeserializedJsonSchema: z.ZodType<DeserializedJson> = z.lazy(() =>\n z.union([\n LiteralSchema,\n z.array(DeserializedJsonSchema),\n z.record(DeserializedJsonSchema),\n ])\n);\n\nconst SerializableSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.date(),\n z.undefined(),\n z.symbol(),\n]);\ntype Serializable = z.infer<typeof SerializableSchema>;\n\nexport type SerializableJson =\n | Serializable\n | { [key: string]: SerializableJson }\n | SerializableJson[];\n\nexport const SerializableJsonSchema: z.ZodType<SerializableJson> = z.lazy(() =>\n z.union([\n SerializableSchema,\n z.array(SerializableJsonSchema),\n z.record(SerializableJsonSchema),\n ])\n);\n","import { z } from \"zod\";\n\nexport const DisplayPropertySchema = z.object({\n label: z.string(),\n text: z.string(),\n url: z.string().optional(),\n});\n\nexport const DisplayPropertiesSchema = z.array(DisplayPropertySchema);\n\nexport type DisplayProperty = z.infer<typeof DisplayPropertySchema>;\n\nexport const StyleSchema = z.object({\n style: z.enum([\"normal\", \"minimal\"]),\n variant: z.string().optional(),\n});\n\nexport type Style = z.infer<typeof StyleSchema>;\nexport type StyleName = Style[\"style\"];\n","import { z } from \"zod\";\n\nexport const SCHEDULED_EVENT = \"dev.trigger.scheduled\";\n\nexport const ScheduledPayloadSchema = z.object({\n ts: z.coerce.date(),\n lastTimestamp: z.coerce.date().optional(),\n});\n\nexport type ScheduledPayload = z.infer<typeof ScheduledPayloadSchema>;\n\nexport const IntervalOptionsSchema = z.object({\n seconds: z.number().int().positive().min(60).max(86400),\n});\n\nexport type IntervalOptions = z.infer<typeof IntervalOptionsSchema>;\n\nexport const CronOptionsSchema = z.object({\n cron: z.string(),\n});\n\nexport type CronOptions = z.infer<typeof CronOptionsSchema>;\n\nexport const CronMetadataSchema = z.object({\n type: z.literal(\"cron\"),\n options: CronOptionsSchema,\n metadata: z.any(),\n});\n\nexport type CronMetadata = z.infer<typeof CronMetadataSchema>;\n\nexport const IntervalMetadataSchema = z.object({\n type: z.literal(\"interval\"),\n options: IntervalOptionsSchema,\n metadata: z.any(),\n});\n\nexport type IntervalMetadata = z.infer<typeof IntervalMetadataSchema>;\n\nexport const ScheduleMetadataSchema = z.discriminatedUnion(\"type\", [\n IntervalMetadataSchema,\n CronMetadataSchema,\n]);\n\nexport type ScheduleMetadata = z.infer<typeof ScheduleMetadataSchema>;\n\nexport const RegisterDynamicSchedulePayloadSchema = z.object({\n id: z.string(),\n jobs: z.array(\n z.object({\n id: z.string(),\n version: z.string(),\n })\n ),\n});\n\nexport type RegisterDynamicSchedulePayload = z.infer<\n typeof RegisterDynamicSchedulePayloadSchema\n>;\n","import { z } from \"zod\";\nimport { DisplayPropertySchema, StyleSchema } from \"./properties\";\nimport { DeserializedJsonSchema } from \"./json\";\n\nexport const TaskStatusSchema = z.enum([\n \"PENDING\",\n \"WAITING\",\n \"RUNNING\",\n \"COMPLETED\",\n \"ERRORED\",\n]);\n\nexport type TaskStatus = z.infer<typeof TaskStatusSchema>;\n\nexport const TaskSchema = z.object({\n id: z.string(),\n name: z.string(),\n icon: z.string().optional().nullable(),\n noop: z.boolean(),\n startedAt: z.coerce.date().optional().nullable(),\n completedAt: z.coerce.date().optional().nullable(),\n delayUntil: z.coerce.date().optional().nullable(),\n status: TaskStatusSchema,\n description: z.string().optional().nullable(),\n properties: z.array(DisplayPropertySchema).optional().nullable(),\n params: DeserializedJsonSchema.optional().nullable(),\n output: DeserializedJsonSchema.optional().nullable(),\n error: z.string().optional().nullable(),\n parentId: z.string().optional().nullable(),\n style: StyleSchema.optional().nullable(),\n operation: z.string().optional().nullable(),\n});\n\nexport const ServerTaskSchema = TaskSchema.extend({\n idempotencyKey: z.string(),\n attempts: z.number(),\n});\n\nexport type ServerTask = z.infer<typeof ServerTaskSchema>;\n\nexport const CachedTaskSchema = z.object({\n id: z.string(),\n idempotencyKey: z.string(),\n status: TaskStatusSchema,\n noop: z.boolean().default(false),\n output: DeserializedJsonSchema.optional().nullable(),\n parentId: z.string().optional().nullable(),\n});\n","import { z } from \"zod\";\nimport { EventFilterSchema, EventRuleSchema } from \"./eventFilter\";\nimport { DisplayPropertySchema } from \"./properties\";\nimport { ScheduleMetadataSchema } from \"./schedules\";\n\nexport const EventExampleSchema = z.object({\n id: z.string(),\n icon: z.string().optional(),\n name: z.string(),\n payload: z.any(),\n});\n\nexport type EventExample = z.infer<typeof EventExampleSchema>;\n\nexport const EventSpecificationSchema = z.object({\n name: z.string(),\n title: z.string(),\n source: z.string(),\n icon: z.string(),\n filter: EventFilterSchema.optional(),\n properties: z.array(DisplayPropertySchema).optional(),\n schema: z.any().optional(),\n examples: z.array(EventExampleSchema).optional(),\n});\n\nexport const DynamicTriggerMetadataSchema = z.object({\n type: z.literal(\"dynamic\"),\n id: z.string(),\n});\n\nexport const StaticTriggerMetadataSchema = z.object({\n type: z.literal(\"static\"),\n title: z.string(),\n properties: z.array(DisplayPropertySchema).optional(),\n rule: EventRuleSchema,\n});\n\nexport const ScheduledTriggerMetadataSchema = z.object({\n type: z.literal(\"scheduled\"),\n schedule: ScheduleMetadataSchema,\n});\n\nexport const TriggerMetadataSchema = z.discriminatedUnion(\"type\", [\n DynamicTriggerMetadataSchema,\n StaticTriggerMetadataSchema,\n ScheduledTriggerMetadataSchema,\n]);\n\nexport type TriggerMetadata = z.infer<typeof TriggerMetadataSchema>;\n","import { z } from \"zod\";\n\nexport const MISSING_CONNECTION_NOTIFICATION =\n \"dev.trigger.notifications.missingConnection\";\n\nexport const MISSING_CONNECTION_RESOLVED_NOTIFICATION =\n \"dev.trigger.notifications.missingConnectionResolved\";\n\nexport const CommonMissingConnectionNotificationPayloadSchema = z.object({\n id: z.string(),\n client: z.object({\n id: z.string(),\n title: z.string(),\n scopes: z.array(z.string()),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n }),\n authorizationUrl: z.string(),\n});\n\nexport const MissingDeveloperConnectionNotificationPayloadSchema =\n CommonMissingConnectionNotificationPayloadSchema.extend({\n type: z.literal(\"DEVELOPER\"),\n });\n\nexport const MissingExternalConnectionNotificationPayloadSchema =\n CommonMissingConnectionNotificationPayloadSchema.extend({\n type: z.literal(\"EXTERNAL\"),\n account: z.object({\n id: z.string(),\n metadata: z.any(),\n }),\n });\n\nexport const MissingConnectionNotificationPayloadSchema = z.discriminatedUnion(\n \"type\",\n [\n MissingDeveloperConnectionNotificationPayloadSchema,\n MissingExternalConnectionNotificationPayloadSchema,\n ]\n);\n\nexport type MissingConnectionNotificationPayload = z.infer<\n typeof MissingConnectionNotificationPayloadSchema\n>;\n\nexport const CommonMissingConnectionNotificationResolvedPayloadSchema =\n z.object({\n id: z.string(),\n client: z.object({\n id: z.string(),\n title: z.string(),\n scopes: z.array(z.string()),\n createdAt: z.coerce.date(),\n updatedAt: z.coerce.date(),\n integrationIdentifier: z.string(),\n integrationAuthMethod: z.string(),\n }),\n expiresAt: z.coerce.date(),\n });\n\nexport const MissingDeveloperConnectionResolvedNotificationPayloadSchema =\n CommonMissingConnectionNotificationResolvedPayloadSchema.extend({\n type: z.literal(\"DEVELOPER\"),\n });\n\nexport const MissingExternalConnectionResolvedNotificationPayloadSchema =\n CommonMissingConnectionNotificationResolvedPayloadSchema.extend({\n type: z.literal(\"EXTERNAL\"),\n account: z.object({\n id: z.string(),\n metadata: z.any(),\n }),\n });\n\nexport const MissingConnectionResolvedNotificationPayloadSchema =\n z.discriminatedUnion(\"type\", [\n MissingDeveloperConnectionResolvedNotificationPayloadSchema,\n MissingExternalConnectionResolvedNotificationPayloadSchema,\n ]);\n\nexport type MissingConnectionResolvedNotificationPayload = z.infer<\n typeof MissingConnectionResolvedNotificationPayloadSchema\n>;\n","import { z } from \"zod\";\nimport { RedactStringSchema, RetryOptionsSchema } from \"./api\";\n\nexport const FetchRetryHeadersStrategySchema = z.object({\n strategy: z.literal(\"headers\"),\n limitHeader: z.string(),\n remainingHeader: z.string(),\n resetHeader: z.string(),\n});\n\nexport type FetchRetryHeadersStrategy = z.infer<\n typeof FetchRetryHeadersStrategySchema\n>;\n\nexport const FetchRetryBackoffStrategySchema = RetryOptionsSchema.extend({\n strategy: z.literal(\"backoff\"),\n});\n\nexport type FetchRetryBackoffStrategy = z.infer<\n typeof FetchRetryBackoffStrategySchema\n>;\n\nexport const FetchRetryStrategySchema = z.discriminatedUnion(\"strategy\", [\n FetchRetryHeadersStrategySchema,\n FetchRetryBackoffStrategySchema,\n]);\n\nexport type FetchRetryStrategy = z.infer<typeof FetchRetryStrategySchema>;\n\nexport const FetchRequestInitSchema = z.object({\n method: z.string().optional(),\n headers: z.record(z.union([z.string(), RedactStringSchema])).optional(),\n body: z.union([z.string(), z.instanceof(ArrayBuffer)]).optional(),\n});\n\nexport type FetchRequestInit = z.infer<typeof FetchRequestInitSchema>;\n\nexport const FetchRetryOptionsSchema = z.record(FetchRetryStrategySchema);\n\nexport type FetchRetryOptions = z.infer<typeof FetchRetryOptionsSchema>;\n\nexport const FetchOperationSchema = z.object({\n url: z.string(),\n requestInit: FetchRequestInitSchema.optional(),\n retry: z.record(FetchRetryStrategySchema).optional(),\n});\n\nexport type FetchOperation = z.infer<typeof FetchOperationSchema>;\n","// EventFilter is typed as type EventFilter = { [key: string]: EventFilter | string[] | number[] | boolean[] }\n\nimport { EventFilter } from \"./schemas\";\n\n// This function should take two EventFilters and return a new EventFilter that is the result of merging the two.\nexport function deepMergeFilters(\n filter: EventFilter,\n other: EventFilter\n): EventFilter {\n const result: EventFilter = { ...filter };\n\n for (const key in other) {\n if (other.hasOwnProperty(key)) {\n const otherValue = other[key];\n\n if (\n typeof otherValue === \"object\" &&\n !Array.isArray(otherValue) &&\n otherValue !== null\n ) {\n const filterValue = filter[key];\n\n if (\n filterValue &&\n typeof filterValue === \"object\" &&\n !Array.isArray(filterValue)\n ) {\n result[key] = deepMergeFilters(filterValue, otherValue);\n } else {\n result[key] = { ...other[key] };\n }\n } else {\n result[key] = other[key];\n }\n }\n }\n\n return result;\n}\n","import { RetryOptions } from \"./schemas\";\n\nconst DEFAULT_RETRY_OPTIONS = {\n limit: 5,\n factor: 1.8,\n minTimeoutInMs: 1000,\n maxTimeoutInMs: 60000,\n randomize: true,\n} satisfies RetryOptions;\n\nexport function calculateRetryAt(\n retryOptions: RetryOptions,\n attempts: number\n): Date | undefined {\n const options = {\n ...DEFAULT_RETRY_OPTIONS,\n ...retryOptions,\n };\n\n const retryCount = attempts + 1;\n\n if (retryCount >= options.limit) {\n return;\n }\n\n const random = options.randomize ? Math.random() + 1 : 1;\n\n let timeoutInMs = Math.round(\n random *\n Math.max(options.minTimeoutInMs, 1) *\n Math.pow(options.factor, Math.max(attempts - 1, 0))\n );\n\n timeoutInMs = Math.min(timeoutInMs, options.maxTimeoutInMs);\n\n return new Date(Date.now() + timeoutInMs);\n}\n","import { DeserializedJson, DeserializedJsonSchema } from \"./schemas\";\n\nexport interface ExampleReplacement {\n marker: string;\n replace(input: ExampleInputData): DeserializedJson;\n}\n\ntype ExampleInputData = {\n match: {\n key: string;\n value: string;\n };\n data: {\n now: Date;\n };\n};\n\nexport const currentDate: ExampleReplacement = {\n marker: \"__CURRENT_DATE__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.toISOString();\n },\n};\n\nexport const currentTimestampMilliseconds: ExampleReplacement = {\n marker: \"__CURRENT_TIMESTAMP_MS__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.getTime();\n },\n};\n\nexport const currentTimestampSeconds: ExampleReplacement = {\n marker: \"__CURRENT_TIMESTAMP_S__\",\n replace({ data: { now } }: ExampleInputData) {\n return now.getTime() / 1000;\n },\n};\n\nexport const replacements: ExampleReplacement[] = [\n currentDate,\n currentTimestampMilliseconds,\n currentTimestampSeconds,\n];\n","import {\n ApiEventLog,\n ApiEventLogSchema,\n CompleteTaskBodyInput,\n ConnectionAuthSchema,\n CreateRunBody,\n CreateRunResponseBodySchema,\n FailTaskBodyInput,\n LogLevel,\n Logger,\n RegisterScheduleResponseBodySchema,\n RegisterSourceEvent,\n RegisterSourceEventSchema,\n RegisterTriggerBody,\n RunTaskBodyInput,\n ScheduleMetadata,\n SendEvent,\n SendEventOptions,\n ServerTaskSchema,\n TriggerSource,\n TriggerSourceSchema,\n UpdateTriggerSourceBody,\n} from \"@trigger.dev/internal\";\nimport { z } from \"zod\";\n\nexport type ApiClientOptions = {\n apiKey?: string;\n apiUrl?: string;\n logLevel?: LogLevel;\n};\n\nexport type EndpointRecord = {\n id: string;\n name: string;\n url: string;\n};\n\nexport type HttpSourceRecord = {\n id: string;\n key: string;\n managed: boolean;\n url: string;\n status: \"PENDING\" | \"ACTIVE\" | \"INACTIVE\";\n secret?: string;\n data?: any;\n};\n\nexport type RunRecord = {\n id: string;\n jobId: string;\n callbackUrl: string;\n event: ApiEventLog;\n};\n\nexport class ApiClient {\n #apiUrl: string;\n #options: ApiClientOptions;\n #logger: Logger;\n\n constructor(options: ApiClientOptions) {\n this.#options = options;\n\n this.#apiUrl =\n this.#options.apiUrl ??\n process.env.TRIGGER_API_URL ??\n \"https://api.trigger.dev\";\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n async registerEndpoint(options: {\n url: string;\n name: string;\n }): Promise<EndpointRecord> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Registering endpoint\", {\n url: options.url,\n name: options.name,\n });\n\n const response = await fetch(`${this.#apiUrl}/api/v1/endpoints`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({\n url: options.url,\n name: options.name,\n }),\n });\n\n if (response.status >= 400 && response.status < 500) {\n const body = await response.json();\n\n throw new Error(body.error);\n }\n\n if (response.status !== 200) {\n throw new Error(\n `Failed to register entry point, got status code ${response.status}`\n );\n }\n\n return await response.json();\n }\n\n async createRun(params: CreateRunBody) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Creating run\", {\n params,\n });\n\n return await zodfetch(\n CreateRunResponseBodySchema,\n `${this.#apiUrl}/api/v1/runs`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(params),\n }\n );\n }\n\n async runTask(runId: string, task: RunTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Running Task\", {\n task,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n \"Idempotency-Key\": task.idempotencyKey,\n },\n body: JSON.stringify(task),\n }\n );\n }\n\n async completeTask(runId: string, id: string, task: CompleteTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Complete Task\", {\n task,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks/${id}/complete`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(task),\n }\n );\n }\n\n async failTask(runId: string, id: string, body: FailTaskBodyInput) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Fail Task\", {\n id,\n runId,\n body,\n });\n\n return await zodfetch(\n ServerTaskSchema,\n `${this.#apiUrl}/api/v1/runs/${runId}/tasks/${id}/fail`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(body),\n }\n );\n }\n\n async sendEvent(event: SendEvent, options: SendEventOptions = {}) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"Sending event\", {\n event,\n });\n\n return await zodfetch(ApiEventLogSchema, `${this.#apiUrl}/api/v1/events`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ event, options }),\n });\n }\n\n async updateSource(\n client: string,\n key: string,\n source: UpdateTriggerSourceBody\n ): Promise<TriggerSource> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"activating http source\", {\n source,\n });\n\n const response = await zodfetch(\n TriggerSourceSchema,\n `${this.#apiUrl}/api/v1/${client}/sources/${key}`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(source),\n }\n );\n\n return response;\n }\n\n async registerTrigger(\n client: string,\n id: string,\n key: string,\n payload: RegisterTriggerBody\n ): Promise<RegisterSourceEvent> {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"registering trigger\", {\n id,\n payload,\n });\n\n const response = await zodfetch(\n RegisterSourceEventSchema,\n `${this.#apiUrl}/api/v1/${client}/triggers/${id}/registrations/${key}`,\n {\n method: \"PUT\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify(payload),\n }\n );\n\n return response;\n }\n\n async registerSchedule(\n client: string,\n id: string,\n key: string,\n payload: ScheduleMetadata\n ) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"registering schedule\", {\n id,\n payload,\n });\n\n const response = await zodfetch(\n RegisterScheduleResponseBodySchema,\n `${this.#apiUrl}/api/v1/${client}/schedules/${id}/registrations`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n body: JSON.stringify({ id: key, ...payload }),\n }\n );\n\n return response;\n }\n\n async unregisterSchedule(client: string, id: string, key: string) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"unregistering schedule\", {\n id,\n });\n\n const response = await zodfetch(\n z.object({ ok: z.boolean() }),\n `${\n this.#apiUrl\n }/api/v1/${client}/schedules/${id}/registrations/${encodeURIComponent(\n key\n )}`,\n {\n method: \"DELETE\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n }\n );\n\n return response;\n }\n\n async getAuth(client: string, id: string) {\n const apiKey = await this.#apiKey();\n\n this.#logger.debug(\"getting auth\", {\n id,\n });\n\n const response = await zodfetch(\n ConnectionAuthSchema,\n `${this.#apiUrl}/api/v1/${client}/auth/${id}`,\n {\n method: \"GET\",\n headers: {\n Accept: \"application/json\",\n Authorization: `Bearer ${apiKey}`,\n },\n },\n {\n optional: true,\n }\n );\n\n return response;\n }\n\n async #apiKey() {\n const apiKey = getApiKey(this.#options.apiKey);\n\n if (apiKey.status === \"invalid\") {\n throw new Error(\"Invalid API key\");\n\n // const chalk = (await import(\"chalk\")).default;\n // const terminalLink = (await import(\"terminal-link\")).default;\n\n // throw new Error(\n // `${chalk.red(\"Trigger.dev error\")}: Invalid API key (\"${chalk.italic(\n // apiKey.apiKey\n // )}\"), please set the TRIGGER_API_KEY environment variable or pass the apiKey option to a valid value. ${terminalLink(\n // \"Get your API key here\",\n // \"https://app.trigger.dev\",\n // {\n // fallback(text, url) {\n // return `${text} 👉 ${url}`;\n // },\n // }\n // )}`\n // );\n } else if (apiKey.status === \"missing\") {\n throw new Error(\"Missing API key\");\n // const chalk = (await import(\"chalk\")).default;\n // const terminalLink = (await import(\"terminal-link\")).default;\n\n // throw new Error(\n // `${chalk.red(\n // \"Trigger.dev error\"\n // )}: Missing an API key, please set the TRIGGER_API_KEY environment variable or pass the apiKey option to the Trigger constructor. ${terminalLink(\n // \"Get your API key here\",\n // \"https://app.trigger.dev\",\n // {\n // fallback(text, url) {\n // return `${text} 👉 ${url}`;\n // },\n // }\n // )}`\n // );\n }\n\n return apiKey.apiKey;\n }\n}\n\nfunction getApiKey(key?: string) {\n const apiKey = key ?? process.env.TRIGGER_API_KEY;\n\n if (!apiKey) {\n return { status: \"missing\" as const };\n }\n\n // Validate the api_key format (should be tr_{env}_XXXXX)\n const isValid = apiKey.match(/^tr_[a-z]+_[a-zA-Z0-9]+$/);\n\n if (!isValid) {\n return { status: \"invalid\" as const, apiKey };\n }\n\n return { status: \"valid\" as const, apiKey };\n}\n\nasync function zodfetch<\n TResponseBody extends any,\n TOptional extends boolean = false\n>(\n schema: z.Schema<TResponseBody>,\n url: string,\n requestInit?: RequestInit,\n options?: {\n errorMessage?: string;\n optional?: TOptional;\n }\n): Promise<TOptional extends true ? TResponseBody | undefined : TResponseBody> {\n const response = await fetch(url, requestInit);\n\n if (\n (!requestInit || requestInit.method === \"GET\") &&\n response.status === 404 &&\n options?.optional\n ) {\n // @ts-ignore\n return;\n }\n\n if (response.status >= 400 && response.status < 500) {\n const body = await response.json();\n\n throw new Error(body.error);\n }\n\n if (response.status !== 200) {\n throw new Error(\n options?.errorMessage ??\n `Failed to fetch ${url}, got status code ${response.status}`\n );\n }\n\n const jsonBody = await response.json();\n\n return schema.parse(jsonBody);\n}\n","import { ErrorWithStack, ServerTask } from \"@trigger.dev/internal\";\n\nexport class ResumeWithTaskError {\n constructor(public task: ServerTask) {}\n}\n\nexport class RetryWithTaskError {\n constructor(\n public cause: ErrorWithStack,\n public task: ServerTask,\n public retryAt: Date\n ) {}\n}\n\nexport function isTriggerError(\n err: unknown\n): err is ResumeWithTaskError | RetryWithTaskError {\n return (\n err instanceof ResumeWithTaskError || err instanceof RetryWithTaskError\n );\n}\n","import {\n CachedTask,\n ConnectionAuth,\n CronOptions,\n ErrorWithStackSchema,\n FetchRequestInit,\n FetchRetryOptions,\n IntervalOptions,\n LogLevel,\n Logger,\n RunTaskOptions,\n SendEvent,\n SendEventOptions,\n SerializableJson,\n ServerTask,\n UpdateTriggerSourceBody,\n} from \"@trigger.dev/internal\";\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { webcrypto } from \"node:crypto\";\nimport { ApiClient } from \"./apiClient\";\nimport {\n ResumeWithTaskError,\n RetryWithTaskError,\n isTriggerError,\n} from \"./errors\";\nimport { createIOWithIntegrations } from \"./ioWithIntegrations\";\nimport { calculateRetryAt } from \"./retry\";\nimport { TriggerClient } from \"./triggerClient\";\nimport { DynamicTrigger } from \"./triggers/dynamic\";\nimport {\n ExternalSource,\n ExternalSourceParams,\n} from \"./triggers/externalSource\";\nimport { DynamicSchedule } from \"./triggers/scheduled\";\nimport { EventSpecification, TaskLogger, TriggerContext } from \"./types\";\n\nexport type IOTask = ServerTask;\n\nexport type IOOptions = {\n id: string;\n apiClient: ApiClient;\n client: TriggerClient;\n context: TriggerContext;\n logger?: Logger;\n logLevel?: LogLevel;\n cachedTasks?: Array<CachedTask>;\n};\n\nexport class IO {\n private _id: string;\n private _apiClient: ApiClient;\n private _triggerClient: TriggerClient;\n private _logger: Logger;\n private _cachedTasks: Map<string, CachedTask>;\n private _taskStorage: AsyncLocalStorage<{ taskId: string }>;\n private _context: TriggerContext;\n\n constructor(options: IOOptions) {\n this._id = options.id;\n this._apiClient = options.apiClient;\n this._triggerClient = options.client;\n this._logger =\n options.logger ?? new Logger(\"trigger.dev\", options.logLevel);\n this._cachedTasks = new Map();\n\n if (options.cachedTasks) {\n options.cachedTasks.forEach((task) => {\n this._cachedTasks.set(task.id, task);\n });\n }\n\n this._taskStorage = new AsyncLocalStorage();\n this._context = options.context;\n }\n\n get logger() {\n return new IOLogger(async (level, message, data) => {\n switch (level) {\n case \"DEBUG\": {\n this._logger.debug(message, data);\n break;\n }\n case \"INFO\": {\n this._logger.info(message, data);\n break;\n }\n case \"WARN\": {\n this._logger.warn(message, data);\n break;\n }\n case \"ERROR\": {\n this._logger.error(message, data);\n break;\n }\n }\n\n await this.runTask(\n [message, level],\n {\n name: \"log\",\n icon: \"log\",\n description: message,\n params: data,\n properties: [{ label: \"Level\", text: level }],\n style: { style: \"minimal\", variant: level.toLowerCase() },\n noop: true,\n },\n async (task) => {}\n );\n });\n }\n\n async wait(key: string | any[], seconds: number) {\n return await this.runTask(\n key,\n {\n name: \"wait\",\n icon: \"clock\",\n params: { seconds },\n noop: true,\n delayUntil: new Date(Date.now() + seconds * 1000),\n style: { style: \"minimal\" },\n },\n async (task) => {}\n );\n }\n\n async backgroundFetch<TResponseData>(\n key: string | any[],\n url: string,\n requestInit?: FetchRequestInit,\n retry?: FetchRetryOptions\n ): Promise<TResponseData> {\n const urlObject = new URL(url);\n\n return (await this.runTask(\n key,\n {\n name: `fetch ${urlObject.hostname}${urlObject.pathname}`,\n params: { url, requestInit, retry },\n operation: \"fetch\",\n icon: \"background\",\n noop: false,\n properties: [\n {\n label: \"url\",\n text: url,\n url,\n },\n {\n label: \"method\",\n text: requestInit?.method ?? \"GET\",\n },\n {\n label: \"background\",\n text: \"true\",\n },\n ],\n },\n async (task) => {\n return task.output;\n }\n )) as TResponseData;\n }\n\n async sendEvent(\n key: string | any[],\n event: SendEvent,\n options?: SendEventOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"sendEvent\",\n params: { event, options },\n },\n async (task) => {\n return await this._triggerClient.sendEvent(event, options);\n }\n );\n }\n\n async updateSource(\n key: string | any[],\n options: { key: string } & UpdateTriggerSourceBody\n ) {\n return this.runTask(\n key,\n {\n name: \"Update Source\",\n description: `Update Source ${options.key}`,\n properties: [\n {\n label: \"key\",\n text: options.key,\n },\n ],\n redact: {\n paths: [\"secret\"],\n },\n },\n async (task) => {\n return await this._apiClient.updateSource(\n this._triggerClient.id,\n options.key,\n options\n );\n }\n );\n }\n\n async registerInterval(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string,\n options: IntervalOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"register-interval\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n { label: \"seconds\", text: options.seconds.toString() },\n ],\n params: options,\n },\n async (task) => {\n return dynamicSchedule.register(id, {\n type: \"interval\",\n options,\n });\n }\n );\n }\n\n async unregisterInterval(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string\n ) {\n return await this.runTask(\n key,\n {\n name: \"unregister-interval\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n ],\n },\n async (task) => {\n return dynamicSchedule.unregister(id);\n }\n );\n }\n\n async registerCron(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string,\n options: CronOptions\n ) {\n return await this.runTask(\n key,\n {\n name: \"register-cron\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n { label: \"cron\", text: options.cron },\n ],\n params: options,\n },\n async (task) => {\n return dynamicSchedule.register(id, {\n type: \"cron\",\n options,\n });\n }\n );\n }\n\n async unregisterCron(\n key: string | any[],\n dynamicSchedule: DynamicSchedule,\n id: string\n ) {\n return await this.runTask(\n key,\n {\n name: \"unregister-cron\",\n properties: [\n { label: \"schedule\", text: dynamicSchedule.id },\n { label: \"id\", text: id },\n ],\n },\n async (task) => {\n return dynamicSchedule.unregister(id);\n }\n );\n }\n\n async registerTrigger<\n TTrigger extends DynamicTrigger<\n EventSpecification<any>,\n ExternalSource<any, any, any>\n >\n >(\n key: string | any[],\n trigger: TTrigger,\n id: string,\n params: ExternalSourceParams<TTrigger[\"source\"]>\n ): Promise<{ id: string; key: string } | undefined> {\n return await this.runTask(\n key,\n {\n name: \"register-trigger\",\n properties: [\n { label: \"trigger\", text: trigger.id },\n { label: \"id\", text: id },\n ],\n params: params as any,\n },\n async (task) => {\n const registration = await this.runTask(\n \"register-source\",\n {\n name: \"register-source\",\n },\n async (subtask1) => {\n return trigger.register(id, params);\n }\n );\n\n const connection = await this.getAuth(\n \"get-auth\",\n registration.source.clientId\n );\n\n const io = createIOWithIntegrations(\n // @ts-ignore\n this,\n {\n integration: connection,\n },\n {\n integration: trigger.source.integration,\n }\n );\n\n const updates = await trigger.source.register(\n params,\n registration,\n io,\n this._context\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await this.updateSource(\"update-source\", {\n key: registration.source.key,\n ...updates,\n });\n }\n );\n }\n\n async getAuth(\n key: string | any[],\n clientId?: string\n ): Promise<ConnectionAuth | undefined> {\n if (!clientId) {\n return;\n }\n\n return this.runTask(key, { name: \"get-auth\" }, async (task) => {\n return await this._triggerClient.getAuth(clientId);\n });\n }\n\n async runTask<TResult extends SerializableJson | void = void>(\n key: string | any[],\n options: RunTaskOptions,\n callback: (task: IOTask, io: IO) => Promise<TResult>,\n onError?: (\n error: unknown,\n task: IOTask,\n io: IO\n ) => { retryAt: Date; error?: Error; jitter?: number } | undefined | void\n ): Promise<TResult> {\n const parentId = this._taskStorage.getStore()?.taskId;\n\n if (parentId) {\n this._logger.debug(\"Using parent task\", {\n parentId,\n key,\n options,\n });\n }\n\n const idempotencyKey = await generateIdempotencyKey(\n [this._id, parentId ?? \"\", key].flat()\n );\n\n const cachedTask = this._cachedTasks.get(idempotencyKey);\n\n if (cachedTask) {\n this._logger.debug(\"Using cached task\", {\n idempotencyKey,\n cachedTask,\n });\n\n return cachedTask.output as TResult;\n }\n\n const task = await this._apiClient.runTask(this._id, {\n idempotencyKey,\n displayKey: typeof key === \"string\" ? key : undefined,\n noop: false,\n ...options,\n parentId,\n });\n\n if (task.status === \"COMPLETED\") {\n this._logger.debug(\"Using task output\", {\n idempotencyKey,\n task,\n });\n\n this.#addToCachedTasks(task);\n\n return task.output as TResult;\n }\n\n if (task.status === \"ERRORED\") {\n this._logger.debug(\"Task errored\", {\n idempotencyKey,\n task,\n });\n\n throw new Error(task.error ?? \"Task errored\");\n }\n\n if (task.status === \"WAITING\") {\n this._logger.debug(\"Task waiting\", {\n idempotencyKey,\n task,\n });\n\n throw new ResumeWithTaskError(task);\n }\n\n if (task.status === \"RUNNING\" && typeof task.operation === \"string\") {\n this._logger.debug(\"Task running operation\", {\n idempotencyKey,\n task,\n });\n\n throw new ResumeWithTaskError(task);\n }\n\n const executeTask = async () => {\n try {\n const result = await callback(task, this);\n\n this._logger.debug(\"Completing using output\", {\n idempotencyKey,\n task,\n });\n\n await this._apiClient.completeTask(this._id, task.id, {\n output: result ?? undefined,\n });\n\n return result;\n } catch (error) {\n if (isTriggerError(error)) {\n throw error;\n }\n\n if (onError) {\n const onErrorResult = onError(error, task, this);\n\n if (onErrorResult) {\n const parsedError = ErrorWithStackSchema.safeParse(\n onErrorResult.error\n );\n\n throw new RetryWithTaskError(\n parsedError.success\n ? parsedError.data\n : { message: \"Unknown error\" },\n task,\n onErrorResult.retryAt\n );\n }\n }\n\n const parsedError = ErrorWithStackSchema.safeParse(error);\n\n if (options.retry) {\n const retryAt = calculateRetryAt(options.retry, task.attempts - 1);\n\n if (retryAt) {\n throw new RetryWithTaskError(\n parsedError.success\n ? parsedError.data\n : { message: \"Unknown error\" },\n task,\n retryAt\n );\n }\n }\n\n if (parsedError.success) {\n await this._apiClient.failTask(this._id, task.id, {\n error: parsedError.data,\n });\n } else {\n await this._apiClient.failTask(this._id, task.id, {\n error: { message: JSON.stringify(error), name: \"Unknown Error\" },\n });\n }\n\n throw error;\n }\n };\n\n return this._taskStorage.run({ taskId: task.id }, executeTask);\n }\n\n async try<TResult, TCatchResult>(\n tryCallback: () => Promise<TResult>,\n catchCallback: (error: unknown) => Promise<TCatchResult>\n ): Promise<TResult | TCatchResult> {\n try {\n return await tryCallback();\n } catch (error) {\n if (isTriggerError(error)) {\n throw error;\n }\n\n return await catchCallback(error);\n }\n }\n\n #addToCachedTasks(task: ServerTask) {\n this._cachedTasks.set(task.idempotencyKey, task);\n }\n}\n\n// Generate a stable idempotency key for the key material, using a stable json stringification\nasync function generateIdempotencyKey(keyMaterial: any[]) {\n const keys = keyMaterial.map((key) => {\n if (typeof key === \"string\") {\n return key;\n }\n\n return stableStringify(key);\n });\n\n const key = keys.join(\":\");\n\n const hash = await webcrypto.subtle.digest(\"SHA-256\", Buffer.from(key));\n\n return Buffer.from(hash).toString(\"hex\");\n}\n\nfunction stableStringify(obj: any): string {\n function sortKeys(obj: any): any {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n\n if (Array.isArray(obj)) {\n return obj.map(sortKeys);\n }\n\n const sortedKeys = Object.keys(obj).sort();\n const sortedObj: { [key: string]: any } = {};\n\n for (const key of sortedKeys) {\n sortedObj[key] = sortKeys(obj[key]);\n }\n\n return sortedObj;\n }\n\n const sortedObj = sortKeys(obj);\n return JSON.stringify(sortedObj);\n}\n\ntype CallbackFunction = (\n level: \"DEBUG\" | \"INFO\" | \"WARN\" | \"ERROR\",\n message: string,\n properties?: Record<string, any>\n) => Promise<void>;\n\nexport class IOLogger implements TaskLogger {\n constructor(private callback: CallbackFunction) {}\n\n debug(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"DEBUG\", message, properties);\n }\n info(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"INFO\", message, properties);\n }\n warn(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"WARN\", message, properties);\n }\n error(message: string, properties?: Record<string, any>): Promise<void> {\n return this.callback(\"ERROR\", message, properties);\n }\n}\n","import { ConnectionAuth } from \"@trigger.dev/internal\";\nimport {\n AuthenticatedTask,\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"./integrations\";\nimport { IO } from \"./io\";\n\nexport function createIOWithIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n>(\n io: IO,\n auths?: Record<string, ConnectionAuth | undefined>,\n integrations?: TIntegrations\n): IOWithIntegrations<TIntegrations> {\n if (!integrations) {\n return io as IOWithIntegrations<TIntegrations>;\n }\n\n const connections = Object.entries(integrations).reduce(\n (acc, [connectionKey, integration]) => {\n let auth = auths?.[connectionKey];\n\n const client = integration.client.usesLocalAuth\n ? integration.client.client\n : auth\n ? integration.client.clientFactory?.(auth)\n : undefined;\n\n if (!client) {\n return acc;\n }\n\n auth = integration.client.usesLocalAuth ? integration.client.auth : auth;\n\n const ioConnection = {\n client,\n } as any;\n\n if (integration.client.tasks) {\n const tasks: Record<\n string,\n AuthenticatedTask<any, any, any, any>\n > = integration.client.tasks;\n\n Object.keys(tasks).forEach((taskName) => {\n const authenticatedTask = tasks[taskName];\n\n ioConnection[taskName] = async (\n key: string | string[],\n params: any\n ) => {\n const options = authenticatedTask.init(params);\n options.connectionKey = connectionKey;\n\n return await io.runTask(\n key,\n options,\n async (ioTask) => {\n return authenticatedTask.run(params, client, ioTask, io, auth);\n },\n authenticatedTask.onError\n );\n };\n });\n }\n\n acc[connectionKey] = ioConnection;\n\n return acc;\n },\n {} as any\n );\n\n return new Proxy(io, {\n get(target, prop, receiver) {\n // We can return the original io back if the prop is __io\n if (prop === \"__io\") {\n return io;\n }\n\n if (prop in connections) {\n return connections[prop];\n }\n\n const value = Reflect.get(target, prop, receiver);\n return typeof value == \"function\" ? value.bind(target) : value;\n },\n }) as IOWithIntegrations<TIntegrations>;\n}\n","import {\n EventFilter,\n TriggerMetadata,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport { z } from \"zod\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\ntype EventTriggerOptions<TEventSpecification extends EventSpecification<any>> =\n {\n event: TEventSpecification;\n name?: string;\n source?: string;\n filter?: EventFilter;\n };\n\nexport class EventTrigger<TEventSpecification extends EventSpecification<any>>\n implements Trigger<TEventSpecification>\n{\n #options: EventTriggerOptions<TEventSpecification>;\n\n constructor(options: EventTriggerOptions<TEventSpecification>) {\n this.#options = options;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.#options.name ?? this.#options.event.title,\n rule: {\n event: this.#options.name ?? this.#options.event.name,\n source: this.#options.source ?? \"trigger.dev\",\n payload: deepMergeFilters(\n this.#options.filter ?? {},\n this.#options.event.filter ?? {}\n ),\n },\n };\n }\n\n get event() {\n return this.#options.event;\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n}\n\ntype TriggerOptions<TEvent> = {\n name: string;\n schema?: z.Schema<TEvent>;\n source?: string;\n filter?: EventFilter;\n};\n\nexport function eventTrigger<TEvent extends any = any>(\n options: TriggerOptions<TEvent>\n): Trigger<EventSpecification<TEvent>> {\n return new EventTrigger({\n name: options.name,\n filter: options.filter,\n event: {\n name: options.name,\n title: \"Event\",\n source: options.source ?? \"trigger.dev\",\n icon: \"custom-event\",\n parsePayload: (rawPayload: any) => {\n if (options.schema) {\n return options.schema.parse(rawPayload);\n }\n\n return rawPayload as any;\n },\n },\n });\n}\n","import {\n ErrorWithStackSchema,\n IndexEndpointResponse,\n HandleTriggerSource,\n HttpSourceRequestHeadersSchema,\n InitializeTriggerBodySchema,\n LogLevel,\n Logger,\n NormalizedResponse,\n PreprocessRunBody,\n PreprocessRunBodySchema,\n REGISTER_SOURCE_EVENT,\n RegisterSourceEvent,\n RegisterSourceEventSchema,\n RegisterTriggerBody,\n RunJobBody,\n RunJobBodySchema,\n RunJobResponse,\n ScheduleMetadata,\n SendEvent,\n SendEventOptions,\n SourceMetadata,\n} from \"@trigger.dev/internal\";\nimport { ApiClient } from \"./apiClient\";\nimport { ResumeWithTaskError, RetryWithTaskError } from \"./errors\";\nimport { IO } from \"./io\";\nimport { createIOWithIntegrations } from \"./ioWithIntegrations\";\nimport { Job } from \"./job\";\nimport { DynamicTrigger } from \"./triggers/dynamic\";\nimport { EventTrigger } from \"./triggers/eventTrigger\";\nimport { ExternalSource } from \"./triggers/externalSource\";\nimport type {\n EventSpecification,\n Trigger,\n TriggerContext,\n TriggerPreprocessContext,\n} from \"./types\";\n\nconst registerSourceEvent: EventSpecification<RegisterSourceEvent> = {\n name: REGISTER_SOURCE_EVENT,\n title: \"Register Source\",\n source: \"internal\",\n icon: \"register-source\",\n parsePayload: RegisterSourceEventSchema.parse,\n};\n\nexport type TriggerClientOptions = {\n id: string;\n url?: string;\n apiKey?: string;\n apiUrl?: string;\n logLevel?: LogLevel;\n};\n\nexport type ListenOptions = {\n url: string;\n};\n\nexport class TriggerClient {\n #options: TriggerClientOptions;\n #registeredJobs: Record<string, Job<Trigger<EventSpecification<any>>, any>> =\n {};\n #registeredSources: Record<string, SourceMetadata> = {};\n #registeredHttpSourceHandlers: Record<\n string,\n (\n source: HandleTriggerSource,\n request: Request\n ) => Promise<{\n events: Array<SendEvent>;\n response?: NormalizedResponse;\n } | void>\n > = {};\n #registeredDynamicTriggers: Record<\n string,\n DynamicTrigger<EventSpecification<any>, ExternalSource<any, any, any>>\n > = {};\n #jobMetadataByDynamicTriggers: Record<\n string,\n Array<{ id: string; version: string }>\n > = {};\n #registeredSchedules: Record<string, Array<{ id: string; version: string }>> =\n {};\n\n #client: ApiClient;\n #logger: Logger;\n private _url: string;\n id: string;\n path?: string;\n\n constructor(options: TriggerClientOptions) {\n this.id = options.id;\n this._url = buildClientUrl(options.url);\n this.#options = options;\n this.#client = new ApiClient(this.#options);\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n get url() {\n return `${this._url}${\n this.path ? `${this.path.startsWith(\"/\") ? \"\" : \"/\"}${this.path}` : \"\"\n }`;\n }\n\n async handleRequest(request: Request): Promise<NormalizedResponse> {\n this.#logger.debug(\"handling request\", {\n url: request.url,\n headers: Object.fromEntries(request.headers.entries()),\n method: request.method,\n });\n\n const apiKey = request.headers.get(\"x-trigger-api-key\");\n\n const authorization = this.authorized(apiKey);\n\n switch (authorization) {\n case \"authorized\": {\n break;\n }\n case \"missing-client\": {\n return {\n status: 401,\n body: {\n message: \"Unauthorized: client missing apiKey\",\n },\n };\n }\n case \"missing-header\": {\n return {\n status: 401,\n body: {\n message: \"Unauthorized: missing x-trigger-api-key header\",\n },\n };\n }\n case \"unauthorized\": {\n return {\n status: 401,\n body: {\n message: `Forbidden: client apiKey mismatch: Expected ${\n this.#options.apiKey\n }, got ${apiKey}`,\n },\n };\n }\n }\n\n if (request.method !== \"POST\") {\n return {\n status: 405,\n body: {\n message: \"Method not allowed (only POST is allowed)\",\n },\n };\n }\n\n const action = request.headers.get(\"x-trigger-action\");\n\n if (!action) {\n return {\n status: 400,\n body: {\n message: \"Missing x-trigger-action header\",\n },\n };\n }\n\n switch (action) {\n case \"PING\": {\n const endpointId = request.headers.get(\"x-trigger-endpoint-id\");\n\n if (!endpointId) {\n return {\n status: 200,\n body: {\n ok: false,\n message: \"Missing endpoint ID\",\n },\n };\n }\n\n if (this.id !== endpointId) {\n return {\n status: 200,\n body: {\n ok: false,\n message: `Endpoint ID mismatch error. Expected ${this.id}, got ${endpointId}`,\n },\n };\n }\n\n return {\n status: 200,\n body: {\n ok: true,\n },\n };\n }\n case \"INDEX_ENDPOINT\": {\n // if the x-trigger-job-id header is set, we return the job with that id\n const jobId = request.headers.get(\"x-trigger-job-id\");\n\n if (jobId) {\n const job = this.#registeredJobs[jobId];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n return {\n status: 200,\n body: job.toJSON(),\n };\n }\n\n const body: IndexEndpointResponse = {\n jobs: Object.values(this.#registeredJobs).map((job) => job.toJSON()),\n sources: Object.values(this.#registeredSources),\n dynamicTriggers: Object.values(this.#registeredDynamicTriggers).map(\n (trigger) => ({\n id: trigger.id,\n jobs: this.#jobMetadataByDynamicTriggers[trigger.id] ?? [],\n })\n ),\n dynamicSchedules: Object.entries(this.#registeredSchedules).map(\n ([id, jobs]) => ({\n id,\n jobs,\n })\n ),\n };\n\n // if the x-trigger-job-id header is not set, we return all jobs\n return {\n status: 200,\n body,\n };\n }\n case \"INITIALIZE_TRIGGER\": {\n const json = await request.json();\n const body = InitializeTriggerBodySchema.safeParse(json);\n\n if (!body.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid trigger body\",\n },\n };\n }\n\n const dynamicTrigger = this.#registeredDynamicTriggers[body.data.id];\n\n if (!dynamicTrigger) {\n return {\n status: 404,\n body: {\n message: \"Dynamic trigger not found\",\n },\n };\n }\n\n return {\n status: 200,\n body: dynamicTrigger.registeredTriggerForParams(body.data.params),\n };\n }\n case \"EXECUTE_JOB\": {\n const json = await request.json();\n const execution = RunJobBodySchema.safeParse(json);\n\n if (!execution.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid execution\",\n },\n };\n }\n\n const job = this.#registeredJobs[execution.data.job.id];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n const results = await this.#executeJob(execution.data, job);\n\n return {\n status: 200,\n body: results,\n };\n }\n case \"PREPROCESS_RUN\": {\n const json = await request.json();\n const body = PreprocessRunBodySchema.safeParse(json);\n\n if (!body.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid body\",\n },\n };\n }\n\n const job = this.#registeredJobs[body.data.job.id];\n\n if (!job) {\n return {\n status: 404,\n body: {\n message: \"Job not found\",\n },\n };\n }\n\n const results = await this.#preprocessRun(body.data, job);\n\n return {\n status: 200,\n body: {\n abort: results.abort,\n properties: results.properties,\n },\n };\n }\n case \"DELIVER_HTTP_SOURCE_REQUEST\": {\n const headers = HttpSourceRequestHeadersSchema.safeParse(\n Object.fromEntries(request.headers.entries())\n );\n\n if (!headers.success) {\n return {\n status: 400,\n body: {\n message: \"Invalid headers\",\n },\n };\n }\n\n const sourceRequest = new Request(headers.data[\"x-ts-http-url\"], {\n method: headers.data[\"x-ts-http-method\"],\n headers: headers.data[\"x-ts-http-headers\"],\n body:\n headers.data[\"x-ts-http-method\"] !== \"GET\"\n ? request.body\n : undefined,\n });\n\n const key = headers.data[\"x-ts-key\"];\n const dynamicId = headers.data[\"x-ts-dynamic-id\"];\n const secret = headers.data[\"x-ts-secret\"];\n const params = headers.data[\"x-ts-params\"];\n const data = headers.data[\"x-ts-data\"];\n\n const source = {\n key,\n dynamicId,\n secret,\n params,\n data,\n };\n\n const { response, events } = await this.#handleHttpSourceRequest(\n source,\n sourceRequest\n );\n\n return {\n status: 200,\n body: {\n events,\n response,\n },\n };\n }\n }\n\n return {\n status: 405,\n body: {\n message: \"Method not allowed\",\n },\n };\n }\n\n attach(job: Job<Trigger<any>, any>): void {\n if (!job.enabled) {\n return;\n }\n\n this.#registeredJobs[job.id] = job;\n\n job.trigger.attachToJob(this, job);\n }\n\n attachDynamicTrigger(trigger: DynamicTrigger<any, any>): void {\n this.#registeredDynamicTriggers[trigger.id] = trigger;\n\n new Job(this, {\n id: `register-dynamic-trigger-${trigger.id}`,\n name: `Register dynamic trigger ${trigger.id}`,\n version: trigger.source.version,\n trigger: new EventTrigger({\n event: registerSourceEvent,\n filter: { dynamicTriggerId: [trigger.id] },\n }),\n integrations: {\n integration: trigger.source.integration,\n },\n run: async (event, io, ctx) => {\n const updates = await trigger.source.register(\n event.source.params,\n event,\n io,\n ctx\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await io.updateSource(\"update-source\", {\n key: event.source.key,\n ...updates,\n });\n },\n // @ts-ignore\n __internal: true,\n });\n }\n\n attachJobToDynamicTrigger(\n job: Job<Trigger<any>, any>,\n trigger: DynamicTrigger<any, any>\n ): void {\n const jobs = this.#jobMetadataByDynamicTriggers[trigger.id] ?? [];\n\n jobs.push({ id: job.id, version: job.version });\n\n this.#jobMetadataByDynamicTriggers[trigger.id] = jobs;\n }\n\n attachSource(options: {\n key: string;\n source: ExternalSource<any, any>;\n event: EventSpecification<any>;\n params: any;\n }): void {\n this.#registeredHttpSourceHandlers[options.key] = async (s, r) => {\n return await options.source.handle(s, r, this.#logger);\n };\n\n let registeredSource = this.#registeredSources[options.key];\n\n if (!registeredSource) {\n registeredSource = {\n channel: options.source.channel,\n key: options.key,\n params: options.params,\n events: [],\n integration: {\n id: options.source.integration.id,\n metadata: options.source.integration.metadata,\n authSource: options.source.integration.client.usesLocalAuth\n ? \"LOCAL\"\n : \"HOSTED\",\n },\n };\n }\n\n registeredSource.events = Array.from(\n new Set([...registeredSource.events, options.event.name])\n );\n\n this.#registeredSources[options.key] = registeredSource;\n\n new Job(this, {\n id: options.key,\n name: options.key,\n version: options.source.version,\n trigger: new EventTrigger({\n event: registerSourceEvent,\n filter: { source: { key: [options.key] } },\n }),\n integrations: {\n integration: options.source.integration,\n },\n queue: {\n name: options.key,\n maxConcurrent: 1,\n },\n startPosition: \"initial\",\n run: async (event, io, ctx) => {\n const updates = await options.source.register(\n options.params,\n event,\n io,\n ctx\n );\n\n if (!updates) {\n // TODO: do something here?\n return;\n }\n\n return await io.updateSource(\"update-source\", {\n key: options.key,\n ...updates,\n });\n },\n // @ts-ignore\n __internal: true,\n });\n }\n\n attachDynamicSchedule(key: string, job: Job<Trigger<any>, any>): void {\n const jobs = this.#registeredSchedules[key] ?? [];\n\n jobs.push({ id: job.id, version: job.version });\n\n this.#registeredSchedules[key] = jobs;\n }\n\n async registerTrigger(id: string, key: string, options: RegisterTriggerBody) {\n return this.#client.registerTrigger(this.id, id, key, options);\n }\n\n async getAuth(id: string) {\n return this.#client.getAuth(this.id, id);\n }\n\n async sendEvent(event: SendEvent, options?: SendEventOptions) {\n return this.#client.sendEvent(event, options);\n }\n\n async registerSchedule(id: string, key: string, schedule: ScheduleMetadata) {\n return this.#client.registerSchedule(this.id, id, key, schedule);\n }\n\n async unregisterSchedule(id: string, key: string) {\n return this.#client.unregisterSchedule(this.id, id, key);\n }\n\n authorized(\n apiKey?: string | null\n ): \"authorized\" | \"unauthorized\" | \"missing-client\" | \"missing-header\" {\n if (typeof apiKey !== \"string\") {\n return \"missing-header\";\n }\n\n const localApiKey = this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n\n if (!localApiKey) {\n return \"missing-client\";\n }\n\n return apiKey === localApiKey ? \"authorized\" : \"unauthorized\";\n }\n\n apiKey() {\n return this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n }\n\n async #preprocessRun(\n body: PreprocessRunBody,\n job: Job<Trigger<EventSpecification<any>>, any>\n ) {\n const context = this.#createPreprocessRunContext(body);\n\n const parsedPayload = job.trigger.event.parsePayload(\n body.event.payload ?? {}\n );\n\n const properties = job.trigger.event.runProperties?.(parsedPayload) ?? [];\n\n return {\n abort: false,\n properties,\n };\n }\n\n async #executeJob(\n body: RunJobBody,\n job: Job<Trigger<any>, any>\n ): Promise<RunJobResponse> {\n this.#logger.debug(\"executing job\", { execution: body, job: job.toJSON() });\n\n const context = this.#createRunContext(body);\n\n const io = new IO({\n id: body.run.id,\n cachedTasks: body.tasks,\n apiClient: this.#client,\n logger: this.#logger,\n client: this,\n context,\n });\n\n const ioWithConnections = createIOWithIntegrations(\n io,\n body.connections,\n job.options.integrations\n );\n\n try {\n const output = await job.options.run(\n job.trigger.event.parsePayload(body.event.payload ?? {}),\n ioWithConnections,\n context\n );\n\n return { status: \"SUCCESS\", output };\n } catch (error) {\n if (error instanceof ResumeWithTaskError) {\n return { status: \"RESUME_WITH_TASK\", task: error.task };\n }\n\n if (error instanceof RetryWithTaskError) {\n return {\n status: \"RETRY_WITH_TASK\",\n task: error.task,\n error: error.cause,\n retryAt: error.retryAt,\n };\n }\n\n if (error instanceof RetryWithTaskError) {\n const errorWithStack = ErrorWithStackSchema.safeParse(error.cause);\n\n if (errorWithStack.success) {\n return {\n status: \"ERROR\",\n error: errorWithStack.data,\n task: error.task,\n };\n }\n\n return {\n status: \"ERROR\",\n error: { message: \"Unknown error\" },\n task: error.task,\n };\n }\n\n const errorWithStack = ErrorWithStackSchema.safeParse(error);\n\n if (errorWithStack.success) {\n return { status: \"ERROR\", error: errorWithStack.data };\n }\n\n return {\n status: \"ERROR\",\n error: { message: \"Unknown error\" },\n };\n }\n }\n\n #createRunContext(execution: RunJobBody): TriggerContext {\n const { event, organization, environment, job, run, source } = execution;\n\n return {\n event: {\n id: event.id,\n name: event.name,\n context: event.context,\n timestamp: event.timestamp,\n },\n organization,\n environment,\n job,\n run,\n account: execution.account,\n source,\n };\n }\n\n #createPreprocessRunContext(\n body: PreprocessRunBody\n ): TriggerPreprocessContext {\n const { event, organization, environment, job, run, account } = body;\n\n return {\n event: {\n id: event.id,\n name: event.name,\n context: event.context,\n timestamp: event.timestamp,\n },\n organization,\n environment,\n job,\n run,\n account,\n };\n }\n\n async #handleHttpSourceRequest(\n source: {\n key: string;\n dynamicId?: string;\n secret: string;\n data: any;\n params: any;\n },\n sourceRequest: Request\n ): Promise<{ response: NormalizedResponse; events: SendEvent[] }> {\n this.#logger.debug(\"Handling HTTP source request\", {\n source,\n });\n\n if (source.dynamicId) {\n const dynamicTrigger = this.#registeredDynamicTriggers[source.dynamicId];\n\n if (!dynamicTrigger) {\n this.#logger.debug(\"No dynamic trigger registered for HTTP source\", {\n source,\n });\n\n return {\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n events: [],\n };\n }\n\n const results = await dynamicTrigger.source.handle(\n source,\n sourceRequest,\n this.#logger\n );\n\n if (!results) {\n return {\n events: [],\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n return {\n events: results.events,\n response: results.response ?? {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n const handler = this.#registeredHttpSourceHandlers[source.key];\n\n if (!handler) {\n this.#logger.debug(\"No handler registered for HTTP source\", {\n source,\n });\n\n return {\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n events: [],\n };\n }\n\n const results = await handler(source, sourceRequest);\n\n if (!results) {\n return {\n events: [],\n response: {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n\n return {\n events: results.events,\n response: results.response ?? {\n status: 200,\n body: {\n ok: true,\n },\n },\n };\n }\n}\n\nfunction buildClientUrl(url?: string): string {\n if (!url) {\n // Try and get the host from the environment\n const host =\n process.env.TRIGGER_CLIENT_HOST ??\n process.env.HOST ??\n process.env.HOSTNAME ??\n process.env.NOW_URL ??\n process.env.VERCEL_URL;\n\n // If the host is set, we return it + the path\n if (host) {\n return \"https://\" + host;\n }\n\n // If we can't get the host, we throw an error\n throw new Error(\n \"Could not determine the url for this TriggerClient. Please set the TRIGGER_CLIENT_HOST environment variable or pass in the `url` option to the TriggerClient constructor.\"\n );\n }\n\n // Check to see if url has the protocol, and if it doesn't, add it\n if (!url.startsWith(\"http\")) {\n return \"https://\" + url;\n }\n\n return url;\n}\n","import {\n ConnectionAuth,\n IntegrationMetadata,\n RunTaskOptions,\n ServerTask,\n} from \"@trigger.dev/internal\";\nimport { IO } from \"./io\";\n\nexport type ClientFactory<TClient> = (auth: ConnectionAuth) => TClient;\n\nexport interface TriggerIntegration<\n TIntegrationClient extends IntegrationClient<any, any> = IntegrationClient<\n any,\n any\n >\n> {\n client: TIntegrationClient;\n id: string;\n metadata: IntegrationMetadata;\n}\n\nexport type IntegrationClient<\n TClient,\n TTasks extends Record<string, AuthenticatedTask<TClient, any, any, any>>\n> =\n | {\n usesLocalAuth: true;\n client: TClient;\n tasks?: TTasks;\n auth: any;\n }\n | {\n usesLocalAuth: false;\n clientFactory: ClientFactory<TClient>;\n tasks?: TTasks;\n };\n\nexport type AuthenticatedTask<\n TClient,\n TParams,\n TResult,\n TAuth = ConnectionAuth\n> = {\n run: (\n params: TParams,\n client: TClient,\n task: ServerTask,\n io: IO,\n auth: TAuth\n ) => Promise<TResult>;\n init: (params: TParams) => RunTaskOptions;\n onError?: (\n error: unknown,\n task: ServerTask\n ) => { retryAt: Date; error?: Error } | undefined | void;\n};\n\nexport function authenticatedTask<TClient, TParams, TResult>(options: {\n run: (\n params: TParams,\n client: TClient,\n task: ServerTask,\n io: IO\n ) => Promise<TResult>;\n init: (params: TParams) => RunTaskOptions;\n}): AuthenticatedTask<TClient, TParams, TResult> {\n return options;\n}\n\ntype ExtractRunFunction<T> = T extends AuthenticatedTask<\n any,\n infer TParams,\n infer TResult,\n infer TAuth\n>\n ? (key: string, params: TParams) => Promise<TResult>\n : never;\n\ntype ExtractTasks<\n TTasks extends Record<string, AuthenticatedTask<any, any, any, any>>\n> = {\n [key in keyof TTasks]: ExtractRunFunction<TTasks[key]>;\n};\n\ntype ExtractIntegrationClientClient<\n TIntegrationClient extends IntegrationClient<any, any>\n> = TIntegrationClient extends {\n usesLocalAuth: true;\n client: infer TClient;\n}\n ? { client: TClient }\n : TIntegrationClient extends {\n usesLocalAuth: false;\n clientFactory: ClientFactory<infer TClient>;\n }\n ? { client: TClient }\n : never;\n\ntype ExtractIntegrationClient<\n TIntegrationClient extends IntegrationClient<any, any>\n> = ExtractIntegrationClientClient<TIntegrationClient> &\n ExtractTasks<TIntegrationClient[\"tasks\"]>;\n\ntype ExtractIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n> = {\n [key in keyof TIntegrations]: ExtractIntegrationClient<\n TIntegrations[key][\"client\"]\n >;\n};\n\nexport type IOWithIntegrations<\n TIntegrations extends Record<\n string,\n TriggerIntegration<IntegrationClient<any, any>>\n >\n> = IO & ExtractIntegrations<TIntegrations>;\n","import { z } from \"zod\";\n\nimport {\n DisplayProperty,\n EventFilter,\n HandleTriggerSource,\n Logger,\n NormalizedResponse,\n RegisterSourceEvent,\n SendEvent,\n TriggerMetadata,\n UpdateTriggerSourceBody,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport {\n IOWithIntegrations,\n IntegrationClient,\n TriggerIntegration,\n} from \"../integrations\";\nimport { IO } from \"../io\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport type { EventSpecification, Trigger, TriggerContext } from \"../types\";\nimport { slugifyId } from \"../utils\";\n\nexport type HttpSourceEvent = {\n url: string;\n method: string;\n headers: Record<string, string>;\n rawBody?: Buffer | null;\n};\n\ntype SmtpSourceEvent = {\n from: string;\n to: string;\n subject: string;\n body: string;\n};\n\ntype SqsSourceEvent = {\n body: string;\n};\n\ntype ExternalSourceChannelMap = {\n HTTP: {\n event: Request;\n register: {\n url: string;\n };\n };\n SMTP: {\n event: SmtpSourceEvent;\n register: {};\n };\n SQS: {\n event: SqsSourceEvent;\n register: {};\n };\n};\n\ntype ChannelNames = keyof ExternalSourceChannelMap;\n\ntype RegisterFunctionEvent<\n TChannel extends ChannelNames,\n TParams extends any\n> = {\n events: Array<string>;\n missingEvents: Array<string>;\n orphanedEvents: Array<string>;\n source: {\n active: boolean;\n data?: any;\n secret: string;\n } & ExternalSourceChannelMap[TChannel][\"register\"];\n params: TParams;\n};\n\ntype RegisterFunction<\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any,\n TChannel extends ChannelNames\n> = (\n event: RegisterFunctionEvent<TChannel, TParams>,\n io: IOWithIntegrations<{ integration: TIntegration }>,\n ctx: TriggerContext\n) => Promise<UpdateTriggerSourceBody | undefined>;\n\nexport type HandlerEvent<\n TChannel extends ChannelNames,\n TParams extends any = any\n> = {\n rawEvent: ExternalSourceChannelMap[TChannel][\"event\"];\n source: HandleTriggerSource & { params: TParams };\n};\n\ntype HandlerFunction<TChannel extends ChannelNames, TParams extends any> = (\n event: HandlerEvent<TChannel, TParams>,\n logger: Logger\n) => Promise<{ events: SendEvent[]; response?: NormalizedResponse } | void>;\n\ntype KeyFunction<TParams extends any> = (params: TParams) => string;\ntype FilterFunction<TParams extends any> = (params: TParams) => EventFilter;\n\ntype ExternalSourceOptions<\n TChannel extends ChannelNames,\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any\n> = {\n id: string;\n version: string;\n schema: z.Schema<TParams>;\n integration: TIntegration;\n register: RegisterFunction<TIntegration, TParams, TChannel>;\n filter: FilterFunction<TParams>;\n handler: HandlerFunction<TChannel, TParams>;\n key: KeyFunction<TParams>;\n properties?: (params: TParams) => DisplayProperty[];\n};\n\nexport class ExternalSource<\n TIntegration extends TriggerIntegration<IntegrationClient<any, any>>,\n TParams extends any,\n TChannel extends ChannelNames = ChannelNames\n> {\n channel: TChannel;\n\n constructor(\n channel: TChannel,\n private options: ExternalSourceOptions<TChannel, TIntegration, TParams>\n ) {\n this.channel = channel;\n }\n\n async handle(\n source: HandleTriggerSource,\n rawEvent: ExternalSourceChannelMap[TChannel][\"event\"],\n logger: Logger\n ) {\n return this.options.handler(\n {\n source: { ...source, params: source.params as TParams },\n rawEvent,\n },\n logger\n );\n }\n\n filter(params: TParams): EventFilter {\n return this.options.filter(params);\n }\n\n properties(params: TParams): DisplayProperty[] {\n return this.options.properties?.(params) ?? [];\n }\n\n async register(\n params: TParams,\n registerEvent: RegisterSourceEvent,\n io: IO,\n ctx: TriggerContext\n ) {\n const { result: event, ommited: source } = omit(registerEvent, \"source\");\n const { result: sourceWithoutChannel, ommited: channel } = omit(\n source,\n \"channel\"\n );\n const { result: channelWithoutType } = omit(channel, \"type\");\n\n const updates = await this.options.register(\n {\n ...event,\n source: { ...sourceWithoutChannel, ...channelWithoutType },\n params,\n },\n io as IOWithIntegrations<{ integration: TIntegration }>,\n ctx\n );\n\n return updates;\n }\n\n key(params: TParams): string {\n const parts = [this.options.id, this.channel];\n\n parts.push(this.options.key(params));\n parts.push(this.integration.id);\n\n return parts.join(\"-\");\n }\n\n get integration() {\n return this.options.integration;\n }\n\n get integrationConfig() {\n return {\n id: this.integration.id,\n metadata: this.integration.metadata,\n };\n }\n\n get id() {\n return this.options.id;\n }\n\n get version() {\n return this.options.version;\n }\n}\n\nexport type ExternalSourceParams<\n TExternalSource extends ExternalSource<any, any, any>\n> = TExternalSource extends ExternalSource<any, infer TParams, any>\n ? TParams\n : never;\n\nexport type ExternalSourceTriggerOptions<\n TEventSpecification extends EventSpecification<any>,\n TEventSource extends ExternalSource<any, any, any>\n> = {\n event: TEventSpecification;\n source: TEventSource;\n params: ExternalSourceParams<TEventSource>;\n};\n\nexport class ExternalSourceTrigger<\n TEventSpecification extends EventSpecification<any>,\n TEventSource extends ExternalSource<any, any, any>\n> implements Trigger<TEventSpecification>\n{\n constructor(\n private options: ExternalSourceTriggerOptions<\n TEventSpecification,\n TEventSource\n >\n ) {}\n\n get event() {\n return this.options.event;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: \"External Source\",\n rule: {\n event: this.event.name,\n payload: deepMergeFilters(\n this.options.source.filter(this.options.params),\n this.event.filter ?? {}\n ),\n source: this.event.source,\n },\n properties: this.options.source.properties(this.options.params),\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpecification>, any>\n ) {\n triggerClient.attachSource({\n key: slugifyId(this.options.source.key(this.options.params)),\n source: this.options.source,\n event: this.options.event,\n params: this.options.params,\n });\n }\n\n get preprocessRuns() {\n return true;\n }\n}\n\nexport function omit<T extends Record<string, unknown>, K extends keyof T>(\n obj: T,\n key: K\n): { result: Omit<T, K>; ommited: T[K] } {\n const result: any = {};\n\n for (const k of Object.keys(obj)) {\n if (k === key) continue;\n\n result[k] = obj[k];\n }\n\n return { result, ommited: obj[key] };\n}\n","import {\n RegisterSourceEvent,\n RegisterTriggerBody,\n TriggerMetadata,\n deepMergeFilters,\n} from \"@trigger.dev/internal\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\nimport { slugifyId } from \"../utils\";\nimport { ExternalSource, ExternalSourceParams } from \"./externalSource\";\n\nexport type DynamicTriggerOptions<\n TEventSpec extends EventSpecification<any>,\n TExternalSource extends ExternalSource<any, any, any>\n> = {\n id: string;\n event: TEventSpec;\n source: TExternalSource;\n};\n\nexport class DynamicTrigger<\n TEventSpec extends EventSpecification<any>,\n TExternalSource extends ExternalSource<any, any, any>\n> implements Trigger<TEventSpec>\n{\n #client: TriggerClient;\n #options: DynamicTriggerOptions<TEventSpec, TExternalSource>;\n source: TExternalSource;\n\n constructor(\n client: TriggerClient,\n options: DynamicTriggerOptions<TEventSpec, TExternalSource>\n ) {\n this.#client = client;\n this.#options = options;\n this.source = options.source;\n\n client.attachDynamicTrigger(this);\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"dynamic\",\n id: this.#options.id,\n };\n }\n\n get id() {\n return this.#options.id;\n }\n\n get event() {\n return this.#options.event;\n }\n\n registeredTriggerForParams(\n params: ExternalSourceParams<TExternalSource>\n ): RegisterTriggerBody {\n return {\n rule: {\n event: this.event.name,\n source: this.event.source,\n payload: deepMergeFilters(\n this.source.filter(params),\n this.event.filter ?? {}\n ),\n },\n source: {\n key: slugifyId(this.source.key(params)),\n channel: this.source.channel,\n params,\n events: [this.event.name],\n integration: {\n id: this.source.integration.id,\n metadata: this.source.integration.metadata,\n authSource: this.source.integration.client.usesLocalAuth\n ? \"LOCAL\"\n : \"HOSTED\",\n },\n },\n };\n }\n\n async register(\n key: string,\n params: ExternalSourceParams<TExternalSource>\n ): Promise<RegisterSourceEvent> {\n return this.#client.registerTrigger(\n this.id,\n key,\n this.registeredTriggerForParams(params)\n );\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<TEventSpec>, any>\n ): void {\n triggerClient.attachJobToDynamicTrigger(job, this);\n }\n\n get preprocessRuns() {\n return true;\n }\n}\n","import {\n CronOptions,\n EventExample,\n IntervalOptions,\n ScheduleMetadata,\n ScheduledPayload,\n ScheduledPayloadSchema,\n TriggerMetadata,\n currentDate,\n} from \"@trigger.dev/internal\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\ntype ScheduledEventSpecification = EventSpecification<ScheduledPayload>;\n\nconst examples = [\n {\n id: \"now\",\n name: \"Now\",\n icon: \"clock\",\n payload: {\n ts: currentDate.marker,\n lastTimestamp: currentDate.marker,\n },\n },\n];\n\nexport class IntervalTrigger implements Trigger<ScheduledEventSpecification> {\n constructor(private options: IntervalOptions) {}\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-interval\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n properties: [\n {\n label: \"Interval\",\n text: `${this.options.seconds}s`,\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"scheduled\",\n schedule: {\n type: \"interval\",\n options: {\n seconds: this.options.seconds,\n },\n },\n };\n }\n}\n\nexport function intervalTrigger(options: IntervalOptions) {\n return new IntervalTrigger(options);\n}\n\nexport class CronTrigger implements Trigger<ScheduledEventSpecification> {\n constructor(private options: CronOptions) {}\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Cron Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-cron\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n properties: [\n {\n label: \"Expression\",\n text: this.options.cron,\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"scheduled\",\n schedule: {\n type: \"cron\",\n options: {\n cron: this.options.cron,\n },\n },\n };\n }\n}\n\nexport function cronTrigger(options: CronOptions) {\n return new CronTrigger(options);\n}\n\nexport type DynamicIntervalOptions = { id: string };\n\nexport class DynamicSchedule implements Trigger<ScheduledEventSpecification> {\n constructor(\n private client: TriggerClient,\n private options: DynamicIntervalOptions\n ) {}\n\n get id() {\n return this.options.id;\n }\n\n get event() {\n return {\n name: \"trigger.scheduled\",\n title: \"Dynamic Schedule\",\n source: \"trigger.dev\",\n icon: \"schedule-dynamic\",\n examples,\n parsePayload: ScheduledPayloadSchema.parse,\n };\n }\n\n async register(key: string, metadata: ScheduleMetadata) {\n return this.client.registerSchedule(this.id, key, metadata);\n }\n\n async unregister(key: string) {\n return this.client.unregisterSchedule(this.id, key);\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<ScheduledEventSpecification>, any>\n ): void {\n triggerClient.attachDynamicSchedule(this.options.id, job);\n }\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"dynamic\",\n id: this.options.id,\n };\n }\n}\n","import {\n MISSING_CONNECTION_NOTIFICATION,\n MISSING_CONNECTION_RESOLVED_NOTIFICATION,\n MissingConnectionNotificationPayload,\n MissingConnectionNotificationPayloadSchema,\n MissingConnectionResolvedNotificationPayload,\n MissingConnectionResolvedNotificationPayloadSchema,\n TriggerMetadata,\n} from \"@trigger.dev/internal\";\nimport { TriggerIntegration } from \"../integrations\";\nimport { Job } from \"../job\";\nimport { TriggerClient } from \"../triggerClient\";\nimport { EventSpecification, Trigger } from \"../types\";\n\nexport function missingConnectionNotification(\n integrations: Array<TriggerIntegration>\n) {\n return new MissingConnectionNotification({ integrations });\n}\n\nexport function missingConnectionResolvedNotification(\n integrations: Array<TriggerIntegration>\n) {\n return new MissingConnectionResolvedNotification({ integrations });\n}\n\ntype MissingConnectionNotificationSpecification =\n EventSpecification<MissingConnectionNotificationPayload>;\n\ntype MissingConnectionNotificationOptions = {\n integrations: Array<TriggerIntegration>;\n};\n\nexport class MissingConnectionNotification\n implements Trigger<MissingConnectionNotificationSpecification>\n{\n constructor(private options: MissingConnectionNotificationOptions) {}\n\n get event() {\n return {\n name: MISSING_CONNECTION_NOTIFICATION,\n title: \"Missing Connection Notification\",\n source: \"trigger.dev\",\n icon: \"connection-alert\",\n parsePayload: MissingConnectionNotificationPayloadSchema.parse,\n properties: [\n {\n label: \"Integrations\",\n text: this.options.integrations.map((i) => i.id).join(\", \"),\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<MissingConnectionNotificationSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.event.title,\n rule: {\n event: this.event.name,\n source: \"trigger.dev\",\n payload: {\n client: {\n id: this.options.integrations.map((i) => i.id),\n },\n },\n },\n };\n }\n}\n\ntype MissingConnectionResolvedNotificationSpecification =\n EventSpecification<MissingConnectionResolvedNotificationPayload>;\n\nexport class MissingConnectionResolvedNotification\n implements Trigger<MissingConnectionResolvedNotificationSpecification>\n{\n constructor(private options: MissingConnectionNotificationOptions) {}\n\n get event() {\n return {\n name: MISSING_CONNECTION_RESOLVED_NOTIFICATION,\n title: \"Missing Connection Resolved Notification\",\n source: \"trigger.dev\",\n icon: \"connection-alert\",\n parsePayload: MissingConnectionResolvedNotificationPayloadSchema.parse,\n properties: [\n {\n label: \"Integrations\",\n text: this.options.integrations.map((i) => i.id).join(\", \"),\n },\n ],\n };\n }\n\n attachToJob(\n triggerClient: TriggerClient,\n job: Job<Trigger<MissingConnectionResolvedNotificationSpecification>, any>\n ): void {}\n\n get preprocessRuns() {\n return false;\n }\n\n toJSON(): TriggerMetadata {\n return {\n type: \"static\",\n title: this.event.title,\n rule: {\n event: this.event.name,\n source: \"trigger.dev\",\n payload: {\n client: {\n id: this.options.integrations.map((i) => i.id),\n },\n },\n },\n };\n }\n}\n"],"mappings":"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","names":["slugifyId","input","replaceSpacesWithDash","toLowerCase","replace","removeNonUrlSafeChars","Job","constructor","client","options","attach","id","slugifyId","enabled","name","trigger","version","integrations","Object","keys","reduce","acc","key","integration","metadata","authSource","usesLocalAuth","toJSON","internal","__internal","event","queue","startPosition","preprocessRuns","match","Error","logLevels","Logger","constructor","name","level","filteredKeys","jsonReplacer","indexOf","process","env","TRIGGER_LOG_LEVEL","filter","keys","log","args","console","formattedDateTime","error","warn","info","debug","message","structuredLog","timestamp","Date","structureArgs","safeJsonClone","JSON","stringify","createReplacer","replacer","key","value","toString","bigIntReplacer","_key","obj","parse","e","date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","formattedHours","formattedMinutes","formattedSeconds","formattedMilliseconds","length","filterKeys","Array","isArray","map","item","filteredObj","Object","entries","includes","import_zod","ErrorWithStackSchema","z","object","message","string","name","optional","stack","import_zod","EventMatcherSchema","z","union","array","string","number","boolean","EventFilterSchema","lazy","record","EventRuleSchema","object","event","source","payload","optional","context","import_zod","ConnectionAuthSchema","z","object","type","enum","accessToken","string","scopes","array","optional","additionalFields","record","IntegrationMetadataSchema","id","name","instructions","IntegrationConfigSchema","metadata","authSource","import_zod","LiteralSchema","z","union","string","number","boolean","null","DeserializedJsonSchema","lazy","array","record","SerializableSchema","date","undefined","symbol","SerializableJsonSchema","import_zod","DisplayPropertySchema","z","object","label","string","text","url","optional","DisplayPropertiesSchema","array","StyleSchema","style","enum","variant","import_zod","ScheduledPayloadSchema","z","object","ts","coerce","date","lastTimestamp","optional","IntervalOptionsSchema","seconds","number","int","positive","min","max","CronOptionsSchema","cron","string","CronMetadataSchema","type","literal","options","metadata","any","IntervalMetadataSchema","ScheduleMetadataSchema","discriminatedUnion","RegisterDynamicSchedulePayloadSchema","id","jobs","array","version","import_zod","TaskStatusSchema","z","enum","TaskSchema","object","id","string","name","icon","optional","nullable","noop","boolean","startedAt","coerce","date","completedAt","delayUntil","status","description","properties","array","DisplayPropertySchema","params","DeserializedJsonSchema","output","error","parentId","style","StyleSchema","operation","ServerTaskSchema","extend","idempotencyKey","attempts","number","CachedTaskSchema","default","import_zod","EventExampleSchema","z","object","id","string","icon","optional","name","payload","any","EventSpecificationSchema","title","source","filter","EventFilterSchema","properties","array","DisplayPropertySchema","schema","examples","DynamicTriggerMetadataSchema","type","literal","StaticTriggerMetadataSchema","rule","EventRuleSchema","ScheduledTriggerMetadataSchema","schedule","ScheduleMetadataSchema","TriggerMetadataSchema","discriminatedUnion","UpdateTriggerSourceBodySchema","z","object","registeredEvents","array","string","secret","optional","data","SerializableJsonSchema","HttpEventSourceSchema","extend","id","active","boolean","url","RegisterHTTPTriggerSourceBodySchema","type","literal","RegisterSMTPTriggerSourceBodySchema","RegisterSQSTriggerSourceBodySchema","RegisterSourceChannelBodySchema","discriminatedUnion","REGISTER_SOURCE_EVENT","RegisterTriggerSourceSchema","key","params","any","DeserializedJsonSchema","channel","clientId","RegisterSourceEventSchema","source","events","missingEvents","orphanedEvents","dynamicTriggerId","TriggerSourceSchema","HandleTriggerSourceSchema","HttpSourceRequestSchema","method","headers","record","rawBody","instanceof","Buffer","nullable","HttpSourceRequestHeadersSchema","transform","s","JSON","parse","PongSuccessResponseSchema","ok","PongErrorResponseSchema","error","PongResponseSchema","QueueOptionsSchema","name","maxConcurrent","number","JobMetadataSchema","version","event","EventSpecificationSchema","trigger","TriggerMetadataSchema","integrations","IntegrationConfigSchema","internal","default","queue","union","startPosition","enum","enabled","preprocessRuns","SourceMetadataSchema","integration","DynamicTriggerEndpointMetadataSchema","jobs","pick","IndexEndpointResponseSchema","sources","dynamicTriggers","dynamicSchedules","RegisterDynamicSchedulePayloadSchema","RawEventSchema","ulid","payload","context","timestamp","datetime","ApiEventLogSchema","coerce","date","deliverAt","deliveredAt","SendEventOptionsSchema","deliverAfter","int","accountId","SendEventBodySchema","options","DeliverEventResponseSchema","RuntimeEnvironmentTypeSchema","RunSourceContextSchema","metadata","RunJobBodySchema","job","run","isTest","startedAt","environment","slug","organization","title","account","tasks","CachedTaskSchema","connections","ConnectionAuthSchema","RunJobErrorSchema","status","ErrorWithStackSchema","task","TaskSchema","RunJobResumeWithTaskSchema","RunJobRetryWithTaskSchema","retryAt","RunJobSuccessSchema","output","RunJobResponseSchema","PreprocessRunBodySchema","PreprocessRunResponseSchema","abort","properties","DisplayPropertySchema","CreateRunBodySchema","client","CreateRunResponseOkSchema","CreateRunResponseErrorSchema","CreateRunResponseBodySchema","RedactStringSchema","__redactedString","strings","interpolations","LogMessageSchema","level","message","RedactSchema","paths","RetryOptionsSchema","limit","factor","minTimeoutInMs","maxTimeoutInMs","randomize","RunTaskOptionsSchema","icon","displayKey","noop","operation","delayUntil","description","redact","connectionKey","style","StyleSchema","retry","RunTaskBodyInputSchema","idempotencyKey","parentId","RunTaskBodyOutputSchema","CompleteTaskBodyInputSchema","v","stringify","FailTaskBodyInputSchema","NormalizedRequestSchema","query","body","NormalizedResponseSchema","HttpSourceResponseSchema","response","RegisterTriggerBodySchema","rule","EventRuleSchema","InitializeTriggerBodySchema","RegisterCommonScheduleBodySchema","RegisterIntervalScheduleBodySchema","merge","IntervalMetadataSchema","InitializeCronScheduleBodySchema","CronMetadataSchema","RegisterScheduleBodySchema","RegisterScheduleResponseBodySchema","schedule","ScheduleMetadataSchema","CreateExternalConnectionBodySchema","accessToken","scopes","import_zod","MISSING_CONNECTION_NOTIFICATION","MISSING_CONNECTION_RESOLVED_NOTIFICATION","CommonMissingConnectionNotificationPayloadSchema","z","object","id","string","client","title","scopes","array","createdAt","coerce","date","updatedAt","authorizationUrl","MissingDeveloperConnectionNotificationPayloadSchema","extend","type","literal","MissingExternalConnectionNotificationPayloadSchema","account","metadata","any","MissingConnectionNotificationPayloadSchema","discriminatedUnion","CommonMissingConnectionNotificationResolvedPayloadSchema","integrationIdentifier","integrationAuthMethod","expiresAt","MissingDeveloperConnectionResolvedNotificationPayloadSchema","MissingExternalConnectionResolvedNotificationPayloadSchema","MissingConnectionResolvedNotificationPayloadSchema","import_zod","FetchRetryHeadersStrategySchema","z","object","strategy","literal","limitHeader","string","remainingHeader","resetHeader","FetchRetryBackoffStrategySchema","RetryOptionsSchema","extend","FetchRetryStrategySchema","discriminatedUnion","FetchRequestInitSchema","method","optional","headers","record","union","RedactStringSchema","body","instanceof","ArrayBuffer","FetchRetryOptionsSchema","FetchOperationSchema","url","requestInit","retry","deepMergeFilters","filter","other","result","key","hasOwnProperty","otherValue","Array","isArray","filterValue","DEFAULT_RETRY_OPTIONS","limit","factor","minTimeoutInMs","maxTimeoutInMs","randomize","calculateRetryAt","retryOptions","attempts","options","retryCount","random","Math","timeoutInMs","round","max","pow","min","Date","now","currentDate","marker","replace","data","now","toISOString","import_zod","ApiClient","constructor","options","apiUrl","process","env","TRIGGER_API_URL","Logger","logLevel","registerEndpoint","apiKey","debug","url","name","response","fetch","method","headers","Authorization","body","JSON","stringify","status","json","Error","error","createRun","params","zodfetch","CreateRunResponseBodySchema","runTask","runId","task","ServerTaskSchema","idempotencyKey","completeTask","id","failTask","sendEvent","event","ApiEventLogSchema","updateSource","client","key","source","TriggerSourceSchema","registerTrigger","payload","RegisterSourceEventSchema","registerSchedule","RegisterScheduleResponseBodySchema","unregisterSchedule","z","object","ok","boolean","encodeURIComponent","getAuth","ConnectionAuthSchema","Accept","optional","getApiKey","TRIGGER_API_KEY","isValid","match","schema","requestInit","errorMessage","jsonBody","parse","ResumeWithTaskError","constructor","task","RetryWithTaskError","cause","retryAt","isTriggerError","err","createIOWithIntegrations","io","auths","integrations","connections","Object","entries","reduce","acc","connectionKey","integration","auth","client","usesLocalAuth","clientFactory","undefined","ioConnection","tasks","keys","forEach","taskName","authenticatedTask","key","params","options","init","runTask","ioTask","run","onError","Proxy","get","target","prop","receiver","value","Reflect","bind","IO","constructor","options","_id","id","_apiClient","apiClient","_triggerClient","client","_logger","logger","Logger","logLevel","_cachedTasks","Map","cachedTasks","forEach","task","set","_taskStorage","AsyncLocalStorage","_context","context","IOLogger","level","message","data","debug","info","warn","error","runTask","name","icon","description","params","properties","label","text","style","variant","toLowerCase","noop","wait","key","seconds","delayUntil","Date","now","backgroundFetch","url","requestInit","retry","urlObject","URL","hostname","pathname","operation","method","output","sendEvent","event","updateSource","redact","paths","registerInterval","dynamicSchedule","toString","register","type","unregisterInterval","unregister","registerCron","cron","unregisterCron","registerTrigger","trigger","registration","subtask1","connection","getAuth","source","clientId","io","createIOWithIntegrations","integration","updates","callback","onError","parentId","getStore","taskId","idempotencyKey","generateIdempotencyKey","flat","cachedTask","get","displayKey","undefined","status","Error","ResumeWithTaskError","executeTask","result","completeTask","isTriggerError","onErrorResult","parsedError","ErrorWithStackSchema","safeParse","RetryWithTaskError","success","retryAt","calculateRetryAt","attempts","failTask","JSON","stringify","run","try","tryCallback","catchCallback","keyMaterial","keys","map","stableStringify","join","hash","webcrypto","subtle","digest","Buffer","from","obj","sortKeys","Array","isArray","sortedKeys","Object","sort","sortedObj","_options","EventTrigger","constructor","options","toJSON","type","title","name","event","rule","source","payload","deepMergeFilters","filter","attachToJob","triggerClient","job","preprocessRuns","eventTrigger","icon","parsePayload","rawPayload","schema","parse","registerSourceEvent","name","REGISTER_SOURCE_EVENT","title","source","icon","parsePayload","RegisterSourceEventSchema","parse","_options","_logger","TriggerClient","constructor","options","id","_url","buildClientUrl","url","ApiClient","Logger","logLevel","path","startsWith","handleRequest","request","debug","headers","Object","fromEntries","entries","method","apiKey","get","authorization","authorized","status","body","message","action","endpointId","ok","jobId","job","toJSON","jobs","values","map","sources","dynamicTriggers","trigger","dynamicSchedules","json","InitializeTriggerBodySchema","safeParse","success","dynamicTrigger","data","registeredTriggerForParams","params","execution","RunJobBodySchema","results","PreprocessRunBodySchema","abort","properties","HttpSourceRequestHeadersSchema","sourceRequest","Request","undefined","key","dynamicId","secret","response","events","attach","enabled","attachToJob","attachDynamicTrigger","Job","version","EventTrigger","event","filter","dynamicTriggerId","integrations","integration","run","io","ctx","updates","register","updateSource","__internal","attachJobToDynamicTrigger","push","attachSource","s","r","handle","registeredSource","channel","metadata","authSource","client","usesLocalAuth","Array","from","Set","queue","maxConcurrent","startPosition","attachDynamicSchedule","registerTrigger","getAuth","sendEvent","registerSchedule","schedule","unregisterSchedule","localApiKey","process","env","TRIGGER_API_KEY","context","parsedPayload","payload","runProperties","IO","cachedTasks","tasks","apiClient","logger","ioWithConnections","createIOWithIntegrations","connections","output","error","ResumeWithTaskError","task","RetryWithTaskError","cause","retryAt","errorWithStack","ErrorWithStackSchema","organization","environment","timestamp","account","handler","host","TRIGGER_CLIENT_HOST","HOST","HOSTNAME","NOW_URL","VERCEL_URL","Error","authenticatedTask","options","ExternalSource","constructor","channel","options","handle","source","rawEvent","logger","handler","params","filter","properties","register","registerEvent","io","ctx","result","event","ommited","omit","sourceWithoutChannel","channelWithoutType","updates","key","parts","id","push","integration","join","integrationConfig","metadata","version","ExternalSourceTrigger","toJSON","type","title","rule","name","payload","deepMergeFilters","attachToJob","triggerClient","job","attachSource","slugifyId","preprocessRuns","obj","k","Object","keys","_client","_options","DynamicTrigger","constructor","client","options","source","attachDynamicTrigger","toJSON","type","id","event","registeredTriggerForParams","params","rule","name","payload","deepMergeFilters","filter","key","slugifyId","channel","events","integration","metadata","authSource","usesLocalAuth","register","registerTrigger","attachToJob","triggerClient","job","attachJobToDynamicTrigger","preprocessRuns","examples","id","name","icon","payload","ts","currentDate","marker","lastTimestamp","IntervalTrigger","constructor","options","event","title","source","parsePayload","ScheduledPayloadSchema","parse","properties","label","text","seconds","attachToJob","triggerClient","job","preprocessRuns","toJSON","type","schedule","intervalTrigger","CronTrigger","cron","cronTrigger","DynamicSchedule","client","register","key","metadata","registerSchedule","unregister","unregisterSchedule","attachDynamicSchedule","missingConnectionNotification","integrations","MissingConnectionNotification","missingConnectionResolvedNotification","MissingConnectionResolvedNotification","constructor","options","event","name","MISSING_CONNECTION_NOTIFICATION","title","source","icon","parsePayload","MissingConnectionNotificationPayloadSchema","parse","properties","label","text","map","i","id","join","attachToJob","triggerClient","job","preprocessRuns","toJSON","type","rule","payload","client","MISSING_CONNECTION_RESOLVED_NOTIFICATION","MissingConnectionResolvedNotificationPayloadSchema","redactString","strings","interpolations","__redactedString","raw"]}