rivetkit 2.3.23 → 2.3.24

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 (73) hide show
  1. package/dist/browser/client.d.ts +3 -0
  2. package/dist/browser/client.js +36 -17
  3. package/dist/browser/client.js.map +1 -1
  4. package/dist/browser/inspector/client.js +1 -1
  5. package/dist/browser/inspector/client.js.map +1 -1
  6. package/dist/tsup/agent-os/index.cjs +1 -1
  7. package/dist/tsup/agent-os/index.cjs.map +1 -1
  8. package/dist/tsup/agent-os/index.js +1 -1
  9. package/dist/tsup/agent-os/index.js.map +1 -1
  10. package/dist/tsup/{chunk-CIWSGFQG.js → chunk-45WBFRBN.js} +2 -2
  11. package/dist/tsup/{chunk-UV5AN6YV.js → chunk-7OEOLF5T.js} +3 -3
  12. package/dist/tsup/{chunk-JLM6TML2.cjs → chunk-JOJ42ZLR.cjs} +3 -3
  13. package/dist/tsup/{chunk-JLM6TML2.cjs.map → chunk-JOJ42ZLR.cjs.map} +1 -1
  14. package/dist/tsup/{chunk-VJNX5RCS.cjs → chunk-L4AZXL2Q.cjs} +4 -4
  15. package/dist/tsup/{chunk-VJNX5RCS.cjs.map → chunk-L4AZXL2Q.cjs.map} +1 -1
  16. package/dist/tsup/{chunk-3Y7MKDLZ.cjs → chunk-NNM2X3ER.cjs} +2 -2
  17. package/dist/tsup/{chunk-3Y7MKDLZ.cjs.map → chunk-NNM2X3ER.cjs.map} +1 -1
  18. package/dist/tsup/{chunk-KC3T3MMB.js → chunk-NSNBWLCG.js} +2 -2
  19. package/dist/tsup/{chunk-Z3Z5EOSP.js → chunk-QMR2J7PT.js} +2 -2
  20. package/dist/tsup/{chunk-HO6UA2RJ.js → chunk-QZQE75U2.js} +2 -2
  21. package/dist/tsup/{chunk-LKNGMRIT.js → chunk-SW22GCYF.js} +30 -11
  22. package/dist/tsup/chunk-SW22GCYF.js.map +1 -0
  23. package/dist/tsup/{chunk-Z7QK4HTR.cjs → chunk-TMMZAGZL.cjs} +10 -10
  24. package/dist/tsup/{chunk-Z7QK4HTR.cjs.map → chunk-TMMZAGZL.cjs.map} +1 -1
  25. package/dist/tsup/{chunk-GZKR7ORE.cjs → chunk-TQNVNKDB.cjs} +165 -146
  26. package/dist/tsup/chunk-TQNVNKDB.cjs.map +1 -0
  27. package/dist/tsup/{chunk-7ZDC4XEA.js → chunk-UIPQ7RI4.js} +4 -4
  28. package/dist/tsup/{chunk-XUCVB6BD.cjs → chunk-WCSFWDKH.cjs} +3 -3
  29. package/dist/tsup/{chunk-XUCVB6BD.cjs.map → chunk-WCSFWDKH.cjs.map} +1 -1
  30. package/dist/tsup/{chunk-FVVRY42Y.cjs → chunk-WTZGJFD4.cjs} +7 -7
  31. package/dist/tsup/{chunk-FVVRY42Y.cjs.map → chunk-WTZGJFD4.cjs.map} +1 -1
  32. package/dist/tsup/{chunk-674WU4L6.js → chunk-YH2CAWLD.js} +2 -2
  33. package/dist/tsup/{chunk-674WU4L6.js.map → chunk-YH2CAWLD.js.map} +1 -1
  34. package/dist/tsup/{chunk-CRZJ74SA.cjs → chunk-ZCHJJ2FZ.cjs} +3 -3
  35. package/dist/tsup/{chunk-CRZJ74SA.cjs.map → chunk-ZCHJJ2FZ.cjs.map} +1 -1
  36. package/dist/tsup/client/mod.cjs +5 -5
  37. package/dist/tsup/client/mod.d.cts +3 -0
  38. package/dist/tsup/client/mod.d.ts +3 -0
  39. package/dist/tsup/client/mod.js +4 -4
  40. package/dist/tsup/common/log.cjs +2 -2
  41. package/dist/tsup/common/log.js +1 -1
  42. package/dist/tsup/common/websocket.cjs +3 -3
  43. package/dist/tsup/common/websocket.js +2 -2
  44. package/dist/tsup/db/drizzle.cjs +2 -2
  45. package/dist/tsup/db/drizzle.js +1 -1
  46. package/dist/tsup/db/mod.cjs +3 -3
  47. package/dist/tsup/db/mod.js +2 -2
  48. package/dist/tsup/inspector/mod.cjs +5 -5
  49. package/dist/tsup/inspector/mod.js +4 -4
  50. package/dist/tsup/inspector/workflow.cjs +4 -4
  51. package/dist/tsup/inspector/workflow.js +3 -3
  52. package/dist/tsup/mod.cjs +84 -84
  53. package/dist/tsup/mod.cjs.map +1 -1
  54. package/dist/tsup/mod.js +5 -5
  55. package/dist/tsup/test/mod.cjs +6 -6
  56. package/dist/tsup/test/mod.js +4 -4
  57. package/dist/tsup/utils.cjs +2 -2
  58. package/dist/tsup/utils.js +1 -1
  59. package/dist/tsup/workflow/mod.cjs +7 -7
  60. package/dist/tsup/workflow/mod.js +4 -4
  61. package/package.json +9 -9
  62. package/src/client/config.ts +3 -0
  63. package/src/client/raw-utils.ts +7 -2
  64. package/src/common/fetch-like.ts +14 -0
  65. package/src/engine-client/actor-http-client.ts +16 -6
  66. package/dist/tsup/chunk-GZKR7ORE.cjs.map +0 -1
  67. package/dist/tsup/chunk-LKNGMRIT.js.map +0 -1
  68. /package/dist/tsup/{chunk-CIWSGFQG.js.map → chunk-45WBFRBN.js.map} +0 -0
  69. /package/dist/tsup/{chunk-UV5AN6YV.js.map → chunk-7OEOLF5T.js.map} +0 -0
  70. /package/dist/tsup/{chunk-KC3T3MMB.js.map → chunk-NSNBWLCG.js.map} +0 -0
  71. /package/dist/tsup/{chunk-Z3Z5EOSP.js.map → chunk-QMR2J7PT.js.map} +0 -0
  72. /package/dist/tsup/{chunk-HO6UA2RJ.js.map → chunk-QZQE75U2.js.map} +0 -0
  73. /package/dist/tsup/{chunk-7ZDC4XEA.js.map → chunk-UIPQ7RI4.js.map} +0 -0
package/dist/tsup/mod.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  decodeWorkflowHistoryTransport
3
- } from "./chunk-Z3Z5EOSP.js";
3
+ } from "./chunk-QMR2J7PT.js";
4
4
  import {
5
5
  ACTOR_CONTEXT_INTERNAL_SYMBOL,
6
6
  ActorConfigSchema,
@@ -35,18 +35,18 @@ import {
35
35
  runWithActorInvocationSpan,
36
36
  tryParseEndpoint,
37
37
  updateRunnerConfig
38
- } from "./chunk-LKNGMRIT.js";
38
+ } from "./chunk-SW22GCYF.js";
39
39
  import {
40
40
  makePrefixedKey,
41
41
  removePrefixFromKey
42
42
  } from "./chunk-JI6GZ2C2.js";
43
+ import "./chunk-NSNBWLCG.js";
43
44
  import {
44
45
  bindNativeStateTransactionContext,
45
46
  db,
46
47
  registerNativeStateTransactionOpener
47
- } from "./chunk-HO6UA2RJ.js";
48
+ } from "./chunk-QZQE75U2.js";
48
49
  import "./chunk-JTHHCZCZ.js";
49
- import "./chunk-KC3T3MMB.js";
50
50
  import {
51
51
  LogLevelSchema,
52
52
  VERSION,
@@ -80,7 +80,7 @@ import {
80
80
  parsePortEnv,
81
81
  stringifyError,
82
82
  toUint8Array
83
- } from "./chunk-674WU4L6.js";
83
+ } from "./chunk-YH2CAWLD.js";
84
84
  import {
85
85
  INTERNAL_ERROR_CODE,
86
86
  RivetError,
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkFVVRY42Ycjs = require('../chunk-FVVRY42Y.cjs');
3
+ var _chunkWTZGJFD4cjs = require('../chunk-WTZGJFD4.cjs');
4
4
 
5
5
 
6
- var _chunkGZKR7OREcjs = require('../chunk-GZKR7ORE.cjs');
6
+ var _chunkTQNVNKDBcjs = require('../chunk-TQNVNKDB.cjs');
7
7
  require('../chunk-MYWZCDML.cjs');
8
+ require('../chunk-ZCHJJ2FZ.cjs');
8
9
  require('../chunk-KVFIONKQ.cjs');
9
- require('../chunk-CRZJ74SA.cjs');
10
- require('../chunk-3Y7MKDLZ.cjs');
10
+ require('../chunk-NNM2X3ER.cjs');
11
11
  require('../chunk-MGI2VVF6.cjs');
12
12
 
13
13
  // src/test/ready.ts
@@ -36,8 +36,8 @@ async function setupTest(c, registry) {
36
36
  registry.config.noWelcome = true;
37
37
  registry.start();
38
38
  await waitForRegistryReady(registry);
39
- const client = _chunkFVVRY42Ycjs.createClient.call(void 0, {
40
- ..._chunkGZKR7OREcjs.convertRegistryConfigToClientConfig.call(void 0, registry.parseConfig()),
39
+ const client = _chunkWTZGJFD4cjs.createClient.call(void 0, {
40
+ ..._chunkTQNVNKDBcjs.convertRegistryConfigToClientConfig.call(void 0, registry.parseConfig()),
41
41
  disableMetadataLookup: false
42
42
  });
43
43
  c.onTestFinished(async () => {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  createClient
3
- } from "../chunk-UV5AN6YV.js";
3
+ } from "../chunk-7OEOLF5T.js";
4
4
  import {
5
5
  convertRegistryConfigToClientConfig
6
- } from "../chunk-LKNGMRIT.js";
6
+ } from "../chunk-SW22GCYF.js";
7
7
  import "../chunk-JI6GZ2C2.js";
8
+ import "../chunk-NSNBWLCG.js";
8
9
  import "../chunk-JTHHCZCZ.js";
9
- import "../chunk-KC3T3MMB.js";
10
- import "../chunk-674WU4L6.js";
10
+ import "../chunk-YH2CAWLD.js";
11
11
  import "../chunk-ZOVJDAOW.js";
12
12
 
13
13
  // src/test/ready.ts
@@ -19,7 +19,7 @@
19
19
 
20
20
 
21
21
 
22
- var _chunk3Y7MKDLZcjs = require('./chunk-3Y7MKDLZ.cjs');
22
+ var _chunkNNM2X3ERcjs = require('./chunk-NNM2X3ER.cjs');
23
23
  require('./chunk-MGI2VVF6.cjs');
24
24
 
25
25
 
@@ -42,5 +42,5 @@ require('./chunk-MGI2VVF6.cjs');
42
42
 
43
43
 
44
44
 
45
- exports.EXTRA_ERROR_LOG = _chunk3Y7MKDLZcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunk3Y7MKDLZcjs.SinglePromiseQueue; exports.VERSION = _chunk3Y7MKDLZcjs.VERSION; exports.arrayBuffersEqual = _chunk3Y7MKDLZcjs.arrayBuffersEqual; exports.assertUnreachable = _chunk3Y7MKDLZcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunk3Y7MKDLZcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunk3Y7MKDLZcjs.combineUrlPath; exports.dbg = _chunk3Y7MKDLZcjs.dbg; exports.detectRuntime = _chunk3Y7MKDLZcjs.detectRuntime; exports.getEnvUniversal = _chunk3Y7MKDLZcjs.getEnvUniversal; exports.httpUserAgent = _chunk3Y7MKDLZcjs.httpUserAgent; exports.interval = _chunk3Y7MKDLZcjs.interval; exports.joinSignals = _chunk3Y7MKDLZcjs.joinSignals; exports.jsonParseCompat = _chunk3Y7MKDLZcjs.jsonParseCompat; exports.jsonStringifyCompat = _chunk3Y7MKDLZcjs.jsonStringifyCompat; exports.promiseWithResolvers = _chunk3Y7MKDLZcjs.promiseWithResolvers; exports.setLongTimeout = _chunk3Y7MKDLZcjs.setLongTimeout; exports.sleep = _chunk3Y7MKDLZcjs.sleep; exports.stringifyError = _chunk3Y7MKDLZcjs.stringifyError; exports.toUint8Array = _chunk3Y7MKDLZcjs.toUint8Array;
45
+ exports.EXTRA_ERROR_LOG = _chunkNNM2X3ERcjs.EXTRA_ERROR_LOG; exports.SinglePromiseQueue = _chunkNNM2X3ERcjs.SinglePromiseQueue; exports.VERSION = _chunkNNM2X3ERcjs.VERSION; exports.arrayBuffersEqual = _chunkNNM2X3ERcjs.arrayBuffersEqual; exports.assertUnreachable = _chunkNNM2X3ERcjs.assertUnreachable; exports.bufferToArrayBuffer = _chunkNNM2X3ERcjs.bufferToArrayBuffer; exports.combineUrlPath = _chunkNNM2X3ERcjs.combineUrlPath; exports.dbg = _chunkNNM2X3ERcjs.dbg; exports.detectRuntime = _chunkNNM2X3ERcjs.detectRuntime; exports.getEnvUniversal = _chunkNNM2X3ERcjs.getEnvUniversal; exports.httpUserAgent = _chunkNNM2X3ERcjs.httpUserAgent; exports.interval = _chunkNNM2X3ERcjs.interval; exports.joinSignals = _chunkNNM2X3ERcjs.joinSignals; exports.jsonParseCompat = _chunkNNM2X3ERcjs.jsonParseCompat; exports.jsonStringifyCompat = _chunkNNM2X3ERcjs.jsonStringifyCompat; exports.promiseWithResolvers = _chunkNNM2X3ERcjs.promiseWithResolvers; exports.setLongTimeout = _chunkNNM2X3ERcjs.setLongTimeout; exports.sleep = _chunkNNM2X3ERcjs.sleep; exports.stringifyError = _chunkNNM2X3ERcjs.stringifyError; exports.toUint8Array = _chunkNNM2X3ERcjs.toUint8Array;
46
46
  //# sourceMappingURL=utils.cjs.map
@@ -19,7 +19,7 @@ import {
19
19
  sleep,
20
20
  stringifyError,
21
21
  toUint8Array
22
- } from "./chunk-674WU4L6.js";
22
+ } from "./chunk-YH2CAWLD.js";
23
23
  import "./chunk-ZOVJDAOW.js";
24
24
  export {
25
25
  EXTRA_ERROR_LOG,
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } async function _asyncNullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return await rhsFn(); } } var _class; var _class2;
2
2
 
3
- var _chunkZ7QK4HTRcjs = require('../chunk-Z7QK4HTR.cjs');
4
- require('../chunk-XUCVB6BD.cjs');
5
- require('../chunk-VJNX5RCS.cjs');
3
+ var _chunkTMMZAGZLcjs = require('../chunk-TMMZAGZL.cjs');
4
+ require('../chunk-WCSFWDKH.cjs');
5
+ require('../chunk-L4AZXL2Q.cjs');
6
6
 
7
7
 
8
8
 
@@ -13,7 +13,7 @@ var _chunkNWCAIWHLcjs = require('../chunk-NWCAIWHL.cjs');
13
13
  var _chunkMYWZCDMLcjs = require('../chunk-MYWZCDML.cjs');
14
14
 
15
15
 
16
- var _chunk3Y7MKDLZcjs = require('../chunk-3Y7MKDLZ.cjs');
16
+ var _chunkNNM2X3ERcjs = require('../chunk-NNM2X3ER.cjs');
17
17
 
18
18
 
19
19
 
@@ -743,7 +743,7 @@ function workflow(fn, options = {}) {
743
743
  function getWorkflowInspector(actorId) {
744
744
  let workflowInspector = workflowInspectors.get(actorId);
745
745
  if (!workflowInspector) {
746
- workflowInspector = _chunkZ7QK4HTRcjs.createWorkflowInspectorAdapter.call(void 0, );
746
+ workflowInspector = _chunkTMMZAGZLcjs.createWorkflowInspectorAdapter.call(void 0, );
747
747
  workflowInspectors.set(actorId, workflowInspector);
748
748
  }
749
749
  return workflowInspector;
@@ -816,13 +816,13 @@ function workflow(fn, options = {}) {
816
816
  if (shouldRethrowWorkflowError(error)) {
817
817
  runCtx.log.error({
818
818
  msg: "workflow run failed",
819
- error: _chunk3Y7MKDLZcjs.stringifyError.call(void 0, error)
819
+ error: _chunkNNM2X3ERcjs.stringifyError.call(void 0, error)
820
820
  });
821
821
  throw error;
822
822
  }
823
823
  runCtx.log.warn({
824
824
  msg: "workflow failed and will sleep until woken",
825
- error: _chunk3Y7MKDLZcjs.stringifyError.call(void 0, error)
825
+ error: _chunkNNM2X3ERcjs.stringifyError.call(void 0, error)
826
826
  });
827
827
  } finally {
828
828
  runCtx.abortSignal.removeEventListener("abort", onAbort);
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  createWorkflowInspectorAdapter
3
- } from "../chunk-7ZDC4XEA.js";
4
- import "../chunk-CIWSGFQG.js";
5
- import "../chunk-Z3Z5EOSP.js";
3
+ } from "../chunk-UIPQ7RI4.js";
4
+ import "../chunk-45WBFRBN.js";
5
+ import "../chunk-QMR2J7PT.js";
6
6
  import {
7
7
  ACTOR_CONTEXT_INTERNAL_SYMBOL,
8
8
  defineRunHandler
@@ -13,7 +13,7 @@ import {
13
13
  } from "../chunk-JI6GZ2C2.js";
14
14
  import {
15
15
  stringifyError
16
- } from "../chunk-674WU4L6.js";
16
+ } from "../chunk-YH2CAWLD.js";
17
17
  import {
18
18
  RivetError,
19
19
  isActorAbortedError
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rivetkit",
3
- "version": "2.3.23",
3
+ "version": "2.3.24",
4
4
  "description": "Lightweight libraries for building stateful actors on edge platforms",
5
5
  "license": "Apache-2.0",
6
6
  "keywords": [
@@ -213,15 +213,15 @@
213
213
  "@rivet-dev/agent-os-core": "^0.1.1",
214
214
  "@rivet-dev/services": "^0.1.5",
215
215
  "@rivetkit/bare-ts": "^0.6.2",
216
- "@rivetkit/engine-api-full": "2.3.23",
217
- "@rivetkit/engine-cli": "2.3.23",
218
- "@rivetkit/engine-envoy-protocol": "2.3.23",
216
+ "@rivetkit/engine-api-full": "2.3.24",
217
+ "@rivetkit/engine-cli": "2.3.24",
218
+ "@rivetkit/engine-envoy-protocol": "2.3.24",
219
219
  "@rivetkit/on-change": "6.0.1",
220
- "@rivetkit/rivetkit-napi": "2.3.23",
221
- "@rivetkit/rivetkit-wasm": "2.3.23",
222
- "@rivetkit/traces": "2.3.23",
223
- "@rivetkit/virtual-websocket": "2.3.23",
224
- "@rivetkit/workflow-engine": "2.3.23",
220
+ "@rivetkit/rivetkit-napi": "2.3.24",
221
+ "@rivetkit/rivetkit-wasm": "2.3.24",
222
+ "@rivetkit/traces": "2.3.24",
223
+ "@rivetkit/virtual-websocket": "2.3.24",
224
+ "@rivetkit/workflow-engine": "2.3.24",
225
225
  "cbor-x": "^1.6.0",
226
226
  "drizzle-orm": "0.45.2",
227
227
  "hono": "^4.7.0",
@@ -88,6 +88,9 @@ export const ClientConfigSchemaBase = z.object({
88
88
  // `proxyWebSocket`
89
89
  getUpgradeWebSocket: z.custom<GetUpgradeWebSocket>().optional(),
90
90
 
91
+ /** Replaces global fetch for actor HTTP gateway requests. */
92
+ fetch: z.custom<typeof globalThis.fetch>().optional(),
93
+
91
94
  /** Whether to automatically perform health checks when the client is created. */
92
95
  disableMetadataLookup: z.boolean().optional().default(false),
93
96
 
@@ -4,7 +4,7 @@ import {
4
4
  PATH_WEBSOCKET_PREFIX,
5
5
  } from "@/common/actor-router-consts";
6
6
  import { deconstructError } from "@/common/utils";
7
- import { isRequestLike, isUrlLike } from "@/common/fetch-like";
7
+ import { isRequestLike, isUrlLike, readRequestBody } from "@/common/fetch-like";
8
8
  import type {
9
9
  EngineControlClient,
10
10
  GatewayRequestOptions,
@@ -65,9 +65,14 @@ export async function rawHttpFetch(
65
65
  mergedHeaders.set(key, value);
66
66
  });
67
67
 
68
+ const readsInputBody =
69
+ init?.body === undefined &&
70
+ input.method !== "GET" &&
71
+ input.method !== "HEAD";
72
+
68
73
  mergedInit = {
69
74
  method: input.method,
70
- body: input.body,
75
+ body: readsInputBody ? await readRequestBody(input) : undefined,
71
76
  mode: input.mode,
72
77
  credentials: input.credentials,
73
78
  redirect: input.redirect,
@@ -47,3 +47,17 @@ function isHeadersLike(value: unknown): value is HeadersLike {
47
47
  typeof (value as HeadersLike).entries === "function"
48
48
  );
49
49
  }
50
+
51
+ /**
52
+ * Reads a request body into bytes. Aborting the request's signal cancels the
53
+ * body and rejects the read.
54
+ */
55
+ export function readRequestBody(request: Request): Promise<ArrayBuffer> {
56
+ // Firefox has no Request.body.
57
+ if (!request.body) return request.arrayBuffer();
58
+ return new Response(
59
+ request.body.pipeThrough(new TransformStream(), {
60
+ signal: request.signal,
61
+ }),
62
+ ).arrayBuffer();
63
+ }
@@ -8,6 +8,7 @@ import {
8
8
  HEADER_TRACEPARENT,
9
9
  HEADER_TRACESTATE,
10
10
  } from "@/common/actor-router-consts";
11
+ import { readRequestBody } from "@/common/fetch-like";
11
12
  import { type GatewayRequestOptions, shouldSkipReadyWait } from "./driver";
12
13
 
13
14
  export interface HttpGatewayRequestOptions extends GatewayRequestOptions {
@@ -20,7 +21,7 @@ export async function sendHttpRequestToGateway(
20
21
  actorRequest: Request,
21
22
  options: HttpGatewayRequestOptions = {},
22
23
  ): Promise<Response> {
23
- let bodyToSend: ReadableStream<Uint8Array> | null = null;
24
+ let bodyToSend: ArrayBuffer | null = null;
24
25
  const guardHeaders = buildGuardHeaders(runConfig, actorRequest, options);
25
26
 
26
27
  if (actorRequest.method !== "GET" && actorRequest.method !== "HEAD") {
@@ -28,20 +29,29 @@ export async function sendHttpRequestToGateway(
28
29
  throw new Error("Request body has already been consumed");
29
30
  }
30
31
 
31
- if (actorRequest.body) {
32
- bodyToSend = actorRequest.body;
32
+ // Browsers reject ReadableStream request bodies, so send bytes.
33
+ const bytes = await readRequestBody(actorRequest);
34
+ if (bytes.byteLength > 0) {
35
+ bodyToSend = bytes;
33
36
  guardHeaders.delete("transfer-encoding");
34
37
  guardHeaders.delete("content-length");
35
38
  }
36
39
  }
37
40
 
38
- return fetch(gatewayUrl, {
41
+ const fetchImpl = runConfig.fetch ?? fetch;
42
+ return fetchImpl(gatewayUrl, {
39
43
  method: actorRequest.method,
40
44
  headers: guardHeaders,
41
45
  body: bodyToSend,
42
46
  signal: actorRequest.signal,
43
- ...(bodyToSend ? { duplex: "half" } : {}),
44
- } as RequestInit);
47
+ mode: actorRequest.mode,
48
+ credentials: actorRequest.credentials,
49
+ redirect: actorRequest.redirect,
50
+ referrer: actorRequest.referrer,
51
+ referrerPolicy: actorRequest.referrerPolicy,
52
+ integrity: actorRequest.integrity,
53
+ keepalive: actorRequest.keepalive,
54
+ });
45
55
  }
46
56
 
47
57
  function buildGuardHeaders(