import * as http from 'http';
import { Config, createApp, displayServerURL } from '@foal/core';
import * as express from 'express';
import * as rateLimit from 'express-rate-limit';
import { AppController } from './app/app.controller';
async function main() {
const expressApp = express();
expressApp.use(rateLimit({
max: 100,
windowMs: 15 * 60 * 1000,
handler (req, res, next) {
res.removeHeader('X-Powered-By');
res.setHeader('X-Content-Type-Options', 'nosniff');
res.setHeader('X-Frame-Options', 'SAMEORIGIN');
res.setHeader('X-XSS-Protection', '1; mode=block');
res.setHeader('Strict-Transport-Security', 'max-age=15552000; includeSubDomains');
res.status(this.statusCode || 429).send(this.message);
}
}));
const app = await createApp(AppController, { expressInstance: expressApp });
const httpServer = http.createServer(app);
const port = Config.get('port', 'number', 3001);
httpServer.listen(port, () => displayServerURL(port));
}
main()
.catch(err => { console.error(err.stack); process.exit(1); });