@whatwg-node/server
Version:
Fetch API compliant HTTP Server adapter
37 lines (36 loc) • 1.21 kB
JavaScript
;
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;