@trigger.dev/sdk 0.2.0 → 0.2.2

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
@@ -2,8 +2,6 @@ import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
3
  import { EventFilterSchema, TriggerMetadataSchema, ScheduleSourceSchema, ScheduledEventPayloadSchema, SerializableCustomEventSchema } from '@trigger.dev/common-schemas';
4
4
 
5
- type LogLevel = "log" | "error" | "warn" | "info" | "debug";
6
-
7
5
  type EventRule = z.infer<typeof EventFilterSchema>;
8
6
  type TriggerEvent<TSchema extends z.ZodTypeAny> = {
9
7
  metadata: z.infer<typeof TriggerMetadataSchema>;
@@ -17,7 +15,10 @@ declare function customEvent<TSchema extends z.ZodTypeAny>(options: TriggerCusto
17
15
  type TriggerScheduleOptions = z.infer<typeof ScheduleSourceSchema>;
18
16
  declare function scheduleEvent(options: TriggerScheduleOptions): TriggerEvent<typeof ScheduledEventPayloadSchema>;
19
17
 
20
- type CustomEvent = z.infer<typeof SerializableCustomEventSchema>;
18
+ declare const logLevels: readonly ["disabled", "log", "error", "warn", "info", "debug"];
19
+ type LogLevel = (typeof logLevels)[number];
20
+
21
+ type TriggerCustomEvent = z.infer<typeof SerializableCustomEventSchema>;
21
22
  type WaitForOptions = {
22
23
  seconds?: number;
23
24
  minutes?: number;
@@ -30,7 +31,7 @@ interface TriggerContext {
30
31
  apiKey: string;
31
32
  organizationId: string;
32
33
  logger: TriggerLogger;
33
- fireEvent(key: string, event: CustomEvent): Promise<void>;
34
+ sendEvent(key: string, event: TriggerCustomEvent): Promise<void>;
34
35
  waitFor(key: string, options: WaitForOptions): Promise<void>;
35
36
  waitUntil(key: string, date: Date): Promise<void>;
36
37
  }
@@ -48,6 +49,11 @@ type TriggerOptions<TSchema extends z.ZodTypeAny> = {
48
49
  apiKey?: string;
49
50
  endpoint?: string;
50
51
  logLevel?: LogLevel;
52
+ /**
53
+ * 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).
54
+ * @type {number}
55
+ */
56
+ triggerTTL?: number;
51
57
  run: (event: z.infer<TSchema>, ctx: TriggerContext) => Promise<any>;
52
58
  };
53
59
  declare class Trigger<TSchema extends z.ZodTypeAny> {
@@ -61,6 +67,8 @@ declare class Trigger<TSchema extends z.ZodTypeAny> {
61
67
  get on(): TriggerEvent<TSchema>;
62
68
  }
63
69
 
70
+ declare function sendEvent(id: string, event: TriggerCustomEvent): Promise<void>;
71
+
64
72
  declare function getTriggerRun(): {
65
73
  performRequest: <TSchema extends zod.ZodTypeAny>(key: string, options: {
66
74
  service: string;
@@ -70,6 +78,16 @@ declare function getTriggerRun(): {
70
78
  schema: TSchema;
71
79
  };
72
80
  }) => Promise<zod.TypeOf<TSchema>>;
81
+ sendEvent: (key: string, event: {
82
+ context?: (string | number | boolean | Date | {
83
+ [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;
84
+ } | (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) | undefined;
85
+ timestamp?: string | undefined;
86
+ name: string;
87
+ payload: string | number | boolean | Date | {
88
+ [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;
89
+ } | (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;
90
+ }) => Promise<void>;
73
91
  } | undefined;
74
92
 
75
- export { EventRule, Trigger, TriggerCustomEventOptions, TriggerEvent, TriggerOptions, TriggerScheduleOptions, customEvent, getTriggerRun, scheduleEvent };
93
+ export { EventRule, Trigger, TriggerCustomEventOptions, TriggerEvent, TriggerOptions, TriggerScheduleOptions, customEvent, getTriggerRun, scheduleEvent, sendEvent };
package/dist/index.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
7
9
  var __export = (target, all) => {
@@ -16,6 +18,10 @@ var __copyProps = (to, from, except, desc) => {
16
18
  }
17
19
  return to;
18
20
  };
21
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
22
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
23
+ mod
24
+ ));
19
25
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
26
  var __accessCheck = (obj, member, msg) => {
21
27
  if (!member.has(obj))
@@ -46,13 +52,11 @@ __export(src_exports, {
46
52
  Trigger: () => Trigger,
47
53
  customEvent: () => customEvent,
48
54
  getTriggerRun: () => getTriggerRun,
49
- scheduleEvent: () => scheduleEvent
55
+ scheduleEvent: () => scheduleEvent,
56
+ sendEvent: () => sendEvent
50
57
  });
51
58
  module.exports = __toCommonJS(src_exports);
52
59
 
53
- // ../internal-bridge/src/schemas/host.ts
54
- var import_zod7 = require("zod");
55
-
56
60
  // ../common-schemas/src/json.ts
57
61
  var import_zod = require("zod");
58
62
  var LiteralSchema = import_zod.z.union([
@@ -190,7 +194,7 @@ var ScheduledEventTriggerSchema = import_zod6.z.object({
190
194
  type: import_zod6.z.literal("SCHEDULE"),
191
195
  service: import_zod6.z.literal("scheduler"),
192
196
  name: import_zod6.z.string(),
193
- source: JsonSchema
197
+ source: ScheduleSourceSchema
194
198
  });
195
199
  var TriggerMetadataSchema = import_zod6.z.discriminatedUnion("type", [
196
200
  CustomEventTriggerSchema,
@@ -199,7 +203,38 @@ var TriggerMetadataSchema = import_zod6.z.discriminatedUnion("type", [
199
203
  ScheduledEventTriggerSchema
200
204
  ]);
201
205
 
206
+ // src/events.ts
207
+ function customEvent(options) {
208
+ return {
209
+ metadata: {
210
+ type: "CUSTOM_EVENT",
211
+ service: "trigger",
212
+ name: options.name,
213
+ filter: {
214
+ event: [
215
+ options.name
216
+ ]
217
+ }
218
+ },
219
+ schema: options.schema
220
+ };
221
+ }
222
+ __name(customEvent, "customEvent");
223
+ function scheduleEvent(options) {
224
+ return {
225
+ metadata: {
226
+ type: "SCHEDULE",
227
+ service: "scheduler",
228
+ name: "scheduled-event",
229
+ source: options
230
+ },
231
+ schema: ScheduledEventPayloadSchema
232
+ };
233
+ }
234
+ __name(scheduleEvent, "scheduleEvent");
235
+
202
236
  // ../internal-bridge/src/schemas/host.ts
237
+ var import_zod7 = require("zod");
203
238
  var HostRPCSchema = {
204
239
  TRIGGER_WORKFLOW: {
205
240
  request: import_zod7.z.object({
@@ -322,7 +357,8 @@ var ServerRPCSchema = {
322
357
  workflowName: import_zod8.z.string(),
323
358
  trigger: TriggerMetadataSchema,
324
359
  packageVersion: import_zod8.z.string(),
325
- packageName: import_zod8.z.string()
360
+ packageName: import_zod8.z.string(),
361
+ triggerTTL: import_zod8.z.number().optional()
326
362
  }),
327
363
  response: import_zod8.z.discriminatedUnion("type", [
328
364
  import_zod8.z.object({
@@ -344,7 +380,7 @@ var ServerRPCSchema = {
344
380
  COMPLETE_WORKFLOW_RUN: {
345
381
  request: import_zod8.z.object({
346
382
  runId: import_zod8.z.string(),
347
- output: import_zod8.z.string(),
383
+ output: import_zod8.z.string().optional(),
348
384
  timestamp: import_zod8.z.string()
349
385
  }),
350
386
  response: import_zod8.z.boolean()
@@ -381,6 +417,68 @@ var TriggerEnvironmentSchema = import_zod9.z.enum([
381
417
  // ../internal-bridge/src/zodRPC.ts
382
418
  var import_zod10 = require("zod");
383
419
  var import_node_crypto = require("crypto");
420
+
421
+ // ../internal-bridge/src/logger.ts
422
+ var logLevels = [
423
+ "disabled",
424
+ "log",
425
+ "error",
426
+ "warn",
427
+ "info",
428
+ "debug"
429
+ ];
430
+ var _name, _level;
431
+ var Logger = class {
432
+ constructor(name2, level = "disabled") {
433
+ __privateAdd(this, _name, void 0);
434
+ __privateAdd(this, _level, void 0);
435
+ __privateSet(this, _name, name2);
436
+ __privateSet(this, _level, logLevels.indexOf(process.env.TRIGGER_LOG_LEVEL ?? level));
437
+ }
438
+ log(...args) {
439
+ if (__privateGet(this, _level) < 1)
440
+ return;
441
+ console.log(`[${__privateGet(this, _name)}] `, ...args);
442
+ }
443
+ error(...args) {
444
+ if (__privateGet(this, _level) < 2)
445
+ return;
446
+ console.error(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
447
+ }
448
+ warn(...args) {
449
+ if (__privateGet(this, _level) < 3)
450
+ return;
451
+ console.warn(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
452
+ }
453
+ info(...args) {
454
+ if (__privateGet(this, _level) < 4)
455
+ return;
456
+ console.info(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
457
+ }
458
+ debug(...args) {
459
+ if (__privateGet(this, _level) < 5)
460
+ return;
461
+ console.debug(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
462
+ }
463
+ };
464
+ __name(Logger, "Logger");
465
+ _name = new WeakMap();
466
+ _level = new WeakMap();
467
+ function formattedDateTime() {
468
+ const date = new Date();
469
+ const hours = date.getHours();
470
+ const minutes = date.getMinutes();
471
+ const seconds = date.getSeconds();
472
+ const milliseconds = date.getMilliseconds();
473
+ const formattedHours = hours < 10 ? `0${hours}` : hours;
474
+ const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;
475
+ const formattedSeconds = seconds < 10 ? `0${seconds}` : seconds;
476
+ const formattedMilliseconds = milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds;
477
+ return `${formattedHours}:${formattedMinutes}:${formattedSeconds}.${formattedMilliseconds}`;
478
+ }
479
+ __name(formattedDateTime, "formattedDateTime");
480
+
481
+ // ../internal-bridge/src/zodRPC.ts
384
482
  var RPCMessageSchema = import_zod10.z.object({
385
483
  id: import_zod10.z.string(),
386
484
  methodName: import_zod10.z.string(),
@@ -390,7 +488,7 @@ var RPCMessageSchema = import_zod10.z.object({
390
488
  "RESPONSE"
391
489
  ])
392
490
  });
393
- var _connection, _sender, _receiver, _handlers, _pendingCalls, _onMessage, onMessage_fn, _onCall, onCall_fn, _onResponse, onResponse_fn, _handleCall, handleCall_fn, _handleResponse, handleResponse_fn;
491
+ var _connection, _sender, _receiver, _handlers, _pendingCalls, _logger, _onMessage, onMessage_fn, _onCall, onCall_fn, _onResponse, onResponse_fn, _handleCall, handleCall_fn, _handleResponse, handleResponse_fn;
394
492
  var ZodRPC = class {
395
493
  constructor(options) {
396
494
  __privateAdd(this, _onMessage);
@@ -403,6 +501,7 @@ var ZodRPC = class {
403
501
  __privateAdd(this, _receiver, void 0);
404
502
  __privateAdd(this, _handlers, void 0);
405
503
  __privateAdd(this, _pendingCalls, /* @__PURE__ */ new Map());
504
+ __privateAdd(this, _logger, new Logger("ZodRPC"));
406
505
  __privateSet(this, _connection, options.connection);
407
506
  __privateSet(this, _sender, options.sender);
408
507
  __privateSet(this, _receiver, options.receiver);
@@ -440,6 +539,7 @@ _sender = new WeakMap();
440
539
  _receiver = new WeakMap();
441
540
  _handlers = new WeakMap();
442
541
  _pendingCalls = new WeakMap();
542
+ _logger = new WeakMap();
443
543
  _onMessage = new WeakSet();
444
544
  onMessage_fn = /* @__PURE__ */ __name(async function(rawData) {
445
545
  try {
@@ -451,7 +551,7 @@ onMessage_fn = /* @__PURE__ */ __name(async function(rawData) {
451
551
  await __privateMethod(this, _onResponse, onResponse_fn).call(this, data);
452
552
  }
453
553
  } catch (err) {
454
- console.error(err);
554
+ __privateGet(this, _logger).error(err);
455
555
  }
456
556
  }, "#onMessage");
457
557
  _onCall = new WeakSet();
@@ -460,10 +560,10 @@ onCall_fn = /* @__PURE__ */ __name(async function(message) {
460
560
  await __privateMethod(this, _handleCall, handleCall_fn).call(this, message);
461
561
  } catch (callError) {
462
562
  if (callError instanceof import_zod10.ZodError) {
463
- console.error(`[ZodRPC][foobar] Received invalid call:
563
+ __privateGet(this, _logger).error(`[ZodRPC] Received invalid call:
464
564
  ${JSON.stringify(message)}: `, callError.errors);
465
565
  } else {
466
- console.error(`[ZodRPC] Error handling call:
566
+ __privateGet(this, _logger).error(`[ZodRPC] Error handling call:
467
567
  ${JSON.stringify(message)}: `, callError);
468
568
  }
469
569
  }
@@ -474,11 +574,11 @@ onResponse_fn = /* @__PURE__ */ __name(async function(message1) {
474
574
  await __privateMethod(this, _handleResponse, handleResponse_fn).call(this, message1);
475
575
  } catch (callError) {
476
576
  if (callError instanceof import_zod10.ZodError) {
477
- console.error(`[ZodRPC] Received invalid response
577
+ __privateGet(this, _logger).error(`[ZodRPC] Received invalid response
478
578
 
479
579
  ${JSON.stringify(message1)}: `, callError.flatten());
480
580
  } else {
481
- console.error(`[ZodRPC] Error handling response
581
+ __privateGet(this, _logger).error(`[ZodRPC] Error handling response
482
582
 
483
583
  ${JSON.stringify(message1)}: `, callError);
484
584
  }
@@ -492,6 +592,9 @@ handleCall_fn = /* @__PURE__ */ __name(async function(message2) {
492
592
  if (!method) {
493
593
  throw new Error(`There is no method for ${message2.methodName}`);
494
594
  }
595
+ __privateGet(this, _logger).debug("Received call", {
596
+ message: message2
597
+ });
495
598
  const inputs = method.request.parse(message2.data);
496
599
  const handler = __privateGet(this, _handlers)[methodName];
497
600
  const returnValue = await handler(inputs);
@@ -503,7 +606,7 @@ handleCall_fn = /* @__PURE__ */ __name(async function(message2) {
503
606
  try {
504
607
  await __privateGet(this, _connection).send(preparedResponseText);
505
608
  } catch (err) {
506
- console.error("Failed sending response", preparedResponseText, err);
609
+ __privateGet(this, _logger).error("Failed sending response", preparedResponseText, err);
507
610
  }
508
611
  return;
509
612
  }, "#handleCall");
@@ -543,72 +646,13 @@ function packageResponse({ id, methodName, data }) {
543
646
  }
544
647
  __name(packageResponse, "packageResponse");
545
648
 
546
- // ../internal-bridge/src/logger.ts
547
- var logLevels = [
548
- "log",
549
- "error",
550
- "warn",
551
- "info",
552
- "debug"
553
- ];
554
- var _name, _level;
555
- var Logger = class {
556
- constructor(name2, level = "info") {
557
- __privateAdd(this, _name, void 0);
558
- __privateAdd(this, _level, void 0);
559
- __privateSet(this, _name, name2);
560
- __privateSet(this, _level, logLevels.indexOf(process.env.TRIGGER_LOG_LEVEL ?? level));
561
- }
562
- log(...args) {
563
- if (__privateGet(this, _level) < 0)
564
- return;
565
- console.log(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
566
- }
567
- error(...args) {
568
- if (__privateGet(this, _level) < 1)
569
- return;
570
- console.error(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
571
- }
572
- warn(...args) {
573
- if (__privateGet(this, _level) < 2)
574
- return;
575
- console.warn(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
576
- }
577
- info(...args) {
578
- if (__privateGet(this, _level) < 3)
579
- return;
580
- console.info(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
581
- }
582
- debug(...args) {
583
- if (__privateGet(this, _level) < 4)
584
- return;
585
- console.debug(`[${formattedDateTime()}] [${__privateGet(this, _name)}] `, ...args);
586
- }
587
- };
588
- __name(Logger, "Logger");
589
- _name = new WeakMap();
590
- _level = new WeakMap();
591
- function formattedDateTime() {
592
- const date = new Date();
593
- const hours = date.getHours();
594
- const minutes = date.getMinutes();
595
- const seconds = date.getSeconds();
596
- const milliseconds = date.getMilliseconds();
597
- const formattedHours = hours < 10 ? `0${hours}` : hours;
598
- const formattedMinutes = minutes < 10 ? `0${minutes}` : minutes;
599
- const formattedSeconds = seconds < 10 ? `0${seconds}` : seconds;
600
- const formattedMilliseconds = milliseconds < 10 ? `00${milliseconds}` : milliseconds < 100 ? `0${milliseconds}` : milliseconds;
601
- return `${formattedHours}:${formattedMinutes}:${formattedSeconds}.${formattedMilliseconds}`;
602
- }
603
- __name(formattedDateTime, "formattedDateTime");
604
-
605
649
  // src/client.ts
606
650
  var import_uuid2 = require("uuid");
607
651
  var import_ws = require("ws");
608
652
 
609
653
  // package.json
610
654
  var name = "@trigger.dev/sdk";
611
- var version = "0.2.0";
655
+ var version = "0.2.2";
612
656
 
613
657
  // src/connection.ts
614
658
  var import_uuid = require("uuid");
@@ -619,7 +663,7 @@ __name(TimeoutError, "TimeoutError");
619
663
  var NotConnectedError = class extends Error {
620
664
  };
621
665
  __name(NotConnectedError, "NotConnectedError");
622
- var _socket, _connectTimeout, _sendTimeout, _pingTimeout, _isAuthenticated, _timeouts, _isClosed, _pendingMessages, _logger, _pingIntervalHandle, _pingIntervalMs, _closeUnresponsiveConnectionTimeoutMs, _startPingInterval, startPingInterval_fn, _ping, ping_fn;
666
+ var _socket, _connectTimeout, _sendTimeout, _pingTimeout, _isAuthenticated, _timeouts, _isClosed, _pendingMessages, _logger2, _pingIntervalHandle, _pingIntervalMs, _closeUnresponsiveConnectionTimeoutMs, _startPingInterval, startPingInterval_fn, _ping, ping_fn;
623
667
  var HostConnection = class {
624
668
  constructor(socket, options) {
625
669
  __privateAdd(this, _startPingInterval);
@@ -632,7 +676,7 @@ var HostConnection = class {
632
676
  __privateAdd(this, _timeouts, void 0);
633
677
  __privateAdd(this, _isClosed, false);
634
678
  __privateAdd(this, _pendingMessages, /* @__PURE__ */ new Map());
635
- __privateAdd(this, _logger, void 0);
679
+ __privateAdd(this, _logger2, void 0);
636
680
  __privateAdd(this, _pingIntervalHandle, void 0);
637
681
  __privateAdd(this, _pingIntervalMs, 3e4);
638
682
  __privateAdd(this, _closeUnresponsiveConnectionTimeoutMs, 3 * 60 * 1e3);
@@ -647,7 +691,7 @@ var HostConnection = class {
647
691
  __privateSet(this, _sendTimeout, options?.sendTimeout ?? 5e3);
648
692
  __privateSet(this, _pingTimeout, options?.pingTimeout ?? 5e3);
649
693
  __privateSet(this, _timeouts, /* @__PURE__ */ new Set());
650
- __privateSet(this, _logger, new Logger("trigger.dev connection"));
694
+ __privateSet(this, _logger2, new Logger("trigger.dev connection"));
651
695
  this.onClose.attach(() => {
652
696
  __privateSet(this, _isClosed, true);
653
697
  if (__privateGet(this, _pingIntervalHandle)) {
@@ -710,21 +754,21 @@ var HostConnection = class {
710
754
  }
711
755
  }
712
756
  async connect() {
713
- __privateGet(this, _logger).debug("[connect] Attempting to connect");
757
+ __privateGet(this, _logger2).debug("[connect] Attempting to connect");
714
758
  return new Promise((resolve, reject) => {
715
759
  if (__privateGet(this, _socket).readyState === __privateGet(this, _socket).OPEN && __privateGet(this, _isAuthenticated)) {
716
- __privateGet(this, _logger).debug("[connect] Already connected, resolving");
760
+ __privateGet(this, _logger2).debug("[connect] Already connected, resolving");
717
761
  return resolve();
718
762
  }
719
763
  const failTimeout = setTimeout(() => {
720
- __privateGet(this, _logger).debug("[connect] Connection timed out, rejecting");
764
+ __privateGet(this, _logger2).debug("[connect] Connection timed out, rejecting");
721
765
  reject(new TimeoutError());
722
766
  }, __privateGet(this, _connectTimeout));
723
767
  __privateGet(this, _timeouts).add(failTimeout);
724
768
  this.onAuthenticated.attach(() => {
725
769
  clearTimeout(failTimeout);
726
770
  __privateGet(this, _timeouts).delete(failTimeout);
727
- __privateGet(this, _logger).debug("[connect] Connected, resolving");
771
+ __privateGet(this, _logger2).debug("[connect] Connected, resolving");
728
772
  resolve();
729
773
  });
730
774
  });
@@ -768,7 +812,7 @@ _isAuthenticated = new WeakMap();
768
812
  _timeouts = new WeakMap();
769
813
  _isClosed = new WeakMap();
770
814
  _pendingMessages = new WeakMap();
771
- _logger = new WeakMap();
815
+ _logger2 = new WeakMap();
772
816
  _pingIntervalHandle = new WeakMap();
773
817
  _pingIntervalMs = new WeakMap();
774
818
  _closeUnresponsiveConnectionTimeoutMs = new WeakMap();
@@ -787,12 +831,12 @@ startPingInterval_fn = /* @__PURE__ */ __name(function() {
787
831
  await __privateMethod(this, _ping, ping_fn).call(this);
788
832
  lastSuccessfulPing = new Date();
789
833
  } catch (err) {
790
- __privateGet(this, _logger).warn("Pong not received in time");
834
+ __privateGet(this, _logger2).warn("Pong not received in time");
791
835
  if (!(err instanceof TimeoutError)) {
792
- __privateGet(this, _logger).error(err);
836
+ __privateGet(this, _logger2).error(err);
793
837
  }
794
838
  if (lastSuccessfulPing.getTime() < new Date().getTime() - __privateGet(this, _closeUnresponsiveConnectionTimeoutMs)) {
795
- __privateGet(this, _logger).error("No pong received in last three minutes, closing connection to Interval and retrying...");
839
+ __privateGet(this, _logger2).error("No pong received in last three minutes, closing connection to Interval and retrying...");
796
840
  if (__privateGet(this, _pingIntervalHandle)) {
797
841
  clearInterval(__privateGet(this, _pingIntervalHandle));
798
842
  __privateSet(this, _pingIntervalHandle, void 0);
@@ -822,11 +866,11 @@ ping_fn = /* @__PURE__ */ __name(async function() {
822
866
  onAckReceived: () => {
823
867
  clearTimeout(failTimeout);
824
868
  __privateGet(this, _timeouts).delete(failTimeout);
825
- __privateGet(this, _logger).debug(`Resolving ping`);
869
+ __privateGet(this, _logger2).debug(`Resolving ping`);
826
870
  resolve();
827
871
  }
828
872
  });
829
- __privateGet(this, _logger).debug(`Sending ping ${id} to ${socket.url}`);
873
+ __privateGet(this, _logger2).debug(`Sending ping ${id} to ${socket.url}`);
830
874
  socket.ping(id, void 0, (err) => {
831
875
  if (err) {
832
876
  reject(err);
@@ -860,7 +904,7 @@ var ContextLogger = class {
860
904
  __name(ContextLogger, "ContextLogger");
861
905
 
862
906
  // src/client.ts
863
- var _trigger, _options, _connection2, _serverRPC, _apiKey, _endpoint, _isConnected, _retryIntervalMs, _logger2, _closedByUser, _responseCompleteCallbacks, _waitForCallbacks, _initializeConnection, initializeConnection_fn, _initializeRPC, initializeRPC_fn, _initializeHost, initializeHost_fn, _send, send_fn;
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;
864
908
  var TriggerClient = class {
865
909
  constructor(trigger, options) {
866
910
  __privateAdd(this, _initializeConnection);
@@ -875,7 +919,7 @@ var TriggerClient = class {
875
919
  __privateAdd(this, _endpoint, void 0);
876
920
  __privateAdd(this, _isConnected, false);
877
921
  __privateAdd(this, _retryIntervalMs, 3e3);
878
- __privateAdd(this, _logger2, void 0);
922
+ __privateAdd(this, _logger3, void 0);
879
923
  __privateAdd(this, _closedByUser, false);
880
924
  __privateAdd(this, _responseCompleteCallbacks, /* @__PURE__ */ new Map());
881
925
  __privateAdd(this, _waitForCallbacks, /* @__PURE__ */ new Map());
@@ -887,7 +931,7 @@ var TriggerClient = class {
887
931
  }
888
932
  __privateSet(this, _apiKey, apiKey);
889
933
  __privateSet(this, _endpoint, __privateGet(this, _options).endpoint ?? "wss://wss.trigger.dev/ws");
890
- __privateSet(this, _logger2, new Logger("trigger.dev", __privateGet(this, _options).logLevel));
934
+ __privateSet(this, _logger3, new Logger("trigger.dev", __privateGet(this, _options).logLevel));
891
935
  }
892
936
  async listen(instanceId) {
893
937
  await __privateMethod(this, _initializeConnection, initializeConnection_fn).call(this, instanceId);
@@ -912,14 +956,14 @@ _apiKey = new WeakMap();
912
956
  _endpoint = new WeakMap();
913
957
  _isConnected = new WeakMap();
914
958
  _retryIntervalMs = new WeakMap();
915
- _logger2 = new WeakMap();
959
+ _logger3 = new WeakMap();
916
960
  _closedByUser = new WeakMap();
917
961
  _responseCompleteCallbacks = new WeakMap();
918
962
  _waitForCallbacks = new WeakMap();
919
963
  _initializeConnection = new WeakSet();
920
964
  initializeConnection_fn = /* @__PURE__ */ __name(async function(instanceId) {
921
965
  const id = instanceId ?? (0, import_uuid2.v4)();
922
- __privateGet(this, _logger2).debug("Initializing connection", {
966
+ __privateGet(this, _logger3).debug("Initializing connection", {
923
967
  id,
924
968
  endpoint: __privateGet(this, _endpoint)
925
969
  });
@@ -934,29 +978,29 @@ initializeConnection_fn = /* @__PURE__ */ __name(async function(instanceId) {
934
978
  });
935
979
  connection.onClose.attach(async ([code, reason]) => {
936
980
  if (__privateGet(this, _closedByUser)) {
937
- __privateGet(this, _logger2).debug("Connection closed by user, so we won't reconnect");
981
+ __privateGet(this, _logger3).debug("Connection closed by user, so we won't reconnect");
938
982
  __privateSet(this, _closedByUser, false);
939
983
  return;
940
984
  }
941
- __privateGet(this, _logger2).error(`\u{1F6A9} Could not connect to trigger.dev (code ${code})`);
985
+ __privateGet(this, _logger3).error(`\u{1F6A9} Could not connect to trigger.dev (code ${code})`);
942
986
  if (reason) {
943
- __privateGet(this, _logger2).error("Reason:", reason);
987
+ __privateGet(this, _logger3).error("Reason:", reason);
944
988
  }
945
989
  if (!__privateGet(this, _isConnected))
946
990
  return;
947
- __privateGet(this, _logger2).log("\u{1F50C} Reconnecting to trigger.dev...");
991
+ __privateGet(this, _logger3).log("\u{1F50C} Reconnecting to trigger.dev...");
948
992
  __privateSet(this, _isConnected, false);
949
993
  while (!__privateGet(this, _isConnected)) {
950
994
  __privateMethod(this, _initializeConnection, initializeConnection_fn).call(this, id).then(() => {
951
- __privateGet(this, _logger2).log("\u26A1 Reconnection successful");
995
+ __privateGet(this, _logger3).log("\u26A1 Reconnection successful");
952
996
  }).catch(() => {
953
997
  });
954
- __privateGet(this, _logger2).debug(`Reconnection failed, retrying in ${Math.round(__privateGet(this, _retryIntervalMs) / 1e3)} seconds`, id);
998
+ __privateGet(this, _logger3).debug(`Reconnection failed, retrying in ${Math.round(__privateGet(this, _retryIntervalMs) / 1e3)} seconds`, id);
955
999
  await new Promise((resolve) => setTimeout(resolve, __privateGet(this, _retryIntervalMs)));
956
1000
  }
957
1001
  });
958
1002
  await connection.connect();
959
- __privateGet(this, _logger2).debug("Connection initialized", id);
1003
+ __privateGet(this, _logger3).debug("Connection initialized", id);
960
1004
  __privateSet(this, _connection2, connection);
961
1005
  __privateSet(this, _isConnected, true);
962
1006
  if (__privateGet(this, _serverRPC)) {
@@ -975,10 +1019,10 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
975
1019
  receiver: HostRPCSchema,
976
1020
  handlers: {
977
1021
  RESOLVE_DELAY: async (data) => {
978
- __privateGet(this, _logger2).debug("Handling RESOLVE_DELAY", data);
1022
+ __privateGet(this, _logger3).debug("Handling RESOLVE_DELAY", data);
979
1023
  const waitCallbacks = __privateGet(this, _waitForCallbacks).get(messageKey(data.meta.runId, data.key));
980
1024
  if (!waitCallbacks) {
981
- __privateGet(this, _logger2).debug(`Could not find wait callbacks for wait ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1025
+ __privateGet(this, _logger3).debug(`Could not find wait callbacks for wait ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
982
1026
  return true;
983
1027
  }
984
1028
  const { resolve } = waitCallbacks;
@@ -986,10 +1030,10 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
986
1030
  return true;
987
1031
  },
988
1032
  RESOLVE_REQUEST: async (data) => {
989
- __privateGet(this, _logger2).debug("Handling RESOLVE_REQUEST", data);
1033
+ __privateGet(this, _logger3).debug("Handling RESOLVE_REQUEST", data);
990
1034
  const requestCallbacks = __privateGet(this, _responseCompleteCallbacks).get(messageKey(data.meta.runId, data.key));
991
1035
  if (!requestCallbacks) {
992
- __privateGet(this, _logger2).debug(`Could not find request callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1036
+ __privateGet(this, _logger3).debug(`Could not find request callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
993
1037
  return true;
994
1038
  }
995
1039
  const { resolve } = requestCallbacks;
@@ -997,10 +1041,10 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
997
1041
  return true;
998
1042
  },
999
1043
  REJECT_REQUEST: async (data) => {
1000
- __privateGet(this, _logger2).debug("Handling REJECT_REQUEST", data);
1044
+ __privateGet(this, _logger3).debug("Handling REJECT_REQUEST", data);
1001
1045
  const requestCallbacks = __privateGet(this, _responseCompleteCallbacks).get(messageKey(data.meta.runId, data.key));
1002
1046
  if (!requestCallbacks) {
1003
- __privateGet(this, _logger2).debug(`Could not find request callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1047
+ __privateGet(this, _logger3).debug(`Could not find request callbacks for request ID ${messageKey(data.meta.runId, data.key)}. This can happen when a workflow run is resumed`);
1004
1048
  return true;
1005
1049
  }
1006
1050
  const { reject } = requestCallbacks;
@@ -1008,7 +1052,7 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1008
1052
  return true;
1009
1053
  },
1010
1054
  TRIGGER_WORKFLOW: async (data) => {
1011
- __privateGet(this, _logger2).debug("Handling TRIGGER_WORKFLOW", data);
1055
+ __privateGet(this, _logger3).debug("Handling TRIGGER_WORKFLOW", data);
1012
1056
  const ctx = {
1013
1057
  id: data.id,
1014
1058
  environment: data.meta.environment,
@@ -1026,7 +1070,7 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1026
1070
  timestamp: String(highPrecisionTimestamp())
1027
1071
  });
1028
1072
  }),
1029
- fireEvent: async (key, event) => {
1073
+ sendEvent: async (key, event) => {
1030
1074
  await serverRPC.send("SEND_EVENT", {
1031
1075
  runId: data.id,
1032
1076
  key,
@@ -1077,7 +1121,7 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1077
1121
  }
1078
1122
  };
1079
1123
  const eventData = __privateGet(this, _options).on.schema.parse(data.trigger.input);
1080
- __privateGet(this, _logger2).debug("Parsed event data", eventData);
1124
+ __privateGet(this, _logger3).debug("Parsed event data", eventData);
1081
1125
  triggerRunLocalStorage.run({
1082
1126
  performRequest: async (key, options) => {
1083
1127
  const result = new Promise((resolve, reject) => {
@@ -1098,14 +1142,23 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1098
1142
  });
1099
1143
  const output = await result;
1100
1144
  return options.response.schema.parse(output);
1145
+ },
1146
+ sendEvent: async (key, event) => {
1147
+ await serverRPC.send("SEND_EVENT", {
1148
+ runId: data.id,
1149
+ key,
1150
+ event: JSON.parse(JSON.stringify(event)),
1151
+ timestamp: String(highPrecisionTimestamp())
1152
+ });
1101
1153
  }
1102
1154
  }, () => {
1103
- __privateGet(this, _logger2).debug("Running trigger...");
1155
+ __privateGet(this, _logger3).debug("Running trigger...");
1104
1156
  serverRPC.send("START_WORKFLOW_RUN", {
1105
1157
  runId: data.id,
1106
1158
  timestamp: String(highPrecisionTimestamp())
1107
1159
  }).then(() => {
1108
1160
  return __privateGet(this, _trigger).options.run(eventData, ctx).then((output) => {
1161
+ __privateGet(this, _logger3).log(`Completed workflow '${__privateGet(this, _options).name}', run ${data.id} \u{1F3C3}`);
1109
1162
  return serverRPC.send("COMPLETE_WORKFLOW_RUN", {
1110
1163
  runId: data.id,
1111
1164
  output: JSON.stringify(output),
@@ -1145,7 +1198,7 @@ initializeRPC_fn = /* @__PURE__ */ __name(async function() {
1145
1198
  }
1146
1199
  }
1147
1200
  });
1148
- __privateGet(this, _logger2).debug("Successfully initialized RPC with server");
1201
+ __privateGet(this, _logger3).debug("Successfully initialized RPC with server");
1149
1202
  __privateSet(this, _serverRPC, serverRPC);
1150
1203
  }, "#initializeRPC");
1151
1204
  _initializeHost = new WeakSet();
@@ -1162,12 +1215,13 @@ initializeHost_fn = /* @__PURE__ */ __name(async function() {
1162
1215
  workflowName: __privateGet(this, _trigger).name,
1163
1216
  trigger: __privateGet(this, _trigger).on.metadata,
1164
1217
  packageVersion: version,
1165
- packageName: name
1218
+ packageName: name,
1219
+ triggerTTL: __privateGet(this, _options).triggerTTL
1166
1220
  });
1167
1221
  if (response?.type === "error") {
1168
1222
  throw new Error(response.message);
1169
1223
  }
1170
- __privateGet(this, _logger2).debug("Successfully initialized workflow with server");
1224
+ __privateGet(this, _logger3).debug("Successfully initialized workflow with server");
1171
1225
  }, "#initializeHost");
1172
1226
  _send = new WeakSet();
1173
1227
  send_fn = /* @__PURE__ */ __name(async function(methodName, request) {
@@ -1175,12 +1229,12 @@ send_fn = /* @__PURE__ */ __name(async function(methodName, request) {
1175
1229
  throw new Error("serverRPC not initialized");
1176
1230
  while (true) {
1177
1231
  try {
1178
- __privateGet(this, _logger2).debug(`Sending RPC request to server: ${methodName}`, request);
1232
+ __privateGet(this, _logger3).debug(`Sending RPC request to server: ${methodName}`, request);
1179
1233
  return await __privateGet(this, _serverRPC).send(methodName, request);
1180
1234
  } catch (err) {
1181
1235
  if (err instanceof TimeoutError) {
1182
- __privateGet(this, _logger2).log(`RPC call timed out, retrying in ${Math.round(__privateGet(this, _retryIntervalMs) / 1e3)}s...`);
1183
- __privateGet(this, _logger2).error(err);
1236
+ __privateGet(this, _logger3).log(`RPC call timed out, retrying in ${Math.round(__privateGet(this, _retryIntervalMs) / 1e3)}s...`);
1237
+ __privateGet(this, _logger3).error(err);
1184
1238
  await sleep(__privateGet(this, _retryIntervalMs));
1185
1239
  } else {
1186
1240
  throw err;
@@ -1225,35 +1279,41 @@ var Trigger = class {
1225
1279
  __name(Trigger, "Trigger");
1226
1280
  _client = new WeakMap();
1227
1281
 
1228
- // src/events.ts
1229
- function customEvent(options) {
1230
- return {
1231
- metadata: {
1232
- type: "CUSTOM_EVENT",
1233
- service: "trigger",
1234
- name: options.name,
1235
- filter: {
1236
- event: [
1237
- options.name
1238
- ]
1239
- }
1240
- },
1241
- schema: options.schema
1242
- };
1282
+ // src/customEvents.ts
1283
+ var import_node_fetch = __toESM(require("node-fetch"));
1284
+ var import_ulid = require("ulid");
1285
+ function sendEvent(id, event) {
1286
+ const triggerRun = triggerRunLocalStorage.getStore();
1287
+ if (!triggerRun) {
1288
+ return sendEventFetch(event);
1289
+ }
1290
+ return triggerRun.sendEvent(id, event);
1243
1291
  }
1244
- __name(customEvent, "customEvent");
1245
- function scheduleEvent(options) {
1246
- return {
1247
- metadata: {
1248
- type: "SCHEDULE",
1249
- service: "scheduler",
1250
- name: "scheduled-event",
1251
- source: options
1292
+ __name(sendEvent, "sendEvent");
1293
+ async function sendEventFetch(event) {
1294
+ if (!process.env.TRIGGER_API_KEY) {
1295
+ throw new Error(`There was a problem sending a custom event: the TRIGGER_API_KEY environment variable is not set`);
1296
+ }
1297
+ const id = (0, import_ulid.ulid)();
1298
+ const baseUrl = process.env.TRIGGER_API_URL || "https://app.trigger.dev";
1299
+ const url = `${baseUrl}/api/v1/events`;
1300
+ const response = await (0, import_node_fetch.default)(url, {
1301
+ method: "POST",
1302
+ headers: {
1303
+ "Content-Type": "application/json",
1304
+ Authorization: `Bearer ${process.env.TRIGGER_API_KEY}`
1252
1305
  },
1253
- schema: ScheduledEventPayloadSchema
1254
- };
1306
+ body: JSON.stringify({
1307
+ id,
1308
+ event
1309
+ })
1310
+ });
1311
+ if (!response.ok) {
1312
+ throw new Error(`There was a problem sending a custom event: ${response.statusText}`);
1313
+ }
1314
+ return;
1255
1315
  }
1256
- __name(scheduleEvent, "scheduleEvent");
1316
+ __name(sendEventFetch, "sendEventFetch");
1257
1317
 
1258
1318
  // src/index.ts
1259
1319
  function getTriggerRun() {
@@ -1265,6 +1325,7 @@ __name(getTriggerRun, "getTriggerRun");
1265
1325
  Trigger,
1266
1326
  customEvent,
1267
1327
  getTriggerRun,
1268
- scheduleEvent
1328
+ scheduleEvent,
1329
+ sendEvent
1269
1330
  });
1270
1331
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../../internal-bridge/src/schemas/host.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","../../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/events.ts"],"sourcesContent":["export * from \"./trigger\";\nexport * from \"./events\";\n\nimport { triggerRunLocalStorage } from \"./localStorage\";\n\nexport function getTriggerRun() {\n return triggerRunLocalStorage.getStore();\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 { 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 } 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: JsonSchema,\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 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 }),\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(),\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\";\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\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 console.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 console.error(\n `[ZodRPC][foobar] Received invalid call:\\n${JSON.stringify(\n message\n )}: `,\n callError.errors\n );\n } else {\n console.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 console.error(\n `[ZodRPC] Received invalid response\\n\\n${JSON.stringify(message)}: `,\n callError.flatten()\n );\n } else {\n console.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 // 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 console.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\nexport type LogLevel = \"log\" | \"error\" | \"warn\" | \"info\" | \"debug\";\n\nconst logLevels: Array<LogLevel> = [\"log\", \"error\", \"warn\", \"info\", \"debug\"];\n\nexport class Logger {\n #name: string;\n readonly #level: number;\n\n constructor(name: string, level: LogLevel = \"info\") {\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 < 0) return;\n\n console.log(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n error(...args: any[]) {\n if (this.#level < 1) return;\n\n console.error(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n warn(...args: any[]) {\n if (this.#level < 2) return;\n\n console.warn(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n info(...args: any[]) {\n if (this.#level < 3) return;\n\n console.info(`[${formattedDateTime()}] [${this.#name}] `, ...args);\n }\n\n debug(...args: any[]) {\n if (this.#level < 4) 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 fireEvent: 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 },\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 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 });\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\";\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};\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 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 {\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"],"mappings":"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","names":["import_zod","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","TriggerMetadataSchema","discriminatedUnion","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","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","RPCMessageSchema","z","object","id","string","methodName","data","any","kind","enum","ZodRPC","constructor","options","Map","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","console","error","callError","ZodError","stringify","errors","flatten","method","Error","inputs","request","handler","returnValue","preparedResponseText","packageResponse","responseCallback","get","delete","connId","reqKey","reqData","serializedData","inputString","hash","createHash","update","digest","callerData","logLevels","Logger","constructor","name","level","indexOf","process","env","TRIGGER_LOG_LEVEL","log","args","console","formattedDateTime","error","warn","info","debug","date","Date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","formattedHours","formattedMinutes","formattedSeconds","formattedMilliseconds","import_uuid","TimeoutError","Error","NotConnectedError","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","fireEvent","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","anyError","parseAnyError","name","stackTrace","stack","console","workflowId","workflowName","metadata","packageVersion","version","packageName","methodName","err","TimeoutError","sleep","ms","nanoseconds","hrtime","Trigger","constructor","options","listen","TriggerClient","id","name","endpoint","on","customEvent","options","metadata","type","service","name","filter","event","schema","scheduleEvent","source","ScheduledEventPayloadSchema","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","../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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trigger.dev/sdk",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "trigger.dev Node.JS SDK",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -22,6 +22,7 @@
22
22
  "@trigger.dev/tsconfig": "0.0.0",
23
23
  "@types/debug": "^4.1.7",
24
24
  "@types/node": "16",
25
+ "@types/node-fetch": "2.6.x",
25
26
  "@types/uuid": "^9.0.0",
26
27
  "@types/ws": "^8.5.3",
27
28
  "internal-bridge": "0.0.1",
@@ -32,6 +33,7 @@
32
33
  "dependencies": {
33
34
  "debug": "^4.3.4",
34
35
  "evt": "^2.4.13",
36
+ "node-fetch": "2.6.x",
35
37
  "ulid": "^2.3.0",
36
38
  "uuid": "^9.0.0",
37
39
  "ws": "^8.11.0",