-
Notifications
You must be signed in to change notification settings - Fork 38
Expand file tree
/
Copy pathprocess-info.ts
More file actions
60 lines (52 loc) · 1.76 KB
/
process-info.ts
File metadata and controls
60 lines (52 loc) · 1.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { IProcessType, PROCESS_TYPES } from "@pm2.web/typings";
import bytes from "bytes-iec";
import pm2 from "pm2";
import type { IProcessInfo } from "../types/info.js";
import type { Pm2ProcessDescription } from "../types/pm2.js";
const getProcessInfo = async (): Promise<IProcessInfo[]> => {
const pm2List = await new Promise<Pm2ProcessDescription[]>(
(resolve, reject) => {
pm2.list((err, list) => {
if (err) {
reject(err);
return;
}
resolve(list as Pm2ProcessDescription[]);
});
},
);
const processList = pm2List
.map((item) => {
if (item.pm_id === undefined) return null;
const usedHeapSize = item?.pm2_env?.axm_monitor?.["Used Heap Size"] || {
value: "0",
unit: "",
};
const interpreter = item?.pm2_env?.exec_interpreter;
return {
name: item.name || item.pm_id,
pm_id: item.pm_id,
stats: {
cpu: item?.monit?.cpu || 0,
memory: item?.monit?.memory || 0,
heapUsed: bytes.parse(`${usedHeapSize.value}${usedHeapSize.unit}`),
memoryMax: 0,
uptime: Date.now() - (item?.pm2_env?.pm_uptime || 0),
},
versioning: {
url: item.pm2_env?.versioning?.url,
revision: item.pm2_env?.versioning?.revision,
comment: item.pm2_env?.versioning?.comment,
branch: item.pm2_env?.versioning?.branch,
unstaged: item.pm2_env?.versioning?.unstaged ?? true,
},
status: item?.pm2_env?.status || "offline",
type: PROCESS_TYPES.includes(interpreter as IProcessType)
? interpreter
: "other",
};
})
.filter((item) => !!item) as IProcessInfo[];
return processList;
};
export default getProcessInfo;