69 lines
2.6 KiB
JavaScript
69 lines
2.6 KiB
JavaScript
"use strict";
|
|
/**
|
|
* Setup express server.
|
|
*/
|
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
const morgan_1 = __importDefault(require("morgan"));
|
|
const path_1 = __importDefault(require("path"));
|
|
const helmet_1 = __importDefault(require("helmet"));
|
|
const express_1 = __importDefault(require("express"));
|
|
const jet_logger_1 = __importDefault(require("jet-logger"));
|
|
require("express-async-errors");
|
|
const api_1 = __importDefault(require("@src/routes/api"));
|
|
const Paths_1 = __importDefault(require("@src/routes/constants/Paths"));
|
|
const EnvVars_1 = __importDefault(require("@src/constants/EnvVars"));
|
|
const HttpStatusCodes_1 = __importDefault(require("@src/constants/HttpStatusCodes"));
|
|
const misc_1 = require("@src/constants/misc");
|
|
const classes_1 = require("@src/other/classes");
|
|
// **** Variables **** //
|
|
const app = (0, express_1.default)();
|
|
// **** Setup **** //
|
|
// Basic middleware
|
|
app.use(express_1.default.json());
|
|
app.use(express_1.default.urlencoded({ extended: true }));
|
|
app.use((0, cookie_parser_1.default)(EnvVars_1.default.CookieProps.Secret));
|
|
// Show routes called in console during development
|
|
if (EnvVars_1.default.NodeEnv === misc_1.NodeEnvs.Dev) {
|
|
app.use((0, morgan_1.default)('dev'));
|
|
}
|
|
// Security
|
|
if (EnvVars_1.default.NodeEnv === misc_1.NodeEnvs.Production) {
|
|
app.use((0, helmet_1.default)());
|
|
}
|
|
// Add APIs, must be after middleware
|
|
app.use(Paths_1.default.Base, api_1.default);
|
|
// Add error handler
|
|
app.use((err, _, res,
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
next) => {
|
|
if (EnvVars_1.default.NodeEnv !== misc_1.NodeEnvs.Test) {
|
|
jet_logger_1.default.err(err, true);
|
|
}
|
|
let status = HttpStatusCodes_1.default.BAD_REQUEST;
|
|
if (err instanceof classes_1.RouteError) {
|
|
status = err.status;
|
|
}
|
|
return res.status(status).json({ error: err.message });
|
|
});
|
|
// ** Front-End Content ** //
|
|
// Set views directory (html)
|
|
const viewsDir = path_1.default.join(__dirname, 'views');
|
|
app.set('views', viewsDir);
|
|
// Set static directory (js and css).
|
|
const staticDir = path_1.default.join(__dirname, 'public');
|
|
app.use(express_1.default.static(staticDir));
|
|
// Nav to users pg by default
|
|
app.get('/', (_, res) => {
|
|
return res.redirect('/users');
|
|
});
|
|
// Redirect to login if not logged in.
|
|
app.get('/users', (_, res) => {
|
|
return res.sendFile('users.html', { root: viewsDir });
|
|
});
|
|
// **** Export default **** //
|
|
exports.default = app;
|
|
//# sourceMappingURL=server.js.map
|