@rivetkit/rivetkit-native 0.0.0-pr.4652.130bc98 → 0.0.0-pr.4653.7179278

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.
Files changed (3) hide show
  1. package/index.d.ts +4 -0
  2. package/package.json +9 -9
  3. package/wrapper.js +44 -0
package/index.d.ts CHANGED
@@ -48,6 +48,10 @@ export interface JsKvEntry {
48
48
  export interface HibernatingRequestEntry {
49
49
  gatewayId: Buffer
50
50
  requestId: Buffer
51
+ envoyMessageIndex: number
52
+ rivetMessageIndex: number
53
+ path: string
54
+ headers?: Record<string, string>
51
55
  }
52
56
  /**
53
57
  * Start the native envoy client synchronously.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rivetkit/rivetkit-native",
3
- "version": "0.0.0-pr.4652.130bc98",
3
+ "version": "0.0.0-pr.4653.7179278",
4
4
  "description": "Native N-API addon for RivetKit providing envoy client and SQLite access",
5
5
  "license": "Apache-2.0",
6
6
  "main": "index.js",
@@ -49,15 +49,15 @@
49
49
  },
50
50
  "dependencies": {
51
51
  "@napi-rs/cli": "^2.18.4",
52
- "@rivetkit/engine-envoy-protocol": "0.0.0-pr.4652.130bc98"
52
+ "@rivetkit/engine-envoy-protocol": "0.0.0-pr.4653.7179278"
53
53
  },
54
54
  "optionalDependencies": {
55
- "@rivetkit/rivetkit-native-darwin-arm64": "0.0.0-pr.4652.130bc98",
56
- "@rivetkit/rivetkit-native-darwin-x64": "0.0.0-pr.4652.130bc98",
57
- "@rivetkit/rivetkit-native-linux-arm64-gnu": "0.0.0-pr.4652.130bc98",
58
- "@rivetkit/rivetkit-native-linux-arm64-musl": "0.0.0-pr.4652.130bc98",
59
- "@rivetkit/rivetkit-native-linux-x64-gnu": "0.0.0-pr.4652.130bc98",
60
- "@rivetkit/rivetkit-native-linux-x64-musl": "0.0.0-pr.4652.130bc98",
61
- "@rivetkit/rivetkit-native-win32-x64-msvc": "0.0.0-pr.4652.130bc98"
55
+ "@rivetkit/rivetkit-native-darwin-arm64": "0.0.0-pr.4653.7179278",
56
+ "@rivetkit/rivetkit-native-darwin-x64": "0.0.0-pr.4653.7179278",
57
+ "@rivetkit/rivetkit-native-linux-arm64-gnu": "0.0.0-pr.4653.7179278",
58
+ "@rivetkit/rivetkit-native-linux-arm64-musl": "0.0.0-pr.4653.7179278",
59
+ "@rivetkit/rivetkit-native-linux-x64-gnu": "0.0.0-pr.4653.7179278",
60
+ "@rivetkit/rivetkit-native-linux-x64-musl": "0.0.0-pr.4653.7179278",
61
+ "@rivetkit/rivetkit-native-win32-x64-msvc": "0.0.0-pr.4653.7179278"
62
62
  }
63
63
  }
package/wrapper.js CHANGED
@@ -98,6 +98,10 @@ function wrapHandle(jsHandle) {
98
98
  const requests = (metaEntries || []).map((e) => ({
99
99
  gatewayId: Buffer.from(e.gatewayId),
100
100
  requestId: Buffer.from(e.requestId),
101
+ envoyMessageIndex: e.envoyMessageIndex ?? 0,
102
+ rivetMessageIndex: e.rivetMessageIndex ?? 0,
103
+ path: e.path ?? "",
104
+ headers: e.headers ?? {},
101
105
  }));
102
106
  jsHandle.restoreHibernatingRequests(actorId, requests);
103
107
  },
@@ -308,6 +312,46 @@ function handleEvent(event, config, wrappedHandle) {
308
312
  );
309
313
  break;
310
314
  }
315
+ case "websocket_can_hibernate": {
316
+ const gatewayId = Buffer.from(event.gatewayId);
317
+ const requestId = Buffer.from(event.requestId);
318
+ const headers = new Headers(event.headers || {});
319
+ headers.set("Upgrade", "websocket");
320
+ headers.set("Connection", "Upgrade");
321
+ const request = new Request(`http://actor${event.path}`, {
322
+ method: event.method,
323
+ headers,
324
+ });
325
+
326
+ Promise.resolve(
327
+ config.hibernatableWebSocket
328
+ ? config.hibernatableWebSocket.canHibernate(
329
+ event.actorId,
330
+ gatewayId,
331
+ requestId,
332
+ request,
333
+ )
334
+ : false,
335
+ ).then(
336
+ async (canHibernate) => {
337
+ if (handle._raw) {
338
+ await handle._raw.respondCallback(event.responseId, {
339
+ canHibernate: Boolean(canHibernate),
340
+ });
341
+ }
342
+ },
343
+ async (err) => {
344
+ console.error("canHibernate error:", err);
345
+ if (handle._raw) {
346
+ await handle._raw.respondCallback(event.responseId, {
347
+ canHibernate: false,
348
+ error: String(err),
349
+ });
350
+ }
351
+ },
352
+ );
353
+ break;
354
+ }
311
355
  case "websocket_open": {
312
356
  if (config.websocket) {
313
357
  const messageId = Buffer.from(event.messageId);