@rivetkit/engine-runner 0.0.0-pr.4673.d7d209b → 0.0.0-pr.4674.b6084cc
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/mod.cjs +8 -27
- package/dist/mod.cjs.map +1 -1
- package/dist/mod.js +10 -29
- package/dist/mod.js.map +1 -1
- package/package.json +3 -3
- package/src/mod.ts +6 -5
- package/src/tunnel.ts +1 -7
- package/src/websocket-tunnel-adapter.ts +12 -49
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rivetkit/engine-runner",
|
|
3
|
-
"version": "0.0.0-pr.
|
|
3
|
+
"version": "0.0.0-pr.4674.b6084cc",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"files": [
|
|
6
6
|
"dist",
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
"bench": "tsx benches/actor-lifecycle.bench.ts"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@rivetkit/virtual-websocket": "0.0.0-pr.
|
|
29
|
-
"@rivetkit/engine-runner-protocol": "0.0.0-pr.
|
|
28
|
+
"@rivetkit/virtual-websocket": "0.0.0-pr.4674.b6084cc",
|
|
29
|
+
"@rivetkit/engine-runner-protocol": "0.0.0-pr.4674.b6084cc",
|
|
30
30
|
"uuid": "^12.0.0",
|
|
31
31
|
"pino": "^9.9.5",
|
|
32
32
|
"ws": "^8.18.3"
|
package/src/mod.ts
CHANGED
|
@@ -12,7 +12,9 @@ import {
|
|
|
12
12
|
unreachable,
|
|
13
13
|
} from "./utils";
|
|
14
14
|
import { importWebSocket } from "./websocket.js";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
v4 as uuidv4,
|
|
17
|
+
} from "uuid";
|
|
16
18
|
|
|
17
19
|
export type { HibernatingWebSocketMetadata };
|
|
18
20
|
export { RunnerActor, type ActorConfig };
|
|
@@ -1251,10 +1253,9 @@ export class Runner {
|
|
|
1251
1253
|
actorState = {
|
|
1252
1254
|
tag: "ActorStateStopped",
|
|
1253
1255
|
val: {
|
|
1254
|
-
code:
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
: protocol.StopCode.Error,
|
|
1256
|
+
code: actor.stopIntentSent || this.#draining
|
|
1257
|
+
? protocol.StopCode.Ok
|
|
1258
|
+
: protocol.StopCode.Error,
|
|
1258
1259
|
message: null,
|
|
1259
1260
|
},
|
|
1260
1261
|
};
|
package/src/tunnel.ts
CHANGED
|
@@ -10,13 +10,7 @@ import {
|
|
|
10
10
|
stringifyToClientTunnelMessageKind,
|
|
11
11
|
stringifyToServerTunnelMessageKind,
|
|
12
12
|
} from "./stringify";
|
|
13
|
-
import {
|
|
14
|
-
arraysEqual,
|
|
15
|
-
idToStr,
|
|
16
|
-
MAX_PAYLOAD_SIZE,
|
|
17
|
-
stringifyError,
|
|
18
|
-
unreachable,
|
|
19
|
-
} from "./utils";
|
|
13
|
+
import { arraysEqual, idToStr, MAX_PAYLOAD_SIZE, stringifyError, unreachable } from "./utils";
|
|
20
14
|
import {
|
|
21
15
|
HIBERNATABLE_SYMBOL,
|
|
22
16
|
WebSocketTunnelAdapter,
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import type { Logger } from "pino";
|
|
2
|
-
import {
|
|
3
|
-
VirtualWebSocket,
|
|
4
|
-
type UniversalWebSocket,
|
|
5
|
-
type RivetMessageEvent,
|
|
6
|
-
} from "@rivetkit/virtual-websocket";
|
|
2
|
+
import { VirtualWebSocket, type UniversalWebSocket, type RivetMessageEvent } from "@rivetkit/virtual-websocket";
|
|
7
3
|
import type { Tunnel } from "./tunnel";
|
|
8
|
-
import {
|
|
9
|
-
MAX_PAYLOAD_SIZE,
|
|
10
|
-
wrappingAddU16,
|
|
11
|
-
wrappingLteU16,
|
|
12
|
-
wrappingSubU16,
|
|
13
|
-
} from "./utils";
|
|
4
|
+
import { MAX_PAYLOAD_SIZE, wrappingAddU16, wrappingLteU16, wrappingSubU16 } from "./utils";
|
|
14
5
|
|
|
15
6
|
export const HIBERNATABLE_SYMBOL = Symbol("hibernatable");
|
|
16
7
|
|
|
@@ -86,28 +77,18 @@ export class WebSocketTunnelAdapter {
|
|
|
86
77
|
|
|
87
78
|
messageData = data;
|
|
88
79
|
} else if (data instanceof ArrayBuffer) {
|
|
89
|
-
if (data.byteLength > MAX_PAYLOAD_SIZE)
|
|
90
|
-
throw new Error("WebSocket message too large");
|
|
80
|
+
if (data.byteLength > MAX_PAYLOAD_SIZE) throw new Error("WebSocket message too large");
|
|
91
81
|
|
|
92
82
|
isBinary = true;
|
|
93
83
|
messageData = data;
|
|
94
84
|
} else if (ArrayBuffer.isView(data)) {
|
|
95
|
-
if (data.byteLength > MAX_PAYLOAD_SIZE)
|
|
96
|
-
throw new Error("WebSocket message too large");
|
|
85
|
+
if (data.byteLength > MAX_PAYLOAD_SIZE) throw new Error("WebSocket message too large");
|
|
97
86
|
|
|
98
87
|
isBinary = true;
|
|
99
88
|
const view = data;
|
|
100
|
-
const buffer =
|
|
101
|
-
view.buffer
|
|
102
|
-
|
|
103
|
-
view.buffer,
|
|
104
|
-
view.byteOffset,
|
|
105
|
-
view.byteLength,
|
|
106
|
-
).slice().buffer
|
|
107
|
-
: view.buffer.slice(
|
|
108
|
-
view.byteOffset,
|
|
109
|
-
view.byteOffset + view.byteLength,
|
|
110
|
-
);
|
|
89
|
+
const buffer = view.buffer instanceof SharedArrayBuffer
|
|
90
|
+
? new Uint8Array(view.buffer, view.byteOffset, view.byteLength).slice().buffer
|
|
91
|
+
: view.buffer.slice(view.byteOffset, view.byteOffset + view.byteLength);
|
|
111
92
|
messageData = buffer as ArrayBuffer;
|
|
112
93
|
} else {
|
|
113
94
|
throw new Error("Unsupported data type");
|
|
@@ -120,11 +101,7 @@ export class WebSocketTunnelAdapter {
|
|
|
120
101
|
_handleOpen(requestId: ArrayBuffer): void {
|
|
121
102
|
if (this.#readyState !== 0) return;
|
|
122
103
|
this.#readyState = 1;
|
|
123
|
-
this.#ws.dispatchEvent({
|
|
124
|
-
type: "open",
|
|
125
|
-
rivetRequestId: requestId,
|
|
126
|
-
target: this.#ws,
|
|
127
|
-
});
|
|
104
|
+
this.#ws.dispatchEvent({ type: "open", rivetRequestId: requestId, target: this.#ws });
|
|
128
105
|
}
|
|
129
106
|
|
|
130
107
|
// Called by Tunnel when message is received
|
|
@@ -170,10 +147,7 @@ export class WebSocketTunnelAdapter {
|
|
|
170
147
|
expectedIndex,
|
|
171
148
|
receivedIndex: serverMessageIndex,
|
|
172
149
|
closeReason,
|
|
173
|
-
gap: wrappingSubU16(
|
|
174
|
-
wrappingSubU16(serverMessageIndex, previousIndex),
|
|
175
|
-
1,
|
|
176
|
-
),
|
|
150
|
+
gap: wrappingSubU16(wrappingSubU16(serverMessageIndex, previousIndex), 1),
|
|
177
151
|
});
|
|
178
152
|
this.#close(1008, closeReason, true);
|
|
179
153
|
return true;
|
|
@@ -188,10 +162,7 @@ export class WebSocketTunnelAdapter {
|
|
|
188
162
|
if (this.#binaryType === "nodebuffer") {
|
|
189
163
|
messageData = Buffer.from(data);
|
|
190
164
|
} else if (this.#binaryType === "arraybuffer") {
|
|
191
|
-
messageData = data.buffer.slice(
|
|
192
|
-
data.byteOffset,
|
|
193
|
-
data.byteOffset + data.byteLength,
|
|
194
|
-
);
|
|
165
|
+
messageData = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
|
|
195
166
|
}
|
|
196
167
|
}
|
|
197
168
|
|
|
@@ -207,11 +178,7 @@ export class WebSocketTunnelAdapter {
|
|
|
207
178
|
}
|
|
208
179
|
|
|
209
180
|
// Called by Tunnel when close is received
|
|
210
|
-
_handleClose(
|
|
211
|
-
_requestId: ArrayBuffer,
|
|
212
|
-
code?: number,
|
|
213
|
-
reason?: string,
|
|
214
|
-
): void {
|
|
181
|
+
_handleClose(_requestId: ArrayBuffer, code?: number, reason?: string): void {
|
|
215
182
|
this.#close(code, reason, true);
|
|
216
183
|
}
|
|
217
184
|
|
|
@@ -225,11 +192,7 @@ export class WebSocketTunnelAdapter {
|
|
|
225
192
|
this.#close(code, reason, true);
|
|
226
193
|
}
|
|
227
194
|
|
|
228
|
-
#close(
|
|
229
|
-
code: number | undefined,
|
|
230
|
-
reason: string | undefined,
|
|
231
|
-
sendCallback: boolean,
|
|
232
|
-
): void {
|
|
195
|
+
#close(code: number | undefined, reason: string | undefined, sendCallback: boolean): void {
|
|
233
196
|
if (this.#readyState >= 2) return;
|
|
234
197
|
|
|
235
198
|
this.#readyState = 2;
|