xypriss 2.0.0 → 2.1.1

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 +171 -381
  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 +9 -9
  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
@@ -0,0 +1,433 @@
1
+ /**
2
+ * Enhanced CPU Worker with Real Task Implementations
3
+ * Replaces mock implementations with actual CPU-intensive operations
4
+ */
5
+
6
+ const {
7
+ Worker,
8
+ isMainThread,
9
+ parentPort,
10
+ workerData,
11
+ } = require("worker_threads");
12
+ const os = require("os");
13
+ const crypto = require("crypto");
14
+
15
+ // Import real CPU-intensive task implementations
16
+ const {
17
+ calculatePrimes,
18
+ calculateFibonacci,
19
+ multiplyMatrices,
20
+ computeHashes,
21
+ analyzeDataset,
22
+ analyzeText,
23
+ processImageData,
24
+ performCryptographicOperations,
25
+ } = require("./cpu-tasks");
26
+
27
+ // Worker configuration
28
+ const WORKER_CONFIG = {
29
+ maxExecutionTime: 30000,
30
+ maxMemoryUsage: 512 * 1024 * 1024, // 512MB
31
+ enableMetrics: true,
32
+ retryAttempts: 3,
33
+ retryDelay: 1000,
34
+ enableLogging: true,
35
+ debug: process.env.NODE_ENV === "development",
36
+ };
37
+
38
+ // Worker state
39
+ let isShuttingDown = false;
40
+ let activeTask = null;
41
+ const workerMetrics = {
42
+ tasksProcessed: 0,
43
+ tasksSucceeded: 0,
44
+ tasksFailed: 0,
45
+ totalExecutionTime: 0,
46
+ averageExecutionTime: 0,
47
+ memoryPeakUsage: 0,
48
+ startTime: Date.now(),
49
+ };
50
+
51
+ // Enhanced logging
52
+ function log(level, message, ...args) {
53
+ if (!WORKER_CONFIG.enableLogging) return;
54
+ const logger = require("./Logger").logger;
55
+ logger[level]("cpu-worker", message, ...args);
56
+ }
57
+
58
+ // System information
59
+ const systemInfo = {
60
+ cpus: os.cpus().length,
61
+ totalMemory: `${Math.round(os.totalmem() / 1024 / 1024)}MB`,
62
+ freeMemory: `${Math.round(os.freemem() / 1024 / 1024)}MB`,
63
+ platform: os.platform(),
64
+ arch: os.arch(),
65
+ };
66
+
67
+ log("debug", "CPU Worker initialized");
68
+ log("debug", "System info:", systemInfo);
69
+
70
+ // Resource monitoring
71
+ function checkResourceUsage() {
72
+ const memUsage = process.memoryUsage();
73
+ const cpuUsage = process.cpuUsage();
74
+
75
+ const usage = {
76
+ memory: {
77
+ heapUsed: memUsage.heapUsed,
78
+ heapTotal: memUsage.heapTotal,
79
+ external: memUsage.external,
80
+ rss: memUsage.rss,
81
+ },
82
+ cpu: {
83
+ user: cpuUsage.user,
84
+ system: cpuUsage.system,
85
+ },
86
+ uptime: process.uptime(),
87
+ };
88
+
89
+ // Update peak memory usage
90
+ if (usage.memory.heapUsed > workerMetrics.memoryPeakUsage) {
91
+ workerMetrics.memoryPeakUsage = usage.memory.heapUsed;
92
+ }
93
+
94
+ return usage;
95
+ }
96
+
97
+ // Enhanced task processing with real implementations
98
+ async function processTask(task) {
99
+ const { type, data } = task;
100
+
101
+ log("info", `Processing ${type} task with real implementation`);
102
+
103
+ switch (type) {
104
+ case "calculate":
105
+ return await processCalculationTask(data);
106
+ case "analyze":
107
+ return await processAnalysisTask(data);
108
+ case "crypto":
109
+ return await processCryptographicTask(data);
110
+ case "process":
111
+ return await processDataTask(data);
112
+ case "transform":
113
+ return await processTransformTask(data);
114
+ default:
115
+ throw new Error(`Unknown task type: ${type}`);
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Real calculation tasks
121
+ */
122
+ async function processCalculationTask(data) {
123
+ const startTime = Date.now();
124
+
125
+ if (!data.operation) {
126
+ throw new Error("Calculation operation is required");
127
+ }
128
+
129
+ let result;
130
+
131
+ switch (data.operation) {
132
+ case "primes":
133
+ const limit = data.limit || 10000;
134
+ const primes = calculatePrimes(limit);
135
+ result = {
136
+ operation: "prime_calculation",
137
+ limit,
138
+ primesFound: primes.length,
139
+ largestPrime: primes[primes.length - 1],
140
+ samplePrimes: primes.slice(0, 10),
141
+ executionTime: Date.now() - startTime,
142
+ };
143
+ break;
144
+
145
+ case "fibonacci":
146
+ const n = data.n || 1000;
147
+ const sequence = calculateFibonacci(n);
148
+ result = {
149
+ operation: "fibonacci_sequence",
150
+ length: n,
151
+ lastValue: sequence[sequence.length - 1],
152
+ sampleValues: sequence.slice(0, 10),
153
+ executionTime: Date.now() - startTime,
154
+ };
155
+ break;
156
+
157
+ case "matrix":
158
+ if (!data.matrixA || !data.matrixB) {
159
+ throw new Error("Two matrices required for multiplication");
160
+ }
161
+ const product = multiplyMatrices(data.matrixA, data.matrixB);
162
+ result = {
163
+ operation: "matrix_multiplication",
164
+ resultDimensions: [product.length, product[0].length],
165
+ result: product,
166
+ executionTime: Date.now() - startTime,
167
+ };
168
+ break;
169
+
170
+ default:
171
+ throw new Error(`Unknown calculation operation: ${data.operation}`);
172
+ }
173
+
174
+ return result;
175
+ }
176
+
177
+ /**
178
+ * Real analysis tasks
179
+ */
180
+ async function processAnalysisTask(data) {
181
+ const startTime = Date.now();
182
+
183
+ if (!data.analysisType) {
184
+ throw new Error("Analysis type is required");
185
+ }
186
+
187
+ let result;
188
+
189
+ switch (data.analysisType) {
190
+ case "dataset":
191
+ const dataset = data.dataset || data.data?.dataset;
192
+ if (!dataset) {
193
+ throw new Error("Dataset is required for analysis");
194
+ }
195
+ const stats = analyzeDataset(dataset);
196
+ result = {
197
+ analysisType: "dataset_analysis",
198
+ statistics: stats,
199
+ executionTime: Date.now() - startTime,
200
+ };
201
+ break;
202
+
203
+ case "text":
204
+ const text = data.text || data.data?.text;
205
+ if (!text) {
206
+ throw new Error("Text is required for analysis");
207
+ }
208
+ const textStats = analyzeText(text);
209
+ result = {
210
+ analysisType: "text_analysis",
211
+ analysis: textStats,
212
+ executionTime: Date.now() - startTime,
213
+ };
214
+ break;
215
+
216
+ case "image":
217
+ if (!data.imageData) {
218
+ throw new Error("Image data is required for analysis");
219
+ }
220
+ const imageResult = processImageData(data.imageData);
221
+ result = {
222
+ analysisType: "image_processing",
223
+ processing: imageResult,
224
+ executionTime: Date.now() - startTime,
225
+ };
226
+ break;
227
+
228
+ default:
229
+ throw new Error(`Unknown analysis type: ${data.analysisType}`);
230
+ }
231
+
232
+ return result;
233
+ }
234
+
235
+ /**
236
+ * Real cryptographic tasks
237
+ */
238
+ async function processCryptographicTask(data) {
239
+ const startTime = Date.now();
240
+
241
+ const operations = data.operations || 1000;
242
+ const cryptoResult = performCryptographicOperations(
243
+ data.payload || {},
244
+ operations
245
+ );
246
+
247
+ return {
248
+ taskType: "cryptographic_operations",
249
+ operationsCompleted: operations,
250
+ result: cryptoResult,
251
+ executionTime: Date.now() - startTime,
252
+ };
253
+ }
254
+
255
+ /**
256
+ * Real data processing tasks
257
+ */
258
+ async function processDataTask(data) {
259
+ const startTime = Date.now();
260
+
261
+ // Perform hash computation
262
+ const iterations = data.hashIterations || 5000;
263
+ const hash = computeHashes(data, iterations);
264
+
265
+ return {
266
+ taskType: "data_processing",
267
+ originalData: JSON.stringify(data).substring(0, 100) + "...",
268
+ hashIterations: iterations,
269
+ finalHash: hash,
270
+ executionTime: Date.now() - startTime,
271
+ };
272
+ }
273
+
274
+ /**
275
+ * Real transformation tasks
276
+ */
277
+ async function processTransformTask(data) {
278
+ const startTime = Date.now();
279
+
280
+ // Perform multiple transformations
281
+ const transformations = [];
282
+
283
+ // Sort transformation
284
+ if (data.array && Array.isArray(data.array)) {
285
+ const sorted = [...data.array].sort((a, b) => a - b);
286
+ transformations.push({
287
+ type: "sort",
288
+ original: data.array.slice(0, 10),
289
+ result: sorted.slice(0, 10),
290
+ count: sorted.length,
291
+ });
292
+ }
293
+
294
+ // Hash transformation
295
+ if (data.text) {
296
+ const hash = crypto
297
+ .createHash("sha256")
298
+ .update(data.text)
299
+ .digest("hex");
300
+ transformations.push({
301
+ type: "hash",
302
+ original: data.text.substring(0, 50),
303
+ result: hash,
304
+ });
305
+ }
306
+
307
+ return {
308
+ taskType: "data_transformation",
309
+ transformations,
310
+ executionTime: Date.now() - startTime,
311
+ };
312
+ }
313
+
314
+ // Message handler with real task processing
315
+ if (parentPort) {
316
+ parentPort.on("message", async (task) => {
317
+ if (isShuttingDown) {
318
+ parentPort.postMessage({
319
+ success: false,
320
+ taskId: task.id,
321
+ error: "Worker is shutting down",
322
+ timestamp: new Date().toISOString(),
323
+ });
324
+ return;
325
+ }
326
+
327
+ activeTask = task;
328
+ const startTime = Date.now();
329
+
330
+ try {
331
+ log("info", `Processing task: ${task.id} (type: ${task.type})`);
332
+
333
+ // Process task with real implementation
334
+ const result = await processTask(task);
335
+ const executionTime = Date.now() - startTime;
336
+
337
+ // Update metrics
338
+ workerMetrics.tasksProcessed++;
339
+ workerMetrics.tasksSucceeded++;
340
+ workerMetrics.totalExecutionTime += executionTime;
341
+ workerMetrics.averageExecutionTime =
342
+ workerMetrics.totalExecutionTime / workerMetrics.tasksProcessed;
343
+
344
+ // Send successful result
345
+ parentPort.postMessage({
346
+ success: true,
347
+ taskId: task.id,
348
+ result: result,
349
+ executionTime: executionTime,
350
+ resourceUsage: checkResourceUsage(),
351
+ timestamp: new Date().toISOString(),
352
+ workerMetrics: { ...workerMetrics },
353
+ });
354
+
355
+ log(
356
+ "info",
357
+ `Task ${task.id} completed successfully in ${executionTime}ms`
358
+ );
359
+ } catch (error) {
360
+ const executionTime = Date.now() - startTime;
361
+
362
+ // Update metrics
363
+ workerMetrics.tasksProcessed++;
364
+ workerMetrics.tasksFailed++;
365
+
366
+ log("error", `Task ${task.id} failed:`, error.message);
367
+
368
+ // Send error result
369
+ parentPort.postMessage({
370
+ success: false,
371
+ taskId: task.id,
372
+ error: {
373
+ message: error.message,
374
+ stack: error.stack,
375
+ code: error.code || "TASK_EXECUTION_ERROR",
376
+ },
377
+ executionTime: executionTime,
378
+ resourceUsage: checkResourceUsage(),
379
+ timestamp: new Date().toISOString(),
380
+ workerMetrics: { ...workerMetrics },
381
+ });
382
+ } finally {
383
+ activeTask = null;
384
+ }
385
+ });
386
+ }
387
+
388
+ // Graceful shutdown
389
+ function gracefulShutdown(signal) {
390
+ if (isShuttingDown) return;
391
+
392
+ isShuttingDown = true;
393
+ log("info", `Received ${signal}, initiating graceful shutdown...`);
394
+
395
+ const shutdownTimeout = setTimeout(() => {
396
+ log("warn", "Shutdown timeout reached, forcing exit");
397
+ process.exit(1);
398
+ }, 5000);
399
+
400
+ // Wait for active task to complete
401
+ const checkActiveTask = () => {
402
+ if (!activeTask) {
403
+ clearTimeout(shutdownTimeout);
404
+ log("info", "Enhanced CPU Worker shutdown completed");
405
+ process.exit(0);
406
+ } else {
407
+ log(
408
+ "info",
409
+ `Waiting for active task ${activeTask.id} to complete...`
410
+ );
411
+ setTimeout(checkActiveTask, 100);
412
+ }
413
+ };
414
+
415
+ checkActiveTask();
416
+ }
417
+
418
+ process.on("SIGTERM", () => gracefulShutdown("SIGTERM"));
419
+ process.on("SIGINT", () => gracefulShutdown("SIGINT"));
420
+ process.on("SIGHUP", () => gracefulShutdown("SIGHUP"));
421
+
422
+ // Handle uncaught exceptions
423
+ process.on("uncaughtException", (error) => {
424
+ log("error", "Uncaught exception:", error);
425
+ gracefulShutdown("UNCAUGHT_EXCEPTION");
426
+ });
427
+
428
+ // Handle unhandled promise rejections
429
+ process.on("unhandledRejection", (reason, promise) => {
430
+ log("error", "Unhandled promise rejection:", reason);
431
+ gracefulShutdown("UNHANDLED_REJECTION");
432
+ });
433
+