UNPKG

@whatwg-node/server

Version:

Fetch API compliant HTTP Server adapter

32 lines (31 loc) 1 kB
import { completeAssign } from '../utils.js'; export function isFetchEvent(event) { return event != null && event.request != null && event.respondWith != null; } // Required for envs like nextjs edge runtime function isRequestAccessible(serverContext) { try { return !!serverContext?.request; } catch { return false; } } export function useFetchEvent() { const eventMap = new WeakMap(); return { onRequestAdapt({ args: [event, ...restOfCtx], setRequest, setServerContext }) { if (isRequestAccessible(event)) { setRequest(event.request); const serverContext = restOfCtx.length > 0 ? completeAssign(...restOfCtx) : event; setServerContext(serverContext); } }, onResponse({ request, response }) { const event = eventMap.get(request); if (isFetchEvent(event)) { event.respondWith(response); } }, }; }