UNPKG

@whatwg-node/server

Version:

Fetch API compliant HTTP Server adapter

37 lines (36 loc) 1.21 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useFetchEvent = exports.isFetchEvent = void 0; const utils_js_1 = require("../utils.js"); function isFetchEvent(event) { return event != null && event.request != null && event.respondWith != null; } exports.isFetchEvent = isFetchEvent; // Required for envs like nextjs edge runtime function isRequestAccessible(serverContext) { try { return !!serverContext?.request; } catch { return false; } } function useFetchEvent() { const eventMap = new WeakMap(); return { onRequestAdapt({ args: [event, ...restOfCtx], setRequest, setServerContext }) { if (isRequestAccessible(event)) { setRequest(event.request); const serverContext = restOfCtx.length > 0 ? (0, utils_js_1.completeAssign)(...restOfCtx) : event; setServerContext(serverContext); } }, onResponse({ request, response }) { const event = eventMap.get(request); if (isFetchEvent(event)) { event.respondWith(response); } }, }; } exports.useFetchEvent = useFetchEvent;