File size: 827 Bytes
6c30253
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import express from 'express';
import { resolve } from 'node:path';

export function createApp({ distDir = resolve(process.cwd(), 'dist') } = {}) {
  const app = express();
  app.disable('x-powered-by');
  app.use((_request, response, next) => {
    response.set({
      'Cross-Origin-Opener-Policy': 'same-origin',
      'Cross-Origin-Embedder-Policy': 'require-corp',
      'Cross-Origin-Resource-Policy': 'same-origin',
    });
    next();
  });

  app.use('/assets', express.static(resolve(distDir, 'assets'), {
    immutable: true,
    maxAge: '1y',
    setHeaders: response => response.setHeader('Cache-Control', 'public, max-age=31536000, immutable'),
  }));
  app.use(express.static(distDir, { index: false }));
  app.use((_request, response) => response.sendFile(resolve(distDir, 'index.html')));

  return { app };
}