@mcansh/remix-fastify
Version:
Fastify server request handler for Remix and React Router
34 lines (31 loc) • 1.31 kB
JavaScript
import { createPlugin, createRequest, sendResponse } from "./plugins-CszfyhUI.js";
import { createReadableStreamFromReadable, createRequestHandler } from "@remix-run/node";
import fp from "fastify-plugin";
//#region src/servers/remix.ts
/**
* Returns a request handler for Fastify that serves the response using Remix.
*/
function createRemixRequestHandler({ build, getLoadContext, mode = process.env.NODE_ENV }) {
let handleRequest = createRequestHandler(build, mode);
return async (request, reply) => {
let remixRequest = createRemixRequest(request, reply);
let loadContext = await getLoadContext?.(request, reply);
let response = await handleRequest(remixRequest, loadContext);
return sendResponse(reply, response);
};
}
function createRemixRequest(request, reply) {
return createRequest(request, reply, createReadableStreamFromReadable);
}
//#endregion
//#region src/plugins/remix.ts
const remixFastify = fp(async (fastify, options) => {
let plugin = createPlugin(fastify, options, "virtual:remix/server-build", createRemixRequestHandler);
return plugin();
}, {
name: "@mcansh/remix-fastify",
fastify: "^3.29.0 || ^4.0.0 || ^5.0.0"
});
//#endregion
export { createRemixRequestHandler, createRemixRequestHandler as createRequestHandler, remixFastify };
//# sourceMappingURL=index.js.map