Files
ara-kanban-service/lib/server.js

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