@trigger.dev/sdk 0.2.5 → 0.2.7

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.d.ts CHANGED
@@ -1,6 +1,13 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
3
 
4
+ declare const SerializableSchema: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull, z.ZodDate]>;
5
+ type Serializable = z.infer<typeof SerializableSchema>;
6
+ type SerializableJson = Serializable | {
7
+ [key: string]: SerializableJson;
8
+ } | SerializableJson[];
9
+ declare const SerializableJsonSchema: z.ZodType<SerializableJson>;
10
+
4
11
  declare const SerializableCustomEventSchema: z.ZodObject<{
5
12
  name: z.ZodString;
6
13
  payload: z.ZodType<string | number | boolean | Date | {
@@ -225,21 +232,20 @@ declare const TriggerMetadataSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObjec
225
232
  };
226
233
  }>]>;
227
234
 
228
- type EventRule = z.infer<typeof EventFilterSchema>;
229
- type TriggerEvent<TSchema extends z.ZodTypeAny> = {
230
- metadata: z.infer<typeof TriggerMetadataSchema>;
231
- schema: TSchema;
232
- };
233
- type TriggerCustomEventOptions<TSchema extends z.ZodTypeAny> = {
234
- name: string;
235
- schema: TSchema;
236
- };
237
- declare function customEvent<TSchema extends z.ZodTypeAny>(options: TriggerCustomEventOptions<TSchema>): TriggerEvent<TSchema>;
238
- type TriggerScheduleOptions = z.infer<typeof ScheduleSourceSchema>;
239
- declare function scheduleEvent(options: TriggerScheduleOptions): TriggerEvent<typeof ScheduledEventPayloadSchema>;
240
-
241
- declare const logLevels: readonly ["disabled", "log", "error", "warn", "info", "debug"];
242
- type LogLevel = (typeof logLevels)[number];
235
+ declare const SecureStringSchema: z.ZodObject<{
236
+ __secureString: z.ZodLiteral<true>;
237
+ strings: z.ZodArray<z.ZodString, "many">;
238
+ interpolations: z.ZodArray<z.ZodString, "many">;
239
+ }, "strip", z.ZodTypeAny, {
240
+ __secureString: true;
241
+ strings: string[];
242
+ interpolations: string[];
243
+ }, {
244
+ __secureString: true;
245
+ strings: string[];
246
+ interpolations: string[];
247
+ }>;
248
+ type SecureString = z.infer<typeof SecureStringSchema>;
243
249
 
244
250
  type TriggerCustomEvent = z.infer<typeof SerializableCustomEventSchema>;
245
251
  type WaitForOptions = {
@@ -248,6 +254,19 @@ type WaitForOptions = {
248
254
  hours?: number;
249
255
  days?: number;
250
256
  };
257
+ type FetchOptions<TResponseBodySchema extends z.ZodTypeAny = z.ZodTypeAny> = {
258
+ method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | "TRACE";
259
+ body?: z.infer<typeof SerializableJsonSchema>;
260
+ headers?: Record<string, string | SecureString>;
261
+ responseSchema?: TResponseBodySchema;
262
+ };
263
+ type FetchResponse<TResponseBodySchema extends z.ZodTypeAny = z.ZodTypeAny> = {
264
+ ok: boolean;
265
+ body?: z.infer<TResponseBodySchema>;
266
+ headers: Record<string, string>;
267
+ status: number;
268
+ };
269
+ type TriggerFetch = <TBodySchema extends z.ZodTypeAny = z.ZodTypeAny>(key: string, url: string | URL, options: FetchOptions<TBodySchema>) => Promise<FetchResponse<TBodySchema>>;
251
270
  interface TriggerContext {
252
271
  id: string;
253
272
  environment: string;
@@ -257,6 +276,7 @@ interface TriggerContext {
257
276
  sendEvent(key: string, event: TriggerCustomEvent): Promise<void>;
258
277
  waitFor(key: string, options: WaitForOptions): Promise<void>;
259
278
  waitUntil(key: string, date: Date): Promise<void>;
279
+ fetch: TriggerFetch;
260
280
  }
261
281
  interface TriggerLogger {
262
282
  debug(message: string, properties?: Record<string, any>): Promise<void>;
@@ -265,6 +285,22 @@ interface TriggerLogger {
265
285
  error(message: string, properties?: Record<string, any>): Promise<void>;
266
286
  }
267
287
 
288
+ type EventRule = z.infer<typeof EventFilterSchema>;
289
+ type TriggerEvent<TSchema extends z.ZodTypeAny> = {
290
+ metadata: z.infer<typeof TriggerMetadataSchema>;
291
+ schema: TSchema;
292
+ };
293
+ type TriggerCustomEventOptions<TSchema extends z.ZodTypeAny> = {
294
+ name: string;
295
+ schema: TSchema;
296
+ };
297
+ declare function customEvent<TSchema extends z.ZodTypeAny>(options: TriggerCustomEventOptions<TSchema>): TriggerEvent<TSchema>;
298
+ type TriggerScheduleOptions = z.infer<typeof ScheduleSourceSchema>;
299
+ declare function scheduleEvent(options: TriggerScheduleOptions): TriggerEvent<typeof ScheduledEventPayloadSchema>;
300
+
301
+ declare const logLevels: readonly ["disabled", "log", "error", "warn", "info", "debug"];
302
+ type LogLevel = (typeof logLevels)[number];
303
+
268
304
  type TriggerOptions<TSchema extends z.ZodTypeAny> = {
269
305
  id: string;
270
306
  name: string;
@@ -292,6 +328,8 @@ declare class Trigger<TSchema extends z.ZodTypeAny> {
292
328
 
293
329
  declare function sendEvent(id: string, event: TriggerCustomEvent): Promise<void>;
294
330
 
331
+ declare function fetch<TBodySchema extends z.ZodTypeAny = z.ZodTypeAny>(key: string, url: string | URL, options: FetchOptions<TBodySchema>): Promise<FetchResponse<TBodySchema>>;
332
+
295
333
  declare function getTriggerRun(): {
296
334
  performRequest: <TSchema extends zod.ZodTypeAny>(key: string, options: {
297
335
  service: string;
@@ -311,6 +349,8 @@ declare function getTriggerRun(): {
311
349
  [key: string]: string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
312
350
  } | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | (string | number | boolean | Date | any | any | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null)[] | null;
313
351
  }) => Promise<void>;
352
+ fetch: TriggerFetch;
314
353
  } | undefined;
354
+ declare function secureString(strings: TemplateStringsArray, ...interpolations: string[]): SecureString;
315
355
 
316
- export { EventRule, Trigger, TriggerCustomEventOptions, TriggerEvent, TriggerOptions, TriggerScheduleOptions, customEvent, getTriggerRun, scheduleEvent, sendEvent };
356
+ export { EventRule, Trigger, TriggerCustomEventOptions, TriggerEvent, TriggerOptions, TriggerScheduleOptions, customEvent, fetch, getTriggerRun, scheduleEvent, secureString, sendEvent };
package/dist/index.js CHANGED
@@ -51,8 +51,10 @@ var src_exports = {};
51
51
  __export(src_exports, {
52
52
  Trigger: () => Trigger,
53
53
  customEvent: () => customEvent,
54
+ fetch: () => fetch2,
54
55
  getTriggerRun: () => getTriggerRun,
55
56
  scheduleEvent: () => scheduleEvent,
57
+ secureString: () => secureString,
56
58
  sendEvent: () => sendEvent
57
59
  });
58
60
  module.exports = __toCommonJS(src_exports);
@@ -203,6 +205,43 @@ var TriggerMetadataSchema = import_zod6.z.discriminatedUnion("type", [
203
205
  ScheduledEventTriggerSchema
204
206
  ]);
205
207
 
208
+ // ../common-schemas/src/fetch.ts
209
+ var import_zod7 = require("zod");
210
+ var SecureStringSchema = import_zod7.z.object({
211
+ __secureString: import_zod7.z.literal(true),
212
+ strings: import_zod7.z.array(import_zod7.z.string()),
213
+ interpolations: import_zod7.z.array(import_zod7.z.string())
214
+ });
215
+ var FetchRequestSchema = import_zod7.z.object({
216
+ url: import_zod7.z.string(),
217
+ headers: import_zod7.z.record(import_zod7.z.union([
218
+ import_zod7.z.string(),
219
+ SecureStringSchema
220
+ ])).optional(),
221
+ method: import_zod7.z.enum([
222
+ "GET",
223
+ "POST",
224
+ "PUT",
225
+ "DELETE",
226
+ "PATCH",
227
+ "HEAD",
228
+ "OPTIONS",
229
+ "TRACE"
230
+ ]),
231
+ body: import_zod7.z.any()
232
+ });
233
+ var FetchOutputSchema = import_zod7.z.object({
234
+ status: import_zod7.z.number(),
235
+ ok: import_zod7.z.boolean(),
236
+ headers: import_zod7.z.record(import_zod7.z.string()),
237
+ body: import_zod7.z.any().optional()
238
+ });
239
+ var FetchResponseSchema = import_zod7.z.object({
240
+ status: import_zod7.z.number(),
241
+ headers: import_zod7.z.record(import_zod7.z.string()),
242
+ body: import_zod7.z.any().optional()
243
+ });
244
+
206
245
  // src/events.ts
207
246
  function customEvent(options) {
208
247
  return {
@@ -234,188 +273,227 @@ function scheduleEvent(options) {
234
273
  __name(scheduleEvent, "scheduleEvent");
235
274
 
236
275
  // ../internal-bridge/src/schemas/host.ts
237
- var import_zod7 = require("zod");
276
+ var import_zod8 = require("zod");
238
277
  var HostRPCSchema = {
239
278
  TRIGGER_WORKFLOW: {
240
- request: import_zod7.z.object({
241
- id: import_zod7.z.string(),
242
- trigger: import_zod7.z.object({
279
+ request: import_zod8.z.object({
280
+ id: import_zod8.z.string(),
281
+ trigger: import_zod8.z.object({
243
282
  input: JsonSchema.default({}),
244
283
  context: JsonSchema.default({})
245
284
  }),
246
- meta: import_zod7.z.object({
247
- environment: import_zod7.z.string(),
248
- workflowId: import_zod7.z.string(),
249
- organizationId: import_zod7.z.string(),
250
- apiKey: import_zod7.z.string()
285
+ meta: import_zod8.z.object({
286
+ environment: import_zod8.z.string(),
287
+ workflowId: import_zod8.z.string(),
288
+ organizationId: import_zod8.z.string(),
289
+ apiKey: import_zod8.z.string()
251
290
  })
252
291
  }),
253
- response: import_zod7.z.boolean()
292
+ response: import_zod8.z.boolean()
254
293
  },
255
294
  RESOLVE_REQUEST: {
256
- request: import_zod7.z.object({
257
- id: import_zod7.z.string(),
258
- key: import_zod7.z.string(),
295
+ request: import_zod8.z.object({
296
+ id: import_zod8.z.string(),
297
+ key: import_zod8.z.string(),
259
298
  output: JsonSchema.default({}),
260
- meta: import_zod7.z.object({
261
- environment: import_zod7.z.string(),
262
- workflowId: import_zod7.z.string(),
263
- organizationId: import_zod7.z.string(),
264
- apiKey: import_zod7.z.string(),
265
- runId: import_zod7.z.string()
299
+ meta: import_zod8.z.object({
300
+ environment: import_zod8.z.string(),
301
+ workflowId: import_zod8.z.string(),
302
+ organizationId: import_zod8.z.string(),
303
+ apiKey: import_zod8.z.string(),
304
+ runId: import_zod8.z.string()
266
305
  })
267
306
  }),
268
- response: import_zod7.z.boolean()
307
+ response: import_zod8.z.boolean()
269
308
  },
270
309
  RESOLVE_DELAY: {
271
- request: import_zod7.z.object({
272
- id: import_zod7.z.string(),
273
- key: import_zod7.z.string(),
274
- meta: import_zod7.z.object({
275
- environment: import_zod7.z.string(),
276
- workflowId: import_zod7.z.string(),
277
- organizationId: import_zod7.z.string(),
278
- apiKey: import_zod7.z.string(),
279
- runId: import_zod7.z.string()
310
+ request: import_zod8.z.object({
311
+ id: import_zod8.z.string(),
312
+ key: import_zod8.z.string(),
313
+ meta: import_zod8.z.object({
314
+ environment: import_zod8.z.string(),
315
+ workflowId: import_zod8.z.string(),
316
+ organizationId: import_zod8.z.string(),
317
+ apiKey: import_zod8.z.string(),
318
+ runId: import_zod8.z.string()
280
319
  })
281
320
  }),
282
- response: import_zod7.z.boolean()
321
+ response: import_zod8.z.boolean()
283
322
  },
284
323
  REJECT_REQUEST: {
285
- request: import_zod7.z.object({
286
- id: import_zod7.z.string(),
287
- key: import_zod7.z.string(),
324
+ request: import_zod8.z.object({
325
+ id: import_zod8.z.string(),
326
+ key: import_zod8.z.string(),
288
327
  error: JsonSchema.default({}),
289
- meta: import_zod7.z.object({
290
- environment: import_zod7.z.string(),
291
- workflowId: import_zod7.z.string(),
292
- organizationId: import_zod7.z.string(),
293
- apiKey: import_zod7.z.string(),
294
- runId: import_zod7.z.string()
328
+ meta: import_zod8.z.object({
329
+ environment: import_zod8.z.string(),
330
+ workflowId: import_zod8.z.string(),
331
+ organizationId: import_zod8.z.string(),
332
+ apiKey: import_zod8.z.string(),
333
+ runId: import_zod8.z.string()
295
334
  })
296
335
  }),
297
- response: import_zod7.z.boolean()
336
+ response: import_zod8.z.boolean()
337
+ },
338
+ RESOLVE_FETCH_REQUEST: {
339
+ request: import_zod8.z.object({
340
+ id: import_zod8.z.string(),
341
+ key: import_zod8.z.string(),
342
+ output: FetchOutputSchema,
343
+ meta: import_zod8.z.object({
344
+ environment: import_zod8.z.string(),
345
+ workflowId: import_zod8.z.string(),
346
+ organizationId: import_zod8.z.string(),
347
+ apiKey: import_zod8.z.string(),
348
+ runId: import_zod8.z.string()
349
+ })
350
+ }),
351
+ response: import_zod8.z.boolean()
352
+ },
353
+ REJECT_FETCH_REQUEST: {
354
+ request: import_zod8.z.object({
355
+ id: import_zod8.z.string(),
356
+ key: import_zod8.z.string(),
357
+ error: JsonSchema.default({}),
358
+ meta: import_zod8.z.object({
359
+ environment: import_zod8.z.string(),
360
+ workflowId: import_zod8.z.string(),
361
+ organizationId: import_zod8.z.string(),
362
+ apiKey: import_zod8.z.string(),
363
+ runId: import_zod8.z.string()
364
+ })
365
+ }),
366
+ response: import_zod8.z.boolean()
298
367
  }
299
368
  };
300
369
 
301
370
  // ../internal-bridge/src/schemas/server.ts
302
- var import_zod8 = require("zod");
371
+ var import_zod9 = require("zod");
303
372
  var ServerRPCSchema = {
304
373
  INITIALIZE_DELAY: {
305
- request: import_zod8.z.object({
306
- runId: import_zod8.z.string(),
307
- key: import_zod8.z.string(),
374
+ request: import_zod9.z.object({
375
+ runId: import_zod9.z.string(),
376
+ key: import_zod9.z.string(),
308
377
  wait: WaitSchema,
309
- timestamp: import_zod8.z.string()
378
+ timestamp: import_zod9.z.string()
310
379
  }),
311
- response: import_zod8.z.boolean()
380
+ response: import_zod9.z.boolean()
312
381
  },
313
382
  SEND_REQUEST: {
314
- request: import_zod8.z.object({
315
- runId: import_zod8.z.string(),
316
- key: import_zod8.z.string(),
317
- request: import_zod8.z.object({
318
- service: import_zod8.z.string(),
319
- endpoint: import_zod8.z.string(),
320
- params: import_zod8.z.any()
383
+ request: import_zod9.z.object({
384
+ runId: import_zod9.z.string(),
385
+ key: import_zod9.z.string(),
386
+ request: import_zod9.z.object({
387
+ service: import_zod9.z.string(),
388
+ endpoint: import_zod9.z.string(),
389
+ params: import_zod9.z.any()
321
390
  }),
322
- timestamp: import_zod8.z.string()
391
+ timestamp: import_zod9.z.string()
323
392
  }),
324
- response: import_zod8.z.boolean()
393
+ response: import_zod9.z.boolean()
394
+ },
395
+ SEND_FETCH: {
396
+ request: import_zod9.z.object({
397
+ runId: import_zod9.z.string(),
398
+ key: import_zod9.z.string(),
399
+ fetch: FetchRequestSchema,
400
+ timestamp: import_zod9.z.string()
401
+ }),
402
+ response: import_zod9.z.boolean()
325
403
  },
326
404
  SEND_LOG: {
327
- request: import_zod8.z.object({
328
- runId: import_zod8.z.string(),
329
- key: import_zod8.z.string(),
330
- log: import_zod8.z.object({
331
- message: import_zod8.z.string(),
332
- level: import_zod8.z.enum([
405
+ request: import_zod9.z.object({
406
+ runId: import_zod9.z.string(),
407
+ key: import_zod9.z.string(),
408
+ log: import_zod9.z.object({
409
+ message: import_zod9.z.string(),
410
+ level: import_zod9.z.enum([
333
411
  "DEBUG",
334
412
  "INFO",
335
413
  "WARN",
336
414
  "ERROR"
337
415
  ]),
338
- properties: import_zod8.z.string().optional()
416
+ properties: import_zod9.z.string().optional()
339
417
  }),
340
- timestamp: import_zod8.z.string()
418
+ timestamp: import_zod9.z.string()
341
419
  }),
342
- response: import_zod8.z.boolean()
420
+ response: import_zod9.z.boolean()
343
421
  },
344
422
  SEND_EVENT: {
345
- request: import_zod8.z.object({
346
- runId: import_zod8.z.string(),
347
- key: import_zod8.z.string(),
423
+ request: import_zod9.z.object({
424
+ runId: import_zod9.z.string(),
425
+ key: import_zod9.z.string(),
348
426
  event: CustomEventSchema,
349
- timestamp: import_zod8.z.string()
427
+ timestamp: import_zod9.z.string()
350
428
  }),
351
- response: import_zod8.z.boolean()
429
+ response: import_zod9.z.boolean()
352
430
  },
353
431
  INITIALIZE_HOST: {
354
- request: import_zod8.z.object({
355
- apiKey: import_zod8.z.string(),
356
- workflowId: import_zod8.z.string(),
357
- workflowName: import_zod8.z.string(),
432
+ request: import_zod9.z.object({
433
+ apiKey: import_zod9.z.string(),
434
+ workflowId: import_zod9.z.string(),
435
+ workflowName: import_zod9.z.string(),
358
436
  trigger: TriggerMetadataSchema,
359
- packageVersion: import_zod8.z.string(),
360
- packageName: import_zod8.z.string(),
361
- triggerTTL: import_zod8.z.number().optional()
437
+ packageVersion: import_zod9.z.string(),
438
+ packageName: import_zod9.z.string(),
439
+ triggerTTL: import_zod9.z.number().optional()
362
440
  }),
363
- response: import_zod8.z.discriminatedUnion("type", [
364
- import_zod8.z.object({
365
- type: import_zod8.z.literal("success")
441
+ response: import_zod9.z.discriminatedUnion("type", [
442
+ import_zod9.z.object({
443
+ type: import_zod9.z.literal("success")
366
444
  }),
367
- import_zod8.z.object({
368
- type: import_zod8.z.literal("error"),
369
- message: import_zod8.z.string()
445
+ import_zod9.z.object({
446
+ type: import_zod9.z.literal("error"),
447
+ message: import_zod9.z.string()
370
448
  })
371
449
  ]).nullable()
372
450
  },
373
451
  START_WORKFLOW_RUN: {
374
- request: import_zod8.z.object({
375
- runId: import_zod8.z.string(),
376
- timestamp: import_zod8.z.string()
452
+ request: import_zod9.z.object({
453
+ runId: import_zod9.z.string(),
454
+ timestamp: import_zod9.z.string()
377
455
  }),
378
- response: import_zod8.z.boolean()
456
+ response: import_zod9.z.boolean()
379
457
  },
380
458
  COMPLETE_WORKFLOW_RUN: {
381
- request: import_zod8.z.object({
382
- runId: import_zod8.z.string(),
383
- output: import_zod8.z.string().optional(),
384
- timestamp: import_zod8.z.string()
459
+ request: import_zod9.z.object({
460
+ runId: import_zod9.z.string(),
461
+ output: import_zod9.z.string().optional(),
462
+ timestamp: import_zod9.z.string()
385
463
  }),
386
- response: import_zod8.z.boolean()
464
+ response: import_zod9.z.boolean()
387
465
  },
388
466
  SEND_WORKFLOW_ERROR: {
389
- request: import_zod8.z.object({
390
- runId: import_zod8.z.string(),
391
- error: import_zod8.z.object({
392
- name: import_zod8.z.string(),
393
- message: import_zod8.z.string(),
394
- stackTrace: import_zod8.z.string().optional()
467
+ request: import_zod9.z.object({
468
+ runId: import_zod9.z.string(),
469
+ error: import_zod9.z.object({
470
+ name: import_zod9.z.string(),
471
+ message: import_zod9.z.string(),
472
+ stackTrace: import_zod9.z.string().optional()
395
473
  }),
396
- timestamp: import_zod8.z.string()
474
+ timestamp: import_zod9.z.string()
397
475
  }),
398
- response: import_zod8.z.boolean()
476
+ response: import_zod9.z.boolean()
399
477
  }
400
478
  };
401
479
 
402
480
  // ../internal-bridge/src/schemas/common.ts
403
- var import_zod9 = require("zod");
404
- var MESSAGE_META = import_zod9.z.object({
405
- data: import_zod9.z.any(),
406
- id: import_zod9.z.string(),
407
- type: import_zod9.z.union([
408
- import_zod9.z.literal("ACK"),
409
- import_zod9.z.literal("MESSAGE")
481
+ var import_zod10 = require("zod");
482
+ var MESSAGE_META = import_zod10.z.object({
483
+ data: import_zod10.z.any(),
484
+ id: import_zod10.z.string(),
485
+ type: import_zod10.z.union([
486
+ import_zod10.z.literal("ACK"),
487
+ import_zod10.z.literal("MESSAGE")
410
488
  ])
411
489
  });
412
- var TriggerEnvironmentSchema = import_zod9.z.enum([
490
+ var TriggerEnvironmentSchema = import_zod10.z.enum([
413
491
  "live",
414
492
  "development"
415
493
  ]);
416
494
 
417
495
  // ../internal-bridge/src/zodRPC.ts
418
- var import_zod10 = require("zod");
496
+ var import_zod11 = require("zod");
419
497
  var import_node_crypto = require("crypto");
420
498
 
421
499
  // ../internal-bridge/src/logger.ts
@@ -479,11 +557,11 @@ function formattedDateTime() {
479
557
  __name(formattedDateTime, "formattedDateTime");
480
558
 
481
559
  // ../internal-bridge/src/zodRPC.ts
482
- var RPCMessageSchema = import_zod10.z.object({
483
- id: import_zod10.z.string(),
484
- methodName: import_zod10.z.string(),
485
- data: import_zod10.z.any(),
486
- kind: import_zod10.z.enum([
560
+ var RPCMessageSchema = import_zod11.z.object({
561
+ id: import_zod11.z.string(),
562
+ methodName: import_zod11.z.string(),
563
+ data: import_zod11.z.any(),
564
+ kind: import_zod11.z.enum([
487
565
  "CALL",
488
566
  "RESPONSE"
489
567
  ])
@@ -559,7 +637,7 @@ onCall_fn = /* @__PURE__ */ __name(async function(message) {
559
637
  try {
560
638
  await __privateMethod(this, _handleCall, handleCall_fn).call(this, message);
561
639
  } catch (callError) {
562
- if (callError instanceof import_zod10.ZodError) {
640
+ if (callError instanceof import_zod11.ZodError) {
563
641
  __privateGet(this, _logger).error(`[ZodRPC] Received invalid call:
564
642
  ${JSON.stringify(message)}: `, callError.errors);
565
643
  } else {
@@ -573,7 +651,7 @@ onResponse_fn = /* @__PURE__ */ __name(async function(message1) {
573
651
  try {
574
652
  await __privateMethod(this, _handleResponse, handleResponse_fn).call(this, message1);
575
653
  } catch (callError) {
576
- if (callError instanceof import_zod10.ZodError) {
654
+ if (callError instanceof import_zod11.ZodError) {
577
655
  __privateGet(this, _logger).error(`[ZodRPC] Received invalid response
578
656
 
579
657
  ${JSON.stringify(message1)}: `, callError.flatten());
@@ -649,10 +727,11 @@ __name(packageResponse, "packageResponse");
649
727
  // src/client.ts
650
728
  var import_uuid2 = require("uuid");
651
729
  var import_ws = require("ws");
730
+ var import_zod12 = require("zod");
652
731
 
653
732
  // package.json
654
733
  var name = "@trigger.dev/sdk";
655
- var version = "0.2.5";
734
+ var version = "0.2.7";
656
735
 
657
736
  // src/connection.ts
658
737
  var import_uuid = require("uuid");
@@ -904,7 +983,13 @@ var ContextLogger = class {
904
983
  __name(ContextLogger, "ContextLogger");
905
984
 
906
985
  // src/client.ts
907
- var _trigger, _options, _connection2, _serverRPC, _apiKey, _endpoint, _isConnected, _retryIntervalMs, _logger3, _closedByUser, _responseCompleteCallbacks, _waitForCallbacks, _initializeConnection, initializeConnection_fn, _initializeRPC, initializeRPC_fn, _initializeHost, initializeHost_fn, _send, send_fn;
986
+ var import_zod_error = require("zod-error");
987
+ var zodErrorMessageOptions = {
988
+ delimiter: {
989
+ error: " \u{1F525} "
990
+ }
991
+ };
992
+ var _trigger, _options, _connection2, _serverRPC, _apiKey, _endpoint, _isConnected, _retryIntervalMs, _logger3, _closedByUser, _responseCompleteCallbacks, _waitForCallbacks, _fetchCallbacks, _initializeConnection, initializeConnection_fn, _initializeRPC, initializeRPC_fn, _initializeHost, initializeHost_fn, _send, send_fn;
908
993
  var TriggerClient = class {
909
994
  constructor(trigger, options) {
910
995
  __privateAdd(this, _initializeConnection);
@@ -923,6 +1008,7 @@ var TriggerClient = class {
923
1008
  __privateAdd(this, _closedByUser, false);
924
1009
  __privateAdd(this, _responseCompleteCallbacks, /* @__PURE__ */ new Map());
925
1010
  __privateAdd(this, _waitForCallbacks, /* @__PURE__ */ new Map());
1011
+ __privateAdd(this, _fetchCallbacks, /* @__PURE__ */ new Map());
926
1012
  __privateSet(this, _trigger, trigger);
927
1013
  __privateSet(this, _options, options);
928
1014
  const apiKey = __privateGet(this, _options).apiKey ?? process.env.TRIGGER_API_KEY;
@@ -960,6 +1046,7 @@ _logger3 = new WeakMap();
960
1046
  _closedByUser = new WeakMap();
961
1047
  _responseCompleteCallbacks = new WeakMap();
962
1048
  _waitForCallbacks = new WeakMap();
1049
+ _fetchCallbacks = new WeakMap();
963
1050
  _initializeConnection = new WeakSet();
964
1051
  initializeConnection_fn = /* @__PURE__ */ __name(async function(instanceId) {
965
1052
  const id = instanceId ?? (0, import_uuid2.v4)();
@@ -1051,8 +1138,68 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1051
1138
  reject(data.error);
1052
1139
  return true;
1053
1140
  },
1141
+ RESOLVE_FETCH_REQUEST: async (data) => {
1142
+ __privateGet(this, _logger3).debug("Handling RESOLVE_FETCH_REQUEST", data);
1143
+ const fetchCallbacks = __privateGet(this, _fetchCallbacks).get(messageKey(data.meta.runId, data.key));
1144
+ if (!fetchCallbacks) {
1145
+ __privateGet(this, _logger3).debug(`Could not find fetch callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1146
+ return true;
1147
+ }
1148
+ const { resolve } = fetchCallbacks;
1149
+ resolve(data.output);
1150
+ return true;
1151
+ },
1152
+ REJECT_FETCH_REQUEST: async (data) => {
1153
+ __privateGet(this, _logger3).debug("Handling REJECT_FETCH_REQUEST", data);
1154
+ const fetchCallbacks = __privateGet(this, _fetchCallbacks).get(messageKey(data.meta.runId, data.key));
1155
+ if (!fetchCallbacks) {
1156
+ __privateGet(this, _logger3).debug(`Could not find fetch callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1157
+ return true;
1158
+ }
1159
+ const { reject } = fetchCallbacks;
1160
+ reject(data.error);
1161
+ return true;
1162
+ },
1054
1163
  TRIGGER_WORKFLOW: async (data) => {
1055
1164
  __privateGet(this, _logger3).debug("Handling TRIGGER_WORKFLOW", data);
1165
+ const parsedEventData = __privateGet(this, _options).on.schema.safeParse(data.trigger.input);
1166
+ if (!parsedEventData.success) {
1167
+ await serverRPC.send("SEND_WORKFLOW_ERROR", {
1168
+ runId: data.id,
1169
+ timestamp: String(highPrecisionTimestamp()),
1170
+ error: {
1171
+ name: "Event validation error",
1172
+ message: (0, import_zod_error.generateErrorMessage)(parsedEventData.error.issues, zodErrorMessageOptions)
1173
+ }
1174
+ });
1175
+ return true;
1176
+ }
1177
+ const fetchFunction = /* @__PURE__ */ __name(async (key, url, options) => {
1178
+ const result = new Promise((resolve, reject) => {
1179
+ __privateGet(this, _fetchCallbacks).set(messageKey(data.id, key), {
1180
+ resolve,
1181
+ reject
1182
+ });
1183
+ });
1184
+ await serverRPC.send("SEND_FETCH", {
1185
+ runId: data.id,
1186
+ key,
1187
+ fetch: {
1188
+ url: url.toString(),
1189
+ method: options.method ?? "GET",
1190
+ headers: options.headers,
1191
+ body: options.body
1192
+ },
1193
+ timestamp: String(highPrecisionTimestamp())
1194
+ });
1195
+ const response = await result;
1196
+ return {
1197
+ status: response.status,
1198
+ ok: response.ok,
1199
+ headers: response.headers,
1200
+ body: response.body ? (options.responseSchema ?? import_zod12.z.any()).parse(response.body) : void 0
1201
+ };
1202
+ }, "fetchFunction");
1056
1203
  const ctx = {
1057
1204
  id: data.id,
1058
1205
  environment: data.meta.environment,
@@ -1118,9 +1265,10 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1118
1265
  });
1119
1266
  await result;
1120
1267
  return;
1121
- }
1268
+ },
1269
+ fetch: fetchFunction
1122
1270
  };
1123
- const eventData = __privateGet(this, _options).on.schema.parse(data.trigger.input);
1271
+ const eventData = parsedEventData.data;
1124
1272
  __privateGet(this, _logger3).debug("Parsed event data", eventData);
1125
1273
  triggerRunLocalStorage.run({
1126
1274
  performRequest: async (key, options) => {
@@ -1150,7 +1298,8 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1150
1298
  event: JSON.parse(JSON.stringify(event)),
1151
1299
  timestamp: String(highPrecisionTimestamp())
1152
1300
  });
1153
- }
1301
+ },
1302
+ fetch: fetchFunction
1154
1303
  }, () => {
1155
1304
  __privateGet(this, _logger3).debug("Running trigger...");
1156
1305
  serverRPC.send("START_WORKFLOW_RUN", {
@@ -1315,17 +1464,37 @@ async function sendEventFetch(event) {
1315
1464
  }
1316
1465
  __name(sendEventFetch, "sendEventFetch");
1317
1466
 
1467
+ // src/fetch.ts
1468
+ function fetch2(key, url, options) {
1469
+ const triggerRun = triggerRunLocalStorage.getStore();
1470
+ if (!triggerRun) {
1471
+ throw new Error("Cannot call fetch outside of a trigger run");
1472
+ }
1473
+ return triggerRun.fetch(key, url, options);
1474
+ }
1475
+ __name(fetch2, "fetch");
1476
+
1318
1477
  // src/index.ts
1319
1478
  function getTriggerRun() {
1320
1479
  return triggerRunLocalStorage.getStore();
1321
1480
  }
1322
1481
  __name(getTriggerRun, "getTriggerRun");
1482
+ function secureString(strings, ...interpolations) {
1483
+ return {
1484
+ __secureString: true,
1485
+ strings: strings.raw,
1486
+ interpolations
1487
+ };
1488
+ }
1489
+ __name(secureString, "secureString");
1323
1490
  // Annotate the CommonJS export names for ESM import in node:
1324
1491
  0 && (module.exports = {
1325
1492
  Trigger,
1326
1493
  customEvent,
1494
+ fetch,
1327
1495
  getTriggerRun,
1328
1496
  scheduleEvent,
1497
+ secureString,
1329
1498
  sendEvent
1330
1499
  });
1331
1500
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../common-schemas/src/json.ts","../../common-schemas/src/error.ts","../../common-schemas/src/logs.ts","../../common-schemas/src/waits.ts","../../common-schemas/src/events.ts","../../common-schemas/src/triggers.ts","../src/events.ts","../../internal-bridge/src/schemas/host.ts","../../internal-bridge/src/schemas/server.ts","../../internal-bridge/src/schemas/common.ts","../../internal-bridge/src/zodRPC.ts","../../internal-bridge/src/logger.ts","../src/client.ts","../src/connection.ts","../src/localStorage.ts","../src/logger.ts","../src/trigger/index.ts","../src/customEvents.ts"],"sourcesContent":["export * from \"./events\";\nexport * from \"./trigger\";\nexport * from \"./customEvents\";\n\nimport { triggerRunLocalStorage } from \"./localStorage\";\n\nexport function getTriggerRun() {\n return triggerRunLocalStorage.getStore();\n}\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\ntype Json = Literal | { [key: string]: Json } | Json[];\n\nexport const JsonSchema: z.ZodType<Json> = z.lazy(() =>\n z.union([LiteralSchema, z.array(JsonSchema), z.record(JsonSchema)])\n);\n\nconst SerializableSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.date(),\n]);\ntype Serializable = z.infer<typeof SerializableSchema>;\n\ntype 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 ErrorSchema = z.object({\n name: z.string(),\n message: z.string(),\n stackTrace: z.string().optional(),\n});\n","import { z } from \"zod\";\nimport { JsonSchema } from \"./json\";\n\nexport const LogMessageSchema = z.object({\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: z.string(),\n properties: JsonSchema.default({}),\n});\n","import { z } from \"zod\";\n\nexport const DelaySchema = z.object({\n type: z.literal(\"DELAY\"),\n seconds: z.number().optional(),\n minutes: z.number().optional(),\n hours: z.number().optional(),\n days: z.number().optional(),\n});\n\nexport type Delay = z.infer<typeof DelaySchema>;\n\nexport const ScheduledForSchema = z.object({\n type: z.literal(\"SCHEDULE_FOR\"),\n scheduledFor: z.string().datetime(),\n});\n\nexport type Scheduled = z.infer<typeof ScheduledForSchema>;\n\nexport const WaitSchema = z.discriminatedUnion(\"type\", [\n DelaySchema,\n ScheduledForSchema,\n]);\n","import { z } from \"zod\";\nimport { JsonSchema, SerializableJsonSchema } from \"./json\";\n\nexport const CustomEventSchema = z.object({\n name: z.string(),\n payload: JsonSchema,\n context: JsonSchema.optional(),\n timestamp: z.string().datetime().optional(),\n});\n\nexport const SerializableCustomEventSchema = z.object({\n name: z.string(),\n payload: SerializableJsonSchema,\n context: SerializableJsonSchema.optional(),\n timestamp: z.string().datetime().optional(),\n});\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 ScheduledEventPayloadSchema = z.object({\n scheduledTime: z.coerce.date(),\n});\n\nexport type ScheduledEventPayload = z.infer<typeof ScheduledEventPayloadSchema>;\n\nexport const ScheduleSourceRateSchema = z.object({\n rateOf: z.union([\n z.object({\n minutes: z.number().min(1).max(1440).int(),\n }),\n z.object({\n hours: z.number().min(1).max(720).int(),\n }),\n z.object({\n days: z.number().min(1).max(365).int(),\n }),\n ]),\n});\n\nexport type ScheduleSourceRate = z.infer<typeof ScheduleSourceRateSchema>;\n\nexport const ScheduleSourceCronSchema = z.object({\n cron: z.string(),\n});\n\nexport type ScheduleSourceCron = z.infer<typeof ScheduleSourceCronSchema>;\n\nexport const ScheduleSourceSchema = z.union([\n ScheduleSourceRateSchema,\n ScheduleSourceCronSchema,\n]);\n\nexport type ScheduleSource = z.infer<typeof ScheduleSourceSchema>;\n","import { z } from \"zod\";\nimport { EventFilterSchema, ScheduleSourceSchema } from \"./events\";\nimport { JsonSchema } from \"./json\";\n\nexport const CustomEventTriggerSchema = z.object({\n type: z.literal(\"CUSTOM_EVENT\"),\n service: z.literal(\"trigger\"),\n name: z.string(),\n filter: EventFilterSchema,\n});\nexport type CustomEventTrigger = z.infer<typeof CustomEventTriggerSchema>;\n\nexport const WebhookEventTriggerSchema = z.object({\n type: z.literal(\"WEBHOOK\"),\n service: z.string(),\n name: z.string(),\n filter: EventFilterSchema,\n source: JsonSchema,\n});\nexport type WebhookEventTrigger = z.infer<typeof WebhookEventTriggerSchema>;\n\nexport const HttpEventTriggerSchema = z.object({\n type: z.literal(\"HTTP_ENDPOINT\"),\n service: z.literal(\"trigger\"),\n name: z.string(),\n filter: EventFilterSchema,\n});\nexport type HttpEventTrigger = z.infer<typeof HttpEventTriggerSchema>;\n\nexport const ScheduledEventTriggerSchema = z.object({\n type: z.literal(\"SCHEDULE\"),\n service: z.literal(\"scheduler\"),\n name: z.string(),\n source: ScheduleSourceSchema,\n});\nexport type ScheduledEventTrigger = z.infer<typeof ScheduledEventTriggerSchema>;\n\nexport const TriggerMetadataSchema = z.discriminatedUnion(\"type\", [\n CustomEventTriggerSchema,\n WebhookEventTriggerSchema,\n HttpEventTriggerSchema,\n ScheduledEventTriggerSchema,\n]);\n\nexport type TriggerMetadata = z.infer<typeof TriggerMetadataSchema>;\n","import {\n EventFilterSchema,\n TriggerMetadataSchema,\n ScheduleSourceSchema,\n ScheduledEventPayloadSchema,\n} from \"@trigger.dev/common-schemas\";\nimport { z } from \"zod\";\n\nexport type EventRule = z.infer<typeof EventFilterSchema>;\n\nexport type TriggerEvent<TSchema extends z.ZodTypeAny> = {\n metadata: z.infer<typeof TriggerMetadataSchema>;\n schema: TSchema;\n};\n\nexport type TriggerCustomEventOptions<TSchema extends z.ZodTypeAny> = {\n name: string;\n schema: TSchema;\n};\n\nexport function customEvent<TSchema extends z.ZodTypeAny>(\n options: TriggerCustomEventOptions<TSchema>\n): TriggerEvent<TSchema> {\n return {\n metadata: {\n type: \"CUSTOM_EVENT\",\n service: \"trigger\",\n name: options.name,\n filter: { event: [options.name] },\n },\n schema: options.schema,\n };\n}\n\nexport type TriggerScheduleOptions = z.infer<typeof ScheduleSourceSchema>;\n\nexport function scheduleEvent(\n options: TriggerScheduleOptions\n): TriggerEvent<typeof ScheduledEventPayloadSchema> {\n return {\n metadata: {\n type: \"SCHEDULE\",\n service: \"scheduler\",\n name: \"scheduled-event\",\n source: options,\n },\n schema: ScheduledEventPayloadSchema,\n };\n}\n","import { z } from \"zod\";\nimport { JsonSchema } from \"@trigger.dev/common-schemas\";\n\nexport const HostRPCSchema = {\n TRIGGER_WORKFLOW: {\n request: z.object({\n id: z.string(),\n trigger: z.object({\n input: JsonSchema.default({}),\n context: JsonSchema.default({}),\n }),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n RESOLVE_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n output: JsonSchema.default({}),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n RESOLVE_DELAY: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n REJECT_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n error: JsonSchema.default({}),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n};\n\nexport type HostRPC = typeof HostRPCSchema;\n","import {\n CustomEventSchema,\n TriggerMetadataSchema,\n WaitSchema,\n} from \"@trigger.dev/common-schemas\";\nimport { z } from \"zod\";\n\nexport const ServerRPCSchema = {\n INITIALIZE_DELAY: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n wait: WaitSchema,\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_REQUEST: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n request: z.object({\n service: z.string(),\n endpoint: z.string(),\n params: z.any(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_LOG: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n log: z.object({\n message: z.string(),\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n properties: z.string().optional(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_EVENT: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n event: CustomEventSchema,\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n INITIALIZE_HOST: {\n request: z.object({\n apiKey: z.string(),\n workflowId: z.string(),\n workflowName: z.string(),\n trigger: TriggerMetadataSchema,\n packageVersion: z.string(),\n packageName: z.string(),\n triggerTTL: z.number().optional(),\n }),\n response: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"success\"),\n }),\n z.object({\n type: z.literal(\"error\"),\n message: z.string(),\n }),\n ])\n .nullable(),\n },\n START_WORKFLOW_RUN: {\n request: z.object({\n runId: z.string(),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n COMPLETE_WORKFLOW_RUN: {\n request: z.object({\n runId: z.string(),\n output: z.string().optional(),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_WORKFLOW_ERROR: {\n request: z.object({\n runId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stackTrace: z.string().optional(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n};\n\nexport type ServerRPC = typeof ServerRPCSchema;\n","import { z } from \"zod\";\n\nexport const MESSAGE_META = z.object({\n data: z.any(),\n id: z.string(),\n type: z.union([z.literal(\"ACK\"), z.literal(\"MESSAGE\")]),\n});\n\nexport const TriggerEnvironmentSchema = z.enum([\"live\", \"development\"]);\nexport type TriggerEnvironment = z.infer<typeof TriggerEnvironmentSchema>;\n","import { z, ZodError } from \"zod\";\nimport { createHash } from \"node:crypto\";\nimport { IConnection } from \"./types\";\nimport { Logger } from \"./logger\";\n\nexport const RPCMessageSchema = z.object({\n id: z.string(),\n methodName: z.string(),\n data: z.any(),\n kind: z.enum([\"CALL\", \"RESPONSE\"]),\n});\n\nexport type RPCMessage = z.infer<typeof RPCMessageSchema>;\n\ninterface TransmitterSchema {\n [key: string]: {\n request: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion<any, any>;\n response: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion<any, any>;\n };\n}\n\nexport type ZodRPCHandlers<ReceiverSchema extends TransmitterSchema> = {\n [K in keyof ReceiverSchema]: (\n data: z.infer<ReceiverSchema[K][\"request\"]>\n ) => Promise<z.infer<ReceiverSchema[K][\"response\"]>>;\n};\n\ntype ZodRPCOptions<\n SenderSchema extends TransmitterSchema,\n ReceiverSchema extends TransmitterSchema\n> = {\n connection: IConnection;\n sender: SenderSchema;\n receiver: ReceiverSchema;\n handlers: ZodRPCHandlers<ReceiverSchema>;\n};\n\ntype onResponseCallback = (data: any) => void;\n\nexport class ZodRPC<\n SenderSchema extends TransmitterSchema,\n ReceiverSchema extends TransmitterSchema\n> {\n #connection: IConnection;\n #sender: SenderSchema;\n #receiver: ReceiverSchema;\n #handlers: ZodRPCHandlers<ReceiverSchema>;\n #pendingCalls = new Map<string, onResponseCallback>();\n #logger: Logger = new Logger(\"ZodRPC\");\n\n constructor(options: ZodRPCOptions<SenderSchema, ReceiverSchema>) {\n this.#connection = options.connection;\n this.#sender = options.sender;\n this.#receiver = options.receiver;\n this.#handlers = options.handlers;\n\n this.#connection.onMessage.attach(this.#onMessage.bind(this));\n }\n\n public resetConnection(connection: IConnection) {\n this.#connection.onMessage.detach();\n this.#connection = connection;\n this.#connection.onMessage.attach(this.#onMessage.bind(this));\n }\n\n async #onMessage(rawData: unknown) {\n try {\n const data = RPCMessageSchema.parse(JSON.parse(rawData as string));\n\n if (data.kind === \"CALL\") {\n await this.#onCall(data);\n }\n\n if (data.kind === \"RESPONSE\") {\n await this.#onResponse(data);\n }\n } catch (err) {\n this.#logger.error(err);\n }\n }\n\n async #onCall(message: RPCMessage) {\n try {\n await this.#handleCall(message);\n } catch (callError) {\n if (callError instanceof ZodError) {\n this.#logger.error(\n `[ZodRPC] Received invalid call:\\n${JSON.stringify(message)}: `,\n callError.errors\n );\n } else {\n this.#logger.error(\n `[ZodRPC] Error handling call:\\n${JSON.stringify(message)}: `,\n callError\n );\n }\n }\n }\n\n async #onResponse(message: RPCMessage) {\n try {\n await this.#handleResponse(message);\n } catch (callError) {\n if (callError instanceof ZodError) {\n this.#logger.error(\n `[ZodRPC] Received invalid response\\n\\n${JSON.stringify(message)}: `,\n callError.flatten()\n );\n } else {\n this.#logger.error(\n `[ZodRPC] Error handling response\\n\\n${JSON.stringify(message)}: `,\n callError\n );\n }\n }\n }\n\n public send<K extends keyof SenderSchema>(\n key: K,\n data: z.infer<SenderSchema[K][\"request\"]>\n ) {\n const id = generateStableId(this.#connection.id, key as string, data);\n\n const message = packageMessage({ id, methodName: key as string, data });\n\n return new Promise<z.infer<SenderSchema[K][\"response\"]>>(\n (resolve, reject) => {\n this.#pendingCalls.set(id, (rawResponseText: string) => {\n try {\n const parsed = this.#sender[key][\"response\"].parse(rawResponseText);\n\n return resolve(parsed);\n } catch (err) {\n reject(err);\n }\n });\n\n this.#connection.send(message).catch((err) => reject(err));\n }\n );\n }\n\n async #handleCall(message: RPCMessage) {\n const receiver = this.#receiver;\n type MethodKeys = keyof typeof receiver;\n\n const methodName = message.methodName as MethodKeys;\n\n const method: ReceiverSchema[MethodKeys] | undefined =\n this.#receiver[methodName];\n\n if (!method) {\n throw new Error(`There is no method for ${message.methodName}`);\n }\n\n this.#logger.debug(\"Received call\", { message });\n\n // struggling to get real inference here\n const inputs = method.request.parse(message.data);\n\n const handler = this.#handlers[methodName];\n\n const returnValue = await handler(inputs);\n\n const preparedResponseText = packageResponse({\n id: message.id,\n methodName: methodName as string, //??\n data: returnValue,\n });\n\n try {\n await this.#connection.send(preparedResponseText);\n } catch (err) {\n this.#logger.error(\"Failed sending response\", preparedResponseText, err);\n }\n\n return;\n }\n\n async #handleResponse(message: RPCMessage) {\n const responseCallback = this.#pendingCalls.get(message.id);\n if (!responseCallback) return;\n\n responseCallback(message.data);\n\n this.#pendingCalls.delete(message.id);\n }\n}\n\n// Generates a stableId for a given request, based on:\n// - The connection id\n// - The request key\n// - The request data (serialized)\n// Returns a hash of the above\nfunction generateStableId(\n connId: string,\n reqKey: string,\n reqData: any\n): string {\n // Serialize the request data\n const serializedData = JSON.stringify(reqData);\n\n // Concatenate the connection id, request key, and serialized data\n const inputString = connId + reqKey + serializedData;\n\n // Generate a hash of the input string using the SHA-256 algorithm\n const hash = createHash(\"sha256\").update(inputString).digest(\"hex\");\n\n // Return the hash\n return hash;\n}\n\nfunction packageMessage({ id, methodName, data }: Omit<RPCMessage, \"kind\">) {\n const callerData: RPCMessage = {\n id,\n kind: \"CALL\",\n data,\n methodName,\n };\n\n return JSON.stringify(callerData);\n}\n\nfunction packageResponse({ id, methodName, data }: Omit<RPCMessage, \"kind\">) {\n const preparedResponseText: RPCMessage = {\n id: id,\n kind: \"RESPONSE\",\n methodName: methodName,\n data,\n };\n return JSON.stringify(preparedResponseText);\n}\n","// Create a logger class that uses the debug package internally\n\nconst logLevels = [\n \"disabled\",\n \"log\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n] as const;\n\nexport type LogLevel = (typeof logLevels)[number];\n\nexport class Logger {\n #name: string;\n readonly #level: number;\n\n constructor(name: string, level: LogLevel = \"disabled\") {\n this.#name = name;\n this.#level = logLevels.indexOf(\n (process.env.TRIGGER_LOG_LEVEL ?? level) as LogLevel\n );\n }\n\n log(...args: any[]) {\n if (this.#level < 1) return;\n\n console.log(`[${this.#name}] `, ...args);\n }\n\n error(...args: any[]) {\n if (this.#level < 2) return;\n\n console.error(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n warn(...args: any[]) {\n if (this.#level < 3) return;\n\n console.warn(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n info(...args: any[]) {\n if (this.#level < 4) return;\n\n console.info(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n debug(...args: any[]) {\n if (this.#level < 5) return;\n\n console.debug(`[${formattedDateTime()}] [${this.#name}] `, ...args);\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","import {\n HostRPCSchema,\n Logger,\n ServerRPCSchema,\n ZodRPC,\n} from \"internal-bridge\";\nimport { v4 } from \"uuid\";\nimport { WebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as pkg from \"../package.json\";\nimport { HostConnection, TimeoutError } from \"./connection\";\nimport { triggerRunLocalStorage } from \"./localStorage\";\nimport { ContextLogger } from \"./logger\";\nimport { Trigger, TriggerOptions } from \"./trigger\";\nimport { TriggerContext } from \"./types\";\n\nexport class TriggerClient<TSchema extends z.ZodTypeAny> {\n #trigger: Trigger<TSchema>;\n #options: TriggerOptions<TSchema>;\n\n #connection?: HostConnection;\n #serverRPC?: ZodRPC<typeof ServerRPCSchema, typeof HostRPCSchema>;\n\n #apiKey: string;\n #endpoint: string;\n\n #isConnected = false;\n #retryIntervalMs: number = 3_000;\n #logger: Logger;\n #closedByUser = false;\n\n #responseCompleteCallbacks = new Map<\n string,\n {\n resolve: (output: any) => void;\n reject: (err?: any) => void;\n }\n >();\n\n #waitForCallbacks = new Map<\n string,\n {\n resolve: () => void;\n reject: (err?: any) => void;\n }\n >();\n\n constructor(trigger: Trigger<TSchema>, options: TriggerOptions<TSchema>) {\n this.#trigger = trigger;\n this.#options = options;\n\n const apiKey = this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n\n if (!apiKey) {\n throw new Error(\n \"Cannot connect to Trigger because of invalid API Key: Please include an API Key in the `apiKey` option or in the `TRIGGER_API_KEY` environment variable.\"\n );\n }\n\n this.#apiKey = apiKey;\n this.#endpoint = this.#options.endpoint ?? \"wss://wss.trigger.dev/ws\";\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n async listen(instanceId?: string) {\n await this.#initializeConnection(instanceId);\n this.#initializeRPC();\n this.#initializeHost();\n }\n\n close() {\n this.#closedByUser = true;\n\n if (this.#serverRPC) {\n this.#serverRPC = undefined;\n }\n\n this.#connection?.close();\n this.#isConnected = false;\n }\n\n async #initializeConnection(instanceId?: string) {\n const id = instanceId ?? v4();\n\n this.#logger.debug(\"Initializing connection\", {\n id,\n endpoint: this.#endpoint,\n });\n\n const headers = { Authorization: `Bearer ${this.#apiKey}` };\n\n const connection = new HostConnection(\n new WebSocket(this.#endpoint, {\n headers,\n followRedirects: true,\n }),\n { id }\n );\n\n connection.onClose.attach(async ([code, reason]) => {\n if (this.#closedByUser) {\n this.#logger.debug(\"Connection closed by user, so we won't reconnect\");\n this.#closedByUser = false;\n return;\n }\n\n this.#logger.error(`🚩 Could not connect to trigger.dev (code ${code})`);\n\n if (reason) {\n this.#logger.error(\"Reason:\", reason);\n }\n\n // If #isConnected is already false, that means we are already trying to reconnect\n if (!this.#isConnected) return;\n\n this.#logger.log(\"🔌 Reconnecting to trigger.dev...\");\n\n this.#isConnected = false;\n\n while (!this.#isConnected) {\n this.#initializeConnection(id)\n .then(() => {\n this.#logger.log(\"⚡ Reconnection successful\");\n })\n .catch(() => {});\n\n this.#logger.debug(\n `Reconnection failed, retrying in ${Math.round(\n this.#retryIntervalMs / 1000\n )} seconds`,\n id\n );\n\n await new Promise((resolve) =>\n setTimeout(resolve, this.#retryIntervalMs)\n );\n }\n });\n\n await connection.connect();\n\n this.#logger.debug(\"Connection initialized\", id);\n\n this.#connection = connection;\n this.#isConnected = true;\n\n if (this.#serverRPC) {\n this.#serverRPC.resetConnection(connection);\n await this.#initializeHost();\n }\n }\n\n async #initializeRPC() {\n if (!this.#connection) {\n throw new Error(\"Cannot initialize RPC without a connection\");\n }\n\n const serverRPC = new ZodRPC({\n connection: this.#connection,\n sender: ServerRPCSchema,\n receiver: HostRPCSchema,\n handlers: {\n RESOLVE_DELAY: async (data) => {\n this.#logger.debug(\"Handling RESOLVE_DELAY\", data);\n\n const waitCallbacks = this.#waitForCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!waitCallbacks) {\n this.#logger.debug(\n `Could not find wait callbacks for wait ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { resolve } = waitCallbacks;\n\n resolve();\n\n return true;\n },\n RESOLVE_REQUEST: async (data) => {\n this.#logger.debug(\"Handling RESOLVE_REQUEST\", data);\n\n const requestCallbacks = this.#responseCompleteCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!requestCallbacks) {\n this.#logger.debug(\n `Could not find request callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { resolve } = requestCallbacks;\n\n resolve(data.output);\n\n return true;\n },\n REJECT_REQUEST: async (data) => {\n this.#logger.debug(\"Handling REJECT_REQUEST\", data);\n\n const requestCallbacks = this.#responseCompleteCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!requestCallbacks) {\n this.#logger.debug(\n `Could not find request callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { reject } = requestCallbacks;\n\n reject(data.error);\n\n return true;\n },\n TRIGGER_WORKFLOW: async (data) => {\n this.#logger.debug(\"Handling TRIGGER_WORKFLOW\", data);\n\n const ctx: TriggerContext = {\n id: data.id,\n environment: data.meta.environment,\n apiKey: data.meta.apiKey,\n organizationId: data.meta.organizationId,\n logger: new ContextLogger(async (level, message, properties) => {\n await serverRPC.send(\"SEND_LOG\", {\n runId: data.id,\n key: message,\n log: {\n level,\n message,\n properties: JSON.stringify(properties ?? {}),\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n }),\n sendEvent: async (key, event) => {\n await serverRPC.send(\"SEND_EVENT\", {\n runId: data.id,\n key,\n event: JSON.parse(JSON.stringify(event)),\n timestamp: String(highPrecisionTimestamp()),\n });\n },\n waitFor: async (key, options) => {\n const result = new Promise<void>((resolve, reject) => {\n this.#waitForCallbacks.set(messageKey(data.id, key), {\n resolve,\n reject,\n });\n });\n\n await serverRPC.send(\"INITIALIZE_DELAY\", {\n runId: data.id,\n key,\n wait: {\n type: \"DELAY\",\n seconds: options.seconds,\n minutes: options.minutes,\n hours: options.hours,\n days: options.days,\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n await result;\n\n return;\n },\n waitUntil: async (key, date: Date) => {\n const result = new Promise<void>((resolve, reject) => {\n this.#waitForCallbacks.set(messageKey(data.id, key), {\n resolve,\n reject,\n });\n });\n\n await serverRPC.send(\"INITIALIZE_DELAY\", {\n runId: data.id,\n key,\n wait: {\n type: \"SCHEDULE_FOR\",\n scheduledFor: date.toISOString(),\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n await result;\n\n return;\n },\n };\n\n const eventData = this.#options.on.schema.parse(data.trigger.input);\n\n this.#logger.debug(\"Parsed event data\", eventData);\n\n triggerRunLocalStorage.run(\n {\n performRequest: async (key, options) => {\n const result = new Promise((resolve, reject) => {\n this.#responseCompleteCallbacks.set(\n messageKey(data.id, key),\n {\n resolve,\n reject,\n }\n );\n });\n\n await serverRPC.send(\"SEND_REQUEST\", {\n runId: data.id,\n key,\n request: {\n service: options.service,\n endpoint: options.endpoint,\n params: options.params,\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n const output = await result;\n\n return options.response.schema.parse(output);\n },\n sendEvent: async (key, event) => {\n await serverRPC.send(\"SEND_EVENT\", {\n runId: data.id,\n key,\n event: JSON.parse(JSON.stringify(event)),\n timestamp: String(highPrecisionTimestamp()),\n });\n },\n },\n () => {\n this.#logger.debug(\"Running trigger...\");\n\n serverRPC\n .send(\"START_WORKFLOW_RUN\", {\n runId: data.id,\n timestamp: String(highPrecisionTimestamp()),\n })\n .then(() => {\n return this.#trigger.options\n .run(eventData, ctx)\n .then((output) => {\n this.#logger.log(\n `Completed workflow '${this.#options.name}', run ${\n data.id\n } 🏃`\n );\n\n return serverRPC.send(\"COMPLETE_WORKFLOW_RUN\", {\n runId: data.id,\n output: JSON.stringify(output),\n timestamp: String(highPrecisionTimestamp()),\n });\n })\n .catch((anyError) => {\n const parseAnyError = (\n error: any\n ): {\n name: string;\n message: string;\n stackTrace?: string;\n } => {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stackTrace: error.stack,\n };\n }\n\n console.error(anyError);\n\n return {\n name: \"UnknownError\",\n message: \"An unknown error occurred\",\n };\n };\n\n const error = parseAnyError(anyError);\n\n return serverRPC.send(\"SEND_WORKFLOW_ERROR\", {\n runId: data.id,\n error,\n timestamp: String(highPrecisionTimestamp()),\n });\n });\n })\n .catch((anyError) => {\n return serverRPC.send(\"SEND_WORKFLOW_ERROR\", {\n runId: data.id,\n error: anyError,\n timestamp: String(highPrecisionTimestamp()),\n });\n });\n }\n );\n\n return true;\n },\n },\n });\n\n this.#logger.debug(\"Successfully initialized RPC with server\");\n\n this.#serverRPC = serverRPC;\n }\n\n async #initializeHost() {\n if (!this.#connection) {\n throw new Error(\"Cannot initialize host without a connection\");\n }\n\n if (!this.#serverRPC) {\n throw new Error(\"Cannot initialize host without an RPC connection\");\n }\n\n const response = await this.#send(\"INITIALIZE_HOST\", {\n apiKey: this.#apiKey,\n workflowId: this.#trigger.id,\n workflowName: this.#trigger.name,\n trigger: this.#trigger.on.metadata,\n packageVersion: pkg.version,\n packageName: pkg.name,\n triggerTTL: this.#options.triggerTTL,\n });\n\n if (response?.type === \"error\") {\n throw new Error(response.message);\n }\n\n this.#logger.debug(\"Successfully initialized workflow with server\");\n }\n\n async #send<MethodName extends keyof typeof ServerRPCSchema>(\n methodName: MethodName,\n request: z.input<(typeof ServerRPCSchema)[MethodName][\"request\"]>\n ) {\n if (!this.#serverRPC) throw new Error(\"serverRPC not initialized\");\n\n while (true) {\n try {\n this.#logger.debug(\n `Sending RPC request to server: ${methodName}`,\n request\n );\n\n return await this.#serverRPC.send(methodName, request);\n } catch (err) {\n if (err instanceof TimeoutError) {\n this.#logger.log(\n `RPC call timed out, retrying in ${Math.round(\n this.#retryIntervalMs / 1000\n )}s...`\n );\n\n this.#logger.error(err);\n\n await sleep(this.#retryIntervalMs);\n } else {\n throw err;\n }\n }\n }\n }\n}\n\nexport const sleep = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nconst messageKey = (runId: string, key: string) => `${runId}:${key}`;\n\nfunction highPrecisionTimestamp() {\n const [seconds, nanoseconds] = process.hrtime();\n\n return seconds * 1e9 + nanoseconds;\n}\n","import type { WebSocket as NodeWebSocket } from \"ws\";\nimport { v4 } from \"uuid\";\nimport { Evt } from \"evt\";\nimport { IConnection, Logger, MESSAGE_META } from \"internal-bridge\";\n\nexport class TimeoutError extends Error {}\nexport class NotConnectedError extends Error {}\n\ntype PendingMessage = {\n data: string;\n onAckReceived: () => void;\n};\n\nexport type ConnectionOptions = {\n connectTimeout?: number;\n sendTimeout?: number;\n pingTimeout?: number;\n id?: string;\n};\n\nexport class HostConnection implements IConnection {\n id: string;\n onMessage: Evt<string>;\n onAuthenticated: Evt<void>;\n onClose: Evt<[number, string]>;\n onOpen: Evt<void>;\n onError: Evt<Error>;\n\n #socket: WebSocket | NodeWebSocket;\n\n #connectTimeout: number;\n #sendTimeout: number;\n #pingTimeout: number;\n #isAuthenticated: boolean = false;\n #timeouts: Set<NodeJS.Timeout>;\n #isClosed: boolean = false;\n #pendingMessages = new Map<string, PendingMessage>();\n #logger: Logger;\n\n #pingIntervalHandle: NodeJS.Timeout | undefined;\n #pingIntervalMs: number = 30_000; // 30 seconds\n #closeUnresponsiveConnectionTimeoutMs: number = 3 * 60 * 1000; // 3 minutes\n\n constructor(socket: WebSocket | NodeWebSocket, options?: ConnectionOptions) {\n this.#socket = socket;\n this.id = options?.id ?? v4();\n\n this.onMessage = new Evt();\n this.onAuthenticated = new Evt<void>();\n this.onClose = new Evt<[number, string]>();\n this.onOpen = new Evt();\n this.onError = new Evt<Error>();\n\n this.#connectTimeout = options?.connectTimeout ?? 5000;\n this.#sendTimeout = options?.sendTimeout ?? 5000;\n this.#pingTimeout = options?.pingTimeout ?? 5000;\n\n this.#timeouts = new Set();\n\n this.#logger = new Logger(\"trigger.dev connection\");\n\n this.onClose.attach(() => {\n this.#isClosed = true;\n\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n\n for (const timeout of this.#timeouts) {\n clearTimeout(timeout);\n }\n\n this.#timeouts.clear();\n });\n\n this.#socket.onopen = () => {\n this.#isClosed = false;\n this.onOpen.post();\n\n this.#startPingInterval();\n };\n\n this.#socket.onclose = (ev: CloseEvent) => {\n this.onClose.post([ev.code, ev.reason]);\n };\n\n this.#socket.onerror = (ev: ErrorEvent | Event) => {\n const message = \"message\" in ev ? ev.message : \"Unknown error\";\n\n this.onError.post(new Error(message));\n };\n\n this.#socket.onmessage = (event: MessageEvent) => {\n if (this.#isClosed) return;\n\n const data = JSON.parse(event.data.toString());\n const metadata = MESSAGE_META.parse(data);\n\n if (metadata.type === \"ACK\") {\n const pendingMessage = this.#pendingMessages.get(metadata.id);\n\n if (pendingMessage) {\n pendingMessage.onAckReceived();\n this.#pendingMessages.delete(metadata.id);\n }\n }\n\n if (metadata.type === \"MESSAGE\") {\n socket.send(JSON.stringify({ type: \"ACK\", id: metadata.id }));\n\n if (metadata.data === \"AUTHENTICATED\") {\n this.#isAuthenticated = true;\n this.onAuthenticated.post();\n return;\n }\n\n this.onMessage.post(metadata.data);\n }\n };\n\n if (\"pong\" in socket) {\n socket.on(\"pong\", (buf) => {\n const id = buf.toString();\n const pendingMessage = this.#pendingMessages.get(id);\n\n if (pendingMessage?.data === \"ping\") {\n pendingMessage.onAckReceived();\n }\n });\n }\n }\n\n async connect() {\n this.#logger.debug(\"[connect] Attempting to connect\");\n\n return new Promise<void>((resolve, reject) => {\n if (\n this.#socket.readyState === this.#socket.OPEN &&\n this.#isAuthenticated\n ) {\n this.#logger.debug(\"[connect] Already connected, resolving\");\n\n return resolve();\n }\n\n const failTimeout = setTimeout(() => {\n this.#logger.debug(\"[connect] Connection timed out, rejecting\");\n\n reject(new TimeoutError());\n }, this.#connectTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.onAuthenticated.attach(() => {\n clearTimeout(failTimeout);\n this.#timeouts.delete(failTimeout);\n\n this.#logger.debug(\"[connect] Connected, resolving\");\n\n resolve();\n });\n });\n }\n\n async send(data: string) {\n if (this.#isClosed) throw new NotConnectedError();\n\n return new Promise<void>((resolve, reject) => {\n const id = v4();\n\n const failTimeout = setTimeout(() => {\n reject(new TimeoutError());\n }, this.#sendTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.#pendingMessages.set(id, {\n data,\n onAckReceived: () => {\n clearTimeout(failTimeout);\n\n this.#timeouts.delete(failTimeout);\n\n resolve();\n },\n });\n\n this.#socket.send(JSON.stringify({ id, data, type: \"MESSAGE\" }));\n });\n }\n\n close(code?: number, reason?: string) {\n this.#isClosed = true;\n this.onMessage.detach();\n return this.#socket.close(code, reason);\n }\n\n #startPingInterval() {\n // Do the ping stuff here\n let lastSuccessfulPing = new Date();\n this.#pingIntervalHandle = setInterval(async () => {\n if (!this.#socket.OPEN) {\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n\n return;\n }\n\n try {\n await this.#ping();\n lastSuccessfulPing = new Date();\n } catch (err) {\n this.#logger.warn(\"Pong not received in time\");\n if (!(err instanceof TimeoutError)) {\n this.#logger.error(err);\n }\n\n if (\n lastSuccessfulPing.getTime() <\n new Date().getTime() - this.#closeUnresponsiveConnectionTimeoutMs\n ) {\n this.#logger.error(\n \"No pong received in last three minutes, closing connection to Interval and retrying...\"\n );\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n this.#socket.close();\n }\n }\n }, this.#pingIntervalMs);\n }\n\n async #ping() {\n if (!this.#socket.OPEN) {\n throw new NotConnectedError();\n }\n\n if (!(\"ping\" in this.#socket)) {\n // Not supported in web client WebSocket\n throw new Error(\n \"ping not supported in this underlying websocket connection\"\n );\n }\n\n const socket = this.#socket;\n\n return new Promise<void>((resolve, reject) => {\n const id = v4();\n\n const failTimeout = setTimeout(() => {\n reject(new TimeoutError(\"Pong not received in time\"));\n }, this.#pingTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.#pendingMessages.set(id, {\n data: \"ping\",\n onAckReceived: () => {\n clearTimeout(failTimeout);\n\n this.#timeouts.delete(failTimeout);\n\n this.#logger.debug(`Resolving ping`);\n\n resolve();\n },\n });\n\n this.#logger.debug(`Sending ping ${id} to ${socket.url}`);\n\n socket.ping(id, undefined, (err) => {\n if (err) {\n reject(err);\n }\n });\n });\n }\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { z } from \"zod\";\nimport { TriggerCustomEvent } from \"./types\";\n\ntype PerformRequestOptions<TSchema extends z.ZodTypeAny> = {\n service: string;\n params: unknown;\n endpoint: string;\n response: {\n schema: TSchema;\n };\n};\n\ntype TriggerRunLocalStorage = {\n performRequest: <TSchema extends z.ZodTypeAny>(\n key: string,\n options: PerformRequestOptions<TSchema>\n ) => Promise<z.infer<TSchema>>;\n sendEvent: (key: string, event: TriggerCustomEvent) => Promise<void>;\n};\n\nexport const triggerRunLocalStorage =\n new AsyncLocalStorage<TriggerRunLocalStorage>();\n","import { TriggerLogger } from \"./types\";\n\ntype CallbackFunction = (\n level: \"DEBUG\" | \"INFO\" | \"WARN\" | \"ERROR\",\n message: string,\n properties?: Record<string, any>\n) => Promise<void>;\n\nexport class ContextLogger implements TriggerLogger {\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 { TriggerClient } from \"../client\";\nimport { LogLevel } from \"internal-bridge\";\nimport { TriggerEvent } from \"../events\";\n\nimport type { TriggerContext } from \"../types\";\nimport { z } from \"zod\";\n\nexport type TriggerOptions<TSchema extends z.ZodTypeAny> = {\n id: string;\n name: string;\n on: TriggerEvent<TSchema>;\n apiKey?: string;\n endpoint?: string;\n logLevel?: LogLevel;\n\n /**\n * The TTL for the trigger in seconds. If the trigger is not run within this time, it will be aborted. Defaults to 3600 seconds (1 hour).\n * @type {number}\n */\n triggerTTL?: number;\n\n run: (event: z.infer<TSchema>, ctx: TriggerContext) => Promise<any>;\n};\n\nexport class Trigger<TSchema extends z.ZodTypeAny> {\n options: TriggerOptions<TSchema>;\n #client: TriggerClient<TSchema> | undefined;\n\n constructor(options: TriggerOptions<TSchema>) {\n this.options = options;\n }\n\n async listen() {\n if (!this.#client) {\n this.#client = new TriggerClient(this, this.options);\n }\n\n return this.#client.listen();\n }\n\n get id() {\n return this.options.id;\n }\n\n get name() {\n return this.options.name;\n }\n\n get endpoint() {\n return this.options.endpoint;\n }\n\n get on() {\n return this.options.on;\n }\n}\n","import { triggerRunLocalStorage } from \"./localStorage\";\nimport type { TriggerCustomEvent } from \"./types\";\nimport fetch from \"node-fetch\";\nimport { ulid } from \"ulid\";\n\nexport function sendEvent(\n id: string,\n event: TriggerCustomEvent\n): Promise<void> {\n const triggerRun = triggerRunLocalStorage.getStore();\n\n if (!triggerRun) {\n // Do it through the API\n return sendEventFetch(event);\n }\n\n return triggerRun.sendEvent(id, event);\n}\n\nasync function sendEventFetch(event: TriggerCustomEvent): Promise<void> {\n if (!process.env.TRIGGER_API_KEY) {\n throw new Error(\n `There was a problem sending a custom event: the TRIGGER_API_KEY environment variable is not set`\n );\n }\n\n const id = ulid();\n\n const baseUrl = process.env.TRIGGER_API_URL || \"https://app.trigger.dev\";\n const url = `${baseUrl}/api/v1/events`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${process.env.TRIGGER_API_KEY}`,\n },\n body: JSON.stringify({\n id,\n event,\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n `There was a problem sending a custom event: ${response.statusText}`\n );\n }\n\n return;\n}\n"],"mappings":"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","names":["LiteralSchema","z","union","string","number","boolean","null","JsonSchema","lazy","array","record","SerializableSchema","date","SerializableJsonSchema","import_zod","ErrorSchema","z","object","name","string","message","stackTrace","optional","import_zod","LogMessageSchema","z","object","level","enum","message","string","properties","JsonSchema","default","import_zod","DelaySchema","z","object","type","literal","seconds","number","optional","minutes","hours","days","ScheduledForSchema","scheduledFor","string","datetime","WaitSchema","discriminatedUnion","import_zod","CustomEventSchema","z","object","name","string","payload","JsonSchema","context","optional","timestamp","datetime","SerializableCustomEventSchema","SerializableJsonSchema","EventMatcherSchema","union","array","number","boolean","EventFilterSchema","lazy","record","ScheduledEventPayloadSchema","scheduledTime","coerce","date","ScheduleSourceRateSchema","rateOf","minutes","min","max","int","hours","days","ScheduleSourceCronSchema","cron","ScheduleSourceSchema","import_zod","CustomEventTriggerSchema","z","object","type","literal","service","name","string","filter","EventFilterSchema","WebhookEventTriggerSchema","source","JsonSchema","HttpEventTriggerSchema","ScheduledEventTriggerSchema","ScheduleSourceSchema","TriggerMetadataSchema","discriminatedUnion","customEvent","options","metadata","type","service","name","filter","event","schema","scheduleEvent","source","ScheduledEventPayloadSchema","import_zod","HostRPCSchema","TRIGGER_WORKFLOW","request","z","object","id","string","trigger","input","JsonSchema","default","context","meta","environment","workflowId","organizationId","apiKey","response","boolean","RESOLVE_REQUEST","key","output","runId","RESOLVE_DELAY","REJECT_REQUEST","error","import_zod","ServerRPCSchema","INITIALIZE_DELAY","request","z","object","runId","string","key","wait","WaitSchema","timestamp","response","boolean","SEND_REQUEST","service","endpoint","params","any","SEND_LOG","log","message","level","enum","properties","optional","SEND_EVENT","event","CustomEventSchema","INITIALIZE_HOST","apiKey","workflowId","workflowName","trigger","TriggerMetadataSchema","packageVersion","packageName","triggerTTL","number","discriminatedUnion","type","literal","nullable","START_WORKFLOW_RUN","COMPLETE_WORKFLOW_RUN","output","SEND_WORKFLOW_ERROR","error","name","stackTrace","import_zod","MESSAGE_META","z","object","data","any","id","string","type","union","literal","TriggerEnvironmentSchema","enum","import_zod","logLevels","Logger","constructor","name","level","indexOf","process","env","TRIGGER_LOG_LEVEL","log","args","console","error","formattedDateTime","warn","info","debug","date","Date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","formattedHours","formattedMinutes","formattedSeconds","formattedMilliseconds","RPCMessageSchema","z","object","id","string","methodName","data","any","kind","enum","ZodRPC","constructor","options","Map","Logger","connection","sender","receiver","handlers","onMessage","attach","bind","resetConnection","detach","send","key","generateStableId","message","packageMessage","Promise","resolve","reject","set","rawResponseText","parsed","parse","err","catch","rawData","JSON","error","callError","ZodError","stringify","errors","flatten","method","Error","debug","inputs","request","handler","returnValue","preparedResponseText","packageResponse","responseCallback","get","delete","connId","reqKey","reqData","serializedData","inputString","hash","createHash","update","digest","callerData","import_uuid","TimeoutError","Error","NotConnectedError","_logger","HostConnection","constructor","socket","options","Map","id","v4","onMessage","Evt","onAuthenticated","onClose","onOpen","onError","connectTimeout","sendTimeout","pingTimeout","Set","Logger","attach","clearInterval","undefined","timeout","clearTimeout","clear","onopen","post","onclose","ev","code","reason","onerror","message","onmessage","event","data","JSON","parse","toString","metadata","MESSAGE_META","type","pendingMessage","get","onAckReceived","delete","send","stringify","on","buf","connect","debug","Promise","resolve","reject","readyState","OPEN","failTimeout","setTimeout","add","set","close","detach","lastSuccessfulPing","Date","setInterval","err","warn","error","getTime","url","ping","triggerRunLocalStorage","AsyncLocalStorage","ContextLogger","constructor","callback","debug","message","properties","info","warn","error","_connection","_logger","TriggerClient","constructor","trigger","options","Map","apiKey","process","env","TRIGGER_API_KEY","Error","endpoint","Logger","logLevel","listen","instanceId","close","undefined","id","v4","debug","headers","Authorization","connection","HostConnection","WebSocket","followRedirects","onClose","attach","code","reason","error","log","then","catch","Math","round","Promise","resolve","setTimeout","connect","resetConnection","serverRPC","ZodRPC","sender","ServerRPCSchema","receiver","HostRPCSchema","handlers","RESOLVE_DELAY","data","waitCallbacks","get","messageKey","meta","runId","key","RESOLVE_REQUEST","requestCallbacks","output","REJECT_REQUEST","reject","TRIGGER_WORKFLOW","ctx","environment","organizationId","logger","ContextLogger","level","message","properties","send","JSON","stringify","timestamp","String","highPrecisionTimestamp","sendEvent","event","parse","waitFor","result","set","wait","type","seconds","minutes","hours","days","waitUntil","date","scheduledFor","toISOString","eventData","on","schema","input","triggerRunLocalStorage","run","performRequest","request","service","params","response","name","anyError","parseAnyError","stackTrace","stack","console","workflowId","workflowName","metadata","packageVersion","version","packageName","triggerTTL","methodName","err","TimeoutError","sleep","ms","nanoseconds","hrtime","Trigger","constructor","options","listen","TriggerClient","id","name","endpoint","on","sendEvent","id","event","triggerRun","triggerRunLocalStorage","getStore","sendEventFetch","process","env","TRIGGER_API_KEY","Error","ulid","baseUrl","TRIGGER_API_URL","url","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","statusText","getTriggerRun","triggerRunLocalStorage","getStore"]}
1
+ {"version":3,"sources":["../src/index.ts","../../common-schemas/src/json.ts","../../common-schemas/src/error.ts","../../common-schemas/src/logs.ts","../../common-schemas/src/waits.ts","../../common-schemas/src/events.ts","../../common-schemas/src/triggers.ts","../../common-schemas/src/fetch.ts","../src/events.ts","../../internal-bridge/src/schemas/host.ts","../../internal-bridge/src/schemas/server.ts","../../internal-bridge/src/schemas/common.ts","../../internal-bridge/src/zodRPC.ts","../../internal-bridge/src/logger.ts","../src/client.ts","../src/connection.ts","../src/localStorage.ts","../src/logger.ts","../src/trigger/index.ts","../src/customEvents.ts","../src/fetch.ts"],"sourcesContent":["export * from \"./events\";\nexport * from \"./trigger\";\nexport * from \"./customEvents\";\nexport * from \"./fetch\";\n\nimport { triggerRunLocalStorage } from \"./localStorage\";\nimport { SecureString } from \"./types\";\n\nexport function getTriggerRun() {\n return triggerRunLocalStorage.getStore();\n}\n\n/*\n * This function is used to create a secure 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: secureString`Bearer ${ACCESS_TOKEN}`,\n * },\n * })\n */\nexport function secureString(\n strings: TemplateStringsArray,\n ...interpolations: string[]\n): SecureString {\n return {\n __secureString: true,\n strings: strings.raw as string[],\n interpolations,\n };\n}\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\ntype Json = Literal | { [key: string]: Json } | Json[];\n\nexport const JsonSchema: z.ZodType<Json> = z.lazy(() =>\n z.union([LiteralSchema, z.array(JsonSchema), z.record(JsonSchema)])\n);\n\nconst SerializableSchema = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.date(),\n]);\ntype Serializable = z.infer<typeof SerializableSchema>;\n\ntype 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 ErrorSchema = z.object({\n name: z.string(),\n message: z.string(),\n stackTrace: z.string().optional(),\n});\n","import { z } from \"zod\";\nimport { JsonSchema } from \"./json\";\n\nexport const LogMessageSchema = z.object({\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n message: z.string(),\n properties: JsonSchema.default({}),\n});\n","import { z } from \"zod\";\n\nexport const DelaySchema = z.object({\n type: z.literal(\"DELAY\"),\n seconds: z.number().optional(),\n minutes: z.number().optional(),\n hours: z.number().optional(),\n days: z.number().optional(),\n});\n\nexport type Delay = z.infer<typeof DelaySchema>;\n\nexport const ScheduledForSchema = z.object({\n type: z.literal(\"SCHEDULE_FOR\"),\n scheduledFor: z.string().datetime(),\n});\n\nexport type Scheduled = z.infer<typeof ScheduledForSchema>;\n\nexport const WaitSchema = z.discriminatedUnion(\"type\", [\n DelaySchema,\n ScheduledForSchema,\n]);\n","import { z } from \"zod\";\nimport { JsonSchema, SerializableJsonSchema } from \"./json\";\n\nexport const CustomEventSchema = z.object({\n name: z.string(),\n payload: JsonSchema,\n context: JsonSchema.optional(),\n timestamp: z.string().datetime().optional(),\n});\n\nexport const SerializableCustomEventSchema = z.object({\n name: z.string(),\n payload: SerializableJsonSchema,\n context: SerializableJsonSchema.optional(),\n timestamp: z.string().datetime().optional(),\n});\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 ScheduledEventPayloadSchema = z.object({\n scheduledTime: z.coerce.date(),\n});\n\nexport type ScheduledEventPayload = z.infer<typeof ScheduledEventPayloadSchema>;\n\nexport const ScheduleSourceRateSchema = z.object({\n rateOf: z.union([\n z.object({\n minutes: z.number().min(1).max(1440).int(),\n }),\n z.object({\n hours: z.number().min(1).max(720).int(),\n }),\n z.object({\n days: z.number().min(1).max(365).int(),\n }),\n ]),\n});\n\nexport type ScheduleSourceRate = z.infer<typeof ScheduleSourceRateSchema>;\n\nexport const ScheduleSourceCronSchema = z.object({\n cron: z.string(),\n});\n\nexport type ScheduleSourceCron = z.infer<typeof ScheduleSourceCronSchema>;\n\nexport const ScheduleSourceSchema = z.union([\n ScheduleSourceRateSchema,\n ScheduleSourceCronSchema,\n]);\n\nexport type ScheduleSource = z.infer<typeof ScheduleSourceSchema>;\n","import { z } from \"zod\";\nimport { EventFilterSchema, ScheduleSourceSchema } from \"./events\";\nimport { JsonSchema } from \"./json\";\n\nexport const CustomEventTriggerSchema = z.object({\n type: z.literal(\"CUSTOM_EVENT\"),\n service: z.literal(\"trigger\"),\n name: z.string(),\n filter: EventFilterSchema,\n});\nexport type CustomEventTrigger = z.infer<typeof CustomEventTriggerSchema>;\n\nexport const WebhookEventTriggerSchema = z.object({\n type: z.literal(\"WEBHOOK\"),\n service: z.string(),\n name: z.string(),\n filter: EventFilterSchema,\n source: JsonSchema,\n});\nexport type WebhookEventTrigger = z.infer<typeof WebhookEventTriggerSchema>;\n\nexport const HttpEventTriggerSchema = z.object({\n type: z.literal(\"HTTP_ENDPOINT\"),\n service: z.literal(\"trigger\"),\n name: z.string(),\n filter: EventFilterSchema,\n});\nexport type HttpEventTrigger = z.infer<typeof HttpEventTriggerSchema>;\n\nexport const ScheduledEventTriggerSchema = z.object({\n type: z.literal(\"SCHEDULE\"),\n service: z.literal(\"scheduler\"),\n name: z.string(),\n source: ScheduleSourceSchema,\n});\nexport type ScheduledEventTrigger = z.infer<typeof ScheduledEventTriggerSchema>;\n\nexport const TriggerMetadataSchema = z.discriminatedUnion(\"type\", [\n CustomEventTriggerSchema,\n WebhookEventTriggerSchema,\n HttpEventTriggerSchema,\n ScheduledEventTriggerSchema,\n]);\n\nexport type TriggerMetadata = z.infer<typeof TriggerMetadataSchema>;\n","import { z } from \"zod\";\n\nexport const SecureStringSchema = z.object({\n __secureString: z.literal(true),\n strings: z.array(z.string()),\n interpolations: z.array(z.string()),\n});\n\nexport type SecureString = z.infer<typeof SecureStringSchema>;\n\nexport const FetchRequestSchema = z.object({\n url: z.string(),\n headers: z.record(z.union([z.string(), SecureStringSchema])).optional(),\n method: z.enum([\n \"GET\",\n \"POST\",\n \"PUT\",\n \"DELETE\",\n \"PATCH\",\n \"HEAD\",\n \"OPTIONS\",\n \"TRACE\",\n ]),\n body: z.any(),\n});\n\nexport const FetchOutputSchema = z.object({\n status: z.number(),\n ok: z.boolean(),\n headers: z.record(z.string()),\n body: z.any().optional(),\n});\n\nexport type FetchRequest = z.infer<typeof FetchRequestSchema>;\nexport type FetchOutput = z.infer<typeof FetchOutputSchema>;\n\nexport const FetchResponseSchema = z.object({\n status: z.number(),\n headers: z.record(z.string()),\n body: z.any().optional(),\n});\n","import {\n EventFilterSchema,\n TriggerMetadataSchema,\n ScheduleSourceSchema,\n ScheduledEventPayloadSchema,\n} from \"@trigger.dev/common-schemas\";\nimport { z } from \"zod\";\n\nexport type EventRule = z.infer<typeof EventFilterSchema>;\n\nexport type TriggerEvent<TSchema extends z.ZodTypeAny> = {\n metadata: z.infer<typeof TriggerMetadataSchema>;\n schema: TSchema;\n};\n\nexport type TriggerCustomEventOptions<TSchema extends z.ZodTypeAny> = {\n name: string;\n schema: TSchema;\n};\n\nexport function customEvent<TSchema extends z.ZodTypeAny>(\n options: TriggerCustomEventOptions<TSchema>\n): TriggerEvent<TSchema> {\n return {\n metadata: {\n type: \"CUSTOM_EVENT\",\n service: \"trigger\",\n name: options.name,\n filter: { event: [options.name] },\n },\n schema: options.schema,\n };\n}\n\nexport type TriggerScheduleOptions = z.infer<typeof ScheduleSourceSchema>;\n\nexport function scheduleEvent(\n options: TriggerScheduleOptions\n): TriggerEvent<typeof ScheduledEventPayloadSchema> {\n return {\n metadata: {\n type: \"SCHEDULE\",\n service: \"scheduler\",\n name: \"scheduled-event\",\n source: options,\n },\n schema: ScheduledEventPayloadSchema,\n };\n}\n","import { z } from \"zod\";\nimport { FetchOutputSchema, JsonSchema } from \"@trigger.dev/common-schemas\";\n\nexport const HostRPCSchema = {\n TRIGGER_WORKFLOW: {\n request: z.object({\n id: z.string(),\n trigger: z.object({\n input: JsonSchema.default({}),\n context: JsonSchema.default({}),\n }),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n RESOLVE_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n output: JsonSchema.default({}),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n RESOLVE_DELAY: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n REJECT_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n error: JsonSchema.default({}),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n RESOLVE_FETCH_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n output: FetchOutputSchema,\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n REJECT_FETCH_REQUEST: {\n request: z.object({\n id: z.string(),\n key: z.string(),\n error: JsonSchema.default({}),\n meta: z.object({\n environment: z.string(),\n workflowId: z.string(),\n organizationId: z.string(),\n apiKey: z.string(),\n runId: z.string(),\n }),\n }),\n response: z.boolean(),\n },\n};\n\nexport type HostRPC = typeof HostRPCSchema;\n","import {\n CustomEventSchema,\n FetchRequestSchema,\n TriggerMetadataSchema,\n WaitSchema,\n} from \"@trigger.dev/common-schemas\";\nimport { z } from \"zod\";\n\nexport const ServerRPCSchema = {\n INITIALIZE_DELAY: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n wait: WaitSchema,\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_REQUEST: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n request: z.object({\n service: z.string(),\n endpoint: z.string(),\n params: z.any(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_FETCH: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n fetch: FetchRequestSchema,\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_LOG: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n log: z.object({\n message: z.string(),\n level: z.enum([\"DEBUG\", \"INFO\", \"WARN\", \"ERROR\"]),\n properties: z.string().optional(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_EVENT: {\n request: z.object({\n runId: z.string(),\n key: z.string(),\n event: CustomEventSchema,\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n INITIALIZE_HOST: {\n request: z.object({\n apiKey: z.string(),\n workflowId: z.string(),\n workflowName: z.string(),\n trigger: TriggerMetadataSchema,\n packageVersion: z.string(),\n packageName: z.string(),\n triggerTTL: z.number().optional(),\n }),\n response: z\n .discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"success\"),\n }),\n z.object({\n type: z.literal(\"error\"),\n message: z.string(),\n }),\n ])\n .nullable(),\n },\n START_WORKFLOW_RUN: {\n request: z.object({\n runId: z.string(),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n COMPLETE_WORKFLOW_RUN: {\n request: z.object({\n runId: z.string(),\n output: z.string().optional(),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n SEND_WORKFLOW_ERROR: {\n request: z.object({\n runId: z.string(),\n error: z.object({\n name: z.string(),\n message: z.string(),\n stackTrace: z.string().optional(),\n }),\n timestamp: z.string(),\n }),\n response: z.boolean(),\n },\n};\n\nexport type ServerRPC = typeof ServerRPCSchema;\n","import { z } from \"zod\";\n\nexport const MESSAGE_META = z.object({\n data: z.any(),\n id: z.string(),\n type: z.union([z.literal(\"ACK\"), z.literal(\"MESSAGE\")]),\n});\n\nexport const TriggerEnvironmentSchema = z.enum([\"live\", \"development\"]);\nexport type TriggerEnvironment = z.infer<typeof TriggerEnvironmentSchema>;\n","import { z, ZodError } from \"zod\";\nimport { createHash } from \"node:crypto\";\nimport { IConnection } from \"./types\";\nimport { Logger } from \"./logger\";\n\nexport const RPCMessageSchema = z.object({\n id: z.string(),\n methodName: z.string(),\n data: z.any(),\n kind: z.enum([\"CALL\", \"RESPONSE\"]),\n});\n\nexport type RPCMessage = z.infer<typeof RPCMessageSchema>;\n\ninterface TransmitterSchema {\n [key: string]: {\n request: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion<any, any>;\n response: z.ZodFirstPartySchemaTypes | z.ZodDiscriminatedUnion<any, any>;\n };\n}\n\nexport type ZodRPCHandlers<ReceiverSchema extends TransmitterSchema> = {\n [K in keyof ReceiverSchema]: (\n data: z.infer<ReceiverSchema[K][\"request\"]>\n ) => Promise<z.infer<ReceiverSchema[K][\"response\"]>>;\n};\n\ntype ZodRPCOptions<\n SenderSchema extends TransmitterSchema,\n ReceiverSchema extends TransmitterSchema\n> = {\n connection: IConnection;\n sender: SenderSchema;\n receiver: ReceiverSchema;\n handlers: ZodRPCHandlers<ReceiverSchema>;\n};\n\ntype onResponseCallback = (data: any) => void;\n\nexport class ZodRPC<\n SenderSchema extends TransmitterSchema,\n ReceiverSchema extends TransmitterSchema\n> {\n #connection: IConnection;\n #sender: SenderSchema;\n #receiver: ReceiverSchema;\n #handlers: ZodRPCHandlers<ReceiverSchema>;\n #pendingCalls = new Map<string, onResponseCallback>();\n #logger: Logger = new Logger(\"ZodRPC\");\n\n constructor(options: ZodRPCOptions<SenderSchema, ReceiverSchema>) {\n this.#connection = options.connection;\n this.#sender = options.sender;\n this.#receiver = options.receiver;\n this.#handlers = options.handlers;\n\n this.#connection.onMessage.attach(this.#onMessage.bind(this));\n }\n\n public resetConnection(connection: IConnection) {\n this.#connection.onMessage.detach();\n this.#connection = connection;\n this.#connection.onMessage.attach(this.#onMessage.bind(this));\n }\n\n async #onMessage(rawData: unknown) {\n try {\n const data = RPCMessageSchema.parse(JSON.parse(rawData as string));\n\n if (data.kind === \"CALL\") {\n await this.#onCall(data);\n }\n\n if (data.kind === \"RESPONSE\") {\n await this.#onResponse(data);\n }\n } catch (err) {\n this.#logger.error(err);\n }\n }\n\n async #onCall(message: RPCMessage) {\n try {\n await this.#handleCall(message);\n } catch (callError) {\n if (callError instanceof ZodError) {\n this.#logger.error(\n `[ZodRPC] Received invalid call:\\n${JSON.stringify(message)}: `,\n callError.errors\n );\n } else {\n this.#logger.error(\n `[ZodRPC] Error handling call:\\n${JSON.stringify(message)}: `,\n callError\n );\n }\n }\n }\n\n async #onResponse(message: RPCMessage) {\n try {\n await this.#handleResponse(message);\n } catch (callError) {\n if (callError instanceof ZodError) {\n this.#logger.error(\n `[ZodRPC] Received invalid response\\n\\n${JSON.stringify(message)}: `,\n callError.flatten()\n );\n } else {\n this.#logger.error(\n `[ZodRPC] Error handling response\\n\\n${JSON.stringify(message)}: `,\n callError\n );\n }\n }\n }\n\n public send<K extends keyof SenderSchema>(\n key: K,\n data: z.infer<SenderSchema[K][\"request\"]>\n ) {\n const id = generateStableId(this.#connection.id, key as string, data);\n\n const message = packageMessage({ id, methodName: key as string, data });\n\n return new Promise<z.infer<SenderSchema[K][\"response\"]>>(\n (resolve, reject) => {\n this.#pendingCalls.set(id, (rawResponseText: string) => {\n try {\n const parsed = this.#sender[key][\"response\"].parse(rawResponseText);\n\n return resolve(parsed);\n } catch (err) {\n reject(err);\n }\n });\n\n this.#connection.send(message).catch((err) => reject(err));\n }\n );\n }\n\n async #handleCall(message: RPCMessage) {\n const receiver = this.#receiver;\n type MethodKeys = keyof typeof receiver;\n\n const methodName = message.methodName as MethodKeys;\n\n const method: ReceiverSchema[MethodKeys] | undefined =\n this.#receiver[methodName];\n\n if (!method) {\n throw new Error(`There is no method for ${message.methodName}`);\n }\n\n this.#logger.debug(\"Received call\", { message });\n\n // struggling to get real inference here\n const inputs = method.request.parse(message.data);\n\n const handler = this.#handlers[methodName];\n\n const returnValue = await handler(inputs);\n\n const preparedResponseText = packageResponse({\n id: message.id,\n methodName: methodName as string, //??\n data: returnValue,\n });\n\n try {\n await this.#connection.send(preparedResponseText);\n } catch (err) {\n this.#logger.error(\"Failed sending response\", preparedResponseText, err);\n }\n\n return;\n }\n\n async #handleResponse(message: RPCMessage) {\n const responseCallback = this.#pendingCalls.get(message.id);\n if (!responseCallback) return;\n\n responseCallback(message.data);\n\n this.#pendingCalls.delete(message.id);\n }\n}\n\n// Generates a stableId for a given request, based on:\n// - The connection id\n// - The request key\n// - The request data (serialized)\n// Returns a hash of the above\nfunction generateStableId(\n connId: string,\n reqKey: string,\n reqData: any\n): string {\n // Serialize the request data\n const serializedData = JSON.stringify(reqData);\n\n // Concatenate the connection id, request key, and serialized data\n const inputString = connId + reqKey + serializedData;\n\n // Generate a hash of the input string using the SHA-256 algorithm\n const hash = createHash(\"sha256\").update(inputString).digest(\"hex\");\n\n // Return the hash\n return hash;\n}\n\nfunction packageMessage({ id, methodName, data }: Omit<RPCMessage, \"kind\">) {\n const callerData: RPCMessage = {\n id,\n kind: \"CALL\",\n data,\n methodName,\n };\n\n return JSON.stringify(callerData);\n}\n\nfunction packageResponse({ id, methodName, data }: Omit<RPCMessage, \"kind\">) {\n const preparedResponseText: RPCMessage = {\n id: id,\n kind: \"RESPONSE\",\n methodName: methodName,\n data,\n };\n return JSON.stringify(preparedResponseText);\n}\n","// Create a logger class that uses the debug package internally\n\nconst logLevels = [\n \"disabled\",\n \"log\",\n \"error\",\n \"warn\",\n \"info\",\n \"debug\",\n] as const;\n\nexport type LogLevel = (typeof logLevels)[number];\n\nexport class Logger {\n #name: string;\n readonly #level: number;\n\n constructor(name: string, level: LogLevel = \"disabled\") {\n this.#name = name;\n this.#level = logLevels.indexOf(\n (process.env.TRIGGER_LOG_LEVEL ?? level) as LogLevel\n );\n }\n\n log(...args: any[]) {\n if (this.#level < 1) return;\n\n console.log(`[${this.#name}] `, ...args);\n }\n\n error(...args: any[]) {\n if (this.#level < 2) return;\n\n console.error(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n warn(...args: any[]) {\n if (this.#level < 3) return;\n\n console.warn(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n info(...args: any[]) {\n if (this.#level < 4) return;\n\n console.info(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n debug(...args: any[]) {\n if (this.#level < 5) return;\n\n console.debug(`[${formattedDateTime()}] [${this.#name}] `, ...args);\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","import { FetchOutput } from \"@trigger.dev/common-schemas\";\nimport {\n HostRPCSchema,\n Logger,\n ServerRPCSchema,\n ZodRPC,\n} from \"internal-bridge\";\nimport { v4 } from \"uuid\";\nimport { WebSocket } from \"ws\";\nimport { z } from \"zod\";\nimport * as pkg from \"../package.json\";\nimport { HostConnection, TimeoutError } from \"./connection\";\nimport { triggerRunLocalStorage } from \"./localStorage\";\nimport { ContextLogger } from \"./logger\";\nimport { Trigger, TriggerOptions } from \"./trigger\";\nimport { TriggerContext, TriggerFetch } from \"./types\";\nimport { generateErrorMessage, ErrorMessageOptions } from \"zod-error\";\n\nconst zodErrorMessageOptions: ErrorMessageOptions = {\n delimiter: {\n error: \" 🔥 \",\n },\n};\n\nexport class TriggerClient<TSchema extends z.ZodTypeAny> {\n #trigger: Trigger<TSchema>;\n #options: TriggerOptions<TSchema>;\n\n #connection?: HostConnection;\n #serverRPC?: ZodRPC<typeof ServerRPCSchema, typeof HostRPCSchema>;\n\n #apiKey: string;\n #endpoint: string;\n\n #isConnected = false;\n #retryIntervalMs: number = 3_000;\n #logger: Logger;\n #closedByUser = false;\n\n #responseCompleteCallbacks = new Map<\n string,\n {\n resolve: (output: any) => void;\n reject: (err?: any) => void;\n }\n >();\n\n #waitForCallbacks = new Map<\n string,\n {\n resolve: () => void;\n reject: (err?: any) => void;\n }\n >();\n\n #fetchCallbacks = new Map<\n string,\n {\n resolve: (output: FetchOutput) => void;\n reject: (err?: any) => void;\n }\n >();\n\n constructor(trigger: Trigger<TSchema>, options: TriggerOptions<TSchema>) {\n this.#trigger = trigger;\n this.#options = options;\n\n const apiKey = this.#options.apiKey ?? process.env.TRIGGER_API_KEY;\n\n if (!apiKey) {\n throw new Error(\n \"Cannot connect to Trigger because of invalid API Key: Please include an API Key in the `apiKey` option or in the `TRIGGER_API_KEY` environment variable.\"\n );\n }\n\n this.#apiKey = apiKey;\n this.#endpoint = this.#options.endpoint ?? \"wss://wss.trigger.dev/ws\";\n this.#logger = new Logger(\"trigger.dev\", this.#options.logLevel);\n }\n\n async listen(instanceId?: string) {\n await this.#initializeConnection(instanceId);\n this.#initializeRPC();\n this.#initializeHost();\n }\n\n close() {\n this.#closedByUser = true;\n\n if (this.#serverRPC) {\n this.#serverRPC = undefined;\n }\n\n this.#connection?.close();\n this.#isConnected = false;\n }\n\n async #initializeConnection(instanceId?: string) {\n const id = instanceId ?? v4();\n\n this.#logger.debug(\"Initializing connection\", {\n id,\n endpoint: this.#endpoint,\n });\n\n const headers = { Authorization: `Bearer ${this.#apiKey}` };\n\n const connection = new HostConnection(\n new WebSocket(this.#endpoint, {\n headers,\n followRedirects: true,\n }),\n { id }\n );\n\n connection.onClose.attach(async ([code, reason]) => {\n if (this.#closedByUser) {\n this.#logger.debug(\"Connection closed by user, so we won't reconnect\");\n this.#closedByUser = false;\n return;\n }\n\n this.#logger.error(`🚩 Could not connect to trigger.dev (code ${code})`);\n\n if (reason) {\n this.#logger.error(\"Reason:\", reason);\n }\n\n // If #isConnected is already false, that means we are already trying to reconnect\n if (!this.#isConnected) return;\n\n this.#logger.log(\"🔌 Reconnecting to trigger.dev...\");\n\n this.#isConnected = false;\n\n while (!this.#isConnected) {\n this.#initializeConnection(id)\n .then(() => {\n this.#logger.log(\"⚡ Reconnection successful\");\n })\n .catch(() => {});\n\n this.#logger.debug(\n `Reconnection failed, retrying in ${Math.round(\n this.#retryIntervalMs / 1000\n )} seconds`,\n id\n );\n\n await new Promise((resolve) =>\n setTimeout(resolve, this.#retryIntervalMs)\n );\n }\n });\n\n await connection.connect();\n\n this.#logger.debug(\"Connection initialized\", id);\n\n this.#connection = connection;\n this.#isConnected = true;\n\n if (this.#serverRPC) {\n this.#serverRPC.resetConnection(connection);\n await this.#initializeHost();\n }\n }\n\n async #initializeRPC() {\n if (!this.#connection) {\n throw new Error(\"Cannot initialize RPC without a connection\");\n }\n\n const serverRPC = new ZodRPC({\n connection: this.#connection,\n sender: ServerRPCSchema,\n receiver: HostRPCSchema,\n handlers: {\n RESOLVE_DELAY: async (data) => {\n this.#logger.debug(\"Handling RESOLVE_DELAY\", data);\n\n const waitCallbacks = this.#waitForCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!waitCallbacks) {\n this.#logger.debug(\n `Could not find wait callbacks for wait ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { resolve } = waitCallbacks;\n\n resolve();\n\n return true;\n },\n RESOLVE_REQUEST: async (data) => {\n this.#logger.debug(\"Handling RESOLVE_REQUEST\", data);\n\n const requestCallbacks = this.#responseCompleteCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!requestCallbacks) {\n this.#logger.debug(\n `Could not find request callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { resolve } = requestCallbacks;\n\n resolve(data.output);\n\n return true;\n },\n REJECT_REQUEST: async (data) => {\n this.#logger.debug(\"Handling REJECT_REQUEST\", data);\n\n const requestCallbacks = this.#responseCompleteCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!requestCallbacks) {\n this.#logger.debug(\n `Could not find request callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { reject } = requestCallbacks;\n\n reject(data.error);\n\n return true;\n },\n RESOLVE_FETCH_REQUEST: async (data) => {\n this.#logger.debug(\"Handling RESOLVE_FETCH_REQUEST\", data);\n\n const fetchCallbacks = this.#fetchCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!fetchCallbacks) {\n this.#logger.debug(\n `Could not find fetch callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { resolve } = fetchCallbacks;\n\n resolve(data.output);\n\n return true;\n },\n REJECT_FETCH_REQUEST: async (data) => {\n this.#logger.debug(\"Handling REJECT_FETCH_REQUEST\", data);\n\n const fetchCallbacks = this.#fetchCallbacks.get(\n messageKey(data.meta.runId, data.key)\n );\n\n if (!fetchCallbacks) {\n this.#logger.debug(\n `Could not find fetch callbacks for request ID ${messageKey(\n data.meta.runId,\n data.key\n )}. This can happen when a workflow run is resumed`\n );\n\n return true;\n }\n\n const { reject } = fetchCallbacks;\n\n reject(data.error);\n\n return true;\n },\n TRIGGER_WORKFLOW: async (data) => {\n this.#logger.debug(\"Handling TRIGGER_WORKFLOW\", data);\n\n const parsedEventData = this.#options.on.schema.safeParse(\n data.trigger.input\n );\n\n if (!parsedEventData.success) {\n await serverRPC.send(\"SEND_WORKFLOW_ERROR\", {\n runId: data.id,\n timestamp: String(highPrecisionTimestamp()),\n error: {\n name: \"Event validation error\",\n message: generateErrorMessage(\n parsedEventData.error.issues,\n zodErrorMessageOptions\n ),\n },\n });\n\n return true;\n }\n\n const fetchFunction: TriggerFetch = async (key, url, options) => {\n const result = new Promise<FetchOutput>((resolve, reject) => {\n this.#fetchCallbacks.set(messageKey(data.id, key), {\n resolve,\n reject,\n });\n });\n\n await serverRPC.send(\"SEND_FETCH\", {\n runId: data.id,\n key,\n fetch: {\n url: url.toString(),\n method: options.method ?? \"GET\",\n headers: options.headers,\n body: options.body,\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n const response = await result;\n\n return {\n status: response.status,\n ok: response.ok,\n headers: response.headers,\n body: response.body\n ? (options.responseSchema ?? z.any()).parse(response.body)\n : undefined,\n };\n };\n\n const ctx: TriggerContext = {\n id: data.id,\n environment: data.meta.environment,\n apiKey: data.meta.apiKey,\n organizationId: data.meta.organizationId,\n logger: new ContextLogger(async (level, message, properties) => {\n await serverRPC.send(\"SEND_LOG\", {\n runId: data.id,\n key: message,\n log: {\n level,\n message,\n properties: JSON.stringify(properties ?? {}),\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n }),\n sendEvent: async (key, event) => {\n await serverRPC.send(\"SEND_EVENT\", {\n runId: data.id,\n key,\n event: JSON.parse(JSON.stringify(event)),\n timestamp: String(highPrecisionTimestamp()),\n });\n },\n waitFor: async (key, options) => {\n const result = new Promise<void>((resolve, reject) => {\n this.#waitForCallbacks.set(messageKey(data.id, key), {\n resolve,\n reject,\n });\n });\n\n await serverRPC.send(\"INITIALIZE_DELAY\", {\n runId: data.id,\n key,\n wait: {\n type: \"DELAY\",\n seconds: options.seconds,\n minutes: options.minutes,\n hours: options.hours,\n days: options.days,\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n await result;\n\n return;\n },\n waitUntil: async (key, date: Date) => {\n const result = new Promise<void>((resolve, reject) => {\n this.#waitForCallbacks.set(messageKey(data.id, key), {\n resolve,\n reject,\n });\n });\n\n await serverRPC.send(\"INITIALIZE_DELAY\", {\n runId: data.id,\n key,\n wait: {\n type: \"SCHEDULE_FOR\",\n scheduledFor: date.toISOString(),\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n await result;\n\n return;\n },\n fetch: fetchFunction,\n };\n\n const eventData = parsedEventData.data;\n\n this.#logger.debug(\"Parsed event data\", eventData);\n\n triggerRunLocalStorage.run(\n {\n performRequest: async (key, options) => {\n const result = new Promise((resolve, reject) => {\n this.#responseCompleteCallbacks.set(\n messageKey(data.id, key),\n {\n resolve,\n reject,\n }\n );\n });\n\n await serverRPC.send(\"SEND_REQUEST\", {\n runId: data.id,\n key,\n request: {\n service: options.service,\n endpoint: options.endpoint,\n params: options.params,\n },\n timestamp: String(highPrecisionTimestamp()),\n });\n\n const output = await result;\n\n return options.response.schema.parse(output);\n },\n sendEvent: async (key, event) => {\n await serverRPC.send(\"SEND_EVENT\", {\n runId: data.id,\n key,\n event: JSON.parse(JSON.stringify(event)),\n timestamp: String(highPrecisionTimestamp()),\n });\n },\n fetch: fetchFunction,\n },\n () => {\n this.#logger.debug(\"Running trigger...\");\n\n serverRPC\n .send(\"START_WORKFLOW_RUN\", {\n runId: data.id,\n timestamp: String(highPrecisionTimestamp()),\n })\n .then(() => {\n return this.#trigger.options\n .run(eventData, ctx)\n .then((output) => {\n this.#logger.log(\n `Completed workflow '${this.#options.name}', run ${\n data.id\n } 🏃`\n );\n\n return serverRPC.send(\"COMPLETE_WORKFLOW_RUN\", {\n runId: data.id,\n output: JSON.stringify(output),\n timestamp: String(highPrecisionTimestamp()),\n });\n })\n .catch((anyError) => {\n const parseAnyError = (\n error: any\n ): {\n name: string;\n message: string;\n stackTrace?: string;\n } => {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stackTrace: error.stack,\n };\n }\n\n console.error(anyError);\n\n return {\n name: \"UnknownError\",\n message: \"An unknown error occurred\",\n };\n };\n\n const error = parseAnyError(anyError);\n\n return serverRPC.send(\"SEND_WORKFLOW_ERROR\", {\n runId: data.id,\n error,\n timestamp: String(highPrecisionTimestamp()),\n });\n });\n })\n .catch((anyError) => {\n return serverRPC.send(\"SEND_WORKFLOW_ERROR\", {\n runId: data.id,\n error: anyError,\n timestamp: String(highPrecisionTimestamp()),\n });\n });\n }\n );\n\n return true;\n },\n },\n });\n\n this.#logger.debug(\"Successfully initialized RPC with server\");\n\n this.#serverRPC = serverRPC;\n }\n\n async #initializeHost() {\n if (!this.#connection) {\n throw new Error(\"Cannot initialize host without a connection\");\n }\n\n if (!this.#serverRPC) {\n throw new Error(\"Cannot initialize host without an RPC connection\");\n }\n\n const response = await this.#send(\"INITIALIZE_HOST\", {\n apiKey: this.#apiKey,\n workflowId: this.#trigger.id,\n workflowName: this.#trigger.name,\n trigger: this.#trigger.on.metadata,\n packageVersion: pkg.version,\n packageName: pkg.name,\n triggerTTL: this.#options.triggerTTL,\n });\n\n if (response?.type === \"error\") {\n throw new Error(response.message);\n }\n\n this.#logger.debug(\"Successfully initialized workflow with server\");\n }\n\n async #send<MethodName extends keyof typeof ServerRPCSchema>(\n methodName: MethodName,\n request: z.input<(typeof ServerRPCSchema)[MethodName][\"request\"]>\n ) {\n if (!this.#serverRPC) throw new Error(\"serverRPC not initialized\");\n\n while (true) {\n try {\n this.#logger.debug(\n `Sending RPC request to server: ${methodName}`,\n request\n );\n\n return await this.#serverRPC.send(methodName, request);\n } catch (err) {\n if (err instanceof TimeoutError) {\n this.#logger.log(\n `RPC call timed out, retrying in ${Math.round(\n this.#retryIntervalMs / 1000\n )}s...`\n );\n\n this.#logger.error(err);\n\n await sleep(this.#retryIntervalMs);\n } else {\n throw err;\n }\n }\n }\n }\n}\n\nexport const sleep = (ms: number) =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nconst messageKey = (runId: string, key: string) => `${runId}:${key}`;\n\nfunction highPrecisionTimestamp() {\n const [seconds, nanoseconds] = process.hrtime();\n\n return seconds * 1e9 + nanoseconds;\n}\n","import type { WebSocket as NodeWebSocket } from \"ws\";\nimport { v4 } from \"uuid\";\nimport { Evt } from \"evt\";\nimport { IConnection, Logger, MESSAGE_META } from \"internal-bridge\";\n\nexport class TimeoutError extends Error {}\nexport class NotConnectedError extends Error {}\n\ntype PendingMessage = {\n data: string;\n onAckReceived: () => void;\n};\n\nexport type ConnectionOptions = {\n connectTimeout?: number;\n sendTimeout?: number;\n pingTimeout?: number;\n id?: string;\n};\n\nexport class HostConnection implements IConnection {\n id: string;\n onMessage: Evt<string>;\n onAuthenticated: Evt<void>;\n onClose: Evt<[number, string]>;\n onOpen: Evt<void>;\n onError: Evt<Error>;\n\n #socket: WebSocket | NodeWebSocket;\n\n #connectTimeout: number;\n #sendTimeout: number;\n #pingTimeout: number;\n #isAuthenticated: boolean = false;\n #timeouts: Set<NodeJS.Timeout>;\n #isClosed: boolean = false;\n #pendingMessages = new Map<string, PendingMessage>();\n #logger: Logger;\n\n #pingIntervalHandle: NodeJS.Timeout | undefined;\n #pingIntervalMs: number = 30_000; // 30 seconds\n #closeUnresponsiveConnectionTimeoutMs: number = 3 * 60 * 1000; // 3 minutes\n\n constructor(socket: WebSocket | NodeWebSocket, options?: ConnectionOptions) {\n this.#socket = socket;\n this.id = options?.id ?? v4();\n\n this.onMessage = new Evt();\n this.onAuthenticated = new Evt<void>();\n this.onClose = new Evt<[number, string]>();\n this.onOpen = new Evt();\n this.onError = new Evt<Error>();\n\n this.#connectTimeout = options?.connectTimeout ?? 5000;\n this.#sendTimeout = options?.sendTimeout ?? 5000;\n this.#pingTimeout = options?.pingTimeout ?? 5000;\n\n this.#timeouts = new Set();\n\n this.#logger = new Logger(\"trigger.dev connection\");\n\n this.onClose.attach(() => {\n this.#isClosed = true;\n\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n\n for (const timeout of this.#timeouts) {\n clearTimeout(timeout);\n }\n\n this.#timeouts.clear();\n });\n\n this.#socket.onopen = () => {\n this.#isClosed = false;\n this.onOpen.post();\n\n this.#startPingInterval();\n };\n\n this.#socket.onclose = (ev: CloseEvent) => {\n this.onClose.post([ev.code, ev.reason]);\n };\n\n this.#socket.onerror = (ev: ErrorEvent | Event) => {\n const message = \"message\" in ev ? ev.message : \"Unknown error\";\n\n this.onError.post(new Error(message));\n };\n\n this.#socket.onmessage = (event: MessageEvent) => {\n if (this.#isClosed) return;\n\n const data = JSON.parse(event.data.toString());\n const metadata = MESSAGE_META.parse(data);\n\n if (metadata.type === \"ACK\") {\n const pendingMessage = this.#pendingMessages.get(metadata.id);\n\n if (pendingMessage) {\n pendingMessage.onAckReceived();\n this.#pendingMessages.delete(metadata.id);\n }\n }\n\n if (metadata.type === \"MESSAGE\") {\n socket.send(JSON.stringify({ type: \"ACK\", id: metadata.id }));\n\n if (metadata.data === \"AUTHENTICATED\") {\n this.#isAuthenticated = true;\n this.onAuthenticated.post();\n return;\n }\n\n this.onMessage.post(metadata.data);\n }\n };\n\n if (\"pong\" in socket) {\n socket.on(\"pong\", (buf) => {\n const id = buf.toString();\n const pendingMessage = this.#pendingMessages.get(id);\n\n if (pendingMessage?.data === \"ping\") {\n pendingMessage.onAckReceived();\n }\n });\n }\n }\n\n async connect() {\n this.#logger.debug(\"[connect] Attempting to connect\");\n\n return new Promise<void>((resolve, reject) => {\n if (\n this.#socket.readyState === this.#socket.OPEN &&\n this.#isAuthenticated\n ) {\n this.#logger.debug(\"[connect] Already connected, resolving\");\n\n return resolve();\n }\n\n const failTimeout = setTimeout(() => {\n this.#logger.debug(\"[connect] Connection timed out, rejecting\");\n\n reject(new TimeoutError());\n }, this.#connectTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.onAuthenticated.attach(() => {\n clearTimeout(failTimeout);\n this.#timeouts.delete(failTimeout);\n\n this.#logger.debug(\"[connect] Connected, resolving\");\n\n resolve();\n });\n });\n }\n\n async send(data: string) {\n if (this.#isClosed) throw new NotConnectedError();\n\n return new Promise<void>((resolve, reject) => {\n const id = v4();\n\n const failTimeout = setTimeout(() => {\n reject(new TimeoutError());\n }, this.#sendTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.#pendingMessages.set(id, {\n data,\n onAckReceived: () => {\n clearTimeout(failTimeout);\n\n this.#timeouts.delete(failTimeout);\n\n resolve();\n },\n });\n\n this.#socket.send(JSON.stringify({ id, data, type: \"MESSAGE\" }));\n });\n }\n\n close(code?: number, reason?: string) {\n this.#isClosed = true;\n this.onMessage.detach();\n return this.#socket.close(code, reason);\n }\n\n #startPingInterval() {\n // Do the ping stuff here\n let lastSuccessfulPing = new Date();\n this.#pingIntervalHandle = setInterval(async () => {\n if (!this.#socket.OPEN) {\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n\n return;\n }\n\n try {\n await this.#ping();\n lastSuccessfulPing = new Date();\n } catch (err) {\n this.#logger.warn(\"Pong not received in time\");\n if (!(err instanceof TimeoutError)) {\n this.#logger.error(err);\n }\n\n if (\n lastSuccessfulPing.getTime() <\n new Date().getTime() - this.#closeUnresponsiveConnectionTimeoutMs\n ) {\n this.#logger.error(\n \"No pong received in last three minutes, closing connection to Interval and retrying...\"\n );\n if (this.#pingIntervalHandle) {\n clearInterval(this.#pingIntervalHandle);\n this.#pingIntervalHandle = undefined;\n }\n this.#socket.close();\n }\n }\n }, this.#pingIntervalMs);\n }\n\n async #ping() {\n if (!this.#socket.OPEN) {\n throw new NotConnectedError();\n }\n\n if (!(\"ping\" in this.#socket)) {\n // Not supported in web client WebSocket\n throw new Error(\n \"ping not supported in this underlying websocket connection\"\n );\n }\n\n const socket = this.#socket;\n\n return new Promise<void>((resolve, reject) => {\n const id = v4();\n\n const failTimeout = setTimeout(() => {\n reject(new TimeoutError(\"Pong not received in time\"));\n }, this.#pingTimeout);\n\n this.#timeouts.add(failTimeout);\n\n this.#pendingMessages.set(id, {\n data: \"ping\",\n onAckReceived: () => {\n clearTimeout(failTimeout);\n\n this.#timeouts.delete(failTimeout);\n\n this.#logger.debug(`Resolving ping`);\n\n resolve();\n },\n });\n\n this.#logger.debug(`Sending ping ${id} to ${socket.url}`);\n\n socket.ping(id, undefined, (err) => {\n if (err) {\n reject(err);\n }\n });\n });\n }\n}\n","import { AsyncLocalStorage } from \"node:async_hooks\";\nimport { z } from \"zod\";\nimport {\n FetchOptions,\n FetchResponse,\n TriggerCustomEvent,\n TriggerFetch,\n} from \"./types\";\n\ntype PerformRequestOptions<TSchema extends z.ZodTypeAny> = {\n service: string;\n params: unknown;\n endpoint: string;\n response: {\n schema: TSchema;\n };\n};\n\ntype TriggerRunLocalStorage = {\n performRequest: <TSchema extends z.ZodTypeAny>(\n key: string,\n options: PerformRequestOptions<TSchema>\n ) => Promise<z.infer<TSchema>>;\n sendEvent: (key: string, event: TriggerCustomEvent) => Promise<void>;\n fetch: TriggerFetch;\n};\n\nexport const triggerRunLocalStorage =\n new AsyncLocalStorage<TriggerRunLocalStorage>();\n","import { TriggerLogger } from \"./types\";\n\ntype CallbackFunction = (\n level: \"DEBUG\" | \"INFO\" | \"WARN\" | \"ERROR\",\n message: string,\n properties?: Record<string, any>\n) => Promise<void>;\n\nexport class ContextLogger implements TriggerLogger {\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 { TriggerClient } from \"../client\";\nimport { LogLevel } from \"internal-bridge\";\nimport { TriggerEvent } from \"../events\";\n\nimport type { TriggerContext } from \"../types\";\nimport { z } from \"zod\";\n\nexport type TriggerOptions<TSchema extends z.ZodTypeAny> = {\n id: string;\n name: string;\n on: TriggerEvent<TSchema>;\n apiKey?: string;\n endpoint?: string;\n logLevel?: LogLevel;\n\n /**\n * The TTL for the trigger in seconds. If the trigger is not run within this time, it will be aborted. Defaults to 3600 seconds (1 hour).\n * @type {number}\n */\n triggerTTL?: number;\n\n run: (event: z.infer<TSchema>, ctx: TriggerContext) => Promise<any>;\n};\n\nexport class Trigger<TSchema extends z.ZodTypeAny> {\n options: TriggerOptions<TSchema>;\n #client: TriggerClient<TSchema> | undefined;\n\n constructor(options: TriggerOptions<TSchema>) {\n this.options = options;\n }\n\n async listen() {\n if (!this.#client) {\n this.#client = new TriggerClient(this, this.options);\n }\n\n return this.#client.listen();\n }\n\n get id() {\n return this.options.id;\n }\n\n get name() {\n return this.options.name;\n }\n\n get endpoint() {\n return this.options.endpoint;\n }\n\n get on() {\n return this.options.on;\n }\n}\n","import { triggerRunLocalStorage } from \"./localStorage\";\nimport type { TriggerCustomEvent } from \"./types\";\nimport fetch from \"node-fetch\";\nimport { ulid } from \"ulid\";\n\nexport function sendEvent(\n id: string,\n event: TriggerCustomEvent\n): Promise<void> {\n const triggerRun = triggerRunLocalStorage.getStore();\n\n if (!triggerRun) {\n // Do it through the API\n return sendEventFetch(event);\n }\n\n return triggerRun.sendEvent(id, event);\n}\n\nasync function sendEventFetch(event: TriggerCustomEvent): Promise<void> {\n if (!process.env.TRIGGER_API_KEY) {\n throw new Error(\n `There was a problem sending a custom event: the TRIGGER_API_KEY environment variable is not set`\n );\n }\n\n const id = ulid();\n\n const baseUrl = process.env.TRIGGER_API_URL || \"https://app.trigger.dev\";\n const url = `${baseUrl}/api/v1/events`;\n\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: `Bearer ${process.env.TRIGGER_API_KEY}`,\n },\n body: JSON.stringify({\n id,\n event,\n }),\n });\n\n if (!response.ok) {\n throw new Error(\n `There was a problem sending a custom event: ${response.statusText}`\n );\n }\n\n return;\n}\n","import { triggerRunLocalStorage } from \"./localStorage\";\nimport { z } from \"zod\";\nimport { FetchOptions, FetchResponse } from \"./types\";\n\nexport function fetch<TBodySchema extends z.ZodTypeAny = z.ZodTypeAny>(\n key: string,\n url: string | URL,\n options: FetchOptions<TBodySchema>\n): Promise<FetchResponse<TBodySchema>> {\n const triggerRun = triggerRunLocalStorage.getStore();\n\n if (!triggerRun) {\n throw new Error(\"Cannot call fetch outside of a trigger run\");\n }\n\n return triggerRun.fetch(key, url, options);\n}\n"],"mappings":"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","names":["fetch","LiteralSchema","z","union","string","number","boolean","null","JsonSchema","lazy","array","record","SerializableSchema","date","SerializableJsonSchema","import_zod","ErrorSchema","z","object","name","string","message","stackTrace","optional","import_zod","LogMessageSchema","z","object","level","enum","message","string","properties","JsonSchema","default","import_zod","DelaySchema","z","object","type","literal","seconds","number","optional","minutes","hours","days","ScheduledForSchema","scheduledFor","string","datetime","WaitSchema","discriminatedUnion","import_zod","CustomEventSchema","z","object","name","string","payload","JsonSchema","context","optional","timestamp","datetime","SerializableCustomEventSchema","SerializableJsonSchema","EventMatcherSchema","union","array","number","boolean","EventFilterSchema","lazy","record","ScheduledEventPayloadSchema","scheduledTime","coerce","date","ScheduleSourceRateSchema","rateOf","minutes","min","max","int","hours","days","ScheduleSourceCronSchema","cron","ScheduleSourceSchema","import_zod","CustomEventTriggerSchema","z","object","type","literal","service","name","string","filter","EventFilterSchema","WebhookEventTriggerSchema","source","JsonSchema","HttpEventTriggerSchema","ScheduledEventTriggerSchema","ScheduleSourceSchema","TriggerMetadataSchema","discriminatedUnion","import_zod","SecureStringSchema","z","object","__secureString","literal","strings","array","string","interpolations","FetchRequestSchema","url","headers","record","union","optional","method","enum","body","any","FetchOutputSchema","status","number","ok","boolean","FetchResponseSchema","customEvent","options","metadata","type","service","name","filter","event","schema","scheduleEvent","source","ScheduledEventPayloadSchema","import_zod","HostRPCSchema","TRIGGER_WORKFLOW","request","z","object","id","string","trigger","input","JsonSchema","default","context","meta","environment","workflowId","organizationId","apiKey","response","boolean","RESOLVE_REQUEST","key","output","runId","RESOLVE_DELAY","REJECT_REQUEST","error","RESOLVE_FETCH_REQUEST","FetchOutputSchema","REJECT_FETCH_REQUEST","import_zod","ServerRPCSchema","INITIALIZE_DELAY","request","z","object","runId","string","key","wait","WaitSchema","timestamp","response","boolean","SEND_REQUEST","service","endpoint","params","any","SEND_FETCH","fetch","FetchRequestSchema","SEND_LOG","log","message","level","enum","properties","optional","SEND_EVENT","event","CustomEventSchema","INITIALIZE_HOST","apiKey","workflowId","workflowName","trigger","TriggerMetadataSchema","packageVersion","packageName","triggerTTL","number","discriminatedUnion","type","literal","nullable","START_WORKFLOW_RUN","COMPLETE_WORKFLOW_RUN","output","SEND_WORKFLOW_ERROR","error","name","stackTrace","import_zod","MESSAGE_META","z","object","data","any","id","string","type","union","literal","TriggerEnvironmentSchema","enum","import_zod","logLevels","Logger","constructor","name","level","indexOf","process","env","TRIGGER_LOG_LEVEL","log","args","console","error","formattedDateTime","warn","info","debug","date","Date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","formattedHours","formattedMinutes","formattedSeconds","formattedMilliseconds","RPCMessageSchema","z","object","id","string","methodName","data","any","kind","enum","ZodRPC","constructor","options","Map","Logger","connection","sender","receiver","handlers","onMessage","attach","bind","resetConnection","detach","send","key","generateStableId","message","packageMessage","Promise","resolve","reject","set","rawResponseText","parsed","parse","err","catch","rawData","JSON","error","callError","ZodError","stringify","errors","flatten","method","Error","debug","inputs","request","handler","returnValue","preparedResponseText","packageResponse","responseCallback","get","delete","connId","reqKey","reqData","serializedData","inputString","hash","createHash","update","digest","callerData","import_uuid","import_zod","TimeoutError","Error","NotConnectedError","_logger","HostConnection","constructor","socket","options","Map","id","v4","onMessage","Evt","onAuthenticated","onClose","onOpen","onError","connectTimeout","sendTimeout","pingTimeout","Set","Logger","attach","clearInterval","undefined","timeout","clearTimeout","clear","onopen","post","onclose","ev","code","reason","onerror","message","onmessage","event","data","JSON","parse","toString","metadata","MESSAGE_META","type","pendingMessage","get","onAckReceived","delete","send","stringify","on","buf","connect","debug","Promise","resolve","reject","readyState","OPEN","failTimeout","setTimeout","add","set","close","detach","lastSuccessfulPing","Date","setInterval","err","warn","error","getTime","url","ping","triggerRunLocalStorage","AsyncLocalStorage","ContextLogger","constructor","callback","debug","message","properties","info","warn","error","zodErrorMessageOptions","delimiter","error","_connection","_logger","TriggerClient","constructor","trigger","options","Map","apiKey","process","env","TRIGGER_API_KEY","Error","endpoint","Logger","logLevel","listen","instanceId","close","undefined","id","v4","debug","headers","Authorization","connection","HostConnection","WebSocket","followRedirects","onClose","attach","code","reason","log","then","catch","Math","round","Promise","resolve","setTimeout","connect","resetConnection","serverRPC","ZodRPC","sender","ServerRPCSchema","receiver","HostRPCSchema","handlers","RESOLVE_DELAY","data","waitCallbacks","get","messageKey","meta","runId","key","RESOLVE_REQUEST","requestCallbacks","output","REJECT_REQUEST","reject","RESOLVE_FETCH_REQUEST","fetchCallbacks","REJECT_FETCH_REQUEST","TRIGGER_WORKFLOW","parsedEventData","on","schema","safeParse","input","success","send","timestamp","String","highPrecisionTimestamp","name","message","generateErrorMessage","issues","fetchFunction","url","result","set","fetch","toString","method","body","response","status","ok","responseSchema","z","any","parse","ctx","environment","organizationId","logger","ContextLogger","level","properties","JSON","stringify","sendEvent","event","waitFor","wait","type","seconds","minutes","hours","days","waitUntil","date","scheduledFor","toISOString","eventData","triggerRunLocalStorage","run","performRequest","request","service","params","anyError","parseAnyError","stackTrace","stack","console","workflowId","workflowName","metadata","packageVersion","version","packageName","triggerTTL","methodName","err","TimeoutError","sleep","ms","nanoseconds","hrtime","Trigger","constructor","options","listen","TriggerClient","id","name","endpoint","on","sendEvent","id","event","triggerRun","triggerRunLocalStorage","getStore","sendEventFetch","process","env","TRIGGER_API_KEY","Error","ulid","baseUrl","TRIGGER_API_URL","url","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","statusText","fetch","key","url","options","triggerRun","triggerRunLocalStorage","getStore","Error","getTriggerRun","triggerRunLocalStorage","getStore","secureString","strings","interpolations","__secureString","raw"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/sdk",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
4
4
  "description": "trigger.dev Node.JS SDK",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -37,12 +37,12 @@
37
37
  "ulid": "^2.3.0",
38
38
  "uuid": "^9.0.0",
39
39
  "ws": "^8.11.0",
40
- "zod": "^3.20.2"
40
+ "zod": "^3.20.2",
41
+ "zod-error": "^1.1.0"
41
42
  },
42
43
  "scripts": {
43
44
  "clean": "rimraf dist",
44
45
  "build": "npm run clean && npm run build:tsup",
45
- "build:tsup": "tsup --dts-resolve",
46
- "dev": "tsup --watch"
46
+ "build:tsup": "tsup --dts-resolve"
47
47
  }
48
48
  }