xypriss 2.0.0 → 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 (185) hide show
  1. package/README.md +170 -380
  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 -2
  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 -1
  15. package/dist/cjs/mods/security/src/index.js.map +1 -1
  16. package/dist/cjs/shared/logger/Logger.js +372 -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/middleware/built-in/sqlInjection.js +335 -0
  41. package/dist/cjs/src/middleware/built-in/sqlInjection.js.map +1 -0
  42. package/dist/cjs/src/middleware/safe-json-middleware.js +1 -1
  43. package/dist/cjs/src/middleware/safe-json-middleware.js.map +1 -1
  44. package/dist/cjs/src/middleware/security-middleware.js +447 -332
  45. package/dist/cjs/src/middleware/security-middleware.js.map +1 -1
  46. package/dist/cjs/src/plugins/modules/index.js +9 -3
  47. package/dist/cjs/src/plugins/modules/index.js.map +1 -1
  48. package/dist/cjs/src/server/FastServer.js +41 -1
  49. package/dist/cjs/src/server/FastServer.js.map +1 -1
  50. package/dist/cjs/src/server/ServerFactory.js +62 -2
  51. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  52. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +32 -6
  53. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  54. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js +206 -0
  55. package/dist/cjs/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  56. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +3 -28
  57. package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  58. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +265 -0
  59. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  60. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  61. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  62. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  63. package/dist/cjs/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  64. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +143 -24
  65. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
  66. package/dist/cjs/src/server/const/default.js +23 -9
  67. package/dist/cjs/src/server/const/default.js.map +1 -1
  68. package/dist/cjs/src/server/core/HttpServer.js +8 -8
  69. package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
  70. package/dist/cjs/src/server/core/XyprissApp.js +284 -17
  71. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
  72. package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
  73. package/dist/cjs/src/server/handlers/NotFoundHandler.js.map +1 -1
  74. package/dist/cjs/src/server/middleware/MiddlewareManager.js +57 -12
  75. package/dist/cjs/src/server/middleware/MiddlewareManager.js.map +1 -1
  76. package/dist/cjs/src/server/utils/forceClosePort.js +1 -1
  77. package/dist/cjs/src/server/utils/forceClosePort.js.map +1 -1
  78. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +10 -0
  79. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js.map +1 -1
  80. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +10 -0
  81. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js.map +1 -1
  82. package/dist/esm/mods/security/src/components/cache/index.js +10 -2
  83. package/dist/esm/mods/security/src/components/cache/index.js.map +1 -1
  84. package/dist/esm/mods/security/src/components/fortified-function/index.js +9 -0
  85. package/dist/esm/mods/security/src/components/fortified-function/index.js.map +1 -1
  86. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +10 -0
  87. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js.map +1 -1
  88. package/dist/esm/mods/security/src/core/crypto.js +14 -0
  89. package/dist/esm/mods/security/src/core/crypto.js.map +1 -1
  90. package/dist/esm/mods/security/src/index.js +10 -1
  91. package/dist/esm/mods/security/src/index.js.map +1 -1
  92. package/dist/esm/shared/logger/Logger.js +372 -29
  93. package/dist/esm/shared/logger/Logger.js.map +1 -1
  94. package/dist/esm/src/cluster/bun-cluster-manager.js +91 -1
  95. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -1
  96. package/dist/esm/src/cluster/cluster-manager.js +15 -3
  97. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  98. package/dist/esm/src/cluster/modules/AutoScaler.js +4 -4
  99. package/dist/esm/src/cluster/modules/AutoScaler.js.map +1 -1
  100. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +2 -2
  101. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  102. package/dist/esm/src/cluster/modules/EventLoopMonitor.js +268 -0
  103. package/dist/esm/src/cluster/modules/EventLoopMonitor.js.map +1 -0
  104. package/dist/esm/src/cluster/modules/GCStatsTracker.js +198 -0
  105. package/dist/esm/src/cluster/modules/GCStatsTracker.js.map +1 -0
  106. package/dist/esm/src/cluster/modules/HeapStatsCollector.js +109 -0
  107. package/dist/esm/src/cluster/modules/HeapStatsCollector.js.map +1 -0
  108. package/dist/esm/src/cluster/modules/NetworkTracker.js +160 -0
  109. package/dist/esm/src/cluster/modules/NetworkTracker.js.map +1 -0
  110. package/dist/esm/src/cluster/modules/ThroughputCalculator.js +184 -0
  111. package/dist/esm/src/cluster/modules/ThroughputCalculator.js.map +1 -0
  112. package/dist/esm/src/cluster/modules/WorkerManager.js +14 -14
  113. package/dist/esm/src/cluster/modules/WorkerManager.js.map +1 -1
  114. package/dist/esm/src/cluster/modules/{LoadBalancer.js → strategy/LoadBalancer.js} +1 -1
  115. package/dist/esm/src/cluster/modules/strategy/LoadBalancer.js.map +1 -0
  116. package/dist/esm/src/middleware/built-in/sqlInjection.js +333 -0
  117. package/dist/esm/src/middleware/built-in/sqlInjection.js.map +1 -0
  118. package/dist/esm/src/middleware/safe-json-middleware.js +1 -1
  119. package/dist/esm/src/middleware/safe-json-middleware.js.map +1 -1
  120. package/dist/esm/src/middleware/security-middleware.js +447 -332
  121. package/dist/esm/src/middleware/security-middleware.js.map +1 -1
  122. package/dist/esm/src/plugins/modules/index.js +9 -3
  123. package/dist/esm/src/plugins/modules/index.js.map +1 -1
  124. package/dist/esm/src/server/FastServer.js +41 -1
  125. package/dist/esm/src/server/FastServer.js.map +1 -1
  126. package/dist/esm/src/server/ServerFactory.js +62 -2
  127. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  128. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +32 -6
  129. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  130. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js +204 -0
  131. package/dist/esm/src/server/components/fastapi/WorkerPoolComponent.js.map +1 -0
  132. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +2 -27
  133. package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
  134. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js +263 -0
  135. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPoolManager.js.map +1 -0
  136. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/Logger.js +236 -0
  137. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/cpu-tasks.js +294 -0
  138. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/enhanced-cpu-worker.js +433 -0
  139. package/dist/esm/src/server/components/fastapi/modules/UFRP/workers/io-worker.js +1615 -0
  140. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +143 -24
  141. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
  142. package/dist/esm/src/server/const/default.js +23 -9
  143. package/dist/esm/src/server/const/default.js.map +1 -1
  144. package/dist/esm/src/server/core/HttpServer.js +8 -8
  145. package/dist/esm/src/server/core/HttpServer.js.map +1 -1
  146. package/dist/esm/src/server/core/XyprissApp.js +284 -17
  147. package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
  148. package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
  149. package/dist/esm/src/server/handlers/NotFoundHandler.js.map +1 -1
  150. package/dist/esm/src/server/middleware/MiddlewareManager.js +57 -12
  151. package/dist/esm/src/server/middleware/MiddlewareManager.js.map +1 -1
  152. package/dist/esm/src/server/utils/forceClosePort.js +1 -1
  153. package/dist/esm/src/server/utils/forceClosePort.js.map +1 -1
  154. package/dist/index.d.ts +675 -516
  155. package/package.json +10 -11
  156. package/dist/cjs/src/cluster/index.js +0 -361
  157. package/dist/cjs/src/cluster/index.js.map +0 -1
  158. package/dist/cjs/src/cluster/modules/ClusterFactory.js +0 -539
  159. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +0 -1
  160. package/dist/cjs/src/cluster/modules/LoadBalancer.js.map +0 -1
  161. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -668
  162. package/dist/cjs/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  163. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -347
  164. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  165. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -204
  166. package/dist/cjs/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  167. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js +0 -953
  168. package/dist/cjs/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  169. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -56
  170. package/dist/cjs/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
  171. package/dist/esm/src/cluster/index.js +0 -339
  172. package/dist/esm/src/cluster/index.js.map +0 -1
  173. package/dist/esm/src/cluster/modules/ClusterFactory.js +0 -511
  174. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +0 -1
  175. package/dist/esm/src/cluster/modules/LoadBalancer.js.map +0 -1
  176. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js +0 -647
  177. package/dist/esm/src/server/components/fastapi/UltraFastRequestProcessor.js.map +0 -1
  178. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js +0 -345
  179. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareAPI.js.map +0 -1
  180. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js +0 -202
  181. package/dist/esm/src/server/components/fastapi/middlewares/MiddlewareMethodsManager.js.map +0 -1
  182. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js +0 -951
  183. package/dist/esm/src/server/components/fastapi/middlewares/middlewareManager.js.map +0 -1
  184. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js +0 -54
  185. package/dist/esm/src/server/components/fastapi/modules/UFRP/WorkerPool.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "2.0.0",
4
- "description": "A Node.js web framework with Express-like API, built-in security middleware, and routing system.",
3
+ "version": "2.1.0",
4
+ "description": "XyPriss is a lightweight, TypeScript-first, open-source Node.js web framework crafted for developers seeking a familiar Express-like API without Express dependencies. It features built-in security middleware, a robust routing system, and performance optimizations to build scalable, secure web applications effortlessly. Join our community and contribute on GitHub!",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -19,13 +19,12 @@
19
19
  "scripts": {
20
20
  "postinstall": "node scripts/postinstall.js",
21
21
  "install-memory-cli": "node scripts/install-memory-cli.js",
22
- "build": "NODE_OPTIONS='--max-old-space-size=4096' npx rollup -c rollup.config.js",
22
+ "build": "npx rollup -c rollup.config.js",
23
23
  "build:memory": "NODE_OPTIONS='--max-old-space-size=6144' npx rollup -c rollup.config.js",
24
24
  "test": "jest",
25
25
  "test:watch": "jest --watch",
26
26
  "test:coverage": "jest --coverage",
27
- "benchmark": "node benchmarks/index.js",
28
- "prepublishOnly": "npm run build"
27
+ "benchmark": "node benchmarks/index.js"
29
28
  },
30
29
  "exports": {
31
30
  ".": {
@@ -156,8 +155,8 @@
156
155
  "@types/compression": "^1.8.1",
157
156
  "@types/cors": "^2.8.19",
158
157
  "@types/csurf": "^1.11.5",
159
- "@types/express": "^5.0.2",
160
158
  "@types/express-mongo-sanitize": "^1.3.2",
159
+ "@types/express-rate-limit": "^5.1.3",
161
160
  "@types/express-validator": "^2.20.33",
162
161
  "@types/helmet": "^0.0.48",
163
162
  "@types/hpp": "^0.2.6",
@@ -171,8 +170,8 @@
171
170
  "@types/ws": "^8.18.1",
172
171
  "@typescript-eslint/eslint-plugin": "^5.57.0",
173
172
  "@typescript-eslint/parser": "^5.57.0",
173
+ "axios": "^1.11.0",
174
174
  "eslint": "^8.37.0",
175
- "express": "^4.21.2",
176
175
  "jest": "^29.5.0",
177
176
  "nehonix-uri-processor": "^2.3.19",
178
177
  "rimraf": "^4.4.0",
@@ -204,7 +203,7 @@
204
203
  "@noble/curves": "^1.9.1",
205
204
  "@noble/hashes": "^1.8.0",
206
205
  "@noble/secp256k1": "^2.2.3",
207
- "@types/express": "^5.0.2",
206
+ "@types/cookie-parser": "^1.4.9",
208
207
  "@types/express-brute": "^1.0.6",
209
208
  "@types/fast-json-stable-stringify": "^2.0.0",
210
209
  "@types/ioredis": "^4.28.10",
@@ -217,7 +216,6 @@
217
216
  "aes-js": "^3.1.2",
218
217
  "argon2": "^0.43.0",
219
218
  "argon2-browser": "^1.18.0",
220
- "axios": "^1.6.0",
221
219
  "bcrypt": "^6.0.0",
222
220
  "bcryptjs": "^2.4.3",
223
221
  "bun": "^1.2.19",
@@ -232,6 +230,7 @@
232
230
  "csurf": "^1.11.0",
233
231
  "elliptic": "^6.6.1",
234
232
  "entropy-string": "^4.2.0",
233
+ "express": "^5.1.0",
235
234
  "express-brute": "^1.0.1",
236
235
  "express-csrf-double-submit-cookie": "^2.0.0",
237
236
  "express-mongo-sanitize": "^2.2.0",
@@ -252,6 +251,7 @@
252
251
  "multer": "^2.0.2",
253
252
  "nehoid": "^2.0.0",
254
253
  "noble": "^1.9.1",
254
+ "node-fetch": "^3.3.2",
255
255
  "node-forge": "^1.3.1",
256
256
  "node-os-utils": "^1.3.7",
257
257
  "pako": "^2.1.0",
@@ -267,7 +267,6 @@
267
267
  "typescript": "^5.8.3",
268
268
  "ws": "^8.18.2",
269
269
  "xss": "^1.0.15",
270
- "xypriss": "^1.0.0",
271
- "xypriss-security": "^1.0.9"
270
+ "xypriss-security": "^1.1.3"
272
271
  }
273
272
  }
@@ -1,361 +0,0 @@
1
- 'use strict';
2
-
3
- var ClusterFactory = require('./modules/ClusterFactory.js');
4
- require('os');
5
- require('events');
6
- require('cluster');
7
- require('pidusage');
8
- require('../../mods/security/src/utils/errorHandler.js');
9
- require('../../mods/security/src/components/fortified-function/core/fortified-function-core.js');
10
- require('../../mods/security/src/components/fortified-function/core/fortified-config.js');
11
- require('../../mods/security/src/components/fortified-function/core/fortified-logger.js');
12
- require('../../mods/security/src/components/fortified-function/serializer/safe-serializer.js');
13
- require('nehoid');
14
- require('../../mods/security/src/utils/memory/index.js');
15
- require('crypto');
16
- require('../../mods/security/src/types/secure-memory.js');
17
- require('../../mods/security/src/components/secure-string/advanced/entropy-analyzer.js');
18
- require('../../mods/security/src/components/secure-string/advanced/quantum-safe.js');
19
- require('../../mods/security/src/components/secure-string/advanced/performance-monitor.js');
20
- require('../../mods/security/src/core/hash/hash-core.js');
21
- require('../../mods/security/src/core/hash/hash-types.js');
22
- require('../../mods/security/src/core/hash/hash-security.js');
23
- require('../../mods/security/src/core/hash/hash-advanced.js');
24
- require('../../mods/security/src/algorithms/hash-algorithms.js');
25
- require('../../mods/security/src/core/random/random-types.js');
26
- require('../../mods/security/src/core/random/random-sources.js');
27
- require('nehonix-uri-processor');
28
- require('../../mods/security/src/types.js');
29
- require('../../mods/security/src/components/secure-array/utils/id-generator.js');
30
- require('../../mods/security/src/index.js');
31
- require('../../shared/logger/Logger.js');
32
- require('../../mods/security/src/components/fortified-function/UFA/ultra-fast-allocator.js');
33
- require('argon2');
34
- require('child_process');
35
- require('https');
36
- require('../../mods/security/src/components/runtime-verification.js');
37
- require('../../mods/security/src/components/tamper-evident-logging.js');
38
- require('../../mods/security/src/core/keys/keys-types.js');
39
- require('../../mods/security/src/core/keys/keys-logger.js');
40
- require('../../mods/security/src/core/keys/keys-utils.js');
41
- require('../../mods/security/src/core/keys/algorithms/mods/PBKDF2Algo.js');
42
- require('../../mods/security/src/core/password/index.js');
43
- require('http');
44
- require('msgpack-lite');
45
- require('fast-json-stable-stringify');
46
- require('perf_hooks');
47
- require('fs');
48
- require('path');
49
- require('../../mods/security/src/components/cache/cacheSys.js');
50
- require('../../mods/security/src/components/cache/index.js');
51
- require('ioredis');
52
- require('xypriss-security');
53
- require('../encryption/EncryptionService.js');
54
-
55
- /***************************************************************************
56
- * XyPrissJS - Advanced JavaScript Security Library
57
- *
58
- * @author Nehonix
59
- * @license MIT
60
- *
61
- * Copyright (c) 2025 Nehonix. All rights reserved.
62
- *
63
- * Permission is hereby granted, free of charge, to any person obtaining a copy
64
- * of this software and associated documentation files (the "Software"), to deal
65
- * in the Software without restriction, including without limitation the rights
66
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
67
- * copies of the Software, and to permit persons to whom the Software is
68
- * furnished to do so, subject to the following conditions:
69
- *
70
- * The above copyright notice and this permission notice shall be included in all
71
- * copies or substantial portions of the Software.
72
- *
73
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
74
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
75
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
76
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
77
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
78
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
79
- * SOFTWARE.
80
- ***************************************************************************** */
81
- /**
82
- * Quick start functions for common use cases
83
- */
84
- /**
85
- * Create a development cluster with sensible defaults
86
- * - 2 workers
87
- * - Auto-scaling disabled
88
- * - Debug logging enabled
89
- * - Hot reload enabled
90
- */
91
- function createDevelopmentCluster() {
92
- return ClusterFactory.createClusterForEnvironment("development");
93
- }
94
- /**
95
- * Create a production cluster with maximum performance and security
96
- * - Auto worker count based on CPU cores
97
- * - Auto-scaling enabled
98
- * - Full security features
99
- * - Circuit breaker and resilience features
100
- */
101
- function createProductionCluster() {
102
- return ClusterFactory.createClusterForEnvironment("production");
103
- }
104
- /**
105
- * Create a test cluster with minimal overhead
106
- * - Single worker
107
- * - Monitoring disabled
108
- * - Auto-scaling disabled
109
- */
110
- function createTestCluster() {
111
- return ClusterFactory.createClusterForEnvironment("test");
112
- }
113
- /**
114
- * Create an API server cluster optimized for REST APIs
115
- * - Least-connections load balancing
116
- * - Aggressive auto-scaling
117
- * - Fast health checks
118
- */
119
- function createApiCluster() {
120
- return ClusterFactory.clusterFactory.create(ClusterFactory.clusterFactory.getRecommendedConfig("api"));
121
- }
122
- /**
123
- * Create a web server cluster optimized for web applications
124
- * - Round-robin load balancing with session affinity
125
- * - Moderate auto-scaling
126
- * - Sticky sessions enabled
127
- */
128
- function createWebCluster() {
129
- return ClusterFactory.clusterFactory.create(ClusterFactory.clusterFactory.getRecommendedConfig("web"));
130
- }
131
- /**
132
- * Create a microservice cluster optimized for containerized environments
133
- * - Resource-constrained configuration
134
- * - Conservative auto-scaling
135
- * - Lightweight monitoring
136
- */
137
- function createMicroserviceCluster() {
138
- return ClusterFactory.clusterFactory.create(ClusterFactory.clusterFactory.getRecommendedConfig("microservice"));
139
- }
140
- /**
141
- * Create a worker cluster optimized for background processing
142
- * - CPU-based worker count
143
- * - Weighted load balancing
144
- * - High restart tolerance
145
- */
146
- function createWorkerCluster() {
147
- return ClusterFactory.clusterFactory.create(ClusterFactory.clusterFactory.getRecommendedConfig("worker"));
148
- }
149
- /**
150
- * Builder pattern for custom cluster configuration
151
- *
152
- * @example
153
- * ```typescript
154
- * const cluster = clusterBuilder()
155
- * .withWorkers(4)
156
- * .withAutoScaling({
157
- * enabled: true,
158
- * minWorkers: 2,
159
- * maxWorkers: 8
160
- * })
161
- * .withLoadBalancing("least-connections")
162
- * .enableProductionMode()
163
- * .create();
164
- *
165
- * await cluster.start();
166
- * ```
167
- */
168
- function clusterBuilder() {
169
- return ClusterFactory.buildCluster();
170
- }
171
- /**
172
- * Validate cluster configuration
173
- *
174
- * @example
175
- * ```typescript
176
- * const config = { workers: 4, autoScaling: { enabled: true } };
177
- * const validation = validateClusterConfig(config);
178
- *
179
- * if (!validation.valid) {
180
- * console.error("Configuration errors:", validation.errors);
181
- * }
182
- * ```
183
- */
184
- function validateClusterConfig(config) {
185
- return ClusterFactory.clusterFactory.validateConfig(config);
186
- }
187
- /**
188
- * Get recommended configuration for specific server type
189
- *
190
- * @example
191
- * ```typescript
192
- * const apiConfig = getRecommendedConfig("api");
193
- * const cluster = createCluster(apiConfig);
194
- * ```
195
- */
196
- function getRecommendedConfig(serverType) {
197
- return ClusterFactory.clusterFactory.getRecommendedConfig(serverType);
198
- }
199
- /**
200
- * Merge multiple cluster configurations
201
- *
202
- * @example
203
- * ```typescript
204
- * const baseConfig = getRecommendedConfig("api");
205
- * const customConfig = { workers: 8 };
206
- * const finalConfig = mergeClusterConfigs(baseConfig, customConfig);
207
- * ```
208
- */
209
- function mergeClusterConfigs(base, ...overrides) {
210
- let result = base;
211
- for (const override of overrides) {
212
- result = ClusterFactory.clusterFactory.mergeConfigs(result, override);
213
- }
214
- return result;
215
- }
216
- /**
217
- * Set global default configuration for all clusters
218
- *
219
- * @example
220
- * ```typescript
221
- * setClusterDefaults({
222
- * monitoring: { logLevel: "debug" },
223
- * security: { encryptIPC: true }
224
- * });
225
- * ```
226
- */
227
- function setClusterDefaults(config) {
228
- ClusterFactory.ClusterFactory.setDefaults(config);
229
- }
230
- /**
231
- * Cluster middleware for Express integration
232
- * Provides cluster information and utilities to Express routes
233
- */
234
- function createClusterMiddleware(cluster) {
235
- return (req, res, next) => {
236
- // Add cluster utilities to request object
237
- req.cluster = {
238
- workerId: process.env.WORKER_ID || "master",
239
- isMainProcess: !process.env.WORKER_ID,
240
- isMaster: !process.env.WORKER_ID,
241
- sendToMaster: async (message) => {
242
- if (process.send) {
243
- process.send(message);
244
- }
245
- },
246
- sendToWorker: async (workerId, message) => {
247
- await cluster.sendToWorker(workerId, message);
248
- },
249
- broadcast: async (message) => {
250
- await cluster.broadcast(message);
251
- },
252
- getMetrics: async () => {
253
- return await cluster.getMetrics();
254
- },
255
- getHealth: async () => {
256
- return await cluster.getHealthStatus();
257
- },
258
- };
259
- // Add cluster headers
260
- res.set("X-Cluster-Worker", req.cluster.workerId);
261
- res.set("X-Cluster-Process", req.cluster.isMainProcess ? "master" : "worker");
262
- next();
263
- };
264
- }
265
- /**
266
- * Express server integration with cluster support
267
- * Automatically detects if running in cluster mode and provides utilities
268
- */
269
- function withClusterSupport(app, cluster) {
270
- // Add cluster middleware if cluster is provided
271
- if (cluster) {
272
- app.use(createClusterMiddleware(cluster));
273
- }
274
- // Add cluster health endpoint
275
- app.get("/cluster/health", async (req, res) => {
276
- try {
277
- if (cluster) {
278
- const health = await cluster.getHealthStatus();
279
- const metrics = await cluster.getAggregatedMetrics();
280
- res.json({
281
- status: "healthy",
282
- cluster: {
283
- enabled: true,
284
- workers: Object.keys(health).length,
285
- healthy: Object.values(health).filter((h) => h).length,
286
- metrics,
287
- },
288
- });
289
- }
290
- else {
291
- res.json({
292
- status: "healthy",
293
- cluster: {
294
- enabled: false,
295
- workers: 1,
296
- healthy: 1,
297
- },
298
- });
299
- }
300
- }
301
- catch (error) {
302
- res.status(503).json({
303
- status: "error",
304
- error: error.message,
305
- });
306
- }
307
- });
308
- // Add cluster metrics endpoint
309
- app.get("/cluster/metrics", async (req, res) => {
310
- try {
311
- if (cluster) {
312
- const format = req.query.format || "json";
313
- const metrics = await cluster.exportMetrics(format);
314
- if (format === "prometheus") {
315
- res.set("Content-Type", "text/plain");
316
- res.send(metrics);
317
- }
318
- else if (format === "csv") {
319
- res.set("Content-Type", "text/csv");
320
- res.send(metrics);
321
- }
322
- else {
323
- res.json(JSON.parse(metrics));
324
- }
325
- }
326
- else {
327
- res.json({ error: "Cluster not enabled" });
328
- }
329
- }
330
- catch (error) {
331
- res.status(500).json({
332
- error: error.message,
333
- });
334
- }
335
- });
336
- return app;
337
- }
338
-
339
- exports.ClusterBuilderFactoryImpl = ClusterFactory.ClusterBuilderFactoryImpl;
340
- exports.ClusterConfigBuilder = ClusterFactory.ClusterConfigBuilder;
341
- exports.ClusterFactory = ClusterFactory.ClusterFactory;
342
- exports.buildCluster = ClusterFactory.buildCluster;
343
- exports.clusterBuilderFactory = ClusterFactory.clusterBuilderFactory;
344
- exports.clusterFactory = ClusterFactory.clusterFactory;
345
- exports.createCluster = ClusterFactory.createCluster;
346
- exports.createClusterForEnvironment = ClusterFactory.createClusterForEnvironment;
347
- exports.clusterBuilder = clusterBuilder;
348
- exports.createApiCluster = createApiCluster;
349
- exports.createClusterMiddleware = createClusterMiddleware;
350
- exports.createDevelopmentCluster = createDevelopmentCluster;
351
- exports.createMicroserviceCluster = createMicroserviceCluster;
352
- exports.createProductionCluster = createProductionCluster;
353
- exports.createTestCluster = createTestCluster;
354
- exports.createWebCluster = createWebCluster;
355
- exports.createWorkerCluster = createWorkerCluster;
356
- exports.getRecommendedConfig = getRecommendedConfig;
357
- exports.mergeClusterConfigs = mergeClusterConfigs;
358
- exports.setClusterDefaults = setClusterDefaults;
359
- exports.validateClusterConfig = validateClusterConfig;
360
- exports.withClusterSupport = withClusterSupport;
361
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/cluster/index.ts"],"sourcesContent":[null],"names":["createClusterForEnvironment","clusterFactory","buildCluster","ClusterFactory"],"mappings":"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"}