rivetkit 2.0.6 → 2.0.7-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/schemas/actor-persist/v1.ts +0 -6
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.cts +28 -0
- package/dist/tsup/actor-router-consts-B3Lu87yJ.d.ts +28 -0
- package/dist/tsup/{chunk-MRRT2CZD.cjs → chunk-3MBP4WNC.cjs} +7 -7
- package/dist/tsup/{chunk-MRRT2CZD.cjs.map → chunk-3MBP4WNC.cjs.map} +1 -1
- package/dist/tsup/{chunk-TWGATZ3X.cjs → chunk-3Y45CIF4.cjs} +922 -872
- package/dist/tsup/chunk-3Y45CIF4.cjs.map +1 -0
- package/dist/tsup/chunk-4GP7BZSR.js +102 -0
- package/dist/tsup/chunk-4GP7BZSR.js.map +1 -0
- package/dist/tsup/{chunk-UFWAK3X2.cjs → chunk-5ZOHIKWG.cjs} +660 -385
- package/dist/tsup/chunk-5ZOHIKWG.cjs.map +1 -0
- package/dist/tsup/{chunk-5JBFVV4C.cjs → chunk-6EUWRXLT.cjs} +21 -7
- package/dist/tsup/chunk-6EUWRXLT.cjs.map +1 -0
- package/dist/tsup/{chunk-UTI5NCES.cjs → chunk-6OVKCDSH.cjs} +6 -6
- package/dist/tsup/{chunk-UTI5NCES.cjs.map → chunk-6OVKCDSH.cjs.map} +1 -1
- package/dist/tsup/{chunk-VPV4MWXR.js → chunk-7N56ZUC7.js} +3 -3
- package/dist/tsup/{chunk-DIAYNQTE.cjs → chunk-B3TLRM4Q.cjs} +12 -12
- package/dist/tsup/{chunk-DIAYNQTE.cjs.map → chunk-B3TLRM4Q.cjs.map} +1 -1
- package/dist/tsup/{chunk-4CKHQRXG.js → chunk-BW5DPM6Z.js} +515 -240
- package/dist/tsup/chunk-BW5DPM6Z.js.map +1 -0
- package/dist/tsup/{chunk-NTCUGYSD.cjs → chunk-DFS77KAA.cjs} +34 -31
- package/dist/tsup/chunk-DFS77KAA.cjs.map +1 -0
- package/dist/tsup/{chunk-VCEHU56K.js → chunk-E4UVJKSV.js} +2 -2
- package/dist/tsup/chunk-G4ABMAQY.cjs +102 -0
- package/dist/tsup/chunk-G4ABMAQY.cjs.map +1 -0
- package/dist/tsup/{chunk-ZYLTS2EM.js → chunk-GZVBFXBI.js} +2 -2
- package/dist/tsup/{chunk-W6LN7AF5.js → chunk-HPT3I7UU.js} +866 -816
- package/dist/tsup/chunk-HPT3I7UU.js.map +1 -0
- package/dist/tsup/{chunk-7OUKNSTU.js → chunk-JD54PXWP.js} +17 -14
- package/dist/tsup/chunk-JD54PXWP.js.map +1 -0
- package/dist/tsup/{chunk-KG3C7MKR.cjs → chunk-K4ENQCC4.cjs} +3 -3
- package/dist/tsup/{chunk-KG3C7MKR.cjs.map → chunk-K4ENQCC4.cjs.map} +1 -1
- package/dist/tsup/{chunk-WC2PSJWN.js → chunk-PUSQNDJG.js} +2 -2
- package/dist/tsup/{chunk-RGQR2J7S.js → chunk-RVP5RUSC.js} +20 -6
- package/dist/tsup/chunk-RVP5RUSC.js.map +1 -0
- package/dist/tsup/{chunk-TCUI5JFE.cjs → chunk-SAZCNSVY.cjs} +45 -18
- package/dist/tsup/chunk-SAZCNSVY.cjs.map +1 -0
- package/dist/tsup/{chunk-G75SVQON.js → chunk-SBKRVQS2.js} +9 -5
- package/dist/tsup/chunk-SBKRVQS2.js.map +1 -0
- package/dist/tsup/{chunk-6P6RA47N.cjs → chunk-TZGUSEIJ.cjs} +14 -10
- package/dist/tsup/chunk-TZGUSEIJ.cjs.map +1 -0
- package/dist/tsup/{chunk-2K3JMDAN.js → chunk-YQ4XQYPM.js} +40 -13
- package/dist/tsup/chunk-YQ4XQYPM.js.map +1 -0
- package/dist/tsup/client/mod.cjs +9 -9
- package/dist/tsup/client/mod.d.cts +7 -8
- package/dist/tsup/client/mod.d.ts +7 -8
- package/dist/tsup/client/mod.js +8 -8
- package/dist/tsup/common/log.cjs +3 -3
- package/dist/tsup/common/log.js +2 -2
- package/dist/tsup/common/websocket.cjs +4 -4
- package/dist/tsup/common/websocket.js +3 -3
- package/dist/tsup/{connection-BLemxi4f.d.ts → conn-DCSQgIlw.d.ts} +1605 -1353
- package/dist/tsup/{connection-CpDIydXf.d.cts → conn-DdzHTm2E.d.cts} +1605 -1353
- package/dist/tsup/driver-helpers/mod.cjs +31 -5
- package/dist/tsup/driver-helpers/mod.cjs.map +1 -1
- package/dist/tsup/driver-helpers/mod.d.cts +7 -8
- package/dist/tsup/driver-helpers/mod.d.ts +7 -8
- package/dist/tsup/driver-helpers/mod.js +33 -7
- package/dist/tsup/driver-test-suite/mod.cjs +317 -222
- package/dist/tsup/driver-test-suite/mod.cjs.map +1 -1
- package/dist/tsup/driver-test-suite/mod.d.cts +7 -7
- package/dist/tsup/driver-test-suite/mod.d.ts +7 -7
- package/dist/tsup/driver-test-suite/mod.js +582 -487
- package/dist/tsup/driver-test-suite/mod.js.map +1 -1
- package/dist/tsup/inspector/mod.cjs +16 -6
- package/dist/tsup/inspector/mod.cjs.map +1 -1
- package/dist/tsup/inspector/mod.d.cts +34 -7
- package/dist/tsup/inspector/mod.d.ts +34 -7
- package/dist/tsup/inspector/mod.js +17 -7
- package/dist/tsup/mod.cjs +10 -20
- package/dist/tsup/mod.cjs.map +1 -1
- package/dist/tsup/mod.d.cts +9 -7
- package/dist/tsup/mod.d.ts +9 -7
- package/dist/tsup/mod.js +9 -19
- package/dist/tsup/test/mod.cjs +11 -11
- package/dist/tsup/test/mod.d.cts +6 -7
- package/dist/tsup/test/mod.d.ts +6 -7
- package/dist/tsup/test/mod.js +10 -10
- package/dist/tsup/utils.cjs +4 -2
- package/dist/tsup/utils.cjs.map +1 -1
- package/dist/tsup/utils.d.cts +11 -1
- package/dist/tsup/utils.d.ts +11 -1
- package/dist/tsup/utils.js +3 -1
- package/package.json +8 -4
- package/src/actor/action.ts +1 -1
- package/src/actor/config.ts +1 -1
- package/src/actor/conn-drivers.ts +205 -0
- package/src/actor/conn-socket.ts +6 -0
- package/src/actor/{connection.ts → conn.ts} +78 -84
- package/src/actor/context.ts +1 -1
- package/src/actor/driver.ts +4 -43
- package/src/actor/instance.ts +162 -86
- package/src/actor/mod.ts +1 -11
- package/src/actor/persisted.ts +2 -5
- package/src/actor/protocol/old.ts +1 -1
- package/src/actor/router-endpoints.ts +142 -106
- package/src/actor/router.ts +81 -45
- package/src/actor/utils.ts +5 -1
- package/src/client/actor-conn.ts +154 -23
- package/src/client/client.ts +1 -1
- package/src/client/config.ts +7 -0
- package/src/common/actor-router-consts.ts +29 -8
- package/src/common/router.ts +2 -1
- package/src/common/versioned-data.ts +5 -5
- package/src/driver-helpers/mod.ts +14 -1
- package/src/driver-test-suite/mod.ts +11 -2
- package/src/driver-test-suite/test-inline-client-driver.ts +36 -18
- package/src/driver-test-suite/tests/actor-conn-state.ts +66 -22
- package/src/driver-test-suite/tests/actor-conn.ts +65 -126
- package/src/driver-test-suite/tests/actor-reconnect.ts +160 -0
- package/src/driver-test-suite/tests/actor-sleep.ts +0 -1
- package/src/driver-test-suite/tests/raw-websocket.ts +0 -35
- package/src/driver-test-suite/utils.ts +3 -3
- package/src/drivers/default.ts +8 -7
- package/src/drivers/engine/actor-driver.ts +53 -31
- package/src/drivers/engine/config.ts +4 -0
- package/src/drivers/file-system/actor.ts +0 -6
- package/src/drivers/file-system/global-state.ts +3 -14
- package/src/drivers/file-system/manager.ts +12 -8
- package/src/inspector/actor.ts +4 -3
- package/src/inspector/config.ts +10 -1
- package/src/inspector/mod.ts +1 -0
- package/src/inspector/utils.ts +23 -4
- package/src/manager/driver.ts +11 -1
- package/src/manager/gateway.ts +407 -0
- package/src/manager/router.ts +269 -468
- package/src/manager-api/actors.ts +61 -0
- package/src/manager-api/common.ts +4 -0
- package/src/mod.ts +1 -1
- package/src/registry/mod.ts +119 -10
- package/src/remote-manager-driver/actor-http-client.ts +30 -19
- package/src/remote-manager-driver/actor-websocket-client.ts +43 -16
- package/src/remote-manager-driver/api-endpoints.ts +19 -21
- package/src/remote-manager-driver/api-utils.ts +10 -1
- package/src/remote-manager-driver/mod.ts +51 -48
- package/src/remote-manager-driver/ws-proxy.ts +2 -9
- package/src/test/mod.ts +6 -2
- package/src/utils.ts +21 -2
- package/dist/tsup/actor-router-consts-BK6arfy8.d.cts +0 -17
- package/dist/tsup/actor-router-consts-BK6arfy8.d.ts +0 -17
- package/dist/tsup/chunk-2K3JMDAN.js.map +0 -1
- package/dist/tsup/chunk-42I3OZ3Q.js +0 -15
- package/dist/tsup/chunk-42I3OZ3Q.js.map +0 -1
- package/dist/tsup/chunk-4CKHQRXG.js.map +0 -1
- package/dist/tsup/chunk-5JBFVV4C.cjs.map +0 -1
- package/dist/tsup/chunk-6P6RA47N.cjs.map +0 -1
- package/dist/tsup/chunk-7OUKNSTU.js.map +0 -1
- package/dist/tsup/chunk-G75SVQON.js.map +0 -1
- package/dist/tsup/chunk-KUPQZYUQ.cjs +0 -15
- package/dist/tsup/chunk-KUPQZYUQ.cjs.map +0 -1
- package/dist/tsup/chunk-NTCUGYSD.cjs.map +0 -1
- package/dist/tsup/chunk-RGQR2J7S.js.map +0 -1
- package/dist/tsup/chunk-TCUI5JFE.cjs.map +0 -1
- package/dist/tsup/chunk-TWGATZ3X.cjs.map +0 -1
- package/dist/tsup/chunk-UFWAK3X2.cjs.map +0 -1
- package/dist/tsup/chunk-W6LN7AF5.js.map +0 -1
- package/dist/tsup/common-CXCe7s6i.d.cts +0 -218
- package/dist/tsup/common-CXCe7s6i.d.ts +0 -218
- package/src/actor/generic-conn-driver.ts +0 -246
- package/src/common/fake-event-source.ts +0 -267
- package/src/manager-api/routes/actors-create.ts +0 -16
- package/src/manager-api/routes/actors-delete.ts +0 -4
- package/src/manager-api/routes/actors-get-by-id.ts +0 -7
- package/src/manager-api/routes/actors-get-or-create-by-id.ts +0 -29
- package/src/manager-api/routes/actors-get.ts +0 -7
- package/src/manager-api/routes/common.ts +0 -18
- /package/dist/tsup/{chunk-VPV4MWXR.js.map → chunk-7N56ZUC7.js.map} +0 -0
- /package/dist/tsup/{chunk-VCEHU56K.js.map → chunk-E4UVJKSV.js.map} +0 -0
- /package/dist/tsup/{chunk-ZYLTS2EM.js.map → chunk-GZVBFXBI.js.map} +0 -0
- /package/dist/tsup/{chunk-WC2PSJWN.js.map → chunk-PUSQNDJG.js.map} +0 -0
|
@@ -1,22 +1,23 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class; var _class2;
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } var _class; var _class2;
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
var _chunkG4ABMAQYcjs = require('./chunk-G4ABMAQY.cjs');
|
|
7
8
|
|
|
8
9
|
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
13
|
-
var _chunkUFWAK3X2cjs = require('./chunk-UFWAK3X2.cjs');
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var _chunkDIAYNQTEcjs = require('./chunk-DIAYNQTE.cjs');
|
|
17
16
|
|
|
17
|
+
var _chunk5ZOHIKWGcjs = require('./chunk-5ZOHIKWG.cjs');
|
|
18
18
|
|
|
19
19
|
|
|
20
|
+
var _chunkB3TLRM4Qcjs = require('./chunk-B3TLRM4Q.cjs');
|
|
20
21
|
|
|
21
22
|
|
|
22
23
|
|
|
@@ -24,10 +25,10 @@ var _chunkDIAYNQTEcjs = require('./chunk-DIAYNQTE.cjs');
|
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
var _chunkNTCUGYSDcjs = require('./chunk-NTCUGYSD.cjs');
|
|
28
28
|
|
|
29
29
|
|
|
30
30
|
|
|
31
|
+
var _chunkDFS77KAAcjs = require('./chunk-DFS77KAA.cjs');
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
|
|
@@ -42,12 +43,10 @@ var _chunkNTCUGYSDcjs = require('./chunk-NTCUGYSD.cjs');
|
|
|
42
43
|
|
|
43
44
|
|
|
44
45
|
|
|
45
|
-
var _chunkTCUI5JFEcjs = require('./chunk-TCUI5JFE.cjs');
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
|
|
50
|
-
var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
|
|
51
50
|
|
|
52
51
|
|
|
53
52
|
|
|
@@ -55,11 +54,24 @@ var _chunkMRRT2CZDcjs = require('./chunk-MRRT2CZD.cjs');
|
|
|
55
54
|
|
|
56
55
|
|
|
57
56
|
|
|
57
|
+
var _chunkSAZCNSVYcjs = require('./chunk-SAZCNSVY.cjs');
|
|
58
58
|
|
|
59
|
-
var _chunk5JBFVV4Ccjs = require('./chunk-5JBFVV4C.cjs');
|
|
60
59
|
|
|
61
60
|
|
|
62
61
|
|
|
62
|
+
var _chunk3MBP4WNCcjs = require('./chunk-3MBP4WNC.cjs');
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
var _chunk6EUWRXLTcjs = require('./chunk-6EUWRXLT.cjs');
|
|
73
|
+
|
|
74
|
+
|
|
63
75
|
|
|
64
76
|
|
|
65
77
|
|
|
@@ -127,155 +139,6 @@ var ActorConfigSchema = _zod.z.object({
|
|
|
127
139
|
}
|
|
128
140
|
);
|
|
129
141
|
|
|
130
|
-
// src/actor/generic-conn-driver.ts
|
|
131
|
-
var GenericConnGlobalState = (_class = class {constructor() { _class.prototype.__init.call(this);_class.prototype.__init2.call(this); }
|
|
132
|
-
__init() {this.websockets = /* @__PURE__ */ new Map()}
|
|
133
|
-
__init2() {this.sseStreams = /* @__PURE__ */ new Map()}
|
|
134
|
-
}, _class);
|
|
135
|
-
function createGenericConnDrivers(globalState) {
|
|
136
|
-
return {
|
|
137
|
-
[_chunkUFWAK3X2cjs.CONNECTION_DRIVER_WEBSOCKET]: createGenericWebSocketDriver(globalState),
|
|
138
|
-
[_chunkUFWAK3X2cjs.CONNECTION_DRIVER_SSE]: createGenericSseDriver(globalState),
|
|
139
|
-
[_chunkUFWAK3X2cjs.CONNECTION_DRIVER_HTTP]: createGenericHttpDriver()
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
function createGenericWebSocketDriver(globalState) {
|
|
143
|
-
return {
|
|
144
|
-
sendMessage: (actor2, conn, state, message) => {
|
|
145
|
-
const ws = globalState.websockets.get(conn.id);
|
|
146
|
-
if (!ws) {
|
|
147
|
-
actor2.rLog.warn({
|
|
148
|
-
msg: "missing ws for sendMessage",
|
|
149
|
-
actorId: actor2.id,
|
|
150
|
-
connId: conn.id,
|
|
151
|
-
totalCount: globalState.websockets.size
|
|
152
|
-
});
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const serialized = message.serialize(state.encoding);
|
|
156
|
-
actor2.rLog.debug({
|
|
157
|
-
msg: "sending websocket message",
|
|
158
|
-
encoding: state.encoding,
|
|
159
|
-
dataType: typeof serialized,
|
|
160
|
-
isUint8Array: serialized instanceof Uint8Array,
|
|
161
|
-
isArrayBuffer: serialized instanceof ArrayBuffer,
|
|
162
|
-
dataLength: serialized.byteLength || serialized.length
|
|
163
|
-
});
|
|
164
|
-
if (serialized instanceof Uint8Array) {
|
|
165
|
-
const buffer = serialized.buffer.slice(
|
|
166
|
-
serialized.byteOffset,
|
|
167
|
-
serialized.byteOffset + serialized.byteLength
|
|
168
|
-
);
|
|
169
|
-
if (buffer instanceof SharedArrayBuffer) {
|
|
170
|
-
const arrayBuffer = new ArrayBuffer(buffer.byteLength);
|
|
171
|
-
new Uint8Array(arrayBuffer).set(new Uint8Array(buffer));
|
|
172
|
-
actor2.rLog.debug({
|
|
173
|
-
msg: "converted SharedArrayBuffer to ArrayBuffer",
|
|
174
|
-
byteLength: arrayBuffer.byteLength
|
|
175
|
-
});
|
|
176
|
-
ws.send(arrayBuffer);
|
|
177
|
-
} else {
|
|
178
|
-
actor2.rLog.debug({
|
|
179
|
-
msg: "sending ArrayBuffer",
|
|
180
|
-
byteLength: buffer.byteLength
|
|
181
|
-
});
|
|
182
|
-
ws.send(buffer);
|
|
183
|
-
}
|
|
184
|
-
} else {
|
|
185
|
-
actor2.rLog.debug({
|
|
186
|
-
msg: "sending string data",
|
|
187
|
-
length: serialized.length
|
|
188
|
-
});
|
|
189
|
-
ws.send(serialized);
|
|
190
|
-
}
|
|
191
|
-
},
|
|
192
|
-
disconnect: async (actor2, conn, _state, reason) => {
|
|
193
|
-
const ws = globalState.websockets.get(conn.id);
|
|
194
|
-
if (!ws) {
|
|
195
|
-
actor2.rLog.warn({
|
|
196
|
-
msg: "missing ws for disconnect",
|
|
197
|
-
actorId: actor2.id,
|
|
198
|
-
connId: conn.id,
|
|
199
|
-
totalCount: globalState.websockets.size
|
|
200
|
-
});
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
const raw = ws.raw;
|
|
204
|
-
if (!raw) {
|
|
205
|
-
actor2.rLog.warn({ msg: "ws.raw does not exist" });
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
const { promise, resolve } = Promise.withResolvers();
|
|
209
|
-
raw.addEventListener("close", () => resolve());
|
|
210
|
-
ws.close(1e3, reason);
|
|
211
|
-
await promise;
|
|
212
|
-
},
|
|
213
|
-
getConnectionReadyState: (actor2, conn) => {
|
|
214
|
-
const ws = globalState.websockets.get(conn.id);
|
|
215
|
-
if (!ws) {
|
|
216
|
-
actor2.rLog.warn({
|
|
217
|
-
msg: "missing ws for getConnectionReadyState",
|
|
218
|
-
connId: conn.id
|
|
219
|
-
});
|
|
220
|
-
return void 0;
|
|
221
|
-
}
|
|
222
|
-
const raw = ws.raw;
|
|
223
|
-
return raw.readyState;
|
|
224
|
-
}
|
|
225
|
-
};
|
|
226
|
-
}
|
|
227
|
-
function createGenericSseDriver(globalState) {
|
|
228
|
-
return {
|
|
229
|
-
sendMessage: (actor2, conn, state, message) => {
|
|
230
|
-
const stream = globalState.sseStreams.get(conn.id);
|
|
231
|
-
if (!stream) {
|
|
232
|
-
actor2.rLog.warn({
|
|
233
|
-
msg: "missing sse stream for sendMessage",
|
|
234
|
-
connId: conn.id
|
|
235
|
-
});
|
|
236
|
-
return;
|
|
237
|
-
}
|
|
238
|
-
stream.writeSSE({
|
|
239
|
-
data: _chunkTCUI5JFEcjs.encodeDataToString.call(void 0, message.serialize(state.encoding))
|
|
240
|
-
});
|
|
241
|
-
},
|
|
242
|
-
disconnect: async (actor2, conn, _state, _reason) => {
|
|
243
|
-
const stream = globalState.sseStreams.get(conn.id);
|
|
244
|
-
if (!stream) {
|
|
245
|
-
actor2.rLog.warn({
|
|
246
|
-
msg: "missing sse stream for disconnect",
|
|
247
|
-
connId: conn.id
|
|
248
|
-
});
|
|
249
|
-
return;
|
|
250
|
-
}
|
|
251
|
-
stream.close();
|
|
252
|
-
},
|
|
253
|
-
getConnectionReadyState: (actor2, conn) => {
|
|
254
|
-
const stream = globalState.sseStreams.get(conn.id);
|
|
255
|
-
if (!stream) {
|
|
256
|
-
actor2.rLog.warn({
|
|
257
|
-
msg: "missing sse stream for getConnectionReadyState",
|
|
258
|
-
connId: conn.id
|
|
259
|
-
});
|
|
260
|
-
return void 0;
|
|
261
|
-
}
|
|
262
|
-
if (stream.aborted || stream.closed) {
|
|
263
|
-
return 3 /* CLOSED */;
|
|
264
|
-
}
|
|
265
|
-
return 1 /* OPEN */;
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
}
|
|
269
|
-
function createGenericHttpDriver() {
|
|
270
|
-
return {
|
|
271
|
-
getConnectionReadyState(_actor, _conn) {
|
|
272
|
-
return 1 /* OPEN */;
|
|
273
|
-
},
|
|
274
|
-
disconnect: async () => {
|
|
275
|
-
}
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
|
|
279
142
|
// src/actor/router.ts
|
|
280
143
|
var _hono = require('hono');
|
|
281
144
|
var _cors = require('hono/cors');
|
|
@@ -285,25 +148,26 @@ var _invariant = require('invariant'); var _invariant2 = _interopRequireDefault(
|
|
|
285
148
|
var _cborx = require('cbor-x'); var cbor = _interopRequireWildcard(_cborx); var cbor2 = _interopRequireWildcard(_cborx); var cbor3 = _interopRequireWildcard(_cborx); var cbor4 = _interopRequireWildcard(_cborx);
|
|
286
149
|
var _streaming = require('hono/streaming');
|
|
287
150
|
|
|
151
|
+
|
|
288
152
|
// src/manager/log.ts
|
|
289
153
|
function logger() {
|
|
290
|
-
return
|
|
154
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "actor-manager");
|
|
291
155
|
}
|
|
292
156
|
|
|
293
157
|
// src/manager/hono-websocket-adapter.ts
|
|
294
|
-
var HonoWebSocketAdapter = (
|
|
158
|
+
var HonoWebSocketAdapter = (_class = class {
|
|
295
159
|
// WebSocket readyState values
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
160
|
+
__init() {this.CONNECTING = 0}
|
|
161
|
+
__init2() {this.OPEN = 1}
|
|
162
|
+
__init3() {this.CLOSING = 2}
|
|
163
|
+
__init4() {this.CLOSED = 3}
|
|
300
164
|
#ws;
|
|
301
165
|
#readyState = 1;
|
|
302
166
|
// Start as OPEN since WSContext is already connected
|
|
303
167
|
#eventListeners = /* @__PURE__ */ new Map();
|
|
304
168
|
#closeCode;
|
|
305
169
|
#closeReason;
|
|
306
|
-
constructor(ws) {;
|
|
170
|
+
constructor(ws) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);
|
|
307
171
|
this.#ws = ws;
|
|
308
172
|
this.#readyState = this.OPEN;
|
|
309
173
|
setTimeout(() => {
|
|
@@ -565,23 +429,24 @@ var HonoWebSocketAdapter = (_class2 = class {
|
|
|
565
429
|
set onmessage(handler) {
|
|
566
430
|
this.#onmessage = handler;
|
|
567
431
|
}
|
|
568
|
-
},
|
|
432
|
+
}, _class);
|
|
569
433
|
|
|
570
434
|
// src/actor/router-endpoints.ts
|
|
571
|
-
|
|
435
|
+
var SSE_PING_INTERVAL = 1e3;
|
|
436
|
+
async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, encoding, parameters, connId, connToken) {
|
|
572
437
|
const exposeInternalError = req ? getRequestExposeInternalError(req) : false;
|
|
573
438
|
const {
|
|
574
439
|
promise: handlersPromise,
|
|
575
440
|
resolve: handlersResolve,
|
|
576
441
|
reject: handlersReject
|
|
577
|
-
} =
|
|
442
|
+
} = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
|
|
578
443
|
let actor2;
|
|
579
444
|
try {
|
|
580
445
|
actor2 = await actorDriver.loadActor(actorId);
|
|
581
446
|
} catch (error) {
|
|
582
447
|
return {
|
|
583
448
|
onOpen: (_evt, ws) => {
|
|
584
|
-
const { code } =
|
|
449
|
+
const { code } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
585
450
|
error,
|
|
586
451
|
actor2.rLog,
|
|
587
452
|
{
|
|
@@ -600,34 +465,39 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
600
465
|
}
|
|
601
466
|
};
|
|
602
467
|
}
|
|
468
|
+
const closePromise = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
|
|
469
|
+
const socketId = _chunk5ZOHIKWGcjs.generateConnSocketId.call(void 0, );
|
|
603
470
|
return {
|
|
604
471
|
onOpen: (_evt, ws) => {
|
|
605
|
-
actor2.rLog.debug("websocket open");
|
|
472
|
+
actor2.rLog.debug("actor websocket open");
|
|
606
473
|
(async () => {
|
|
607
474
|
try {
|
|
608
|
-
|
|
609
|
-
const connToken = _chunkUFWAK3X2cjs.generateConnToken.call(void 0, );
|
|
610
|
-
const connState = await actor2.prepareConn(parameters, req);
|
|
611
|
-
const connGlobalState = actorDriver.getGenericConnGlobalState(actorId);
|
|
612
|
-
connGlobalState.websockets.set(connId, ws);
|
|
475
|
+
let conn;
|
|
613
476
|
actor2.rLog.debug({
|
|
614
|
-
msg: "
|
|
615
|
-
actorId,
|
|
616
|
-
totalCount: connGlobalState.websockets.size
|
|
617
|
-
});
|
|
618
|
-
const conn = await actor2.createConn(
|
|
477
|
+
msg: connId ? "websocket reconnection attempt" : "new websocket connection",
|
|
619
478
|
connId,
|
|
620
|
-
|
|
479
|
+
actorId
|
|
480
|
+
});
|
|
481
|
+
conn = await actor2.createConn(
|
|
482
|
+
{
|
|
483
|
+
socketId,
|
|
484
|
+
driverState: {
|
|
485
|
+
[0 /* WEBSOCKET */]: {
|
|
486
|
+
encoding,
|
|
487
|
+
websocket: ws,
|
|
488
|
+
closePromise
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
},
|
|
621
492
|
parameters,
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
authData
|
|
493
|
+
req,
|
|
494
|
+
connId,
|
|
495
|
+
connToken
|
|
626
496
|
);
|
|
627
|
-
handlersResolve({ conn, actor: actor2, connId });
|
|
497
|
+
handlersResolve({ conn, actor: actor2, connId: conn.id });
|
|
628
498
|
} catch (error) {
|
|
629
499
|
handlersReject(error);
|
|
630
|
-
const { code } =
|
|
500
|
+
const { code } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
631
501
|
error,
|
|
632
502
|
actor2.rLog,
|
|
633
503
|
{
|
|
@@ -643,12 +513,12 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
643
513
|
handlersPromise.then(({ conn, actor: actor3 }) => {
|
|
644
514
|
actor3.rLog.debug({ msg: "received message" });
|
|
645
515
|
const value = evt.data.valueOf();
|
|
646
|
-
|
|
516
|
+
_chunkDFS77KAAcjs.parseMessage.call(void 0, value, {
|
|
647
517
|
encoding,
|
|
648
518
|
maxIncomingMessageSize: runConfig.maxIncomingMessageSize
|
|
649
519
|
}).then((message) => {
|
|
650
520
|
actor3.processMessage(message, conn).catch((error) => {
|
|
651
|
-
const { code } =
|
|
521
|
+
const { code } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
652
522
|
error,
|
|
653
523
|
actor3.rLog,
|
|
654
524
|
{
|
|
@@ -659,7 +529,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
659
529
|
ws.close(1011, code);
|
|
660
530
|
});
|
|
661
531
|
}).catch((error) => {
|
|
662
|
-
const { code } =
|
|
532
|
+
const { code } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
663
533
|
error,
|
|
664
534
|
actor3.rLog,
|
|
665
535
|
{
|
|
@@ -670,7 +540,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
670
540
|
ws.close(1011, code);
|
|
671
541
|
});
|
|
672
542
|
}).catch((error) => {
|
|
673
|
-
const { code } =
|
|
543
|
+
const { code } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
674
544
|
error,
|
|
675
545
|
actor2.rLog,
|
|
676
546
|
{
|
|
@@ -682,6 +552,8 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
682
552
|
});
|
|
683
553
|
},
|
|
684
554
|
onClose: (event, ws) => {
|
|
555
|
+
handlersReject(`WebSocket closed (${event.code}): ${event.reason}`);
|
|
556
|
+
closePromise.resolve();
|
|
685
557
|
if (event.wasClean) {
|
|
686
558
|
actor2.rLog.info({
|
|
687
559
|
msg: "websocket closed",
|
|
@@ -698,24 +570,10 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
698
570
|
});
|
|
699
571
|
}
|
|
700
572
|
ws.close(1e3, "hack_force_close");
|
|
701
|
-
handlersPromise.then(({ conn, actor: actor3
|
|
702
|
-
|
|
703
|
-
const didDelete = connGlobalState.websockets.delete(connId);
|
|
704
|
-
if (didDelete) {
|
|
705
|
-
actor3.rLog.info({
|
|
706
|
-
msg: "removing websocket for conn",
|
|
707
|
-
totalCount: connGlobalState.websockets.size
|
|
708
|
-
});
|
|
709
|
-
} else {
|
|
710
|
-
actor3.rLog.warn({
|
|
711
|
-
msg: "websocket does not exist for conn",
|
|
712
|
-
actorId,
|
|
713
|
-
totalCount: connGlobalState.websockets.size
|
|
714
|
-
});
|
|
715
|
-
}
|
|
716
|
-
actor3.__removeConn(conn);
|
|
573
|
+
handlersPromise.then(({ conn, actor: actor3 }) => {
|
|
574
|
+
actor3.__connDisconnected(conn, event.wasClean, socketId);
|
|
717
575
|
}).catch((error) => {
|
|
718
|
-
|
|
576
|
+
_chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
719
577
|
error,
|
|
720
578
|
actor2.rLog,
|
|
721
579
|
{ wsEvent: "close" },
|
|
@@ -727,7 +585,7 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
727
585
|
try {
|
|
728
586
|
actor2.rLog.warn({ msg: "websocket error" });
|
|
729
587
|
} catch (error) {
|
|
730
|
-
|
|
588
|
+
_chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
731
589
|
error,
|
|
732
590
|
actor2.rLog,
|
|
733
591
|
{ wsEvent: "error" },
|
|
@@ -737,43 +595,47 @@ async function handleWebSocketConnect(req, runConfig, actorDriver, actorId, enco
|
|
|
737
595
|
}
|
|
738
596
|
};
|
|
739
597
|
}
|
|
740
|
-
async function handleSseConnect(c, _runConfig, actorDriver, actorId
|
|
598
|
+
async function handleSseConnect(c, _runConfig, actorDriver, actorId) {
|
|
599
|
+
c.header("Content-Encoding", "Identity");
|
|
741
600
|
const encoding = getRequestEncoding(c.req);
|
|
742
601
|
const parameters = getRequestConnParams(c.req);
|
|
602
|
+
const socketId = _chunk5ZOHIKWGcjs.generateConnSocketId.call(void 0, );
|
|
603
|
+
const connId = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_ID);
|
|
604
|
+
const connToken = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN);
|
|
743
605
|
return _streaming.streamSSE.call(void 0, c, async (stream) => {
|
|
744
606
|
let actor2;
|
|
745
|
-
let connId;
|
|
746
|
-
let connToken;
|
|
747
|
-
let connState;
|
|
748
607
|
let conn;
|
|
749
608
|
try {
|
|
750
609
|
actor2 = await actorDriver.loadActor(actorId);
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
actorDriver.getGenericConnGlobalState(actorId).sseStreams.set(connId, stream);
|
|
610
|
+
actor2.rLog.debug({
|
|
611
|
+
msg: connId ? "sse reconnection attempt" : "sse open",
|
|
612
|
+
connId
|
|
613
|
+
});
|
|
756
614
|
conn = await actor2.createConn(
|
|
757
|
-
|
|
758
|
-
|
|
615
|
+
{
|
|
616
|
+
socketId,
|
|
617
|
+
driverState: {
|
|
618
|
+
[1 /* SSE */]: {
|
|
619
|
+
encoding,
|
|
620
|
+
stream
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
},
|
|
759
624
|
parameters,
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
authData
|
|
625
|
+
c.req.raw,
|
|
626
|
+
connId,
|
|
627
|
+
connToken
|
|
764
628
|
);
|
|
765
|
-
const abortResolver =
|
|
629
|
+
const abortResolver = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
|
|
766
630
|
stream.onAbort(() => {
|
|
767
631
|
});
|
|
768
632
|
c.req.raw.signal.addEventListener("abort", async () => {
|
|
769
|
-
|
|
633
|
+
_invariant2.default.call(void 0, actor2, "actor should exist");
|
|
634
|
+
const rLog = _nullishCoalesce(actor2.rLog, () => ( _chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, )));
|
|
770
635
|
try {
|
|
771
636
|
rLog.debug("sse stream aborted");
|
|
772
|
-
if (
|
|
773
|
-
|
|
774
|
-
}
|
|
775
|
-
if (conn && actor2) {
|
|
776
|
-
actor2.__removeConn(conn);
|
|
637
|
+
if (conn) {
|
|
638
|
+
actor2.__connDisconnected(conn, false, socketId);
|
|
777
639
|
}
|
|
778
640
|
abortResolver.resolve(void 0);
|
|
779
641
|
} catch (error) {
|
|
@@ -781,75 +643,78 @@ async function handleSseConnect(c, _runConfig, actorDriver, actorId, authData) {
|
|
|
781
643
|
abortResolver.resolve(void 0);
|
|
782
644
|
}
|
|
783
645
|
});
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
646
|
+
while (true) {
|
|
647
|
+
if (stream.closed || stream.aborted) {
|
|
648
|
+
actor2 == null ? void 0 : actor2.rLog.debug({
|
|
649
|
+
msg: "sse stream closed",
|
|
650
|
+
closed: stream.closed,
|
|
651
|
+
aborted: stream.aborted
|
|
652
|
+
});
|
|
653
|
+
break;
|
|
654
|
+
}
|
|
655
|
+
await stream.writeSSE({ event: "ping", data: "" });
|
|
656
|
+
await stream.sleep(SSE_PING_INTERVAL);
|
|
787
657
|
}
|
|
788
|
-
await abortResolver.promise;
|
|
789
658
|
} catch (error) {
|
|
790
|
-
|
|
791
|
-
if (connId !== void 0) {
|
|
792
|
-
actorDriver.getGenericConnGlobalState(actorId).sseStreams.delete(connId);
|
|
793
|
-
}
|
|
659
|
+
_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, ).error({ msg: "error in sse connection", error });
|
|
794
660
|
if (conn && actor2 !== void 0) {
|
|
795
|
-
actor2.
|
|
661
|
+
actor2.__connDisconnected(conn, false, socketId);
|
|
796
662
|
}
|
|
797
663
|
stream.close();
|
|
798
664
|
}
|
|
799
665
|
});
|
|
800
666
|
}
|
|
801
|
-
async function handleAction(c, _runConfig, actorDriver, actionName, actorId
|
|
667
|
+
async function handleAction(c, _runConfig, actorDriver, actionName, actorId) {
|
|
802
668
|
const encoding = getRequestEncoding(c.req);
|
|
803
669
|
const parameters = getRequestConnParams(c.req);
|
|
804
670
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
805
|
-
const request =
|
|
671
|
+
const request = _chunkSAZCNSVYcjs.deserializeWithEncoding.call(void 0,
|
|
806
672
|
encoding,
|
|
807
673
|
new Uint8Array(arrayBuffer),
|
|
808
|
-
|
|
674
|
+
_chunkDFS77KAAcjs.HTTP_ACTION_REQUEST_VERSIONED
|
|
809
675
|
);
|
|
810
676
|
const actionArgs = cbor.decode(new Uint8Array(request.args));
|
|
677
|
+
const socketId = _chunk5ZOHIKWGcjs.generateConnSocketId.call(void 0, );
|
|
811
678
|
let actor2;
|
|
812
679
|
let conn;
|
|
813
680
|
let output;
|
|
814
681
|
try {
|
|
815
682
|
actor2 = await actorDriver.loadActor(actorId);
|
|
816
683
|
actor2.rLog.debug({ msg: "handling action", actionName, encoding });
|
|
817
|
-
const connState = await actor2.prepareConn(parameters, c.req.raw);
|
|
818
684
|
conn = await actor2.createConn(
|
|
819
|
-
|
|
820
|
-
|
|
685
|
+
{
|
|
686
|
+
socketId,
|
|
687
|
+
driverState: { [2 /* HTTP */]: {} }
|
|
688
|
+
},
|
|
821
689
|
parameters,
|
|
822
|
-
|
|
823
|
-
_chunkUFWAK3X2cjs.CONNECTION_DRIVER_HTTP,
|
|
824
|
-
{},
|
|
825
|
-
authData
|
|
690
|
+
c.req.raw
|
|
826
691
|
);
|
|
827
|
-
const ctx = new (0,
|
|
692
|
+
const ctx = new (0, _chunkDFS77KAAcjs.ActionContext)(actor2.actorContext, conn);
|
|
828
693
|
output = await actor2.executeAction(ctx, actionName, actionArgs);
|
|
829
694
|
} finally {
|
|
830
695
|
if (conn) {
|
|
831
|
-
actor2 == null ? void 0 : actor2.
|
|
696
|
+
actor2 == null ? void 0 : actor2.__connDisconnected(conn, true, socketId);
|
|
832
697
|
}
|
|
833
698
|
}
|
|
834
699
|
const responseData = {
|
|
835
|
-
output:
|
|
700
|
+
output: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor.encode(output))
|
|
836
701
|
};
|
|
837
|
-
const serialized =
|
|
702
|
+
const serialized = _chunkSAZCNSVYcjs.serializeWithEncoding.call(void 0,
|
|
838
703
|
encoding,
|
|
839
704
|
responseData,
|
|
840
|
-
|
|
705
|
+
_chunkDFS77KAAcjs.HTTP_ACTION_RESPONSE_VERSIONED
|
|
841
706
|
);
|
|
842
707
|
return c.body(serialized, 200, {
|
|
843
|
-
"Content-Type":
|
|
708
|
+
"Content-Type": _chunkSAZCNSVYcjs.contentTypeForEncoding.call(void 0, encoding)
|
|
844
709
|
});
|
|
845
710
|
}
|
|
846
711
|
async function handleConnectionMessage(c, _runConfig, actorDriver, connId, connToken, actorId) {
|
|
847
712
|
const encoding = getRequestEncoding(c.req);
|
|
848
713
|
const arrayBuffer = await c.req.arrayBuffer();
|
|
849
|
-
const message =
|
|
714
|
+
const message = _chunkSAZCNSVYcjs.deserializeWithEncoding.call(void 0,
|
|
850
715
|
encoding,
|
|
851
716
|
new Uint8Array(arrayBuffer),
|
|
852
|
-
|
|
717
|
+
_chunkDFS77KAAcjs.TO_SERVER_VERSIONED
|
|
853
718
|
);
|
|
854
719
|
const actor2 = await actorDriver.loadActor(actorId);
|
|
855
720
|
const conn = actor2.conns.get(connId);
|
|
@@ -862,7 +727,25 @@ async function handleConnectionMessage(c, _runConfig, actorDriver, connId, connT
|
|
|
862
727
|
await actor2.processMessage(message, conn);
|
|
863
728
|
return c.json({});
|
|
864
729
|
}
|
|
865
|
-
async function
|
|
730
|
+
async function handleConnectionClose(c, _runConfig, actorDriver, connId, connToken, actorId) {
|
|
731
|
+
var _a;
|
|
732
|
+
const actor2 = await actorDriver.loadActor(actorId);
|
|
733
|
+
const conn = actor2.conns.get(connId);
|
|
734
|
+
if (!conn) {
|
|
735
|
+
throw new (0, _chunk5QGQK44Lcjs.ConnNotFound)(connId);
|
|
736
|
+
}
|
|
737
|
+
if (conn._token !== connToken) {
|
|
738
|
+
throw new (0, _chunk5QGQK44Lcjs.IncorrectConnToken)();
|
|
739
|
+
}
|
|
740
|
+
if (!((_a = conn.__socket) == null ? void 0 : _a.driverState) || !(1 /* SSE */ in conn.__socket.driverState)) {
|
|
741
|
+
throw new (0, _chunk5QGQK44Lcjs.UserError)(
|
|
742
|
+
"Connection close is only supported for SSE connections"
|
|
743
|
+
);
|
|
744
|
+
}
|
|
745
|
+
await conn.disconnect("Connection closed by client request");
|
|
746
|
+
return c.json({});
|
|
747
|
+
}
|
|
748
|
+
async function handleRawWebSocketHandler(req, path3, actorDriver, actorId) {
|
|
866
749
|
const actor2 = await actorDriver.loadActor(actorId);
|
|
867
750
|
return {
|
|
868
751
|
onOpen: (_evt, ws) => {
|
|
@@ -912,11 +795,11 @@ async function handleRawWebSocketHandler(req, path3, actorDriver, actorId, authD
|
|
|
912
795
|
};
|
|
913
796
|
}
|
|
914
797
|
function getRequestEncoding(req) {
|
|
915
|
-
const encodingParam = req.header(
|
|
798
|
+
const encodingParam = req.header(_chunkSAZCNSVYcjs.HEADER_ENCODING);
|
|
916
799
|
if (!encodingParam) {
|
|
917
800
|
throw new (0, _chunk5QGQK44Lcjs.InvalidEncoding)("undefined");
|
|
918
801
|
}
|
|
919
|
-
const result =
|
|
802
|
+
const result = _chunkSAZCNSVYcjs.EncodingSchema.safeParse(encodingParam);
|
|
920
803
|
if (!result.success) {
|
|
921
804
|
throw new (0, _chunk5QGQK44Lcjs.InvalidEncoding)(encodingParam);
|
|
922
805
|
}
|
|
@@ -926,7 +809,7 @@ function getRequestExposeInternalError(_req) {
|
|
|
926
809
|
return false;
|
|
927
810
|
}
|
|
928
811
|
function getRequestConnParams(req) {
|
|
929
|
-
const paramsParam = req.header(
|
|
812
|
+
const paramsParam = req.header(_chunkSAZCNSVYcjs.HEADER_CONN_PARAMS);
|
|
930
813
|
if (!paramsParam) {
|
|
931
814
|
return null;
|
|
932
815
|
}
|
|
@@ -934,7 +817,7 @@ function getRequestConnParams(req) {
|
|
|
934
817
|
return JSON.parse(paramsParam);
|
|
935
818
|
} catch (err) {
|
|
936
819
|
throw new (0, _chunk5QGQK44Lcjs.InvalidParams)(
|
|
937
|
-
`Invalid params JSON: ${
|
|
820
|
+
`Invalid params JSON: ${_chunk6EUWRXLTcjs.stringifyError.call(void 0, err)}`
|
|
938
821
|
);
|
|
939
822
|
}
|
|
940
823
|
}
|
|
@@ -942,7 +825,7 @@ function getRequestConnParams(req) {
|
|
|
942
825
|
// src/common/router.ts
|
|
943
826
|
|
|
944
827
|
function logger2() {
|
|
945
|
-
return
|
|
828
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "router");
|
|
946
829
|
}
|
|
947
830
|
function loggerMiddleware(logger7) {
|
|
948
831
|
return async (c, next) => {
|
|
@@ -968,7 +851,7 @@ function handleRouteNotFound(c) {
|
|
|
968
851
|
}
|
|
969
852
|
function handleRouteError(error, c) {
|
|
970
853
|
const exposeInternalError = getRequestExposeInternalError(c.req.raw);
|
|
971
|
-
const { statusCode, group, code, message, metadata } =
|
|
854
|
+
const { statusCode, group, code, message, metadata } = _chunk6EUWRXLTcjs.deconstructError.call(void 0,
|
|
972
855
|
error,
|
|
973
856
|
logger2(),
|
|
974
857
|
{
|
|
@@ -983,88 +866,24 @@ function handleRouteError(error, c) {
|
|
|
983
866
|
} catch (_) {
|
|
984
867
|
encoding = "json";
|
|
985
868
|
}
|
|
986
|
-
const output =
|
|
869
|
+
const output = _chunkSAZCNSVYcjs.serializeWithEncoding.call(void 0,
|
|
987
870
|
encoding,
|
|
988
871
|
{
|
|
989
872
|
group,
|
|
990
873
|
code,
|
|
991
874
|
message,
|
|
992
875
|
// TODO: Cannot serialize non-binary meta since it requires ArrayBuffer atm
|
|
993
|
-
metadata:
|
|
876
|
+
metadata: _chunkSAZCNSVYcjs.encodingIsBinary.call(void 0, encoding) ? _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, cbor2.encode(metadata)) : null
|
|
994
877
|
},
|
|
995
|
-
|
|
878
|
+
_chunkDFS77KAAcjs.HTTP_RESPONSE_ERROR_VERSIONED
|
|
996
879
|
);
|
|
997
880
|
return c.body(output, { status: statusCode });
|
|
998
881
|
}
|
|
999
882
|
|
|
1000
|
-
// src/inspector/utils.ts
|
|
1001
|
-
var _crypto = require('crypto'); var crypto4 = _interopRequireWildcard(_crypto); var crypto3 = _interopRequireWildcard(_crypto);
|
|
1002
|
-
var _factory = require('hono/factory');
|
|
1003
|
-
|
|
1004
|
-
// src/inspector/log.ts
|
|
1005
|
-
function inspectorLogger() {
|
|
1006
|
-
return _chunkMRRT2CZDcjs.getLogger.call(void 0, "inspector");
|
|
1007
|
-
}
|
|
1008
|
-
|
|
1009
|
-
// src/inspector/utils.ts
|
|
1010
|
-
function compareSecrets(providedSecret, validSecret) {
|
|
1011
|
-
if (providedSecret.length !== validSecret.length) {
|
|
1012
|
-
return false;
|
|
1013
|
-
}
|
|
1014
|
-
const encoder = new TextEncoder();
|
|
1015
|
-
const a = encoder.encode(providedSecret);
|
|
1016
|
-
const b = encoder.encode(validSecret);
|
|
1017
|
-
if (a.byteLength !== b.byteLength) {
|
|
1018
|
-
return false;
|
|
1019
|
-
}
|
|
1020
|
-
if (!crypto4.default.timingSafeEqual(a, b)) {
|
|
1021
|
-
return false;
|
|
1022
|
-
}
|
|
1023
|
-
return true;
|
|
1024
|
-
}
|
|
1025
|
-
var secureInspector = (runConfig) => _factory.createMiddleware.call(void 0, async (c, next) => {
|
|
1026
|
-
var _a, _b, _c;
|
|
1027
|
-
if (!runConfig.inspector.enabled) {
|
|
1028
|
-
return c.text("Inspector is not enabled", 503);
|
|
1029
|
-
}
|
|
1030
|
-
const userToken = (_a = c.req.header("Authorization")) == null ? void 0 : _a.replace("Bearer ", "");
|
|
1031
|
-
if (!userToken) {
|
|
1032
|
-
return c.text("Unauthorized", 401);
|
|
1033
|
-
}
|
|
1034
|
-
const inspectorToken = (_c = (_b = runConfig.inspector).token) == null ? void 0 : _c.call(_b);
|
|
1035
|
-
if (!inspectorToken) {
|
|
1036
|
-
return c.text("Unauthorized", 401);
|
|
1037
|
-
}
|
|
1038
|
-
const isValid = compareSecrets(userToken, inspectorToken);
|
|
1039
|
-
if (!isValid) {
|
|
1040
|
-
return c.text("Unauthorized", 401);
|
|
1041
|
-
}
|
|
1042
|
-
await next();
|
|
1043
|
-
});
|
|
1044
|
-
function getInspectorUrl(runConfig) {
|
|
1045
|
-
var _a, _b, _c, _d;
|
|
1046
|
-
if (!((_a = runConfig == null ? void 0 : runConfig.inspector) == null ? void 0 : _a.enabled)) {
|
|
1047
|
-
return "disabled";
|
|
1048
|
-
}
|
|
1049
|
-
const accessToken = (_c = (_b = runConfig == null ? void 0 : runConfig.inspector) == null ? void 0 : _b.token) == null ? void 0 : _c.call(_b);
|
|
1050
|
-
if (!accessToken) {
|
|
1051
|
-
inspectorLogger().warn(
|
|
1052
|
-
"Inspector Token is not set, but Inspector is enabled. Please set it in the run configuration `inspector.token` or via `RIVETKIT_INSPECTOR_TOKEN` environment variable. Inspector will not be accessible."
|
|
1053
|
-
);
|
|
1054
|
-
return "disabled";
|
|
1055
|
-
}
|
|
1056
|
-
const url = new URL("https://inspect.rivet.dev");
|
|
1057
|
-
url.searchParams.set("t", accessToken);
|
|
1058
|
-
if ((_d = runConfig == null ? void 0 : runConfig.inspector) == null ? void 0 : _d.defaultEndpoint) {
|
|
1059
|
-
url.searchParams.set("u", runConfig.inspector.defaultEndpoint);
|
|
1060
|
-
}
|
|
1061
|
-
return url.href;
|
|
1062
|
-
}
|
|
1063
|
-
|
|
1064
883
|
// src/actor/router.ts
|
|
1065
884
|
function createActorRouter(runConfig, actorDriver) {
|
|
1066
885
|
const router = new (0, _hono.Hono)({ strict: false });
|
|
1067
|
-
router.use("*", loggerMiddleware(
|
|
886
|
+
router.use("*", loggerMiddleware(_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, )));
|
|
1068
887
|
router.get("/", (c) => {
|
|
1069
888
|
return c.text(
|
|
1070
889
|
"This is an RivetKit actor.\n\nLearn more at https://rivetkit.org"
|
|
@@ -1073,17 +892,54 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1073
892
|
router.get("/health", (c) => {
|
|
1074
893
|
return c.text("ok");
|
|
1075
894
|
});
|
|
1076
|
-
router.
|
|
895
|
+
router.post("/.test/force-disconnect", async (c) => {
|
|
896
|
+
const connId = c.req.query("conn");
|
|
897
|
+
if (!connId) {
|
|
898
|
+
return c.text("Missing conn query parameter", 400);
|
|
899
|
+
}
|
|
900
|
+
const actor2 = await actorDriver.loadActor(c.env.actorId);
|
|
901
|
+
const conn = actor2.__getConnForId(connId);
|
|
902
|
+
if (!conn) {
|
|
903
|
+
return c.text(`Connection not found: ${connId}`, 404);
|
|
904
|
+
}
|
|
905
|
+
const driverState = conn.__driverState;
|
|
906
|
+
if (driverState && 0 /* WEBSOCKET */ in driverState) {
|
|
907
|
+
const ws = driverState[0 /* WEBSOCKET */].websocket;
|
|
908
|
+
ws.raw.terminate();
|
|
909
|
+
} else if (driverState && 1 /* SSE */ in driverState) {
|
|
910
|
+
const stream = driverState[1 /* SSE */].stream;
|
|
911
|
+
stream.abort();
|
|
912
|
+
}
|
|
913
|
+
return c.json({ success: true });
|
|
914
|
+
});
|
|
915
|
+
router.get(_chunkSAZCNSVYcjs.PATH_CONNECT_WEBSOCKET, async (c) => {
|
|
1077
916
|
var _a;
|
|
1078
917
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
1079
918
|
if (upgradeWebSocket) {
|
|
1080
919
|
return upgradeWebSocket(async (c2) => {
|
|
1081
|
-
const
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
920
|
+
const protocols = c2.req.header("sec-websocket-protocol");
|
|
921
|
+
let encodingRaw;
|
|
922
|
+
let connParamsRaw;
|
|
923
|
+
let connIdRaw;
|
|
924
|
+
let connTokenRaw;
|
|
925
|
+
if (protocols) {
|
|
926
|
+
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
927
|
+
for (const protocol of protocolList) {
|
|
928
|
+
if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING)) {
|
|
929
|
+
encodingRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING.length);
|
|
930
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
931
|
+
connParamsRaw = decodeURIComponent(
|
|
932
|
+
protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
933
|
+
);
|
|
934
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID)) {
|
|
935
|
+
connIdRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID.length);
|
|
936
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
937
|
+
connTokenRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
}
|
|
941
|
+
const encoding = _chunkSAZCNSVYcjs.EncodingSchema.parse(encodingRaw);
|
|
1085
942
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1086
|
-
const authData = authDataRaw ? JSON.parse(authDataRaw) : void 0;
|
|
1087
943
|
return await handleWebSocketConnect(
|
|
1088
944
|
c2.req.raw,
|
|
1089
945
|
runConfig,
|
|
@@ -1091,9 +947,10 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1091
947
|
c2.env.actorId,
|
|
1092
948
|
encoding,
|
|
1093
949
|
connParams,
|
|
1094
|
-
|
|
950
|
+
connIdRaw,
|
|
951
|
+
connTokenRaw
|
|
1095
952
|
);
|
|
1096
|
-
})(c,
|
|
953
|
+
})(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
|
|
1097
954
|
} else {
|
|
1098
955
|
return c.text(
|
|
1099
956
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -1102,36 +959,34 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1102
959
|
}
|
|
1103
960
|
});
|
|
1104
961
|
router.get("/connect/sse", async (c) => {
|
|
1105
|
-
|
|
1106
|
-
let authData;
|
|
1107
|
-
if (authDataRaw) {
|
|
1108
|
-
authData = JSON.parse(authDataRaw);
|
|
1109
|
-
}
|
|
1110
|
-
return handleSseConnect(c, runConfig, actorDriver, c.env.actorId, authData);
|
|
962
|
+
return handleSseConnect(c, runConfig, actorDriver, c.env.actorId);
|
|
1111
963
|
});
|
|
1112
964
|
router.post("/action/:action", async (c) => {
|
|
1113
965
|
const actionName = c.req.param("action");
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
966
|
+
return handleAction(c, runConfig, actorDriver, actionName, c.env.actorId);
|
|
967
|
+
});
|
|
968
|
+
router.post("/connections/message", async (c) => {
|
|
969
|
+
const connId = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_ID);
|
|
970
|
+
const connToken = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN);
|
|
971
|
+
if (!connId || !connToken) {
|
|
972
|
+
throw new Error("Missing required parameters");
|
|
1118
973
|
}
|
|
1119
|
-
return
|
|
974
|
+
return handleConnectionMessage(
|
|
1120
975
|
c,
|
|
1121
976
|
runConfig,
|
|
1122
977
|
actorDriver,
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
978
|
+
connId,
|
|
979
|
+
connToken,
|
|
980
|
+
c.env.actorId
|
|
1126
981
|
);
|
|
1127
982
|
});
|
|
1128
|
-
router.post("/connections/
|
|
1129
|
-
const connId = c.req.header(
|
|
1130
|
-
const connToken = c.req.header(
|
|
983
|
+
router.post("/connections/close", async (c) => {
|
|
984
|
+
const connId = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_ID);
|
|
985
|
+
const connToken = c.req.header(_chunkSAZCNSVYcjs.HEADER_CONN_TOKEN);
|
|
1131
986
|
if (!connId || !connToken) {
|
|
1132
987
|
throw new Error("Missing required parameters");
|
|
1133
988
|
}
|
|
1134
|
-
return
|
|
989
|
+
return handleConnectionClose(
|
|
1135
990
|
c,
|
|
1136
991
|
runConfig,
|
|
1137
992
|
actorDriver,
|
|
@@ -1141,11 +996,6 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1141
996
|
);
|
|
1142
997
|
});
|
|
1143
998
|
router.all("/raw/http/*", async (c) => {
|
|
1144
|
-
const authDataRaw = c.req.header(_chunkTCUI5JFEcjs.HEADER_AUTH_DATA);
|
|
1145
|
-
let authData;
|
|
1146
|
-
if (authDataRaw) {
|
|
1147
|
-
authData = JSON.parse(authDataRaw);
|
|
1148
|
-
}
|
|
1149
999
|
const actor2 = await actorDriver.loadActor(c.env.actorId);
|
|
1150
1000
|
const url = new URL(c.req.url);
|
|
1151
1001
|
const originalPath = url.pathname.replace(/^\/raw\/http/, "") || "/";
|
|
@@ -1156,33 +1006,25 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1156
1006
|
body: c.req.raw.body,
|
|
1157
1007
|
duplex: "half"
|
|
1158
1008
|
});
|
|
1159
|
-
|
|
1009
|
+
_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1160
1010
|
msg: "rewriting http url",
|
|
1161
1011
|
from: c.req.url,
|
|
1162
1012
|
to: correctedRequest.url
|
|
1163
1013
|
});
|
|
1164
|
-
const response = await actor2.handleFetch(correctedRequest, {
|
|
1165
|
-
auth: authData
|
|
1166
|
-
});
|
|
1014
|
+
const response = await actor2.handleFetch(correctedRequest, {});
|
|
1167
1015
|
if (!response) {
|
|
1168
1016
|
throw new (0, _chunk5QGQK44Lcjs.InternalError)("handleFetch returned void unexpectedly");
|
|
1169
1017
|
}
|
|
1170
1018
|
return response;
|
|
1171
1019
|
});
|
|
1172
|
-
router.get(`${
|
|
1020
|
+
router.get(`${_chunkSAZCNSVYcjs.PATH_RAW_WEBSOCKET_PREFIX}*`, async (c) => {
|
|
1173
1021
|
var _a;
|
|
1174
1022
|
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
1175
1023
|
if (upgradeWebSocket) {
|
|
1176
1024
|
return upgradeWebSocket(async (c2) => {
|
|
1177
|
-
const encodingRaw = c2.req.header(_chunkTCUI5JFEcjs.HEADER_ENCODING);
|
|
1178
|
-
const connParamsRaw = c2.req.header(_chunkTCUI5JFEcjs.HEADER_CONN_PARAMS);
|
|
1179
|
-
const authDataRaw = c2.req.header(_chunkTCUI5JFEcjs.HEADER_AUTH_DATA);
|
|
1180
|
-
const encoding = _chunkTCUI5JFEcjs.EncodingSchema.parse(encodingRaw);
|
|
1181
|
-
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1182
|
-
const authData = authDataRaw ? JSON.parse(authDataRaw) : void 0;
|
|
1183
1025
|
const url = new URL(c2.req.url);
|
|
1184
1026
|
const pathWithQuery = c2.req.path + url.search;
|
|
1185
|
-
|
|
1027
|
+
_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, ).debug({
|
|
1186
1028
|
msg: "actor router raw websocket",
|
|
1187
1029
|
path: c2.req.path,
|
|
1188
1030
|
url: c2.req.url,
|
|
@@ -1193,10 +1035,9 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1193
1035
|
c2.req.raw,
|
|
1194
1036
|
pathWithQuery,
|
|
1195
1037
|
actorDriver,
|
|
1196
|
-
c2.env.actorId
|
|
1197
|
-
authData
|
|
1038
|
+
c2.env.actorId
|
|
1198
1039
|
);
|
|
1199
|
-
})(c,
|
|
1040
|
+
})(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
|
|
1200
1041
|
} else {
|
|
1201
1042
|
return c.text(
|
|
1202
1043
|
"WebSockets are not enabled for this driver. Use SSE instead.",
|
|
@@ -1204,19 +1045,19 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1204
1045
|
);
|
|
1205
1046
|
}
|
|
1206
1047
|
});
|
|
1207
|
-
if (
|
|
1048
|
+
if (_chunkG4ABMAQYcjs.isInspectorEnabled.call(void 0, runConfig, "actor")) {
|
|
1208
1049
|
router.route(
|
|
1209
1050
|
"/inspect",
|
|
1210
1051
|
new (0, _hono.Hono)().use(
|
|
1211
1052
|
_cors.cors.call(void 0, runConfig.inspector.cors),
|
|
1212
|
-
secureInspector(runConfig),
|
|
1053
|
+
_chunkG4ABMAQYcjs.secureInspector.call(void 0, runConfig),
|
|
1213
1054
|
async (c, next) => {
|
|
1214
1055
|
const inspector = (await actorDriver.loadActor(c.env.actorId)).inspector;
|
|
1215
1056
|
_invariant2.default.call(void 0, inspector, "inspector not supported on this platform");
|
|
1216
1057
|
c.set("inspector", inspector);
|
|
1217
1058
|
return next();
|
|
1218
1059
|
}
|
|
1219
|
-
).route("/",
|
|
1060
|
+
).route("/", _chunk5ZOHIKWGcjs.createActorInspectorRouter.call(void 0, ))
|
|
1220
1061
|
);
|
|
1221
1062
|
}
|
|
1222
1063
|
router.notFound(handleRouteNotFound);
|
|
@@ -1227,20 +1068,20 @@ function createActorRouter(runConfig, actorDriver) {
|
|
|
1227
1068
|
// src/actor/mod.ts
|
|
1228
1069
|
function actor(input) {
|
|
1229
1070
|
const config2 = ActorConfigSchema.parse(input);
|
|
1230
|
-
return new (0,
|
|
1071
|
+
return new (0, _chunk5ZOHIKWGcjs.ActorDefinition)(config2);
|
|
1231
1072
|
}
|
|
1232
1073
|
|
|
1233
1074
|
// src/common/inline-websocket-adapter2.ts
|
|
1234
1075
|
var _ws2 = require('hono/ws');
|
|
1235
1076
|
function logger3() {
|
|
1236
|
-
return
|
|
1077
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "fake-event-source2");
|
|
1237
1078
|
}
|
|
1238
|
-
var InlineWebSocketAdapter2 = (
|
|
1079
|
+
var InlineWebSocketAdapter2 = (_class2 = class {
|
|
1239
1080
|
// WebSocket readyState values
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1081
|
+
__init5() {this.CONNECTING = 0}
|
|
1082
|
+
__init6() {this.OPEN = 1}
|
|
1083
|
+
__init7() {this.CLOSING = 2}
|
|
1084
|
+
__init8() {this.CLOSED = 3}
|
|
1244
1085
|
// Private properties
|
|
1245
1086
|
#handler;
|
|
1246
1087
|
#wsContext;
|
|
@@ -1252,7 +1093,7 @@ var InlineWebSocketAdapter2 = (_class3 = class {
|
|
|
1252
1093
|
#bufferedEvents = [];
|
|
1253
1094
|
// Event listeners with buffering
|
|
1254
1095
|
#eventListeners = /* @__PURE__ */ new Map();
|
|
1255
|
-
constructor(handler) {;
|
|
1096
|
+
constructor(handler) {;_class2.prototype.__init5.call(this);_class2.prototype.__init6.call(this);_class2.prototype.__init7.call(this);_class2.prototype.__init8.call(this);
|
|
1256
1097
|
this.#handler = handler;
|
|
1257
1098
|
this.#wsContext = new (0, _ws2.WSContext)({
|
|
1258
1099
|
raw: this,
|
|
@@ -1565,7 +1406,7 @@ var InlineWebSocketAdapter2 = (_class3 = class {
|
|
|
1565
1406
|
set onmessage(handler) {
|
|
1566
1407
|
this.#onmessage = handler;
|
|
1567
1408
|
}
|
|
1568
|
-
},
|
|
1409
|
+
}, _class2);
|
|
1569
1410
|
|
|
1570
1411
|
// src/drivers/engine/actor-driver.ts
|
|
1571
1412
|
var _enginerunner = require('@rivetkit/engine-runner');
|
|
@@ -1573,6 +1414,7 @@ var _enginerunner = require('@rivetkit/engine-runner');
|
|
|
1573
1414
|
|
|
1574
1415
|
|
|
1575
1416
|
|
|
1417
|
+
|
|
1576
1418
|
// src/drivers/engine/kv.ts
|
|
1577
1419
|
var KEYS = {
|
|
1578
1420
|
PERSIST_DATA: Uint8Array.from([1])
|
|
@@ -1580,7 +1422,7 @@ var KEYS = {
|
|
|
1580
1422
|
|
|
1581
1423
|
// src/drivers/engine/log.ts
|
|
1582
1424
|
function logger4() {
|
|
1583
|
-
return
|
|
1425
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "driver-engine");
|
|
1584
1426
|
}
|
|
1585
1427
|
|
|
1586
1428
|
// src/drivers/engine/actor-driver.ts
|
|
@@ -1595,6 +1437,8 @@ var EngineActorDriver = class {
|
|
|
1595
1437
|
#actorRouter;
|
|
1596
1438
|
#version = 1;
|
|
1597
1439
|
// Version for the runner protocol
|
|
1440
|
+
#runnerStarted = Promise.withResolvers();
|
|
1441
|
+
#runnerStopped = Promise.withResolvers();
|
|
1598
1442
|
constructor(registryConfig, runConfig, managerDriver, inlineClient, config2) {
|
|
1599
1443
|
this.#registryConfig = registryConfig;
|
|
1600
1444
|
this.#runConfig = runConfig;
|
|
@@ -1606,6 +1450,7 @@ var EngineActorDriver = class {
|
|
|
1606
1450
|
const runnerConfig = {
|
|
1607
1451
|
version: this.#version,
|
|
1608
1452
|
endpoint: config2.endpoint,
|
|
1453
|
+
token: config2.token,
|
|
1609
1454
|
pegboardEndpoint: config2.pegboardEndpoint,
|
|
1610
1455
|
namespace: config2.namespace,
|
|
1611
1456
|
totalSlots: config2.totalSlots,
|
|
@@ -1634,6 +1479,7 @@ var EngineActorDriver = class {
|
|
|
1634
1479
|
runnerName: this.#config.runnerName
|
|
1635
1480
|
});
|
|
1636
1481
|
}
|
|
1482
|
+
this.#runnerStarted.resolve(void 0);
|
|
1637
1483
|
},
|
|
1638
1484
|
onDisconnected: () => {
|
|
1639
1485
|
logger4().warn({
|
|
@@ -1644,12 +1490,13 @@ var EngineActorDriver = class {
|
|
|
1644
1490
|
hasDisconnected = true;
|
|
1645
1491
|
},
|
|
1646
1492
|
onShutdown: () => {
|
|
1493
|
+
this.#runnerStopped.resolve(void 0);
|
|
1647
1494
|
},
|
|
1648
1495
|
fetch: this.#runnerFetch.bind(this),
|
|
1649
1496
|
websocket: this.#runnerWebSocket.bind(this),
|
|
1650
1497
|
onActorStart: this.#runnerOnActorStart.bind(this),
|
|
1651
1498
|
onActorStop: this.#runnerOnActorStop.bind(this),
|
|
1652
|
-
logger:
|
|
1499
|
+
logger: _chunk3MBP4WNCcjs.getLogger.call(void 0, "engine-runner")
|
|
1653
1500
|
};
|
|
1654
1501
|
this.#runner = new (0, _enginerunner.Runner)(runnerConfig);
|
|
1655
1502
|
this.#runner.start();
|
|
@@ -1672,13 +1519,6 @@ var EngineActorDriver = class {
|
|
|
1672
1519
|
if (!handler.actor) throw new Error(`Actor ${actorId} failed to load`);
|
|
1673
1520
|
return handler.actor;
|
|
1674
1521
|
}
|
|
1675
|
-
getGenericConnGlobalState(actorId) {
|
|
1676
|
-
const handler = this.#actors.get(actorId);
|
|
1677
|
-
if (!handler) {
|
|
1678
|
-
throw new Error(`Actor ${actorId} not loaded`);
|
|
1679
|
-
}
|
|
1680
|
-
return handler.genericConnGlobalState;
|
|
1681
|
-
}
|
|
1682
1522
|
getContext(actorId) {
|
|
1683
1523
|
return {};
|
|
1684
1524
|
}
|
|
@@ -1722,26 +1562,21 @@ var EngineActorDriver = class {
|
|
|
1722
1562
|
let handler = this.#actors.get(actorId);
|
|
1723
1563
|
if (!handler) {
|
|
1724
1564
|
handler = {
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
persistedData: _chunkNTCUGYSDcjs.serializeEmptyPersistData.call(void 0, input)
|
|
1565
|
+
actorStartPromise: _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, ),
|
|
1566
|
+
persistedData: _chunkDFS77KAAcjs.serializeEmptyPersistData.call(void 0, input)
|
|
1728
1567
|
};
|
|
1729
1568
|
this.#actors.set(actorId, handler);
|
|
1730
1569
|
}
|
|
1731
1570
|
const name = config2.name;
|
|
1732
1571
|
_invariant2.default.call(void 0, config2.key, "actor should have a key");
|
|
1733
|
-
const key =
|
|
1734
|
-
const definition =
|
|
1572
|
+
const key = _chunk5ZOHIKWGcjs.deserializeActorKey.call(void 0, config2.key);
|
|
1573
|
+
const definition = _chunk5ZOHIKWGcjs.lookupInRegistry.call(void 0,
|
|
1735
1574
|
this.#registryConfig,
|
|
1736
1575
|
config2.name
|
|
1737
1576
|
// TODO: Remove cast
|
|
1738
1577
|
);
|
|
1739
1578
|
handler.actor = definition.instantiate();
|
|
1740
|
-
const connDrivers = createGenericConnDrivers(
|
|
1741
|
-
handler.genericConnGlobalState
|
|
1742
|
-
);
|
|
1743
1579
|
await handler.actor.start(
|
|
1744
|
-
connDrivers,
|
|
1745
1580
|
this,
|
|
1746
1581
|
this.#inlineClient,
|
|
1747
1582
|
actorId,
|
|
@@ -1776,14 +1611,27 @@ var EngineActorDriver = class {
|
|
|
1776
1611
|
const websocket = websocketRaw;
|
|
1777
1612
|
logger4().debug({ msg: "runner websocket", actorId, url: request.url });
|
|
1778
1613
|
const url = new URL(request.url);
|
|
1779
|
-
const
|
|
1780
|
-
|
|
1781
|
-
|
|
1782
|
-
|
|
1614
|
+
const protocols = request.headers.get("sec-websocket-protocol");
|
|
1615
|
+
if (protocols === null)
|
|
1616
|
+
throw new Error(`Missing sec-websocket-protocol header`);
|
|
1617
|
+
let encodingRaw;
|
|
1618
|
+
let connParamsRaw;
|
|
1619
|
+
if (protocols) {
|
|
1620
|
+
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
1621
|
+
for (const protocol of protocolList) {
|
|
1622
|
+
if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING)) {
|
|
1623
|
+
encodingRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING.length);
|
|
1624
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
1625
|
+
connParamsRaw = decodeURIComponent(
|
|
1626
|
+
protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
1627
|
+
);
|
|
1628
|
+
}
|
|
1629
|
+
}
|
|
1630
|
+
}
|
|
1631
|
+
const encoding = _chunkSAZCNSVYcjs.EncodingSchema.parse(encodingRaw);
|
|
1783
1632
|
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
1784
|
-
const authData = authDataRaw ? JSON.parse(authDataRaw) : void 0;
|
|
1785
1633
|
let wsHandlerPromise;
|
|
1786
|
-
if (url.pathname ===
|
|
1634
|
+
if (url.pathname === _chunkSAZCNSVYcjs.PATH_CONNECT_WEBSOCKET) {
|
|
1787
1635
|
wsHandlerPromise = handleWebSocketConnect(
|
|
1788
1636
|
request,
|
|
1789
1637
|
this.#runConfig,
|
|
@@ -1791,15 +1639,16 @@ var EngineActorDriver = class {
|
|
|
1791
1639
|
actorId,
|
|
1792
1640
|
encoding,
|
|
1793
1641
|
connParams,
|
|
1794
|
-
|
|
1642
|
+
// Extract connId and connToken from protocols if needed
|
|
1643
|
+
void 0,
|
|
1644
|
+
void 0
|
|
1795
1645
|
);
|
|
1796
|
-
} else if (url.pathname.startsWith(
|
|
1646
|
+
} else if (url.pathname.startsWith(_chunkSAZCNSVYcjs.PATH_RAW_WEBSOCKET_PREFIX)) {
|
|
1797
1647
|
wsHandlerPromise = handleRawWebSocketHandler(
|
|
1798
1648
|
request,
|
|
1799
1649
|
url.pathname + url.search,
|
|
1800
1650
|
this,
|
|
1801
|
-
actorId
|
|
1802
|
-
authData
|
|
1651
|
+
actorId
|
|
1803
1652
|
);
|
|
1804
1653
|
} else {
|
|
1805
1654
|
throw new Error(`Unreachable path: ${url.pathname}`);
|
|
@@ -1848,6 +1697,15 @@ var EngineActorDriver = class {
|
|
|
1848
1697
|
logger4().info({ msg: "stopping engine actor driver" });
|
|
1849
1698
|
await this.#runner.shutdown(immediate);
|
|
1850
1699
|
}
|
|
1700
|
+
async serverlessHandleStart(c) {
|
|
1701
|
+
await this.#runnerStarted.promise;
|
|
1702
|
+
return _streaming.streamSSE.call(void 0, c, async (stream) => {
|
|
1703
|
+
const runnerId = this.#runner.runnerId;
|
|
1704
|
+
_invariant2.default.call(void 0, runnerId, "runnerId not set");
|
|
1705
|
+
stream.writeSSE({ data: runnerId });
|
|
1706
|
+
return this.#runnerStopped.promise;
|
|
1707
|
+
});
|
|
1708
|
+
}
|
|
1851
1709
|
};
|
|
1852
1710
|
|
|
1853
1711
|
// src/drivers/engine/config.ts
|
|
@@ -1855,14 +1713,15 @@ var EngineActorDriver = class {
|
|
|
1855
1713
|
var ConfigSchema = _zod.z.object({
|
|
1856
1714
|
app: _zod.z.custom().optional(),
|
|
1857
1715
|
endpoint: _zod.z.string().default(
|
|
1858
|
-
() => _nullishCoalesce(
|
|
1716
|
+
() => _nullishCoalesce(_chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "RIVET_ENGINE"), () => ( "http://localhost:6420"))
|
|
1859
1717
|
),
|
|
1718
|
+
token: _zod.z.string().optional().transform((val) => _nullishCoalesce(val, () => ( _chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "RIVET_TOKEN")))),
|
|
1860
1719
|
pegboardEndpoint: _zod.z.string().optional(),
|
|
1861
|
-
namespace: _zod.z.string().default(() => _nullishCoalesce(
|
|
1862
|
-
runnerName: _zod.z.string().default(() => _nullishCoalesce(
|
|
1720
|
+
namespace: _zod.z.string().default(() => _nullishCoalesce(_chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "RIVET_NAMESPACE"), () => ( "default"))),
|
|
1721
|
+
runnerName: _zod.z.string().default(() => _nullishCoalesce(_chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER"), () => ( "rivetkit"))),
|
|
1863
1722
|
// TODO: Automatically attempt to determine key by common env vars (e.g. k8s pod name)
|
|
1864
1723
|
runnerKey: _zod.z.string().default(
|
|
1865
|
-
() => _nullishCoalesce(
|
|
1724
|
+
() => _nullishCoalesce(_chunk6EUWRXLTcjs.getEnvUniversal.call(void 0, "RIVET_RUNNER_KEY"), () => ( crypto.randomUUID()))
|
|
1866
1725
|
),
|
|
1867
1726
|
totalSlots: _zod.z.number().default(1e5)
|
|
1868
1727
|
}).default({});
|
|
@@ -1873,7 +1732,7 @@ function createEngineDriver(inputConfig) {
|
|
|
1873
1732
|
return {
|
|
1874
1733
|
name: "engine",
|
|
1875
1734
|
manager: (_registryConfig, runConfig) => {
|
|
1876
|
-
return new (0,
|
|
1735
|
+
return new (0, _chunk5ZOHIKWGcjs.RemoteManagerDriver)(runConfig);
|
|
1877
1736
|
},
|
|
1878
1737
|
actor: (registryConfig, runConfig, managerDriver, inlineClient) => {
|
|
1879
1738
|
return new EngineActorDriver(
|
|
@@ -1910,9 +1769,6 @@ var FileSystemActorDriver = class {
|
|
|
1910
1769
|
actorId
|
|
1911
1770
|
);
|
|
1912
1771
|
}
|
|
1913
|
-
getGenericConnGlobalState(actorId) {
|
|
1914
|
-
return this.#state.getActorOrError(actorId).genericConnGlobalState;
|
|
1915
|
-
}
|
|
1916
1772
|
/**
|
|
1917
1773
|
* Get the current storage directory path
|
|
1918
1774
|
*/
|
|
@@ -1931,7 +1787,7 @@ var FileSystemActorDriver = class {
|
|
|
1931
1787
|
const state = await this.#state.loadActorStateOrError(actorId);
|
|
1932
1788
|
await this.#state.writeActor(actorId, {
|
|
1933
1789
|
...state,
|
|
1934
|
-
persistedData:
|
|
1790
|
+
persistedData: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, data)
|
|
1935
1791
|
});
|
|
1936
1792
|
}
|
|
1937
1793
|
async setAlarm(actor2, timestamp) {
|
|
@@ -1946,7 +1802,7 @@ var FileSystemActorDriver = class {
|
|
|
1946
1802
|
};
|
|
1947
1803
|
|
|
1948
1804
|
// src/drivers/file-system/global-state.ts
|
|
1949
|
-
|
|
1805
|
+
var _crypto = require('crypto'); var crypto3 = _interopRequireWildcard(_crypto); var crypto2 = _interopRequireWildcard(_crypto);
|
|
1950
1806
|
var _fs = require('fs'); var fsSync2 = _interopRequireWildcard(_fs); var fsSync = _interopRequireWildcard(_fs);
|
|
1951
1807
|
var _promises = require('fs/promises'); var fs2 = _interopRequireWildcard(_promises); var fs = _interopRequireWildcard(_promises);
|
|
1952
1808
|
var _path = require('path'); var path2 = _interopRequireWildcard(_path); var path = _interopRequireWildcard(_path);
|
|
@@ -2034,13 +1890,13 @@ function decodeActorAlarm(bytes) {
|
|
|
2034
1890
|
// src/schemas/file-system-driver/versioned.ts
|
|
2035
1891
|
var CURRENT_VERSION = 1;
|
|
2036
1892
|
var migrations = /* @__PURE__ */ new Map();
|
|
2037
|
-
var ACTOR_STATE_VERSIONED =
|
|
1893
|
+
var ACTOR_STATE_VERSIONED = _chunkDFS77KAAcjs.createVersionedDataHandler.call(void 0, {
|
|
2038
1894
|
currentVersion: CURRENT_VERSION,
|
|
2039
1895
|
migrations,
|
|
2040
1896
|
serializeVersion: (data) => encodeActorState(data),
|
|
2041
1897
|
deserializeVersion: (bytes) => decodeActorState(bytes)
|
|
2042
1898
|
});
|
|
2043
|
-
var ACTOR_ALARM_VERSIONED =
|
|
1899
|
+
var ACTOR_ALARM_VERSIONED = _chunkDFS77KAAcjs.createVersionedDataHandler.call(void 0, {
|
|
2044
1900
|
currentVersion: CURRENT_VERSION,
|
|
2045
1901
|
migrations,
|
|
2046
1902
|
serializeVersion: (data) => encodeActorAlarm(data),
|
|
@@ -2049,7 +1905,7 @@ var ACTOR_ALARM_VERSIONED = _chunkNTCUGYSDcjs.createVersionedDataHandler.call(vo
|
|
|
2049
1905
|
|
|
2050
1906
|
// src/drivers/file-system/log.ts
|
|
2051
1907
|
function logger5() {
|
|
2052
|
-
return
|
|
1908
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "driver-fs");
|
|
2053
1909
|
}
|
|
2054
1910
|
|
|
2055
1911
|
// src/drivers/file-system/utils.ts
|
|
@@ -2060,13 +1916,13 @@ var _os = require('os'); var os = _interopRequireWildcard(_os);
|
|
|
2060
1916
|
|
|
2061
1917
|
function generateActorId(name, key) {
|
|
2062
1918
|
const jsonString = JSON.stringify([name, key]);
|
|
2063
|
-
const hash =
|
|
1919
|
+
const hash = crypto2.createHash("sha256").update(jsonString).digest("hex").substring(0, 16);
|
|
2064
1920
|
return hash;
|
|
2065
1921
|
}
|
|
2066
1922
|
function createHashForPath(dirPath) {
|
|
2067
1923
|
const normalizedPath = path.normalize(dirPath);
|
|
2068
1924
|
const lastComponent = path.basename(normalizedPath);
|
|
2069
|
-
const hash =
|
|
1925
|
+
const hash = crypto2.createHash("sha256").update(normalizedPath).digest("hex").substring(0, 8);
|
|
2070
1926
|
return `${lastComponent}-${hash}`;
|
|
2071
1927
|
}
|
|
2072
1928
|
function getStoragePath(customPath) {
|
|
@@ -2079,7 +1935,7 @@ async function pathExists(path3) {
|
|
|
2079
1935
|
try {
|
|
2080
1936
|
await fs.access(path3);
|
|
2081
1937
|
return true;
|
|
2082
|
-
} catch (
|
|
1938
|
+
} catch (e) {
|
|
2083
1939
|
return false;
|
|
2084
1940
|
}
|
|
2085
1941
|
}
|
|
@@ -2201,7 +2057,6 @@ var FileSystemGlobalState = class {
|
|
|
2201
2057
|
}
|
|
2202
2058
|
entry = {
|
|
2203
2059
|
id: actorId,
|
|
2204
|
-
genericConnGlobalState: new GenericConnGlobalState(),
|
|
2205
2060
|
removed: false
|
|
2206
2061
|
};
|
|
2207
2062
|
this.#actors.set(actorId, entry);
|
|
@@ -2220,7 +2075,7 @@ var FileSystemGlobalState = class {
|
|
|
2220
2075
|
name,
|
|
2221
2076
|
key,
|
|
2222
2077
|
createdAt: BigInt(Date.now()),
|
|
2223
|
-
persistedData:
|
|
2078
|
+
persistedData: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, _chunkDFS77KAAcjs.serializeEmptyPersistData.call(void 0, input))
|
|
2224
2079
|
};
|
|
2225
2080
|
await this.writeActor(actorId, entry.state);
|
|
2226
2081
|
return entry;
|
|
@@ -2268,7 +2123,7 @@ var FileSystemGlobalState = class {
|
|
|
2268
2123
|
name,
|
|
2269
2124
|
key,
|
|
2270
2125
|
createdAt: BigInt(Date.now()),
|
|
2271
|
-
persistedData:
|
|
2126
|
+
persistedData: _chunk6EUWRXLTcjs.bufferToArrayBuffer.call(void 0, _chunkDFS77KAAcjs.serializeEmptyPersistData.call(void 0, input))
|
|
2272
2127
|
};
|
|
2273
2128
|
await this.writeActor(actorId, entry.state);
|
|
2274
2129
|
}
|
|
@@ -2305,7 +2160,7 @@ var FileSystemGlobalState = class {
|
|
|
2305
2160
|
_invariant2.default.call(void 0, entry, "actor entry does not exist");
|
|
2306
2161
|
if (this.#persist) {
|
|
2307
2162
|
const alarmPath = this.getActorAlarmPath(actorId);
|
|
2308
|
-
const tempPath = `${alarmPath}.tmp.${
|
|
2163
|
+
const tempPath = `${alarmPath}.tmp.${crypto3.randomUUID()}`;
|
|
2309
2164
|
try {
|
|
2310
2165
|
await ensureDirectoryExists(path2.dirname(alarmPath));
|
|
2311
2166
|
const alarmData = {
|
|
@@ -2318,7 +2173,7 @@ var FileSystemGlobalState = class {
|
|
|
2318
2173
|
} catch (error) {
|
|
2319
2174
|
try {
|
|
2320
2175
|
await fs2.unlink(tempPath);
|
|
2321
|
-
} catch (
|
|
2176
|
+
} catch (e2) {
|
|
2322
2177
|
}
|
|
2323
2178
|
logger5().error({ msg: "failed to write alarm", actorId, error });
|
|
2324
2179
|
throw new Error(`Failed to write alarm: ${error}`);
|
|
@@ -2331,7 +2186,7 @@ var FileSystemGlobalState = class {
|
|
|
2331
2186
|
*/
|
|
2332
2187
|
async #performWrite(actorId, state) {
|
|
2333
2188
|
const dataPath = this.getActorStatePath(actorId);
|
|
2334
|
-
const tempPath = `${dataPath}.tmp.${
|
|
2189
|
+
const tempPath = `${dataPath}.tmp.${crypto3.randomUUID()}`;
|
|
2335
2190
|
try {
|
|
2336
2191
|
await ensureDirectoryExists(path2.dirname(dataPath));
|
|
2337
2192
|
const bareState = {
|
|
@@ -2347,7 +2202,7 @@ var FileSystemGlobalState = class {
|
|
|
2347
2202
|
} catch (error) {
|
|
2348
2203
|
try {
|
|
2349
2204
|
await fs2.unlink(tempPath);
|
|
2350
|
-
} catch (
|
|
2205
|
+
} catch (e3) {
|
|
2351
2206
|
}
|
|
2352
2207
|
logger5().error({ msg: "failed to save actor state", actorId, error });
|
|
2353
2208
|
throw new Error(`Failed to save actor state: ${error}`);
|
|
@@ -2392,15 +2247,11 @@ var FileSystemGlobalState = class {
|
|
|
2392
2247
|
if (entry.actor) {
|
|
2393
2248
|
return entry.actor;
|
|
2394
2249
|
}
|
|
2395
|
-
entry.startPromise =
|
|
2250
|
+
entry.startPromise = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
|
|
2396
2251
|
try {
|
|
2397
|
-
const definition =
|
|
2252
|
+
const definition = _chunk5ZOHIKWGcjs.lookupInRegistry.call(void 0, registryConfig, entry.state.name);
|
|
2398
2253
|
entry.actor = definition.instantiate();
|
|
2399
|
-
const connDrivers = createGenericConnDrivers(
|
|
2400
|
-
entry.genericConnGlobalState
|
|
2401
|
-
);
|
|
2402
2254
|
await entry.actor.start(
|
|
2403
|
-
connDrivers,
|
|
2404
2255
|
actorDriver,
|
|
2405
2256
|
inlineClient,
|
|
2406
2257
|
actorId,
|
|
@@ -2458,7 +2309,7 @@ var FileSystemGlobalState = class {
|
|
|
2458
2309
|
logger5().error({
|
|
2459
2310
|
msg: "failed to read alarm file",
|
|
2460
2311
|
file,
|
|
2461
|
-
error:
|
|
2312
|
+
error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, err)
|
|
2462
2313
|
});
|
|
2463
2314
|
}
|
|
2464
2315
|
}
|
|
@@ -2485,7 +2336,7 @@ var FileSystemGlobalState = class {
|
|
|
2485
2336
|
(_a = entry.alarmTimeout) == null ? void 0 : _a.abort();
|
|
2486
2337
|
entry.alarmTimestamp = timestamp;
|
|
2487
2338
|
const delay = Math.max(0, timestamp - Date.now());
|
|
2488
|
-
entry.alarmTimeout =
|
|
2339
|
+
entry.alarmTimeout = _chunk6EUWRXLTcjs.setLongTimeout.call(void 0, async () => {
|
|
2489
2340
|
entry.alarmTimestamp = void 0;
|
|
2490
2341
|
if (this.#persist) {
|
|
2491
2342
|
try {
|
|
@@ -2495,7 +2346,7 @@ var FileSystemGlobalState = class {
|
|
|
2495
2346
|
logger5().debug({
|
|
2496
2347
|
msg: "failed to remove alarm file",
|
|
2497
2348
|
actorId,
|
|
2498
|
-
error:
|
|
2349
|
+
error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, err)
|
|
2499
2350
|
});
|
|
2500
2351
|
}
|
|
2501
2352
|
}
|
|
@@ -2521,7 +2372,7 @@ var FileSystemGlobalState = class {
|
|
|
2521
2372
|
logger5().error({
|
|
2522
2373
|
msg: "failed to handle alarm",
|
|
2523
2374
|
actorId,
|
|
2524
|
-
error:
|
|
2375
|
+
error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, err)
|
|
2525
2376
|
});
|
|
2526
2377
|
}
|
|
2527
2378
|
}, delay);
|
|
@@ -2531,7 +2382,7 @@ var FileSystemGlobalState = class {
|
|
|
2531
2382
|
if (fsSync2.existsSync(tokenPath)) {
|
|
2532
2383
|
return fsSync2.readFileSync(tokenPath, "utf-8");
|
|
2533
2384
|
}
|
|
2534
|
-
const newToken =
|
|
2385
|
+
const newToken = _chunkSAZCNSVYcjs.generateRandomString.call(void 0, );
|
|
2535
2386
|
fsSync2.writeFileSync(tokenPath, newToken);
|
|
2536
2387
|
return newToken;
|
|
2537
2388
|
}
|
|
@@ -2593,10 +2444,10 @@ function createManagerInspectorRouter() {
|
|
|
2593
2444
|
});
|
|
2594
2445
|
return c.json(actors, 200);
|
|
2595
2446
|
} catch (error) {
|
|
2596
|
-
inspectorLogger().error({ msg: "Failed to fetch actors", error });
|
|
2447
|
+
_chunkG4ABMAQYcjs.inspectorLogger.call(void 0, ).error({ msg: "Failed to fetch actors", error });
|
|
2597
2448
|
return c.json("Failed to fetch actors", 500);
|
|
2598
2449
|
}
|
|
2599
|
-
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json",
|
|
2450
|
+
}).post("/actors", _standardvalidator.sValidator.call(void 0, "json", _chunkB3TLRM4Qcjs.CreateActorSchema), async (c) => {
|
|
2600
2451
|
const actor2 = await c.var.inspector.accessors.createActor(
|
|
2601
2452
|
c.req.valid("json")
|
|
2602
2453
|
);
|
|
@@ -2622,7 +2473,7 @@ var ManagerInspector = class {
|
|
|
2622
2473
|
|
|
2623
2474
|
constructor(accessors) {
|
|
2624
2475
|
this.accessors = accessors();
|
|
2625
|
-
inspectorLogger().debug({ msg: "Manager Inspector enabled and ready" });
|
|
2476
|
+
_chunkG4ABMAQYcjs.inspectorLogger.call(void 0, ).debug({ msg: "Manager Inspector enabled and ready" });
|
|
2626
2477
|
}
|
|
2627
2478
|
};
|
|
2628
2479
|
|
|
@@ -2658,9 +2509,6 @@ var FileSystemManagerDriver = class {
|
|
|
2658
2509
|
};
|
|
2659
2510
|
};
|
|
2660
2511
|
var transformActor = transformActor2;
|
|
2661
|
-
if (!this.#runConfig.inspector.token()) {
|
|
2662
|
-
this.#runConfig.inspector.token = () => this.#state.getOrCreateInspectorAccessToken();
|
|
2663
|
-
}
|
|
2664
2512
|
const startedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
2665
2513
|
this.inspector = new ManagerInspector(() => {
|
|
2666
2514
|
return {
|
|
@@ -2679,7 +2527,7 @@ var FileSystemManagerDriver = class {
|
|
|
2679
2527
|
try {
|
|
2680
2528
|
const result = await this.#state.loadActorStateOrError(id);
|
|
2681
2529
|
return transformActor2(result);
|
|
2682
|
-
} catch (
|
|
2530
|
+
} catch (e4) {
|
|
2683
2531
|
return null;
|
|
2684
2532
|
}
|
|
2685
2533
|
},
|
|
@@ -2693,14 +2541,14 @@ var FileSystemManagerDriver = class {
|
|
|
2693
2541
|
try {
|
|
2694
2542
|
const result = await this.#state.loadActorStateOrError(actorId);
|
|
2695
2543
|
return transformActor2(result);
|
|
2696
|
-
} catch (
|
|
2544
|
+
} catch (e5) {
|
|
2697
2545
|
return null;
|
|
2698
2546
|
}
|
|
2699
2547
|
}
|
|
2700
2548
|
};
|
|
2701
2549
|
});
|
|
2702
2550
|
}
|
|
2703
|
-
const inlineClient =
|
|
2551
|
+
const inlineClient = _chunk5ZOHIKWGcjs.createClientWithDriver.call(void 0, this);
|
|
2704
2552
|
this.#actorDriver = this.#driverConfig.actor(
|
|
2705
2553
|
registryConfig,
|
|
2706
2554
|
runConfig,
|
|
@@ -2714,10 +2562,10 @@ var FileSystemManagerDriver = class {
|
|
|
2714
2562
|
actorId
|
|
2715
2563
|
});
|
|
2716
2564
|
}
|
|
2717
|
-
async openWebSocket(path3, actorId, encoding, params) {
|
|
2565
|
+
async openWebSocket(path3, actorId, encoding, params, connId, connToken) {
|
|
2718
2566
|
const pathOnly = path3.split("?")[0];
|
|
2719
2567
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2720
|
-
if (normalizedPath ===
|
|
2568
|
+
if (normalizedPath === _chunkSAZCNSVYcjs.PATH_CONNECT_WEBSOCKET) {
|
|
2721
2569
|
const wsHandler = await handleWebSocketConnect(
|
|
2722
2570
|
void 0,
|
|
2723
2571
|
this.#runConfig,
|
|
@@ -2725,16 +2573,16 @@ var FileSystemManagerDriver = class {
|
|
|
2725
2573
|
actorId,
|
|
2726
2574
|
encoding,
|
|
2727
2575
|
params,
|
|
2728
|
-
|
|
2576
|
+
connId,
|
|
2577
|
+
connToken
|
|
2729
2578
|
);
|
|
2730
2579
|
return new InlineWebSocketAdapter2(wsHandler);
|
|
2731
|
-
} else if (normalizedPath.startsWith(
|
|
2580
|
+
} else if (normalizedPath.startsWith(_chunkSAZCNSVYcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2732
2581
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2733
2582
|
void 0,
|
|
2734
2583
|
path3,
|
|
2735
2584
|
this.#actorDriver,
|
|
2736
|
-
actorId
|
|
2737
|
-
void 0
|
|
2585
|
+
actorId
|
|
2738
2586
|
);
|
|
2739
2587
|
return new InlineWebSocketAdapter2(wsHandler);
|
|
2740
2588
|
} else {
|
|
@@ -2746,13 +2594,13 @@ var FileSystemManagerDriver = class {
|
|
|
2746
2594
|
actorId
|
|
2747
2595
|
});
|
|
2748
2596
|
}
|
|
2749
|
-
async proxyWebSocket(c, path3, actorId, encoding, connParams) {
|
|
2597
|
+
async proxyWebSocket(c, path3, actorId, encoding, connParams, connId, connToken) {
|
|
2750
2598
|
var _a, _b;
|
|
2751
2599
|
const upgradeWebSocket = (_b = (_a = this.#runConfig).getUpgradeWebSocket) == null ? void 0 : _b.call(_a);
|
|
2752
2600
|
_invariant2.default.call(void 0, upgradeWebSocket, "missing getUpgradeWebSocket");
|
|
2753
2601
|
const pathOnly = path3.split("?")[0];
|
|
2754
2602
|
const normalizedPath = pathOnly.startsWith("/") ? pathOnly : `/${pathOnly}`;
|
|
2755
|
-
if (normalizedPath ===
|
|
2603
|
+
if (normalizedPath === _chunkSAZCNSVYcjs.PATH_CONNECT_WEBSOCKET) {
|
|
2756
2604
|
const wsHandler = await handleWebSocketConnect(
|
|
2757
2605
|
c.req.raw,
|
|
2758
2606
|
this.#runConfig,
|
|
@@ -2760,18 +2608,18 @@ var FileSystemManagerDriver = class {
|
|
|
2760
2608
|
actorId,
|
|
2761
2609
|
encoding,
|
|
2762
2610
|
connParams,
|
|
2763
|
-
|
|
2611
|
+
connId,
|
|
2612
|
+
connToken
|
|
2764
2613
|
);
|
|
2765
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2766
|
-
} else if (normalizedPath.startsWith(
|
|
2614
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
|
|
2615
|
+
} else if (normalizedPath.startsWith(_chunkSAZCNSVYcjs.PATH_RAW_WEBSOCKET_PREFIX) || normalizedPath === "/raw/websocket") {
|
|
2767
2616
|
const wsHandler = await handleRawWebSocketHandler(
|
|
2768
2617
|
c.req.raw,
|
|
2769
2618
|
path3,
|
|
2770
2619
|
this.#actorDriver,
|
|
2771
|
-
actorId
|
|
2772
|
-
void 0
|
|
2620
|
+
actorId
|
|
2773
2621
|
);
|
|
2774
|
-
return upgradeWebSocket(() => wsHandler)(c,
|
|
2622
|
+
return upgradeWebSocket(() => wsHandler)(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
|
|
2775
2623
|
} else {
|
|
2776
2624
|
throw new Error(`Unreachable path: ${path3}`);
|
|
2777
2625
|
}
|
|
@@ -2846,6 +2694,9 @@ var FileSystemManagerDriver = class {
|
|
|
2846
2694
|
data: this.#state.storagePath
|
|
2847
2695
|
};
|
|
2848
2696
|
}
|
|
2697
|
+
getOrCreateInspectorAccessToken() {
|
|
2698
|
+
return this.#state.getOrCreateInspectorAccessToken();
|
|
2699
|
+
}
|
|
2849
2700
|
};
|
|
2850
2701
|
|
|
2851
2702
|
// src/drivers/file-system/mod.ts
|
|
@@ -2882,8 +2733,7 @@ function createMemoryDriver() {
|
|
|
2882
2733
|
|
|
2883
2734
|
// src/drivers/default.ts
|
|
2884
2735
|
function chooseDefaultDriver(runConfig) {
|
|
2885
|
-
|
|
2886
|
-
if (engineEndpoint && runConfig.driver) {
|
|
2736
|
+
if (runConfig.endpoint && runConfig.driver) {
|
|
2887
2737
|
throw new (0, _chunk5QGQK44Lcjs.UserError)(
|
|
2888
2738
|
"Cannot specify both 'engine' and 'driver' in configuration"
|
|
2889
2739
|
);
|
|
@@ -2891,14 +2741,17 @@ function chooseDefaultDriver(runConfig) {
|
|
|
2891
2741
|
if (runConfig.driver) {
|
|
2892
2742
|
return runConfig.driver;
|
|
2893
2743
|
}
|
|
2894
|
-
if (
|
|
2895
|
-
|
|
2744
|
+
if (runConfig.endpoint) {
|
|
2745
|
+
_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, ).debug({
|
|
2896
2746
|
msg: "using rivet engine driver",
|
|
2897
|
-
endpoint:
|
|
2747
|
+
endpoint: runConfig.endpoint
|
|
2748
|
+
});
|
|
2749
|
+
return createEngineDriver({
|
|
2750
|
+
endpoint: runConfig.endpoint,
|
|
2751
|
+
token: runConfig.token
|
|
2898
2752
|
});
|
|
2899
|
-
return createEngineDriver({ endpoint: engineEndpoint });
|
|
2900
2753
|
}
|
|
2901
|
-
|
|
2754
|
+
_chunkSAZCNSVYcjs.loggerWithoutContext.call(void 0, ).debug({ msg: "using default file system driver" });
|
|
2902
2755
|
return createFileSystemOrMemoryDriver(true);
|
|
2903
2756
|
}
|
|
2904
2757
|
|
|
@@ -2909,14 +2762,18 @@ var _zodopenapi = require('@hono/zod-openapi');
|
|
|
2909
2762
|
|
|
2910
2763
|
|
|
2911
2764
|
|
|
2765
|
+
var _factory = require('hono/factory');
|
|
2766
|
+
|
|
2912
2767
|
|
|
2913
2768
|
|
|
2914
|
-
// src/manager-api/
|
|
2769
|
+
// src/manager-api/actors.ts
|
|
2915
2770
|
|
|
2916
2771
|
|
|
2917
|
-
// src/manager-api/
|
|
2772
|
+
// src/manager-api/common.ts
|
|
2918
2773
|
|
|
2919
2774
|
var RivetIdSchema = _zod.z.string();
|
|
2775
|
+
|
|
2776
|
+
// src/manager-api/actors.ts
|
|
2920
2777
|
var ActorSchema = _zod.z.object({
|
|
2921
2778
|
actor_id: RivetIdSchema,
|
|
2922
2779
|
name: _zod.z.string(),
|
|
@@ -2929,8 +2786,9 @@ var ActorSchema = _zod.z.object({
|
|
|
2929
2786
|
sleep_ts: _zod.z.number().nullable().optional(),
|
|
2930
2787
|
start_ts: _zod.z.number().nullable().optional()
|
|
2931
2788
|
});
|
|
2932
|
-
|
|
2933
|
-
|
|
2789
|
+
var ActorsListResponseSchema = _zod.z.object({
|
|
2790
|
+
actors: _zod.z.array(ActorSchema)
|
|
2791
|
+
});
|
|
2934
2792
|
var ActorsCreateRequestSchema = _zod.z.object({
|
|
2935
2793
|
name: _zod.z.string(),
|
|
2936
2794
|
runner_name_selector: _zod.z.string(),
|
|
@@ -2941,111 +2799,343 @@ var ActorsCreateRequestSchema = _zod.z.object({
|
|
|
2941
2799
|
var ActorsCreateResponseSchema = _zod.z.object({
|
|
2942
2800
|
actor: ActorSchema
|
|
2943
2801
|
});
|
|
2944
|
-
|
|
2945
|
-
// src/manager-api/routes/actors-get.ts
|
|
2946
|
-
|
|
2947
|
-
var ActorsGetResponseSchema = _zod.z.object({
|
|
2948
|
-
actor: ActorSchema
|
|
2949
|
-
});
|
|
2950
|
-
|
|
2951
|
-
// src/manager-api/routes/actors-get-by-id.ts
|
|
2952
|
-
|
|
2953
|
-
var ActorsGetByIdResponseSchema = _zod.z.object({
|
|
2954
|
-
actor_id: RivetIdSchema.nullable().optional()
|
|
2955
|
-
});
|
|
2956
|
-
|
|
2957
|
-
// src/manager-api/routes/actors-get-or-create-by-id.ts
|
|
2958
|
-
|
|
2959
|
-
var ActorsGetOrCreateResponseSchema = _zod.z.object({
|
|
2960
|
-
actor: ActorSchema,
|
|
2961
|
-
created: _zod.z.boolean()
|
|
2962
|
-
});
|
|
2963
|
-
var ActorsGetOrCreateByIdResponseSchema = _zod.z.object({
|
|
2964
|
-
actor_id: RivetIdSchema,
|
|
2965
|
-
created: _zod.z.boolean()
|
|
2966
|
-
});
|
|
2967
|
-
var ActorsGetOrCreateByIdRequestSchema = _zod.z.object({
|
|
2802
|
+
var ActorsGetOrCreateRequestSchema = _zod.z.object({
|
|
2968
2803
|
name: _zod.z.string(),
|
|
2969
2804
|
key: _zod.z.string(),
|
|
2970
2805
|
runner_name_selector: _zod.z.string(),
|
|
2971
2806
|
crash_policy: _zod.z.string(),
|
|
2972
2807
|
input: _zod.z.string().nullable().optional()
|
|
2973
2808
|
});
|
|
2809
|
+
var ActorsGetOrCreateResponseSchema = _zod.z.object({
|
|
2810
|
+
actor: ActorSchema,
|
|
2811
|
+
created: _zod.z.boolean()
|
|
2812
|
+
});
|
|
2813
|
+
var ActorsDeleteResponseSchema = _zod.z.object({});
|
|
2974
2814
|
|
|
2975
|
-
// src/manager/
|
|
2976
|
-
function
|
|
2977
|
-
|
|
2978
|
-
|
|
2979
|
-
|
|
2980
|
-
|
|
2981
|
-
|
|
2982
|
-
|
|
2983
|
-
|
|
2984
|
-
} : {}
|
|
2985
|
-
},
|
|
2986
|
-
400: {
|
|
2987
|
-
description: "User error"
|
|
2988
|
-
},
|
|
2989
|
-
500: {
|
|
2990
|
-
description: "Internal error"
|
|
2991
|
-
}
|
|
2992
|
-
};
|
|
2815
|
+
// src/manager/gateway.ts
|
|
2816
|
+
async function actorGateway(runConfig, managerDriver, c, next) {
|
|
2817
|
+
if (c.req.path.startsWith("/.test/")) {
|
|
2818
|
+
return next();
|
|
2819
|
+
}
|
|
2820
|
+
if (c.req.header("upgrade") === "websocket") {
|
|
2821
|
+
return await handleWebSocketGateway(runConfig, managerDriver, c);
|
|
2822
|
+
}
|
|
2823
|
+
return await handleHttpGateway(managerDriver, c, next);
|
|
2993
2824
|
}
|
|
2994
|
-
function
|
|
2995
|
-
var _a
|
|
2996
|
-
const
|
|
2997
|
-
|
|
2998
|
-
|
|
2999
|
-
|
|
3000
|
-
const
|
|
3001
|
-
|
|
3002
|
-
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3010
|
-
|
|
3011
|
-
|
|
3012
|
-
|
|
3013
|
-
|
|
3014
|
-
})
|
|
3015
|
-
|
|
3016
|
-
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
}
|
|
3020
|
-
const encoding = c.req.header("X-RivetKit-Encoding") || c.req.header("x-rivet-encoding") || "json";
|
|
3021
|
-
const connParams = c.req.header("X-RivetKit-Conn-Params") || c.req.header("x-rivet-conn-params");
|
|
3022
|
-
const authData = c.req.header("X-RivetKit-Auth-Data") || c.req.header("x-rivet-auth-data");
|
|
3023
|
-
const pathWithQuery = c.req.url.includes("?") ? c.req.path + c.req.url.substring(c.req.url.indexOf("?")) : c.req.path;
|
|
3024
|
-
return await managerDriver.proxyWebSocket(
|
|
3025
|
-
c,
|
|
3026
|
-
pathWithQuery,
|
|
3027
|
-
actorId,
|
|
3028
|
-
encoding,
|
|
3029
|
-
// Will be validated by driver
|
|
3030
|
-
connParams ? JSON.parse(connParams) : void 0,
|
|
3031
|
-
authData ? JSON.parse(authData) : void 0
|
|
2825
|
+
async function handleWebSocketGateway(runConfig, managerDriver, c) {
|
|
2826
|
+
var _a;
|
|
2827
|
+
const upgradeWebSocket = (_a = runConfig.getUpgradeWebSocket) == null ? void 0 : _a.call(runConfig);
|
|
2828
|
+
if (!upgradeWebSocket) {
|
|
2829
|
+
throw new (0, _chunk5QGQK44Lcjs.WebSocketsNotEnabled)();
|
|
2830
|
+
}
|
|
2831
|
+
const protocols = c.req.header("sec-websocket-protocol");
|
|
2832
|
+
let target;
|
|
2833
|
+
let actorId;
|
|
2834
|
+
let encodingRaw;
|
|
2835
|
+
let connParamsRaw;
|
|
2836
|
+
let connIdRaw;
|
|
2837
|
+
let connTokenRaw;
|
|
2838
|
+
if (protocols) {
|
|
2839
|
+
const protocolList = protocols.split(",").map((p) => p.trim());
|
|
2840
|
+
for (const protocol of protocolList) {
|
|
2841
|
+
if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_TARGET)) {
|
|
2842
|
+
target = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_TARGET.length);
|
|
2843
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ACTOR)) {
|
|
2844
|
+
actorId = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_ACTOR.length);
|
|
2845
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING)) {
|
|
2846
|
+
encodingRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING.length);
|
|
2847
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
2848
|
+
connParamsRaw = decodeURIComponent(
|
|
2849
|
+
protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3032
2850
|
);
|
|
2851
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID)) {
|
|
2852
|
+
connIdRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID.length);
|
|
2853
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
2854
|
+
connTokenRaw = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
3033
2855
|
}
|
|
3034
|
-
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
3035
|
-
proxyHeaders.delete("x-rivet-target");
|
|
3036
|
-
proxyHeaders.delete("x-rivet-actor");
|
|
3037
|
-
const url = new URL(c.req.url);
|
|
3038
|
-
const proxyUrl = new URL(`http://actor${url.pathname}${url.search}`);
|
|
3039
|
-
const proxyRequest = new Request(proxyUrl, {
|
|
3040
|
-
method: c.req.raw.method,
|
|
3041
|
-
headers: proxyHeaders,
|
|
3042
|
-
body: c.req.raw.body,
|
|
3043
|
-
signal: c.req.raw.signal
|
|
3044
|
-
});
|
|
3045
|
-
return await managerDriver.proxyRequest(c, proxyRequest, actorId);
|
|
3046
2856
|
}
|
|
2857
|
+
}
|
|
2858
|
+
if (target !== "actor") {
|
|
2859
|
+
return c.text("WebSocket upgrade requires target.actor protocol", 400);
|
|
2860
|
+
}
|
|
2861
|
+
if (!actorId) {
|
|
2862
|
+
throw new (0, _chunk5QGQK44Lcjs.MissingActorHeader)();
|
|
2863
|
+
}
|
|
2864
|
+
logger().debug({
|
|
2865
|
+
msg: "proxying websocket to actor",
|
|
2866
|
+
actorId,
|
|
2867
|
+
path: c.req.path,
|
|
2868
|
+
encoding: encodingRaw
|
|
2869
|
+
});
|
|
2870
|
+
const encoding = encodingRaw || "json";
|
|
2871
|
+
const connParams = connParamsRaw ? JSON.parse(connParamsRaw) : void 0;
|
|
2872
|
+
const pathWithQuery = c.req.url.includes("?") ? c.req.path + c.req.url.substring(c.req.url.indexOf("?")) : c.req.path;
|
|
2873
|
+
return await managerDriver.proxyWebSocket(
|
|
2874
|
+
c,
|
|
2875
|
+
pathWithQuery,
|
|
2876
|
+
actorId,
|
|
2877
|
+
encoding,
|
|
2878
|
+
// Will be validated by driver
|
|
2879
|
+
connParams,
|
|
2880
|
+
connIdRaw,
|
|
2881
|
+
connTokenRaw
|
|
2882
|
+
);
|
|
2883
|
+
}
|
|
2884
|
+
async function handleHttpGateway(managerDriver, c, next) {
|
|
2885
|
+
const target = c.req.header(_chunkSAZCNSVYcjs.HEADER_RIVET_TARGET);
|
|
2886
|
+
const actorId = c.req.header(_chunkSAZCNSVYcjs.HEADER_RIVET_ACTOR);
|
|
2887
|
+
if (target !== "actor") {
|
|
3047
2888
|
return next();
|
|
2889
|
+
}
|
|
2890
|
+
if (!actorId) {
|
|
2891
|
+
throw new (0, _chunk5QGQK44Lcjs.MissingActorHeader)();
|
|
2892
|
+
}
|
|
2893
|
+
logger().debug({
|
|
2894
|
+
msg: "proxying request to actor",
|
|
2895
|
+
actorId,
|
|
2896
|
+
path: c.req.path,
|
|
2897
|
+
method: c.req.method
|
|
3048
2898
|
});
|
|
2899
|
+
const proxyHeaders = new Headers(c.req.raw.headers);
|
|
2900
|
+
proxyHeaders.delete(_chunkSAZCNSVYcjs.HEADER_RIVET_TARGET);
|
|
2901
|
+
proxyHeaders.delete(_chunkSAZCNSVYcjs.HEADER_RIVET_ACTOR);
|
|
2902
|
+
const url = new URL(c.req.url);
|
|
2903
|
+
const proxyUrl = new URL(`http://actor${url.pathname}${url.search}`);
|
|
2904
|
+
const proxyRequest = new Request(proxyUrl, {
|
|
2905
|
+
method: c.req.raw.method,
|
|
2906
|
+
headers: proxyHeaders,
|
|
2907
|
+
body: c.req.raw.body,
|
|
2908
|
+
signal: c.req.raw.signal
|
|
2909
|
+
});
|
|
2910
|
+
return await managerDriver.proxyRequest(c, proxyRequest, actorId);
|
|
2911
|
+
}
|
|
2912
|
+
async function createTestWebSocketProxy(clientWsPromise) {
|
|
2913
|
+
let clientWs = null;
|
|
2914
|
+
const {
|
|
2915
|
+
promise: serverWsPromise,
|
|
2916
|
+
resolve: serverWsResolve,
|
|
2917
|
+
reject: serverWsReject
|
|
2918
|
+
} = _chunk6EUWRXLTcjs.promiseWithResolvers.call(void 0, );
|
|
2919
|
+
try {
|
|
2920
|
+
logger().debug({ msg: "awaiting client websocket promise" });
|
|
2921
|
+
const ws = await clientWsPromise;
|
|
2922
|
+
clientWs = ws;
|
|
2923
|
+
logger().debug({
|
|
2924
|
+
msg: "client websocket promise resolved",
|
|
2925
|
+
constructor: ws == null ? void 0 : ws.constructor.name
|
|
2926
|
+
});
|
|
2927
|
+
await new Promise((resolve, reject) => {
|
|
2928
|
+
const onOpen = () => {
|
|
2929
|
+
logger().debug({ msg: "test websocket connection to actor opened" });
|
|
2930
|
+
resolve();
|
|
2931
|
+
};
|
|
2932
|
+
const onError = (error) => {
|
|
2933
|
+
logger().error({ msg: "test websocket connection failed", error });
|
|
2934
|
+
reject(
|
|
2935
|
+
new Error(`Failed to open WebSocket: ${error.message || error}`)
|
|
2936
|
+
);
|
|
2937
|
+
serverWsReject();
|
|
2938
|
+
};
|
|
2939
|
+
ws.addEventListener("open", onOpen);
|
|
2940
|
+
ws.addEventListener("error", onError);
|
|
2941
|
+
ws.addEventListener("message", async (clientEvt) => {
|
|
2942
|
+
var _a, _b;
|
|
2943
|
+
const serverWs = await serverWsPromise;
|
|
2944
|
+
logger().debug({
|
|
2945
|
+
msg: `test websocket connection message from client`,
|
|
2946
|
+
dataType: typeof clientEvt.data,
|
|
2947
|
+
isBlob: clientEvt.data instanceof Blob,
|
|
2948
|
+
isArrayBuffer: clientEvt.data instanceof ArrayBuffer,
|
|
2949
|
+
dataConstructor: (_b = (_a = clientEvt.data) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name,
|
|
2950
|
+
dataStr: typeof clientEvt.data === "string" ? clientEvt.data.substring(0, 100) : void 0
|
|
2951
|
+
});
|
|
2952
|
+
if (serverWs.readyState === 1) {
|
|
2953
|
+
if (clientEvt.data instanceof Blob) {
|
|
2954
|
+
clientEvt.data.arrayBuffer().then((buffer) => {
|
|
2955
|
+
logger().debug({
|
|
2956
|
+
msg: "converted client blob to arraybuffer, sending to server",
|
|
2957
|
+
bufferSize: buffer.byteLength
|
|
2958
|
+
});
|
|
2959
|
+
serverWs.send(buffer);
|
|
2960
|
+
}).catch((error) => {
|
|
2961
|
+
logger().error({
|
|
2962
|
+
msg: "failed to convert blob to arraybuffer",
|
|
2963
|
+
error
|
|
2964
|
+
});
|
|
2965
|
+
});
|
|
2966
|
+
} else {
|
|
2967
|
+
logger().debug({
|
|
2968
|
+
msg: "sending client data directly to server",
|
|
2969
|
+
dataType: typeof clientEvt.data,
|
|
2970
|
+
dataLength: typeof clientEvt.data === "string" ? clientEvt.data.length : void 0
|
|
2971
|
+
});
|
|
2972
|
+
serverWs.send(clientEvt.data);
|
|
2973
|
+
}
|
|
2974
|
+
}
|
|
2975
|
+
});
|
|
2976
|
+
ws.addEventListener("close", async (clientEvt) => {
|
|
2977
|
+
const serverWs = await serverWsPromise;
|
|
2978
|
+
logger().debug({
|
|
2979
|
+
msg: `test websocket connection closed`
|
|
2980
|
+
});
|
|
2981
|
+
if (serverWs.readyState !== 3) {
|
|
2982
|
+
serverWs.close(clientEvt.code, clientEvt.reason);
|
|
2983
|
+
}
|
|
2984
|
+
});
|
|
2985
|
+
ws.addEventListener("error", async () => {
|
|
2986
|
+
const serverWs = await serverWsPromise;
|
|
2987
|
+
logger().debug({
|
|
2988
|
+
msg: `test websocket connection error`
|
|
2989
|
+
});
|
|
2990
|
+
if (serverWs.readyState !== 3) {
|
|
2991
|
+
serverWs.close(1011, "Error in client websocket");
|
|
2992
|
+
}
|
|
2993
|
+
});
|
|
2994
|
+
});
|
|
2995
|
+
} catch (error) {
|
|
2996
|
+
logger().error({
|
|
2997
|
+
msg: `failed to establish client websocket connection`,
|
|
2998
|
+
error
|
|
2999
|
+
});
|
|
3000
|
+
return {
|
|
3001
|
+
onOpen: (_evt, serverWs) => {
|
|
3002
|
+
serverWs.close(1011, "Failed to establish connection");
|
|
3003
|
+
},
|
|
3004
|
+
onMessage: () => {
|
|
3005
|
+
},
|
|
3006
|
+
onError: () => {
|
|
3007
|
+
},
|
|
3008
|
+
onClose: () => {
|
|
3009
|
+
}
|
|
3010
|
+
};
|
|
3011
|
+
}
|
|
3012
|
+
return {
|
|
3013
|
+
onOpen: (_evt, serverWs) => {
|
|
3014
|
+
logger().debug({
|
|
3015
|
+
msg: `test websocket connection from client opened`
|
|
3016
|
+
});
|
|
3017
|
+
logger().debug({
|
|
3018
|
+
msg: "clientWs info",
|
|
3019
|
+
constructor: clientWs.constructor.name,
|
|
3020
|
+
hasAddEventListener: typeof clientWs.addEventListener === "function",
|
|
3021
|
+
readyState: clientWs.readyState
|
|
3022
|
+
});
|
|
3023
|
+
serverWsResolve(serverWs);
|
|
3024
|
+
},
|
|
3025
|
+
onMessage: (evt) => {
|
|
3026
|
+
var _a, _b;
|
|
3027
|
+
logger().debug({
|
|
3028
|
+
msg: "received message from server",
|
|
3029
|
+
dataType: typeof evt.data,
|
|
3030
|
+
isBlob: evt.data instanceof Blob,
|
|
3031
|
+
isArrayBuffer: evt.data instanceof ArrayBuffer,
|
|
3032
|
+
dataConstructor: (_b = (_a = evt.data) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name,
|
|
3033
|
+
dataStr: typeof evt.data === "string" ? evt.data.substring(0, 100) : void 0
|
|
3034
|
+
});
|
|
3035
|
+
if (clientWs.readyState === 1) {
|
|
3036
|
+
if (evt.data instanceof Blob) {
|
|
3037
|
+
evt.data.arrayBuffer().then((buffer) => {
|
|
3038
|
+
logger().debug({
|
|
3039
|
+
msg: "converted blob to arraybuffer, sending",
|
|
3040
|
+
bufferSize: buffer.byteLength
|
|
3041
|
+
});
|
|
3042
|
+
clientWs.send(buffer);
|
|
3043
|
+
}).catch((error) => {
|
|
3044
|
+
logger().error({
|
|
3045
|
+
msg: "failed to convert blob to arraybuffer",
|
|
3046
|
+
error
|
|
3047
|
+
});
|
|
3048
|
+
});
|
|
3049
|
+
} else {
|
|
3050
|
+
logger().debug({
|
|
3051
|
+
msg: "sending data directly",
|
|
3052
|
+
dataType: typeof evt.data,
|
|
3053
|
+
dataLength: typeof evt.data === "string" ? evt.data.length : void 0
|
|
3054
|
+
});
|
|
3055
|
+
clientWs.send(evt.data);
|
|
3056
|
+
}
|
|
3057
|
+
}
|
|
3058
|
+
},
|
|
3059
|
+
onClose: (event, serverWs) => {
|
|
3060
|
+
logger().debug({
|
|
3061
|
+
msg: `server websocket closed`,
|
|
3062
|
+
wasClean: event.wasClean,
|
|
3063
|
+
code: event.code,
|
|
3064
|
+
reason: event.reason
|
|
3065
|
+
});
|
|
3066
|
+
serverWs.close(1e3, "hack_force_close");
|
|
3067
|
+
if (clientWs && clientWs.readyState !== clientWs.CLOSED && clientWs.readyState !== clientWs.CLOSING) {
|
|
3068
|
+
clientWs.close(1e3, event.reason);
|
|
3069
|
+
}
|
|
3070
|
+
},
|
|
3071
|
+
onError: (error) => {
|
|
3072
|
+
logger().error({
|
|
3073
|
+
msg: `error in server websocket`,
|
|
3074
|
+
error
|
|
3075
|
+
});
|
|
3076
|
+
if (clientWs && clientWs.readyState !== clientWs.CLOSED && clientWs.readyState !== clientWs.CLOSING) {
|
|
3077
|
+
clientWs.close(1011, "Error in server websocket");
|
|
3078
|
+
}
|
|
3079
|
+
serverWsReject();
|
|
3080
|
+
}
|
|
3081
|
+
};
|
|
3082
|
+
}
|
|
3083
|
+
|
|
3084
|
+
// src/manager/router.ts
|
|
3085
|
+
function buildOpenApiResponses(schema) {
|
|
3086
|
+
return {
|
|
3087
|
+
200: {
|
|
3088
|
+
description: "Success",
|
|
3089
|
+
content: {
|
|
3090
|
+
"application/json": {
|
|
3091
|
+
schema
|
|
3092
|
+
}
|
|
3093
|
+
}
|
|
3094
|
+
},
|
|
3095
|
+
400: {
|
|
3096
|
+
description: "User error"
|
|
3097
|
+
},
|
|
3098
|
+
500: {
|
|
3099
|
+
description: "Internal error"
|
|
3100
|
+
}
|
|
3101
|
+
};
|
|
3102
|
+
}
|
|
3103
|
+
function createManagerRouter(registryConfig, runConfig, managerDriver, serverlessActorDriverBuilder) {
|
|
3104
|
+
const router = new (0, _zodopenapi.OpenAPIHono)({ strict: false }).basePath(
|
|
3105
|
+
runConfig.basePath
|
|
3106
|
+
);
|
|
3107
|
+
router.use("*", loggerMiddleware(logger()));
|
|
3108
|
+
const cors2 = runConfig.cors ? _cors.cors.call(void 0, runConfig.cors) : _factory.createMiddleware.call(void 0, (_c, next) => next());
|
|
3109
|
+
if (serverlessActorDriverBuilder) {
|
|
3110
|
+
addServerlessRoutes(serverlessActorDriverBuilder, router, cors2);
|
|
3111
|
+
} else {
|
|
3112
|
+
addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors2);
|
|
3113
|
+
}
|
|
3114
|
+
router.notFound(handleRouteNotFound);
|
|
3115
|
+
router.onError(handleRouteError);
|
|
3116
|
+
return { router, openapi: router, cors: cors2 };
|
|
3117
|
+
}
|
|
3118
|
+
function addServerlessRoutes(serverlessActorDriverBuilder, router, cors2) {
|
|
3119
|
+
router.get("/", cors2, (c) => {
|
|
3120
|
+
return c.text(
|
|
3121
|
+
"This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
|
|
3122
|
+
);
|
|
3123
|
+
});
|
|
3124
|
+
router.get("/start", cors2, async (c) => {
|
|
3125
|
+
const actorDriver = serverlessActorDriverBuilder();
|
|
3126
|
+
_invariant2.default.call(void 0,
|
|
3127
|
+
actorDriver.serverlessHandleStart,
|
|
3128
|
+
"missing serverlessHandleStart on ActorDriver"
|
|
3129
|
+
);
|
|
3130
|
+
return await actorDriver.serverlessHandleStart(c);
|
|
3131
|
+
});
|
|
3132
|
+
router.get("/health", cors2, (c) => {
|
|
3133
|
+
return c.text("ok");
|
|
3134
|
+
});
|
|
3135
|
+
}
|
|
3136
|
+
function addManagerRoutes(registryConfig, runConfig, managerDriver, router, cors2) {
|
|
3137
|
+
var _a;
|
|
3138
|
+
router.use("*", cors2, actorGateway.bind(void 0, runConfig, managerDriver));
|
|
3049
3139
|
router.get("/", cors2, (c) => {
|
|
3050
3140
|
return c.text(
|
|
3051
3141
|
"This is a RivetKit server.\n\nLearn more at https://rivetkit.org"
|
|
@@ -3055,55 +3145,80 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3055
3145
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3056
3146
|
middleware: [cors2],
|
|
3057
3147
|
method: "get",
|
|
3058
|
-
path: "/actors
|
|
3148
|
+
path: "/actors",
|
|
3059
3149
|
request: {
|
|
3060
3150
|
query: _zod.z.object({
|
|
3061
3151
|
name: _zod.z.string(),
|
|
3062
|
-
|
|
3152
|
+
actor_ids: _zod.z.string().optional(),
|
|
3153
|
+
key: _zod.z.string().optional()
|
|
3063
3154
|
})
|
|
3064
3155
|
},
|
|
3065
|
-
responses: buildOpenApiResponses(
|
|
3066
|
-
ActorsGetByIdResponseSchema,
|
|
3067
|
-
validateBody
|
|
3068
|
-
)
|
|
3156
|
+
responses: buildOpenApiResponses(ActorsListResponseSchema)
|
|
3069
3157
|
});
|
|
3070
3158
|
router.openapi(route, async (c) => {
|
|
3071
|
-
const { name, key } = c.req.valid("query");
|
|
3072
|
-
const
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3159
|
+
const { name, actor_ids, key } = c.req.valid("query");
|
|
3160
|
+
const actorIdsParsed = actor_ids ? actor_ids.split(",").map((id) => id.trim()).filter((id) => id.length > 0) : void 0;
|
|
3161
|
+
const actors = [];
|
|
3162
|
+
if (actorIdsParsed) {
|
|
3163
|
+
if (actorIdsParsed.length > 32) {
|
|
3164
|
+
return c.json(
|
|
3165
|
+
{
|
|
3166
|
+
error: `Too many actor IDs. Maximum is 32, got ${actorIdsParsed.length}.`
|
|
3167
|
+
},
|
|
3168
|
+
400
|
|
3169
|
+
);
|
|
3170
|
+
}
|
|
3171
|
+
if (actorIdsParsed.length === 0) {
|
|
3172
|
+
return c.json({
|
|
3173
|
+
actors: []
|
|
3174
|
+
});
|
|
3175
|
+
}
|
|
3176
|
+
for (const actorId of actorIdsParsed) {
|
|
3177
|
+
if (name) {
|
|
3178
|
+
const actorOutput = await managerDriver.getForId({
|
|
3179
|
+
c,
|
|
3180
|
+
name,
|
|
3181
|
+
actorId
|
|
3182
|
+
});
|
|
3183
|
+
if (actorOutput) {
|
|
3184
|
+
actors.push(actorOutput);
|
|
3185
|
+
}
|
|
3186
|
+
}
|
|
3187
|
+
}
|
|
3188
|
+
} else if (key) {
|
|
3189
|
+
const actorOutput = await managerDriver.getWithKey({
|
|
3190
|
+
c,
|
|
3191
|
+
name,
|
|
3192
|
+
key: [key]
|
|
3193
|
+
// Convert string to ActorKey array
|
|
3194
|
+
});
|
|
3195
|
+
if (actorOutput) {
|
|
3196
|
+
actors.push(actorOutput);
|
|
3197
|
+
}
|
|
3198
|
+
}
|
|
3078
3199
|
return c.json({
|
|
3079
|
-
|
|
3200
|
+
actors: actors.map(createApiActor)
|
|
3080
3201
|
});
|
|
3081
3202
|
});
|
|
3082
3203
|
}
|
|
3083
3204
|
{
|
|
3084
3205
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3085
|
-
|
|
3206
|
+
middleware: [cors2],
|
|
3086
3207
|
method: "put",
|
|
3087
|
-
path: "/actors
|
|
3208
|
+
path: "/actors",
|
|
3088
3209
|
request: {
|
|
3089
3210
|
body: {
|
|
3090
|
-
content:
|
|
3211
|
+
content: {
|
|
3091
3212
|
"application/json": {
|
|
3092
|
-
schema:
|
|
3213
|
+
schema: ActorsGetOrCreateRequestSchema
|
|
3093
3214
|
}
|
|
3094
|
-
}
|
|
3215
|
+
}
|
|
3095
3216
|
}
|
|
3096
3217
|
},
|
|
3097
|
-
responses: buildOpenApiResponses(
|
|
3098
|
-
ActorsGetOrCreateByIdResponseSchema,
|
|
3099
|
-
validateBody
|
|
3100
|
-
)
|
|
3218
|
+
responses: buildOpenApiResponses(ActorsGetOrCreateResponseSchema)
|
|
3101
3219
|
});
|
|
3102
3220
|
router.openapi(route, async (c) => {
|
|
3103
|
-
const body =
|
|
3104
|
-
if (validateBody) {
|
|
3105
|
-
ActorsGetOrCreateByIdRequestSchema.parse(body);
|
|
3106
|
-
}
|
|
3221
|
+
const body = c.req.valid("json");
|
|
3107
3222
|
const existingActor = await managerDriver.getWithKey({
|
|
3108
3223
|
c,
|
|
3109
3224
|
name: body.name,
|
|
@@ -3112,7 +3227,7 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3112
3227
|
});
|
|
3113
3228
|
if (existingActor) {
|
|
3114
3229
|
return c.json({
|
|
3115
|
-
|
|
3230
|
+
actor: createApiActor(existingActor),
|
|
3116
3231
|
created: false
|
|
3117
3232
|
});
|
|
3118
3233
|
}
|
|
@@ -3126,52 +3241,11 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3126
3241
|
// Not provided in the request schema
|
|
3127
3242
|
});
|
|
3128
3243
|
return c.json({
|
|
3129
|
-
|
|
3244
|
+
actor: createApiActor(newActor),
|
|
3130
3245
|
created: true
|
|
3131
3246
|
});
|
|
3132
3247
|
});
|
|
3133
3248
|
}
|
|
3134
|
-
{
|
|
3135
|
-
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3136
|
-
middleware: [cors2],
|
|
3137
|
-
method: "get",
|
|
3138
|
-
path: "/actors/{actor_id}",
|
|
3139
|
-
request: {
|
|
3140
|
-
params: _zod.z.object({
|
|
3141
|
-
actor_id: RivetIdSchema
|
|
3142
|
-
})
|
|
3143
|
-
},
|
|
3144
|
-
responses: buildOpenApiResponses(ActorsGetResponseSchema, validateBody)
|
|
3145
|
-
});
|
|
3146
|
-
router.openapi(route, async (c) => {
|
|
3147
|
-
const { actor_id } = c.req.valid("param");
|
|
3148
|
-
const actorOutput = await managerDriver.getForId({
|
|
3149
|
-
c,
|
|
3150
|
-
name: "",
|
|
3151
|
-
// TODO: The API doesn't provide the name, this may need to be resolved
|
|
3152
|
-
actorId: actor_id
|
|
3153
|
-
});
|
|
3154
|
-
if (!actorOutput) {
|
|
3155
|
-
throw new (0, _chunk5QGQK44Lcjs.ActorNotFound)(actor_id);
|
|
3156
|
-
}
|
|
3157
|
-
const actor2 = {
|
|
3158
|
-
actor_id: actorOutput.actorId,
|
|
3159
|
-
name: actorOutput.name,
|
|
3160
|
-
key: actorOutput.key,
|
|
3161
|
-
namespace_id: "default",
|
|
3162
|
-
// Assert default namespace
|
|
3163
|
-
runner_name_selector: "rivetkit",
|
|
3164
|
-
// Assert rivetkit runner
|
|
3165
|
-
create_ts: Date.now(),
|
|
3166
|
-
// Not available from driver
|
|
3167
|
-
connectable_ts: null,
|
|
3168
|
-
destroy_ts: null,
|
|
3169
|
-
sleep_ts: null,
|
|
3170
|
-
start_ts: null
|
|
3171
|
-
};
|
|
3172
|
-
return c.json({ actor: actor2 });
|
|
3173
|
-
});
|
|
3174
|
-
}
|
|
3175
3249
|
{
|
|
3176
3250
|
const route = _zodopenapi.createRoute.call(void 0, {
|
|
3177
3251
|
middleware: [cors2],
|
|
@@ -3179,23 +3253,17 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3179
3253
|
path: "/actors",
|
|
3180
3254
|
request: {
|
|
3181
3255
|
body: {
|
|
3182
|
-
content:
|
|
3256
|
+
content: {
|
|
3183
3257
|
"application/json": {
|
|
3184
3258
|
schema: ActorsCreateRequestSchema
|
|
3185
3259
|
}
|
|
3186
|
-
}
|
|
3260
|
+
}
|
|
3187
3261
|
}
|
|
3188
3262
|
},
|
|
3189
|
-
responses: buildOpenApiResponses(
|
|
3190
|
-
ActorsCreateResponseSchema,
|
|
3191
|
-
validateBody
|
|
3192
|
-
)
|
|
3263
|
+
responses: buildOpenApiResponses(ActorsCreateResponseSchema)
|
|
3193
3264
|
});
|
|
3194
3265
|
router.openapi(route, async (c) => {
|
|
3195
|
-
const body =
|
|
3196
|
-
if (validateBody) {
|
|
3197
|
-
ActorsCreateRequestSchema.parse(body);
|
|
3198
|
-
}
|
|
3266
|
+
const body = c.req.valid("json");
|
|
3199
3267
|
const actorOutput = await managerDriver.createActor({
|
|
3200
3268
|
c,
|
|
3201
3269
|
name: body.name,
|
|
@@ -3205,20 +3273,7 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3205
3273
|
region: void 0
|
|
3206
3274
|
// Not provided in the request schema
|
|
3207
3275
|
});
|
|
3208
|
-
const actor2 =
|
|
3209
|
-
actor_id: actorOutput.actorId,
|
|
3210
|
-
name: actorOutput.name,
|
|
3211
|
-
key: actorOutput.key,
|
|
3212
|
-
namespace_id: "default",
|
|
3213
|
-
// Assert default namespace
|
|
3214
|
-
runner_name_selector: "rivetkit",
|
|
3215
|
-
// Assert rivetkit runner
|
|
3216
|
-
create_ts: Date.now(),
|
|
3217
|
-
connectable_ts: null,
|
|
3218
|
-
destroy_ts: null,
|
|
3219
|
-
sleep_ts: null,
|
|
3220
|
-
start_ts: null
|
|
3221
|
-
};
|
|
3276
|
+
const actor2 = createApiActor(actorOutput);
|
|
3222
3277
|
return c.json({ actor: actor2 });
|
|
3223
3278
|
});
|
|
3224
3279
|
}
|
|
@@ -3238,7 +3293,7 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3238
3293
|
const output = await managerDriver[method](...args);
|
|
3239
3294
|
response = { ok: output };
|
|
3240
3295
|
} catch (rawErr) {
|
|
3241
|
-
const err =
|
|
3296
|
+
const err = _chunk6EUWRXLTcjs.deconstructError.call(void 0, rawErr, logger(), {}, true);
|
|
3242
3297
|
response = { err };
|
|
3243
3298
|
}
|
|
3244
3299
|
return c.body(cbor4.encode(response));
|
|
@@ -3248,31 +3303,62 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3248
3303
|
const upgradeWebSocket = (_a2 = runConfig.getUpgradeWebSocket) == null ? void 0 : _a2.call(runConfig);
|
|
3249
3304
|
_invariant2.default.call(void 0, upgradeWebSocket, "websockets not supported on this platform");
|
|
3250
3305
|
return upgradeWebSocket(async (c2) => {
|
|
3251
|
-
const
|
|
3252
|
-
|
|
3253
|
-
|
|
3254
|
-
|
|
3255
|
-
|
|
3256
|
-
|
|
3257
|
-
|
|
3306
|
+
const protocolHeader = c2.req.header("sec-websocket-protocol") || "";
|
|
3307
|
+
const protocols = protocolHeader.split(/,\s*/);
|
|
3308
|
+
let actorId = "";
|
|
3309
|
+
let encoding = "bare";
|
|
3310
|
+
let transport = "websocket";
|
|
3311
|
+
let path3 = "";
|
|
3312
|
+
let params;
|
|
3313
|
+
let connId;
|
|
3314
|
+
let connToken;
|
|
3315
|
+
for (const protocol of protocols) {
|
|
3316
|
+
if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ACTOR)) {
|
|
3317
|
+
actorId = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_ACTOR.length);
|
|
3318
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING)) {
|
|
3319
|
+
encoding = protocol.substring(
|
|
3320
|
+
_chunkSAZCNSVYcjs.WS_PROTOCOL_ENCODING.length
|
|
3321
|
+
);
|
|
3322
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_TRANSPORT)) {
|
|
3323
|
+
transport = protocol.substring(
|
|
3324
|
+
_chunkSAZCNSVYcjs.WS_PROTOCOL_TRANSPORT.length
|
|
3325
|
+
);
|
|
3326
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_PATH)) {
|
|
3327
|
+
path3 = decodeURIComponent(
|
|
3328
|
+
protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_PATH.length)
|
|
3329
|
+
);
|
|
3330
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS)) {
|
|
3331
|
+
const paramsRaw = decodeURIComponent(
|
|
3332
|
+
protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_PARAMS.length)
|
|
3333
|
+
);
|
|
3334
|
+
params = JSON.parse(paramsRaw);
|
|
3335
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID)) {
|
|
3336
|
+
connId = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_ID.length);
|
|
3337
|
+
} else if (protocol.startsWith(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN)) {
|
|
3338
|
+
connToken = protocol.substring(_chunkSAZCNSVYcjs.WS_PROTOCOL_CONN_TOKEN.length);
|
|
3339
|
+
}
|
|
3340
|
+
}
|
|
3258
3341
|
logger().debug({
|
|
3259
3342
|
msg: "received test inline driver websocket",
|
|
3260
3343
|
actorId,
|
|
3261
3344
|
params,
|
|
3262
|
-
encodingKind,
|
|
3345
|
+
encodingKind: encoding,
|
|
3346
|
+
transport,
|
|
3263
3347
|
path: path3
|
|
3264
3348
|
});
|
|
3265
3349
|
const clientWsPromise = managerDriver.openWebSocket(
|
|
3266
3350
|
path3,
|
|
3267
3351
|
actorId,
|
|
3268
|
-
|
|
3269
|
-
params
|
|
3352
|
+
encoding,
|
|
3353
|
+
params,
|
|
3354
|
+
connId,
|
|
3355
|
+
connToken
|
|
3270
3356
|
);
|
|
3271
|
-
return await createTestWebSocketProxy(clientWsPromise
|
|
3272
|
-
})(c,
|
|
3357
|
+
return await createTestWebSocketProxy(clientWsPromise);
|
|
3358
|
+
})(c, _chunk6EUWRXLTcjs.noopNext.call(void 0, ));
|
|
3273
3359
|
});
|
|
3274
3360
|
router.all(".test/inline-driver/send-request/*", async (c) => {
|
|
3275
|
-
const actorId = c.req.header(
|
|
3361
|
+
const actorId = c.req.header(_chunkSAZCNSVYcjs.HEADER_ACTOR_ID);
|
|
3276
3362
|
if (!actorId) {
|
|
3277
3363
|
return c.text("Missing required headers", 400);
|
|
3278
3364
|
}
|
|
@@ -3291,16 +3377,17 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3291
3377
|
new Request(`http://actor/${pathWithQuery}`, {
|
|
3292
3378
|
method: c.req.method,
|
|
3293
3379
|
headers: c.req.raw.headers,
|
|
3294
|
-
body: c.req.raw.body
|
|
3380
|
+
body: c.req.raw.body,
|
|
3381
|
+
duplex: "half"
|
|
3295
3382
|
})
|
|
3296
3383
|
);
|
|
3297
3384
|
return response;
|
|
3298
3385
|
} catch (error) {
|
|
3299
3386
|
logger().error({
|
|
3300
3387
|
msg: "error in test inline raw http",
|
|
3301
|
-
error:
|
|
3388
|
+
error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
|
|
3302
3389
|
});
|
|
3303
|
-
const err =
|
|
3390
|
+
const err = _chunk6EUWRXLTcjs.deconstructError.call(void 0, error, logger(), {}, true);
|
|
3304
3391
|
return c.json(
|
|
3305
3392
|
{
|
|
3306
3393
|
error: {
|
|
@@ -3313,186 +3400,76 @@ function createManagerRouter(registryConfig, runConfig, managerDriver, validateB
|
|
|
3313
3400
|
);
|
|
3314
3401
|
}
|
|
3315
3402
|
});
|
|
3403
|
+
router.post("/.test/force-disconnect", async (c) => {
|
|
3404
|
+
const actorId = c.req.query("actor");
|
|
3405
|
+
const connId = c.req.query("conn");
|
|
3406
|
+
if (!actorId || !connId) {
|
|
3407
|
+
return c.text("Missing actor or conn query parameters", 400);
|
|
3408
|
+
}
|
|
3409
|
+
logger().debug({
|
|
3410
|
+
msg: "forcing unclean disconnect",
|
|
3411
|
+
actorId,
|
|
3412
|
+
connId
|
|
3413
|
+
});
|
|
3414
|
+
try {
|
|
3415
|
+
const response = await managerDriver.sendRequest(
|
|
3416
|
+
actorId,
|
|
3417
|
+
new Request(`http://actor/.test/force-disconnect?conn=${connId}`, {
|
|
3418
|
+
method: "POST"
|
|
3419
|
+
})
|
|
3420
|
+
);
|
|
3421
|
+
if (!response.ok) {
|
|
3422
|
+
const text = await response.text();
|
|
3423
|
+
return c.text(
|
|
3424
|
+
`Failed to force disconnect: ${text}`,
|
|
3425
|
+
response.status
|
|
3426
|
+
);
|
|
3427
|
+
}
|
|
3428
|
+
return c.json({ success: true });
|
|
3429
|
+
} catch (error) {
|
|
3430
|
+
logger().error({
|
|
3431
|
+
msg: "error forcing disconnect",
|
|
3432
|
+
error: _chunk6EUWRXLTcjs.stringifyError.call(void 0, error)
|
|
3433
|
+
});
|
|
3434
|
+
return c.text(`Error: ${error}`, 500);
|
|
3435
|
+
}
|
|
3436
|
+
});
|
|
3316
3437
|
}
|
|
3438
|
+
router.get("/health", cors2, (c) => {
|
|
3439
|
+
return c.text("ok");
|
|
3440
|
+
});
|
|
3317
3441
|
(_a = managerDriver.modifyManagerRouter) == null ? void 0 : _a.call(
|
|
3318
3442
|
managerDriver,
|
|
3319
3443
|
registryConfig,
|
|
3320
3444
|
router
|
|
3321
3445
|
);
|
|
3322
|
-
if ((
|
|
3446
|
+
if (_chunkG4ABMAQYcjs.isInspectorEnabled.call(void 0, runConfig, "manager")) {
|
|
3323
3447
|
if (!managerDriver.inspector) {
|
|
3324
3448
|
throw new (0, _chunk5QGQK44Lcjs.Unsupported)("inspector");
|
|
3325
3449
|
}
|
|
3326
3450
|
router.route(
|
|
3327
3451
|
"/inspect",
|
|
3328
|
-
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(secureInspector(runConfig)).use((c, next) => {
|
|
3452
|
+
new (0, _hono.Hono)().use(_cors.cors.call(void 0, runConfig.inspector.cors)).use(_chunkG4ABMAQYcjs.secureInspector.call(void 0, runConfig)).use((c, next) => {
|
|
3329
3453
|
c.set("inspector", managerDriver.inspector);
|
|
3330
3454
|
return next();
|
|
3331
3455
|
}).route("/", createManagerInspectorRouter())
|
|
3332
3456
|
);
|
|
3333
3457
|
}
|
|
3334
|
-
router.notFound(handleRouteNotFound);
|
|
3335
|
-
router.onError(handleRouteError);
|
|
3336
|
-
return { router, openapi: router };
|
|
3337
3458
|
}
|
|
3338
|
-
|
|
3339
|
-
let clientWs = null;
|
|
3340
|
-
try {
|
|
3341
|
-
logger().debug({ msg: "awaiting client websocket promise" });
|
|
3342
|
-
const ws = await clientWsPromise;
|
|
3343
|
-
clientWs = ws;
|
|
3344
|
-
logger().debug({
|
|
3345
|
-
msg: "client websocket promise resolved",
|
|
3346
|
-
constructor: ws == null ? void 0 : ws.constructor.name
|
|
3347
|
-
});
|
|
3348
|
-
await new Promise((resolve, reject) => {
|
|
3349
|
-
const onOpen = () => {
|
|
3350
|
-
logger().debug({ msg: "test websocket connection opened" });
|
|
3351
|
-
resolve();
|
|
3352
|
-
};
|
|
3353
|
-
const onError = (error) => {
|
|
3354
|
-
logger().error({ msg: "test websocket connection failed", error });
|
|
3355
|
-
reject(
|
|
3356
|
-
new Error(`Failed to open WebSocket: ${error.message || error}`)
|
|
3357
|
-
);
|
|
3358
|
-
};
|
|
3359
|
-
ws.addEventListener("open", onOpen);
|
|
3360
|
-
ws.addEventListener("error", onError);
|
|
3361
|
-
});
|
|
3362
|
-
} catch (error) {
|
|
3363
|
-
logger().error({
|
|
3364
|
-
msg: `failed to establish client ${connectionType} websocket connection`,
|
|
3365
|
-
error
|
|
3366
|
-
});
|
|
3367
|
-
return {
|
|
3368
|
-
onOpen: (_evt, serverWs) => {
|
|
3369
|
-
serverWs.close(1011, "Failed to establish connection");
|
|
3370
|
-
},
|
|
3371
|
-
onMessage: () => {
|
|
3372
|
-
},
|
|
3373
|
-
onError: () => {
|
|
3374
|
-
},
|
|
3375
|
-
onClose: () => {
|
|
3376
|
-
}
|
|
3377
|
-
};
|
|
3378
|
-
}
|
|
3459
|
+
function createApiActor(actor2) {
|
|
3379
3460
|
return {
|
|
3380
|
-
|
|
3381
|
-
|
|
3382
|
-
|
|
3383
|
-
|
|
3384
|
-
|
|
3385
|
-
|
|
3386
|
-
|
|
3387
|
-
|
|
3388
|
-
|
|
3389
|
-
|
|
3390
|
-
|
|
3391
|
-
|
|
3392
|
-
logger().debug({
|
|
3393
|
-
msg: `test ${connectionType} websocket connection message from client`,
|
|
3394
|
-
dataType: typeof clientEvt.data,
|
|
3395
|
-
isBlob: clientEvt.data instanceof Blob,
|
|
3396
|
-
isArrayBuffer: clientEvt.data instanceof ArrayBuffer,
|
|
3397
|
-
dataConstructor: (_b = (_a = clientEvt.data) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name,
|
|
3398
|
-
dataStr: typeof clientEvt.data === "string" ? clientEvt.data.substring(0, 100) : void 0
|
|
3399
|
-
});
|
|
3400
|
-
if (serverWs.readyState === 1) {
|
|
3401
|
-
if (clientEvt.data instanceof Blob) {
|
|
3402
|
-
clientEvt.data.arrayBuffer().then((buffer) => {
|
|
3403
|
-
logger().debug({
|
|
3404
|
-
msg: "converted client blob to arraybuffer, sending to server",
|
|
3405
|
-
bufferSize: buffer.byteLength
|
|
3406
|
-
});
|
|
3407
|
-
serverWs.send(buffer);
|
|
3408
|
-
}).catch((error) => {
|
|
3409
|
-
logger().error({
|
|
3410
|
-
msg: "failed to convert blob to arraybuffer",
|
|
3411
|
-
error
|
|
3412
|
-
});
|
|
3413
|
-
});
|
|
3414
|
-
} else {
|
|
3415
|
-
logger().debug({
|
|
3416
|
-
msg: "sending client data directly to server",
|
|
3417
|
-
dataType: typeof clientEvt.data,
|
|
3418
|
-
dataLength: typeof clientEvt.data === "string" ? clientEvt.data.length : void 0
|
|
3419
|
-
});
|
|
3420
|
-
serverWs.send(clientEvt.data);
|
|
3421
|
-
}
|
|
3422
|
-
}
|
|
3423
|
-
});
|
|
3424
|
-
clientWs.addEventListener("close", (clientEvt) => {
|
|
3425
|
-
logger().debug({
|
|
3426
|
-
msg: `test ${connectionType} websocket connection closed`
|
|
3427
|
-
});
|
|
3428
|
-
if (serverWs.readyState !== 3) {
|
|
3429
|
-
serverWs.close(clientEvt.code, clientEvt.reason);
|
|
3430
|
-
}
|
|
3431
|
-
});
|
|
3432
|
-
clientWs.addEventListener("error", () => {
|
|
3433
|
-
logger().debug({
|
|
3434
|
-
msg: `test ${connectionType} websocket connection error`
|
|
3435
|
-
});
|
|
3436
|
-
if (serverWs.readyState !== 3) {
|
|
3437
|
-
serverWs.close(1011, "Error in client websocket");
|
|
3438
|
-
}
|
|
3439
|
-
});
|
|
3440
|
-
},
|
|
3441
|
-
onMessage: (evt) => {
|
|
3442
|
-
var _a, _b;
|
|
3443
|
-
logger().debug({
|
|
3444
|
-
msg: "received message from server",
|
|
3445
|
-
dataType: typeof evt.data,
|
|
3446
|
-
isBlob: evt.data instanceof Blob,
|
|
3447
|
-
isArrayBuffer: evt.data instanceof ArrayBuffer,
|
|
3448
|
-
dataConstructor: (_b = (_a = evt.data) == null ? void 0 : _a.constructor) == null ? void 0 : _b.name,
|
|
3449
|
-
dataStr: typeof evt.data === "string" ? evt.data.substring(0, 100) : void 0
|
|
3450
|
-
});
|
|
3451
|
-
if (clientWs.readyState === 1) {
|
|
3452
|
-
if (evt.data instanceof Blob) {
|
|
3453
|
-
evt.data.arrayBuffer().then((buffer) => {
|
|
3454
|
-
logger().debug({
|
|
3455
|
-
msg: "converted blob to arraybuffer, sending",
|
|
3456
|
-
bufferSize: buffer.byteLength
|
|
3457
|
-
});
|
|
3458
|
-
clientWs.send(buffer);
|
|
3459
|
-
}).catch((error) => {
|
|
3460
|
-
logger().error({
|
|
3461
|
-
msg: "failed to convert blob to arraybuffer",
|
|
3462
|
-
error
|
|
3463
|
-
});
|
|
3464
|
-
});
|
|
3465
|
-
} else {
|
|
3466
|
-
logger().debug({
|
|
3467
|
-
msg: "sending data directly",
|
|
3468
|
-
dataType: typeof evt.data,
|
|
3469
|
-
dataLength: typeof evt.data === "string" ? evt.data.length : void 0
|
|
3470
|
-
});
|
|
3471
|
-
clientWs.send(evt.data);
|
|
3472
|
-
}
|
|
3473
|
-
}
|
|
3474
|
-
},
|
|
3475
|
-
onClose: (event, serverWs) => {
|
|
3476
|
-
logger().debug({
|
|
3477
|
-
msg: `server ${connectionType} websocket closed`,
|
|
3478
|
-
wasClean: event.wasClean,
|
|
3479
|
-
code: event.code,
|
|
3480
|
-
reason: event.reason
|
|
3481
|
-
});
|
|
3482
|
-
serverWs.close(1e3, "hack_force_close");
|
|
3483
|
-
if (clientWs && clientWs.readyState !== clientWs.CLOSED && clientWs.readyState !== clientWs.CLOSING) {
|
|
3484
|
-
clientWs.close(1e3, event.reason);
|
|
3485
|
-
}
|
|
3486
|
-
},
|
|
3487
|
-
onError: (error) => {
|
|
3488
|
-
logger().error({
|
|
3489
|
-
msg: `error in server ${connectionType} websocket`,
|
|
3490
|
-
error
|
|
3491
|
-
});
|
|
3492
|
-
if (clientWs && clientWs.readyState !== clientWs.CLOSED && clientWs.readyState !== clientWs.CLOSING) {
|
|
3493
|
-
clientWs.close(1011, "Error in server websocket");
|
|
3494
|
-
}
|
|
3495
|
-
}
|
|
3461
|
+
actor_id: actor2.actorId,
|
|
3462
|
+
name: actor2.name,
|
|
3463
|
+
key: _chunk5ZOHIKWGcjs.serializeActorKey.call(void 0, actor2.key),
|
|
3464
|
+
namespace_id: "default",
|
|
3465
|
+
// Assert default namespace
|
|
3466
|
+
runner_name_selector: "rivetkit",
|
|
3467
|
+
// Assert rivetkit runner
|
|
3468
|
+
create_ts: Date.now(),
|
|
3469
|
+
connectable_ts: null,
|
|
3470
|
+
destroy_ts: null,
|
|
3471
|
+
sleep_ts: null,
|
|
3472
|
+
start_ts: null
|
|
3496
3473
|
};
|
|
3497
3474
|
}
|
|
3498
3475
|
|
|
@@ -3517,7 +3494,7 @@ var RegistryConfigSchema = _zod.z.object({
|
|
|
3517
3494
|
|
|
3518
3495
|
// src/registry/log.ts
|
|
3519
3496
|
function logger6() {
|
|
3520
|
-
return
|
|
3497
|
+
return _chunk3MBP4WNCcjs.getLogger.call(void 0, "registry");
|
|
3521
3498
|
}
|
|
3522
3499
|
|
|
3523
3500
|
// src/registry/serve.ts
|
|
@@ -3576,20 +3553,20 @@ var Registry = class {
|
|
|
3576
3553
|
* Runs the registry for a server.
|
|
3577
3554
|
*/
|
|
3578
3555
|
start(inputConfig) {
|
|
3579
|
-
var _a, _b, _c
|
|
3580
|
-
const config2 =
|
|
3556
|
+
var _a, _b, _c;
|
|
3557
|
+
const config2 = _chunkDFS77KAAcjs.RunConfigSchema.parse(inputConfig);
|
|
3581
3558
|
if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
|
|
3582
|
-
|
|
3559
|
+
_chunk3MBP4WNCcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
|
|
3583
3560
|
} else {
|
|
3584
|
-
|
|
3561
|
+
_chunk3MBP4WNCcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
|
|
3585
3562
|
}
|
|
3586
3563
|
const driver = chooseDefaultDriver(config2);
|
|
3587
3564
|
if (driver.name === "engine") {
|
|
3588
|
-
config2.inspector.enabled = false;
|
|
3565
|
+
config2.inspector.enabled = { manager: false, actor: true };
|
|
3589
3566
|
config2.disableServer = true;
|
|
3590
3567
|
}
|
|
3591
3568
|
if (driver.name === "cloudflare-workers") {
|
|
3592
|
-
config2.inspector.enabled = false;
|
|
3569
|
+
config2.inspector.enabled = { manager: false, actor: true };
|
|
3593
3570
|
config2.disableServer = true;
|
|
3594
3571
|
config2.disableActorDriver = true;
|
|
3595
3572
|
config2.noWelcome = true;
|
|
@@ -3599,13 +3576,83 @@ var Registry = class {
|
|
|
3599
3576
|
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3600
3577
|
}
|
|
3601
3578
|
const managerDriver = driver.manager(this.#config, config2);
|
|
3579
|
+
_chunkG4ABMAQYcjs.configureInspectorAccessToken.call(void 0, config2, managerDriver);
|
|
3580
|
+
const client = _chunk5ZOHIKWGcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3581
|
+
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3582
|
+
logger6().info({
|
|
3583
|
+
msg: "rivetkit ready",
|
|
3584
|
+
driver: driver.name,
|
|
3585
|
+
definitions: Object.keys(this.#config.use).length,
|
|
3586
|
+
...driverLog
|
|
3587
|
+
});
|
|
3588
|
+
if (_chunkG4ABMAQYcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3589
|
+
logger6().info({ msg: "inspector ready", url: _chunkG4ABMAQYcjs.getInspectorUrl.call(void 0, config2) });
|
|
3590
|
+
}
|
|
3591
|
+
if (!config2.noWelcome) {
|
|
3592
|
+
const displayInfo = managerDriver.displayInformation();
|
|
3593
|
+
console.log();
|
|
3594
|
+
console.log(` RivetKit ${_chunk6EUWRXLTcjs.package_default.version} (${displayInfo.name})`);
|
|
3595
|
+
console.log(` - Endpoint: http://127.0.0.1:6420`);
|
|
3596
|
+
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3597
|
+
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3598
|
+
console.log(` - ${k}:${padding}${v}`);
|
|
3599
|
+
}
|
|
3600
|
+
if (_chunkG4ABMAQYcjs.isInspectorEnabled.call(void 0, config2, "manager") && managerDriver.inspector) {
|
|
3601
|
+
console.log(` - Inspector: ${_chunkG4ABMAQYcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
3602
|
+
}
|
|
3603
|
+
console.log();
|
|
3604
|
+
}
|
|
3605
|
+
if (!config2.disableActorDriver) {
|
|
3606
|
+
const _actorDriver = driver.actor(
|
|
3607
|
+
this.#config,
|
|
3608
|
+
config2,
|
|
3609
|
+
managerDriver,
|
|
3610
|
+
client
|
|
3611
|
+
);
|
|
3612
|
+
}
|
|
3602
3613
|
const { router: hono } = createManagerRouter(
|
|
3603
3614
|
this.#config,
|
|
3604
3615
|
config2,
|
|
3605
3616
|
managerDriver,
|
|
3606
|
-
|
|
3617
|
+
void 0
|
|
3607
3618
|
);
|
|
3608
|
-
|
|
3619
|
+
if (!config2.disableServer) {
|
|
3620
|
+
(async () => {
|
|
3621
|
+
const out = await crossPlatformServe(hono, void 0);
|
|
3622
|
+
upgradeWebSocket = out.upgradeWebSocket;
|
|
3623
|
+
})();
|
|
3624
|
+
}
|
|
3625
|
+
return {
|
|
3626
|
+
client,
|
|
3627
|
+
fetch: hono.fetch.bind(hono)
|
|
3628
|
+
};
|
|
3629
|
+
}
|
|
3630
|
+
startServerless(inputConfig) {
|
|
3631
|
+
var _a, _b, _c, _d, _e;
|
|
3632
|
+
const config2 = _chunkDFS77KAAcjs.RunConfigSchema.parse(inputConfig);
|
|
3633
|
+
if ((_a = config2.logging) == null ? void 0 : _a.baseLogger) {
|
|
3634
|
+
_chunk3MBP4WNCcjs.configureBaseLogger.call(void 0, config2.logging.baseLogger);
|
|
3635
|
+
} else {
|
|
3636
|
+
_chunk3MBP4WNCcjs.configureDefaultLogger.call(void 0, (_b = config2.logging) == null ? void 0 : _b.level);
|
|
3637
|
+
}
|
|
3638
|
+
const driver = chooseDefaultDriver(config2);
|
|
3639
|
+
if (driver.name === "engine") {
|
|
3640
|
+
config2.inspector.enabled = false;
|
|
3641
|
+
config2.disableServer = true;
|
|
3642
|
+
config2.disableActorDriver = true;
|
|
3643
|
+
}
|
|
3644
|
+
if (driver.name === "cloudflare-workers") {
|
|
3645
|
+
config2.inspector.enabled = false;
|
|
3646
|
+
config2.disableServer = true;
|
|
3647
|
+
config2.disableActorDriver = true;
|
|
3648
|
+
config2.noWelcome = true;
|
|
3649
|
+
}
|
|
3650
|
+
let upgradeWebSocket;
|
|
3651
|
+
if (!config2.getUpgradeWebSocket) {
|
|
3652
|
+
config2.getUpgradeWebSocket = () => upgradeWebSocket;
|
|
3653
|
+
}
|
|
3654
|
+
const managerDriver = driver.manager(this.#config, config2);
|
|
3655
|
+
const client = _chunk5ZOHIKWGcjs.createClientWithDriver.call(void 0, managerDriver, config2);
|
|
3609
3656
|
const driverLog = _nullishCoalesce(((_c = managerDriver.extraStartupLog) == null ? void 0 : _c.call(managerDriver)), () => ( {}));
|
|
3610
3657
|
logger6().info({
|
|
3611
3658
|
msg: "rivetkit ready",
|
|
@@ -3614,30 +3661,35 @@ var Registry = class {
|
|
|
3614
3661
|
...driverLog
|
|
3615
3662
|
});
|
|
3616
3663
|
if (((_d = config2.inspector) == null ? void 0 : _d.enabled) && managerDriver.inspector) {
|
|
3617
|
-
logger6().info({ msg: "inspector ready", url: getInspectorUrl(config2) });
|
|
3664
|
+
logger6().info({ msg: "inspector ready", url: _chunkG4ABMAQYcjs.getInspectorUrl.call(void 0, config2) });
|
|
3618
3665
|
}
|
|
3619
3666
|
if (!config2.noWelcome) {
|
|
3620
3667
|
const displayInfo = managerDriver.displayInformation();
|
|
3621
3668
|
console.log();
|
|
3622
|
-
console.log(` RivetKit ${
|
|
3669
|
+
console.log(` RivetKit ${_chunk6EUWRXLTcjs.package_default.version} (${displayInfo.name})`);
|
|
3623
3670
|
console.log(` - Endpoint: http://127.0.0.1:6420`);
|
|
3624
3671
|
for (const [k, v] of Object.entries(displayInfo.properties)) {
|
|
3625
3672
|
const padding = " ".repeat(Math.max(0, 13 - k.length));
|
|
3626
3673
|
console.log(` - ${k}:${padding}${v}`);
|
|
3627
3674
|
}
|
|
3628
3675
|
if (((_e = config2.inspector) == null ? void 0 : _e.enabled) && managerDriver.inspector) {
|
|
3629
|
-
console.log(` - Inspector: ${getInspectorUrl(config2)}`);
|
|
3676
|
+
console.log(` - Inspector: ${_chunkG4ABMAQYcjs.getInspectorUrl.call(void 0, config2)}`);
|
|
3630
3677
|
}
|
|
3631
3678
|
console.log();
|
|
3632
3679
|
}
|
|
3680
|
+
let serverlessActorDriverBuilder = () => {
|
|
3681
|
+
return driver.actor(this.#config, config2, managerDriver, client);
|
|
3682
|
+
};
|
|
3633
3683
|
if (!config2.disableActorDriver) {
|
|
3634
|
-
const _actorDriver =
|
|
3635
|
-
|
|
3636
|
-
config2,
|
|
3637
|
-
managerDriver,
|
|
3638
|
-
client
|
|
3639
|
-
);
|
|
3684
|
+
const _actorDriver = serverlessActorDriverBuilder();
|
|
3685
|
+
serverlessActorDriverBuilder = void 0;
|
|
3640
3686
|
}
|
|
3687
|
+
const { router: hono } = createManagerRouter(
|
|
3688
|
+
this.#config,
|
|
3689
|
+
config2,
|
|
3690
|
+
managerDriver,
|
|
3691
|
+
serverlessActorDriverBuilder
|
|
3692
|
+
);
|
|
3641
3693
|
if (!config2.disableServer) {
|
|
3642
3694
|
(async () => {
|
|
3643
3695
|
const out = await crossPlatformServe(hono, void 0);
|
|
@@ -3669,8 +3721,6 @@ function setup(input) {
|
|
|
3669
3721
|
|
|
3670
3722
|
|
|
3671
3723
|
|
|
3672
|
-
|
|
3673
|
-
|
|
3674
|
-
exports.GenericConnGlobalState = GenericConnGlobalState; exports.createGenericConnDrivers = createGenericConnDrivers; exports.handleWebSocketConnect = handleWebSocketConnect; exports.handleRawWebSocketHandler = handleRawWebSocketHandler; 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.RegistryConfigSchema = RegistryConfigSchema; exports.Registry = Registry; exports.setup = setup;
|
|
3724
|
+
exports.handleWebSocketConnect = handleWebSocketConnect; exports.handleRawWebSocketHandler = handleRawWebSocketHandler; 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.RegistryConfigSchema = RegistryConfigSchema; exports.Registry = Registry; exports.setup = setup;
|
|
3675
3725
|
//! These configs configs hold anything that's not platform-specific about running actors.
|
|
3676
|
-
//# sourceMappingURL=chunk-
|
|
3726
|
+
//# sourceMappingURL=chunk-3Y45CIF4.cjs.map
|