import * as os from 'node:os'; import si from 'systeminformation'; import { Injectable } from '@nestjs/common'; import { Endpoint } from '@/server/api/endpoint-base.js'; import { MetaService } from '@/core/MetaService.js'; export const meta = { requireCredential: false, allowGet: true, cacheSec: 60 * 1, tags: ['meta'], } as const; export const paramDef = { type: 'object', properties: {}, required: [], } as const; // eslint-disable-next-line import/no-default-export @Injectable() export default class extends Endpoint { constructor( private metaService: MetaService, ) { super(meta, paramDef, async () => { if (!(await this.metaService.fetch()).enableServerMachineStats) return { machine: '?', cpu: { model: '?', cores: 0, }, mem: { total: 0, }, fs: { total: 0, used: 0, }, }; const memStats = await si.mem(); const fsStats = await si.fsSize(); return { machine: os.hostname(), cpu: { model: os.cpus()[0].model, cores: os.cpus().length, }, mem: { total: memStats.total, }, fs: { total: fsStats[0].size, used: fsStats[0].used, }, }; }); } }