quickstruc
Version:
quickstruc is a Node.js-powered module designed to streamline project scaffolding.
64 lines (63 loc) • 2.85 kB
JavaScript
"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;