xypriss 1.2.4 → 1.3.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 (109) hide show
  1. package/README.md +51 -3
  2. package/dist/cjs/mods/security/src/components/cache/index.js +1 -1
  3. package/dist/cjs/shared/logger/Logger.js +2 -0
  4. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  5. package/dist/cjs/src/cluster/bun-cluster-manager.js +1567 -0
  6. package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -0
  7. package/dist/cjs/src/cluster/cluster-manager.js +1 -1
  8. package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
  9. package/dist/cjs/src/cluster/index.js +25 -6
  10. package/dist/cjs/src/cluster/index.js.map +1 -1
  11. package/dist/cjs/src/cluster/memory-manager.js +486 -0
  12. package/dist/cjs/src/cluster/memory-manager.js.map +1 -0
  13. package/dist/cjs/src/cluster/modules/BunIPCManager.js +603 -0
  14. package/dist/cjs/src/cluster/modules/BunIPCManager.js.map +1 -0
  15. package/dist/cjs/src/cluster/modules/ClusterFactory.js +22 -1
  16. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +1 -1
  17. package/dist/cjs/src/cluster/modules/CpuMonitor.js +658 -0
  18. package/dist/cjs/src/cluster/modules/CpuMonitor.js.map +1 -0
  19. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +257 -0
  20. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -0
  21. package/dist/cjs/src/cluster/modules/ProcessMonitor.js +513 -0
  22. package/dist/cjs/src/cluster/modules/ProcessMonitor.js.map +1 -0
  23. package/dist/cjs/src/plugins/server-maintenance-plugin.js +79 -14
  24. package/dist/cjs/src/plugins/server-maintenance-plugin.js.map +1 -1
  25. package/dist/cjs/src/server/FastServer.js +64 -43
  26. package/dist/cjs/src/server/FastServer.js.map +1 -1
  27. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  28. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  29. package/dist/cjs/src/server/const/Cluster.config.js +174 -31
  30. package/dist/cjs/src/server/const/Cluster.config.js.map +1 -1
  31. package/dist/cjs/src/server/const/default.js +11 -2
  32. package/dist/cjs/src/server/const/default.js.map +1 -1
  33. package/dist/cjs/src/server/utils/PortManager.js +26 -15
  34. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  35. package/dist/esm/mods/security/src/components/cache/index.js +1 -1
  36. package/dist/esm/shared/logger/Logger.js +2 -0
  37. package/dist/esm/shared/logger/Logger.js.map +1 -1
  38. package/dist/esm/src/cluster/bun-cluster-manager.js +1565 -0
  39. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -0
  40. package/dist/esm/src/cluster/cluster-manager.js +1 -1
  41. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  42. package/dist/esm/src/cluster/index.js +25 -6
  43. package/dist/esm/src/cluster/index.js.map +1 -1
  44. package/dist/esm/src/cluster/memory-manager.js +484 -0
  45. package/dist/esm/src/cluster/memory-manager.js.map +1 -0
  46. package/dist/esm/src/cluster/modules/BunIPCManager.js +601 -0
  47. package/dist/esm/src/cluster/modules/BunIPCManager.js.map +1 -0
  48. package/dist/esm/src/cluster/modules/ClusterFactory.js +22 -1
  49. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +1 -1
  50. package/dist/esm/src/cluster/modules/CpuMonitor.js +656 -0
  51. package/dist/esm/src/cluster/modules/CpuMonitor.js.map +1 -0
  52. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +255 -0
  53. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -0
  54. package/dist/esm/src/cluster/modules/ProcessMonitor.js +511 -0
  55. package/dist/esm/src/cluster/modules/ProcessMonitor.js.map +1 -0
  56. package/dist/esm/src/plugins/server-maintenance-plugin.js +79 -14
  57. package/dist/esm/src/plugins/server-maintenance-plugin.js.map +1 -1
  58. package/dist/esm/src/server/FastServer.js +64 -43
  59. package/dist/esm/src/server/FastServer.js.map +1 -1
  60. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  61. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  62. package/dist/esm/src/server/const/Cluster.config.js +174 -31
  63. package/dist/esm/src/server/const/Cluster.config.js.map +1 -1
  64. package/dist/esm/src/server/const/default.js +11 -2
  65. package/dist/esm/src/server/const/default.js.map +1 -1
  66. package/dist/esm/src/server/utils/PortManager.js +26 -15
  67. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  68. package/dist/index.d.ts +90 -2
  69. package/package.json +6 -1
  70. package/dist/cjs/src/plugins/modules/network/index.js +0 -120
  71. package/dist/cjs/src/plugins/modules/network/index.js.map +0 -1
  72. package/dist/cjs/src/server/plugins/PluginEngine.js +0 -378
  73. package/dist/cjs/src/server/plugins/PluginEngine.js.map +0 -1
  74. package/dist/cjs/src/server/plugins/PluginRegistry.js +0 -339
  75. package/dist/cjs/src/server/plugins/PluginRegistry.js.map +0 -1
  76. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js +0 -591
  77. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  78. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js +0 -413
  79. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  80. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js +0 -843
  81. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  82. package/dist/cjs/src/server/plugins/core/CachePlugin.js +0 -1975
  83. package/dist/cjs/src/server/plugins/core/CachePlugin.js.map +0 -1
  84. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js +0 -894
  85. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  86. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js +0 -799
  87. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  88. package/dist/cjs/src/server/plugins/types/PluginTypes.js +0 -47
  89. package/dist/cjs/src/server/plugins/types/PluginTypes.js.map +0 -1
  90. package/dist/esm/src/plugins/modules/network/index.js +0 -109
  91. package/dist/esm/src/plugins/modules/network/index.js.map +0 -1
  92. package/dist/esm/src/server/plugins/PluginEngine.js +0 -376
  93. package/dist/esm/src/server/plugins/PluginEngine.js.map +0 -1
  94. package/dist/esm/src/server/plugins/PluginRegistry.js +0 -337
  95. package/dist/esm/src/server/plugins/PluginRegistry.js.map +0 -1
  96. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js +0 -589
  97. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  98. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js +0 -411
  99. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  100. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js +0 -841
  101. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  102. package/dist/esm/src/server/plugins/core/CachePlugin.js +0 -1973
  103. package/dist/esm/src/server/plugins/core/CachePlugin.js.map +0 -1
  104. package/dist/esm/src/server/plugins/core/PerformancePlugin.js +0 -872
  105. package/dist/esm/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  106. package/dist/esm/src/server/plugins/core/SecurityPlugin.js +0 -797
  107. package/dist/esm/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  108. package/dist/esm/src/server/plugins/types/PluginTypes.js +0 -47
  109. package/dist/esm/src/server/plugins/types/PluginTypes.js.map +0 -1
@@ -0,0 +1,513 @@
1
+ 'use strict';
2
+
3
+ var events = require('events');
4
+ var Logger = require('../../../shared/logger/Logger.js');
5
+
6
+ /**
7
+ * Advanced Process Monitoring Module
8
+ * Provides sophisticated CPU, memory, and system resource monitoring
9
+ * with accurate calculations and cross-platform support
10
+ */
11
+ /**
12
+ * Advanced process monitoring with accurate CPU calculations
13
+ */
14
+ class ProcessMonitor extends events.EventEmitter {
15
+ constructor() {
16
+ super();
17
+ this.cpuSnapshots = new Map();
18
+ this.isMonitoring = false;
19
+ }
20
+ /**
21
+ * Start monitoring processes
22
+ */
23
+ startMonitoring(interval = 5000) {
24
+ if (this.isMonitoring) {
25
+ return;
26
+ }
27
+ this.isMonitoring = true;
28
+ this.monitoringInterval = setInterval(() => {
29
+ this.emit("monitoring_tick");
30
+ }, interval);
31
+ Logger.logger.info("cluster", `Process monitoring started (interval: ${interval}ms)`);
32
+ }
33
+ /**
34
+ * Stop monitoring processes
35
+ */
36
+ stopMonitoring() {
37
+ if (this.monitoringInterval) {
38
+ clearInterval(this.monitoringInterval);
39
+ this.monitoringInterval = undefined;
40
+ }
41
+ this.isMonitoring = false;
42
+ this.cpuSnapshots.clear();
43
+ Logger.logger.info("cluster", "Process monitoring stopped");
44
+ }
45
+ /**
46
+ * Get comprehensive process statistics
47
+ */
48
+ async getProcessStats(pid) {
49
+ try {
50
+ const [memory, cpu, uptime, threads, fds] = await Promise.all([
51
+ this._getProcessMemory(pid),
52
+ this._getProcessCPU(pid),
53
+ this._getProcessUptime(pid),
54
+ this._getProcessThreads(pid),
55
+ this._getProcessFileDescriptors(pid),
56
+ ]);
57
+ return {
58
+ pid,
59
+ memory,
60
+ cpu,
61
+ uptime,
62
+ threads,
63
+ fileDescriptors: fds,
64
+ };
65
+ }
66
+ catch (error) {
67
+ Logger.logger.error("cluster", `Failed to get process stats for PID ${pid}:`, error);
68
+ throw error;
69
+ }
70
+ }
71
+ /**
72
+ * Get system-wide statistics
73
+ */
74
+ async getSystemStats() {
75
+ try {
76
+ const [cpu, memory, swap, uptime] = await Promise.all([
77
+ this._getSystemCPU(),
78
+ this._getSystemMemory(),
79
+ this._getSystemSwap(),
80
+ this._getSystemUptime(),
81
+ ]);
82
+ return {
83
+ cpu,
84
+ memory,
85
+ swap,
86
+ uptime,
87
+ };
88
+ }
89
+ catch (error) {
90
+ Logger.logger.error("cluster", "Failed to get system stats:", error);
91
+ throw error;
92
+ }
93
+ }
94
+ /**
95
+ * Get accurate CPU usage with proper time-based calculation
96
+ */
97
+ async _getProcessCPU(pid) {
98
+ const currentSnapshot = await this._takeCPUSnapshot(pid);
99
+ const previousSnapshot = this.cpuSnapshots.get(pid);
100
+ let usage = 0;
101
+ if (previousSnapshot) {
102
+ const timeDelta = currentSnapshot.timestamp - previousSnapshot.timestamp;
103
+ const cpuDelta = currentSnapshot.totalTime - previousSnapshot.totalTime;
104
+ if (timeDelta > 0) {
105
+ // Calculate CPU usage as percentage of elapsed time
106
+ usage = Math.min(100, (cpuDelta / timeDelta) * 100);
107
+ }
108
+ }
109
+ // Store current snapshot for next calculation
110
+ this.cpuSnapshots.set(pid, currentSnapshot);
111
+ return {
112
+ usage,
113
+ userTime: currentSnapshot.userTime,
114
+ systemTime: currentSnapshot.systemTime,
115
+ totalTime: currentSnapshot.totalTime,
116
+ };
117
+ }
118
+ /**
119
+ * Take a CPU snapshot for accurate delta calculations
120
+ */
121
+ async _takeCPUSnapshot(pid) {
122
+ const timestamp = Date.now();
123
+ if (process.platform === "linux") {
124
+ const fs = await import('fs');
125
+ const stat = await fs.promises.readFile(`/proc/${pid}/stat`, "utf8");
126
+ const fields = stat.split(" ");
127
+ const utime = parseInt(fields[13]) || 0; // User time in clock ticks
128
+ const stime = parseInt(fields[14]) || 0; // System time in clock ticks
129
+ const clockTicks = 100; // Standard Linux clock ticks per second
130
+ const userTime = (utime / clockTicks) * 1000; // Convert to milliseconds
131
+ const systemTime = (stime / clockTicks) * 1000; // Convert to milliseconds
132
+ const totalTime = userTime + systemTime;
133
+ return { timestamp, userTime, systemTime, totalTime };
134
+ }
135
+ else if (process.platform === "darwin") {
136
+ // macOS implementation using ps
137
+ const { spawn } = await import('child_process');
138
+ return new Promise((resolve, reject) => {
139
+ const ps = spawn("ps", ["-o", "time=", "-p", pid.toString()]);
140
+ let output = "";
141
+ ps.stdout.on("data", (data) => {
142
+ output += data.toString();
143
+ });
144
+ ps.on("close", (code) => {
145
+ if (code === 0) {
146
+ // Parse time format (MM:SS.ss or HH:MM:SS)
147
+ const timeStr = output.trim();
148
+ const totalTime = this._parseTimeString(timeStr);
149
+ resolve({
150
+ timestamp,
151
+ userTime: totalTime * 0.7, // Approximate split
152
+ systemTime: totalTime * 0.3,
153
+ totalTime,
154
+ });
155
+ }
156
+ else {
157
+ reject(new Error(`ps command failed with code ${code}`));
158
+ }
159
+ });
160
+ ps.on("error", reject);
161
+ });
162
+ }
163
+ else {
164
+ // Fallback for other platforms
165
+ return {
166
+ timestamp,
167
+ userTime: 0,
168
+ systemTime: 0,
169
+ totalTime: 0,
170
+ };
171
+ }
172
+ }
173
+ /**
174
+ * Parse time string from ps output
175
+ */
176
+ _parseTimeString(timeStr) {
177
+ const parts = timeStr.split(":").map(Number);
178
+ if (parts.length === 2) {
179
+ // MM:SS format
180
+ return (parts[0] * 60 + parts[1]) * 1000;
181
+ }
182
+ else if (parts.length === 3) {
183
+ // HH:MM:SS format
184
+ return (parts[0] * 3600 + parts[1] * 60 + parts[2]) * 1000;
185
+ }
186
+ return 0;
187
+ }
188
+ /**
189
+ * Get detailed process memory information
190
+ */
191
+ async _getProcessMemory(pid) {
192
+ if (process.platform === "linux") {
193
+ const fs = await import('fs');
194
+ const [statm, status] = await Promise.all([
195
+ fs.promises.readFile(`/proc/${pid}/statm`, "utf8"),
196
+ fs.promises.readFile(`/proc/${pid}/status`, "utf8"),
197
+ ]);
198
+ const statmFields = statm.split(" ");
199
+ const pageSize = 4096;
200
+ const vms = parseInt(statmFields[0]) * pageSize; // Virtual memory size
201
+ const rss = parseInt(statmFields[1]) * pageSize; // Resident set size
202
+ // Extract additional memory info from status
203
+ const vmSizeMatch = status.match(/VmSize:\s+(\d+)\s+kB/);
204
+ const vmRSSMatch = status.match(/VmRSS:\s+(\d+)\s+kB/);
205
+ const vmDataMatch = status.match(/VmData:\s+(\d+)\s+kB/);
206
+ return {
207
+ rss: vmRSSMatch ? parseInt(vmRSSMatch[1]) * 1024 : rss,
208
+ vms: vmSizeMatch ? parseInt(vmSizeMatch[1]) * 1024 : vms,
209
+ heapTotal: vmDataMatch ? parseInt(vmDataMatch[1]) * 1024 : 0,
210
+ heapUsed: rss,
211
+ external: 0,
212
+ arrayBuffers: 0,
213
+ };
214
+ }
215
+ else if (process.platform === "darwin") {
216
+ // macOS implementation
217
+ const { spawn } = await import('child_process');
218
+ return new Promise((resolve, reject) => {
219
+ const ps = spawn("ps", [
220
+ "-o",
221
+ "rss=,vsz=",
222
+ "-p",
223
+ pid.toString(),
224
+ ]);
225
+ let output = "";
226
+ ps.stdout.on("data", (data) => {
227
+ output += data.toString();
228
+ });
229
+ ps.on("close", (code) => {
230
+ if (code === 0) {
231
+ const [rssKB, vszKB] = output
232
+ .trim()
233
+ .split(/\s+/)
234
+ .map(Number);
235
+ const rss = (rssKB || 0) * 1024;
236
+ const vms = (vszKB || 0) * 1024;
237
+ resolve({
238
+ rss,
239
+ vms,
240
+ heapTotal: vms,
241
+ heapUsed: rss,
242
+ external: 0,
243
+ arrayBuffers: 0,
244
+ });
245
+ }
246
+ else {
247
+ reject(new Error(`ps command failed with code ${code}`));
248
+ }
249
+ });
250
+ ps.on("error", reject);
251
+ });
252
+ }
253
+ else {
254
+ // Fallback for other platforms
255
+ return {
256
+ rss: 0,
257
+ vms: 0,
258
+ heapTotal: 0,
259
+ heapUsed: 0,
260
+ external: 0,
261
+ arrayBuffers: 0,
262
+ };
263
+ }
264
+ }
265
+ /**
266
+ * Get process uptime in seconds
267
+ */
268
+ async _getProcessUptime(pid) {
269
+ if (process.platform === "linux") {
270
+ const fs = await import('fs');
271
+ const stat = await fs.promises.readFile(`/proc/${pid}/stat`, "utf8");
272
+ const fields = stat.split(" ");
273
+ const starttime = parseInt(fields[21]) || 0; // Process start time in clock ticks
274
+ const uptimeFile = await fs.promises.readFile("/proc/uptime", "utf8");
275
+ const systemUptime = parseFloat(uptimeFile.split(" ")[0]);
276
+ const clockTicks = 100; // Standard Linux clock ticks per second
277
+ const processStartTime = starttime / clockTicks;
278
+ return Math.max(0, systemUptime - processStartTime);
279
+ }
280
+ else if (process.platform === "darwin") {
281
+ const { spawn } = await import('child_process');
282
+ return new Promise((resolve, reject) => {
283
+ const ps = spawn("ps", ["-o", "etime=", "-p", pid.toString()]);
284
+ let output = "";
285
+ ps.stdout.on("data", (data) => {
286
+ output += data.toString();
287
+ });
288
+ ps.on("close", (code) => {
289
+ if (code === 0) {
290
+ const etimeStr = output.trim();
291
+ resolve(this._parseEtimeString(etimeStr));
292
+ }
293
+ else {
294
+ reject(new Error(`ps command failed with code ${code}`));
295
+ }
296
+ });
297
+ ps.on("error", reject);
298
+ });
299
+ }
300
+ else {
301
+ return 0;
302
+ }
303
+ }
304
+ /**
305
+ * Parse etime string from ps output
306
+ */
307
+ _parseEtimeString(etimeStr) {
308
+ const parts = etimeStr.split(":").map(Number);
309
+ if (parts.length === 3) {
310
+ return parts[0] * 3600 + parts[1] * 60 + parts[2];
311
+ }
312
+ else if (parts.length === 2) {
313
+ return parts[0] * 60 + parts[1];
314
+ }
315
+ else if (parts.length === 1) {
316
+ return parts[0];
317
+ }
318
+ return 0;
319
+ }
320
+ /**
321
+ * Get number of threads for a process
322
+ */
323
+ async _getProcessThreads(pid) {
324
+ if (process.platform === "linux") {
325
+ try {
326
+ const fs = await import('fs');
327
+ const status = await fs.promises.readFile(`/proc/${pid}/status`, "utf8");
328
+ const threadsMatch = status.match(/Threads:\s+(\d+)/);
329
+ return threadsMatch ? parseInt(threadsMatch[1]) : 1;
330
+ }
331
+ catch {
332
+ return 1;
333
+ }
334
+ }
335
+ else {
336
+ return 1; // Default for other platforms
337
+ }
338
+ }
339
+ /**
340
+ * Get number of open file descriptors
341
+ */
342
+ async _getProcessFileDescriptors(pid) {
343
+ if (process.platform === "linux") {
344
+ try {
345
+ const fs = await import('fs');
346
+ const fdDir = await fs.promises.readdir(`/proc/${pid}/fd`);
347
+ return fdDir.length;
348
+ }
349
+ catch {
350
+ return 0;
351
+ }
352
+ }
353
+ else {
354
+ return 0; // Default for other platforms
355
+ }
356
+ }
357
+ /**
358
+ * Get system CPU information
359
+ */
360
+ async _getSystemCPU() {
361
+ const os = await import('os');
362
+ const cores = os.cpus().length;
363
+ const loadAverage = os.loadavg();
364
+ // Calculate system CPU usage
365
+ let usage = 0;
366
+ if (process.platform === "linux") {
367
+ try {
368
+ const fs = await import('fs');
369
+ const stat = await fs.promises.readFile("/proc/stat", "utf8");
370
+ const cpuLine = stat.split("\n")[0];
371
+ const cpuTimes = cpuLine.split(/\s+/).slice(1).map(Number);
372
+ const idle = cpuTimes[3] || 0;
373
+ const total = cpuTimes.reduce((sum, time) => sum + time, 0);
374
+ usage = total > 0 ? Math.max(0, 100 - (idle / total) * 100) : 0;
375
+ }
376
+ catch {
377
+ // Fallback to load average approximation
378
+ usage = Math.min(100, (loadAverage[0] / cores) * 100);
379
+ }
380
+ }
381
+ else {
382
+ // Approximate from load average
383
+ usage = Math.min(100, (loadAverage[0] / cores) * 100);
384
+ }
385
+ return {
386
+ cores,
387
+ usage,
388
+ loadAverage,
389
+ };
390
+ }
391
+ /**
392
+ * Get system memory information
393
+ */
394
+ async _getSystemMemory() {
395
+ const os = await import('os');
396
+ const total = os.totalmem();
397
+ const free = os.freemem();
398
+ const used = total - free;
399
+ const usagePercentage = (used / total) * 100;
400
+ let buffers;
401
+ let cached;
402
+ let available = free;
403
+ if (process.platform === "linux") {
404
+ try {
405
+ const fs = await import('fs');
406
+ const meminfo = await fs.promises.readFile("/proc/meminfo", "utf8");
407
+ const buffersMatch = meminfo.match(/Buffers:\s+(\d+)\s+kB/);
408
+ const cachedMatch = meminfo.match(/Cached:\s+(\d+)\s+kB/);
409
+ const availableMatch = meminfo.match(/MemAvailable:\s+(\d+)\s+kB/);
410
+ buffers = buffersMatch
411
+ ? parseInt(buffersMatch[1]) * 1024
412
+ : undefined;
413
+ cached = cachedMatch
414
+ ? parseInt(cachedMatch[1]) * 1024
415
+ : undefined;
416
+ available = availableMatch
417
+ ? parseInt(availableMatch[1]) * 1024
418
+ : free;
419
+ }
420
+ catch {
421
+ // Use OS defaults
422
+ }
423
+ }
424
+ return {
425
+ total,
426
+ free,
427
+ used,
428
+ available,
429
+ usagePercentage,
430
+ buffers,
431
+ cached,
432
+ };
433
+ }
434
+ /**
435
+ * Get system swap information
436
+ */
437
+ async _getSystemSwap() {
438
+ if (process.platform === "linux") {
439
+ try {
440
+ const fs = await import('fs');
441
+ const meminfo = await fs.promises.readFile("/proc/meminfo", "utf8");
442
+ const swapTotalMatch = meminfo.match(/SwapTotal:\s+(\d+)\s+kB/);
443
+ const swapFreeMatch = meminfo.match(/SwapFree:\s+(\d+)\s+kB/);
444
+ const total = swapTotalMatch
445
+ ? parseInt(swapTotalMatch[1]) * 1024
446
+ : 0;
447
+ const free = swapFreeMatch
448
+ ? parseInt(swapFreeMatch[1]) * 1024
449
+ : 0;
450
+ const used = total - free;
451
+ const usagePercentage = total > 0 ? (used / total) * 100 : 0;
452
+ return { total, free, used, usagePercentage };
453
+ }
454
+ catch {
455
+ return { total: 0, free: 0, used: 0, usagePercentage: 0 };
456
+ }
457
+ }
458
+ else if (process.platform === "darwin") {
459
+ try {
460
+ const { execSync } = await import('child_process');
461
+ const swapUsage = execSync("sysctl vm.swapusage", {
462
+ encoding: "utf8",
463
+ });
464
+ const totalMatch = swapUsage.match(/total = ([\d.]+)([MG])/);
465
+ const usedMatch = swapUsage.match(/used = ([\d.]+)([MG])/);
466
+ let total = 0;
467
+ let used = 0;
468
+ if (totalMatch) {
469
+ const value = parseFloat(totalMatch[1]);
470
+ const unit = totalMatch[2];
471
+ total =
472
+ unit === "G"
473
+ ? value * 1024 * 1024 * 1024
474
+ : value * 1024 * 1024;
475
+ }
476
+ if (usedMatch) {
477
+ const value = parseFloat(usedMatch[1]);
478
+ const unit = usedMatch[2];
479
+ used =
480
+ unit === "G"
481
+ ? value * 1024 * 1024 * 1024
482
+ : value * 1024 * 1024;
483
+ }
484
+ const free = total - used;
485
+ const usagePercentage = total > 0 ? (used / total) * 100 : 0;
486
+ return { total, free, used, usagePercentage };
487
+ }
488
+ catch {
489
+ return { total: 0, free: 0, used: 0, usagePercentage: 0 };
490
+ }
491
+ }
492
+ else {
493
+ return { total: 0, free: 0, used: 0, usagePercentage: 0 };
494
+ }
495
+ }
496
+ /**
497
+ * Get system uptime in seconds
498
+ */
499
+ async _getSystemUptime() {
500
+ const os = await import('os');
501
+ return os.uptime();
502
+ }
503
+ /**
504
+ * Clean up resources
505
+ */
506
+ destroy() {
507
+ this.stopMonitoring();
508
+ this.removeAllListeners();
509
+ }
510
+ }
511
+
512
+ exports.ProcessMonitor = ProcessMonitor;
513
+ //# sourceMappingURL=ProcessMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProcessMonitor.js","sources":["../../../../../src/cluster/modules/ProcessMonitor.ts"],"sourcesContent":[null],"names":["EventEmitter","logger"],"mappings":"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"}