angular/integration/platform-server/projects/standalone/server.ts
Joey Perrott 894c1c5f10 refactor: apply prettier formatting to integration (#54653)
Apply prettier formatting to integration directories

PR Close #54653
2024-04-02 20:42:04 +00:00

55 lines
1.5 KiB
TypeScript

/**
* @license
* Copyright Google LLC All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
/* tslint:disable:no-console */
import {APP_BASE_HREF} from '@angular/common';
import {renderApplication} from '@angular/platform-server';
import express from 'express';
import bootstrap from './src/main.server';
import {fileURLToPath} from 'node:url';
import {dirname, join, resolve} from 'node:path';
import {readFileSync} from 'node:fs';
import './prerender';
const app = express();
const serverDistFolder = dirname(fileURLToPath(import.meta.url));
const browserDistFolder = resolve(serverDistFolder, '../browser');
const indexHtml = readFileSync(join(browserDistFolder, 'index.html'), 'utf-8');
// Serve static files from /browser
app.get(
'*.*',
express.static(browserDistFolder, {
maxAge: '1y',
}),
);
// Mock API
app.get('/api', (req, res) => {
res.json({data: 'API 1 response'});
});
app.get('/api-2', (req, res) => {
res.json({data: 'API 2 response'});
});
// All regular routes use the Universal engine
app.get('*', (req, res) => {
const {protocol, originalUrl, baseUrl, headers} = req;
renderApplication(bootstrap, {
document: indexHtml,
url: `${protocol}://${headers.host}${originalUrl}`,
platformProviders: [{provide: APP_BASE_HREF, useValue: baseUrl}],
}).then((response: string) => {
res.send(response);
});
});
app.listen(4206, () => {
console.log('Server listening on port 4206!');
});