1
0
mirror of https://github.com/zumbiepig/MineXLauncher.git synced 2025-06-08 09:24:48 +00:00
MineXLauncher/index.ts
2024-08-30 16:29:45 -07:00

63 lines
1.5 KiB
TypeScript

import { join } from 'path';
import { env } from 'bun';
import express, { json, urlencoded } from 'express';
import chalk from 'chalk';
import compression from 'compression';
import cookieParser from 'cookie-parser';
import debug from 'debug';
import errorhandler from 'errorhandler';
import helmet from 'helmet';
import morgan from 'morgan';
import serveFavicon from 'serve-favicon';
import serveStatic from 'serve-static';
import { indexRouter } from './routes/index.ts';
const BASE_DIR = join(import.meta.dir, 'public');
const PORT = env.PORT || 3000;
const debugLogger = debug('app:server');
const isDev = env.NODE_ENV === 'development';
const app = express();
app.enable('strict routing');
debugLogger('Booting server.');
app.use(
helmet({
contentSecurityPolicy: false,
})
);
app.use(morgan(isDev ? 'dev' : 'combined'));
app.use(json());
app.use(urlencoded({ extended: false }));
app.use(cookieParser());
app.use(compression());
if (isDev) app.use(errorhandler());
app.use(serveFavicon(join(BASE_DIR, 'resources/images/icons/favicon.webp'), { maxAge: 86400 }));
app.use(serveStatic(BASE_DIR));
app.use('/', indexRouter);
app.use(async (req, res, next) => {
res.status(404).sendFile(join(BASE_DIR, '404.html'));
next();
});
app.use(async (err, req, res, next) => {
console.error(err.stack);
res.status(500).send('500 Internal Server Error');
next();
});
app.listen(PORT, async () => {
debugLogger('Server started.');
console.log(chalk.green(`Server is running on port ${PORT}`));
});