/**
* @fileoverview Server Initialization Utility for Satoshi Showdown.
* Responsible for initializing and configuring the Express application.
* This includes applying centralized middleware, setting up routes, and configuring error handling,
* thus preparing the Express server for robust operation.
*
* @module utils/serverUtil
* @requires express - Express framework for building the server.
* @requires utils/middlewareUtil - Utility for applying a set of middleware to the Express application.
* @requires utils/routeUtil - Utility for setting up routes in the Express application.
*/
const express = require("express");
const { applyMiddlewares } = require("./middlewareUtil");
const { applyRoutes } = require("./routeUtil");
/**
* Initializes and configures the Express application.
* Applies middleware, sets up routes, and ensures comprehensive error handling.
*
* @function initializeServer
* @return {express.Application} The fully configured Express application.
*/
const initializeServer = () => {
const app = express();
// Apply middleware to the app
applyMiddlewares(app);
// Set up routes
applyRoutes(app);
return app;
};
module.exports = { initializeServer };