xypriss 1.3.8 → 2.1.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 (221) hide show
  1. package/README.md +232 -254
  2. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +10 -0
  3. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  4. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +10 -0
  5. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  6. package/dist/cjs/mods/security/src/components/cache/index.js +10 -74
  7. package/dist/cjs/mods/security/src/components/cache/index.js.map +1 -1
  8. package/dist/cjs/mods/security/src/components/fortified-function/index.js +9 -0
  9. package/dist/cjs/mods/security/src/components/fortified-function/index.js.map +1 -1
  10. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
  11. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  12. package/dist/cjs/mods/security/src/core/crypto.js +14 -0
  13. package/dist/cjs/mods/security/src/core/crypto.js.map +1 -1
  14. package/dist/cjs/mods/security/src/index.js +10 -4
  15. package/dist/cjs/mods/security/src/index.js.map +1 -1
  16. package/dist/cjs/shared/logger/Logger.js +374 -29
  17. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  18. package/dist/cjs/src/cluster/bun-cluster-manager.js +91 -1
  19. package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -1
  20. package/dist/cjs/src/cluster/cluster-manager.js +15 -3
  21. package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
  22. package/dist/cjs/src/cluster/modules/AutoScaler.js +4 -4
  23. package/dist/cjs/src/cluster/modules/AutoScaler.js.map +1 -1
  24. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +2 -2
  25. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  26. package/dist/cjs/src/cluster/modules/EventLoopMonitor.js +270 -0
  27. package/dist/cjs/src/cluster/modules/EventLoopMonitor.js.map +1 -0
  28. package/dist/cjs/src/cluster/modules/GCStatsTracker.js +200 -0
  29. package/dist/cjs/src/cluster/modules/GCStatsTracker.js.map +1 -0
  30. package/dist/cjs/src/cluster/modules/HeapStatsCollector.js +111 -0
  31. package/dist/cjs/src/cluster/modules/HeapStatsCollector.js.map +1 -0
  32. package/dist/cjs/src/cluster/modules/NetworkTracker.js +162 -0
  33. package/dist/cjs/src/cluster/modules/NetworkTracker.js.map +1 -0
  34. package/dist/cjs/src/cluster/modules/ThroughputCalculator.js +186 -0
  35. package/dist/cjs/src/cluster/modules/ThroughputCalculator.js.map +1 -0
  36. package/dist/cjs/src/cluster/modules/WorkerManager.js +14 -15
  37. package/dist/cjs/src/cluster/modules/WorkerManager.js.map +1 -1
  38. package/dist/cjs/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
  39. package/dist/cjs/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
  40. package/dist/cjs/src/index.js +55 -61
  41. package/dist/cjs/src/index.js.map +1 -1
  42. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js +281 -0
  43. package/dist/cjs/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  44. package/dist/cjs/src/middleware/built-in/index.js +325 -0
  45. package/dist/cjs/src/middleware/built-in/index.js.map +1 -0
  46. package/dist/cjs/src/middleware/built-in/sqlInjection.js +335 -0
  47. package/dist/cjs/src/middleware/built-in/sqlInjection.js.map +1 -0
  48. package/dist/cjs/src/middleware/safe-json-middleware.js +1 -1
  49. package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
  50. package/dist/cjs/src/middleware/security-middleware.js +447 -332
  51. package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
  52. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  53. package/dist/cjs/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  54. package/dist/cjs/src/plugins/modules/index.js +9 -3
  55. package/dist/cjs/src/plugins/modules/index.js.map +1 -1
  56. package/dist/cjs/src/quick-start.js +0 -4
  57. package/dist/cjs/src/quick-start.js.map +1 -1
  58. package/dist/cjs/src/server/FastServer.js +94 -412
  59. package/dist/cjs/src/server/FastServer.js.map +1 -1
  60. package/dist/cjs/src/server/ServerFactory.js +69 -64
  61. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  62. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
  63. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  64. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js +1 -1
  65. package/dist/cjs/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  66. package/dist/cjs/src/server/components/fastapi/RouteManager.js +0 -82
  67. package/dist/cjs/src/server/components/fastapi/RouteManager.js.map +1 -1
  68. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js +206 -0
  69. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  70. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +3 -28
  71. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  72. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +265 -0
  73. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  74. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  75. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  76. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  77. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  78. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +503 -0
  79. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  80. package/dist/cjs/src/server/const/default.js +23 -17
  81. package/dist/cjs/src/server/const/default.js.map +1 -1
  82. package/dist/cjs/src/server/core/HttpServer.js +500 -0
  83. package/dist/cjs/src/server/core/HttpServer.js.map +1 -0
  84. package/dist/cjs/src/server/core/XyprissApp.js +679 -0
  85. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -0
  86. package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
  87. package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
  88. package/dist/cjs/src/server/middleware/MiddlewareManager.js +191 -0
  89. package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -0
  90. package/dist/cjs/src/server/routing/Router.js +341 -0
  91. package/dist/cjs/src/server/routing/Router.js.map +1 -0
  92. package/dist/cjs/src/server/utils/PortManager.js +1 -0
  93. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  94. package/dist/cjs/src/server/utils/forceClosePort.js +294 -88
  95. package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
  96. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +10 -0
  97. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  98. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +10 -0
  99. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  100. package/dist/esm/mods/security/src/components/cache/index.js +11 -72
  101. package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
  102. package/dist/esm/mods/security/src/components/fortified-function/index.js +9 -0
  103. package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
  104. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
  105. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  106. package/dist/esm/mods/security/src/core/crypto.js +14 -0
  107. package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
  108. package/dist/esm/mods/security/src/index.js +11 -2
  109. package/dist/esm/mods/security/src/index.js.map +1 -1
  110. package/dist/esm/shared/logger/Logger.js +374 -29
  111. package/dist/esm/shared/logger/Logger.js.map +1 -1
  112. package/dist/esm/src/cluster/bun-cluster-manager.js +91 -1
  113. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -1
  114. package/dist/esm/src/cluster/cluster-manager.js +15 -3
  115. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  116. package/dist/esm/src/cluster/modules/AutoScaler.js +4 -4
  117. package/dist/esm/src/cluster/modules/AutoScaler.js.map +1 -1
  118. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +2 -2
  119. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  120. package/dist/esm/src/cluster/modules/EventLoopMonitor.js +268 -0
  121. package/dist/esm/src/cluster/modules/EventLoopMonitor.js.map +1 -0
  122. package/dist/esm/src/cluster/modules/GCStatsTracker.js +198 -0
  123. package/dist/esm/src/cluster/modules/GCStatsTracker.js.map +1 -0
  124. package/dist/esm/src/cluster/modules/HeapStatsCollector.js +109 -0
  125. package/dist/esm/src/cluster/modules/HeapStatsCollector.js.map +1 -0
  126. package/dist/esm/src/cluster/modules/NetworkTracker.js +160 -0
  127. package/dist/esm/src/cluster/modules/NetworkTracker.js.map +1 -0
  128. package/dist/esm/src/cluster/modules/ThroughputCalculator.js +184 -0
  129. package/dist/esm/src/cluster/modules/ThroughputCalculator.js.map +1 -0
  130. package/dist/esm/src/cluster/modules/WorkerManager.js +14 -14
  131. package/dist/esm/src/cluster/modules/WorkerManager.js.map +1 -1
  132. package/dist/esm/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
  133. package/dist/esm/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
  134. package/dist/esm/src/index.js +41 -11
  135. package/dist/esm/src/index.js.map +1 -1
  136. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js +279 -0
  137. package/dist/esm/src/middleware/XyPrissMiddlewareAPI.js.map +1 -0
  138. package/dist/esm/src/middleware/built-in/index.js +323 -0
  139. package/dist/esm/src/middleware/built-in/index.js.map +1 -0
  140. package/dist/esm/src/middleware/built-in/sqlInjection.js +333 -0
  141. package/dist/esm/src/middleware/built-in/sqlInjection.js.map +1 -0
  142. package/dist/esm/src/middleware/safe-json-middleware.js +1 -1
  143. package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
  144. package/dist/esm/src/middleware/security-middleware.js +447 -332
  145. package/dist/esm/src/middleware/security-middleware.js.map +1 -1
  146. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js +1 -1
  147. package/dist/esm/src/plugins/modules/builtin/ResponseTimePlugin.js.map +1 -1
  148. package/dist/esm/src/plugins/modules/index.js +9 -3
  149. package/dist/esm/src/plugins/modules/index.js.map +1 -1
  150. package/dist/esm/src/quick-start.js +0 -4
  151. package/dist/esm/src/quick-start.js.map +1 -1
  152. package/dist/esm/src/server/FastServer.js +94 -412
  153. package/dist/esm/src/server/FastServer.js.map +1 -1
  154. package/dist/esm/src/server/ServerFactory.js +70 -61
  155. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  156. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +31 -5
  157. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  158. package/dist/esm/src/server/components/fastapi/PerformanceManager.js +1 -1
  159. package/dist/esm/src/server/components/fastapi/PerformanceManager.js.map +1 -1
  160. package/dist/esm/src/server/components/fastapi/RouteManager.js +0 -82
  161. package/dist/esm/src/server/components/fastapi/RouteManager.js.map +1 -1
  162. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js +204 -0
  163. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  164. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +2 -27
  165. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  166. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +263 -0
  167. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  168. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  169. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  170. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  171. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  172. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +501 -0
  173. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -0
  174. package/dist/esm/src/server/const/default.js +23 -17
  175. package/dist/esm/src/server/const/default.js.map +1 -1
  176. package/dist/esm/src/server/core/HttpServer.js +498 -0
  177. package/dist/esm/src/server/core/HttpServer.js.map +1 -0
  178. package/dist/esm/src/server/core/XyprissApp.js +677 -0
  179. package/dist/esm/src/server/core/XyprissApp.js.map +1 -0
  180. package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
  181. package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
  182. package/dist/esm/src/server/middleware/MiddlewareManager.js +189 -0
  183. package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -0
  184. package/dist/esm/src/server/routing/Router.js +339 -0
  185. package/dist/esm/src/server/routing/Router.js.map +1 -0
  186. package/dist/esm/src/server/utils/PortManager.js +1 -0
  187. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  188. package/dist/esm/src/server/utils/forceClosePort.js +294 -88
  189. package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
  190. package/dist/index.d.ts +3363 -5311
  191. package/package.json +39 -28
  192. package/dist/cjs/src/cluster/index.js +0 -361
  193. package/dist/cjs/src/cluster/index.js.map +0 -1
  194. package/dist/cjs/src/cluster/modules/ClusterFactory.js +0 -539
  195. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +0 -1
  196. package/dist/cjs/src/cluster/modules/LoadBalancer.js.map +0 -1
  197. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -668
  198. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  199. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -347
  200. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  201. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -204
  202. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  203. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js +0 -953
  204. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  205. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -56
  206. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
  207. package/dist/esm/src/cluster/index.js +0 -339
  208. package/dist/esm/src/cluster/index.js.map +0 -1
  209. package/dist/esm/src/cluster/modules/ClusterFactory.js +0 -511
  210. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +0 -1
  211. package/dist/esm/src/cluster/modules/LoadBalancer.js.map +0 -1
  212. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -647
  213. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  214. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -345
  215. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  216. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -202
  217. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  218. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js +0 -951
  219. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  220. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -54
  221. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
@@ -0,0 +1,503 @@
1
+ 'use strict';
2
+
3
+ var PortManager = require('../../utils/PortManager.js');
4
+ var RequestProcessor = require('../fastapi/RequestProcessor.js');
5
+ var RouteManager = require('../fastapi/RouteManager.js');
6
+ var MonitoringManager = require('../fastapi/MonitoringManager.js');
7
+ var RedirectManager = require('../fastapi/RedirectManager.js');
8
+ var ConsoleInterceptor = require('../fastapi/console/ConsoleInterceptor.js');
9
+ var NotFoundHandler = require('../../handlers/NotFoundHandler.js');
10
+
11
+ /**
12
+ * ServerLifecycleManager - Modular server lifecycle management
13
+ *
14
+ * This module handles server initialization, startup, and lifecycle management
15
+ * in a modular way, extracted from the main FastServer class for better
16
+ * separation of concerns and maintainability.
17
+ */
18
+ /**
19
+ * ServerLifecycleManager - Handles server initialization and startup lifecycle
20
+ */
21
+ class ServerLifecycleManager {
22
+ constructor(dependencies) {
23
+ this.dependencies = dependencies;
24
+ this.state = {
25
+ ready: false,
26
+ currentPort: 0,
27
+ initPromise: Promise.resolve(),
28
+ };
29
+ }
30
+ /**
31
+ * Initialize all dependent components
32
+ */
33
+ async initializeDependentComponents() {
34
+ const { app, options, logger } = this.dependencies;
35
+ // Ensure required components are available
36
+ if (!this.dependencies.cacheManager ||
37
+ !this.dependencies.performanceManager ||
38
+ !this.dependencies.pluginManager) {
39
+ throw new Error("Required components (cacheManager, performanceManager, pluginManager) must be initialized before dependent components");
40
+ }
41
+ logger.debug("lifecycle", "Initializing dependent components...");
42
+ // Initialize components that depend on others
43
+ this.dependencies.requestProcessor = new RequestProcessor.RequestProcessor({
44
+ performanceProfiler: this.dependencies.performanceManager.getPerformanceProfiler(),
45
+ executionPredictor: this.dependencies.performanceManager.getExecutionPredictor(),
46
+ requestPreCompiler: this.dependencies.performanceManager.getRequestPreCompiler(),
47
+ pluginEngine: this.dependencies.pluginManager.getPluginEngine(),
48
+ cacheManager: this.dependencies.cacheManager,
49
+ });
50
+ this.dependencies.routeManager = new RouteManager.RouteManager({
51
+ app,
52
+ cacheManager: this.dependencies.cacheManager,
53
+ middlewareManager: this.dependencies.middlewareManager,
54
+ ultraFastOptimizer: this.dependencies.performanceManager.getUltraFastOptimizer(),
55
+ });
56
+ this.dependencies.monitoringManager = new MonitoringManager.MonitoringManager({
57
+ monitoring: options.monitoring,
58
+ }, {
59
+ app,
60
+ cacheManager: this.dependencies.cacheManager,
61
+ performanceManager: this.dependencies.performanceManager,
62
+ });
63
+ // Initialize other components
64
+ this.dependencies.redirectManager = new RedirectManager.RedirectManager(logger);
65
+ this.dependencies.consoleInterceptor = new ConsoleInterceptor.ConsoleInterceptor(logger, options.logging);
66
+ this.dependencies.notFoundHandler = NotFoundHandler.createNotFoundHandler(options);
67
+ if (options.logging?.consoleInterception?.enabled) {
68
+ this.dependencies.consoleInterceptor.start();
69
+ logger.info("console", "Console interception system activated");
70
+ }
71
+ logger.debug("lifecycle", "Dependent components initialized successfully");
72
+ }
73
+ /**
74
+ * Start server with error handling and port switching
75
+ */
76
+ async startServerWithPortHandling(port, host, callback) {
77
+ const { app, options, logger } = this.dependencies;
78
+ try {
79
+ // Check port availability first when auto port switch is enabled
80
+ if (options.server?.autoPortSwitch?.enabled) {
81
+ const portManager = new PortManager.PortManager(port, options.server?.autoPortSwitch);
82
+ const result = await portManager.findAvailablePort(host);
83
+ if (!result.success) {
84
+ throw new Error(`Failed to find an available port after ${options.server?.autoPortSwitch?.maxAttempts || 10} attempts`);
85
+ }
86
+ if (result.switched) {
87
+ logger.portSwitching("server", `🔄 Port ${port} was in use, switched to port ${result.port}`);
88
+ port = result.port; // Use the switched port
89
+ }
90
+ }
91
+ else {
92
+ // When auto port switch is disabled, check if port is available first
93
+ const portManager = new PortManager.PortManager(port, { enabled: false });
94
+ const result = await portManager.findAvailablePort(host);
95
+ if (!result.success) {
96
+ throw new Error(`Failed to start server. Port ${port} is already in use. ` +
97
+ `Enable autoPortSwitch in server config to automatically find an available port.`);
98
+ }
99
+ }
100
+ // Try to start server on the requested port
101
+ return new Promise((resolve, reject) => {
102
+ logger.debug("server", `ServerLifecycleManager: Starting server on ${host}:${port} using app.listen()`);
103
+ const server = app.listen(port, host, () => {
104
+ this.state.currentPort = port; // Track the actual running port
105
+ logger.info("server", `Server running on ${host}:${port}`);
106
+ logger.debug("server", `State: ${this.state.ready ? "Ready" : "Initializing..."}`);
107
+ if (callback)
108
+ callback();
109
+ resolve(server);
110
+ });
111
+ server.on("error", async (error) => {
112
+ logger.debug("server", `Server error on port ${port}: ${error.code} - ${error.message}`);
113
+ if (error.code === "EADDRINUSE") {
114
+ // Port is in use, try auto-switching if enabled
115
+ if (options.server?.autoPortSwitch?.enabled) {
116
+ logger.info("server", `🔄 Port ${port} is in use, attempting auto port switch...`);
117
+ try {
118
+ const result = await this.handlePortSwitching(port, host);
119
+ logger.info("server", `✅ Found available port: ${result.port}`);
120
+ // Recursively try with the new port
121
+ const newServer = await this.startServerWithPortHandling(result.port, host, callback);
122
+ resolve(newServer);
123
+ }
124
+ catch (switchError) {
125
+ logger.error("server", `❌ Port switching failed: ${switchError}`);
126
+ reject(switchError);
127
+ }
128
+ }
129
+ else {
130
+ reject(new Error(`Failed to start server. Port ${port} is already in use. ` +
131
+ `Enable autoPortSwitch in server config to automatically find an available port.`));
132
+ }
133
+ }
134
+ else {
135
+ reject(error);
136
+ }
137
+ });
138
+ });
139
+ }
140
+ catch (error) {
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Handle automatic port switching when port is in use
146
+ */
147
+ async handlePortSwitching(requestedPort, host = "localhost") {
148
+ const { options, logger } = this.dependencies;
149
+ const portManager = new PortManager.PortManager(requestedPort, options.server?.autoPortSwitch);
150
+ const result = await portManager.findAvailablePort(host);
151
+ if (result.switched) {
152
+ logger.portSwitching("server", `🔄 Port ${requestedPort} was in use, switched to port ${result.port}`);
153
+ logger.portSwitching("server", ` Attempts: ${result.attempts}, Strategy: ${portManager.getConfig()?.strategy || "increment"}`);
154
+ }
155
+ if (!result.success) {
156
+ const maxAttempts = options.server?.autoPortSwitch?.maxAttempts || 10;
157
+ throw new Error(`Failed to find an available port after ${maxAttempts} attempts. ` +
158
+ `Original port: ${requestedPort}, Last attempted: ${result.port}`);
159
+ }
160
+ return result;
161
+ }
162
+ /**
163
+ * Get the current server state
164
+ */
165
+ getState() {
166
+ return { ...this.state };
167
+ }
168
+ /**
169
+ * Update the server state
170
+ */
171
+ updateState(updates) {
172
+ this.state = { ...this.state, ...updates };
173
+ }
174
+ /**
175
+ * Get the current running port
176
+ */
177
+ getCurrentPort() {
178
+ return this.state.currentPort;
179
+ }
180
+ /**
181
+ * Set the HTTP server instance
182
+ */
183
+ setHttpServer(server) {
184
+ this.state.httpServer = server;
185
+ }
186
+ /**
187
+ * Get the HTTP server instance
188
+ */
189
+ getHttpServer() {
190
+ return this.state.httpServer;
191
+ }
192
+ /**
193
+ * Mark the server as ready
194
+ */
195
+ markReady() {
196
+ this.state.ready = true;
197
+ }
198
+ /**
199
+ * Check if the server is ready
200
+ */
201
+ isReady() {
202
+ return this.state.ready;
203
+ }
204
+ /**
205
+ * Add start method to app with cluster support
206
+ */
207
+ addStartMethod(waitForReady) {
208
+ const { app, options, logger } = this.dependencies;
209
+ const start = async (port, callback) => {
210
+ // Wait for server to be ready before starting
211
+ if (!this.state.ready) {
212
+ logger.debug("server", "Waiting for initialization to complete...");
213
+ await waitForReady();
214
+ logger.info("server", "Initialization complete, starting server...");
215
+ }
216
+ const serverPort = port || options.server?.port || 3000;
217
+ const host = options.server?.host || "localhost";
218
+ // Handle different startup modes (hot reload, cluster, single process)
219
+ return await this.handleServerStartup(serverPort, host, callback);
220
+ };
221
+ // Add the start method to the app
222
+ app.start = start;
223
+ app.waitForReady = waitForReady;
224
+ // Add port management methods
225
+ app.getPort = () => this.getCurrentPort();
226
+ app.forceClosePort = async (port) => {
227
+ const { Port } = await Promise.resolve().then(function () { return require('../../utils/forceClosePort.js'); });
228
+ return await new Port(port).forceClosePort();
229
+ };
230
+ // Add redirect management methods if redirectManager is available
231
+ if (this.dependencies.redirectManager) {
232
+ app.redirectFromPort = (fromPort, toPort, options) => this.dependencies.redirectManager.redirectFromPort(fromPort, toPort, options);
233
+ app.getRedirectInstance = (fromPort) => this.dependencies.redirectManager.getRedirectInstance(fromPort);
234
+ app.getAllRedirectInstances = () => this.dependencies.redirectManager.getAllRedirectInstances();
235
+ app.disconnectRedirect = (fromPort) => this.dependencies.redirectManager.disconnectRedirect(fromPort);
236
+ app.disconnectAllRedirects = () => this.dependencies.redirectManager.disconnectAllRedirects();
237
+ app.getRedirectStats = (fromPort) => this.dependencies.redirectManager.getRedirectStats(fromPort);
238
+ }
239
+ }
240
+ /**
241
+ * Handle different server startup modes
242
+ */
243
+ async handleServerStartup(serverPort, host, callback) {
244
+ const { logger } = this.dependencies;
245
+ // Check for hot reload mode
246
+ if (this.dependencies.fileWatcherManager?.isInMainProcess() &&
247
+ this.dependencies.fileWatcherManager?.getHotReloader()) {
248
+ return await this.handleHotReloadStartup(serverPort, host, callback);
249
+ }
250
+ // Check for cluster mode
251
+ if (this.dependencies.clusterManager?.isClusterEnabled()) {
252
+ return await this.handleClusterStartup(serverPort, host, callback);
253
+ }
254
+ // Default single process mode
255
+ logger.debug("server", "Taking single process mode path");
256
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
257
+ }
258
+ /**
259
+ * Handle hot reload startup
260
+ */
261
+ async handleHotReloadStartup(serverPort, host, callback) {
262
+ const { logger } = this.dependencies;
263
+ logger.debug("server", "Taking hot reload mode path");
264
+ logger.startup("fileWatcher", "Starting with hot reload support...");
265
+ try {
266
+ // Start the hot reloader (which will spawn child process)
267
+ await this.dependencies
268
+ .fileWatcherManager.getHotReloader()
269
+ .start();
270
+ // Start file watcher in main process to monitor changes
271
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
272
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
273
+ }
274
+ // Start the actual HTTP server in the main process too
275
+ this.state.httpServer = await this.startServerWithPortHandling(serverPort, host, async () => {
276
+ this.dependencies.fileWatcherManager.setHttpServer(this.state.httpServer);
277
+ if (callback)
278
+ callback();
279
+ });
280
+ return this.state.httpServer;
281
+ }
282
+ catch (error) {
283
+ logger.error("fileWatcher", "Hot reload startup failed:", error.message);
284
+ // Fall through to regular startup
285
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
286
+ }
287
+ }
288
+ /**
289
+ * Handle cluster startup
290
+ */
291
+ async handleClusterStartup(serverPort, host, callback) {
292
+ const { logger } = this.dependencies;
293
+ logger.debug("server", "Taking cluster mode path");
294
+ try {
295
+ // Start cluster manager
296
+ await this.dependencies.clusterManager.startCluster();
297
+ // Check if we're in master or worker process
298
+ // Use cluster.isMaster/isPrimary to detect master vs worker
299
+ const clusterModule = require("cluster");
300
+ if (clusterModule.isMaster || clusterModule.isPrimary) {
301
+ return await this.handleClusterMasterStartup(serverPort, host, callback);
302
+ }
303
+ else {
304
+ return await this.handleClusterWorkerStartup(serverPort, host, callback);
305
+ }
306
+ }
307
+ catch (error) {
308
+ const clusterModule = require("cluster");
309
+ // Only master process should fall back to single-process mode
310
+ if (clusterModule.isMaster || clusterModule.isPrimary) {
311
+ logger.error("cluster", "Failed to start cluster:", error.message);
312
+ logger.info("cluster", "Falling back to single process mode");
313
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
314
+ }
315
+ else {
316
+ // Worker processes should fail fast and let cluster manager restart them
317
+ logger.error("cluster", `Worker ${process.pid} failed to start:`, error.message);
318
+ logger.info("cluster", "Worker will be restarted by cluster manager");
319
+ throw error; // Let the worker process exit and be restarted
320
+ }
321
+ }
322
+ }
323
+ /**
324
+ * Handle cluster master startup
325
+ */
326
+ async handleClusterMasterStartup(serverPort, host, callback) {
327
+ const { logger } = this.dependencies;
328
+ logger.startup("cluster", "Starting as cluster master process");
329
+ // Setup cluster event handlers
330
+ this.dependencies.clusterManager.setupClusterEventHandlers();
331
+ // Start load balancer proxy on the main port
332
+ const proxyServer = await this.startLoadBalancerProxy(serverPort, host);
333
+ logger.info("cluster", `Master process started load balancer on ${host}:${serverPort} - distributing requests to worker processes`);
334
+ const clusterStats = await this.dependencies.clusterManager.getClusterStats();
335
+ logger.debug("cluster", `Cluster master started with ${clusterStats.workers?.total || 0} workers`);
336
+ // Start file watcher if enabled
337
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
338
+ if (this.dependencies.fileWatcherManager.isInMainProcess()) {
339
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
340
+ }
341
+ else {
342
+ await this.dependencies.fileWatcherManager.startFileWatcher();
343
+ }
344
+ }
345
+ if (callback)
346
+ callback();
347
+ return proxyServer;
348
+ }
349
+ /**
350
+ * Start load balancer proxy server on master process
351
+ */
352
+ async startLoadBalancerProxy(port, host) {
353
+ const { logger, clusterManager } = this.dependencies;
354
+ const http = require("http");
355
+ // Create HTTP server for load balancing
356
+ const server = http.createServer(async (req, res) => {
357
+ try {
358
+ // Get available workers from the actual cluster manager
359
+ let allWorkers = [];
360
+ // Check if we have a Bun cluster manager
361
+ const bunCluster = clusterManager.getBunCluster();
362
+ if (bunCluster) {
363
+ allWorkers = bunCluster.getAllWorkers();
364
+ }
365
+ else {
366
+ // Check if we have a Node.js cluster manager
367
+ const nodeCluster = clusterManager.getCluster();
368
+ if (nodeCluster) {
369
+ allWorkers = nodeCluster.getAllWorkers();
370
+ }
371
+ }
372
+ const workers = allWorkers.filter((w) => w.status === "running");
373
+ if (workers.length === 0) {
374
+ res.writeHead(503, { "Content-Type": "application/json" });
375
+ res.end(JSON.stringify({
376
+ error: "Service Unavailable",
377
+ message: "No workers available",
378
+ }));
379
+ return;
380
+ }
381
+ // Simple round-robin load balancing for now
382
+ const selectedWorkerIndex = Math.floor(Math.random() * workers.length);
383
+ const selectedWorker = workers[selectedWorkerIndex];
384
+ if (!selectedWorker || !selectedWorker.port) {
385
+ res.writeHead(503, { "Content-Type": "application/json" });
386
+ res.end(JSON.stringify({
387
+ error: "Service Unavailable",
388
+ message: "Selected worker not available",
389
+ }));
390
+ return;
391
+ }
392
+ // Forward request to selected worker
393
+ const target = `http://${host}:${selectedWorker.port}`;
394
+ logger.debug("cluster", `Proxying ${req.method} ${req.url} to worker ${selectedWorker.id} on port ${selectedWorker.port}`);
395
+ // Simple HTTP proxy implementation
396
+ await this.forwardRequest(req, res, target, selectedWorker.id);
397
+ }
398
+ catch (error) {
399
+ logger.error("cluster", "Load balancer error:", error);
400
+ if (!res.headersSent) {
401
+ res.writeHead(500, { "Content-Type": "application/json" });
402
+ res.end(JSON.stringify({
403
+ error: "Internal Server Error",
404
+ message: "Load balancer error",
405
+ }));
406
+ }
407
+ }
408
+ });
409
+ // Start server
410
+ return new Promise((resolve, reject) => {
411
+ server.listen(port, host, () => {
412
+ logger.info("cluster", `Load balancer proxy started on ${host}:${port}`);
413
+ resolve(server);
414
+ });
415
+ server.on("error", (error) => {
416
+ logger.error("cluster", `Load balancer proxy error:`, error);
417
+ reject(error);
418
+ });
419
+ });
420
+ }
421
+ /**
422
+ * Forward HTTP request to worker
423
+ */
424
+ async forwardRequest(req, res, target, workerId) {
425
+ const { logger } = this.dependencies;
426
+ const http = require("http");
427
+ require("url");
428
+ const targetUrl = new URL(target);
429
+ const options = {
430
+ hostname: targetUrl.hostname,
431
+ port: targetUrl.port,
432
+ path: req.url,
433
+ method: req.method,
434
+ headers: {
435
+ ...req.headers,
436
+ "x-forwarded-for": req.connection?.remoteAddress || req.socket?.remoteAddress,
437
+ "x-forwarded-proto": "http",
438
+ "x-worker-id": workerId,
439
+ },
440
+ };
441
+ const proxyReq = http.request(options, (proxyRes) => {
442
+ // Forward response headers
443
+ res.writeHead(proxyRes.statusCode, proxyRes.headers);
444
+ // Forward response body
445
+ proxyRes.pipe(res);
446
+ });
447
+ proxyReq.on("error", (error) => {
448
+ logger.error("cluster", `Proxy request error for worker ${workerId}:`, error);
449
+ if (!res.headersSent) {
450
+ res.writeHead(502, { "Content-Type": "application/json" });
451
+ res.end(JSON.stringify({
452
+ error: "Bad Gateway",
453
+ message: "Worker unavailable",
454
+ }));
455
+ }
456
+ });
457
+ // Forward request body
458
+ req.pipe(proxyReq);
459
+ }
460
+ /**
461
+ * Handle cluster worker startup
462
+ */
463
+ async handleClusterWorkerStartup(serverPort, host, callback) {
464
+ const { logger } = this.dependencies;
465
+ logger.startup("cluster", `Worker ${process.pid} started`);
466
+ // In cluster mode, workers DO start HTTP servers on the same port
467
+ // The Node.js cluster module handles load balancing automatically
468
+ logger.info("cluster", `Worker ${process.pid} starting HTTP server on shared port ${serverPort}`);
469
+ // Start the HTTP server for this worker
470
+ const httpServer = await this.startServerWithPortHandling(serverPort, host, () => {
471
+ logger.info("cluster", `Worker ${process.pid} listening on ${host}:${serverPort}`);
472
+ if (callback)
473
+ callback();
474
+ });
475
+ return httpServer;
476
+ }
477
+ /**
478
+ * Handle single process startup
479
+ */
480
+ async handleSingleProcessStartup(serverPort, host, callback) {
481
+ this.state.httpServer = await this.startServerWithPortHandling(serverPort, host, async () => {
482
+ // Set HTTP server reference for file watcher restarts
483
+ if (this.dependencies.fileWatcherManager) {
484
+ this.dependencies.fileWatcherManager.setHttpServer(this.state.httpServer);
485
+ // Start file watcher if enabled
486
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
487
+ if (this.dependencies.fileWatcherManager.isInMainProcess()) {
488
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
489
+ }
490
+ else {
491
+ await this.dependencies.fileWatcherManager.startFileWatcher();
492
+ }
493
+ }
494
+ }
495
+ if (callback)
496
+ callback();
497
+ });
498
+ return this.state.httpServer;
499
+ }
500
+ }
501
+
502
+ exports.ServerLifecycleManager = ServerLifecycleManager;
503
+ //# sourceMappingURL=ServerLifecycleManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerLifecycleManager.js","sources":["../../../../../../src/server/components/lifecycle/ServerLifecycleManager.ts"],"sourcesContent":[null],"names":["RequestProcessor","RouteManager","MonitoringManager","RedirectManager","ConsoleInterceptor","createNotFoundHandler","PortManager"],"mappings":"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"}
@@ -11,23 +11,6 @@ var Cluster_config = require('./Cluster.config.js');
11
11
  */
12
12
  // Default configuration
13
13
  const DEFAULT_OPTIONS = {
14
- cache: {
15
- strategy: "memory", // Use memory-only by default to avoid Redis dependency
16
- ttl: 300000, // 5 minutes
17
- enabled: true,
18
- memory: {
19
- maxSize: 100,
20
- algorithm: "lru",
21
- },
22
- },
23
- security: {
24
- encryption: true,
25
- accessMonitoring: true,
26
- sanitization: true,
27
- auditLogging: false,
28
- cors: true,
29
- helmet: true,
30
- },
31
14
  performance: {
32
15
  compression: true,
33
16
  batchSize: 100,
@@ -131,6 +114,29 @@ const DEFAULT_OPTIONS = {
131
114
  enabled: false, // Disabled by default for single-process mode
132
115
  config: Cluster_config.DEFAULT_CLUSTER_CONFIGS,
133
116
  },
117
+ cache: {
118
+ strategy: "memory", // Use memory-only cache
119
+ maxSize: 500 * 1024 * 1024, // 500MB memory cache
120
+ ttl: 300000, // 5 minutes TTL
121
+ enabled: true,
122
+ memory: {
123
+ maxSize: 100, // Max entries
124
+ algorithm: "lru", // Least Recently Used
125
+ },
126
+ },
127
+ security: {
128
+ enabled: true,
129
+ level: "maximum",
130
+ csrf: true,
131
+ helmet: true,
132
+ xss: true,
133
+ sqlInjection: true,
134
+ bruteForce: true,
135
+ encryption: {
136
+ algorithm: "AES-256-GCM",
137
+ keySize: 32,
138
+ },
139
+ },
134
140
  };
135
141
 
136
142
  exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":["DEFAULT_FW_CONFIG","DEFAULT_CONSOLE_CONFIG","DEFAULT_CLUSTER_CONFIGS"],"mappings":"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"}
1
+ {"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":["DEFAULT_FW_CONFIG","DEFAULT_CONSOLE_CONFIG","DEFAULT_CLUSTER_CONFIGS"],"mappings":";;;;;;AAAA;;;;AAIG;AAOH;AACa,MAAA,eAAe,GAAkB;AAC1C,IAAA,WAAW,EAAE;AACT,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;;AAEd,QAAA,mBAAmB,EAAE,IAAI;AACzB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,kBAAkB,EAAE,IAAI;;AAExB,QAAA,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,KAAK;QACrB,qBAAqB,EAAE,CAAC;QACxB,sBAAsB,EAAE,IAAI;AAC5B,QAAA,iBAAiB,EAAE,IAAI;;AAEvB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,yBAAyB,EAAE,IAAI;;AAE/B,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,yBAAyB,EAAE,IAAI;AAClC,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,eAAe,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,EAAE;AACd,SAAA;AACJ,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,IAAI;AACV,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,cAAc,EAAE;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,QAAQ;AACrB,SAAA;AACJ,KAAA;AACD,IAAA,WAAW,EAAE;AACT,QAAA,GAAGA,oCAAiB;QACpB,OAAO,EAAE,KAAK;AACjB,KAAA;AACD,IAAA,OAAO,EAAE;AACL,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,UAAU,EAAE;AACR,YAAA,MAAM,EAAE,IAAI;YACZ,KAAK,EAAE,KAAK;AACZ,YAAA,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;AAClB,YAAA,WAAW,EAAE,IAAI;YACjB,OAAO,EAAE,KAAK;YACd,QAAQ,EAAE,KAAK;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK;AACjB,SAAA;AACD,QAAA,KAAK,EAAE;AACH,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,aAAa,EAAE,IAAI;AACtB,SAAA;AACD,QAAA,MAAM,EAAE;AACJ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,UAAU,EAAE,KAAK;AACpB,SAAA;;AAED,QAAA,mBAAmB,EAAE;AACjB,YAAA,GAAGC,4BAAsB;YACzB,OAAO,EAAE,KAAK;AACd,YAAA,gBAAgB,EAAE,IAAI;AACzB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,cAAc,EAAE,KAAK;AACrB,QAAA,eAAe,EAAE,KAAK;AACzB,KAAA;AACD,IAAA,OAAO,EAAE;QACL,OAAO,EAAE,KAAK;AACd,QAAA,MAAM,EAAEC,sCAAuB;AAClC,KAAA;AACD,IAAA,KAAK,EAAE;QACH,QAAQ,EAAE,QAAQ;AAClB,QAAA,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI;QAC1B,GAAG,EAAE,MAAM;AACX,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,MAAM,EAAE;YACJ,OAAO,EAAE,GAAG;YACZ,SAAS,EAAE,KAAK;AACnB,SAAA;AACJ,KAAA;AACD,IAAA,QAAQ,EAAE;AACN,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,IAAI;AACV,QAAA,MAAM,EAAE,IAAI;AACZ,QAAA,GAAG,EAAE,IAAI;AACT,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,UAAU,EAAE;AACR,YAAA,SAAS,EAAE,aAAa;AACxB,YAAA,OAAO,EAAE,EAAE;AACd,SAAA;AACJ,KAAA;;;;;"}