UNPKG

jai-server

Version:

Fast , simple and powerful web framework for creating REST APIs for your next project. RESTFul API server

52 lines (51 loc) 1.94 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const next_1 = __importDefault(require("./next")); const httpPrototype_1 = __importDefault(require("./request/httpPrototype")); const addResponseProto_1 = __importDefault(require("./response/addResponseProto")); const errorHandler_1 = require("./request/errorHandler"); function reqTimeout(req, res, timeout) { let timeOutId = null; res.clearSetTimeout = () => { if (!timeout || !timeOutId) return req.destroy(); clearTimeout(timeOutId); }; if (!timeout) return; timeOutId = setTimeout(() => { if (!res.headersSent) { res.writeHead(408, { 'Content-Type': 'text/plain' }); res.end('Request Timeout'); timeOutId = null; } req.destroy(); }, timeout); } function RequestBuilder(config, router) { return async function RequestHandler(req, res) { try { (0, httpPrototype_1.default)(req, config); (0, addResponseProto_1.default)(res); if (req.httpVersion === '2.0') { const { headers } = req; req.method = headers[':method']; req.url = headers[':path']; req.httpVersion = headers[':scheme'] === 'https' ? '2.0' : '1.1'; req.port = req.socket.localPort; } res.setHeader('X-Powered-By', 'JAI-SERVER'); reqTimeout(req, res, config.timeout || 0); await (0, next_1.default)(req, res, 0, router.stack.length + 1, router.stack, '/')(); res.clearSetTimeout(); } catch (e) { (0, errorHandler_1.ErrorHandler500)(res, e); res.clearSetTimeout(); } }; } exports.default = RequestBuilder;