You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import systeminformation, { Systeminformation } from 'systeminformation';
|
|
|
|
const cache: any = {};
|
|
|
|
export interface StatusUpdate {
|
|
memory: Systeminformation.MemData;
|
|
load: Systeminformation.CurrentLoadData;
|
|
battery: Systeminformation.BatteryData;
|
|
CpuTemp: Systeminformation.CpuTemperatureData;
|
|
}
|
|
|
|
export interface StatusFull extends StatusUpdate {
|
|
mid: string;
|
|
cpu: Systeminformation.CpuData;
|
|
osinfo: Systeminformation.OsData;
|
|
}
|
|
|
|
export async function get(): Promise<StatusFull> {
|
|
const [uuid, cpu, memory, osinfo, load, CpuTemp, battery] = await Promise.all([
|
|
systeminformation.uuid(),
|
|
systeminformation.cpu(),
|
|
systeminformation.mem(),
|
|
systeminformation.osInfo(),
|
|
systeminformation.currentLoad(),
|
|
systeminformation.cpuTemperature(),
|
|
systeminformation.battery(),
|
|
]);
|
|
const mid = uuid.hardware;
|
|
delete osinfo.fqdn;
|
|
cache.cpu = cpu;
|
|
cache.osinfo = osinfo;
|
|
cache.mid = mid;
|
|
return {
|
|
mid, cpu, memory, osinfo, load, CpuTemp, battery,
|
|
};
|
|
}
|
|
|
|
export async function update(): Promise<[string, StatusUpdate, StatusFull]> {
|
|
const [memory, load, CpuTemp, battery] = await Promise.all([
|
|
systeminformation.mem(),
|
|
systeminformation.currentLoad(),
|
|
systeminformation.cpuTemperature(),
|
|
systeminformation.battery(),
|
|
]);
|
|
const { mid, cpu, osinfo } = cache;
|
|
return [
|
|
mid,
|
|
{
|
|
memory, load, battery, CpuTemp,
|
|
},
|
|
{
|
|
mid, cpu, memory, osinfo, load, battery, CpuTemp,
|
|
},
|
|
];
|
|
}
|