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,501 @@
1
+ import { PortManager } from '../../utils/PortManager.js';
2
+ import { RequestProcessor } from '../fastapi/RequestProcessor.js';
3
+ import { RouteManager } from '../fastapi/RouteManager.js';
4
+ import { MonitoringManager } from '../fastapi/MonitoringManager.js';
5
+ import { RedirectManager } from '../fastapi/RedirectManager.js';
6
+ import { ConsoleInterceptor } from '../fastapi/console/ConsoleInterceptor.js';
7
+ import { createNotFoundHandler } from '../../handlers/NotFoundHandler.js';
8
+
9
+ /**
10
+ * ServerLifecycleManager - Modular server lifecycle management
11
+ *
12
+ * This module handles server initialization, startup, and lifecycle management
13
+ * in a modular way, extracted from the main FastServer class for better
14
+ * separation of concerns and maintainability.
15
+ */
16
+ /**
17
+ * ServerLifecycleManager - Handles server initialization and startup lifecycle
18
+ */
19
+ class ServerLifecycleManager {
20
+ constructor(dependencies) {
21
+ this.dependencies = dependencies;
22
+ this.state = {
23
+ ready: false,
24
+ currentPort: 0,
25
+ initPromise: Promise.resolve(),
26
+ };
27
+ }
28
+ /**
29
+ * Initialize all dependent components
30
+ */
31
+ async initializeDependentComponents() {
32
+ const { app, options, logger } = this.dependencies;
33
+ // Ensure required components are available
34
+ if (!this.dependencies.cacheManager ||
35
+ !this.dependencies.performanceManager ||
36
+ !this.dependencies.pluginManager) {
37
+ throw new Error("Required components (cacheManager, performanceManager, pluginManager) must be initialized before dependent components");
38
+ }
39
+ logger.debug("lifecycle", "Initializing dependent components...");
40
+ // Initialize components that depend on others
41
+ this.dependencies.requestProcessor = new RequestProcessor({
42
+ performanceProfiler: this.dependencies.performanceManager.getPerformanceProfiler(),
43
+ executionPredictor: this.dependencies.performanceManager.getExecutionPredictor(),
44
+ requestPreCompiler: this.dependencies.performanceManager.getRequestPreCompiler(),
45
+ pluginEngine: this.dependencies.pluginManager.getPluginEngine(),
46
+ cacheManager: this.dependencies.cacheManager,
47
+ });
48
+ this.dependencies.routeManager = new RouteManager({
49
+ app,
50
+ cacheManager: this.dependencies.cacheManager,
51
+ middlewareManager: this.dependencies.middlewareManager,
52
+ ultraFastOptimizer: this.dependencies.performanceManager.getUltraFastOptimizer(),
53
+ });
54
+ this.dependencies.monitoringManager = new MonitoringManager({
55
+ monitoring: options.monitoring,
56
+ }, {
57
+ app,
58
+ cacheManager: this.dependencies.cacheManager,
59
+ performanceManager: this.dependencies.performanceManager,
60
+ });
61
+ // Initialize other components
62
+ this.dependencies.redirectManager = new RedirectManager(logger);
63
+ this.dependencies.consoleInterceptor = new ConsoleInterceptor(logger, options.logging);
64
+ this.dependencies.notFoundHandler = createNotFoundHandler(options);
65
+ if (options.logging?.consoleInterception?.enabled) {
66
+ this.dependencies.consoleInterceptor.start();
67
+ logger.info("console", "Console interception system activated");
68
+ }
69
+ logger.debug("lifecycle", "Dependent components initialized successfully");
70
+ }
71
+ /**
72
+ * Start server with error handling and port switching
73
+ */
74
+ async startServerWithPortHandling(port, host, callback) {
75
+ const { app, options, logger } = this.dependencies;
76
+ try {
77
+ // Check port availability first when auto port switch is enabled
78
+ if (options.server?.autoPortSwitch?.enabled) {
79
+ const portManager = new PortManager(port, options.server?.autoPortSwitch);
80
+ const result = await portManager.findAvailablePort(host);
81
+ if (!result.success) {
82
+ throw new Error(`Failed to find an available port after ${options.server?.autoPortSwitch?.maxAttempts || 10} attempts`);
83
+ }
84
+ if (result.switched) {
85
+ logger.portSwitching("server", `🔄 Port ${port} was in use, switched to port ${result.port}`);
86
+ port = result.port; // Use the switched port
87
+ }
88
+ }
89
+ else {
90
+ // When auto port switch is disabled, check if port is available first
91
+ const portManager = new PortManager(port, { enabled: false });
92
+ const result = await portManager.findAvailablePort(host);
93
+ if (!result.success) {
94
+ throw new Error(`Failed to start server. Port ${port} is already in use. ` +
95
+ `Enable autoPortSwitch in server config to automatically find an available port.`);
96
+ }
97
+ }
98
+ // Try to start server on the requested port
99
+ return new Promise((resolve, reject) => {
100
+ logger.debug("server", `ServerLifecycleManager: Starting server on ${host}:${port} using app.listen()`);
101
+ const server = app.listen(port, host, () => {
102
+ this.state.currentPort = port; // Track the actual running port
103
+ logger.info("server", `Server running on ${host}:${port}`);
104
+ logger.debug("server", `State: ${this.state.ready ? "Ready" : "Initializing..."}`);
105
+ if (callback)
106
+ callback();
107
+ resolve(server);
108
+ });
109
+ server.on("error", async (error) => {
110
+ logger.debug("server", `Server error on port ${port}: ${error.code} - ${error.message}`);
111
+ if (error.code === "EADDRINUSE") {
112
+ // Port is in use, try auto-switching if enabled
113
+ if (options.server?.autoPortSwitch?.enabled) {
114
+ logger.info("server", `🔄 Port ${port} is in use, attempting auto port switch...`);
115
+ try {
116
+ const result = await this.handlePortSwitching(port, host);
117
+ logger.info("server", `✅ Found available port: ${result.port}`);
118
+ // Recursively try with the new port
119
+ const newServer = await this.startServerWithPortHandling(result.port, host, callback);
120
+ resolve(newServer);
121
+ }
122
+ catch (switchError) {
123
+ logger.error("server", `❌ Port switching failed: ${switchError}`);
124
+ reject(switchError);
125
+ }
126
+ }
127
+ else {
128
+ reject(new Error(`Failed to start server. Port ${port} is already in use. ` +
129
+ `Enable autoPortSwitch in server config to automatically find an available port.`));
130
+ }
131
+ }
132
+ else {
133
+ reject(error);
134
+ }
135
+ });
136
+ });
137
+ }
138
+ catch (error) {
139
+ throw error;
140
+ }
141
+ }
142
+ /**
143
+ * Handle automatic port switching when port is in use
144
+ */
145
+ async handlePortSwitching(requestedPort, host = "localhost") {
146
+ const { options, logger } = this.dependencies;
147
+ const portManager = new PortManager(requestedPort, options.server?.autoPortSwitch);
148
+ const result = await portManager.findAvailablePort(host);
149
+ if (result.switched) {
150
+ logger.portSwitching("server", `🔄 Port ${requestedPort} was in use, switched to port ${result.port}`);
151
+ logger.portSwitching("server", ` Attempts: ${result.attempts}, Strategy: ${portManager.getConfig()?.strategy || "increment"}`);
152
+ }
153
+ if (!result.success) {
154
+ const maxAttempts = options.server?.autoPortSwitch?.maxAttempts || 10;
155
+ throw new Error(`Failed to find an available port after ${maxAttempts} attempts. ` +
156
+ `Original port: ${requestedPort}, Last attempted: ${result.port}`);
157
+ }
158
+ return result;
159
+ }
160
+ /**
161
+ * Get the current server state
162
+ */
163
+ getState() {
164
+ return { ...this.state };
165
+ }
166
+ /**
167
+ * Update the server state
168
+ */
169
+ updateState(updates) {
170
+ this.state = { ...this.state, ...updates };
171
+ }
172
+ /**
173
+ * Get the current running port
174
+ */
175
+ getCurrentPort() {
176
+ return this.state.currentPort;
177
+ }
178
+ /**
179
+ * Set the HTTP server instance
180
+ */
181
+ setHttpServer(server) {
182
+ this.state.httpServer = server;
183
+ }
184
+ /**
185
+ * Get the HTTP server instance
186
+ */
187
+ getHttpServer() {
188
+ return this.state.httpServer;
189
+ }
190
+ /**
191
+ * Mark the server as ready
192
+ */
193
+ markReady() {
194
+ this.state.ready = true;
195
+ }
196
+ /**
197
+ * Check if the server is ready
198
+ */
199
+ isReady() {
200
+ return this.state.ready;
201
+ }
202
+ /**
203
+ * Add start method to app with cluster support
204
+ */
205
+ addStartMethod(waitForReady) {
206
+ const { app, options, logger } = this.dependencies;
207
+ const start = async (port, callback) => {
208
+ // Wait for server to be ready before starting
209
+ if (!this.state.ready) {
210
+ logger.debug("server", "Waiting for initialization to complete...");
211
+ await waitForReady();
212
+ logger.info("server", "Initialization complete, starting server...");
213
+ }
214
+ const serverPort = port || options.server?.port || 3000;
215
+ const host = options.server?.host || "localhost";
216
+ // Handle different startup modes (hot reload, cluster, single process)
217
+ return await this.handleServerStartup(serverPort, host, callback);
218
+ };
219
+ // Add the start method to the app
220
+ app.start = start;
221
+ app.waitForReady = waitForReady;
222
+ // Add port management methods
223
+ app.getPort = () => this.getCurrentPort();
224
+ app.forceClosePort = async (port) => {
225
+ const { Port } = await import('../../utils/forceClosePort.js');
226
+ return await new Port(port).forceClosePort();
227
+ };
228
+ // Add redirect management methods if redirectManager is available
229
+ if (this.dependencies.redirectManager) {
230
+ app.redirectFromPort = (fromPort, toPort, options) => this.dependencies.redirectManager.redirectFromPort(fromPort, toPort, options);
231
+ app.getRedirectInstance = (fromPort) => this.dependencies.redirectManager.getRedirectInstance(fromPort);
232
+ app.getAllRedirectInstances = () => this.dependencies.redirectManager.getAllRedirectInstances();
233
+ app.disconnectRedirect = (fromPort) => this.dependencies.redirectManager.disconnectRedirect(fromPort);
234
+ app.disconnectAllRedirects = () => this.dependencies.redirectManager.disconnectAllRedirects();
235
+ app.getRedirectStats = (fromPort) => this.dependencies.redirectManager.getRedirectStats(fromPort);
236
+ }
237
+ }
238
+ /**
239
+ * Handle different server startup modes
240
+ */
241
+ async handleServerStartup(serverPort, host, callback) {
242
+ const { logger } = this.dependencies;
243
+ // Check for hot reload mode
244
+ if (this.dependencies.fileWatcherManager?.isInMainProcess() &&
245
+ this.dependencies.fileWatcherManager?.getHotReloader()) {
246
+ return await this.handleHotReloadStartup(serverPort, host, callback);
247
+ }
248
+ // Check for cluster mode
249
+ if (this.dependencies.clusterManager?.isClusterEnabled()) {
250
+ return await this.handleClusterStartup(serverPort, host, callback);
251
+ }
252
+ // Default single process mode
253
+ logger.debug("server", "Taking single process mode path");
254
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
255
+ }
256
+ /**
257
+ * Handle hot reload startup
258
+ */
259
+ async handleHotReloadStartup(serverPort, host, callback) {
260
+ const { logger } = this.dependencies;
261
+ logger.debug("server", "Taking hot reload mode path");
262
+ logger.startup("fileWatcher", "Starting with hot reload support...");
263
+ try {
264
+ // Start the hot reloader (which will spawn child process)
265
+ await this.dependencies
266
+ .fileWatcherManager.getHotReloader()
267
+ .start();
268
+ // Start file watcher in main process to monitor changes
269
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
270
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
271
+ }
272
+ // Start the actual HTTP server in the main process too
273
+ this.state.httpServer = await this.startServerWithPortHandling(serverPort, host, async () => {
274
+ this.dependencies.fileWatcherManager.setHttpServer(this.state.httpServer);
275
+ if (callback)
276
+ callback();
277
+ });
278
+ return this.state.httpServer;
279
+ }
280
+ catch (error) {
281
+ logger.error("fileWatcher", "Hot reload startup failed:", error.message);
282
+ // Fall through to regular startup
283
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
284
+ }
285
+ }
286
+ /**
287
+ * Handle cluster startup
288
+ */
289
+ async handleClusterStartup(serverPort, host, callback) {
290
+ const { logger } = this.dependencies;
291
+ logger.debug("server", "Taking cluster mode path");
292
+ try {
293
+ // Start cluster manager
294
+ await this.dependencies.clusterManager.startCluster();
295
+ // Check if we're in master or worker process
296
+ // Use cluster.isMaster/isPrimary to detect master vs worker
297
+ const clusterModule = require("cluster");
298
+ if (clusterModule.isMaster || clusterModule.isPrimary) {
299
+ return await this.handleClusterMasterStartup(serverPort, host, callback);
300
+ }
301
+ else {
302
+ return await this.handleClusterWorkerStartup(serverPort, host, callback);
303
+ }
304
+ }
305
+ catch (error) {
306
+ const clusterModule = require("cluster");
307
+ // Only master process should fall back to single-process mode
308
+ if (clusterModule.isMaster || clusterModule.isPrimary) {
309
+ logger.error("cluster", "Failed to start cluster:", error.message);
310
+ logger.info("cluster", "Falling back to single process mode");
311
+ return await this.handleSingleProcessStartup(serverPort, host, callback);
312
+ }
313
+ else {
314
+ // Worker processes should fail fast and let cluster manager restart them
315
+ logger.error("cluster", `Worker ${process.pid} failed to start:`, error.message);
316
+ logger.info("cluster", "Worker will be restarted by cluster manager");
317
+ throw error; // Let the worker process exit and be restarted
318
+ }
319
+ }
320
+ }
321
+ /**
322
+ * Handle cluster master startup
323
+ */
324
+ async handleClusterMasterStartup(serverPort, host, callback) {
325
+ const { logger } = this.dependencies;
326
+ logger.startup("cluster", "Starting as cluster master process");
327
+ // Setup cluster event handlers
328
+ this.dependencies.clusterManager.setupClusterEventHandlers();
329
+ // Start load balancer proxy on the main port
330
+ const proxyServer = await this.startLoadBalancerProxy(serverPort, host);
331
+ logger.info("cluster", `Master process started load balancer on ${host}:${serverPort} - distributing requests to worker processes`);
332
+ const clusterStats = await this.dependencies.clusterManager.getClusterStats();
333
+ logger.debug("cluster", `Cluster master started with ${clusterStats.workers?.total || 0} workers`);
334
+ // Start file watcher if enabled
335
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
336
+ if (this.dependencies.fileWatcherManager.isInMainProcess()) {
337
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
338
+ }
339
+ else {
340
+ await this.dependencies.fileWatcherManager.startFileWatcher();
341
+ }
342
+ }
343
+ if (callback)
344
+ callback();
345
+ return proxyServer;
346
+ }
347
+ /**
348
+ * Start load balancer proxy server on master process
349
+ */
350
+ async startLoadBalancerProxy(port, host) {
351
+ const { logger, clusterManager } = this.dependencies;
352
+ const http = require("http");
353
+ // Create HTTP server for load balancing
354
+ const server = http.createServer(async (req, res) => {
355
+ try {
356
+ // Get available workers from the actual cluster manager
357
+ let allWorkers = [];
358
+ // Check if we have a Bun cluster manager
359
+ const bunCluster = clusterManager.getBunCluster();
360
+ if (bunCluster) {
361
+ allWorkers = bunCluster.getAllWorkers();
362
+ }
363
+ else {
364
+ // Check if we have a Node.js cluster manager
365
+ const nodeCluster = clusterManager.getCluster();
366
+ if (nodeCluster) {
367
+ allWorkers = nodeCluster.getAllWorkers();
368
+ }
369
+ }
370
+ const workers = allWorkers.filter((w) => w.status === "running");
371
+ if (workers.length === 0) {
372
+ res.writeHead(503, { "Content-Type": "application/json" });
373
+ res.end(JSON.stringify({
374
+ error: "Service Unavailable",
375
+ message: "No workers available",
376
+ }));
377
+ return;
378
+ }
379
+ // Simple round-robin load balancing for now
380
+ const selectedWorkerIndex = Math.floor(Math.random() * workers.length);
381
+ const selectedWorker = workers[selectedWorkerIndex];
382
+ if (!selectedWorker || !selectedWorker.port) {
383
+ res.writeHead(503, { "Content-Type": "application/json" });
384
+ res.end(JSON.stringify({
385
+ error: "Service Unavailable",
386
+ message: "Selected worker not available",
387
+ }));
388
+ return;
389
+ }
390
+ // Forward request to selected worker
391
+ const target = `http://${host}:${selectedWorker.port}`;
392
+ logger.debug("cluster", `Proxying ${req.method} ${req.url} to worker ${selectedWorker.id} on port ${selectedWorker.port}`);
393
+ // Simple HTTP proxy implementation
394
+ await this.forwardRequest(req, res, target, selectedWorker.id);
395
+ }
396
+ catch (error) {
397
+ logger.error("cluster", "Load balancer error:", error);
398
+ if (!res.headersSent) {
399
+ res.writeHead(500, { "Content-Type": "application/json" });
400
+ res.end(JSON.stringify({
401
+ error: "Internal Server Error",
402
+ message: "Load balancer error",
403
+ }));
404
+ }
405
+ }
406
+ });
407
+ // Start server
408
+ return new Promise((resolve, reject) => {
409
+ server.listen(port, host, () => {
410
+ logger.info("cluster", `Load balancer proxy started on ${host}:${port}`);
411
+ resolve(server);
412
+ });
413
+ server.on("error", (error) => {
414
+ logger.error("cluster", `Load balancer proxy error:`, error);
415
+ reject(error);
416
+ });
417
+ });
418
+ }
419
+ /**
420
+ * Forward HTTP request to worker
421
+ */
422
+ async forwardRequest(req, res, target, workerId) {
423
+ const { logger } = this.dependencies;
424
+ const http = require("http");
425
+ require("url");
426
+ const targetUrl = new URL(target);
427
+ const options = {
428
+ hostname: targetUrl.hostname,
429
+ port: targetUrl.port,
430
+ path: req.url,
431
+ method: req.method,
432
+ headers: {
433
+ ...req.headers,
434
+ "x-forwarded-for": req.connection?.remoteAddress || req.socket?.remoteAddress,
435
+ "x-forwarded-proto": "http",
436
+ "x-worker-id": workerId,
437
+ },
438
+ };
439
+ const proxyReq = http.request(options, (proxyRes) => {
440
+ // Forward response headers
441
+ res.writeHead(proxyRes.statusCode, proxyRes.headers);
442
+ // Forward response body
443
+ proxyRes.pipe(res);
444
+ });
445
+ proxyReq.on("error", (error) => {
446
+ logger.error("cluster", `Proxy request error for worker ${workerId}:`, error);
447
+ if (!res.headersSent) {
448
+ res.writeHead(502, { "Content-Type": "application/json" });
449
+ res.end(JSON.stringify({
450
+ error: "Bad Gateway",
451
+ message: "Worker unavailable",
452
+ }));
453
+ }
454
+ });
455
+ // Forward request body
456
+ req.pipe(proxyReq);
457
+ }
458
+ /**
459
+ * Handle cluster worker startup
460
+ */
461
+ async handleClusterWorkerStartup(serverPort, host, callback) {
462
+ const { logger } = this.dependencies;
463
+ logger.startup("cluster", `Worker ${process.pid} started`);
464
+ // In cluster mode, workers DO start HTTP servers on the same port
465
+ // The Node.js cluster module handles load balancing automatically
466
+ logger.info("cluster", `Worker ${process.pid} starting HTTP server on shared port ${serverPort}`);
467
+ // Start the HTTP server for this worker
468
+ const httpServer = await this.startServerWithPortHandling(serverPort, host, () => {
469
+ logger.info("cluster", `Worker ${process.pid} listening on ${host}:${serverPort}`);
470
+ if (callback)
471
+ callback();
472
+ });
473
+ return httpServer;
474
+ }
475
+ /**
476
+ * Handle single process startup
477
+ */
478
+ async handleSingleProcessStartup(serverPort, host, callback) {
479
+ this.state.httpServer = await this.startServerWithPortHandling(serverPort, host, async () => {
480
+ // Set HTTP server reference for file watcher restarts
481
+ if (this.dependencies.fileWatcherManager) {
482
+ this.dependencies.fileWatcherManager.setHttpServer(this.state.httpServer);
483
+ // Start file watcher if enabled
484
+ if (this.dependencies.fileWatcherManager.getFileWatcher()) {
485
+ if (this.dependencies.fileWatcherManager.isInMainProcess()) {
486
+ await this.dependencies.fileWatcherManager.startFileWatcherWithHotReload();
487
+ }
488
+ else {
489
+ await this.dependencies.fileWatcherManager.startFileWatcher();
490
+ }
491
+ }
492
+ }
493
+ if (callback)
494
+ callback();
495
+ });
496
+ return this.state.httpServer;
497
+ }
498
+ }
499
+
500
+ export { ServerLifecycleManager };
501
+ //# sourceMappingURL=ServerLifecycleManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServerLifecycleManager.js","sources":["../../../../../../src/server/components/lifecycle/ServerLifecycleManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;AAAA;;;;;;AAMG;AAsDH;;AAEG;MACU,sBAAsB,CAAA;AAI/B,IAAA,WAAA,CAAY,YAAyC,EAAA;AACjD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG;AACT,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,WAAW,EAAE,CAAC;AACd,YAAA,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE;SACjC,CAAC;KACL;AAED;;AAEG;AACI,IAAA,MAAM,6BAA6B,GAAA;QACtC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;;AAGnD,QAAA,IACI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY;AAC/B,YAAA,CAAC,IAAI,CAAC,YAAY,CAAC,kBAAkB;AACrC,YAAA,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAClC;AACE,YAAA,MAAM,IAAI,KAAK,CACX,uHAAuH,CAC1H,CAAC;SACL;AAED,QAAA,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC;;AAGlE,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;YACtD,mBAAmB,EACf,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;YACjE,kBAAkB,EACd,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;YAChE,kBAAkB,EACd,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;YAChE,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,EAAE;AAC/D,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;AAC/C,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC;YAC9C,GAAG;AACH,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;AAC5C,YAAA,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,iBAAiB;YACtD,kBAAkB,EACd,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,qBAAqB,EAAE;AACnE,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CACvD;YACI,UAAU,EAAE,OAAO,CAAC,UAAU;SACjC,EACD;YACI,GAAG;AACH,YAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;AAC5C,YAAA,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB;AAC3D,SAAA,CACJ,CAAC;;QAGF,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,CACzD,MAAM,EACN,OAAO,CAAC,OAAO,CAClB,CAAC;QACF,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAEnE,IAAI,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE;AAC/C,YAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC7C,YAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,uCAAuC,CAAC,CAAC;SACnE;AAED,QAAA,MAAM,CAAC,KAAK,CACR,WAAW,EACX,+CAA+C,CAClD,CAAC;KACL;AAED;;AAEG;AACI,IAAA,MAAM,2BAA2B,CACpC,IAAY,EACZ,IAAY,EACZ,QAAqB,EAAA;QAErB,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAEnD,QAAA,IAAI;;YAEA,IAAI,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;AACzC,gBAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAC/B,IAAI,EACJ,OAAO,CAAC,MAAM,EAAE,cAAc,CACjC,CAAC;gBACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEzD,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,oBAAA,MAAM,IAAI,KAAK,CACX,CAAA,uCAAA,EACI,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,IAAI,EACnD,CAAA,SAAA,CAAW,CACd,CAAC;iBACL;AAED,gBAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACjB,oBAAA,MAAM,CAAC,aAAa,CAChB,QAAQ,EACR,CAAA,QAAA,EAAW,IAAI,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAA,CAAE,CAChE,CAAC;AACF,oBAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;iBACtB;aACJ;iBAAM;;AAEH,gBAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEzD,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AACjB,oBAAA,MAAM,IAAI,KAAK,CACX,CAAA,6BAAA,EAAgC,IAAI,CAAsB,oBAAA,CAAA;AACtD,wBAAA,CAAA,+EAAA,CAAiF,CACxF,CAAC;iBACL;aACJ;;YAGD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBACnC,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,CAA8C,2CAAA,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,CAAqB,mBAAA,CAAA,CAClF,CAAC;gBACF,MAAM,MAAM,GAAI,GAAW,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAK;oBAChD,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC9B,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAqB,kBAAA,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CAAC,CAAC;oBAC3D,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,CACI,OAAA,EAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,GAAG,iBACjC,CAAE,CAAA,CACL,CAAC;AACF,oBAAA,IAAI,QAAQ;AAAE,wBAAA,QAAQ,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,iBAAC,CAAC,CAAC;gBAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAU,KAAI;AACpC,oBAAA,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,wBAAwB,IAAI,CAAA,EAAA,EAAK,KAAK,CAAC,IAAI,CAAM,GAAA,EAAA,KAAK,CAAC,OAAO,CAAA,CAAE,CACnE,CAAC;AAEF,oBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE;;wBAE7B,IAAI,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;4BACzC,MAAM,CAAC,IAAI,CACP,QAAQ,EACR,CAAW,QAAA,EAAA,IAAI,CAA4C,0CAAA,CAAA,CAC9D,CAAC;AACF,4BAAA,IAAI;gCACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,CACzC,IAAI,EACJ,IAAI,CACP,CAAC;gCACF,MAAM,CAAC,IAAI,CACP,QAAQ,EACR,CAA2B,wBAAA,EAAA,MAAM,CAAC,IAAI,CAAE,CAAA,CAC3C,CAAC;;AAGF,gCAAA,MAAM,SAAS,GACX,MAAM,IAAI,CAAC,2BAA2B,CAClC,MAAM,CAAC,IAAI,EACX,IAAI,EACJ,QAAQ,CACX,CAAC;gCACN,OAAO,CAAC,SAAS,CAAC,CAAC;6BACtB;4BAAC,OAAO,WAAW,EAAE;gCAClB,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,CAA4B,yBAAA,EAAA,WAAW,CAAE,CAAA,CAC5C,CAAC;gCACF,MAAM,CAAC,WAAW,CAAC,CAAC;6BACvB;yBACJ;6BAAM;AACH,4BAAA,MAAM,CACF,IAAI,KAAK,CACL,CAAA,6BAAA,EAAgC,IAAI,CAAsB,oBAAA,CAAA;gCACtD,CAAiF,+EAAA,CAAA,CACxF,CACJ,CAAC;yBACL;qBACJ;yBAAM;wBACH,MAAM,CAAC,KAAK,CAAC,CAAC;qBACjB;AACL,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;SACN;QAAC,OAAO,KAAK,EAAE;AACZ,YAAA,MAAM,KAAK,CAAC;SACf;KACJ;AAED;;AAEG;AACK,IAAA,MAAM,mBAAmB,CAC7B,aAAqB,EACrB,OAAe,WAAW,EAAA;QAE1B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAE9C,QAAA,MAAM,WAAW,GAAG,IAAI,WAAW,CAC/B,aAAa,EACb,OAAO,CAAC,MAAM,EAAE,cAAc,CACjC,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAEzD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,CAAC,aAAa,CAChB,QAAQ,EACR,CAAA,QAAA,EAAW,aAAa,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAA,CAAE,CACzE,CAAC;YACF,MAAM,CAAC,aAAa,CAChB,QAAQ,EACR,CAAgB,aAAA,EAAA,MAAM,CAAC,QAAQ,CAAA,YAAA,EAC3B,WAAW,CAAC,SAAS,EAAE,EAAE,QAAQ,IAAI,WACzC,CAAA,CAAE,CACL,CAAC;SACL;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACjB,MAAM,WAAW,GACb,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,WAAW,IAAI,EAAE,CAAC;AACtD,YAAA,MAAM,IAAI,KAAK,CACX,CAAA,uCAAA,EAA0C,WAAW,CAAa,WAAA,CAAA;AAC9D,gBAAA,CAAA,eAAA,EAAkB,aAAa,CAAqB,kBAAA,EAAA,MAAM,CAAC,IAAI,CAAA,CAAE,CACxE,CAAC;SACL;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;AAEG;IACI,QAAQ,GAAA;AACX,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;KAC5B;AAED;;AAEG;AACI,IAAA,WAAW,CAAC,OAAsC,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;KAC9C;AAED;;AAEG;IACI,cAAc,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;KACjC;AAED;;AAEG;AACI,IAAA,aAAa,CAAC,MAAW,EAAA;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;KAClC;AAED;;AAEG;IACI,aAAa,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;KAChC;AAED;;AAEG;IACI,SAAS,GAAA;AACZ,QAAA,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;KAC3B;AAED;;AAEG;IACI,OAAO,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;KAC3B;AAED;;AAEG;AACI,IAAA,cAAc,CAAC,YAAiC,EAAA;QACnD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAEnD,MAAM,KAAK,GAAG,OAAO,IAAa,EAAE,QAAqB,KAAI;;AAEzD,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACnB,gBAAA,MAAM,CAAC,KAAK,CACR,QAAQ,EACR,2CAA2C,CAC9C,CAAC;gBACF,MAAM,YAAY,EAAE,CAAC;AACrB,gBAAA,MAAM,CAAC,IAAI,CACP,QAAQ,EACR,6CAA6C,CAChD,CAAC;aACL;YAED,MAAM,UAAU,GAAG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,IAAI,CAAC;YACxD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,WAAW,CAAC;;YAGjD,OAAO,MAAM,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AACtE,SAAC,CAAC;;AAGF,QAAA,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;AAClB,QAAA,GAAG,CAAC,YAAY,GAAG,YAAY,CAAC;;QAGhC,GAAG,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;AAC1C,QAAA,GAAG,CAAC,cAAc,GAAG,OAAO,IAAY,KAAI;YACxC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,OAAO,+BAA4B,CAAC,CAAC;YAC5D,OAAO,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;AACjD,SAAC,CAAC;;AAGF,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE;YACnC,GAAG,CAAC,gBAAgB,GAAG,CACnB,QAAgB,EAChB,MAAc,EACd,OAAa,KAEb,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,gBAAgB,CAC/C,QAAQ,EACR,MAAM,EACN,OAAO,CACV,CAAC;AACN,YAAA,GAAG,CAAC,mBAAmB,GAAG,CAAC,QAAgB,KACvC,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,mBAAmB,CAClD,QAAQ,CACX,CAAC;AACN,YAAA,GAAG,CAAC,uBAAuB,GAAG,MAC1B,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,uBAAuB,EAAE,CAAC;AACjE,YAAA,GAAG,CAAC,kBAAkB,GAAG,CAAC,QAAgB,KACtC,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;AACpE,YAAA,GAAG,CAAC,sBAAsB,GAAG,MACzB,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,sBAAsB,EAAE,CAAC;AAChE,YAAA,GAAG,CAAC,gBAAgB,GAAG,CAAC,QAAgB,KACpC,IAAI,CAAC,YAAY,CAAC,eAAgB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACrE;KACJ;AAED;;AAEG;AACK,IAAA,MAAM,mBAAmB,CAC7B,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;;AAGrC,QAAA,IACI,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,eAAe,EAAE;YACvD,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,cAAc,EAAE,EACxD;YACE,OAAO,MAAM,IAAI,CAAC,sBAAsB,CACpC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;SACL;;QAGD,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,gBAAgB,EAAE,EAAE;YACtD,OAAO,MAAM,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;SACtE;;AAGD,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,iCAAiC,CAAC,CAAC;QAC1D,OAAO,MAAM,IAAI,CAAC,0BAA0B,CACxC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;KACL;AAED;;AAEG;AACK,IAAA,MAAM,sBAAsB,CAChC,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAErC,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;AACtD,QAAA,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,qCAAqC,CAAC,CAAC;AAErE,QAAA,IAAI;;YAEA,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAmB,CAAC,cAAc,EAAG;AACrC,iBAAA,KAAK,EAAE,CAAC;;YAGb,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,cAAc,EAAE,EAAE;gBACxD,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,6BAA6B,EAAE,CAAC;aAC/E;;AAGD,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAC1D,UAAU,EACV,IAAI,EACJ,YAAW;AACP,gBAAA,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,aAAa,CAC/C,IAAI,CAAC,KAAK,CAAC,UAAU,CACxB,CAAC;AACF,gBAAA,IAAI,QAAQ;AAAE,oBAAA,QAAQ,EAAE,CAAC;AAC7B,aAAC,CACJ,CAAC;AAEF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;SAChC;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,CAAC,KAAK,CACR,aAAa,EACb,4BAA4B,EAC5B,KAAK,CAAC,OAAO,CAChB,CAAC;;YAEF,OAAO,MAAM,IAAI,CAAC,0BAA0B,CACxC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;SACL;KACJ;AAED;;AAEG;AACK,IAAA,MAAM,oBAAoB,CAC9B,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAErC,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;AAEnD,QAAA,IAAI;;YAEA,MAAM,IAAI,CAAC,YAAY,CAAC,cAAe,CAAC,YAAY,EAAE,CAAC;;;AAIvD,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE;gBACnD,OAAO,MAAM,IAAI,CAAC,0BAA0B,CACxC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;aACL;iBAAM;gBACH,OAAO,MAAM,IAAI,CAAC,0BAA0B,CACxC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;aACL;SACJ;QAAC,OAAO,KAAU,EAAE;AACjB,YAAA,MAAM,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;;YAGzC,IAAI,aAAa,CAAC,QAAQ,IAAI,aAAa,CAAC,SAAS,EAAE;gBACnD,MAAM,CAAC,KAAK,CACR,SAAS,EACT,0BAA0B,EAC1B,KAAK,CAAC,OAAO,CAChB,CAAC;AACF,gBAAA,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;gBAC9D,OAAO,MAAM,IAAI,CAAC,0BAA0B,CACxC,UAAU,EACV,IAAI,EACJ,QAAQ,CACX,CAAC;aACL;iBAAM;;AAEH,gBAAA,MAAM,CAAC,KAAK,CACR,SAAS,EACT,CAAU,OAAA,EAAA,OAAO,CAAC,GAAG,mBAAmB,EACxC,KAAK,CAAC,OAAO,CAChB,CAAC;AACF,gBAAA,MAAM,CAAC,IAAI,CACP,SAAS,EACT,6CAA6C,CAChD,CAAC;gBACF,MAAM,KAAK,CAAC;aACf;SACJ;KACJ;AAED;;AAEG;AACK,IAAA,MAAM,0BAA0B,CACpC,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AAErC,QAAA,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,oCAAoC,CAAC,CAAC;;AAGhE,QAAA,IAAI,CAAC,YAAY,CAAC,cAAe,CAAC,yBAAyB,EAAE,CAAC;;QAG9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAExE,MAAM,CAAC,IAAI,CACP,SAAS,EACT,CAA2C,wCAAA,EAAA,IAAI,CAAI,CAAA,EAAA,UAAU,CAA8C,4CAAA,CAAA,CAC9G,CAAC;QAEF,MAAM,YAAY,GACd,MAAM,IAAI,CAAC,YAAY,CAAC,cAAe,CAAC,eAAe,EAAE,CAAC;AAC9D,QAAA,MAAM,CAAC,KAAK,CACR,SAAS,EACT,CACI,4BAAA,EAAA,YAAY,CAAC,OAAO,EAAE,KAAK,IAAI,CACnC,CAAA,QAAA,CAAU,CACb,CAAC;;QAGF,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,cAAc,EAAE,EAAE;YACxD,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,eAAe,EAAE,EAAE;gBACzD,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,6BAA6B,EAAE,CAAC;aAC/E;iBAAM;gBACH,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAmB,CAAC,gBAAgB,EAAE,CAAC;aAClE;SACJ;AAED,QAAA,IAAI,QAAQ;AAAE,YAAA,QAAQ,EAAE,CAAC;AACzB,QAAA,OAAO,WAAW,CAAC;KACtB;AAED;;AAEG;AACK,IAAA,MAAM,sBAAsB,CAChC,IAAY,EACZ,IAAY,EAAA;QAEZ,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACrD,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;;AAG7B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,GAAQ,EAAE,GAAQ,KAAI;AAC1D,YAAA,IAAI;;gBAEA,IAAI,UAAU,GAAU,EAAE,CAAC;;AAG3B,gBAAA,MAAM,UAAU,GAAG,cAAe,CAAC,aAAa,EAAE,CAAC;gBACnD,IAAI,UAAU,EAAE;AACZ,oBAAA,UAAU,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;iBAC3C;qBAAM;;AAEH,oBAAA,MAAM,WAAW,GAAG,cAAe,CAAC,UAAU,EAAE,CAAC;oBACjD,IAAI,WAAW,EAAE;AACb,wBAAA,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;qBAC5C;iBACJ;AAED,gBAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAC7B,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,SAAS,CAChC,CAAC;AAEF,gBAAA,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;oBACtB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3D,oBAAA,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;AACX,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,OAAO,EAAE,sBAAsB;AAClC,qBAAA,CAAC,CACL,CAAC;oBACF,OAAO;iBACV;;AAGD,gBAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAClC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC;AACF,gBAAA,MAAM,cAAc,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;gBAEpD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;oBACzC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3D,oBAAA,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;AACX,wBAAA,KAAK,EAAE,qBAAqB;AAC5B,wBAAA,OAAO,EAAE,+BAA+B;AAC3C,qBAAA,CAAC,CACL,CAAC;oBACF,OAAO;iBACV;;gBAGD,MAAM,MAAM,GAAG,CAAU,OAAA,EAAA,IAAI,IAAI,cAAc,CAAC,IAAI,CAAA,CAAE,CAAC;gBAEvD,MAAM,CAAC,KAAK,CACR,SAAS,EACT,CAAY,SAAA,EAAA,GAAG,CAAC,MAAM,CAAI,CAAA,EAAA,GAAG,CAAC,GAAG,CAAA,WAAA,EAAc,cAAc,CAAC,EAAE,CAAA,SAAA,EAAY,cAAc,CAAC,IAAI,CAAE,CAAA,CACpG,CAAC;;AAGF,gBAAA,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;aAClE;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,sBAAsB,EAAE,KAAK,CAAC,CAAC;AACvD,gBAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;oBAClB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3D,oBAAA,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;AACX,wBAAA,KAAK,EAAE,uBAAuB;AAC9B,wBAAA,OAAO,EAAE,qBAAqB;AACjC,qBAAA,CAAC,CACL,CAAC;iBACL;aACJ;AACL,SAAC,CAAC,CAAC;;QAGH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAK;gBAC3B,MAAM,CAAC,IAAI,CACP,SAAS,EACT,CAAkC,+BAAA,EAAA,IAAI,CAAI,CAAA,EAAA,IAAI,CAAE,CAAA,CACnD,CAAC;gBACF,OAAO,CAAC,MAAM,CAAC,CAAC;AACpB,aAAC,CAAC,CAAC;YAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;gBAC9B,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAA4B,0BAAA,CAAA,EAAE,KAAK,CAAC,CAAC;gBAC7D,MAAM,CAAC,KAAK,CAAC,CAAC;AAClB,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,MAAM,cAAc,CACxB,GAAQ,EACR,GAAQ,EACR,MAAc,EACd,QAAgB,EAAA;AAEhB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;AACrC,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7B,QAAY,OAAO,CAAC,KAAK,EAAE;AAE3B,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;AAElC,QAAA,MAAM,OAAO,GAAG;YACZ,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,GAAG,CAAC,GAAG;YACb,MAAM,EAAE,GAAG,CAAC,MAAM;AAClB,YAAA,OAAO,EAAE;gBACL,GAAG,GAAG,CAAC,OAAO;gBACd,iBAAiB,EACb,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa;AAC9D,gBAAA,mBAAmB,EAAE,MAAM;AAC3B,gBAAA,aAAa,EAAE,QAAQ;AAC1B,aAAA;SACJ,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,QAAa,KAAI;;YAErD,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;;AAGrD,YAAA,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvB,SAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,KAAI;YAChC,MAAM,CAAC,KAAK,CACR,SAAS,EACT,CAAkC,+BAAA,EAAA,QAAQ,CAAG,CAAA,CAAA,EAC7C,KAAK,CACR,CAAC;AACF,YAAA,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE;gBAClB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC3D,gBAAA,GAAG,CAAC,GAAG,CACH,IAAI,CAAC,SAAS,CAAC;AACX,oBAAA,KAAK,EAAE,aAAa;AACpB,oBAAA,OAAO,EAAE,oBAAoB;AAChC,iBAAA,CAAC,CACL,CAAC;aACL;AACL,SAAC,CAAC,CAAC;;AAGH,QAAA,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtB;AAED;;AAEG;AACK,IAAA,MAAM,0BAA0B,CACpC,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC;QAErC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAU,OAAA,EAAA,OAAO,CAAC,GAAG,CAAU,QAAA,CAAA,CAAC,CAAC;;;AAI3D,QAAA,MAAM,CAAC,IAAI,CACP,SAAS,EACT,CAAA,OAAA,EAAU,OAAO,CAAC,GAAG,CAAA,qCAAA,EAAwC,UAAU,CAAA,CAAE,CAC5E,CAAC;;AAGF,QAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CACrD,UAAU,EACV,IAAI,EACJ,MAAK;AACD,YAAA,MAAM,CAAC,IAAI,CACP,SAAS,EACT,CAAU,OAAA,EAAA,OAAO,CAAC,GAAG,iBAAiB,IAAI,CAAA,CAAA,EAAI,UAAU,CAAA,CAAE,CAC7D,CAAC;AACF,YAAA,IAAI,QAAQ;AAAE,gBAAA,QAAQ,EAAE,CAAC;AAC7B,SAAC,CACJ,CAAC;AAEF,QAAA,OAAO,UAAU,CAAC;KACrB;AAED;;AAEG;AACK,IAAA,MAAM,0BAA0B,CACpC,UAAkB,EAClB,IAAY,EACZ,QAAqB,EAAA;AAErB,QAAA,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,IAAI,CAAC,2BAA2B,CAC1D,UAAU,EACV,IAAI,EACJ,YAAW;;AAEP,YAAA,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE;AACtC,gBAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,aAAa,CAC9C,IAAI,CAAC,KAAK,CAAC,UAAU,CACxB,CAAC;;gBAGF,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,cAAc,EAAE,EAAE;oBACvD,IACI,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,eAAe,EAAE,EACxD;wBACE,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,CAAC;qBAC9E;yBAAM;wBACH,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;qBACjE;iBACJ;aACJ;AAED,YAAA,IAAI,QAAQ;AAAE,gBAAA,QAAQ,EAAE,CAAC;AAC7B,SAAC,CACJ,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;KAChC;AACJ;;;;"}
@@ -9,23 +9,6 @@ import { DEFAULT_CLUSTER_CONFIGS } from './Cluster.config.js';
9
9
  */
10
10
  // Default configuration
11
11
  const DEFAULT_OPTIONS = {
12
- cache: {
13
- strategy: "memory", // Use memory-only by default to avoid Redis dependency
14
- ttl: 300000, // 5 minutes
15
- enabled: true,
16
- memory: {
17
- maxSize: 100,
18
- algorithm: "lru",
19
- },
20
- },
21
- security: {
22
- encryption: true,
23
- accessMonitoring: true,
24
- sanitization: true,
25
- auditLogging: false,
26
- cors: true,
27
- helmet: true,
28
- },
29
12
  performance: {
30
13
  compression: true,
31
14
  batchSize: 100,
@@ -129,6 +112,29 @@ const DEFAULT_OPTIONS = {
129
112
  enabled: false, // Disabled by default for single-process mode
130
113
  config: DEFAULT_CLUSTER_CONFIGS,
131
114
  },
115
+ cache: {
116
+ strategy: "memory", // Use memory-only cache
117
+ maxSize: 500 * 1024 * 1024, // 500MB memory cache
118
+ ttl: 300000, // 5 minutes TTL
119
+ enabled: true,
120
+ memory: {
121
+ maxSize: 100, // Max entries
122
+ algorithm: "lru", // Least Recently Used
123
+ },
124
+ },
125
+ security: {
126
+ enabled: true,
127
+ level: "maximum",
128
+ csrf: true,
129
+ helmet: true,
130
+ xss: true,
131
+ sqlInjection: true,
132
+ bruteForce: true,
133
+ encryption: {
134
+ algorithm: "AES-256-GCM",
135
+ keySize: 32,
136
+ },
137
+ },
132
138
  };
133
139
 
134
140
  export { DEFAULT_OPTIONS };
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}