Files
documenso/apps/remix/server/main.js
2025-02-19 21:35:35 +11:00

40 lines
1.3 KiB
JavaScript

/**
* This is the main entry point for the server which will launch the RR7 application
* and spin up auth, api, etc.
*
* Note:
* This file will be copied to the build folder during build time.
* Running this file will not work without a build.
*/
import { serve } from '@hono/node-server';
import { serveStatic } from '@hono/node-server/serve-static';
import handle from 'hono-react-router-adapter/node';
import server from './hono/server/router.js';
import * as build from './index.js';
server.use(
serveStatic({
root: 'build/client',
onFound: (path, c) => {
if (path.startsWith('./build/client/assets')) {
// Hard cache assets with hashed file names.
c.header('Cache-Control', 'public, immutable, max-age=31536000');
} else {
// Cache with revalidation for rest of static files.
c.header('Cache-Control', 'public, max-age=0, stale-while-revalidate=86400');
}
// Custom cache for static file pdf.worker.min.js
if (path === './build/client/pdf.worker.min.js') {
c.header('Cache-Control', 'public, max-age=3600, stale-while-revalidate=86400');
c.header('ETag', 'pdf.worker.min.js');
}
},
}),
);
const handler = handle(build, server);
serve({ fetch: handler.fetch, port: 3000 });