UNPKG

quickstruc

Version:

quickstruc is a Node.js-powered module designed to streamline project scaffolding.

64 lines (63 loc) 2.85 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = __importDefault(require("express")); const morgan_1 = __importDefault(require("morgan")); const helmet_1 = __importDefault(require("helmet")); const compression_1 = __importDefault(require("compression")); const cookie_parser_1 = __importDefault(require("cookie-parser")); const body_parser_1 = __importDefault(require("body-parser")); const hpp_1 = __importDefault(require("hpp")); const AuthRouter_1 = __importDefault(require("./routes/AuthRouter")); const path_1 = __importDefault(require("path")); const AppError_1 = __importDefault(require("./utils/AppError")); const mysqlConfig_1 = require("./config/mysqlConfig"); const rateLimiter_1 = __importDefault(require("./middlewares/rateLimiter")); const globalErrorHandler_1 = __importDefault(require("./middlewares/globalErrorHandler")); const corsMiddleware_1 = __importDefault(require("./middlewares/corsMiddleware")); require("./models/User"); // This will load the User model and its associations // Sync database and models mysqlConfig_1.sequelize .sync({ force: false }) // Set force: true only in development to drop and recreate tables .then(() => { console.log("Database synced successfully."); }) .catch((error) => { console.log("Please check if the database is connect or not"); console.log("Error syncing database:", error); }); (0, mysqlConfig_1.connectDB)(); // Initialize Express app const app = (0, express_1.default)(); app.use(rateLimiter_1.default); // Middleware: Set security HTTP headers app.use((0, helmet_1.default)()); // Middleware: Prevent HTTP parameter pollution app.use((0, hpp_1.default)()); // Apply CORS middleware globally for all routes app.use(corsMiddleware_1.default); // Middleware: Development logging if (process.env.NODE_ENV === "development") { app.use((0, morgan_1.default)("dev")); } // Middleware: Body parsers (JSON and URL-encoded data) app.use(express_1.default.json({ limit: "10kb" })); app.use(express_1.default.urlencoded({ extended: true, limit: "10kb" })); app.use(body_parser_1.default.json()); // Middleware: Cookie parser app.use((0, cookie_parser_1.default)()); // Middleware: Response compression app.use((0, compression_1.default)()); // Serve static files app.use(express_1.default.static(path_1.default.join(__dirname, "public"))); app.use("/api/user", AuthRouter_1.default); // Catch-all route for undefined endpoints app.all("*", (req, res, next) => { next(new AppError_1.default(`Cannot find ${req.originalUrl} on this server!`, 404)); }); // Global error handling middleware app.use(globalErrorHandler_1.default); // Export the app module exports.default = app;