MCPcopy
hub / github.com/rx-angular/rx-angular / app

Function app

apps/ssr-isr/server.ts:12–71  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

10
11// The Express app is exported so that it can be used by serverless Functions.
12export function app(): express.Express {
13 const server = express();
14 const serverDistFolder = dirname(fileURLToPath(import.meta.url));
15 const browserDistFolder = resolve(serverDistFolder, '../browser');
16 const indexHtml = join(serverDistFolder, 'index.server.html');
17
18 // const fsCacheHandler = new FileSystemCacheHandler({
19 // cacheFolderPath: join(browserDistFolder, '/cache'),
20 // prerenderedPagesPath: browserDistFolder,
21 // addPrerenderedPagesToCache: true,
22 // });
23
24 const commonEngine = new CommonEngine();
25
26 const isr = new ISRHandler({
27 indexHtml,
28 invalidateSecretToken: 'MY_TOKEN', // replace with env secret key ex. process.env.REVALIDATE_SECRET_TOKEN
29 enableLogging: true,
30 serverDistFolder,
31 browserDistFolder,
32 bootstrap,
33 commonEngine,
34 backgroundRevalidation: true, // will revalidate in background and serve the cache page first
35 nonBlockingRender: true, // will serve page first and store in cache in background
36 modifyGeneratedHtml: customModifyGeneratedHtml,
37 // cache: fsCacheHandler,
38 });
39
40 server.use(express.json());
41
42 server.post(
43 '/api/invalidate',
44 async (req, res) => await isr.invalidate(req, res),
45 );
46
47 server.set('view engine', 'html');
48 server.set('views', browserDistFolder);
49
50 // Example Express Rest API endpoints
51 // server.get('/api/**', (req, res) => { });
52 // Serve static files from /browser
53 server.get('*.*', express.static(browserDistFolder, { maxAge: '1y' }));
54
55 server.get(
56 '*',
57 // Serve page if it exists in cache
58 async (req, res, next) =>
59 await isr.serveFromCache(req, res, next, {
60 providers: [{ provide: RESPONSE, useValue: res }],
61 }),
62
63 // Server side render the page and add to cache if needed
64 async (req, res, next) =>
65 await isr.render(req, res, next, {
66 providers: [{ provide: RESPONSE, useValue: res }],
67 }),
68 );
69

Callers 1

runFunction · 0.70

Calls 5

invalidateMethod · 0.95
serveFromCacheMethod · 0.95
renderMethod · 0.95
setMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected