trigger.dev 2.3.18 → 3.0.0-beta.1
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 +30 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +5515 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/examples/simple.ts.template +14 -0
- package/dist/templates/trigger.config.ts.template +15 -0
- package/dist/workers/dev/worker-facade.js +175 -0
- package/dist/workers/dev/worker-setup.js +40 -0
- package/dist/workers/prod/entry-point.js +1125 -0
- package/dist/workers/prod/worker-facade.js +179 -0
- package/dist/workers/prod/worker-setup.js +35 -0
- package/package.json +4 -3
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
// src/workers/prod/worker-facade.ts
|
|
2
|
+
import {
|
|
3
|
+
ProdChildToWorkerMessages,
|
|
4
|
+
ProdWorkerToChildMessages,
|
|
5
|
+
TaskExecutor,
|
|
6
|
+
ZodIpcConnection,
|
|
7
|
+
preciseDateOriginNow
|
|
8
|
+
} from "@trigger.dev/core/v3";
|
|
9
|
+
import "source-map-support/register.js";
|
|
10
|
+
import {
|
|
11
|
+
ConsoleInterceptor,
|
|
12
|
+
OtelTaskLogger,
|
|
13
|
+
ProdRuntimeManager,
|
|
14
|
+
TaskRunErrorCodes,
|
|
15
|
+
TriggerTracer,
|
|
16
|
+
logger,
|
|
17
|
+
runtime
|
|
18
|
+
} from "@trigger.dev/core/v3";
|
|
19
|
+
|
|
20
|
+
// package.json
|
|
21
|
+
var version = "3.0.0-beta.1";
|
|
22
|
+
|
|
23
|
+
// src/workers/prod/worker-facade.ts
|
|
24
|
+
__WORKER_SETUP__;
|
|
25
|
+
__IMPORTED_PROJECT_CONFIG__;
|
|
26
|
+
var otelTracer = tracingSDK.getTracer("trigger-prod-worker", version);
|
|
27
|
+
var otelLogger = tracingSDK.getLogger("trigger-prod-worker", version);
|
|
28
|
+
var preciseDateOrigin = preciseDateOriginNow();
|
|
29
|
+
var tracer = new TriggerTracer({ tracer: otelTracer, logger: otelLogger });
|
|
30
|
+
var consoleInterceptor = new ConsoleInterceptor(otelLogger, preciseDateOrigin);
|
|
31
|
+
var otelTaskLogger = new OtelTaskLogger({
|
|
32
|
+
logger: otelLogger,
|
|
33
|
+
tracer,
|
|
34
|
+
level: "info",
|
|
35
|
+
preciseDateOrigin
|
|
36
|
+
});
|
|
37
|
+
logger.setGlobalTaskLogger(otelTaskLogger);
|
|
38
|
+
var TaskFileImports = {};
|
|
39
|
+
var TaskFiles = {};
|
|
40
|
+
__TASKS__;
|
|
41
|
+
function getTasks() {
|
|
42
|
+
const result = [];
|
|
43
|
+
for (const [importName, taskFile] of Object.entries(TaskFiles)) {
|
|
44
|
+
const fileImports = TaskFileImports[importName];
|
|
45
|
+
for (const [exportName, task] of Object.entries(fileImports ?? {})) {
|
|
46
|
+
if (task.__trigger) {
|
|
47
|
+
result.push({
|
|
48
|
+
id: task.__trigger.id,
|
|
49
|
+
exportName,
|
|
50
|
+
packageVersion: task.__trigger.packageVersion,
|
|
51
|
+
filePath: taskFile.filePath,
|
|
52
|
+
queue: task.__trigger.queue,
|
|
53
|
+
retry: task.__trigger.retry,
|
|
54
|
+
fns: task.__trigger.fns
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
function getTaskMetadata() {
|
|
62
|
+
const result = getTasks();
|
|
63
|
+
return result.map((task) => {
|
|
64
|
+
const { fns, ...metadata } = task;
|
|
65
|
+
return metadata;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
var tasks = getTasks();
|
|
69
|
+
runtime.registerTasks(tasks);
|
|
70
|
+
var taskExecutors = /* @__PURE__ */ new Map();
|
|
71
|
+
for (const task of tasks) {
|
|
72
|
+
taskExecutors.set(
|
|
73
|
+
task.id,
|
|
74
|
+
new TaskExecutor(task, {
|
|
75
|
+
tracer,
|
|
76
|
+
tracingSDK,
|
|
77
|
+
consoleInterceptor,
|
|
78
|
+
projectConfig: __PROJECT_CONFIG__,
|
|
79
|
+
importedConfig,
|
|
80
|
+
handleErrorFn: handleError
|
|
81
|
+
})
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
var _execution;
|
|
85
|
+
var _isRunning = false;
|
|
86
|
+
var zodIpc = new ZodIpcConnection({
|
|
87
|
+
listenSchema: ProdWorkerToChildMessages,
|
|
88
|
+
emitSchema: ProdChildToWorkerMessages,
|
|
89
|
+
process,
|
|
90
|
+
handlers: {
|
|
91
|
+
EXECUTE_TASK_RUN: async ({ execution, traceContext, metadata }, sender) => {
|
|
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-prod-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
|
+
prodRuntimeManager.resumeTask(completion, execution);
|
|
139
|
+
},
|
|
140
|
+
WAIT_COMPLETED_NOTIFICATION: async () => {
|
|
141
|
+
prodRuntimeManager.resumeAfterRestore();
|
|
142
|
+
},
|
|
143
|
+
CLEANUP: async ({ flush, kill }, sender) => {
|
|
144
|
+
if (kill) {
|
|
145
|
+
await tracingSDK.flush();
|
|
146
|
+
await sender.send("READY_TO_DISPOSE", void 0);
|
|
147
|
+
} else {
|
|
148
|
+
if (flush) {
|
|
149
|
+
await tracingSDK.flush();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
var prodRuntimeManager = new ProdRuntimeManager(zodIpc);
|
|
156
|
+
runtime.setGlobalRuntimeManager(prodRuntimeManager);
|
|
157
|
+
zodIpc.send("TASKS_READY", { tasks: getTaskMetadata() }).catch((err) => {
|
|
158
|
+
console.error("Failed to send TASKS_READY message", err);
|
|
159
|
+
});
|
|
160
|
+
process.title = "trigger-prod-worker";
|
|
161
|
+
async function asyncHeartbeat(initialDelayInSeconds = 30, intervalInSeconds = 5) {
|
|
162
|
+
async function _doHeartbeat() {
|
|
163
|
+
while (true) {
|
|
164
|
+
if (_isRunning && _execution) {
|
|
165
|
+
try {
|
|
166
|
+
await zodIpc.send("TASK_HEARTBEAT", { id: _execution.attempt.id });
|
|
167
|
+
} catch (err) {
|
|
168
|
+
console.error("Failed to send HEARTBEAT message", err);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3 * intervalInSeconds));
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3 * initialDelayInSeconds));
|
|
175
|
+
return _doHeartbeat();
|
|
176
|
+
}
|
|
177
|
+
asyncHeartbeat(5).catch((err) => {
|
|
178
|
+
console.error("Failed to start asyncHeartbeat", err);
|
|
179
|
+
});
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// src/workers/prod/worker-setup.ts
|
|
2
|
+
import { Resource } from "@opentelemetry/resources";
|
|
3
|
+
import {
|
|
4
|
+
SemanticInternalAttributes,
|
|
5
|
+
TracingSDK
|
|
6
|
+
} from "@trigger.dev/core/v3";
|
|
7
|
+
__SETUP_IMPORTED_PROJECT_CONFIG__;
|
|
8
|
+
var tracingSDK = new TracingSDK({
|
|
9
|
+
url: process.env.OTEL_EXPORTER_OTLP_ENDPOINT ?? "http://0.0.0.0:4318",
|
|
10
|
+
resource: new Resource({
|
|
11
|
+
[SemanticInternalAttributes.CLI_VERSION]: "3.0.0"
|
|
12
|
+
}),
|
|
13
|
+
instrumentations: setupImportedConfig?.instrumentations ?? [],
|
|
14
|
+
diagLogLevel: process.env.OTEL_LOG_LEVEL ?? "none"
|
|
15
|
+
});
|
|
16
|
+
process.on("uncaughtException", (error, origin) => {
|
|
17
|
+
process.send?.({
|
|
18
|
+
type: "EVENT",
|
|
19
|
+
message: {
|
|
20
|
+
type: "UNCAUGHT_EXCEPTION",
|
|
21
|
+
payload: {
|
|
22
|
+
error: {
|
|
23
|
+
name: error.name,
|
|
24
|
+
message: error.message,
|
|
25
|
+
stack: error.stack
|
|
26
|
+
},
|
|
27
|
+
origin
|
|
28
|
+
},
|
|
29
|
+
version: "v1"
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
export {
|
|
34
|
+
tracingSDK
|
|
35
|
+
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trigger.dev",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-beta.1",
|
|
4
4
|
"description": "A Command-Line Interface for Trigger.dev (v3) projects",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"typescript": "^5.3.3",
|
|
55
55
|
"vitest": "^0.34.4",
|
|
56
56
|
"xdg-app-paths": "^8.3.0",
|
|
57
|
-
"@trigger.dev/core-apps": "0.0.0",
|
|
57
|
+
"@trigger.dev/core-apps": "3.0.0-beta.0",
|
|
58
58
|
"@trigger.dev/tsconfig": "0.0.0"
|
|
59
59
|
},
|
|
60
60
|
"watch": {
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"@opentelemetry/sdk-trace-base": "^1.22.0",
|
|
76
76
|
"@opentelemetry/sdk-trace-node": "^1.22.0",
|
|
77
77
|
"@opentelemetry/semantic-conventions": "^1.22.0",
|
|
78
|
-
"@trigger.dev/core": "^
|
|
78
|
+
"@trigger.dev/core": "^3.0.0-beta.0",
|
|
79
79
|
"@types/degit": "^2.8.3",
|
|
80
80
|
"chalk": "^5.2.0",
|
|
81
81
|
"chokidar": "^3.5.3",
|
|
@@ -99,6 +99,7 @@
|
|
|
99
99
|
"node-fetch": "^3.3.0",
|
|
100
100
|
"npm-check-updates": "^16.12.2",
|
|
101
101
|
"object-hash": "^3.0.0",
|
|
102
|
+
"p-debounce": "^4.0.0",
|
|
102
103
|
"p-throttle": "^6.1.0",
|
|
103
104
|
"partysocket": "^0.0.17",
|
|
104
105
|
"proxy-agent": "^6.3.0",
|