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