(params: {
req: IncomingMessage;
res: ServerResponse;
route: string;
options: Required<DaemonProxyOptions>;
rpcBody?: string;
})
| 102 | } |
| 103 | |
| 104 | async function forwardProxyRequest(params: { |
| 105 | req: IncomingMessage; |
| 106 | res: ServerResponse; |
| 107 | route: string; |
| 108 | options: Required<DaemonProxyOptions>; |
| 109 | rpcBody?: string; |
| 110 | }): Promise<void> { |
| 111 | const { req, res, route, options, rpcBody } = params; |
| 112 | const upstreamUrl = buildUpstreamUrl(options.upstreamBaseUrl, route, req.url ?? '/'); |
| 113 | const method = req.method ?? 'GET'; |
| 114 | const headers = buildUpstreamHeaders(req, options.upstreamToken, route); |
| 115 | const body = resolveUpstreamBody(req, route, rpcBody, options.upstreamToken); |
| 116 | const response = await options.fetchImpl(upstreamUrl, { |
| 117 | method, |
| 118 | headers, |
| 119 | signal: AbortSignal.timeout(options.upstreamTimeoutMs), |
| 120 | ...(body ? { body, duplex: 'half' as const } : {}), |
| 121 | }); |
| 122 | |
| 123 | await sendProxyResponse({ req, res, route, response, clientToken: options.clientToken }); |
| 124 | } |
| 125 | |
| 126 | async function sendProxyResponse(params: { |
| 127 | req: IncomingMessage; |
no test coverage detected