UNPKG

alapa

Version:

A cutting-edge web development framework designed to revolutionize the way developers build modern web applications.

103 lines (102 loc) 3.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.startServer = startServer; /* eslint-disable @typescript-eslint/no-explicit-any */ const globals_1 = require("../../shared/globals"); const http_1 = __importDefault(require("http")); const express_1 = __importDefault(require("express")); const utils_1 = require("../../utils"); const app = (0, express_1.default)(); const server = http_1.default.createServer(app); async function startServer() { let port = globals_1.GlobalConfig.server.port; const host = globals_1.GlobalConfig.server.host; process.on("uncaughtException", async (err) => { utils_1.Logger.error(`Error binding to port ${port}: ${err?.message}`); if (err) { if (err.code === "EADDRINUSE") { if (port) { utils_1.Logger.info(`Port ${port} is in use, trying a different port...`); port += 1; // // Attempt to listen on a new port (you can specify your logic) // server.listen(port + 1); try { setTimeout(async () => { const { host, port } = await startServer(); return { host, port, server, app }; // Return values if restarted }, 4000); } catch (error) { utils_1.Logger.log(`Error killing port ${port}: ${error}`); process.exit(1); } } } else { console.error("Server error:", err); } } else { console.log(`Server running on port ${port}`); } }); // Ensure that port is available //// eslint-disable-next-line @typescript-eslint/no-explicit-any // process.on("uncaughtException", async (err: any) => { // if (err.code === "EADDRINUSE") { // // } else { // Logger.error("Server error:", err); // process.exit(1); // } // }); const updatePort = (server) => { const address = server?.address(); if (address && typeof address !== "string") { port = address.port; } }; if (host && typeof port === "number") { return new Promise((resolve) => { server.listen(port, host, (err) => { if (err) { // handlerPortError(err, port); } else { updatePort(server); utils_1.Logger.info(`Server started at http://${host}:${port}`); resolve({ host, port, server, app }); } }); }); } if (typeof port === "number") { return new Promise((resolve) => { server.listen(port, (err) => { if (err) { // handlerPortError(err, port); } else { utils_1.Logger.info(`Server started at port ${port}`); updatePort(server); resolve({ host: undefined, port, server, app }); } }); }); } return new Promise((resolve) => { server.listen((err) => { if (err) { utils_1.Logger.error(err); } else { utils_1.Logger.info(`Server started`); updatePort(server); resolve({ host: undefined, port: port, server, app }); // Default host and port if none specified } }); }); }