@redwoodjs/sdk
Version:
Build fast, server-driven webapps on Cloudflare with SSR, RSC, and realtime
36 lines (35 loc) • 1.04 kB
JavaScript
export const nodeToWebRequest = (req) => {
const url = new URL(req.url, `http://${req.headers.host}`);
return new Request(url.href, {
method: req.method,
headers: req.headers,
body: req.method !== "GET" && req.method !== "HEAD"
? req
: undefined,
// @ts-ignore
duplex: "half",
});
};
export const webToNodeResponse = async (webResponse, nodeResponse) => {
// Copy status and headers
nodeResponse.statusCode = webResponse.status;
webResponse.headers.forEach((value, key) => {
nodeResponse.setHeader(key, value);
});
// Stream the response
if (webResponse.body) {
const reader = webResponse.body.getReader();
try {
while (true) {
const { done, value } = await reader.read();
if (done)
break;
nodeResponse.write(value);
}
}
finally {
reader.releaseLock();
}
}
nodeResponse.end();
};