trigger.dev 0.0.0-v3-canary-20240321105132 → 0.0.0-v3-canary-20240321121448
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.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/templates/{trigger.config.ts → trigger.config.ts.template} +2 -2
- package/dist/workers/dev/worker-facade.js +1 -1
- package/dist/workers/prod/entry-point.js +108 -27
- package/dist/workers/prod/worker-facade.js +1 -1
- package/package.json +3 -4
- /package/dist/templates/examples/{simple.js → simple.ts.template} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TriggerConfig } from "@trigger.dev/sdk/v3";
|
|
2
2
|
|
|
3
|
-
export const config:
|
|
3
|
+
export const config: TriggerConfig = {
|
|
4
4
|
project: "${projectRef}",
|
|
5
5
|
retries: {
|
|
6
6
|
enabledInDev: false,
|
|
@@ -2,9 +2,90 @@
|
|
|
2
2
|
import {
|
|
3
3
|
CoordinatorToProdWorkerMessages,
|
|
4
4
|
ProdWorkerToCoordinatorMessages,
|
|
5
|
+
ZodSocketConnection as ZodSocketConnection2
|
|
6
|
+
} from "@trigger.dev/core/v3";
|
|
7
|
+
|
|
8
|
+
// ../core-apps/src/http.ts
|
|
9
|
+
var getTextBody = (req) => new Promise((resolve) => {
|
|
10
|
+
let body = "";
|
|
11
|
+
req.on("readable", () => {
|
|
12
|
+
const chunk = req.read();
|
|
13
|
+
if (chunk) {
|
|
14
|
+
body += chunk;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
req.on("end", () => {
|
|
18
|
+
resolve(body);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
var HttpReply = class {
|
|
22
|
+
constructor(response) {
|
|
23
|
+
this.response = response;
|
|
24
|
+
}
|
|
25
|
+
empty(status) {
|
|
26
|
+
return this.response.writeHead(status ?? 200).end();
|
|
27
|
+
}
|
|
28
|
+
text(text, status, contentType) {
|
|
29
|
+
return this.response.writeHead(status ?? 200, { "Content-Type": contentType || "text/plain" }).end(text.endsWith("\n") ? text : `${text}
|
|
30
|
+
`);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
function getRandomInteger(min, max) {
|
|
34
|
+
const intMin = Math.ceil(min);
|
|
35
|
+
const intMax = Math.floor(max);
|
|
36
|
+
return Math.floor(Math.random() * (intMax - intMin + 1)) + intMin;
|
|
37
|
+
}
|
|
38
|
+
function getRandomPortNumber() {
|
|
39
|
+
return getRandomInteger(8e3, 9999);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// ../core-apps/src/logger.ts
|
|
43
|
+
var SimpleLogger = class {
|
|
44
|
+
constructor(prefix) {
|
|
45
|
+
this.prefix = prefix;
|
|
46
|
+
}
|
|
47
|
+
#debugEnabled = ["1", "true"].includes(process.env.DEBUG ?? "");
|
|
48
|
+
log(arg0, ...argN) {
|
|
49
|
+
console.log(...this.#getPrefixedArgs(arg0, ...argN));
|
|
50
|
+
return arg0;
|
|
51
|
+
}
|
|
52
|
+
debug(arg0, ...argN) {
|
|
53
|
+
if (!this.#debugEnabled) {
|
|
54
|
+
return arg0;
|
|
55
|
+
}
|
|
56
|
+
console.debug(...this.#getPrefixedArgs("DEBUG", arg0, ...argN));
|
|
57
|
+
return arg0;
|
|
58
|
+
}
|
|
59
|
+
error(arg0, ...argN) {
|
|
60
|
+
console.error(...this.#getPrefixedArgs(arg0, ...argN));
|
|
61
|
+
return arg0;
|
|
62
|
+
}
|
|
63
|
+
#getPrefixedArgs(...args) {
|
|
64
|
+
if (!this.prefix) {
|
|
65
|
+
return args;
|
|
66
|
+
}
|
|
67
|
+
return [this.prefix, ...args];
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// ../core-apps/src/provider.ts
|
|
72
|
+
import {
|
|
73
|
+
ClientToSharedQueueMessages,
|
|
74
|
+
clientWebsocketMessages,
|
|
75
|
+
PlatformToProviderMessages,
|
|
76
|
+
ProviderToPlatformMessages,
|
|
77
|
+
SharedQueueToClientMessages,
|
|
78
|
+
ZodMessageSender,
|
|
5
79
|
ZodSocketConnection
|
|
6
80
|
} from "@trigger.dev/core/v3";
|
|
7
|
-
|
|
81
|
+
var HTTP_SERVER_PORT = Number(process.env.HTTP_SERVER_PORT || getRandomPortNumber());
|
|
82
|
+
var MACHINE_NAME = process.env.MACHINE_NAME || "local";
|
|
83
|
+
var PLATFORM_HOST = process.env.PLATFORM_HOST || "127.0.0.1";
|
|
84
|
+
var PLATFORM_WS_PORT = process.env.PLATFORM_WS_PORT || 3030;
|
|
85
|
+
var PLATFORM_SECRET = process.env.PLATFORM_SECRET || "provider-secret";
|
|
86
|
+
var logger = new SimpleLogger(`[${MACHINE_NAME}]`);
|
|
87
|
+
|
|
88
|
+
// src/workers/prod/entry-point.ts
|
|
8
89
|
import { createServer } from "node:http";
|
|
9
90
|
|
|
10
91
|
// src/workers/prod/backgroundWorker.ts
|
|
@@ -451,13 +532,13 @@ var TaskRunProcess = class {
|
|
|
451
532
|
};
|
|
452
533
|
|
|
453
534
|
// src/workers/prod/entry-point.ts
|
|
454
|
-
var
|
|
535
|
+
var HTTP_SERVER_PORT2 = Number(process.env.HTTP_SERVER_PORT || getRandomPortNumber());
|
|
455
536
|
var COORDINATOR_HOST = process.env.COORDINATOR_HOST || "127.0.0.1";
|
|
456
537
|
var COORDINATOR_PORT = Number(process.env.COORDINATOR_PORT || 50080);
|
|
457
|
-
var
|
|
538
|
+
var MACHINE_NAME2 = process.env.MACHINE_NAME || "local";
|
|
458
539
|
var POD_NAME = process.env.POD_NAME || "some-pod";
|
|
459
540
|
var SHORT_HASH = process.env.TRIGGER_CONTENT_HASH.slice(0, 9);
|
|
460
|
-
var
|
|
541
|
+
var logger2 = new SimpleLogger(`[${MACHINE_NAME2}][${SHORT_HASH}]`);
|
|
461
542
|
var ProdWorker = class {
|
|
462
543
|
constructor(port, host = "0.0.0.0") {
|
|
463
544
|
this.host = host;
|
|
@@ -480,7 +561,7 @@ var ProdWorker = class {
|
|
|
480
561
|
"WAIT_FOR_DURATION",
|
|
481
562
|
{ version: "v1", ...message }
|
|
482
563
|
);
|
|
483
|
-
|
|
564
|
+
logger2.log("WAIT_FOR_DURATION", { willCheckpointAndRestore });
|
|
484
565
|
this.#backgroundWorker.preCheckpointNotification.post({ willCheckpointAndRestore });
|
|
485
566
|
setTimeout(() => {
|
|
486
567
|
if (willCheckpointAndRestore) {
|
|
@@ -496,7 +577,7 @@ var ProdWorker = class {
|
|
|
496
577
|
"WAIT_FOR_TASK",
|
|
497
578
|
{ version: "v1", ...message }
|
|
498
579
|
);
|
|
499
|
-
|
|
580
|
+
logger2.log("WAIT_FOR_TASK", { willCheckpointAndRestore });
|
|
500
581
|
this.#backgroundWorker.preCheckpointNotification.post({ willCheckpointAndRestore });
|
|
501
582
|
setTimeout(() => {
|
|
502
583
|
if (willCheckpointAndRestore) {
|
|
@@ -512,7 +593,7 @@ var ProdWorker = class {
|
|
|
512
593
|
"WAIT_FOR_BATCH",
|
|
513
594
|
{ version: "v1", ...message }
|
|
514
595
|
);
|
|
515
|
-
|
|
596
|
+
logger2.log("WAIT_FOR_BATCH", { willCheckpointAndRestore });
|
|
516
597
|
this.#backgroundWorker.preCheckpointNotification.post({ willCheckpointAndRestore });
|
|
517
598
|
setTimeout(() => {
|
|
518
599
|
if (willCheckpointAndRestore) {
|
|
@@ -552,7 +633,7 @@ var ProdWorker = class {
|
|
|
552
633
|
}
|
|
553
634
|
#createCoordinatorSocket() {
|
|
554
635
|
const extraHeaders = this.#returnValidatedExtraHeaders({
|
|
555
|
-
"x-machine-name":
|
|
636
|
+
"x-machine-name": MACHINE_NAME2,
|
|
556
637
|
"x-pod-name": POD_NAME,
|
|
557
638
|
"x-trigger-content-hash": this.contentHash,
|
|
558
639
|
"x-trigger-project-ref": this.projectRef,
|
|
@@ -561,12 +642,12 @@ var ProdWorker = class {
|
|
|
561
642
|
"x-trigger-deployment-id": this.deploymentId,
|
|
562
643
|
"x-trigger-run-id": this.runId
|
|
563
644
|
});
|
|
564
|
-
|
|
645
|
+
logger2.log("connecting to coordinator", {
|
|
565
646
|
host: COORDINATOR_HOST,
|
|
566
647
|
port: COORDINATOR_PORT,
|
|
567
648
|
extraHeaders
|
|
568
649
|
});
|
|
569
|
-
const coordinatorConnection = new
|
|
650
|
+
const coordinatorConnection = new ZodSocketConnection2({
|
|
570
651
|
namespace: "prod-worker",
|
|
571
652
|
host: COORDINATOR_HOST,
|
|
572
653
|
port: COORDINATOR_PORT,
|
|
@@ -588,16 +669,16 @@ var ProdWorker = class {
|
|
|
588
669
|
},
|
|
589
670
|
EXECUTE_TASK_RUN: async ({ executionPayload }) => {
|
|
590
671
|
if (this.executing) {
|
|
591
|
-
|
|
672
|
+
logger2.error("dropping execute request, already executing");
|
|
592
673
|
return;
|
|
593
674
|
}
|
|
594
675
|
if (this.completed.has(executionPayload.execution.attempt.id)) {
|
|
595
|
-
|
|
676
|
+
logger2.error("dropping execute request, already completed");
|
|
596
677
|
return;
|
|
597
678
|
}
|
|
598
679
|
this.executing = true;
|
|
599
680
|
const completion = await this.#backgroundWorker.executeTaskRun(executionPayload);
|
|
600
|
-
|
|
681
|
+
logger2.log("completed", completion);
|
|
601
682
|
this.completed.add(executionPayload.execution.attempt.id);
|
|
602
683
|
this.executing = false;
|
|
603
684
|
await this.#backgroundWorker.flushTelemetry();
|
|
@@ -609,7 +690,7 @@ var ProdWorker = class {
|
|
|
609
690
|
completion
|
|
610
691
|
}
|
|
611
692
|
);
|
|
612
|
-
|
|
693
|
+
logger2.log("completion acknowledged", { didCheckpoint, shouldExit });
|
|
613
694
|
if (shouldExit) {
|
|
614
695
|
await this.#backgroundWorker.close();
|
|
615
696
|
process.exit(0);
|
|
@@ -627,7 +708,7 @@ var ProdWorker = class {
|
|
|
627
708
|
process.exit(0);
|
|
628
709
|
}
|
|
629
710
|
},
|
|
630
|
-
onConnection: async (socket, handler, sender,
|
|
711
|
+
onConnection: async (socket, handler, sender, logger3) => {
|
|
631
712
|
if (process.env.INDEX_TASKS === "true") {
|
|
632
713
|
try {
|
|
633
714
|
const taskResources = await this.#initializeWorker();
|
|
@@ -637,15 +718,15 @@ var ProdWorker = class {
|
|
|
637
718
|
...taskResources
|
|
638
719
|
});
|
|
639
720
|
if (success) {
|
|
640
|
-
|
|
721
|
+
logger3("indexing done, shutting down..");
|
|
641
722
|
process.exit(0);
|
|
642
723
|
} else {
|
|
643
|
-
|
|
724
|
+
logger3("indexing failure, shutting down..");
|
|
644
725
|
process.exit(1);
|
|
645
726
|
}
|
|
646
727
|
} catch (e) {
|
|
647
728
|
if (e instanceof UncaughtExceptionError) {
|
|
648
|
-
|
|
729
|
+
logger3("uncaught exception", e.originalError.message);
|
|
649
730
|
socket.emit("INDEXING_FAILED", {
|
|
650
731
|
version: "v1",
|
|
651
732
|
deploymentId: this.deploymentId,
|
|
@@ -656,7 +737,7 @@ var ProdWorker = class {
|
|
|
656
737
|
}
|
|
657
738
|
});
|
|
658
739
|
} else if (e instanceof Error) {
|
|
659
|
-
|
|
740
|
+
logger3("error", e.message);
|
|
660
741
|
socket.emit("INDEXING_FAILED", {
|
|
661
742
|
version: "v1",
|
|
662
743
|
deploymentId: this.deploymentId,
|
|
@@ -667,7 +748,7 @@ var ProdWorker = class {
|
|
|
667
748
|
}
|
|
668
749
|
});
|
|
669
750
|
} else if (typeof e === "string") {
|
|
670
|
-
|
|
751
|
+
logger3("string error", e);
|
|
671
752
|
socket.emit("INDEXING_FAILED", {
|
|
672
753
|
version: "v1",
|
|
673
754
|
deploymentId: this.deploymentId,
|
|
@@ -677,7 +758,7 @@ var ProdWorker = class {
|
|
|
677
758
|
}
|
|
678
759
|
});
|
|
679
760
|
} else {
|
|
680
|
-
|
|
761
|
+
logger3("unknown error", e);
|
|
681
762
|
socket.emit("INDEXING_FAILED", {
|
|
682
763
|
version: "v1",
|
|
683
764
|
deploymentId: this.deploymentId,
|
|
@@ -719,7 +800,7 @@ var ProdWorker = class {
|
|
|
719
800
|
}
|
|
720
801
|
#createHttpServer() {
|
|
721
802
|
const httpServer = createServer(async (req, res) => {
|
|
722
|
-
|
|
803
|
+
logger2.log(`[${req.method}]`, req.url);
|
|
723
804
|
const reply = new HttpReply(res);
|
|
724
805
|
switch (req.url) {
|
|
725
806
|
case "/complete":
|
|
@@ -743,7 +824,7 @@ var ProdWorker = class {
|
|
|
743
824
|
ms: 6e4
|
|
744
825
|
}
|
|
745
826
|
);
|
|
746
|
-
|
|
827
|
+
logger2.log("WAIT_FOR_DURATION", { willCheckpointAndRestore });
|
|
747
828
|
this.#coordinatorSocket.close();
|
|
748
829
|
return reply.text("sent WAIT");
|
|
749
830
|
case "/connect":
|
|
@@ -772,7 +853,7 @@ var ProdWorker = class {
|
|
|
772
853
|
});
|
|
773
854
|
return reply.empty();
|
|
774
855
|
case "/preStop":
|
|
775
|
-
|
|
856
|
+
logger2.log("should do preStop stuff, e.g. checkpoint and graceful shutdown");
|
|
776
857
|
return reply.text("got preStop request");
|
|
777
858
|
case "/ready":
|
|
778
859
|
this.#coordinatorSocket.send("READY_FOR_EXECUTION", {
|
|
@@ -789,13 +870,13 @@ var ProdWorker = class {
|
|
|
789
870
|
socket.end("HTTP/1.1 400 Bad Request\r\n\r\n");
|
|
790
871
|
});
|
|
791
872
|
httpServer.on("listening", () => {
|
|
792
|
-
|
|
873
|
+
logger2.log("http server listening on port", this.#httpPort);
|
|
793
874
|
});
|
|
794
875
|
httpServer.on("error", (error) => {
|
|
795
876
|
if (error.code != "EADDRINUSE") {
|
|
796
877
|
return;
|
|
797
878
|
}
|
|
798
|
-
|
|
879
|
+
logger2.error(`port ${this.#httpPort} already in use, retrying with random port..`);
|
|
799
880
|
this.#httpPort = getRandomPortNumber();
|
|
800
881
|
setTimeout(() => {
|
|
801
882
|
this.start();
|
|
@@ -844,7 +925,7 @@ var ProdWorker = class {
|
|
|
844
925
|
this.#httpServer.listen(this.#httpPort, this.host);
|
|
845
926
|
}
|
|
846
927
|
};
|
|
847
|
-
var prodWorker = new ProdWorker(
|
|
928
|
+
var prodWorker = new ProdWorker(HTTP_SERVER_PORT2);
|
|
848
929
|
prodWorker.start();
|
|
849
930
|
function gatherProcessEnv() {
|
|
850
931
|
const env = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trigger.dev",
|
|
3
|
-
"version": "0.0.0-v3-canary-
|
|
3
|
+
"version": "0.0.0-v3-canary-20240321121448",
|
|
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",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"vitest": "^0.34.4",
|
|
56
56
|
"xdg-app-paths": "^8.3.0",
|
|
57
57
|
"@trigger.dev/tsconfig": "0.0.0",
|
|
58
|
-
"@trigger.dev/core": "0.0.0-v3-canary-
|
|
58
|
+
"@trigger.dev/core-apps": "0.0.0-v3-canary-20240321121448"
|
|
59
59
|
},
|
|
60
60
|
"watch": {
|
|
61
61
|
"build:prod-containerfile": "src/Containerfile.prod"
|
|
@@ -119,8 +119,7 @@
|
|
|
119
119
|
"ws": "^8.12.0",
|
|
120
120
|
"zod": "3.22.3",
|
|
121
121
|
"zod-validation-error": "^1.5.0",
|
|
122
|
-
"@trigger.dev/core": "0.0.0-v3-canary-
|
|
123
|
-
"@trigger.dev/core-apps": "0.0.0-v3-canary-20240321105132"
|
|
122
|
+
"@trigger.dev/core": "0.0.0-v3-canary-20240321121448"
|
|
124
123
|
},
|
|
125
124
|
"engines": {
|
|
126
125
|
"node": ">=18.0.0"
|
|
File without changes
|