UNPKG

elysia-remix

Version:

Use React Router v7 or Remix with Elysia with HMR support!

47 lines (44 loc) 1.61 kB
import { join } from 'node:path'; import { s as staticPlugin } from './index-y01oNMeu.js'; import { Elysia } from 'elysia'; import { createRequestHandler } from 'react-router'; async function reactRouter(options) { const cwd = process.env.REMIX_ROOT ?? process.cwd(); const mode = options?.mode ?? process.env.NODE_ENV ?? "development"; const buildDir = options?.buildDirectory ?? "build"; const buildDirectory = join(cwd, buildDir); const serverBuildPath = join( buildDirectory, "server", options?.serverBuildFile ?? "index.js" ); let vite; if (mode !== "production") { vite = await import('vite').then((vite2) => { return vite2.createServer({ ...options?.vite, server: { ...options?.vite?.server, middlewareMode: true } }); }); } const instance = vite ? (await import('./index-CpSljop9.js')).connect(vite.middlewares) : options?.production?.assets !== false ? staticPlugin({ prefix: "/", assets: join(buildDir, "client"), maxAge: 31536e3, ...options?.production?.assets }) : false; const serverModule = vite ? () => vite.ssrLoadModule("virtual:react-router/server-build") : await import(serverBuildPath); const handler = createRequestHandler(serverModule, mode); return new Elysia({ name: "elysia-react-router", seed: options }).use(instance).all( "*", async function processReactRouterSSR(context) { const loadContext = await options?.getLoadContext?.(context); return handler(context.request, loadContext); }, { parse: "none" } ); } export { reactRouter };