Source: init/init.js

"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.expressApp = exports.defaultExpressAppConfig = void 0;
const morgan_1 = __importDefault(require("morgan"));
const express_1 = __importDefault(require("express"));
const path_1 = __importDefault(require("path"));
const cookie_parser_1 = __importDefault(require("cookie-parser"));
const express_session_1 = __importDefault(require("express-session"));
const helmet_1 = __importDefault(require("helmet"));
const utils_1 = require("../utils");
const enums_1 = require("../enums");
/**
 * Sets the default created express app config
 * @readonly
 **/
exports.defaultExpressAppConfig = {
    appType: enums_1.ExpressAppType.EXPRESS_API_APP,
    logging: true,
    logLevel: 'dev',
    cookiesSupport: true,
    staticDirSupport: true,
    staticDirName: 'uploads',
    jsonSupport: true,
    security: true,
};
/**
 * Creates and setup a brand new express powered app
 * @function expressApp
 * @param {ExpressAppConfig} app configuration object
 * @return {Express}		 ready to use express app
 **/
function expressApp(config = exports.defaultExpressAppConfig) {
    const app = (0, express_1.default)();
    if (config.logging && config.logLevel) {
        app.use((0, morgan_1.default)(config.logLevel));
    }
    app.use(express_1.default.urlencoded({ extended: false }));
    if (config.cookiesSupport) {
        app.use((0, cookie_parser_1.default)());
        if (app.get('env') == 'development') {
            // development session management
            app.use((0, express_session_1.default)({
                secret: (0, utils_1.stringGenerator)(16),
                genid: () => (0, utils_1.stringGenerator)(32),
                resave: true,
                saveUninitialized: false,
                cookie: {
                    secure: true,
                    httpOnly: true,
                    expires: new Date(Date.now() + (24 * 60 * 60 * 1000))
                }
            }));
        }
        else {
            // production session management
        }
    }
    if (config.staticDirSupport && config.staticDirName) {
        app.use(express_1.default.static(path_1.default.join(__dirname, config.staticDirName)));
    }
    if (config.jsonSupport) {
        app.use(express_1.default.json());
    }
    if (config.security) {
        app.disable('x-powered-by');
        app.use((0, helmet_1.default)());
    }
    return app;
}
exports.expressApp = expressApp;
//# sourceMappingURL=init.js.map