rivetkit 2.0.20 → 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-L3YPHXPE.js → chunk-2POQCWMA.js} +481 -100
- package/dist/tsup/chunk-2POQCWMA.js.map +1 -0
- package/dist/tsup/{chunk-5F6X4AFU.js → chunk-3UIGKLZW.js} +6 -6
- package/dist/tsup/chunk-3UIGKLZW.js.map +1 -0
- package/dist/tsup/{chunk-M6LIJ6BK.js → chunk-4OINFQBR.js} +3 -3
- package/dist/tsup/{chunk-ZODINJWN.cjs → chunk-65SAIRRY.cjs} +12 -12
- package/dist/tsup/chunk-65SAIRRY.cjs.map +1 -0
- package/dist/tsup/{chunk-RI4YHZZW.js → chunk-6G76WIWL.js} +2 -2
- package/dist/tsup/{chunk-RI4YHZZW.js.map → chunk-6G76WIWL.js.map} +1 -1
- package/dist/tsup/{chunk-YFFCPYHY.js → chunk-D2LS4X6E.js} +11 -5
- package/dist/tsup/chunk-D2LS4X6E.js.map +1 -0
- package/dist/tsup/{chunk-QRUGCDA5.js → chunk-DYA34FHW.js} +2 -2
- package/dist/tsup/{chunk-KUZWEM23.cjs → chunk-ELDFBXDV.cjs} +8 -4
- package/dist/tsup/chunk-ELDFBXDV.cjs.map +1 -0
- package/dist/tsup/{chunk-FYP3TZXD.cjs → chunk-FDJ3AVNB.cjs} +32 -26
- package/dist/tsup/chunk-FDJ3AVNB.cjs.map +1 -0
- package/dist/tsup/{chunk-ER5OT3SQ.js → chunk-FUX6U6TL.js} +2 -2
- package/dist/tsup/chunk-FUX6U6TL.js.map +1 -0
- package/dist/tsup/{chunk-RJVSNJO7.cjs → chunk-HN7UXCYQ.cjs} +7 -7
- package/dist/tsup/chunk-HN7UXCYQ.cjs.map +1 -0
- package/dist/tsup/{chunk-QMVCFQ37.js → chunk-HUGSRAGL.js} +8 -4
- package/dist/tsup/chunk-HUGSRAGL.js.map +1 -0
- package/dist/tsup/{chunk-PV22ZBDE.cjs → chunk-JKOUXDK6.cjs} +16 -10
- package/dist/tsup/chunk-JKOUXDK6.cjs.map +1 -0
- package/dist/tsup/{chunk-2I6L3VRO.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-JZD6FEOE.cjs → chunk-LMJHBF26.cjs} +455 -289
- package/dist/tsup/chunk-LMJHBF26.cjs.map +1 -0
- package/dist/tsup/{chunk-KKRR7DSG.cjs → chunk-LWGCMELP.cjs} +3 -3
- package/dist/tsup/chunk-LWGCMELP.cjs.map +1 -0
- package/dist/tsup/{chunk-2S7HJMMY.cjs → chunk-M5BHNJHB.cjs} +630 -249
- package/dist/tsup/chunk-M5BHNJHB.cjs.map +1 -0
- package/dist/tsup/{chunk-G6JGHCG4.cjs → chunk-O4GUKGK4.cjs} +6 -6
- package/dist/tsup/chunk-O4GUKGK4.cjs.map +1 -0
- package/dist/tsup/{chunk-7ACKZS3T.js → chunk-RZZDFDB6.js} +13 -7
- package/dist/tsup/chunk-RZZDFDB6.js.map +1 -0
- package/dist/tsup/{chunk-MGHPBNWB.js → chunk-VLR3TDHT.js} +2 -2
- package/dist/tsup/{chunk-GQ5WTE64.js → chunk-Y2QONT7B.js} +263 -97
- package/dist/tsup/chunk-Y2QONT7B.js.map +1 -0
- package/dist/tsup/{chunk-DUOTOMP7.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-CmPcqOCF.d.ts → conn-Clu655RU.d.ts} +72 -71
- package/dist/tsup/{conn-DU5EbfCu.d.cts → conn-lUvFLo_q.d.cts} +72 -71
- 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 +23 -7
- 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-2I6L3VRO.cjs.map +0 -1
- package/dist/tsup/chunk-2S7HJMMY.cjs.map +0 -1
- package/dist/tsup/chunk-5F6X4AFU.js.map +0 -1
- package/dist/tsup/chunk-7ACKZS3T.js.map +0 -1
- package/dist/tsup/chunk-DUOTOMP7.cjs.map +0 -1
- package/dist/tsup/chunk-ER5OT3SQ.js.map +0 -1
- package/dist/tsup/chunk-FYP3TZXD.cjs.map +0 -1
- package/dist/tsup/chunk-G6JGHCG4.cjs.map +0 -1
- package/dist/tsup/chunk-GQ5WTE64.js.map +0 -1
- package/dist/tsup/chunk-JZD6FEOE.cjs.map +0 -1
- package/dist/tsup/chunk-KKRR7DSG.cjs.map +0 -1
- package/dist/tsup/chunk-KUZWEM23.cjs.map +0 -1
- package/dist/tsup/chunk-L3YPHXPE.js.map +0 -1
- package/dist/tsup/chunk-PV22ZBDE.cjs.map +0 -1
- package/dist/tsup/chunk-QMVCFQ37.js.map +0 -1
- package/dist/tsup/chunk-RJVSNJO7.cjs.map +0 -1
- package/dist/tsup/chunk-YFFCPYHY.js.map +0 -1
- package/dist/tsup/chunk-ZODINJWN.cjs.map +0 -1
- /package/dist/tsup/{chunk-M6LIJ6BK.js.map → chunk-4OINFQBR.js.map} +0 -0
- /package/dist/tsup/{chunk-QRUGCDA5.js.map → chunk-DYA34FHW.js.map} +0 -0
- /package/dist/tsup/{chunk-MGHPBNWB.js.map → chunk-VLR3TDHT.js.map} +0 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkZNWE3XBTcjs = require('./chunk-ZNWE3XBT.cjs');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
@@ -17,10 +17,10 @@ var _chunkDUOTOMP7cjs = require('./chunk-DUOTOMP7.cjs');
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
|
-
var
|
|
20
|
+
var _chunkLMJHBF26cjs = require('./chunk-LMJHBF26.cjs');
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
var
|
|
23
|
+
var _chunk65SAIRRYcjs = require('./chunk-65SAIRRY.cjs');
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
@@ -32,7 +32,7 @@ var _chunkZODINJWNcjs = require('./chunk-ZODINJWN.cjs');
|
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
35
|
-
var
|
|
35
|
+
var _chunkFDJ3AVNBcjs = require('./chunk-FDJ3AVNB.cjs');
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
|
|
@@ -58,12 +58,12 @@ var _chunkFYP3TZXDcjs = require('./chunk-FYP3TZXD.cjs');
|
|
|
58
58
|
|
|
59
59
|
|
|
60
60
|
|
|
61
|
-
var
|
|
61
|
+
var _chunkJKOUXDK6cjs = require('./chunk-JKOUXDK6.cjs');
|
|
62
62
|
|
|
63
63
|
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
var
|
|
66
|
+
var _chunkHN7UXCYQcjs = require('./chunk-HN7UXCYQ.cjs');
|
|
67
67
|
|
|
68
68
|
|
|
69
69
|
|
|
@@ -75,7 +75,7 @@ var _chunkRJVSNJO7cjs = require('./chunk-RJVSNJO7.cjs');
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
|
|
78
|
-
var
|
|
78
|
+
var _chunkELDFBXDVcjs = require('./chunk-ELDFBXDV.cjs');
|
|
79
79
|
|
|
80
80
|
|
|
81
81
|
|
|
@@ -158,7 +158,7 @@ var _streaming = require('hono/streaming');
|
|
|
158
158
|
|
|
159
159
|
// src/manager/log.ts
|
|
160
160
|
function logger() {
|
|
161
|
-
return
|
|
161
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "actor-manager");
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
// src/manager/hono-websocket-adapter.ts
|
|
@@ -237,7 +237,11 @@ var HonoWebSocketAdapter = (_class = 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 = 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 = 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 = 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 = 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 = 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;
|
|
@@ -446,14 +465,14 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
446
465
|
promise: handlersPromise,
|
|
447
466
|
resolve: handlersResolve,
|
|
448
467
|
reject: handlersReject
|
|
449
|
-
} =
|
|
468
|
+
} = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
450
469
|
let actor2;
|
|
451
470
|
try {
|
|
452
471
|
actor2 = await actorDriver.loadActor(actorId);
|
|
453
472
|
} catch (error) {
|
|
454
473
|
return {
|
|
455
474
|
onOpen: (_evt, ws) => {
|
|
456
|
-
const { code } =
|
|
475
|
+
const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
457
476
|
error,
|
|
458
477
|
actor2.rLog,
|
|
459
478
|
{
|
|
@@ -472,8 +491,8 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
472
491
|
}
|
|
473
492
|
};
|
|
474
493
|
}
|
|
475
|
-
const closePromise =
|
|
476
|
-
const socketId =
|
|
494
|
+
const closePromise = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
495
|
+
const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
|
|
477
496
|
return {
|
|
478
497
|
onOpen: (_evt, ws) => {
|
|
479
498
|
actor2.rLog.debug("actor websocket open");
|
|
@@ -504,7 +523,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
504
523
|
handlersResolve({ conn, actor: actor2, connId: conn.id });
|
|
505
524
|
} catch (error) {
|
|
506
525
|
handlersReject(error);
|
|
507
|
-
const { code } =
|
|
526
|
+
const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
508
527
|
error,
|
|
509
528
|
actor2.rLog,
|
|
510
529
|
{
|
|
@@ -520,12 +539,12 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
520
539
|
handlersPromise.then(({ conn, actor: actor3 }) => {
|
|
521
540
|
actor3.rLog.debug({ msg: "received message" });
|
|
522
541
|
const value = evt.data.valueOf();
|
|
523
|
-
|
|
542
|
+
_chunkFDJ3AVNBcjs.parseMessage.call(void 0, value, {
|
|
524
543
|
encoding,
|
|
525
544
|
maxIncomingMessageSize: runConfig.maxIncomingMessageSize
|
|
526
545
|
}).then((message) => {
|
|
527
546
|
actor3.processMessage(message, conn).catch((error) => {
|
|
528
|
-
const { code } =
|
|
547
|
+
const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
529
548
|
error,
|
|
530
549
|
actor3.rLog,
|
|
531
550
|
{
|
|
@@ -536,7 +555,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
536
555
|
ws.close(1011, code);
|
|
537
556
|
});
|
|
538
557
|
}).catch((error) => {
|
|
539
|
-
const { code } =
|
|
558
|
+
const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
540
559
|
error,
|
|
541
560
|
actor3.rLog,
|
|
542
561
|
{
|
|
@@ -547,7 +566,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
547
566
|
ws.close(1011, code);
|
|
548
567
|
});
|
|
549
568
|
}).catch((error) => {
|
|
550
|
-
const { code } =
|
|
569
|
+
const { code } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
551
570
|
error,
|
|
552
571
|
actor2.rLog,
|
|
553
572
|
{
|
|
@@ -581,7 +600,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
581
600
|
const wasClean = event.wasClean || event.code === 1e3;
|
|
582
601
|
actor3.__connDisconnected(conn, wasClean, socketId);
|
|
583
602
|
}).catch((error) => {
|
|
584
|
-
|
|
603
|
+
_chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
585
604
|
error,
|
|
586
605
|
actor2.rLog,
|
|
587
606
|
{ wsEvent: "close" },
|
|
@@ -593,7 +612,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
593
612
|
try {
|
|
594
613
|
actor2.rLog.warn({ msg: "websocket error" });
|
|
595
614
|
} catch (error) {
|
|
596
|
-
|
|
615
|
+
_chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
597
616
|
error,
|
|
598
617
|
actor2.rLog,
|
|
599
618
|
{ wsEvent: "error" },
|
|
@@ -607,9 +626,9 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
607
626
|
c.header("Content-Encoding", "Identity");
|
|
608
627
|
const encoding = getRequestEncoding(c.req);
|
|
609
628
|
const parameters = getRequestConnParams(c.req);
|
|
610
|
-
const socketId =
|
|
611
|
-
const connId = c.req.header(
|
|
612
|
-
const connToken = c.req.header(
|
|
629
|
+
const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
|
|
630
|
+
const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
|
|
631
|
+
const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
|
|
613
632
|
return _streaming.streamSSE.call(void 0, c, async (stream) => {
|
|
614
633
|
let actor2;
|
|
615
634
|
let conn;
|
|
@@ -634,12 +653,12 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
|
634
653
|
connId,
|
|
635
654
|
connToken
|
|
636
655
|
);
|
|
637
|
-
const abortResolver =
|
|
656
|
+
const abortResolver = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
638
657
|
stream.onAbort(() => {
|
|
639
658
|
});
|
|
640
659
|
c.req.raw.signal.addEventListener("abort", async () => {
|
|
641
660
|
_invariant2.default.call(void 0, actor2, "actor should exist");
|
|
642
|
-
const rLog = _nullishCoalesce(actor2.rLog, () => (
|
|
661
|
+
const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, )));
|
|
643
662
|
try {
|
|
644
663
|
rLog.debug("sse stream aborted");
|
|
645
664
|
if (conn) {
|
|
@@ -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
|
-
|
|
686
|
+
_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).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
|
}
|
|
@@ -676,13 +698,13 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
676
698
|
const encoding = getRequestEncoding(c.req);
|
|
677
699
|
const parameters = getRequestConnParams(c.req);
|
|
678
700
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
679
|
-
const request =
|
|
701
|
+
const request = _chunkJKOUXDK6cjs.deserializeWithEncoding.call(void 0,
|
|
680
702
|
encoding,
|
|
681
703
|
new Uint8Array(arrayBuffer),
|
|
682
|
-
|
|
704
|
+
_chunkFDJ3AVNBcjs.HTTP_ACTION_REQUEST_VERSIONED
|
|
683
705
|
);
|
|
684
706
|
const actionArgs = cbor.decode(new Uint8Array(request.args));
|
|
685
|
-
const socketId =
|
|
707
|
+
const socketId = _chunkLMJHBF26cjs.generateConnSocketId.call(void 0, );
|
|
686
708
|
let actor2;
|
|
687
709
|
let conn;
|
|
688
710
|
let output;
|
|
@@ -697,7 +719,7 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
697
719
|
parameters,
|
|
698
720
|
c.req.raw
|
|
699
721
|
);
|
|
700
|
-
const ctx = new (0,
|
|
722
|
+
const ctx = new (0, _chunkFDJ3AVNBcjs.ActionContext)(actor2.actorContext, conn);
|
|
701
723
|
output = await actor2.executeAction(ctx, actionName, actionArgs);
|
|
702
724
|
} finally {
|
|
703
725
|
if (conn) {
|
|
@@ -705,24 +727,24 @@ async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
|
705
727
|
}
|
|
706
728
|
}
|
|
707
729
|
const responseData = {
|
|
708
|
-
output:
|
|
730
|
+
output: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
|
|
709
731
|
};
|
|
710
|
-
const serialized =
|
|
732
|
+
const serialized = _chunkJKOUXDK6cjs.serializeWithEncoding.call(void 0,
|
|
711
733
|
encoding,
|
|
712
734
|
responseData,
|
|
713
|
-
|
|
735
|
+
_chunkFDJ3AVNBcjs.HTTP_ACTION_RESPONSE_VERSIONED
|
|
714
736
|
);
|
|
715
737
|
return c.body(serialized, 200, {
|
|
716
|
-
"Content-Type":
|
|
738
|
+
"Content-Type": _chunkJKOUXDK6cjs.contentTypeForEncoding.call(void 0, encoding)
|
|
717
739
|
});
|
|
718
740
|
}
|
|
719
741
|
async function handleConnectionMessage(c, _runConfig, actorDriver, connId, connToken, actorId) {
|
|
720
742
|
const encoding = getRequestEncoding(c.req);
|
|
721
743
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
722
|
-
const message =
|
|
744
|
+
const message = _chunkJKOUXDK6cjs.deserializeWithEncoding.call(void 0,
|
|
723
745
|
encoding,
|
|
724
746
|
new Uint8Array(arrayBuffer),
|
|
725
|
-
|
|
747
|
+
_chunkFDJ3AVNBcjs.TO_SERVER_VERSIONED
|
|
726
748
|
);
|
|
727
749
|
const actor2 = await actorDriver.loadActor(actorId);
|
|
728
750
|
const conn = actor2.conns.get(connId);
|
|
@@ -803,11 +825,11 @@ async function handleRawWebSocketHandler(req, path4, actorDriver, actorId) {
|
|
|
803
825
|
};
|
|
804
826
|
}
|
|
805
827
|
function getRequestEncoding(req) {
|
|
806
|
-
const encodingParam = req.header(
|
|
828
|
+
const encodingParam = req.header(_chunkJKOUXDK6cjs.HEADER_ENCODING);
|
|
807
829
|
if (!encodingParam) {
|
|
808
830
|
throw new (0, _chunkKSRXX3Z4cjs.InvalidEncoding)("undefined");
|
|
809
831
|
}
|
|
810
|
-
const result =
|
|
832
|
+
const result = _chunkJKOUXDK6cjs.EncodingSchema.safeParse(encodingParam);
|
|
811
833
|
if (!result.success) {
|
|
812
834
|
throw new (0, _chunkKSRXX3Z4cjs.InvalidEncoding)(encodingParam);
|
|
813
835
|
}
|
|
@@ -817,7 +839,7 @@ function getRequestExposeInternalError(_req) {
|
|
|
817
839
|
return false;
|
|
818
840
|
}
|
|
819
841
|
function getRequestConnParams(req) {
|
|
820
|
-
const paramsParam = req.header(
|
|
842
|
+
const paramsParam = req.header(_chunkJKOUXDK6cjs.HEADER_CONN_PARAMS);
|
|
821
843
|
if (!paramsParam) {
|
|
822
844
|
return null;
|
|
823
845
|
}
|
|
@@ -825,7 +847,7 @@ function getRequestConnParams(req) {
|
|
|
825
847
|
return JSON.parse(paramsParam);
|
|
826
848
|
} catch (err) {
|
|
827
849
|
throw new (0, _chunkKSRXX3Z4cjs.InvalidParams)(
|
|
828
|
-
`Invalid params JSON: ${
|
|
850
|
+
`Invalid params JSON: ${_chunkELDFBXDVcjs.stringifyError.call(void 0, err)}`
|
|
829
851
|
);
|
|
830
852
|
}
|
|
831
853
|
}
|
|
@@ -859,7 +881,7 @@ function buildActorNames(registryConfig) {
|
|
|
859
881
|
|
|
860
882
|
// src/common/router.ts
|
|
861
883
|
function logger2() {
|
|
862
|
-
return
|
|
884
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "router");
|
|
863
885
|
}
|
|
864
886
|
function loggerMiddleware(logger8) {
|
|
865
887
|
return async (c, next) => {
|
|
@@ -877,7 +899,7 @@ function loggerMiddleware(logger8) {
|
|
|
877
899
|
reqSize: c.req.header("content-length"),
|
|
878
900
|
resSize: c.res.headers.get("content-length"),
|
|
879
901
|
userAgent: c.req.header("user-agent"),
|
|
880
|
-
...
|
|
902
|
+
..._chunkELDFBXDVcjs.getEnvUniversal.call(void 0, "_RIVET_LOG_HEADERS") ? { allHeaders: JSON.stringify(c.req.header()) } : {}
|
|
881
903
|
});
|
|
882
904
|
};
|
|
883
905
|
}
|
|
@@ -886,7 +908,7 @@ function handleRouteNotFound(c) {
|
|
|
886
908
|
}
|
|
887
909
|
function handleRouteError(error, c) {
|
|
888
910
|
const exposeInternalError = getRequestExposeInternalError(c.req.raw);
|
|
889
|
-
const { statusCode, group, code, message, metadata } =
|
|
911
|
+
const { statusCode, group, code, message, metadata } = _chunkELDFBXDVcjs.deconstructError.call(void 0,
|
|
890
912
|
error,
|
|
891
913
|
logger2(),
|
|
892
914
|
{
|
|
@@ -901,29 +923,29 @@ function handleRouteError(error, c) {
|
|
|
901
923
|
} catch (_) {
|
|
902
924
|
encoding = "json";
|
|
903
925
|
}
|
|
904
|
-
const output =
|
|
926
|
+
const output = _chunkJKOUXDK6cjs.serializeWithEncoding.call(void 0,
|
|
905
927
|
encoding,
|
|
906
928
|
{
|
|
907
929
|
group,
|
|
908
930
|
code,
|
|
909
931
|
message,
|
|
910
932
|
// TODO: Cannot serialize non-binary meta since it requires ArrayBuffer atm
|
|
911
|
-
metadata:
|
|
933
|
+
metadata: _chunkJKOUXDK6cjs.encodingIsBinary.call(void 0, encoding) ? _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
|
|
912
934
|
},
|
|
913
|
-
|
|
935
|
+
_chunkFDJ3AVNBcjs.HTTP_RESPONSE_ERROR_VERSIONED
|
|
914
936
|
);
|
|
915
937
|
return c.body(output, { status: statusCode });
|
|
916
938
|
}
|
|
917
939
|
function handleMetadataRequest(c, registryConfig, runConfig) {
|
|
918
940
|
const response = {
|
|
919
941
|
runtime: "rivetkit",
|
|
920
|
-
version:
|
|
942
|
+
version: _chunkELDFBXDVcjs.VERSION,
|
|
921
943
|
runner: {
|
|
922
944
|
kind: runConfig.runnerKind === "serverless" ? { serverless: {} } : { normal: {} }
|
|
923
945
|
},
|
|
924
946
|
actorNames: buildActorNames(registryConfig),
|
|
925
947
|
// Do not return client endpoint if default server disabled
|
|
926
|
-
clientEndpoint: _nullishCoalesce(runConfig.overrideServerAddress, () => ( (runConfig.disableDefaultServer ? void 0 :
|
|
948
|
+
clientEndpoint: _nullishCoalesce(runConfig.overrideServerAddress, () => ( (runConfig.disableDefaultServer ? void 0 : _chunkLMJHBF26cjs.getEndpoint.call(void 0, runConfig))))
|
|
927
949
|
};
|
|
928
950
|
return c.json(response);
|
|
929
951
|
}
|
|
@@ -931,14 +953,16 @@ function handleHealthRequest(c) {
|
|
|
931
953
|
return c.json({
|
|
932
954
|
status: "ok",
|
|
933
955
|
runtime: "rivetkit",
|
|
934
|
-
version:
|
|
956
|
+
version: _chunkELDFBXDVcjs.VERSION
|
|
935
957
|
});
|
|
936
958
|
}
|
|
937
959
|
|
|
938
960
|
// src/actor/router.ts
|
|
939
961
|
function createActorRouter(runConfig, actorDriver, isTest) {
|
|
940
|
-
const router = new (0, _hono.Hono)({
|
|
941
|
-
|
|
962
|
+
const router = new (0, _hono.Hono)({
|
|
963
|
+
strict: false
|
|
964
|
+
});
|
|
965
|
+
router.use("*", loggerMiddleware(_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, )));
|
|
942
966
|
router.get("/", (c) => {
|
|
943
967
|
return c.text(
|
|
944
968
|
"This is an RivetKit actor.\n\nLearn more at https://rivetkit.org"
|
|
@@ -969,7 +993,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
969
993
|
return c.json({ success: true });
|
|
970
994
|
});
|
|
971
995
|
}
|
|
972
|
-
router.get(
|
|
996
|
+
router.get(_chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET, async (c) => {
|
|
973
997
|
var _a;
|
|
974
998
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
975
999
|
if (upgradeWebSocket) {
|
|
@@ -982,20 +1006,28 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
982
1006
|
if (protocols) {
|
|
983
1007
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
984
1008
|
for (const protocol of protocolList) {
|
|
985
|
-
if (protocol.startsWith(
|
|
986
|
-
encodingRaw = protocol.substring(
|
|
987
|
-
|
|
1009
|
+
if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
|
|
1010
|
+
encodingRaw = protocol.substring(
|
|
1011
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
|
|
1012
|
+
);
|
|
1013
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
988
1014
|
connParamsRaw = decodeURIComponent(
|
|
989
|
-
protocol.substring(
|
|
1015
|
+
protocol.substring(
|
|
1016
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length
|
|
1017
|
+
)
|
|
1018
|
+
);
|
|
1019
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
|
|
1020
|
+
connIdRaw = protocol.substring(
|
|
1021
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length
|
|
1022
|
+
);
|
|
1023
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
1024
|
+
connTokenRaw = protocol.substring(
|
|
1025
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
|
|
990
1026
|
);
|
|
991
|
-
} else if (protocol.startsWith(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_ID)) {
|
|
992
|
-
connIdRaw = protocol.substring(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_ID.length);
|
|
993
|
-
} else if (protocol.startsWith(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
994
|
-
connTokenRaw = protocol.substring(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
995
1027
|
}
|
|
996
1028
|
}
|
|
997
1029
|
}
|
|
998
|
-
const encoding =
|
|
1030
|
+
const encoding = _chunkJKOUXDK6cjs.EncodingSchema.parse(encodingRaw);
|
|
999
1031
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1000
1032
|
return await handleWebSocketConnect(
|
|
1001
1033
|
c2.req.raw,
|
|
@@ -1007,7 +1039,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1007
1039
|
connIdRaw,
|
|
1008
1040
|
connTokenRaw
|
|
1009
1041
|
);
|
|
1010
|
-
})(c,
|
|
1042
|
+
})(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
|
|
1011
1043
|
} else {
|
|
1012
1044
|
return c.text(
|
|
1013
1045
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -1020,11 +1052,17 @@ 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
|
-
const connId = c.req.header(
|
|
1027
|
-
const connToken = c.req.header(
|
|
1064
|
+
const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
|
|
1065
|
+
const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
|
|
1028
1066
|
if (!connId || !connToken) {
|
|
1029
1067
|
throw new Error("Missing required parameters");
|
|
1030
1068
|
}
|
|
@@ -1038,8 +1076,8 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1038
1076
|
);
|
|
1039
1077
|
});
|
|
1040
1078
|
router.post("/connections/close", async (c) => {
|
|
1041
|
-
const connId = c.req.header(
|
|
1042
|
-
const connToken = c.req.header(
|
|
1079
|
+
const connId = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_ID);
|
|
1080
|
+
const connToken = c.req.header(_chunkJKOUXDK6cjs.HEADER_CONN_TOKEN);
|
|
1043
1081
|
if (!connId || !connToken) {
|
|
1044
1082
|
throw new Error("Missing required parameters");
|
|
1045
1083
|
}
|
|
@@ -1063,7 +1101,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1063
1101
|
body: c.req.raw.body,
|
|
1064
1102
|
duplex: "half"
|
|
1065
1103
|
});
|
|
1066
|
-
|
|
1104
|
+
_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1067
1105
|
msg: "rewriting http url",
|
|
1068
1106
|
from: c.req.url,
|
|
1069
1107
|
to: correctedRequest.url
|
|
@@ -1074,14 +1112,14 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1074
1112
|
}
|
|
1075
1113
|
return response;
|
|
1076
1114
|
});
|
|
1077
|
-
router.get(`${
|
|
1115
|
+
router.get(`${_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
|
|
1078
1116
|
var _a;
|
|
1079
1117
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
1080
1118
|
if (upgradeWebSocket) {
|
|
1081
1119
|
return upgradeWebSocket(async (c2) => {
|
|
1082
1120
|
const url = new URL(c2.req.url);
|
|
1083
1121
|
const pathWithQuery = c2.req.path + url.search;
|
|
1084
|
-
|
|
1122
|
+
_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1085
1123
|
msg: "actor router raw websocket",
|
|
1086
1124
|
path: c2.req.path,
|
|
1087
1125
|
url: c2.req.url,
|
|
@@ -1094,7 +1132,7 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1094
1132
|
actorDriver,
|
|
1095
1133
|
c2.env.actorId
|
|
1096
1134
|
);
|
|
1097
|
-
})(c,
|
|
1135
|
+
})(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
|
|
1098
1136
|
} else {
|
|
1099
1137
|
return c.text(
|
|
1100
1138
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -1102,19 +1140,22 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1102
1140
|
);
|
|
1103
1141
|
}
|
|
1104
1142
|
});
|
|
1105
|
-
if (
|
|
1143
|
+
if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
|
|
1106
1144
|
router.route(
|
|
1107
1145
|
"/inspect",
|
|
1108
1146
|
new (0, _hono.Hono)().use(
|
|
1109
1147
|
_cors.cors.call(void 0, runConfig.inspector.cors),
|
|
1110
|
-
|
|
1148
|
+
_chunkZNWE3XBTcjs.secureInspector.call(void 0, runConfig),
|
|
1111
1149
|
async (c, next) => {
|
|
1112
1150
|
const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
|
|
1113
|
-
_invariant2.default.call(void 0,
|
|
1151
|
+
_invariant2.default.call(void 0,
|
|
1152
|
+
inspector,
|
|
1153
|
+
"inspector not supported on this platform"
|
|
1154
|
+
);
|
|
1114
1155
|
c.set("inspector", inspector);
|
|
1115
1156
|
return next();
|
|
1116
1157
|
}
|
|
1117
|
-
).route("/",
|
|
1158
|
+
).route("/", _chunkLMJHBF26cjs.createActorInspectorRouter.call(void 0, ))
|
|
1118
1159
|
);
|
|
1119
1160
|
}
|
|
1120
1161
|
router.notFound(handleRouteNotFound);
|
|
@@ -1125,13 +1166,13 @@ function createActorRouter(runConfig, actorDriver, isTest) {
|
|
|
1125
1166
|
// src/actor/mod.ts
|
|
1126
1167
|
function actor(input) {
|
|
1127
1168
|
const config2 = ActorConfigSchema.parse(input);
|
|
1128
|
-
return new (0,
|
|
1169
|
+
return new (0, _chunkLMJHBF26cjs.ActorDefinition)(config2);
|
|
1129
1170
|
}
|
|
1130
1171
|
|
|
1131
1172
|
// src/common/inline-websocket-adapter2.ts
|
|
1132
1173
|
var _ws2 = require('hono/ws');
|
|
1133
1174
|
function logger3() {
|
|
1134
|
-
return
|
|
1175
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "fake-event-source2");
|
|
1135
1176
|
}
|
|
1136
1177
|
var InlineWebSocketAdapter2 = (_class2 = class {
|
|
1137
1178
|
// WebSocket readyState values
|
|
@@ -1213,7 +1254,10 @@ var InlineWebSocketAdapter2 = (_class2 = 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 = (_class2 = 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 = (_class2 = 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 = (_class2 = 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 = (_class2 = 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;
|
|
@@ -1479,7 +1535,7 @@ var KEYS = {
|
|
|
1479
1535
|
|
|
1480
1536
|
// src/drivers/engine/log.ts
|
|
1481
1537
|
function logger4() {
|
|
1482
|
-
return
|
|
1538
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "driver-engine");
|
|
1483
1539
|
}
|
|
1484
1540
|
|
|
1485
1541
|
// src/drivers/engine/actor-driver.ts
|
|
@@ -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 = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
1554
|
+
#runnerStopped = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
1499
1555
|
constructor(registryConfig, runConfig, managerDriver, inlineClient) {
|
|
1500
1556
|
this.#registryConfig = registryConfig;
|
|
1501
1557
|
this.#runConfig = runConfig;
|
|
@@ -1513,7 +1569,7 @@ var EngineActorDriver = class {
|
|
|
1513
1569
|
let hasDisconnected = false;
|
|
1514
1570
|
const engineRunnerConfig = {
|
|
1515
1571
|
version: this.#version,
|
|
1516
|
-
endpoint:
|
|
1572
|
+
endpoint: _chunkLMJHBF26cjs.getEndpoint.call(void 0, runConfig),
|
|
1517
1573
|
token,
|
|
1518
1574
|
namespace: _nullishCoalesce(runConfig.namespace, () => ( runConfig.namespace)),
|
|
1519
1575
|
totalSlots: _nullishCoalesce(runConfig.totalSlots, () => ( runConfig.totalSlots)),
|
|
@@ -1554,7 +1610,7 @@ var EngineActorDriver = class {
|
|
|
1554
1610
|
websocket: this.#runnerWebSocket.bind(this),
|
|
1555
1611
|
onActorStart: this.#runnerOnActorStart.bind(this),
|
|
1556
1612
|
onActorStop: this.#runnerOnActorStop.bind(this),
|
|
1557
|
-
logger:
|
|
1613
|
+
logger: _chunkHN7UXCYQcjs.getLogger.call(void 0, "engine-runner")
|
|
1558
1614
|
};
|
|
1559
1615
|
this.#runner = new (0, _enginerunner.Runner)(engineRunnerConfig);
|
|
1560
1616
|
this.#runner.start();
|
|
@@ -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;
|
|
@@ -1597,7 +1654,7 @@ var EngineActorDriver = class {
|
|
|
1597
1654
|
this.#alarmTimeout = void 0;
|
|
1598
1655
|
}
|
|
1599
1656
|
const delay = Math.max(0, timestamp - Date.now());
|
|
1600
|
-
this.#alarmTimeout =
|
|
1657
|
+
this.#alarmTimeout = _chunkELDFBXDVcjs.setLongTimeout.call(void 0, () => {
|
|
1601
1658
|
actor2._onAlarm();
|
|
1602
1659
|
this.#alarmTimeout = void 0;
|
|
1603
1660
|
}, delay);
|
|
@@ -1607,35 +1664,38 @@ 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) {
|
|
1625
1682
|
handler = {
|
|
1626
|
-
actorStartPromise:
|
|
1683
|
+
actorStartPromise: _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, ),
|
|
1627
1684
|
persistedData: void 0
|
|
1628
1685
|
};
|
|
1629
1686
|
this.#actors.set(actorId, handler);
|
|
1630
1687
|
const [persistedValue] = await this.#runner.kvGet(actorId, [
|
|
1631
1688
|
KEYS.PERSIST_DATA
|
|
1632
1689
|
]);
|
|
1633
|
-
handler.persistedData = persistedValue !== null ? persistedValue :
|
|
1690
|
+
handler.persistedData = persistedValue !== null ? persistedValue : _chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, input);
|
|
1634
1691
|
}
|
|
1635
|
-
const name =
|
|
1636
|
-
_invariant2.default.call(void 0,
|
|
1637
|
-
const key =
|
|
1638
|
-
const definition =
|
|
1692
|
+
const name = actorConfig.name;
|
|
1693
|
+
_invariant2.default.call(void 0, actorConfig.key, "actor should have a key");
|
|
1694
|
+
const key = _chunkLMJHBF26cjs.deserializeActorKey.call(void 0, actorConfig.key);
|
|
1695
|
+
const definition = _chunkLMJHBF26cjs.lookupInRegistry.call(void 0,
|
|
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,31 +1728,31 @@ 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
|
-
if (protocol.startsWith(
|
|
1684
|
-
encodingRaw = protocol.substring(
|
|
1685
|
-
|
|
1741
|
+
if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
|
|
1742
|
+
encodingRaw = protocol.substring(
|
|
1743
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
|
|
1744
|
+
);
|
|
1745
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
1686
1746
|
connParamsRaw = decodeURIComponent(
|
|
1687
|
-
protocol.substring(
|
|
1747
|
+
protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
1688
1748
|
);
|
|
1689
1749
|
}
|
|
1690
1750
|
}
|
|
1691
1751
|
}
|
|
1692
|
-
const encoding =
|
|
1752
|
+
const encoding = _chunkJKOUXDK6cjs.EncodingSchema.parse(encodingRaw);
|
|
1693
1753
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1694
1754
|
let wsHandlerPromise;
|
|
1695
|
-
if (url.pathname ===
|
|
1755
|
+
if (url.pathname === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
|
|
1696
1756
|
wsHandlerPromise = handleWebSocketConnect(
|
|
1697
1757
|
request,
|
|
1698
1758
|
this.#runConfig,
|
|
@@ -1704,7 +1764,7 @@ var EngineActorDriver = class {
|
|
|
1704
1764
|
void 0,
|
|
1705
1765
|
void 0
|
|
1706
1766
|
);
|
|
1707
|
-
} else if (url.pathname.startsWith(
|
|
1767
|
+
} else if (url.pathname.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX)) {
|
|
1708
1768
|
wsHandlerPromise = handleRawWebSocketHandler(
|
|
1709
1769
|
request,
|
|
1710
1770
|
url.pathname + url.search,
|
|
@@ -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 _streaming.streamSSE.call(void 0, 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
|
_invariant2.default.call(void 0, payload, "runnerId not set");
|
|
1767
1834
|
await stream.writeSSE({ data: payload });
|
|
1768
|
-
|
|
1835
|
+
await this.#runnerStopped.promise;
|
|
1769
1836
|
});
|
|
1770
1837
|
}
|
|
1771
1838
|
};
|
|
@@ -1775,7 +1842,7 @@ function createEngineDriver() {
|
|
|
1775
1842
|
return {
|
|
1776
1843
|
name: "engine",
|
|
1777
1844
|
manager: (_registryConfig, runConfig) => {
|
|
1778
|
-
return new (0,
|
|
1845
|
+
return new (0, _chunkLMJHBF26cjs.RemoteManagerDriver)(runConfig);
|
|
1779
1846
|
},
|
|
1780
1847
|
actor: (registryConfig, runConfig, managerDriver, inlineClient) => {
|
|
1781
1848
|
return new EngineActorDriver(
|
|
@@ -1829,7 +1896,7 @@ var FileSystemActorDriver = class {
|
|
|
1829
1896
|
const state = await this.#state.loadActorStateOrError(actorId);
|
|
1830
1897
|
await this.#state.writeActor(actorId, {
|
|
1831
1898
|
...state,
|
|
1832
|
-
persistedData:
|
|
1899
|
+
persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0, data)
|
|
1833
1900
|
});
|
|
1834
1901
|
}
|
|
1835
1902
|
async setAlarm(actor2, timestamp) {
|
|
@@ -1932,13 +1999,13 @@ function decodeActorAlarm(bytes) {
|
|
|
1932
1999
|
// src/schemas/file-system-driver/versioned.ts
|
|
1933
2000
|
var CURRENT_VERSION = 1;
|
|
1934
2001
|
var migrations = /* @__PURE__ */ new Map();
|
|
1935
|
-
var ACTOR_STATE_VERSIONED =
|
|
2002
|
+
var ACTOR_STATE_VERSIONED = _chunkFDJ3AVNBcjs.createVersionedDataHandler.call(void 0, {
|
|
1936
2003
|
currentVersion: CURRENT_VERSION,
|
|
1937
2004
|
migrations,
|
|
1938
2005
|
serializeVersion: (data) => encodeActorState(data),
|
|
1939
2006
|
deserializeVersion: (bytes) => decodeActorState(bytes)
|
|
1940
2007
|
});
|
|
1941
|
-
var ACTOR_ALARM_VERSIONED =
|
|
2008
|
+
var ACTOR_ALARM_VERSIONED = _chunkFDJ3AVNBcjs.createVersionedDataHandler.call(void 0, {
|
|
1942
2009
|
currentVersion: CURRENT_VERSION,
|
|
1943
2010
|
migrations,
|
|
1944
2011
|
serializeVersion: (data) => encodeActorAlarm(data),
|
|
@@ -1947,7 +2014,7 @@ var ACTOR_ALARM_VERSIONED = _chunkFYP3TZXDcjs.createVersionedDataHandler.call(vo
|
|
|
1947
2014
|
|
|
1948
2015
|
// src/drivers/file-system/log.ts
|
|
1949
2016
|
function logger5() {
|
|
1950
|
-
return
|
|
2017
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "driver-fs");
|
|
1951
2018
|
}
|
|
1952
2019
|
|
|
1953
2020
|
// src/drivers/file-system/utils.ts
|
|
@@ -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:
|
|
2199
|
+
persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0,
|
|
2200
|
+
_chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, 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:
|
|
2251
|
+
persistedData: _chunkELDFBXDVcjs.bufferToArrayBuffer.call(void 0,
|
|
2252
|
+
_chunkFDJ3AVNBcjs.serializeEmptyPersistData.call(void 0, 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
|
_invariant2.default.call(void 0, 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
|
_invariant2.default.call(void 0, 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 (e2) {
|
|
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 (e3) {
|
|
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) {
|
|
@@ -2289,9 +2388,12 @@ var FileSystemGlobalState = class {
|
|
|
2289
2388
|
if (entry.actor) {
|
|
2290
2389
|
return entry.actor;
|
|
2291
2390
|
}
|
|
2292
|
-
entry.startPromise =
|
|
2391
|
+
entry.startPromise = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
2293
2392
|
try {
|
|
2294
|
-
const definition =
|
|
2393
|
+
const definition = _chunkLMJHBF26cjs.lookupInRegistry.call(void 0,
|
|
2394
|
+
registryConfig,
|
|
2395
|
+
entry.state.name
|
|
2396
|
+
);
|
|
2295
2397
|
entry.actor = definition.instantiate();
|
|
2296
2398
|
await entry.actor.start(
|
|
2297
2399
|
actorDriver,
|
|
@@ -2343,20 +2445,29 @@ 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({
|
|
2352
2460
|
msg: "failed to read alarm file",
|
|
2353
2461
|
file,
|
|
2354
|
-
error:
|
|
2462
|
+
error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
|
|
2355
2463
|
});
|
|
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
|
/**
|
|
@@ -2378,7 +2489,7 @@ var FileSystemGlobalState = class {
|
|
|
2378
2489
|
(_a = entry.alarmTimeout) == null ? void 0 : _a.abort();
|
|
2379
2490
|
entry.alarmTimestamp = timestamp;
|
|
2380
2491
|
const delay = Math.max(0, timestamp - Date.now());
|
|
2381
|
-
entry.alarmTimeout =
|
|
2492
|
+
entry.alarmTimeout = _chunkELDFBXDVcjs.setLongTimeout.call(void 0, async () => {
|
|
2382
2493
|
entry.alarmTimestamp = void 0;
|
|
2383
2494
|
if (this.#persist) {
|
|
2384
2495
|
try {
|
|
@@ -2388,7 +2499,7 @@ var FileSystemGlobalState = class {
|
|
|
2388
2499
|
logger5().debug({
|
|
2389
2500
|
msg: "failed to remove alarm file",
|
|
2390
2501
|
actorId,
|
|
2391
|
-
error:
|
|
2502
|
+
error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
|
|
2392
2503
|
});
|
|
2393
2504
|
}
|
|
2394
2505
|
}
|
|
@@ -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
|
_invariant2.default.call(void 0, runnerParams, "missing runner params");
|
|
2402
2514
|
if (!loaded.actor) {
|
|
@@ -2414,7 +2526,7 @@ var FileSystemGlobalState = class {
|
|
|
2414
2526
|
logger5().error({
|
|
2415
2527
|
msg: "failed to handle alarm",
|
|
2416
2528
|
actorId,
|
|
2417
|
-
error:
|
|
2529
|
+
error: _chunkELDFBXDVcjs.stringifyError.call(void 0, err)
|
|
2418
2530
|
});
|
|
2419
2531
|
}
|
|
2420
2532
|
}, delay);
|
|
@@ -2424,7 +2536,7 @@ var FileSystemGlobalState = class {
|
|
|
2424
2536
|
if (fsSync2.existsSync(tokenPath)) {
|
|
2425
2537
|
return fsSync2.readFileSync(tokenPath, "utf-8");
|
|
2426
2538
|
}
|
|
2427
|
-
const newToken =
|
|
2539
|
+
const newToken = _chunkJKOUXDK6cjs.generateRandomString.call(void 0, );
|
|
2428
2540
|
fsSync2.writeFileSync(tokenPath, newToken);
|
|
2429
2541
|
return newToken;
|
|
2430
2542
|
}
|
|
@@ -2486,10 +2598,13 @@ function createManagerInspectorRouter() {
|
|
|
2486
2598
|
});
|
|
2487
2599
|
return c.json(actors, 200);
|
|
2488
2600
|
} catch (error) {
|
|
2489
|
-
|
|
2601
|
+
_chunkZNWE3XBTcjs.inspectorLogger.call(void 0, ).error({
|
|
2602
|
+
msg: "Failed to fetch actors",
|
|
2603
|
+
error
|
|
2604
|
+
});
|
|
2490
2605
|
return c.json("Failed to fetch actors", 500);
|
|
2491
2606
|
}
|
|
2492
|
-
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json",
|
|
2607
|
+
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunk65SAIRRYcjs.CreateActorSchema), async (c) => {
|
|
2493
2608
|
const actor2 = await c.var.inspector.accessors.createActor(
|
|
2494
2609
|
c.req.valid("json")
|
|
2495
2610
|
);
|
|
@@ -2515,7 +2630,7 @@ var ManagerInspector = class {
|
|
|
2515
2630
|
|
|
2516
2631
|
constructor(accessors) {
|
|
2517
2632
|
this.accessors = accessors();
|
|
2518
|
-
|
|
2633
|
+
_chunkZNWE3XBTcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
|
|
2519
2634
|
}
|
|
2520
2635
|
};
|
|
2521
2636
|
|
|
@@ -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 (e5) {
|
|
2587
2708
|
return null;
|
|
@@ -2590,9 +2711,9 @@ var FileSystemManagerDriver = class {
|
|
|
2590
2711
|
};
|
|
2591
2712
|
});
|
|
2592
2713
|
}
|
|
2593
|
-
const inlineClient =
|
|
2714
|
+
const inlineClient = _chunkLMJHBF26cjs.createClientWithDriver.call(void 0,
|
|
2594
2715
|
this,
|
|
2595
|
-
|
|
2716
|
+
_chunkFDJ3AVNBcjs.ClientConfigSchema.parse({})
|
|
2596
2717
|
);
|
|
2597
2718
|
this.#actorDriver = this.#driverConfig.actor(
|
|
2598
2719
|
registryConfig,
|
|
@@ -2614,7 +2735,7 @@ var FileSystemManagerDriver = class {
|
|
|
2614
2735
|
async openWebSocket(path4, actorId, encoding, params, connId, connToken) {
|
|
2615
2736
|
const pathOnly = path4.split("?")[0];
|
|
2616
2737
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2617
|
-
if (normalizedPath ===
|
|
2738
|
+
if (normalizedPath === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
|
|
2618
2739
|
const wsHandler = await handleWebSocketConnect(
|
|
2619
2740
|
void 0,
|
|
2620
2741
|
this.#runConfig,
|
|
@@ -2626,7 +2747,7 @@ var FileSystemManagerDriver = class {
|
|
|
2626
2747
|
connToken
|
|
2627
2748
|
);
|
|
2628
2749
|
return new InlineWebSocketAdapter2(wsHandler);
|
|
2629
|
-
} else if (normalizedPath.startsWith(
|
|
2750
|
+
} else if (normalizedPath.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2630
2751
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2631
2752
|
void 0,
|
|
2632
2753
|
path4,
|
|
@@ -2649,7 +2770,7 @@ var FileSystemManagerDriver = class {
|
|
|
2649
2770
|
_invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
2650
2771
|
const pathOnly = path4.split("?")[0];
|
|
2651
2772
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2652
|
-
if (normalizedPath ===
|
|
2773
|
+
if (normalizedPath === _chunkJKOUXDK6cjs.PATH_CONNECT_WEBSOCKET) {
|
|
2653
2774
|
const wsHandler = await handleWebSocketConnect(
|
|
2654
2775
|
c.req.raw,
|
|
2655
2776
|
this.#runConfig,
|
|
@@ -2660,20 +2781,22 @@ var FileSystemManagerDriver = class {
|
|
|
2660
2781
|
connId,
|
|
2661
2782
|
connToken
|
|
2662
2783
|
);
|
|
2663
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2664
|
-
} else if (normalizedPath.startsWith(
|
|
2784
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
|
|
2785
|
+
} else if (normalizedPath.startsWith(_chunkJKOUXDK6cjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2665
2786
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2666
2787
|
c.req.raw,
|
|
2667
2788
|
path4,
|
|
2668
2789
|
this.#actorDriver,
|
|
2669
2790
|
actorId
|
|
2670
2791
|
);
|
|
2671
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2792
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
|
|
2672
2793
|
} else {
|
|
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
|
};
|
|
@@ -2794,13 +2926,13 @@ function chooseDefaultDriver(runConfig) {
|
|
|
2794
2926
|
return runConfig.driver;
|
|
2795
2927
|
}
|
|
2796
2928
|
if (runConfig.endpoint || runConfig.token || runConfig.runnerKind === "serverless") {
|
|
2797
|
-
|
|
2929
|
+
_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({
|
|
2798
2930
|
msg: "using rivet engine driver",
|
|
2799
2931
|
endpoint: runConfig.endpoint
|
|
2800
2932
|
});
|
|
2801
2933
|
return createEngineDriver();
|
|
2802
2934
|
}
|
|
2803
|
-
|
|
2935
|
+
_chunkJKOUXDK6cjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
|
|
2804
2936
|
return createFileSystemOrMemoryDriver(true);
|
|
2805
2937
|
}
|
|
2806
2938
|
|
|
@@ -2814,7 +2946,7 @@ var _promises2 = require('stream/promises');
|
|
|
2814
2946
|
|
|
2815
2947
|
// src/engine-process/log.ts
|
|
2816
2948
|
function logger6() {
|
|
2817
|
-
return
|
|
2949
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "engine-process");
|
|
2818
2950
|
}
|
|
2819
2951
|
|
|
2820
2952
|
// src/engine-process/mod.ts
|
|
@@ -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 = _zod.z.object({
|
|
|
3124
3267
|
actors: _zod.z.array(ActorSchema)
|
|
3125
3268
|
});
|
|
3126
3269
|
var ActorsCreateRequestSchema = _zod.z.object({
|
|
3270
|
+
datacenter: _zod.z.string().optional(),
|
|
3127
3271
|
name: _zod.z.string(),
|
|
3128
3272
|
runner_name_selector: _zod.z.string(),
|
|
3129
3273
|
crash_policy: _zod.z.string(),
|
|
@@ -3134,6 +3278,7 @@ var ActorsCreateResponseSchema = _zod.z.object({
|
|
|
3134
3278
|
actor: ActorSchema
|
|
3135
3279
|
});
|
|
3136
3280
|
var ActorsGetOrCreateRequestSchema = _zod.z.object({
|
|
3281
|
+
datacenter: _zod.z.string().optional(),
|
|
3137
3282
|
name: _zod.z.string(),
|
|
3138
3283
|
key: _zod.z.string(),
|
|
3139
3284
|
runner_name_selector: _zod.z.string(),
|
|
@@ -3147,6 +3292,76 @@ var ActorsGetOrCreateResponseSchema = _zod.z.object({
|
|
|
3147
3292
|
var ActorsDeleteResponseSchema = _zod.z.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 (0, _chunkKSRXX3Z4cjs.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(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
|
|
3310
|
+
encodingRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length);
|
|
3311
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3312
|
+
connParamsRaw = decodeURIComponent(
|
|
3313
|
+
protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3314
|
+
);
|
|
3315
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
|
|
3316
|
+
connIdRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
|
|
3317
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3318
|
+
connTokenRaw = protocol.substring(
|
|
3319
|
+
_chunkJKOUXDK6cjs.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,
|
|
@@ -3184,20 +3421,22 @@ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath)
|
|
|
3184
3421
|
if (protocols) {
|
|
3185
3422
|
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
3186
3423
|
for (const protocol of protocolList) {
|
|
3187
|
-
if (protocol.startsWith(
|
|
3188
|
-
target = protocol.substring(
|
|
3189
|
-
} else if (protocol.startsWith(
|
|
3190
|
-
actorId = protocol.substring(
|
|
3191
|
-
} else if (protocol.startsWith(
|
|
3192
|
-
encodingRaw = protocol.substring(
|
|
3193
|
-
} else if (protocol.startsWith(
|
|
3424
|
+
if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_TARGET)) {
|
|
3425
|
+
target = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_TARGET.length);
|
|
3426
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR)) {
|
|
3427
|
+
actorId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR.length);
|
|
3428
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
|
|
3429
|
+
encodingRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length);
|
|
3430
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3194
3431
|
connParamsRaw = decodeURIComponent(
|
|
3195
|
-
protocol.substring(
|
|
3432
|
+
protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3433
|
+
);
|
|
3434
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
|
|
3435
|
+
connIdRaw = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
|
|
3436
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3437
|
+
connTokenRaw = protocol.substring(
|
|
3438
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
|
|
3196
3439
|
);
|
|
3197
|
-
} else if (protocol.startsWith(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_ID)) {
|
|
3198
|
-
connIdRaw = protocol.substring(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_ID.length);
|
|
3199
|
-
} else if (protocol.startsWith(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3200
|
-
connTokenRaw = protocol.substring(_chunkPV22ZBDEcjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
3201
3440
|
}
|
|
3202
3441
|
}
|
|
3203
3442
|
}
|
|
@@ -3228,8 +3467,8 @@ async function handleWebSocketGateway(runConfig, managerDriver, c, strippedPath)
|
|
|
3228
3467
|
);
|
|
3229
3468
|
}
|
|
3230
3469
|
async function handleHttpGateway(managerDriver, c, next, strippedPath) {
|
|
3231
|
-
const target = c.req.header(
|
|
3232
|
-
const actorId = c.req.header(
|
|
3470
|
+
const target = c.req.header(_chunkJKOUXDK6cjs.HEADER_RIVET_TARGET);
|
|
3471
|
+
const actorId = c.req.header(_chunkJKOUXDK6cjs.HEADER_RIVET_ACTOR);
|
|
3233
3472
|
if (target !== "actor") {
|
|
3234
3473
|
return next();
|
|
3235
3474
|
}
|
|
@@ -3243,8 +3482,8 @@ async function handleHttpGateway(managerDriver, c, next, strippedPath) {
|
|
|
3243
3482
|
method: c.req.method
|
|
3244
3483
|
});
|
|
3245
3484
|
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
3246
|
-
proxyHeaders.delete(
|
|
3247
|
-
proxyHeaders.delete(
|
|
3485
|
+
proxyHeaders.delete(_chunkJKOUXDK6cjs.HEADER_RIVET_TARGET);
|
|
3486
|
+
proxyHeaders.delete(_chunkJKOUXDK6cjs.HEADER_RIVET_ACTOR);
|
|
3248
3487
|
const url = new URL(c.req.url);
|
|
3249
3488
|
const proxyUrl = new URL(`http://actor${strippedPath}${url.search}`);
|
|
3250
3489
|
const proxyRequest = new Request(proxyUrl, {
|
|
@@ -3256,13 +3495,80 @@ 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 {
|
|
3262
3568
|
promise: serverWsPromise,
|
|
3263
3569
|
resolve: serverWsResolve,
|
|
3264
3570
|
reject: serverWsReject
|
|
3265
|
-
} =
|
|
3571
|
+
} = _chunkELDFBXDVcjs.promiseWithResolvers.call(void 0, );
|
|
3266
3572
|
try {
|
|
3267
3573
|
logger().debug({ msg: "awaiting client websocket promise" });
|
|
3268
3574
|
const ws = await clientWsPromise;
|
|
@@ -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
|
|
|
3433
3746
|
var ServerlessStartHeadersSchema = _zod.z.object({
|
|
3434
|
-
endpoint: _zod.z.string({
|
|
3747
|
+
endpoint: _zod.z.string({
|
|
3748
|
+
required_error: "x-rivet-endpoint header is required"
|
|
3749
|
+
}),
|
|
3435
3750
|
token: _zod.z.string({ invalid_type_error: "x-rivet-token header must be a string" }).optional(),
|
|
3436
3751
|
totalSlots: _zod.z.coerce.number({
|
|
3437
3752
|
invalid_type_error: "x-rivet-total-slots header must be a number"
|
|
@@ -3440,7 +3755,7 @@ var ServerlessStartHeadersSchema = _zod.z.object({
|
|
|
3440
3755
|
required_error: "x-rivet-runner-name header is required"
|
|
3441
3756
|
}),
|
|
3442
3757
|
namespace: _zod.z.string({
|
|
3443
|
-
required_error: "x-rivet-namespace-
|
|
3758
|
+
required_error: "x-rivet-namespace-name header is required"
|
|
3444
3759
|
})
|
|
3445
3760
|
});
|
|
3446
3761
|
|
|
@@ -3492,7 +3807,7 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, driverCon
|
|
|
3492
3807
|
} else if (runConfig.runnerKind === "normal") {
|
|
3493
3808
|
addManagerRoutes(registryConfig, runConfig, managerDriver, router);
|
|
3494
3809
|
} else {
|
|
3495
|
-
|
|
3810
|
+
_chunkELDFBXDVcjs.assertUnreachable.call(void 0, runConfig.runnerKind);
|
|
3496
3811
|
}
|
|
3497
3812
|
router.notFound(handleRouteNotFound);
|
|
3498
3813
|
router.onError(handleRouteError);
|
|
@@ -3512,7 +3827,7 @@ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDri
|
|
|
3512
3827
|
token: _nullishCoalesce(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 (0, _chunkKSRXX3Z4cjs.InvalidRequest)(
|
|
@@ -3553,13 +3868,13 @@ function addServerlessRoutes(driverConfig, registryConfig, runConfig, managerDri
|
|
|
3553
3868
|
}
|
|
3554
3869
|
function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
3555
3870
|
var _a;
|
|
3556
|
-
if (
|
|
3871
|
+
if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
|
|
3557
3872
|
if (!managerDriver.inspector) {
|
|
3558
3873
|
throw new (0, _chunkKSRXX3Z4cjs.Unsupported)("inspector");
|
|
3559
3874
|
}
|
|
3560
3875
|
router.route(
|
|
3561
3876
|
"/inspect",
|
|
3562
|
-
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(
|
|
3877
|
+
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkZNWE3XBTcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
|
|
3563
3878
|
c.set("inspector", managerDriver.inspector);
|
|
3564
3879
|
return next();
|
|
3565
3880
|
}).route("/", createManagerInspectorRouter())
|
|
@@ -3578,7 +3893,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3578
3893
|
path: "/actors",
|
|
3579
3894
|
request: {
|
|
3580
3895
|
query: _zod.z.object({
|
|
3581
|
-
name: _zod.z.string(),
|
|
3896
|
+
name: _zod.z.string().optional(),
|
|
3582
3897
|
actor_ids: _zod.z.string().optional(),
|
|
3583
3898
|
key: _zod.z.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,10 +4080,12 @@ 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
|
-
const err =
|
|
4088
|
+
const err = _chunkELDFBXDVcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
|
|
3727
4089
|
response = { err };
|
|
3728
4090
|
}
|
|
3729
4091
|
return c.body(cbor4.encode(response));
|
|
@@ -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
|
-
_invariant2.default.call(void 0,
|
|
4096
|
+
_invariant2.default.call(void 0,
|
|
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*/);
|
|
@@ -3743,29 +4108,31 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3743
4108
|
let connId;
|
|
3744
4109
|
let connToken;
|
|
3745
4110
|
for (const protocol of protocols) {
|
|
3746
|
-
if (protocol.startsWith(
|
|
3747
|
-
actorId = protocol.substring(
|
|
3748
|
-
} else if (protocol.startsWith(
|
|
4111
|
+
if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR)) {
|
|
4112
|
+
actorId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_ACTOR.length);
|
|
4113
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING)) {
|
|
3749
4114
|
encoding = protocol.substring(
|
|
3750
|
-
|
|
4115
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_ENCODING.length
|
|
3751
4116
|
);
|
|
3752
|
-
} else if (protocol.startsWith(
|
|
4117
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_TRANSPORT)) {
|
|
3753
4118
|
transport = protocol.substring(
|
|
3754
|
-
|
|
4119
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_TRANSPORT.length
|
|
3755
4120
|
);
|
|
3756
|
-
} else if (protocol.startsWith(
|
|
4121
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_PATH)) {
|
|
3757
4122
|
path4 = decodeURIComponent(
|
|
3758
|
-
protocol.substring(
|
|
4123
|
+
protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_PATH.length)
|
|
3759
4124
|
);
|
|
3760
|
-
} else if (protocol.startsWith(
|
|
4125
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3761
4126
|
const paramsRaw = decodeURIComponent(
|
|
3762
|
-
protocol.substring(
|
|
4127
|
+
protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3763
4128
|
);
|
|
3764
4129
|
params = JSON.parse(paramsRaw);
|
|
3765
|
-
} else if (protocol.startsWith(
|
|
3766
|
-
connId = protocol.substring(
|
|
3767
|
-
} else if (protocol.startsWith(
|
|
3768
|
-
connToken = protocol.substring(
|
|
4130
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID)) {
|
|
4131
|
+
connId = protocol.substring(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_ID.length);
|
|
4132
|
+
} else if (protocol.startsWith(_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
4133
|
+
connToken = protocol.substring(
|
|
4134
|
+
_chunkJKOUXDK6cjs.WS_PROTOCOL_CONN_TOKEN.length
|
|
4135
|
+
);
|
|
3769
4136
|
}
|
|
3770
4137
|
}
|
|
3771
4138
|
logger().debug({
|
|
@@ -3785,10 +4152,10 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3785
4152
|
connToken
|
|
3786
4153
|
);
|
|
3787
4154
|
return await createTestWebSocketProxy(clientWsPromise);
|
|
3788
|
-
})(c,
|
|
4155
|
+
})(c, _chunkELDFBXDVcjs.noopNext.call(void 0, ));
|
|
3789
4156
|
});
|
|
3790
4157
|
router.all(".test/inline-driver/send-request/*", async (c) => {
|
|
3791
|
-
const actorId = c.req.header(
|
|
4158
|
+
const actorId = c.req.header(_chunkJKOUXDK6cjs.HEADER_ACTOR_ID);
|
|
3792
4159
|
if (!actorId) {
|
|
3793
4160
|
return c.text("Missing required headers", 400);
|
|
3794
4161
|
}
|
|
@@ -3815,9 +4182,9 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3815
4182
|
} catch (error) {
|
|
3816
4183
|
logger().error({
|
|
3817
4184
|
msg: "error in test inline raw http",
|
|
3818
|
-
error:
|
|
4185
|
+
error: _chunkELDFBXDVcjs.stringifyError.call(void 0, error)
|
|
3819
4186
|
});
|
|
3820
|
-
const err =
|
|
4187
|
+
const err = _chunkELDFBXDVcjs.deconstructError.call(void 0, error, logger(), {}, true);
|
|
3821
4188
|
return c.json(
|
|
3822
4189
|
{
|
|
3823
4190
|
error: {
|
|
@@ -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();
|
|
@@ -3859,7 +4229,7 @@ function addManagerRoutes(registryConfig, runConfig, managerDriver, router) {
|
|
|
3859
4229
|
} catch (error) {
|
|
3860
4230
|
logger().error({
|
|
3861
4231
|
msg: "error forcing disconnect",
|
|
3862
|
-
error:
|
|
4232
|
+
error: _chunkELDFBXDVcjs.stringifyError.call(void 0, error)
|
|
3863
4233
|
});
|
|
3864
4234
|
return c.text(`Error: ${error}`, 500);
|
|
3865
4235
|
}
|
|
@@ -3880,7 +4250,7 @@ function createApiActor(actor2, runnerName = "default") {
|
|
|
3880
4250
|
return {
|
|
3881
4251
|
actor_id: actor2.actorId,
|
|
3882
4252
|
name: actor2.name,
|
|
3883
|
-
key:
|
|
4253
|
+
key: _chunkLMJHBF26cjs.serializeActorKey.call(void 0, actor2.key),
|
|
3884
4254
|
namespace_id: "default",
|
|
3885
4255
|
// Assert default namespace
|
|
3886
4256
|
runner_name_selector: runnerName,
|
|
@@ -3894,7 +4264,7 @@ function createApiActor(actor2, runnerName = "default") {
|
|
|
3894
4264
|
|
|
3895
4265
|
// src/registry/log.ts
|
|
3896
4266
|
function logger7() {
|
|
3897
|
-
return
|
|
4267
|
+
return _chunkHN7UXCYQcjs.getLogger.call(void 0, "registry");
|
|
3898
4268
|
}
|
|
3899
4269
|
|
|
3900
4270
|
// src/registry/serve.ts
|
|
@@ -3954,7 +4324,7 @@ var Registry = class {
|
|
|
3954
4324
|
*/
|
|
3955
4325
|
start(inputConfig) {
|
|
3956
4326
|
var _a, _b, _c;
|
|
3957
|
-
const config2 =
|
|
4327
|
+
const config2 = _chunkFDJ3AVNBcjs.RunnerConfigSchema.parse(inputConfig);
|
|
3958
4328
|
if (config2.autoConfigureServerless && config2.runnerKind !== "serverless") {
|
|
3959
4329
|
throw new Error(
|
|
3960
4330
|
"autoConfigureServerless can only be configured when runnerKind is 'serverless'"
|
|
@@ -3992,9 +4362,9 @@ var Registry = class {
|
|
|
3992
4362
|
config2.disableActorDriver = true;
|
|
3993
4363
|
}
|
|
3994
4364
|
if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
|
|
3995
|
-
|
|
4365
|
+
_chunkHN7UXCYQcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
|
|
3996
4366
|
} else {
|
|
3997
|
-
|
|
4367
|
+
_chunkHN7UXCYQcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
|
|
3998
4368
|
}
|
|
3999
4369
|
const driver = chooseDefaultDriver(config2);
|
|
4000
4370
|
if (driver.name === "engine") {
|
|
@@ -4014,8 +4384,8 @@ var Registry = class {
|
|
|
4014
4384
|
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
4015
4385
|
}
|
|
4016
4386
|
const managerDriver = driver.manager(this.#config, config2);
|
|
4017
|
-
|
|
4018
|
-
const client =
|
|
4387
|
+
_chunkZNWE3XBTcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
|
|
4388
|
+
const client = _chunkLMJHBF26cjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
4019
4389
|
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
4020
4390
|
logger7().info({
|
|
4021
4391
|
msg: "rivetkit ready",
|
|
@@ -4023,17 +4393,22 @@ var Registry = class {
|
|
|
4023
4393
|
definitions: Object.keys(this.#config.use).length,
|
|
4024
4394
|
...driverLog
|
|
4025
4395
|
});
|
|
4026
|
-
if (
|
|
4027
|
-
logger7().info({
|
|
4396
|
+
if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
4397
|
+
logger7().info({
|
|
4398
|
+
msg: "inspector ready",
|
|
4399
|
+
url: _chunkZNWE3XBTcjs.getInspectorUrl.call(void 0, config2)
|
|
4400
|
+
});
|
|
4028
4401
|
}
|
|
4029
4402
|
if (!config2.noWelcome) {
|
|
4030
4403
|
const displayInfo = managerDriver.displayInformation();
|
|
4031
4404
|
console.log();
|
|
4032
|
-
console.log(` RivetKit ${
|
|
4405
|
+
console.log(` RivetKit ${_chunkELDFBXDVcjs.package_default.version} (${displayInfo.name})`);
|
|
4033
4406
|
if (!config2.disableDefaultServer) {
|
|
4034
|
-
console.log(` - Endpoint: ${
|
|
4407
|
+
console.log(` - Endpoint: ${_chunkLMJHBF26cjs.getEndpoint.call(void 0, 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));
|
|
@@ -4043,8 +4418,8 @@ var Registry = class {
|
|
|
4043
4418
|
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
4044
4419
|
console.log(` - ${k}:${padding}${v}`);
|
|
4045
4420
|
}
|
|
4046
|
-
if (
|
|
4047
|
-
console.log(` - Inspector: ${
|
|
4421
|
+
if (_chunkZNWE3XBTcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
4422
|
+
console.log(` - Inspector: ${_chunkZNWE3XBTcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
4048
4423
|
}
|
|
4049
4424
|
console.log();
|
|
4050
4425
|
}
|
|
@@ -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 = {
|
|
@@ -4107,7 +4488,7 @@ async function configureServerlessRunner(config2) {
|
|
|
4107
4488
|
msg: "fetching datacenters",
|
|
4108
4489
|
endpoint: config2.endpoint
|
|
4109
4490
|
});
|
|
4110
|
-
const dcsRes = await
|
|
4491
|
+
const dcsRes = await _chunkLMJHBF26cjs.getDatacenters.call(void 0, clientConfig);
|
|
4111
4492
|
logger7().debug({
|
|
4112
4493
|
msg: "configuring serverless runner",
|
|
4113
4494
|
runnerName: config2.runnerName,
|
|
@@ -4125,7 +4506,7 @@ async function configureServerlessRunner(config2) {
|
|
|
4125
4506
|
},
|
|
4126
4507
|
metadata: _nullishCoalesce(customConfig.metadata, () => ( {}))
|
|
4127
4508
|
};
|
|
4128
|
-
await
|
|
4509
|
+
await _chunkLMJHBF26cjs.updateRunnerConfig.call(void 0, clientConfig, config2.runnerName, {
|
|
4129
4510
|
datacenters: Object.fromEntries(
|
|
4130
4511
|
dcsRes.datacenters.map((dc) => [dc.name, serverlessConfig])
|
|
4131
4512
|
)
|
|
@@ -4163,4 +4544,4 @@ function setup(input) {
|
|
|
4163
4544
|
|
|
4164
4545
|
exports.handleWebSocketConnect = handleWebSocketConnect; exports.handleRawWebSocketHandler = handleRawWebSocketHandler; exports.RegistryConfigSchema = RegistryConfigSchema; exports.createActorRouter = createActorRouter; exports.actor = actor; exports.InlineWebSocketAdapter2 = InlineWebSocketAdapter2; exports.createEngineDriver = createEngineDriver; exports.createFileSystemOrMemoryDriver = createFileSystemOrMemoryDriver; exports.createFileSystemDriver = createFileSystemDriver; exports.createMemoryDriver = createMemoryDriver; exports.createManagerRouter = createManagerRouter; exports.Registry = Registry; exports.setup = setup;
|
|
4165
4546
|
//! These configs configs hold anything that's not platform-specific about running actors.
|
|
4166
|
-
//# sourceMappingURL=chunk-
|
|
4547
|
+
//# sourceMappingURL=chunk-M5BHNJHB.cjs.map
|