Mercurial
view react_games/backend/routes/web.ts @ 219:8c9bb0b0759e hg-web
[hg-web] Merge current Zenbu baseline
| author | MrJuneJune <me@mrjunejune.com> |
|---|---|
| date | Sun, 02 Aug 2026 08:34:54 -0700 |
| parents | fb9bcd3145cb |
| children |
line wrap: on
line source
import { Router, static as serveStatic } from 'express'; import path from 'node:path'; type SpaMount = { baseUrl: string; // Base path like /games entryHtml: string; // we need to define its entry index html }; export function createWebRouter(publicDir: string, spaMounts: SpaMount[]) { const router = Router(); // order matters so geting just public one first router.use(serveStatic(publicDir, { index: 'index.html', extensions: ['html'], setHeaders: (res) => { res.setHeader('X-Content-Type-Options', 'nosniff'); }, })); for (const { baseUrl, entryHtml } of spaMounts) { router.get(baseUrl, (_req, res) => { res.sendFile(path.join(publicDir, entryHtml)); }); router.get(`${baseUrl}/:rest`, (_req, res) => { res.sendFile(path.join(publicDir, entryHtml)); }); } router.use((_req, res) => { res.status(404).send('Not Found'); }); return router; }