trigger.dev 3.0.0-beta.0 → 3.0.0-beta.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.
@@ -0,0 +1,14 @@
1
+ import { logger, task, wait } from "@trigger.dev/sdk/v3";
2
+
3
+ export const helloWorldTask = task({
4
+ id: "hello-world",
5
+ run: async (payload: any, { ctx }) => {
6
+ logger.log("Hello, world!", { payload, ctx });
7
+
8
+ await wait.for({ seconds: 5 });
9
+
10
+ return {
11
+ message: "Hello, world!",
12
+ }
13
+ },
14
+ });
@@ -0,0 +1,15 @@
1
+ import type { TriggerConfig } from "@trigger.dev/sdk/v3";
2
+
3
+ export const config: TriggerConfig = {
4
+ project: "${projectRef}",
5
+ retries: {
6
+ enabledInDev: false,
7
+ default: {
8
+ maxAttempts: 3,
9
+ minTimeoutInMs: 1000,
10
+ maxTimeoutInMs: 10000,
11
+ factor: 2,
12
+ randomize: true,
13
+ },
14
+ },${triggerDirectoriesOption}
15
+ };
@@ -0,0 +1,177 @@
1
+ // src/workers/dev/worker-facade.ts
2
+ import {
3
+ TaskExecutor,
4
+ DurableClock,
5
+ clock
6
+ } from "@trigger.dev/core/v3";
7
+ import {
8
+ ConsoleInterceptor,
9
+ DevRuntimeManager,
10
+ OtelTaskLogger,
11
+ TaskRunErrorCodes,
12
+ TriggerTracer,
13
+ ZodMessageHandler,
14
+ logger,
15
+ runtime,
16
+ workerToChildMessages
17
+ } from "@trigger.dev/core/v3";
18
+
19
+ // package.json
20
+ var version = "3.0.0-beta.2";
21
+
22
+ // src/workers/dev/worker-facade.ts
23
+ __WORKER_SETUP__;
24
+ __IMPORTED_PROJECT_CONFIG__;
25
+ var otelTracer = tracingSDK.getTracer("trigger-dev-worker", version);
26
+ var otelLogger = tracingSDK.getLogger("trigger-dev-worker", version);
27
+ var durableClock = new DurableClock();
28
+ clock.setGlobalClock(durableClock);
29
+ var tracer = new TriggerTracer({ tracer: otelTracer, logger: otelLogger });
30
+ var consoleInterceptor = new ConsoleInterceptor(otelLogger);
31
+ var devRuntimeManager = new DevRuntimeManager();
32
+ runtime.setGlobalRuntimeManager(devRuntimeManager);
33
+ var otelTaskLogger = new OtelTaskLogger({
34
+ logger: otelLogger,
35
+ tracer,
36
+ level: "info"
37
+ });
38
+ logger.setGlobalTaskLogger(otelTaskLogger);
39
+ var TaskFileImports = {};
40
+ var TaskFiles = {};
41
+ __TASKS__;
42
+ function getTasks() {
43
+ const result = [];
44
+ for (const [importName, taskFile] of Object.entries(TaskFiles)) {
45
+ const fileImports = TaskFileImports[importName];
46
+ for (const [exportName, task] of Object.entries(fileImports ?? {})) {
47
+ if (task.__trigger) {
48
+ result.push({
49
+ id: task.__trigger.id,
50
+ exportName,
51
+ packageVersion: task.__trigger.packageVersion,
52
+ filePath: taskFile.filePath,
53
+ queue: task.__trigger.queue,
54
+ retry: task.__trigger.retry,
55
+ machine: task.__trigger.machine,
56
+ fns: task.__trigger.fns
57
+ });
58
+ }
59
+ }
60
+ }
61
+ return result;
62
+ }
63
+ function getTaskMetadata() {
64
+ const result = getTasks();
65
+ return result.map((task) => {
66
+ const { fns, ...metadata } = task;
67
+ return metadata;
68
+ });
69
+ }
70
+ var tasks = getTasks();
71
+ runtime.registerTasks(tasks);
72
+ var taskExecutors = /* @__PURE__ */ new Map();
73
+ for (const task of tasks) {
74
+ taskExecutors.set(
75
+ task.id,
76
+ new TaskExecutor(task, {
77
+ tracer,
78
+ tracingSDK,
79
+ consoleInterceptor,
80
+ projectConfig: __PROJECT_CONFIG__,
81
+ importedConfig,
82
+ handleErrorFn: handleError
83
+ })
84
+ );
85
+ }
86
+ var _execution;
87
+ var _isRunning = false;
88
+ var handler = new ZodMessageHandler({
89
+ schema: workerToChildMessages,
90
+ messages: {
91
+ EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata }) => {
92
+ if (_isRunning) {
93
+ console.error("Worker is already running a task");
94
+ await sender.send("TASK_RUN_COMPLETED", {
95
+ execution,
96
+ result: {
97
+ ok: false,
98
+ id: execution.attempt.id,
99
+ error: {
100
+ type: "INTERNAL_ERROR",
101
+ code: TaskRunErrorCodes.TASK_ALREADY_RUNNING
102
+ }
103
+ }
104
+ });
105
+ return;
106
+ }
107
+ process.title = `trigger-dev-worker: ${execution.task.id} ${execution.run.id}`;
108
+ const executor = taskExecutors.get(execution.task.id);
109
+ if (!executor) {
110
+ console.error(`Could not find executor for task ${execution.task.id}`);
111
+ await sender.send("TASK_RUN_COMPLETED", {
112
+ execution,
113
+ result: {
114
+ ok: false,
115
+ id: execution.attempt.id,
116
+ error: {
117
+ type: "INTERNAL_ERROR",
118
+ code: TaskRunErrorCodes.COULD_NOT_FIND_EXECUTOR
119
+ }
120
+ }
121
+ });
122
+ return;
123
+ }
124
+ try {
125
+ _execution = execution;
126
+ _isRunning = true;
127
+ const result = await executor.execute(execution, metadata, traceContext);
128
+ return sender.send("TASK_RUN_COMPLETED", {
129
+ execution,
130
+ result
131
+ });
132
+ } finally {
133
+ _execution = void 0;
134
+ _isRunning = false;
135
+ }
136
+ },
137
+ TASK_RUN_COMPLETED_NOTIFICATION: async ({ completion, execution }) => {
138
+ devRuntimeManager.resumeTask(completion, execution);
139
+ },
140
+ CLEANUP: async ({ flush, kill }) => {
141
+ if (kill) {
142
+ await tracingSDK.flush();
143
+ await sender.send("READY_TO_DISPOSE", void 0);
144
+ } else {
145
+ if (flush) {
146
+ await tracingSDK.flush();
147
+ }
148
+ }
149
+ }
150
+ }
151
+ });
152
+ process.on("message", async (msg) => {
153
+ await handler.handleMessage(msg);
154
+ });
155
+ sender.send("TASKS_READY", { tasks: getTaskMetadata() }).catch((err) => {
156
+ console.error("Failed to send TASKS_READY message", err);
157
+ });
158
+ process.title = "trigger-dev-worker";
159
+ async function asyncHeartbeat(initialDelayInSeconds = 30, intervalInSeconds = 5) {
160
+ async function _doHeartbeat() {
161
+ while (true) {
162
+ if (_isRunning && _execution) {
163
+ try {
164
+ await sender.send("TASK_HEARTBEAT", { id: _execution.attempt.id });
165
+ } catch (err) {
166
+ console.error("Failed to send HEARTBEAT message", err);
167
+ }
168
+ }
169
+ await new Promise((resolve) => setTimeout(resolve, 1e3 * intervalInSeconds));
170
+ }
171
+ }
172
+ await new Promise((resolve) => setTimeout(resolve, 1e3 * initialDelayInSeconds));
173
+ return _doHeartbeat();
174
+ }
175
+ asyncHeartbeat().catch((err) => {
176
+ console.error("Failed to start asyncHeartbeat", err);
177
+ });
@@ -0,0 +1,40 @@
1
+ // src/workers/dev/worker-setup.ts
2
+ import "source-map-support/register.js";
3
+ import { Resource } from "@opentelemetry/resources";
4
+ import {
5
+ SemanticInternalAttributes,
6
+ TracingSDK,
7
+ ZodMessageSender,
8
+ childToWorkerMessages
9
+ } from "@trigger.dev/core/v3";
10
+ __SETUP_IMPORTED_PROJECT_CONFIG__;
11
+ var tracingSDK = new TracingSDK({
12
+ url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://0.0.0.0:4318",
13
+ resource: new Resource({
14
+ [SemanticInternalAttributes.CLI_VERSION]: "3.0.0"
15
+ }),
16
+ instrumentations: setupImportedConfig?.instrumentations ?? [],
17
+ diagLogLevel: process.env.OTEL_LOG_LEVEL ?? "none"
18
+ });
19
+ var sender = new ZodMessageSender({
20
+ schema: childToWorkerMessages,
21
+ sender: async (message) => {
22
+ process.send?.(message);
23
+ }
24
+ });
25
+ process.on("uncaughtException", (error, origin) => {
26
+ sender.send("UNCAUGHT_EXCEPTION", {
27
+ error: {
28
+ name: error.name,
29
+ message: error.message,
30
+ stack: error.stack
31
+ },
32
+ origin
33
+ }).catch((err) => {
34
+ console.error("Failed to send UNCAUGHT_EXCEPTION message", err);
35
+ });
36
+ });
37
+ export {
38
+ sender,
39
+ tracingSDK
40
+ };