xypriss 1.3.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +219 -31
  2. package/dist/cjs/mods/security/src/components/cache/index.js +0 -72
  3. package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
  4. package/dist/cjs/mods/security/src/index.js +0 -3
  5. package/dist/cjs/mods/security/src/index.js.map +1 -1
  6. package/dist/cjs/shared/logger/Logger.js +2 -0
  7. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  8. package/dist/cjs/src/index.js +55 -61
  9. package/dist/cjs/src/index.js.map +1 -1
  10. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +281 -0
  11. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  12. package/dist/cjs/src/middleware/built-in/index.js +325 -0
  13. package/dist/cjs/src/middleware/built-in/index.js.map +1 -0
  14. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  15. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  16. package/dist/cjs/src/quick-start.js +0 -4
  17. package/dist/cjs/src/quick-start.js.map +1 -1
  18. package/dist/cjs/src/server/FastServer.js +53 -411
  19. package/dist/cjs/src/server/FastServer.js.map +1 -1
  20. package/dist/cjs/src/server/ServerFactory.js +7 -62
  21. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  22. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +1 -1
  23. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js +1 -1
  24. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  25. package/dist/cjs/src/server/components/fastapi/RouteManager.js +0 -82
  26. package/dist/cjs/src/server/components/fastapi/RouteManager.js.map +1 -1
  27. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +384 -0
  28. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  29. package/dist/cjs/src/server/const/default.js +0 -8
  30. package/dist/cjs/src/server/const/default.js.map +1 -1
  31. package/dist/cjs/src/server/core/HttpServer.js +500 -0
  32. package/dist/cjs/src/server/core/HttpServer.js.map +1 -0
  33. package/dist/cjs/src/server/core/XyprissApp.js +412 -0
  34. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -0
  35. package/dist/cjs/src/server/middleware/MiddlewareManager.js +146 -0
  36. package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -0
  37. package/dist/cjs/src/server/routing/Router.js +341 -0
  38. package/dist/cjs/src/server/routing/Router.js.map +1 -0
  39. package/dist/cjs/src/server/utils/PortManager.js +1 -0
  40. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  41. package/dist/cjs/src/server/utils/forceClosePort.js +294 -88
  42. package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
  43. package/dist/esm/mods/security/src/components/cache/index.js +1 -70
  44. package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
  45. package/dist/esm/mods/security/src/index.js +1 -1
  46. package/dist/esm/shared/logger/Logger.js +2 -0
  47. package/dist/esm/shared/logger/Logger.js.map +1 -1
  48. package/dist/esm/src/index.js +41 -11
  49. package/dist/esm/src/index.js.map +1 -1
  50. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +279 -0
  51. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  52. package/dist/esm/src/middleware/built-in/index.js +323 -0
  53. package/dist/esm/src/middleware/built-in/index.js.map +1 -0
  54. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  55. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  56. package/dist/esm/src/quick-start.js +0 -4
  57. package/dist/esm/src/quick-start.js.map +1 -1
  58. package/dist/esm/src/server/FastServer.js +53 -411
  59. package/dist/esm/src/server/FastServer.js.map +1 -1
  60. package/dist/esm/src/server/ServerFactory.js +8 -59
  61. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  62. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +1 -1
  63. package/dist/esm/src/server/components/fastapi/PerformanceManager.js +1 -1
  64. package/dist/esm/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  65. package/dist/esm/src/server/components/fastapi/RouteManager.js +0 -82
  66. package/dist/esm/src/server/components/fastapi/RouteManager.js.map +1 -1
  67. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +382 -0
  68. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  69. package/dist/esm/src/server/const/default.js +0 -8
  70. package/dist/esm/src/server/const/default.js.map +1 -1
  71. package/dist/esm/src/server/core/HttpServer.js +498 -0
  72. package/dist/esm/src/server/core/HttpServer.js.map +1 -0
  73. package/dist/esm/src/server/core/XyprissApp.js +410 -0
  74. package/dist/esm/src/server/core/XyprissApp.js.map +1 -0
  75. package/dist/esm/src/server/middleware/MiddlewareManager.js +144 -0
  76. package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -0
  77. package/dist/esm/src/server/routing/Router.js +339 -0
  78. package/dist/esm/src/server/routing/Router.js.map +1 -0
  79. package/dist/esm/src/server/utils/PortManager.js +1 -0
  80. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  81. package/dist/esm/src/server/utils/forceClosePort.js +294 -88
  82. package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
  83. package/dist/index.d.ts +2166 -4273
  84. package/package.json +31 -19
@@ -0,0 +1,500 @@
1
+ 'use strict';
2
+
3
+ var http = require('http');
4
+ var url = require('url');
5
+ var querystring = require('querystring');
6
+ var MiddlewareManager = require('../middleware/MiddlewareManager.js');
7
+ var NotFoundHandler = require('../handlers/NotFoundHandler.js');
8
+
9
+ /**
10
+ * XyPrisHttpServer - Express-free HTTP server implementation
11
+ *
12
+ * This module provides a XyPris HTTP server that replaces Express with
13
+ * direct Node.js HTTP handling for maximum performance and control.
14
+ * It maintains API compatibility while removing Express overhead.
15
+ */
16
+ /**
17
+ * XyPrissHttpServer - XPris HTTP server implementation
18
+ */
19
+ class XyPrissHttpServer {
20
+ constructor(logger) {
21
+ this.routes = [];
22
+ this.logger = logger;
23
+ this.middlewareManager = new MiddlewareManager.MiddlewareManager(logger);
24
+ this.notFoundHandler = new NotFoundHandler.NotFoundHandler();
25
+ this.server = http.createServer(this.handleRequest.bind(this));
26
+ this.setupDefaultErrorHandler();
27
+ this.logger.debug("server", "[XyPrissHttpServer] Created new HTTP server with middleware manager");
28
+ }
29
+ use(pathOrMiddleware, middleware) {
30
+ if (typeof pathOrMiddleware === "function") {
31
+ this.middlewareManager.use(pathOrMiddleware);
32
+ }
33
+ else if (middleware) {
34
+ // Path-specific middleware - wrap it to check path
35
+ const pathMiddleware = (req, res, next) => {
36
+ if (req.path.startsWith(pathOrMiddleware)) {
37
+ return middleware(req, res, next);
38
+ }
39
+ next?.();
40
+ };
41
+ this.middlewareManager.use(pathMiddleware, {
42
+ name: `path_middleware_${pathOrMiddleware}`,
43
+ description: `Path-specific middleware for ${pathOrMiddleware}`,
44
+ });
45
+ }
46
+ }
47
+ /**
48
+ * Add HTTP method routes
49
+ */
50
+ get(path, ...handlers) {
51
+ this.addRoute("GET", path, handlers);
52
+ }
53
+ post(path, ...handlers) {
54
+ this.addRoute("POST", path, handlers);
55
+ }
56
+ put(path, ...handlers) {
57
+ this.addRoute("PUT", path, handlers);
58
+ }
59
+ delete(path, ...handlers) {
60
+ this.addRoute("DELETE", path, handlers);
61
+ }
62
+ patch(path, ...handlers) {
63
+ this.addRoute("PATCH", path, handlers);
64
+ }
65
+ options(path, ...handlers) {
66
+ this.addRoute("OPTIONS", path, handlers);
67
+ }
68
+ head(path, ...handlers) {
69
+ this.addRoute("HEAD", path, handlers);
70
+ }
71
+ /**
72
+ * Add a route with middleware and handler
73
+ */
74
+ addRoute(method, path, handlers) {
75
+ const middleware = handlers.slice(0, -1);
76
+ const handler = handlers[handlers.length - 1];
77
+ this.routes.push({
78
+ method,
79
+ path,
80
+ handler,
81
+ middleware,
82
+ });
83
+ // Debug logging
84
+ this.logger.debug("server", `Route registered: ${method} ${path} (Total routes: ${this.routes.length})`);
85
+ }
86
+ /**
87
+ * Add a route with parameter names (for RegExp routes from router)
88
+ */
89
+ addRouteWithParams(method, path, paramNames, handlers) {
90
+ const middleware = handlers.slice(0, -1);
91
+ const handler = handlers[handlers.length - 1];
92
+ this.routes.push({
93
+ method,
94
+ path,
95
+ handler,
96
+ middleware,
97
+ paramNames,
98
+ });
99
+ // Debug logging
100
+ this.logger.debug("server", `Route registered with params: ${method} ${path} (params: ${paramNames.join(", ")}) (Total routes: ${this.routes.length})`);
101
+ }
102
+ /**
103
+ * Start the server
104
+ */
105
+ listen(port, host, callback) {
106
+ this.logger.debug("server", `listen() called: ${host}:${port}`);
107
+ return this.server.listen(port, host, callback);
108
+ }
109
+ /**
110
+ * Handle incoming HTTP requests
111
+ */
112
+ async handleRequest(req, res) {
113
+ this.logger.debug("server", `🔍 ===== HANDLING REQUEST: ${req.method} ${req.url} =====`);
114
+ const XyPrisReq = this.enhanceRequest(req);
115
+ const XyPrisRes = this.enhanceResponse(res);
116
+ try {
117
+ // Parse request body for POST/PUT/PATCH requests
118
+ if (["POST", "PUT", "PATCH"].includes(XyPrisReq.method)) {
119
+ await this.parseBody(XyPrisReq);
120
+ }
121
+ // Execute middleware chain using MiddlewareManager
122
+ this.logger.debug("server", `Executing middleware chain...`);
123
+ const middlewareChainCompleted = await this.middlewareManager.execute(XyPrisReq, XyPrisRes);
124
+ if (!middlewareChainCompleted) {
125
+ this.logger.debug("server", `Middleware chain was stopped - not executing route handler`);
126
+ return; // Stop processing if middleware chain was stopped
127
+ }
128
+ this.logger.debug("server", `🔍 Middleware chain completed, looking for routes...`);
129
+ // Find and execute matching route
130
+ const route = this.findRoute(XyPrisReq.method, XyPrisReq.path, XyPrisReq);
131
+ this.logger.debug("server", `🔍 Route found:`, route ? `${route.method} ${route.path}` : "null");
132
+ if (route) {
133
+ // Execute route-specific middleware
134
+ for (const middleware of route.middleware) {
135
+ await this.executeMiddlewareFunction(middleware, XyPrisReq, XyPrisRes);
136
+ }
137
+ // Execute route handler
138
+ await route.handler(XyPrisReq, XyPrisRes);
139
+ }
140
+ else {
141
+ // No route found - 404
142
+ this.send404(XyPrisReq, XyPrisRes);
143
+ }
144
+ }
145
+ catch (error) {
146
+ this.handleError(error, XyPrisReq, XyPrisRes);
147
+ }
148
+ }
149
+ /**
150
+ * Enhance the request object with Express-like properties
151
+ */
152
+ enhanceRequest(req) {
153
+ const parsedUrl = url.parse(req.url || "", true);
154
+ const XyPrisReq = req;
155
+ XyPrisReq.params = {};
156
+ XyPrisReq.query = parsedUrl.query || {};
157
+ XyPrisReq.body = {};
158
+ XyPrisReq.path = parsedUrl.pathname || "/";
159
+ XyPrisReq.originalUrl = req.url || "";
160
+ XyPrisReq.baseUrl = "";
161
+ XyPrisReq.method = req.method || "GET";
162
+ // Express compatibility properties
163
+ XyPrisReq.ip = this.getClientIP(req);
164
+ XyPrisReq.ips = [XyPrisReq.ip];
165
+ XyPrisReq.cookies = this.parseCookies(req.headers.cookie || "");
166
+ XyPrisReq.app = {
167
+ get: (key) => {
168
+ // Simple app settings storage
169
+ const settings = {
170
+ "trust proxy": false,
171
+ "x-powered-by": false,
172
+ };
173
+ return settings[key];
174
+ },
175
+ set: (key, value) => {
176
+ // Simple app settings storage (could be enhanced)
177
+ this.logger.debug("server", `App setting: ${key} = ${value}`);
178
+ },
179
+ };
180
+ // Additional Express-like properties
181
+ XyPrisReq.protocol =
182
+ req.headers["x-forwarded-proto"] || "http";
183
+ XyPrisReq.secure = XyPrisReq.protocol === "https";
184
+ XyPrisReq.hostname = req.headers.host?.split(":")[0] || "localhost";
185
+ XyPrisReq.subdomains = XyPrisReq.hostname.split(".").slice(0, -2);
186
+ XyPrisReq.fresh = false; // Could be implemented based on cache headers
187
+ XyPrisReq.stale = true;
188
+ XyPrisReq.xhr = req.headers["x-requested-with"] === "XMLHttpRequest";
189
+ return XyPrisReq;
190
+ }
191
+ /**
192
+ * Get client IP address from request
193
+ */
194
+ getClientIP(req) {
195
+ // Check for forwarded headers first
196
+ const forwarded = req.headers["x-forwarded-for"];
197
+ if (forwarded) {
198
+ return forwarded.split(",")[0].trim();
199
+ }
200
+ const realIP = req.headers["x-real-ip"];
201
+ if (realIP) {
202
+ return realIP;
203
+ }
204
+ // Fallback to socket remote address
205
+ return req.socket.remoteAddress || "127.0.0.1";
206
+ }
207
+ /**
208
+ * Parse cookies from cookie header
209
+ */
210
+ parseCookies(cookieHeader) {
211
+ const cookies = {};
212
+ if (!cookieHeader) {
213
+ return cookies;
214
+ }
215
+ cookieHeader.split(";").forEach((cookie) => {
216
+ const [name, ...rest] = cookie.trim().split("=");
217
+ if (name && rest.length > 0) {
218
+ cookies[name] = rest.join("=");
219
+ }
220
+ });
221
+ return cookies;
222
+ }
223
+ /**
224
+ * Enhance the response object with Express-like methods
225
+ */
226
+ enhanceResponse(res) {
227
+ const XyPrisRes = res;
228
+ XyPrisRes.locals = {};
229
+ // JSON response method
230
+ XyPrisRes.json = (data) => {
231
+ XyPrisRes.setHeader("Content-Type", "application/json");
232
+ XyPrisRes.end(JSON.stringify(data));
233
+ };
234
+ // Send method
235
+ XyPrisRes.send = (data) => {
236
+ if (typeof data === "object") {
237
+ XyPrisRes.json(data);
238
+ }
239
+ else {
240
+ // XyPrisRes.setHeader("Content-Type", "text/plain");
241
+ XyPrisRes.end(String(data));
242
+ }
243
+ };
244
+ // Status method
245
+ XyPrisRes.status = (code) => {
246
+ XyPrisRes.statusCode = code;
247
+ return XyPrisRes;
248
+ };
249
+ // Enhanced setHeader that returns this
250
+ const originalSetHeader = XyPrisRes.setHeader.bind(XyPrisRes);
251
+ XyPrisRes.setHeader = (name, value) => {
252
+ originalSetHeader(name, value);
253
+ return XyPrisRes;
254
+ };
255
+ // Set method (Express-compatible)
256
+ XyPrisRes.set = (field, value) => {
257
+ if (typeof field === "string" && value !== undefined) {
258
+ XyPrisRes.setHeader(field, value);
259
+ }
260
+ else if (typeof field === "object") {
261
+ Object.entries(field).forEach(([key, val]) => {
262
+ XyPrisRes.setHeader(key, val);
263
+ });
264
+ }
265
+ return XyPrisRes;
266
+ };
267
+ // Redirect method
268
+ XyPrisRes.redirect = (statusOrUrl, url) => {
269
+ if (typeof statusOrUrl === "number" && url) {
270
+ XyPrisRes.statusCode = statusOrUrl;
271
+ XyPrisRes.setHeader("Location", url);
272
+ }
273
+ else {
274
+ XyPrisRes.statusCode = 302;
275
+ XyPrisRes.setHeader("Location", statusOrUrl);
276
+ }
277
+ XyPrisRes.end();
278
+ };
279
+ // Cookie methods (basic implementation)
280
+ XyPrisRes.cookie = (name, value, options = {}) => {
281
+ let cookieString = `${name}=${value}`;
282
+ if (options.maxAge)
283
+ cookieString += `; Max-Age=${options.maxAge}`;
284
+ if (options.httpOnly)
285
+ cookieString += "; HttpOnly";
286
+ if (options.secure)
287
+ cookieString += "; Secure";
288
+ if (options.sameSite)
289
+ cookieString += `; SameSite=${options.sameSite}`;
290
+ const existingCookies = XyPrisRes.getHeader("Set-Cookie") || [];
291
+ existingCookies.push(cookieString);
292
+ XyPrisRes.setHeader("Set-Cookie", existingCookies);
293
+ };
294
+ XyPrisRes.clearCookie = (name, options = {}) => {
295
+ XyPrisRes.cookie(name, "", { ...options, maxAge: 0 });
296
+ };
297
+ return XyPrisRes;
298
+ }
299
+ /**
300
+ * Parse request body
301
+ */
302
+ async parseBody(req) {
303
+ return new Promise((resolve, reject) => {
304
+ let body = "";
305
+ req.on("data", (chunk) => {
306
+ body += chunk.toString();
307
+ });
308
+ req.on("end", () => {
309
+ try {
310
+ const contentType = req.headers["content-type"] || "";
311
+ if (contentType.includes("application/json")) {
312
+ req.body = body ? JSON.parse(body) : {};
313
+ }
314
+ else if (contentType.includes("application/x-www-form-urlencoded")) {
315
+ req.body = querystring.parse(body);
316
+ }
317
+ else {
318
+ req.body = body;
319
+ }
320
+ resolve();
321
+ }
322
+ catch (error) {
323
+ reject(error);
324
+ }
325
+ });
326
+ req.on("error", reject);
327
+ });
328
+ }
329
+ /**
330
+ * Execute a single middleware function
331
+ */
332
+ async executeMiddlewareFunction(middleware, req, res) {
333
+ return new Promise((resolve, reject) => {
334
+ let nextCalled = false;
335
+ const next = (error) => {
336
+ if (nextCalled)
337
+ return;
338
+ nextCalled = true;
339
+ if (error) {
340
+ reject(error);
341
+ }
342
+ else {
343
+ resolve();
344
+ }
345
+ };
346
+ try {
347
+ const result = middleware(req, res, next);
348
+ if (result instanceof Promise) {
349
+ result.catch(reject);
350
+ }
351
+ }
352
+ catch (error) {
353
+ reject(error);
354
+ }
355
+ });
356
+ }
357
+ /**
358
+ * Find matching route
359
+ */
360
+ findRoute(method, path, req) {
361
+ this.logger.debug("server", `🔍 Looking for route: ${method} ${path} (${this.routes.length} routes available)`);
362
+ for (const route of this.routes) {
363
+ this.logger.debug("server", `🔍 Checking route: ${route.method} ${route.path} (type: ${typeof route.path})`);
364
+ if (route.method !== method)
365
+ continue;
366
+ if (typeof route.path === "string") {
367
+ const params = this.matchPath(route.path, path);
368
+ if (params !== null) {
369
+ // Add extracted parameters to request
370
+ req.params = { ...req.params, ...params };
371
+ this.logger.debug("server", `Route matched: ${method} ${route.path}`);
372
+ return route;
373
+ }
374
+ }
375
+ else if (route.path instanceof RegExp) {
376
+ this.logger.debug("server", `🔍 Testing RegExp: ${route.path} against ${path}`);
377
+ const match = route.path.exec(path);
378
+ this.logger.debug("server", `🔍 RegExp match result:`, match);
379
+ if (match) {
380
+ // Extract parameters from regex groups using parameter names if available
381
+ const params = {};
382
+ // If there are capture groups, add them as parameters
383
+ if (match.length > 1 && route.paramNames) {
384
+ // Use parameter names from route definition
385
+ for (let i = 1; i < match.length; i++) {
386
+ if (match[i] !== undefined && route.paramNames[i - 1]) {
387
+ const paramName = route.paramNames[i - 1];
388
+ params[paramName] = match[i];
389
+ this.logger.debug("server", `🔍 Extracted param: ${paramName} = ${match[i]}`);
390
+ }
391
+ }
392
+ }
393
+ else if (match.length > 1) {
394
+ // Fallback to generic parameter names if no paramNames available
395
+ if (match[1] !== undefined) {
396
+ params["*"] = match[1];
397
+ }
398
+ // Add other captured groups as numbered parameters
399
+ for (let i = 2; i < match.length; i++) {
400
+ if (match[i] !== undefined) {
401
+ params[`param${i - 1}`] = match[i];
402
+ }
403
+ }
404
+ }
405
+ // Add extracted parameters to request
406
+ req.params = { ...req.params, ...params };
407
+ this.logger.debug("routing", `Route matched (regex): ${method} ${route.path} with params: ${JSON.stringify(params)}`);
408
+ return route;
409
+ }
410
+ }
411
+ }
412
+ this.logger.debug("server", `No route found for: ${method} ${path}`);
413
+ return null;
414
+ }
415
+ /**
416
+ * Match path with parameters
417
+ */
418
+ matchPath(routePath, requestPath) {
419
+ // Simple path matching - exact match
420
+ if (routePath === requestPath)
421
+ return {};
422
+ this.logger.debug("server", "[HttpServer] matchPath:", routePath, requestPath);
423
+ // Handle parameters (:param)
424
+ const routeParts = routePath.split("/");
425
+ const requestParts = requestPath.split("/");
426
+ if (routeParts.length !== requestParts.length)
427
+ return null;
428
+ const params = {};
429
+ for (let i = 0; i < routeParts.length; i++) {
430
+ const routePart = routeParts[i];
431
+ const requestPart = requestParts[i];
432
+ if (routePart.startsWith(":")) {
433
+ this.logger.debug("server", `[HttpServer] matchPath: Found parameter ${routePart} with value ${requestPart}`);
434
+ // Parameter - extract value
435
+ const paramName = routePart.substring(1);
436
+ params[paramName] = requestPart;
437
+ }
438
+ else if (routePart !== requestPart) {
439
+ return null;
440
+ }
441
+ }
442
+ return params;
443
+ }
444
+ /**
445
+ * Send 404 response using NotFoundHandler
446
+ */
447
+ send404(req, res) {
448
+ // Use the NotFoundHandler to send a beautiful 404 page
449
+ this.notFoundHandler.handler(req, res);
450
+ }
451
+ /**
452
+ * Handle errors
453
+ */
454
+ handleError(error, req, res) {
455
+ this.logger.error("server", `Request error: ${error.message}`);
456
+ if (this.errorHandler) {
457
+ this.errorHandler(error, req, res, () => { });
458
+ }
459
+ else {
460
+ if (!res.headersSent) {
461
+ res.status(500).json({ error: "Internal Server Error" });
462
+ }
463
+ }
464
+ }
465
+ /**
466
+ * Set error handler
467
+ */
468
+ setErrorHandler(handler) {
469
+ this.errorHandler = handler;
470
+ }
471
+ /**
472
+ * Setup default error handler
473
+ */
474
+ setupDefaultErrorHandler() {
475
+ this.server.on("error", (error) => {
476
+ this.logger.error("server", `Server error: ${error.message}`);
477
+ });
478
+ }
479
+ /**
480
+ * Get the underlying HTTP server
481
+ */
482
+ getServer() {
483
+ return this.server;
484
+ }
485
+ /**
486
+ * Close the server
487
+ */
488
+ close(callback) {
489
+ this.server.close(callback);
490
+ }
491
+ /**
492
+ * Get server address
493
+ */
494
+ address() {
495
+ return this.server.address();
496
+ }
497
+ }
498
+
499
+ exports.XyPrissHttpServer = XyPrissHttpServer;
500
+ //# sourceMappingURL=HttpServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HttpServer.js","sources":["../../../../../src/server/core/HttpServer.ts"],"sourcesContent":[null],"names":["MiddlewareManager","NotFoundHandler","createHttpServer","parseUrl","parseQuery"],"mappings":"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"}