rivetkit 2.0.19 → 2.0.21
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/tsup/actor/errors.cjs.map +1 -1
- package/dist/tsup/{chunk-UGLCR467.js → chunk-2POQCWMA.js} +481 -100
- package/dist/tsup/chunk-2POQCWMA.js.map +1 -0
- package/dist/tsup/{chunk-GBVUP7IH.js → chunk-3UIGKLZW.js} +6 -6
- package/dist/tsup/chunk-3UIGKLZW.js.map +1 -0
- package/dist/tsup/{chunk-NCVKAD3U.js → chunk-4OINFQBR.js} +3 -3
- package/dist/tsup/{chunk-2N5T57W5.cjs → chunk-65SAIRRY.cjs} +12 -12
- package/dist/tsup/chunk-65SAIRRY.cjs.map +1 -0
- package/dist/tsup/{chunk-SO6CSZPF.js → chunk-6G76WIWL.js} +2 -2
- package/dist/tsup/{chunk-SO6CSZPF.js.map → chunk-6G76WIWL.js.map} +1 -1
- package/dist/tsup/{chunk-UBS2ARYU.js → chunk-D2LS4X6E.js} +11 -5
- package/dist/tsup/chunk-D2LS4X6E.js.map +1 -0
- package/dist/tsup/{chunk-FO4Q36GQ.js → chunk-DYA34FHW.js} +2 -2
- package/dist/tsup/{chunk-7RKGZXDH.cjs → chunk-ELDFBXDV.cjs} +8 -4
- package/dist/tsup/chunk-ELDFBXDV.cjs.map +1 -0
- package/dist/tsup/{chunk-F4PHLUIT.cjs → chunk-FDJ3AVNB.cjs} +32 -26
- package/dist/tsup/chunk-FDJ3AVNB.cjs.map +1 -0
- package/dist/tsup/{chunk-U3PO7PEY.js → chunk-FUX6U6TL.js} +2 -2
- package/dist/tsup/chunk-FUX6U6TL.js.map +1 -0
- package/dist/tsup/{chunk-AYNDGM4A.cjs → chunk-HN7UXCYQ.cjs} +7 -7
- package/dist/tsup/chunk-HN7UXCYQ.cjs.map +1 -0
- package/dist/tsup/{chunk-6MI3RWWC.js → chunk-HUGSRAGL.js} +8 -4
- package/dist/tsup/chunk-HUGSRAGL.js.map +1 -0
- package/dist/tsup/{chunk-7BTAYSZC.cjs → chunk-JKOUXDK6.cjs} +16 -10
- package/dist/tsup/chunk-JKOUXDK6.cjs.map +1 -0
- package/dist/tsup/{chunk-EXP6CQEI.cjs → chunk-JTIBPF7N.cjs} +14 -14
- package/dist/tsup/chunk-JTIBPF7N.cjs.map +1 -0
- package/dist/tsup/chunk-KSRXX3Z4.cjs.map +1 -1
- package/dist/tsup/{chunk-RIK4JNIG.cjs → chunk-LMJHBF26.cjs} +454 -288
- package/dist/tsup/chunk-LMJHBF26.cjs.map +1 -0
- package/dist/tsup/{chunk-DGXMPCNI.cjs → chunk-LWGCMELP.cjs} +3 -3
- package/dist/tsup/chunk-LWGCMELP.cjs.map +1 -0
- package/dist/tsup/{chunk-ZB3DP5IR.cjs → chunk-M5BHNJHB.cjs} +630 -249
- package/dist/tsup/chunk-M5BHNJHB.cjs.map +1 -0
- package/dist/tsup/{chunk-J5PFJTK3.cjs → chunk-O4GUKGK4.cjs} +6 -6
- package/dist/tsup/chunk-O4GUKGK4.cjs.map +1 -0
- package/dist/tsup/{chunk-LWQDW6VP.js → chunk-RZZDFDB6.js} +13 -7
- package/dist/tsup/chunk-RZZDFDB6.js.map +1 -0
- package/dist/tsup/{chunk-DAZ2YBCM.js → chunk-VLR3TDHT.js} +2 -2
- package/dist/tsup/{chunk-DAAQFFK3.js → chunk-Y2QONT7B.js} +262 -96
- package/dist/tsup/chunk-Y2QONT7B.js.map +1 -0
- package/dist/tsup/{chunk-AXQWQIUS.cjs → chunk-ZNWE3XBT.cjs} +3 -3
- package/dist/tsup/chunk-ZNWE3XBT.cjs.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.cjs.map +1 -1
- package/dist/tsup/client/mod.d.cts +2 -2
- package/dist/tsup/client/mod.d.ts +2 -2
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.cjs.map +1 -1
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.cjs.map +1 -1
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{conn-DAXlyhVg.d.ts → conn-Clu655RU.d.ts} +1 -0
- package/dist/tsup/{conn--6rFdSfD.d.cts → conn-lUvFLo_q.d.cts} +1 -0
- package/dist/tsup/driver-helpers/mod.cjs +5 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +1 -1
- package/dist/tsup/driver-helpers/mod.d.ts +1 -1
- package/dist/tsup/driver-helpers/mod.js +4 -4
- package/dist/tsup/driver-test-suite/mod.cjs +603 -294
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +1 -1
- package/dist/tsup/driver-test-suite/mod.d.ts +1 -1
- package/dist/tsup/driver-test-suite/mod.js +574 -265
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +6 -6
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +68 -7
- package/dist/tsup/inspector/mod.d.ts +68 -7
- package/dist/tsup/inspector/mod.js +5 -5
- package/dist/tsup/mod.cjs +10 -10
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +2 -2
- package/dist/tsup/mod.d.ts +2 -2
- package/dist/tsup/mod.js +9 -9
- package/dist/tsup/test/mod.cjs +11 -11
- package/dist/tsup/test/mod.cjs.map +1 -1
- package/dist/tsup/test/mod.d.cts +1 -1
- package/dist/tsup/test/mod.d.ts +1 -1
- package/dist/tsup/test/mod.js +10 -10
- package/dist/tsup/utils.cjs +2 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.js +1 -1
- package/package.json +4 -3
- package/src/actor/config.ts +108 -15
- package/src/actor/conn-drivers.ts +2 -1
- package/src/actor/instance.ts +119 -35
- package/src/actor/keys.test.ts +13 -4
- package/src/actor/protocol/old.ts +10 -3
- package/src/actor/router-endpoints.ts +26 -16
- package/src/actor/router.ts +41 -13
- package/src/actor/unstable-react.ts +1 -1
- package/src/client/actor-common.ts +3 -1
- package/src/client/actor-conn.ts +44 -12
- package/src/client/actor-handle.ts +4 -1
- package/src/client/client.ts +32 -18
- package/src/client/utils.ts +21 -8
- package/src/common/actor-router-consts.ts +2 -0
- package/src/common/inline-websocket-adapter2.ts +24 -6
- package/src/common/log.ts +6 -2
- package/src/common/logfmt.ts +3 -1
- package/src/common/router.ts +3 -1
- package/src/common/utils.ts +6 -2
- package/src/driver-helpers/utils.ts +4 -1
- package/src/driver-test-suite/mod.ts +15 -4
- package/src/driver-test-suite/test-inline-client-driver.ts +35 -13
- package/src/driver-test-suite/tests/action-features.ts +6 -2
- package/src/driver-test-suite/tests/actor-conn-state.ts +18 -8
- package/src/driver-test-suite/tests/actor-conn.ts +35 -13
- package/src/driver-test-suite/tests/actor-handle.ts +35 -15
- package/src/driver-test-suite/tests/actor-inline-client.ts +34 -23
- package/src/driver-test-suite/tests/actor-inspector.ts +241 -131
- package/src/driver-test-suite/tests/actor-reconnect.ts +14 -4
- package/src/driver-test-suite/tests/actor-schedule.ts +12 -3
- package/src/driver-test-suite/tests/actor-sleep.ts +6 -3
- package/src/driver-test-suite/tests/actor-vars.ts +6 -2
- package/src/driver-test-suite/tests/manager-driver.ts +16 -6
- package/src/driver-test-suite/tests/raw-http-request-properties.ts +64 -25
- package/src/driver-test-suite/tests/raw-http.ts +17 -5
- package/src/driver-test-suite/tests/raw-websocket.ts +36 -12
- package/src/driver-test-suite/tests/request-access.ts +18 -8
- package/src/drivers/engine/actor-driver.ts +46 -25
- package/src/drivers/engine/config.ts +2 -1
- package/src/drivers/file-system/global-state.ts +58 -16
- package/src/drivers/file-system/manager.ts +35 -12
- package/src/drivers/file-system/mod.ts +6 -1
- package/src/drivers/file-system/utils.ts +8 -2
- package/src/engine-process/mod.ts +15 -4
- package/src/inspector/actor.ts +63 -23
- package/src/inspector/config.ts +2 -1
- package/src/inspector/manager.ts +10 -3
- package/src/inspector/utils.ts +2 -1
- package/src/manager/driver.ts +4 -1
- package/src/manager/gateway.ts +278 -8
- package/src/manager/hono-websocket-adapter.ts +33 -10
- package/src/manager/router-schema.ts +4 -2
- package/src/manager/router.ts +78 -12
- package/src/manager-api/actors.ts +2 -0
- package/src/registry/mod.ts +31 -9
- package/src/registry/run-config.ts +3 -1
- package/src/remote-manager-driver/api-endpoints.ts +2 -2
- package/src/remote-manager-driver/mod.ts +22 -5
- package/src/remote-manager-driver/ws-proxy.ts +21 -5
- package/src/serde.ts +6 -2
- package/src/test/mod.ts +2 -1
- package/src/utils.ts +6 -2
- package/dist/tsup/chunk-2N5T57W5.cjs.map +0 -1
- package/dist/tsup/chunk-6MI3RWWC.js.map +0 -1
- package/dist/tsup/chunk-7BTAYSZC.cjs.map +0 -1
- package/dist/tsup/chunk-7RKGZXDH.cjs.map +0 -1
- package/dist/tsup/chunk-AXQWQIUS.cjs.map +0 -1
- package/dist/tsup/chunk-AYNDGM4A.cjs.map +0 -1
- package/dist/tsup/chunk-DAAQFFK3.js.map +0 -1
- package/dist/tsup/chunk-DGXMPCNI.cjs.map +0 -1
- package/dist/tsup/chunk-EXP6CQEI.cjs.map +0 -1
- package/dist/tsup/chunk-F4PHLUIT.cjs.map +0 -1
- package/dist/tsup/chunk-GBVUP7IH.js.map +0 -1
- package/dist/tsup/chunk-J5PFJTK3.cjs.map +0 -1
- package/dist/tsup/chunk-LWQDW6VP.js.map +0 -1
- package/dist/tsup/chunk-RIK4JNIG.cjs.map +0 -1
- package/dist/tsup/chunk-U3PO7PEY.js.map +0 -1
- package/dist/tsup/chunk-UBS2ARYU.js.map +0 -1
- package/dist/tsup/chunk-UGLCR467.js.map +0 -1
- package/dist/tsup/chunk-ZB3DP5IR.cjs.map +0 -1
- /package/dist/tsup/{chunk-NCVKAD3U.js.map → chunk-4OINFQBR.js.map} +0 -0
- /package/dist/tsup/{chunk-FO4Q36GQ.js.map → chunk-DYA34FHW.js.map} +0 -0
- /package/dist/tsup/{chunk-DAZ2YBCM.js.map → chunk-VLR3TDHT.js.map} +0 -0
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
inspectorLogger,
|
|
5
5
|
isInspectorEnabled,
|
|
6
6
|
secureInspector
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6G76WIWL.js";
|
|
8
8
|
import {
|
|
9
9
|
ActorDefinition,
|
|
10
10
|
RemoteManagerDriver,
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
lookupInRegistry,
|
|
18
18
|
serializeActorKey,
|
|
19
19
|
updateRunnerConfig
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-Y2QONT7B.js";
|
|
21
21
|
import {
|
|
22
22
|
CreateActorSchema
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-DYA34FHW.js";
|
|
24
24
|
import {
|
|
25
25
|
ActionContext,
|
|
26
26
|
ClientConfigSchema,
|
|
@@ -32,7 +32,7 @@ import {
|
|
|
32
32
|
createVersionedDataHandler,
|
|
33
33
|
parseMessage,
|
|
34
34
|
serializeEmptyPersistData
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-RZZDFDB6.js";
|
|
36
36
|
import {
|
|
37
37
|
EncodingSchema,
|
|
38
38
|
HEADER_ACTOR_ID,
|
|
@@ -58,12 +58,12 @@ import {
|
|
|
58
58
|
generateRandomString,
|
|
59
59
|
loggerWithoutContext,
|
|
60
60
|
serializeWithEncoding
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-D2LS4X6E.js";
|
|
62
62
|
import {
|
|
63
63
|
configureBaseLogger,
|
|
64
64
|
configureDefaultLogger,
|
|
65
65
|
getLogger
|
|
66
|
-
} from "./chunk-
|
|
66
|
+
} from "./chunk-FUX6U6TL.js";
|
|
67
67
|
import {
|
|
68
68
|
VERSION,
|
|
69
69
|
assertUnreachable,
|
|
@@ -75,7 +75,7 @@ import {
|
|
|
75
75
|
promiseWithResolvers,
|
|
76
76
|
setLongTimeout,
|
|
77
77
|
stringifyError
|
|
78
|
-
} from "./chunk-
|
|
78
|
+
} from "./chunk-HUGSRAGL.js";
|
|
79
79
|
import {
|
|
80
80
|
ActorAlreadyExists,
|
|
81
81
|
ConnNotFound,
|
|
@@ -237,7 +237,11 @@ var HonoWebSocketAdapter = class {
|
|
|
237
237
|
msg: "failed to convert blob to arraybuffer",
|
|
238
238
|
error
|
|
239
239
|
});
|
|
240
|
-
this.#fireEvent("error", {
|
|
240
|
+
this.#fireEvent("error", {
|
|
241
|
+
type: "error",
|
|
242
|
+
target: this,
|
|
243
|
+
error
|
|
244
|
+
});
|
|
241
245
|
});
|
|
242
246
|
} else {
|
|
243
247
|
logger().warn({
|
|
@@ -364,7 +368,10 @@ var HonoWebSocketAdapter = class {
|
|
|
364
368
|
try {
|
|
365
369
|
listener(event);
|
|
366
370
|
} catch (error) {
|
|
367
|
-
logger().error({
|
|
371
|
+
logger().error({
|
|
372
|
+
msg: `error in ${type} event listener`,
|
|
373
|
+
error
|
|
374
|
+
});
|
|
368
375
|
}
|
|
369
376
|
}
|
|
370
377
|
}
|
|
@@ -374,7 +381,10 @@ var HonoWebSocketAdapter = class {
|
|
|
374
381
|
try {
|
|
375
382
|
this.#onopen(event);
|
|
376
383
|
} catch (error) {
|
|
377
|
-
logger().error({
|
|
384
|
+
logger().error({
|
|
385
|
+
msg: "error in onopen handler",
|
|
386
|
+
error
|
|
387
|
+
});
|
|
378
388
|
}
|
|
379
389
|
}
|
|
380
390
|
break;
|
|
@@ -383,7 +393,10 @@ var HonoWebSocketAdapter = class {
|
|
|
383
393
|
try {
|
|
384
394
|
this.#onclose(event);
|
|
385
395
|
} catch (error) {
|
|
386
|
-
logger().error({
|
|
396
|
+
logger().error({
|
|
397
|
+
msg: "error in onclose handler",
|
|
398
|
+
error
|
|
399
|
+
});
|
|
387
400
|
}
|
|
388
401
|
}
|
|
389
402
|
break;
|
|
@@ -392,7 +405,10 @@ var HonoWebSocketAdapter = class {
|
|
|
392
405
|
try {
|
|
393
406
|
this.#onerror(event);
|
|
394
407
|
} catch (error) {
|
|
395
|
-
logger().error({
|
|
408
|
+
logger().error({
|
|
409
|
+
msg: "error in onerror handler",
|
|
410
|
+
error
|
|
411
|
+
});
|
|
396
412
|
}
|
|
397
413
|
}
|
|
398
414
|
break;
|
|
@@ -401,7 +417,10 @@ var HonoWebSocketAdapter = class {
|
|
|
401
417
|
try {
|
|
402
418
|
this.#onmessage(event);
|
|
403
419
|
} catch (error) {
|
|
404
|
-
logger().error({
|
|
420
|
+
logger().error({
|
|
421
|
+
msg: "error in onmessage handler",
|
|
422
|
+
error
|
|
423
|
+
});
|
|
405
424
|
}
|
|
406
425
|
}
|
|
407
426
|
break;
|
|
@@ -664,7 +683,10 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
664
683
|
await stream.sleep(SSE_PING_INTERVAL);
|
|
665
684
|
}
|
|
666
685
|
} catch (error) {
|
|
667
|
-
loggerWithoutContext().error({
|
|
686
|
+
loggerWithoutContext().error({
|
|
687
|
+
msg: "error in sse connection",
|
|
688
|
+
error
|
|
689
|
+
});
|
|
668
690
|
if (conn && actor2 !== void 0) {
|
|
669
691
|
actor2.__connDisconnected(conn, false, socketId);
|
|
670
692
|
}
|
|
@@ -937,7 +959,9 @@ function handleHealthRequest(c) {
|
|
|
937
959
|
|
|
938
960
|
// src/actor/router.ts
|
|
939
961
|
function createActorRouter(runConfig, actorDriver, isTest) {
|
|
940
|
-
const router = new Hono({
|
|
962
|
+
const router = new Hono({
|
|
963
|
+
strict: false
|
|
964
|
+
});
|
|
941
965
|
router.use("*", loggerMiddleware(loggerWithoutContext()));
|
|
942
966
|
router.get("/", (c) => {
|
|
943
967
|
return c.text(
|
|
@@ -983,15 +1007,23 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
983
1007
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
984
1008
|
for (const protocol of protocolList) {
|
|
985
1009
|
if (protocol.startsWith(WS_PROTOCOL_ENCODING)) {
|
|
986
|
-
encodingRaw = protocol.substring(
|
|
1010
|
+
encodingRaw = protocol.substring(
|
|
1011
|
+
WS_PROTOCOL_ENCODING.length
|
|
1012
|
+
);
|
|
987
1013
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_PARAMS)) {
|
|
988
1014
|
connParamsRaw = decodeURIComponent(
|
|
989
|
-
protocol.substring(
|
|
1015
|
+
protocol.substring(
|
|
1016
|
+
WS_PROTOCOL_CONN_PARAMS.length
|
|
1017
|
+
)
|
|
990
1018
|
);
|
|
991
1019
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_ID)) {
|
|
992
|
-
connIdRaw = protocol.substring(
|
|
1020
|
+
connIdRaw = protocol.substring(
|
|
1021
|
+
WS_PROTOCOL_CONN_ID.length
|
|
1022
|
+
);
|
|
993
1023
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_TOKEN)) {
|
|
994
|
-
connTokenRaw = protocol.substring(
|
|
1024
|
+
connTokenRaw = protocol.substring(
|
|
1025
|
+
WS_PROTOCOL_CONN_TOKEN.length
|
|
1026
|
+
);
|
|
995
1027
|
}
|
|
996
1028
|
}
|
|
997
1029
|
}
|
|
@@ -1020,7 +1052,13 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1020
1052
|
});
|
|
1021
1053
|
router.post("/action/:action", async (c) => {
|
|
1022
1054
|
const actionName = c.req.param("action");
|
|
1023
|
-
return handleAction(
|
|
1055
|
+
return handleAction(
|
|
1056
|
+
c,
|
|
1057
|
+
runConfig,
|
|
1058
|
+
actorDriver,
|
|
1059
|
+
actionName,
|
|
1060
|
+
c.env.actorId
|
|
1061
|
+
);
|
|
1024
1062
|
});
|
|
1025
1063
|
router.post("/connections/message", async (c) => {
|
|
1026
1064
|
const connId = c.req.header(HEADER_CONN_ID);
|
|
@@ -1110,7 +1148,10 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1110
1148
|
secureInspector(runConfig),
|
|
1111
1149
|
async (c, next) => {
|
|
1112
1150
|
const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
|
|
1113
|
-
invariant2(
|
|
1151
|
+
invariant2(
|
|
1152
|
+
inspector,
|
|
1153
|
+
"inspector not supported on this platform"
|
|
1154
|
+
);
|
|
1114
1155
|
c.set("inspector", inspector);
|
|
1115
1156
|
return next();
|
|
1116
1157
|
}
|
|
@@ -1213,7 +1254,10 @@ var InlineWebSocketAdapter2 = class {
|
|
|
1213
1254
|
logger3().debug({ msg: "closing fake websocket", code, reason });
|
|
1214
1255
|
this.#readyState = this.CLOSING;
|
|
1215
1256
|
try {
|
|
1216
|
-
this.#handler.onClose(
|
|
1257
|
+
this.#handler.onClose(
|
|
1258
|
+
{ code, reason, wasClean: true },
|
|
1259
|
+
this.#wsContext
|
|
1260
|
+
);
|
|
1217
1261
|
} catch (err) {
|
|
1218
1262
|
logger3().error({ msg: "error closing websocket", error: err });
|
|
1219
1263
|
} finally {
|
|
@@ -1352,7 +1396,10 @@ var InlineWebSocketAdapter2 = class {
|
|
|
1352
1396
|
try {
|
|
1353
1397
|
this.#onopen(event);
|
|
1354
1398
|
} catch (error) {
|
|
1355
|
-
logger3().error({
|
|
1399
|
+
logger3().error({
|
|
1400
|
+
msg: "error in onopen handler",
|
|
1401
|
+
error
|
|
1402
|
+
});
|
|
1356
1403
|
}
|
|
1357
1404
|
}
|
|
1358
1405
|
break;
|
|
@@ -1361,7 +1408,10 @@ var InlineWebSocketAdapter2 = class {
|
|
|
1361
1408
|
try {
|
|
1362
1409
|
this.#onclose(event);
|
|
1363
1410
|
} catch (error) {
|
|
1364
|
-
logger3().error({
|
|
1411
|
+
logger3().error({
|
|
1412
|
+
msg: "error in onclose handler",
|
|
1413
|
+
error
|
|
1414
|
+
});
|
|
1365
1415
|
}
|
|
1366
1416
|
}
|
|
1367
1417
|
break;
|
|
@@ -1370,7 +1420,10 @@ var InlineWebSocketAdapter2 = class {
|
|
|
1370
1420
|
try {
|
|
1371
1421
|
this.#onerror(event);
|
|
1372
1422
|
} catch (error) {
|
|
1373
|
-
logger3().error({
|
|
1423
|
+
logger3().error({
|
|
1424
|
+
msg: "error in onerror handler",
|
|
1425
|
+
error
|
|
1426
|
+
});
|
|
1374
1427
|
}
|
|
1375
1428
|
}
|
|
1376
1429
|
break;
|
|
@@ -1379,7 +1432,10 @@ var InlineWebSocketAdapter2 = class {
|
|
|
1379
1432
|
try {
|
|
1380
1433
|
this.#onmessage(event);
|
|
1381
1434
|
} catch (error) {
|
|
1382
|
-
logger3().error({
|
|
1435
|
+
logger3().error({
|
|
1436
|
+
msg: "error in onmessage handler",
|
|
1437
|
+
error
|
|
1438
|
+
});
|
|
1383
1439
|
}
|
|
1384
1440
|
}
|
|
1385
1441
|
break;
|
|
@@ -1494,8 +1550,8 @@ var EngineActorDriver = class {
|
|
|
1494
1550
|
#version = 1;
|
|
1495
1551
|
// Version for the runner protocol
|
|
1496
1552
|
#alarmTimeout;
|
|
1497
|
-
#runnerStarted =
|
|
1498
|
-
#runnerStopped =
|
|
1553
|
+
#runnerStarted = promiseWithResolvers();
|
|
1554
|
+
#runnerStopped = promiseWithResolvers();
|
|
1499
1555
|
constructor(registryConfig, runConfig, managerDriver, inlineClient) {
|
|
1500
1556
|
this.#registryConfig = registryConfig;
|
|
1501
1557
|
this.#runConfig = runConfig;
|
|
@@ -1567,7 +1623,8 @@ var EngineActorDriver = class {
|
|
|
1567
1623
|
}
|
|
1568
1624
|
async #loadActorHandler(actorId) {
|
|
1569
1625
|
const handler = this.#actors.get(actorId);
|
|
1570
|
-
if (!handler)
|
|
1626
|
+
if (!handler)
|
|
1627
|
+
throw new Error(`Actor handler does not exist ${actorId}`);
|
|
1571
1628
|
if (handler.actorStartPromise) await handler.actorStartPromise.promise;
|
|
1572
1629
|
if (!handler.actor) throw new Error("Actor should be loaded");
|
|
1573
1630
|
return handler;
|
|
@@ -1607,18 +1664,18 @@ var EngineActorDriver = class {
|
|
|
1607
1664
|
return void 0;
|
|
1608
1665
|
}
|
|
1609
1666
|
// Runner lifecycle callbacks
|
|
1610
|
-
async #runnerOnActorStart(actorId, generation,
|
|
1667
|
+
async #runnerOnActorStart(actorId, generation, actorConfig) {
|
|
1611
1668
|
var _a;
|
|
1612
1669
|
logger4().debug({
|
|
1613
1670
|
msg: "runner actor starting",
|
|
1614
1671
|
actorId,
|
|
1615
|
-
name:
|
|
1616
|
-
key:
|
|
1672
|
+
name: actorConfig.name,
|
|
1673
|
+
key: actorConfig.key,
|
|
1617
1674
|
generation
|
|
1618
1675
|
});
|
|
1619
1676
|
let input;
|
|
1620
|
-
if (
|
|
1621
|
-
input = cbor3.decode(
|
|
1677
|
+
if (actorConfig.input) {
|
|
1678
|
+
input = cbor3.decode(actorConfig.input);
|
|
1622
1679
|
}
|
|
1623
1680
|
let handler = this.#actors.get(actorId);
|
|
1624
1681
|
if (!handler) {
|
|
@@ -1632,10 +1689,13 @@ var EngineActorDriver = class {
|
|
|
1632
1689
|
]);
|
|
1633
1690
|
handler.persistedData = persistedValue !== null ? persistedValue : serializeEmptyPersistData(input);
|
|
1634
1691
|
}
|
|
1635
|
-
const name =
|
|
1636
|
-
invariant3(
|
|
1637
|
-
const key = deserializeActorKey(
|
|
1638
|
-
const definition = lookupInRegistry(
|
|
1692
|
+
const name = actorConfig.name;
|
|
1693
|
+
invariant3(actorConfig.key, "actor should have a key");
|
|
1694
|
+
const key = deserializeActorKey(actorConfig.key);
|
|
1695
|
+
const definition = lookupInRegistry(
|
|
1696
|
+
this.#registryConfig,
|
|
1697
|
+
actorConfig.name
|
|
1698
|
+
);
|
|
1639
1699
|
handler.actor = definition.instantiate();
|
|
1640
1700
|
await handler.actor.start(
|
|
1641
1701
|
this,
|
|
@@ -1659,7 +1719,7 @@ var EngineActorDriver = class {
|
|
|
1659
1719
|
}
|
|
1660
1720
|
logger4().debug({ msg: "runner actor stopped", actorId });
|
|
1661
1721
|
}
|
|
1662
|
-
async #runnerFetch(actorId, request) {
|
|
1722
|
+
async #runnerFetch(runner, actorId, request) {
|
|
1663
1723
|
logger4().debug({
|
|
1664
1724
|
msg: "runner fetch",
|
|
1665
1725
|
actorId,
|
|
@@ -1668,20 +1728,20 @@ var EngineActorDriver = class {
|
|
|
1668
1728
|
});
|
|
1669
1729
|
return await this.#actorRouter.fetch(request, { actorId });
|
|
1670
1730
|
}
|
|
1671
|
-
async #runnerWebSocket(actorId, websocketRaw, request) {
|
|
1731
|
+
async #runnerWebSocket(runner, actorId, websocketRaw, request) {
|
|
1672
1732
|
const websocket = websocketRaw;
|
|
1673
1733
|
logger4().debug({ msg: "runner websocket", actorId, url: request.url });
|
|
1674
1734
|
const url = new URL(request.url);
|
|
1675
1735
|
const protocols = request.headers.get("sec-websocket-protocol");
|
|
1676
|
-
if (protocols === null)
|
|
1677
|
-
throw new Error(`Missing sec-websocket-protocol header`);
|
|
1678
1736
|
let encodingRaw;
|
|
1679
1737
|
let connParamsRaw;
|
|
1680
1738
|
if (protocols) {
|
|
1681
1739
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
1682
1740
|
for (const protocol of protocolList) {
|
|
1683
1741
|
if (protocol.startsWith(WS_PROTOCOL_ENCODING)) {
|
|
1684
|
-
encodingRaw = protocol.substring(
|
|
1742
|
+
encodingRaw = protocol.substring(
|
|
1743
|
+
WS_PROTOCOL_ENCODING.length
|
|
1744
|
+
);
|
|
1685
1745
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_PARAMS)) {
|
|
1686
1746
|
connParamsRaw = decodeURIComponent(
|
|
1687
1747
|
protocol.substring(WS_PROTOCOL_CONN_PARAMS.length)
|
|
@@ -1720,10 +1780,12 @@ var EngineActorDriver = class {
|
|
|
1720
1780
|
wsContext.close(1011, `${err}`);
|
|
1721
1781
|
});
|
|
1722
1782
|
if (websocket.readyState === 1) {
|
|
1723
|
-
wsHandlerPromise.then(
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1783
|
+
wsHandlerPromise.then(
|
|
1784
|
+
(x) => {
|
|
1785
|
+
var _a;
|
|
1786
|
+
return (_a = x.onOpen) == null ? void 0 : _a.call(x, new Event("open"), wsContext);
|
|
1787
|
+
}
|
|
1788
|
+
);
|
|
1727
1789
|
} else {
|
|
1728
1790
|
websocket.addEventListener("open", (event) => {
|
|
1729
1791
|
wsHandlerPromise.then((x) => {
|
|
@@ -1759,13 +1821,18 @@ var EngineActorDriver = class {
|
|
|
1759
1821
|
await this.#runner.shutdown(immediate);
|
|
1760
1822
|
}
|
|
1761
1823
|
async serverlessHandleStart(c) {
|
|
1762
|
-
await this.#runnerStarted.promise;
|
|
1763
1824
|
return streamSSE2(c, async (stream) => {
|
|
1764
|
-
stream.onAbort(() =>
|
|
1825
|
+
stream.onAbort(() => {
|
|
1826
|
+
});
|
|
1827
|
+
c.req.raw.signal.addEventListener("abort", () => {
|
|
1828
|
+
logger4().debug("SSE aborted, shutting down runner");
|
|
1829
|
+
this.shutdown(true);
|
|
1830
|
+
});
|
|
1831
|
+
await this.#runnerStarted.promise;
|
|
1765
1832
|
const payload = this.#runner.getServerlessInitPacket();
|
|
1766
1833
|
invariant3(payload, "runnerId not set");
|
|
1767
1834
|
await stream.writeSSE({ data: payload });
|
|
1768
|
-
|
|
1835
|
+
await this.#runnerStopped.promise;
|
|
1769
1836
|
});
|
|
1770
1837
|
}
|
|
1771
1838
|
};
|
|
@@ -2001,7 +2068,12 @@ function getDataPath(appName) {
|
|
|
2001
2068
|
appName
|
|
2002
2069
|
);
|
|
2003
2070
|
case "darwin":
|
|
2004
|
-
return path.join(
|
|
2071
|
+
return path.join(
|
|
2072
|
+
homeDir,
|
|
2073
|
+
"Library",
|
|
2074
|
+
"Application Support",
|
|
2075
|
+
appName
|
|
2076
|
+
);
|
|
2005
2077
|
default:
|
|
2006
2078
|
return path.join(
|
|
2007
2079
|
process.env.XDG_DATA_HOME || path.join(homeDir, ".local", "share"),
|
|
@@ -2053,7 +2125,10 @@ var FileSystemGlobalState = class {
|
|
|
2053
2125
|
try {
|
|
2054
2126
|
this.#cleanupTempFilesSync();
|
|
2055
2127
|
} catch (err) {
|
|
2056
|
-
logger5().error({
|
|
2128
|
+
logger5().error({
|
|
2129
|
+
msg: "failed to cleanup temp files",
|
|
2130
|
+
error: err
|
|
2131
|
+
});
|
|
2057
2132
|
}
|
|
2058
2133
|
} else {
|
|
2059
2134
|
logger5().debug({ msg: "memory driver ready" });
|
|
@@ -2083,7 +2158,11 @@ var FileSystemGlobalState = class {
|
|
|
2083
2158
|
const state = await this.loadActorStateOrError(actorId);
|
|
2084
2159
|
yield state;
|
|
2085
2160
|
} catch (error) {
|
|
2086
|
-
logger5().error({
|
|
2161
|
+
logger5().error({
|
|
2162
|
+
msg: "failed to load actor state",
|
|
2163
|
+
actorId,
|
|
2164
|
+
error
|
|
2165
|
+
});
|
|
2087
2166
|
}
|
|
2088
2167
|
}
|
|
2089
2168
|
}
|
|
@@ -2117,7 +2196,9 @@ var FileSystemGlobalState = class {
|
|
|
2117
2196
|
name,
|
|
2118
2197
|
key,
|
|
2119
2198
|
createdAt: BigInt(Date.now()),
|
|
2120
|
-
persistedData: bufferToArrayBuffer(
|
|
2199
|
+
persistedData: bufferToArrayBuffer(
|
|
2200
|
+
serializeEmptyPersistData(input)
|
|
2201
|
+
)
|
|
2121
2202
|
};
|
|
2122
2203
|
await this.writeActor(actorId, entry.state);
|
|
2123
2204
|
return entry;
|
|
@@ -2153,7 +2234,9 @@ var FileSystemGlobalState = class {
|
|
|
2153
2234
|
entry.loadPromise = void 0;
|
|
2154
2235
|
return entry;
|
|
2155
2236
|
}
|
|
2156
|
-
const error = new Error(
|
|
2237
|
+
const error = new Error(
|
|
2238
|
+
`Failed to load actor state: ${innerError}`
|
|
2239
|
+
);
|
|
2157
2240
|
throw error;
|
|
2158
2241
|
}
|
|
2159
2242
|
}
|
|
@@ -2165,7 +2248,9 @@ var FileSystemGlobalState = class {
|
|
|
2165
2248
|
name,
|
|
2166
2249
|
key,
|
|
2167
2250
|
createdAt: BigInt(Date.now()),
|
|
2168
|
-
persistedData: bufferToArrayBuffer(
|
|
2251
|
+
persistedData: bufferToArrayBuffer(
|
|
2252
|
+
serializeEmptyPersistData(input)
|
|
2253
|
+
)
|
|
2169
2254
|
};
|
|
2170
2255
|
await this.writeActor(actorId, entry.state);
|
|
2171
2256
|
}
|
|
@@ -2180,7 +2265,8 @@ var FileSystemGlobalState = class {
|
|
|
2180
2265
|
const actor2 = this.#actors.get(actorId);
|
|
2181
2266
|
invariant4(actor2, `tried to sleep ${actorId}, does not exist`);
|
|
2182
2267
|
if (actor2.loadPromise) await actor2.loadPromise.catch();
|
|
2183
|
-
if ((_a = actor2.startPromise) == null ? void 0 : _a.promise)
|
|
2268
|
+
if ((_a = actor2.startPromise) == null ? void 0 : _a.promise)
|
|
2269
|
+
await actor2.startPromise.promise.catch();
|
|
2184
2270
|
actor2.removed = true;
|
|
2185
2271
|
invariant4(actor2.actor, "actor should be loaded");
|
|
2186
2272
|
await actor2.actor._stop();
|
|
@@ -2209,7 +2295,9 @@ var FileSystemGlobalState = class {
|
|
|
2209
2295
|
actorId,
|
|
2210
2296
|
timestamp: BigInt(timestamp)
|
|
2211
2297
|
};
|
|
2212
|
-
const data = ACTOR_ALARM_VERSIONED.serializeWithEmbeddedVersion(
|
|
2298
|
+
const data = ACTOR_ALARM_VERSIONED.serializeWithEmbeddedVersion(
|
|
2299
|
+
alarmData
|
|
2300
|
+
);
|
|
2213
2301
|
await fs2.writeFile(tempPath, data);
|
|
2214
2302
|
await fs2.rename(tempPath, alarmPath);
|
|
2215
2303
|
} catch (error) {
|
|
@@ -2217,7 +2305,11 @@ var FileSystemGlobalState = class {
|
|
|
2217
2305
|
await fs2.unlink(tempPath);
|
|
2218
2306
|
} catch {
|
|
2219
2307
|
}
|
|
2220
|
-
logger5().error({
|
|
2308
|
+
logger5().error({
|
|
2309
|
+
msg: "failed to write alarm",
|
|
2310
|
+
actorId,
|
|
2311
|
+
error
|
|
2312
|
+
});
|
|
2221
2313
|
throw new Error(`Failed to write alarm: ${error}`);
|
|
2222
2314
|
}
|
|
2223
2315
|
}
|
|
@@ -2246,7 +2338,11 @@ var FileSystemGlobalState = class {
|
|
|
2246
2338
|
await fs2.unlink(tempPath);
|
|
2247
2339
|
} catch {
|
|
2248
2340
|
}
|
|
2249
|
-
logger5().error({
|
|
2341
|
+
logger5().error({
|
|
2342
|
+
msg: "failed to save actor state",
|
|
2343
|
+
actorId,
|
|
2344
|
+
error
|
|
2345
|
+
});
|
|
2250
2346
|
throw new Error(`Failed to save actor state: ${error}`);
|
|
2251
2347
|
}
|
|
2252
2348
|
}
|
|
@@ -2270,7 +2366,10 @@ var FileSystemGlobalState = class {
|
|
|
2270
2366
|
try {
|
|
2271
2367
|
this.#loadAlarmsSync();
|
|
2272
2368
|
} catch (err) {
|
|
2273
|
-
logger5().error({
|
|
2369
|
+
logger5().error({
|
|
2370
|
+
msg: "failed to load alarms on startup",
|
|
2371
|
+
error: err
|
|
2372
|
+
});
|
|
2274
2373
|
}
|
|
2275
2374
|
}
|
|
2276
2375
|
async startActor(registryConfig, runConfig, inlineClient, actorDriver, actorId) {
|
|
@@ -2291,7 +2390,10 @@ var FileSystemGlobalState = class {
|
|
|
2291
2390
|
}
|
|
2292
2391
|
entry.startPromise = promiseWithResolvers();
|
|
2293
2392
|
try {
|
|
2294
|
-
const definition = lookupInRegistry(
|
|
2393
|
+
const definition = lookupInRegistry(
|
|
2394
|
+
registryConfig,
|
|
2395
|
+
entry.state.name
|
|
2396
|
+
);
|
|
2295
2397
|
entry.actor = definition.instantiate();
|
|
2296
2398
|
await entry.actor.start(
|
|
2297
2399
|
actorDriver,
|
|
@@ -2343,9 +2445,15 @@ var FileSystemGlobalState = class {
|
|
|
2343
2445
|
);
|
|
2344
2446
|
const timestamp = Number(alarmData.timestamp);
|
|
2345
2447
|
if (Number.isFinite(timestamp)) {
|
|
2346
|
-
this.#scheduleAlarmTimeout(
|
|
2448
|
+
this.#scheduleAlarmTimeout(
|
|
2449
|
+
alarmData.actorId,
|
|
2450
|
+
timestamp
|
|
2451
|
+
);
|
|
2347
2452
|
} else {
|
|
2348
|
-
logger5().debug({
|
|
2453
|
+
logger5().debug({
|
|
2454
|
+
msg: "invalid alarm file contents",
|
|
2455
|
+
file
|
|
2456
|
+
});
|
|
2349
2457
|
}
|
|
2350
2458
|
} catch (err) {
|
|
2351
2459
|
logger5().error({
|
|
@@ -2356,7 +2464,10 @@ var FileSystemGlobalState = class {
|
|
|
2356
2464
|
}
|
|
2357
2465
|
}
|
|
2358
2466
|
} catch (err) {
|
|
2359
|
-
logger5().error({
|
|
2467
|
+
logger5().error({
|
|
2468
|
+
msg: "failed to list alarms directory",
|
|
2469
|
+
error: err
|
|
2470
|
+
});
|
|
2360
2471
|
}
|
|
2361
2472
|
}
|
|
2362
2473
|
/**
|
|
@@ -2396,7 +2507,8 @@ var FileSystemGlobalState = class {
|
|
|
2396
2507
|
try {
|
|
2397
2508
|
logger5().debug({ msg: "triggering alarm", actorId, timestamp });
|
|
2398
2509
|
const loaded = await this.loadActor(actorId);
|
|
2399
|
-
if (!loaded.state)
|
|
2510
|
+
if (!loaded.state)
|
|
2511
|
+
throw new Error(`Actor does not exist: ${actorId}`);
|
|
2400
2512
|
const runnerParams = this.#runnerParams;
|
|
2401
2513
|
invariant4(runnerParams, "missing runner params");
|
|
2402
2514
|
if (!loaded.actor) {
|
|
@@ -2486,7 +2598,10 @@ function createManagerInspectorRouter() {
|
|
|
2486
2598
|
});
|
|
2487
2599
|
return c.json(actors, 200);
|
|
2488
2600
|
} catch (error) {
|
|
2489
|
-
inspectorLogger().error({
|
|
2601
|
+
inspectorLogger().error({
|
|
2602
|
+
msg: "Failed to fetch actors",
|
|
2603
|
+
error
|
|
2604
|
+
});
|
|
2490
2605
|
return c.json("Failed to fetch actors", 500);
|
|
2491
2606
|
}
|
|
2492
2607
|
}).post("/actors", sValidator("json", CreateActorSchema), async (c) => {
|
|
@@ -2540,7 +2655,9 @@ var FileSystemManagerDriver = class {
|
|
|
2540
2655
|
name: actorState.name,
|
|
2541
2656
|
key: actorState.key,
|
|
2542
2657
|
startedAt,
|
|
2543
|
-
createdAt: new Date(
|
|
2658
|
+
createdAt: new Date(
|
|
2659
|
+
Number(actorState.createdAt)
|
|
2660
|
+
).toISOString(),
|
|
2544
2661
|
features: [
|
|
2545
2662
|
"state" /* State */,
|
|
2546
2663
|
"connections" /* Connections */,
|
|
@@ -2574,14 +2691,18 @@ var FileSystemManagerDriver = class {
|
|
|
2574
2691
|
}
|
|
2575
2692
|
},
|
|
2576
2693
|
getBuilds: async () => {
|
|
2577
|
-
return Object.keys(this.#registryConfig.use).map(
|
|
2578
|
-
name
|
|
2579
|
-
|
|
2694
|
+
return Object.keys(this.#registryConfig.use).map(
|
|
2695
|
+
(name) => ({
|
|
2696
|
+
name
|
|
2697
|
+
})
|
|
2698
|
+
);
|
|
2580
2699
|
},
|
|
2581
2700
|
createActor: async (input) => {
|
|
2582
2701
|
const { actorId } = await this.createActor(input);
|
|
2583
2702
|
try {
|
|
2584
|
-
const result = await this.#state.loadActorStateOrError(
|
|
2703
|
+
const result = await this.#state.loadActorStateOrError(
|
|
2704
|
+
actorId
|
|
2705
|
+
);
|
|
2585
2706
|
return transformActor2(result);
|
|
2586
2707
|
} catch {
|
|
2587
2708
|
return null;
|
|
@@ -2673,7 +2794,9 @@ var FileSystemManagerDriver = class {
|
|
|
2673
2794
|
throw new Error(`Unreachable path: ${path4}`);
|
|
2674
2795
|
}
|
|
2675
2796
|
}
|
|
2676
|
-
async getForId({
|
|
2797
|
+
async getForId({
|
|
2798
|
+
actorId
|
|
2799
|
+
}) {
|
|
2677
2800
|
const actor2 = await this.#state.loadActor(actorId);
|
|
2678
2801
|
if (!actor2.state) {
|
|
2679
2802
|
return void 0;
|
|
@@ -2685,7 +2808,11 @@ var FileSystemManagerDriver = class {
|
|
|
2685
2808
|
key: actor2.state.key
|
|
2686
2809
|
};
|
|
2687
2810
|
} catch (error) {
|
|
2688
|
-
logger5().error({
|
|
2811
|
+
logger5().error({
|
|
2812
|
+
msg: "failed to read actor state",
|
|
2813
|
+
actorId,
|
|
2814
|
+
error
|
|
2815
|
+
});
|
|
2689
2816
|
return void 0;
|
|
2690
2817
|
}
|
|
2691
2818
|
}
|
|
@@ -2767,7 +2894,12 @@ function createFileSystemOrMemoryDriver(persist = true, customPath) {
|
|
|
2767
2894
|
inlineClient,
|
|
2768
2895
|
state
|
|
2769
2896
|
);
|
|
2770
|
-
state.onRunnerStart(
|
|
2897
|
+
state.onRunnerStart(
|
|
2898
|
+
registryConfig,
|
|
2899
|
+
runConfig,
|
|
2900
|
+
inlineClient,
|
|
2901
|
+
actorDriver
|
|
2902
|
+
);
|
|
2771
2903
|
return actorDriver;
|
|
2772
2904
|
}
|
|
2773
2905
|
};
|
|
@@ -2823,7 +2955,10 @@ var ENGINE_ENDPOINT = `http://localhost:${ENGINE_PORT}`;
|
|
|
2823
2955
|
var ENGINE_BASE_URL = "https://releases.rivet.gg/engine";
|
|
2824
2956
|
var ENGINE_BINARY_NAME = "rivet-engine";
|
|
2825
2957
|
async function ensureEngineProcess(options) {
|
|
2826
|
-
logger6().debug({
|
|
2958
|
+
logger6().debug({
|
|
2959
|
+
msg: "ensuring engine process",
|
|
2960
|
+
version: options.version
|
|
2961
|
+
});
|
|
2827
2962
|
const storageRoot = getStoragePath();
|
|
2828
2963
|
const binDir = path3.join(storageRoot, "bin");
|
|
2829
2964
|
const varDir = path3.join(storageRoot, "var");
|
|
@@ -3003,12 +3138,18 @@ function resolveTargetTripletFor(platform, arch) {
|
|
|
3003
3138
|
break;
|
|
3004
3139
|
case "linux":
|
|
3005
3140
|
if (arch === "x64") {
|
|
3006
|
-
return {
|
|
3141
|
+
return {
|
|
3142
|
+
targetTriplet: "x86_64-unknown-linux-musl",
|
|
3143
|
+
extension: ""
|
|
3144
|
+
};
|
|
3007
3145
|
}
|
|
3008
3146
|
break;
|
|
3009
3147
|
case "win32":
|
|
3010
3148
|
if (arch === "x64") {
|
|
3011
|
-
return {
|
|
3149
|
+
return {
|
|
3150
|
+
targetTriplet: "x86_64-pc-windows-gnu",
|
|
3151
|
+
extension: ".exe"
|
|
3152
|
+
};
|
|
3012
3153
|
}
|
|
3013
3154
|
break;
|
|
3014
3155
|
}
|
|
@@ -3083,7 +3224,9 @@ async function waitForEngineHealth() {
|
|
|
3083
3224
|
attempt: i + 1,
|
|
3084
3225
|
maxRetries
|
|
3085
3226
|
});
|
|
3086
|
-
await new Promise(
|
|
3227
|
+
await new Promise(
|
|
3228
|
+
(resolve) => setTimeout(resolve, HEALTH_INTERVAL)
|
|
3229
|
+
);
|
|
3087
3230
|
}
|
|
3088
3231
|
}
|
|
3089
3232
|
throw new Error(`engine health check failed after ${maxRetries} retries`);
|
|
@@ -3124,6 +3267,7 @@ var ActorsListResponseSchema = z4.object({
|
|
|
3124
3267
|
actors: z4.array(ActorSchema)
|
|
3125
3268
|
});
|
|
3126
3269
|
var ActorsCreateRequestSchema = z4.object({
|
|
3270
|
+
datacenter: z4.string().optional(),
|
|
3127
3271
|
name: z4.string(),
|
|
3128
3272
|
runner_name_selector: z4.string(),
|
|
3129
3273
|
crash_policy: z4.string(),
|
|
@@ -3134,6 +3278,7 @@ var ActorsCreateResponseSchema = z4.object({
|
|
|
3134
3278
|
actor: ActorSchema
|
|
3135
3279
|
});
|
|
3136
3280
|
var ActorsGetOrCreateRequestSchema = z4.object({
|
|
3281
|
+
datacenter: z4.string().optional(),
|
|
3137
3282
|
name: z4.string(),
|
|
3138
3283
|
key: z4.string(),
|
|
3139
3284
|
runner_name_selector: z4.string(),
|
|
@@ -3147,6 +3292,76 @@ var ActorsGetOrCreateResponseSchema = z4.object({
|
|
|
3147
3292
|
var ActorsDeleteResponseSchema = z4.object({});
|
|
3148
3293
|
|
|
3149
3294
|
// src/manager/gateway.ts
|
|
3295
|
+
async function handleWebSocketGatewayPathBased(runConfig, managerDriver, c, actorPathInfo) {
|
|
3296
|
+
var _a;
|
|
3297
|
+
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
3298
|
+
if (!upgradeWebSocket) {
|
|
3299
|
+
throw new WebSocketsNotEnabled();
|
|
3300
|
+
}
|
|
3301
|
+
const protocols = c.req.header("sec-websocket-protocol");
|
|
3302
|
+
let encodingRaw;
|
|
3303
|
+
let connParamsRaw;
|
|
3304
|
+
let connIdRaw;
|
|
3305
|
+
let connTokenRaw;
|
|
3306
|
+
if (protocols) {
|
|
3307
|
+
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
3308
|
+
for (const protocol of protocolList) {
|
|
3309
|
+
if (protocol.startsWith(WS_PROTOCOL_ENCODING)) {
|
|
3310
|
+
encodingRaw = protocol.substring(WS_PROTOCOL_ENCODING.length);
|
|
3311
|
+
} else if (protocol.startsWith(WS_PROTOCOL_CONN_PARAMS)) {
|
|
3312
|
+
connParamsRaw = decodeURIComponent(
|
|
3313
|
+
protocol.substring(WS_PROTOCOL_CONN_PARAMS.length)
|
|
3314
|
+
);
|
|
3315
|
+
} else if (protocol.startsWith(WS_PROTOCOL_CONN_ID)) {
|
|
3316
|
+
connIdRaw = protocol.substring(WS_PROTOCOL_CONN_ID.length);
|
|
3317
|
+
} else if (protocol.startsWith(WS_PROTOCOL_CONN_TOKEN)) {
|
|
3318
|
+
connTokenRaw = protocol.substring(
|
|
3319
|
+
WS_PROTOCOL_CONN_TOKEN.length
|
|
3320
|
+
);
|
|
3321
|
+
}
|
|
3322
|
+
}
|
|
3323
|
+
}
|
|
3324
|
+
logger().debug({
|
|
3325
|
+
msg: "proxying websocket to actor via path-based routing",
|
|
3326
|
+
actorId: actorPathInfo.actorId,
|
|
3327
|
+
path: actorPathInfo.remainingPath,
|
|
3328
|
+
encoding: encodingRaw
|
|
3329
|
+
});
|
|
3330
|
+
const encoding = encodingRaw || "json";
|
|
3331
|
+
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
3332
|
+
return await managerDriver.proxyWebSocket(
|
|
3333
|
+
c,
|
|
3334
|
+
actorPathInfo.remainingPath,
|
|
3335
|
+
actorPathInfo.actorId,
|
|
3336
|
+
encoding,
|
|
3337
|
+
// Will be validated by driver
|
|
3338
|
+
connParams,
|
|
3339
|
+
connIdRaw,
|
|
3340
|
+
connTokenRaw
|
|
3341
|
+
);
|
|
3342
|
+
}
|
|
3343
|
+
async function handleHttpGatewayPathBased(managerDriver, c, actorPathInfo) {
|
|
3344
|
+
logger().debug({
|
|
3345
|
+
msg: "proxying request to actor via path-based routing",
|
|
3346
|
+
actorId: actorPathInfo.actorId,
|
|
3347
|
+
path: actorPathInfo.remainingPath,
|
|
3348
|
+
method: c.req.method
|
|
3349
|
+
});
|
|
3350
|
+
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
3351
|
+
const proxyUrl = new URL(`http://actor${actorPathInfo.remainingPath}`);
|
|
3352
|
+
const proxyRequest = new Request(proxyUrl, {
|
|
3353
|
+
method: c.req.raw.method,
|
|
3354
|
+
headers: proxyHeaders,
|
|
3355
|
+
body: c.req.raw.body,
|
|
3356
|
+
signal: c.req.raw.signal,
|
|
3357
|
+
duplex: "half"
|
|
3358
|
+
});
|
|
3359
|
+
return await managerDriver.proxyRequest(
|
|
3360
|
+
c,
|
|
3361
|
+
proxyRequest,
|
|
3362
|
+
actorPathInfo.actorId
|
|
3363
|
+
);
|
|
3364
|
+
}
|
|
3150
3365
|
async function actorGateway(runConfig, managerDriver, c, next) {
|
|
3151
3366
|
if (c.req.path.startsWith("/.test/")) {
|
|
3152
3367
|
return next();
|
|
@@ -3158,6 +3373,28 @@ async function actorGateway(runConfig, managerDriver, c, next) {
|
|
|
3158
3373
|
strippedPath = "/" + strippedPath;
|
|
3159
3374
|
}
|
|
3160
3375
|
}
|
|
3376
|
+
const pathWithQuery = c.req.url.includes("?") ? strippedPath + c.req.url.substring(c.req.url.indexOf("?")) : strippedPath;
|
|
3377
|
+
const actorPathInfo = parseActorPath(pathWithQuery);
|
|
3378
|
+
if (actorPathInfo) {
|
|
3379
|
+
logger().debug({
|
|
3380
|
+
msg: "routing using path-based actor routing",
|
|
3381
|
+
actorPathInfo
|
|
3382
|
+
});
|
|
3383
|
+
const isWebSocket = c.req.header("upgrade") === "websocket";
|
|
3384
|
+
if (isWebSocket) {
|
|
3385
|
+
return await handleWebSocketGatewayPathBased(
|
|
3386
|
+
runConfig,
|
|
3387
|
+
managerDriver,
|
|
3388
|
+
c,
|
|
3389
|
+
actorPathInfo
|
|
3390
|
+
);
|
|
3391
|
+
}
|
|
3392
|
+
return await handleHttpGatewayPathBased(
|
|
3393
|
+
managerDriver,
|
|
3394
|
+
c,
|
|
3395
|
+
actorPathInfo
|
|
3396
|
+
);
|
|
3397
|
+
}
|
|
3161
3398
|
if (c.req.header("upgrade") === "websocket") {
|
|
3162
3399
|
return await handleWebSocketGateway(
|
|
3163
3400
|
runConfig,
|
|
@@ -3197,7 +3434,9 @@ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath)
|
|
|
3197
3434
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_ID)) {
|
|
3198
3435
|
connIdRaw = protocol.substring(WS_PROTOCOL_CONN_ID.length);
|
|
3199
3436
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_TOKEN)) {
|
|
3200
|
-
connTokenRaw = protocol.substring(
|
|
3437
|
+
connTokenRaw = protocol.substring(
|
|
3438
|
+
WS_PROTOCOL_CONN_TOKEN.length
|
|
3439
|
+
);
|
|
3201
3440
|
}
|
|
3202
3441
|
}
|
|
3203
3442
|
}
|
|
@@ -3256,6 +3495,73 @@ async function handleHttpGateway(managerDriver, c, next, strippedPath) {
|
|
|
3256
3495
|
});
|
|
3257
3496
|
return await managerDriver.proxyRequest(c, proxyRequest, actorId);
|
|
3258
3497
|
}
|
|
3498
|
+
function parseActorPath(path4) {
|
|
3499
|
+
const queryPos = path4.indexOf("?");
|
|
3500
|
+
const fragmentPos = path4.indexOf("#");
|
|
3501
|
+
let queryString = "";
|
|
3502
|
+
if (queryPos !== -1) {
|
|
3503
|
+
if (fragmentPos !== -1 && queryPos < fragmentPos) {
|
|
3504
|
+
queryString = path4.slice(queryPos, fragmentPos);
|
|
3505
|
+
} else {
|
|
3506
|
+
queryString = path4.slice(queryPos);
|
|
3507
|
+
}
|
|
3508
|
+
}
|
|
3509
|
+
let basePath = path4;
|
|
3510
|
+
if (queryPos !== -1) {
|
|
3511
|
+
basePath = path4.slice(0, queryPos);
|
|
3512
|
+
} else if (fragmentPos !== -1) {
|
|
3513
|
+
basePath = path4.slice(0, fragmentPos);
|
|
3514
|
+
}
|
|
3515
|
+
if (basePath.includes("//")) {
|
|
3516
|
+
return null;
|
|
3517
|
+
}
|
|
3518
|
+
const segments = basePath.split("/").filter((s) => s.length > 0);
|
|
3519
|
+
if (segments.length < 4) {
|
|
3520
|
+
return null;
|
|
3521
|
+
}
|
|
3522
|
+
if (segments[0] !== "gateway" || segments[1] !== "actors") {
|
|
3523
|
+
return null;
|
|
3524
|
+
}
|
|
3525
|
+
if (segments[2].length === 0) {
|
|
3526
|
+
return null;
|
|
3527
|
+
}
|
|
3528
|
+
const actorId = segments[2];
|
|
3529
|
+
let token;
|
|
3530
|
+
let remainingPathStartIdx;
|
|
3531
|
+
if (segments.length >= 6 && segments[3] === "tokens" && segments[5] === "route") {
|
|
3532
|
+
if (segments[4].length === 0) {
|
|
3533
|
+
return null;
|
|
3534
|
+
}
|
|
3535
|
+
token = segments[4];
|
|
3536
|
+
remainingPathStartIdx = 6;
|
|
3537
|
+
} else if (segments.length >= 4 && segments[3] === "route") {
|
|
3538
|
+
token = void 0;
|
|
3539
|
+
remainingPathStartIdx = 4;
|
|
3540
|
+
} else {
|
|
3541
|
+
return null;
|
|
3542
|
+
}
|
|
3543
|
+
let prefixLen = 0;
|
|
3544
|
+
for (let i = 0; i < remainingPathStartIdx; i++) {
|
|
3545
|
+
prefixLen += 1 + segments[i].length;
|
|
3546
|
+
}
|
|
3547
|
+
let remainingBase;
|
|
3548
|
+
if (prefixLen < basePath.length) {
|
|
3549
|
+
remainingBase = basePath.slice(prefixLen);
|
|
3550
|
+
} else {
|
|
3551
|
+
remainingBase = "/";
|
|
3552
|
+
}
|
|
3553
|
+
let remainingPath;
|
|
3554
|
+
if (remainingBase.length === 0 || !remainingBase.startsWith("/")) {
|
|
3555
|
+
remainingPath = `/${remainingBase}${queryString}`;
|
|
3556
|
+
} else {
|
|
3557
|
+
remainingPath = `${remainingBase}${queryString}`;
|
|
3558
|
+
}
|
|
3559
|
+
return {
|
|
3560
|
+
actorId,
|
|
3561
|
+
token,
|
|
3562
|
+
remainingPath
|
|
3563
|
+
};
|
|
3564
|
+
}
|
|
3259
3565
|
async function createTestWebSocketProxy(clientWsPromise) {
|
|
3260
3566
|
let clientWs = null;
|
|
3261
3567
|
const {
|
|
@@ -3273,13 +3579,20 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
3273
3579
|
});
|
|
3274
3580
|
await new Promise((resolve, reject) => {
|
|
3275
3581
|
const onOpen = () => {
|
|
3276
|
-
logger().debug({
|
|
3582
|
+
logger().debug({
|
|
3583
|
+
msg: "test websocket connection to actor opened"
|
|
3584
|
+
});
|
|
3277
3585
|
resolve();
|
|
3278
3586
|
};
|
|
3279
3587
|
const onError = (error) => {
|
|
3280
|
-
logger().error({
|
|
3588
|
+
logger().error({
|
|
3589
|
+
msg: "test websocket connection failed",
|
|
3590
|
+
error
|
|
3591
|
+
});
|
|
3281
3592
|
reject(
|
|
3282
|
-
new Error(
|
|
3593
|
+
new Error(
|
|
3594
|
+
`Failed to open WebSocket: ${error.message || error}`
|
|
3595
|
+
)
|
|
3283
3596
|
);
|
|
3284
3597
|
serverWsReject();
|
|
3285
3598
|
};
|
|
@@ -3431,7 +3744,9 @@ async function createTestWebSocketProxy(clientWsPromise) {
|
|
|
3431
3744
|
// src/manager/router-schema.ts
|
|
3432
3745
|
import { z as z5 } from "zod";
|
|
3433
3746
|
var ServerlessStartHeadersSchema = z5.object({
|
|
3434
|
-
endpoint: z5.string({
|
|
3747
|
+
endpoint: z5.string({
|
|
3748
|
+
required_error: "x-rivet-endpoint header is required"
|
|
3749
|
+
}),
|
|
3435
3750
|
token: z5.string({ invalid_type_error: "x-rivet-token header must be a string" }).optional(),
|
|
3436
3751
|
totalSlots: z5.coerce.number({
|
|
3437
3752
|
invalid_type_error: "x-rivet-total-slots header must be a number"
|
|
@@ -3440,7 +3755,7 @@ var ServerlessStartHeadersSchema = z5.object({
|
|
|
3440
3755
|
required_error: "x-rivet-runner-name header is required"
|
|
3441
3756
|
}),
|
|
3442
3757
|
namespace: z5.string({
|
|
3443
|
-
required_error: "x-rivet-namespace-
|
|
3758
|
+
required_error: "x-rivet-namespace-name header is required"
|
|
3444
3759
|
})
|
|
3445
3760
|
});
|
|
3446
3761
|
|
|
@@ -3512,7 +3827,7 @@ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDri
|
|
|
3512
3827
|
token: c.req.header("x-rivet-token") ?? void 0,
|
|
3513
3828
|
totalSlots: c.req.header("x-rivet-total-slots"),
|
|
3514
3829
|
runnerName: c.req.header("x-rivet-runner-name"),
|
|
3515
|
-
namespace: c.req.header("x-rivet-namespace-
|
|
3830
|
+
namespace: c.req.header("x-rivet-namespace-name")
|
|
3516
3831
|
});
|
|
3517
3832
|
if (!parseResult.success) {
|
|
3518
3833
|
throw new InvalidRequest(
|
|
@@ -3578,7 +3893,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3578
3893
|
path: "/actors",
|
|
3579
3894
|
request: {
|
|
3580
3895
|
query: z6.object({
|
|
3581
|
-
name: z6.string(),
|
|
3896
|
+
name: z6.string().optional(),
|
|
3582
3897
|
actor_ids: z6.string().optional(),
|
|
3583
3898
|
key: z6.string().optional()
|
|
3584
3899
|
})
|
|
@@ -3589,6 +3904,30 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3589
3904
|
const { name, actor_ids, key } = c.req.valid("query");
|
|
3590
3905
|
const actorIdsParsed = actor_ids ? actor_ids.split(",").map((id) => id.trim()).filter((id) => id.length > 0) : void 0;
|
|
3591
3906
|
const actors = [];
|
|
3907
|
+
if (actorIdsParsed && (name || key)) {
|
|
3908
|
+
return c.json(
|
|
3909
|
+
{
|
|
3910
|
+
error: "Cannot provide both actor_ids and (name + key). Use either actor_ids or (name + key)."
|
|
3911
|
+
},
|
|
3912
|
+
400
|
|
3913
|
+
);
|
|
3914
|
+
}
|
|
3915
|
+
if (key && !name) {
|
|
3916
|
+
return c.json(
|
|
3917
|
+
{
|
|
3918
|
+
error: "When providing 'key', 'name' must also be provided."
|
|
3919
|
+
},
|
|
3920
|
+
400
|
|
3921
|
+
);
|
|
3922
|
+
}
|
|
3923
|
+
if (!actorIdsParsed && !key) {
|
|
3924
|
+
return c.json(
|
|
3925
|
+
{
|
|
3926
|
+
error: "Must provide either 'actor_ids' or both 'name' and 'key'."
|
|
3927
|
+
},
|
|
3928
|
+
400
|
|
3929
|
+
);
|
|
3930
|
+
}
|
|
3592
3931
|
if (actorIdsParsed) {
|
|
3593
3932
|
if (actorIdsParsed.length > 32) {
|
|
3594
3933
|
return c.json(
|
|
@@ -3613,6 +3952,20 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3613
3952
|
if (actorOutput) {
|
|
3614
3953
|
actors.push(actorOutput);
|
|
3615
3954
|
}
|
|
3955
|
+
} else {
|
|
3956
|
+
for (const actorName of Object.keys(
|
|
3957
|
+
registryConfig.use
|
|
3958
|
+
)) {
|
|
3959
|
+
const actorOutput = await managerDriver.getForId({
|
|
3960
|
+
c,
|
|
3961
|
+
name: actorName,
|
|
3962
|
+
actorId
|
|
3963
|
+
});
|
|
3964
|
+
if (actorOutput) {
|
|
3965
|
+
actors.push(actorOutput);
|
|
3966
|
+
break;
|
|
3967
|
+
}
|
|
3968
|
+
}
|
|
3616
3969
|
}
|
|
3617
3970
|
}
|
|
3618
3971
|
} else if (key) {
|
|
@@ -3710,7 +4063,14 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3710
4063
|
if (registryConfig.test.enabled) {
|
|
3711
4064
|
router.post(".test/inline-driver/call", async (c) => {
|
|
3712
4065
|
const buffer = await c.req.arrayBuffer();
|
|
3713
|
-
const {
|
|
4066
|
+
const {
|
|
4067
|
+
encoding,
|
|
4068
|
+
transport,
|
|
4069
|
+
method,
|
|
4070
|
+
args
|
|
4071
|
+
} = cbor4.decode(
|
|
4072
|
+
new Uint8Array(buffer)
|
|
4073
|
+
);
|
|
3714
4074
|
logger().debug({
|
|
3715
4075
|
msg: "received inline request",
|
|
3716
4076
|
encoding,
|
|
@@ -3720,7 +4080,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3720
4080
|
});
|
|
3721
4081
|
let response;
|
|
3722
4082
|
try {
|
|
3723
|
-
const output = await managerDriver[method](
|
|
4083
|
+
const output = await managerDriver[method](
|
|
4084
|
+
...args
|
|
4085
|
+
);
|
|
3724
4086
|
response = { ok: output };
|
|
3725
4087
|
} catch (rawErr) {
|
|
3726
4088
|
const err = deconstructError(rawErr, logger(), {}, true);
|
|
@@ -3731,7 +4093,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3731
4093
|
router.get(".test/inline-driver/connect-websocket/*", async (c) => {
|
|
3732
4094
|
var _a2;
|
|
3733
4095
|
const upgradeWebSocket = (_a2 = runConfig.getUpgradeWebSocket) == null ? void 0 : _a2.call(runConfig);
|
|
3734
|
-
invariant6(
|
|
4096
|
+
invariant6(
|
|
4097
|
+
upgradeWebSocket,
|
|
4098
|
+
"websockets not supported on this platform"
|
|
4099
|
+
);
|
|
3735
4100
|
return upgradeWebSocket(async (c2) => {
|
|
3736
4101
|
const protocolHeader = c2.req.header("sec-websocket-protocol") || "";
|
|
3737
4102
|
const protocols = protocolHeader.split(/,\s*/);
|
|
@@ -3765,7 +4130,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3765
4130
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_ID)) {
|
|
3766
4131
|
connId = protocol.substring(WS_PROTOCOL_CONN_ID.length);
|
|
3767
4132
|
} else if (protocol.startsWith(WS_PROTOCOL_CONN_TOKEN)) {
|
|
3768
|
-
connToken = protocol.substring(
|
|
4133
|
+
connToken = protocol.substring(
|
|
4134
|
+
WS_PROTOCOL_CONN_TOKEN.length
|
|
4135
|
+
);
|
|
3769
4136
|
}
|
|
3770
4137
|
}
|
|
3771
4138
|
logger().debug({
|
|
@@ -3844,9 +4211,12 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3844
4211
|
try {
|
|
3845
4212
|
const response = await managerDriver.sendRequest(
|
|
3846
4213
|
actorId,
|
|
3847
|
-
new Request(
|
|
3848
|
-
|
|
3849
|
-
|
|
4214
|
+
new Request(
|
|
4215
|
+
`http://actor/.test/force-disconnect?conn=${connId}`,
|
|
4216
|
+
{
|
|
4217
|
+
method: "POST"
|
|
4218
|
+
}
|
|
4219
|
+
)
|
|
3850
4220
|
);
|
|
3851
4221
|
if (!response.ok) {
|
|
3852
4222
|
const text = await response.text();
|
|
@@ -4024,7 +4394,10 @@ var Registry = class {
|
|
|
4024
4394
|
...driverLog
|
|
4025
4395
|
});
|
|
4026
4396
|
if (isInspectorEnabled(config2, "manager") && managerDriver.inspector) {
|
|
4027
|
-
logger7().info({
|
|
4397
|
+
logger7().info({
|
|
4398
|
+
msg: "inspector ready",
|
|
4399
|
+
url: getInspectorUrl(config2)
|
|
4400
|
+
});
|
|
4028
4401
|
}
|
|
4029
4402
|
if (!config2.noWelcome) {
|
|
4030
4403
|
const displayInfo = managerDriver.displayInformation();
|
|
@@ -4033,7 +4406,9 @@ var Registry = class {
|
|
|
4033
4406
|
if (!config2.disableDefaultServer) {
|
|
4034
4407
|
console.log(` - Endpoint: ${getEndpoint(config2)}`);
|
|
4035
4408
|
} else if (config2.overrideServerAddress) {
|
|
4036
|
-
console.log(
|
|
4409
|
+
console.log(
|
|
4410
|
+
` - Endpoint: ${config2.overrideServerAddress}`
|
|
4411
|
+
);
|
|
4037
4412
|
}
|
|
4038
4413
|
if (config2.runEngine) {
|
|
4039
4414
|
const padding = " ".repeat(Math.max(0, 13 - "Engine".length));
|
|
@@ -4082,13 +4457,19 @@ async function configureServerlessRunner(config2) {
|
|
|
4082
4457
|
logger7().debug("configuring serverless runner");
|
|
4083
4458
|
try {
|
|
4084
4459
|
if (!config2.runnerName) {
|
|
4085
|
-
throw new Error(
|
|
4460
|
+
throw new Error(
|
|
4461
|
+
"runnerName is required for serverless configuration"
|
|
4462
|
+
);
|
|
4086
4463
|
}
|
|
4087
4464
|
if (!config2.namespace) {
|
|
4088
|
-
throw new Error(
|
|
4465
|
+
throw new Error(
|
|
4466
|
+
"namespace is required for serverless configuration"
|
|
4467
|
+
);
|
|
4089
4468
|
}
|
|
4090
4469
|
if (!config2.endpoint) {
|
|
4091
|
-
throw new Error(
|
|
4470
|
+
throw new Error(
|
|
4471
|
+
"endpoint is required for serverless configuration"
|
|
4472
|
+
);
|
|
4092
4473
|
}
|
|
4093
4474
|
const customConfig = typeof config2.autoConfigureServerless === "object" ? config2.autoConfigureServerless : {};
|
|
4094
4475
|
const clientConfig = {
|
|
@@ -4163,4 +4544,4 @@ export {
|
|
|
4163
4544
|
setup
|
|
4164
4545
|
};
|
|
4165
4546
|
//! These configs configs hold anything that's not platform-specific about running actors.
|
|
4166
|
-
//# sourceMappingURL=chunk-
|
|
4547
|
+
//# sourceMappingURL=chunk-2POQCWMA.js.map
|