UNPKG

@fedify/sveltekit

Version:

Integrate Fedify with SvelteKit

53 lines (51 loc) 1.37 kB
//#region src/mod.ts /** * Create a SvelteKit hook handler to integrate with the {@link Federation} * object. * * @example hooks.server.ts * ``` typescript * import { federation } from "./federation"; // Import the `Federation` object * * export const handle = fedifyHook(federation); * ``` * * @template TContextData A type of the context data for the {@link Federation} * object. * @param federation A {@link Federation} object to integrate with SvelteKit. * @param createContextData A function to create a context data for the * {@link Federation} object. * @returns A SvelteKit hook handler. * @since 1.9.0 */ function fedifyHook(federation, createContextData = () => void 0) { return async ({ event, resolve }) => { return await federation.fetch(event.request, { contextData: await createContextData(event), ...integrateFetchOptions({ event, resolve }) }); }; } function integrateFetchOptions({ event, resolve }) { return { async onNotFound() { return await resolve(event); }, async onNotAcceptable() { const res = await resolve(event); if (res.status !== 404) return res; return new Response("Not acceptable", { status: 406, headers: { "Content-Type": "text/plain", Vary: "Accept" } }); } }; } //#endregion exports.fedifyHook = fedifyHook;