Current section
Files
Jump to
Current section
Files
src/ffi.mjs
/**
* Polyfill the `FetchEvent` if it's not available
*/
if (typeof FetchEvent === "undefined") {
await import("https://deno.land/x/fetch_event_adapter@v1.0.5/listen.ts");
}
/**
* Add a fetch event handler
* @param {(req: FetchEvent) => void} handler
* @returns undefined
*/
export function fetchEventHandler(handler) {
addEventListener("fetch", (req) => {
handler(req);
});
}
/**
* Respond to a fetch event with a response handler
* @param {FetchEvent} req
* @param {() => Response | Promise<Response>} handler
* @returns undefined
*/
export function respondWith(req, handler) {
req.respondWith(handler());
}
/**
* Wait until a promise resolves
* @param {FetchEvent} req
* @param {Promise} promise
* @returns undefined
*/
export function waitUntil(req, promise) {
req.waitUntil(promise);
}
export function toNativeResponse(response) {
return new globalThis.Response(response.body, {
status: response.status,
headers: response.headers,
});
}