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