@fedify/elysia
Version:
Integrate Fedify with Elysia
36 lines (35 loc) • 1.01 kB
JavaScript
//#region src/index.ts
const fedify = (federation, contextDataFactory) => {
return (app) => app.decorate("federation", federation).onRequest(async ({ request, set, federation: federation$1 }) => {
let notFound = false;
let notAcceptable = false;
const contextData = await contextDataFactory(request);
const response = await federation$1.fetch(request, {
contextData,
onNotFound: () => {
notFound = true;
return new Response("Not found", { status: 404 });
},
onNotAcceptable: () => {
notAcceptable = true;
return new Response("Not acceptable", {
status: 406,
headers: {
"Content-Type": "text/plain",
Vary: "Accept"
}
});
}
});
if (!notFound && !notAcceptable) {
set.status = response.status;
response.headers.forEach((value, key) => {
set.headers[key] = value;
});
if (response.body) return response;
return new Response(null, { status: response.status });
}
}).as("global");
};
//#endregion
export { fedify };