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,281 @@
1
+ 'use strict';
2
+
3
+ var index = require('./built-in/index.js');
4
+ var Logger = require('../../shared/logger/Logger.js');
5
+
6
+ /**
7
+ * XyPriss Middleware API
8
+ * Clean, simple implementation for middleware management with built-in security middleware
9
+ */
10
+ // Built-in security middleware using actual libraries
11
+ class XyPrissMiddleware {
12
+ constructor(app) {
13
+ this.registeredMiddleware = [];
14
+ this.middlewareCounter = 0;
15
+ this.app = app;
16
+ this.logger = new Logger.Logger({
17
+ components: {
18
+ middleware: true,
19
+ },
20
+ });
21
+ // Enable default security middleware by default
22
+ this.enableDefaultMiddleware();
23
+ }
24
+ /**
25
+ * Enable default built-in middleware
26
+ */
27
+ enableDefaultMiddleware() {
28
+ this.logger.debug("middleware", "🔧 Enabling default security middleware...");
29
+ // Enable basic security middleware by default
30
+ this.helmet({ hidePoweredBy: true });
31
+ this.cors({ origin: true });
32
+ this.compression({ threshold: 1024 });
33
+ this.logger.debug("middleware", "✅ Default security middleware enabled");
34
+ }
35
+ register(middleware, // Accept any type for compatibility
36
+ options = {}) {
37
+ const id = `middleware_${++this.middlewareCounter}`;
38
+ const name = options.name || `custom_middleware_${this.middlewareCounter}`;
39
+ const registered = {
40
+ id,
41
+ name,
42
+ middleware,
43
+ enabled: true,
44
+ priority: options.priority || "normal",
45
+ type: "custom",
46
+ routes: options.routes,
47
+ };
48
+ this.registeredMiddleware.push(registered);
49
+ this.applyMiddleware(registered);
50
+ this.logger.debug("middleware", `✅ Registered middleware: ${name} (priority: ${registered.priority})`);
51
+ return this;
52
+ }
53
+ security(config = {}) {
54
+ this.logger.debug("middleware", "🔒 Configuring security middleware bundle...");
55
+ // Apply security middleware
56
+ if (config.helmet !== false) {
57
+ this.helmet(config.helmet);
58
+ }
59
+ if (config.cors !== false) {
60
+ this.cors(config.cors);
61
+ }
62
+ if (config.rateLimit !== false) {
63
+ this.rateLimit(config.rateLimit);
64
+ }
65
+ if (config.csrf !== false) {
66
+ this.csrf(config.csrf);
67
+ }
68
+ if (config.compression !== false) {
69
+ this.compression(config.compression);
70
+ }
71
+ return this;
72
+ }
73
+ cors(config = {}) {
74
+ const corsConfig = typeof config === "object" ? config : {};
75
+ const corsMiddleware = index.BuiltInMiddleware.cors(corsConfig);
76
+ return this.registerBuiltIn("cors", corsMiddleware, "high");
77
+ }
78
+ rateLimit(config = {}) {
79
+ const rateLimitConfig = typeof config === "object" ? config : {};
80
+ const rateLimitMiddleware = index.BuiltInMiddleware.rateLimit(rateLimitConfig);
81
+ return this.registerBuiltIn("rateLimit", rateLimitMiddleware, "high");
82
+ }
83
+ helmet(config = {}) {
84
+ const helmetConfig = typeof config === "object" ? config : {};
85
+ const helmetMiddleware = index.BuiltInMiddleware.helmet(helmetConfig);
86
+ return this.registerBuiltIn("helmet", helmetMiddleware, "critical");
87
+ }
88
+ csrf(config = {}) {
89
+ const csrfConfig = typeof config === "object" ? config : {};
90
+ const csrfMiddleware = index.BuiltInMiddleware.csrf(csrfConfig);
91
+ return this.registerBuiltIn("csrf", csrfMiddleware, "high");
92
+ }
93
+ compression(config = {}) {
94
+ const compressionConfig = typeof config === "object" ? config : {};
95
+ const compressionMiddleware = index.BuiltInMiddleware.compression(compressionConfig);
96
+ return this.registerBuiltIn("compression", compressionMiddleware, "low");
97
+ }
98
+ /**
99
+ * Add Express Validator middleware
100
+ */
101
+ validator(config = {}) {
102
+ const validatorConfig = typeof config === "object" ? config : {};
103
+ const validatorMiddleware = index.BuiltInMiddleware.validator(validatorConfig);
104
+ // Register the simplified validator middleware
105
+ return this.registerBuiltIn("validator", validatorMiddleware, "high");
106
+ }
107
+ /**
108
+ * Add HPP (HTTP Parameter Pollution) protection
109
+ */
110
+ hpp(config = {}) {
111
+ const hppConfig = typeof config === "object" ? config : {};
112
+ const hppMiddleware = index.BuiltInMiddleware.hpp(hppConfig);
113
+ return this.registerBuiltIn("hpp", hppMiddleware, "high");
114
+ }
115
+ /**
116
+ * Add MongoDB injection protection
117
+ */
118
+ mongoSanitize(config = {}) {
119
+ const mongoConfig = typeof config === "object" ? config : {};
120
+ const mongoMiddleware = index.BuiltInMiddleware.mongoSanitize(mongoConfig);
121
+ return this.registerBuiltIn("mongoSanitize", mongoMiddleware, "high");
122
+ }
123
+ /**
124
+ * Add XSS protection
125
+ */
126
+ xss(config = {}) {
127
+ const xssConfig = typeof config === "object" ? config : {};
128
+ const xssMiddleware = index.BuiltInMiddleware.xss(xssConfig);
129
+ return this.registerBuiltIn("xss", xssMiddleware, "high");
130
+ }
131
+ /**
132
+ * Add Morgan logging middleware
133
+ */
134
+ morgan(config = {}) {
135
+ const morganConfig = typeof config === "object" ? config : {};
136
+ const morganMiddleware = index.BuiltInMiddleware.morgan(morganConfig);
137
+ return this.registerBuiltIn("morgan", morganMiddleware, "low");
138
+ }
139
+ /**
140
+ * Add Slow Down middleware for progressive delays
141
+ */
142
+ slowDown(config = {}) {
143
+ const slowDownConfig = typeof config === "object" ? config : {};
144
+ const slowDownMiddleware = index.BuiltInMiddleware.slowDown(slowDownConfig);
145
+ return this.registerBuiltIn("slowDown", slowDownMiddleware, "high");
146
+ }
147
+ /**
148
+ * Add Express Brute middleware for brute force protection
149
+ */
150
+ brute(config = {}) {
151
+ const bruteConfig = typeof config === "object" ? config : {};
152
+ const bruteMiddleware = index.BuiltInMiddleware.brute(bruteConfig);
153
+ return this.registerBuiltIn("brute", bruteMiddleware, "critical");
154
+ }
155
+ /**
156
+ * Add Multer middleware for file uploads
157
+ */
158
+ multer(config = {}) {
159
+ const multerConfig = typeof config === "object" ? config : {};
160
+ const multerInstance = index.BuiltInMiddleware.multer(multerConfig);
161
+ // Use multer.any() as the default middleware
162
+ return this.registerBuiltIn("multer", multerInstance.any(), "normal");
163
+ }
164
+ stats() {
165
+ const total = this.registeredMiddleware.length;
166
+ const enabled = this.registeredMiddleware.filter((m) => m.enabled).length;
167
+ const disabled = total - enabled;
168
+ const byType = {
169
+ custom: this.registeredMiddleware.filter((m) => m.type === "custom")
170
+ .length,
171
+ builtin: this.registeredMiddleware.filter((m) => m.type === "builtin").length,
172
+ };
173
+ return {
174
+ total,
175
+ enabled,
176
+ disabled,
177
+ byType,
178
+ byPriority: {
179
+ critical: this.registeredMiddleware.filter((m) => m.priority === "critical").length,
180
+ high: this.registeredMiddleware.filter((m) => m.priority === "high").length,
181
+ normal: this.registeredMiddleware.filter((m) => m.priority === "normal").length,
182
+ low: this.registeredMiddleware.filter((m) => m.priority === "low").length,
183
+ },
184
+ };
185
+ }
186
+ list() {
187
+ return this.registeredMiddleware.map((m) => ({
188
+ id: m.id,
189
+ name: m.name,
190
+ enabled: m.enabled,
191
+ priority: m.priority,
192
+ type: m.type,
193
+ }));
194
+ }
195
+ clear() {
196
+ this.registeredMiddleware = [];
197
+ this.logger.debug("middleware", "🧹 All middleware cleared");
198
+ return this;
199
+ }
200
+ optimize() {
201
+ const priorityOrder = { critical: 1, high: 2, normal: 3, low: 4 };
202
+ this.registeredMiddleware.sort((a, b) => priorityOrder[a.priority] - priorityOrder[b.priority]);
203
+ this.logger.debug("middleware", "⚡ Middleware order optimized by priority");
204
+ return this;
205
+ }
206
+ // Compatibility methods for MiddlewareAPIInterface
207
+ unregister(id) {
208
+ const index = this.registeredMiddleware.findIndex((m) => m.id === id);
209
+ if (index !== -1) {
210
+ this.registeredMiddleware.splice(index, 1);
211
+ this.logger.debug("middleware", `🗑️ Unregistered middleware: ${id}`);
212
+ }
213
+ return this;
214
+ }
215
+ enable(id) {
216
+ const middleware = this.registeredMiddleware.find((m) => m.id === id);
217
+ if (middleware) {
218
+ middleware.enabled = true;
219
+ this.applyMiddleware(middleware);
220
+ this.logger.debug("middleware", `✅ Enabled middleware: ${id}`);
221
+ }
222
+ return this;
223
+ }
224
+ disable(id) {
225
+ const middleware = this.registeredMiddleware.find((m) => m.id === id);
226
+ if (middleware) {
227
+ middleware.enabled = false;
228
+ this.logger.debug("middleware", `❌ Disabled middleware: ${id}`);
229
+ }
230
+ return this;
231
+ }
232
+ getInfo(id) {
233
+ if (id) {
234
+ const middleware = this.registeredMiddleware.find((m) => m.id === id);
235
+ return middleware
236
+ ? {
237
+ id: middleware.id,
238
+ name: middleware.name,
239
+ enabled: middleware.enabled,
240
+ priority: middleware.priority,
241
+ type: middleware.type,
242
+ routes: middleware.routes,
243
+ }
244
+ : null;
245
+ }
246
+ return this.list();
247
+ }
248
+ getStats() {
249
+ return this.stats();
250
+ }
251
+ getConfig() {
252
+ return {
253
+ totalMiddleware: this.registeredMiddleware.length,
254
+ enabledMiddleware: this.registeredMiddleware.filter((m) => m.enabled).length,
255
+ };
256
+ }
257
+ // Helper methods
258
+ registerBuiltIn(name, middleware, priority) {
259
+ const id = `builtin_${name}_${++this.middlewareCounter}`;
260
+ const registered = {
261
+ id,
262
+ name,
263
+ middleware,
264
+ enabled: true,
265
+ priority,
266
+ type: "builtin",
267
+ };
268
+ this.registeredMiddleware.push(registered);
269
+ this.applyMiddleware(registered);
270
+ this.logger.debug("middleware", `🔧 Applied built-in middleware: ${name} (priority: ${priority})`);
271
+ return this;
272
+ }
273
+ applyMiddleware(registered) {
274
+ if (this.app && this.app.use && registered.enabled) {
275
+ this.app.use(registered.middleware);
276
+ }
277
+ }
278
+ }
279
+
280
+ exports.XyPrissMiddleware = XyPrissMiddleware;
281
+ //# sourceMappingURL=XyPrissMiddlewareAPI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"XyPrissMiddlewareAPI.js","sources":["../../../../src/middleware/XyPrissMiddlewareAPI.ts"],"sourcesContent":[null],"names":["Logger","BuiltInMiddleware"],"mappings":"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"}
@@ -0,0 +1,325 @@
1
+ 'use strict';
2
+
3
+ var helmet = require('helmet');
4
+ var cors = require('cors');
5
+ var rateLimit = require('express-rate-limit');
6
+ var compression = require('compression');
7
+ var hpp = require('hpp');
8
+ var mongoSanitize = require('express-mongo-sanitize');
9
+ var xss = require('xss');
10
+ var morgan = require('morgan');
11
+ var slowDown = require('express-slow-down');
12
+ var ExpressBrute = require('express-brute');
13
+ var multer = require('multer');
14
+ var csrfCsrf = require('csrf-csrf');
15
+
16
+ /**
17
+ * XyPriss Built-in Middleware
18
+ * Wrappers around popular middleware libraries
19
+ */
20
+ class BuiltInMiddleware {
21
+ /**
22
+ * Get Helmet middleware for security headers
23
+ */
24
+ static helmet(options = {}) {
25
+ const defaultOptions = {
26
+ contentSecurityPolicy: {
27
+ directives: {
28
+ defaultSrc: ["'self'"],
29
+ scriptSrc: ["'self'"],
30
+ styleSrc: ["'self'", "'unsafe-inline'"],
31
+ imgSrc: ["'self'", "data:"],
32
+ fontSrc: ["'self'"],
33
+ },
34
+ },
35
+ crossOriginEmbedderPolicy: true,
36
+ crossOriginOpenerPolicy: true,
37
+ crossOriginResourcePolicy: { policy: "same-origin" },
38
+ dnsPrefetchControl: { allow: false },
39
+ frameguard: { action: "deny" },
40
+ hidePoweredBy: true,
41
+ hsts: {
42
+ maxAge: 31536000,
43
+ includeSubDomains: true,
44
+ preload: false,
45
+ },
46
+ ieNoOpen: true,
47
+ noSniff: true,
48
+ originAgentCluster: true,
49
+ permittedCrossDomainPolicies: false,
50
+ referrerPolicy: { policy: "strict-origin-when-cross-origin" },
51
+ xssFilter: true,
52
+ };
53
+ const config = { ...defaultOptions, ...options };
54
+ return helmet(config);
55
+ }
56
+ /**
57
+ * Get CORS middleware
58
+ */
59
+ static cors(options = {}) {
60
+ const defaultOptions = {
61
+ origin: true,
62
+ methods: ["GET", "HEAD", "PUT", "PATCH", "POST", "DELETE"],
63
+ allowedHeaders: [
64
+ "Content-Type",
65
+ "Authorization",
66
+ "X-Requested-With",
67
+ ],
68
+ credentials: false,
69
+ maxAge: 86400, // 24 hours
70
+ };
71
+ const config = { ...defaultOptions, ...options };
72
+ return cors(config);
73
+ }
74
+ /**
75
+ * Get Rate Limiting middleware
76
+ */
77
+ static rateLimit(options = {}) {
78
+ const defaultOptions = {
79
+ windowMs: 15 * 60 * 1000, // 15 minutes
80
+ max: 100, // limit each IP to 100 requests per windowMs
81
+ message: {
82
+ error: "Too many requests from this IP, please try again later.",
83
+ retryAfter: "Please try again later.",
84
+ },
85
+ standardHeaders: true,
86
+ legacyHeaders: false,
87
+ handler: (_req, res) => {
88
+ res.status(429).json({
89
+ error: "Too many requests",
90
+ message: "Rate limit exceeded. Please try again later.",
91
+ retryAfter: Math.ceil(options.windowMs / 1000) || 900,
92
+ });
93
+ },
94
+ };
95
+ const config = { ...defaultOptions, ...options };
96
+ return rateLimit(config);
97
+ }
98
+ /**
99
+ * Get Compression middleware
100
+ */
101
+ static compression(options = {}) {
102
+ const defaultOptions = {
103
+ level: 6,
104
+ threshold: 1024, // Only compress responses >= 1KB
105
+ filter: (req, res) => {
106
+ // Don't compress responses with this request header
107
+ if (req.headers["x-no-compression"]) {
108
+ return false;
109
+ }
110
+ // Fallback to standard filter function
111
+ return compression.filter(req, res);
112
+ },
113
+ };
114
+ const config = { ...defaultOptions, ...options };
115
+ return compression(config);
116
+ }
117
+ /**
118
+ * CSRF protection middleware using csrf-csrf library
119
+ */
120
+ static csrf(options = {}) {
121
+ const defaultOptions = {
122
+ getSecret: () => "your-secret-key", // In production, use a proper secret
123
+ cookieName: "__Host-psifi.x-csrf-token",
124
+ cookieOptions: {
125
+ httpOnly: true,
126
+ sameSite: "strict",
127
+ secure: process.env.NODE_ENV === "production",
128
+ maxAge: 3600000, // 1 hour
129
+ },
130
+ size: 64,
131
+ ignoredMethods: ["GET", "HEAD", "OPTIONS"],
132
+ getTokenFromRequest: (req) => {
133
+ return (req.headers["x-csrf-token"] ||
134
+ req.body?._csrf ||
135
+ req.query?._csrf);
136
+ },
137
+ };
138
+ const config = { ...defaultOptions, ...options };
139
+ const { doubleCsrfProtection } = csrfCsrf.doubleCsrf(config);
140
+ // Return the protection middleware
141
+ return doubleCsrfProtection;
142
+ }
143
+ /**
144
+ * Get Express Validator middleware for input validation
145
+ * Simplified implementation - users should install express-validator separately
146
+ */
147
+ static validator(options = {}) {
148
+ const defaultOptions = {
149
+ sanitizeBody: true,
150
+ checkBody: true,
151
+ checkQuery: true,
152
+ checkParams: true,
153
+ };
154
+ ({ ...defaultOptions, ...options });
155
+ return (req, res, next) => {
156
+ // Basic validation middleware - simplified
157
+ // In production, use express-validator library directly
158
+ console.log("[Validator] Basic validation middleware active");
159
+ // Add basic validation helpers to request
160
+ req.validation = {
161
+ body: (field) => req.body?.[field],
162
+ query: (field) => req.query?.[field],
163
+ params: (field) => req.params?.[field],
164
+ };
165
+ next();
166
+ };
167
+ }
168
+ /**
169
+ * Get HPP (HTTP Parameter Pollution) protection middleware
170
+ */
171
+ static hpp(options = {}) {
172
+ const defaultOptions = {
173
+ whitelist: ["tags", "categories"], // Allow arrays for these parameters
174
+ };
175
+ const config = { ...defaultOptions, ...options };
176
+ return hpp(config);
177
+ }
178
+ /**
179
+ * Get MongoDB injection protection middleware
180
+ */
181
+ static mongoSanitize(options = {}) {
182
+ const defaultOptions = {
183
+ replaceWith: "_",
184
+ onSanitize: (key, value) => {
185
+ console.warn(`[MongoSanitize] Sanitized key: ${key}, value: ${value}`);
186
+ },
187
+ };
188
+ const config = { ...defaultOptions, ...options };
189
+ return mongoSanitize(config);
190
+ }
191
+ /**
192
+ * Get XSS protection middleware
193
+ */
194
+ static xss(options = {}) {
195
+ const defaultOptions = {
196
+ whiteList: {
197
+ a: ["href", "title"],
198
+ b: [],
199
+ i: [],
200
+ strong: [],
201
+ em: [],
202
+ },
203
+ };
204
+ const config = { ...defaultOptions, ...options };
205
+ return (req, _res, next) => {
206
+ // Sanitize request body
207
+ if (req.body) {
208
+ req.body = this.sanitizeObject(req.body, config);
209
+ }
210
+ // Sanitize query parameters
211
+ if (req.query) {
212
+ req.query = this.sanitizeObject(req.query, config);
213
+ }
214
+ next();
215
+ };
216
+ }
217
+ /**
218
+ * Get Morgan logging middleware
219
+ */
220
+ static morgan(options = {}) {
221
+ const defaultFormat = options.format || "combined";
222
+ const defaultOptions = {
223
+ skip: (_req, res) => res.statusCode < 400, // Only log errors by default
224
+ stream: process.stdout,
225
+ };
226
+ const config = { ...defaultOptions, ...options };
227
+ return morgan(defaultFormat, config);
228
+ }
229
+ /**
230
+ * Get Slow Down middleware for progressive delays
231
+ */
232
+ static slowDown(options = {}) {
233
+ const defaultOptions = {
234
+ windowMs: 15 * 60 * 1000, // 15 minutes
235
+ delayAfter: 2, // Allow 2 requests per windowMs without delay
236
+ delayMs: 500, // Add 500ms delay per request after delayAfter
237
+ maxDelayMs: 20000, // Maximum delay of 20 seconds
238
+ skipFailedRequests: false,
239
+ skipSuccessfulRequests: false,
240
+ };
241
+ const config = { ...defaultOptions, ...options };
242
+ return slowDown(config);
243
+ }
244
+ /**
245
+ * Get Express Brute middleware for brute force protection
246
+ */
247
+ static brute(options = {}) {
248
+ const store = new ExpressBrute.MemoryStore();
249
+ const defaultOptions = {
250
+ freeRetries: 2,
251
+ minWait: 5 * 60 * 1000, // 5 minutes
252
+ maxWait: 60 * 60 * 1000, // 1 hour
253
+ lifetime: 24 * 60 * 60, // 1 day (in seconds)
254
+ failCallback: (_req, res, _next, nextValidRequestDate) => {
255
+ res.status(429).json({
256
+ error: "Too many failed attempts",
257
+ message: "Account temporarily locked due to too many failed attempts",
258
+ nextValidRequestDate: nextValidRequestDate,
259
+ });
260
+ },
261
+ };
262
+ const config = { ...defaultOptions, ...options };
263
+ const bruteforce = new ExpressBrute(store, config);
264
+ return bruteforce.prevent;
265
+ }
266
+ /**
267
+ * Get Multer middleware for file uploads
268
+ */
269
+ static multer(options = {}) {
270
+ const defaultOptions = {
271
+ limits: {
272
+ fileSize: 5 * 1024 * 1024, // 5MB limit
273
+ files: 5, // Maximum 5 files
274
+ },
275
+ fileFilter: (_req, file, cb) => {
276
+ // Allow only specific file types
277
+ const allowedTypes = /jpeg|jpg|png|gif|pdf|doc|docx/;
278
+ const extname = allowedTypes.test(file.originalname.toLowerCase());
279
+ const mimetype = allowedTypes.test(file.mimetype);
280
+ if (mimetype && extname) {
281
+ return cb(null, true);
282
+ }
283
+ else {
284
+ cb(new Error("Invalid file type. Only images and documents are allowed."));
285
+ }
286
+ },
287
+ };
288
+ const config = { ...defaultOptions, ...options };
289
+ return multer(config);
290
+ }
291
+ /**
292
+ * Get all default security middleware
293
+ */
294
+ static security(options = {}) {
295
+ return {
296
+ helmet: this.helmet(options.helmet),
297
+ cors: this.cors(options.cors),
298
+ rateLimit: this.rateLimit(options.rateLimit),
299
+ compression: this.compression(options.compression),
300
+ csrf: this.csrf(options.csrf),
301
+ };
302
+ }
303
+ // Helper method for XSS sanitization
304
+ static sanitizeObject(obj, config) {
305
+ if (typeof obj === "string") {
306
+ return xss(obj, config);
307
+ }
308
+ else if (Array.isArray(obj)) {
309
+ return obj.map((item) => this.sanitizeObject(item, config));
310
+ }
311
+ else if (obj && typeof obj === "object") {
312
+ const sanitized = {};
313
+ for (const key in obj) {
314
+ if (obj.hasOwnProperty(key)) {
315
+ sanitized[key] = this.sanitizeObject(obj[key], config);
316
+ }
317
+ }
318
+ return sanitized;
319
+ }
320
+ return obj;
321
+ }
322
+ }
323
+
324
+ exports.BuiltInMiddleware = BuiltInMiddleware;
325
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/middleware/built-in/index.ts"],"sourcesContent":[null],"names":["doubleCsrf"],"mappings":"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"}