mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-04-23 12:10:38 +00:00
264 lines
5.9 KiB
TypeScript
264 lines
5.9 KiB
TypeScript
import { fetchApi } from "@/lib/api-config"
|
|
|
|
export interface Temperature {
|
|
name: string
|
|
original_name?: string
|
|
current: number
|
|
high?: number
|
|
critical?: number
|
|
adapter?: string
|
|
}
|
|
|
|
export interface PowerMeter {
|
|
name: string
|
|
watts: number
|
|
adapter?: string
|
|
}
|
|
|
|
export interface NetworkInterface {
|
|
name: string
|
|
type: string
|
|
speed?: string
|
|
status?: string
|
|
}
|
|
|
|
export interface StorageDevice {
|
|
name: string
|
|
type: string
|
|
size?: string
|
|
model?: string
|
|
driver?: string
|
|
interface?: string
|
|
serial?: string
|
|
family?: string
|
|
firmware?: string
|
|
rotation_rate?: number | string
|
|
form_factor?: string
|
|
sata_version?: string
|
|
pcie_gen?: string // e.g., "PCIe 4.0"
|
|
pcie_width?: string // e.g., "x4"
|
|
pcie_max_gen?: string // Maximum supported PCIe generation
|
|
pcie_max_width?: string // Maximum supported PCIe lanes
|
|
sas_version?: string // e.g., "SAS-3"
|
|
sas_speed?: string // e.g., "12Gb/s"
|
|
link_speed?: string // Generic link speed info
|
|
}
|
|
|
|
export interface PCIDevice {
|
|
slot: string
|
|
type: string
|
|
device: string
|
|
vendor: string
|
|
class: string
|
|
driver?: string
|
|
kernel_module?: string
|
|
irq?: string
|
|
memory_address?: string
|
|
link_speed?: string
|
|
capabilities?: string[]
|
|
gpu_memory?: string
|
|
gpu_driver_version?: string
|
|
gpu_cuda_version?: string
|
|
gpu_compute_capability?: string
|
|
gpu_power_draw?: string
|
|
gpu_temperature?: number
|
|
gpu_utilization?: number
|
|
gpu_memory_used?: string
|
|
gpu_memory_total?: string
|
|
gpu_clock_speed?: string
|
|
gpu_memory_clock?: string
|
|
}
|
|
|
|
export interface Fan {
|
|
name: string
|
|
original_name?: string
|
|
speed: number
|
|
unit: string
|
|
adapter?: string
|
|
}
|
|
|
|
export interface PowerSupply {
|
|
name: string
|
|
watts: number
|
|
status?: string
|
|
}
|
|
|
|
export interface UPS {
|
|
name: string
|
|
host?: string
|
|
is_remote?: boolean
|
|
connection_type?: string
|
|
status: string
|
|
model?: string
|
|
manufacturer?: string
|
|
serial?: string
|
|
device_type?: string
|
|
firmware?: string
|
|
driver?: string
|
|
battery_charge?: string
|
|
battery_charge_raw?: number
|
|
battery_voltage?: string
|
|
battery_date?: string
|
|
time_left?: string
|
|
time_left_seconds?: number
|
|
load_percent?: string
|
|
load_percent_raw?: number
|
|
input_voltage?: string
|
|
input_frequency?: string
|
|
output_voltage?: string
|
|
output_frequency?: string
|
|
real_power?: string
|
|
apparent_power?: string
|
|
[key: string]: any
|
|
}
|
|
|
|
export interface CoralTPU {
|
|
type: "pcie" | "usb"
|
|
name: string
|
|
vendor: string
|
|
vendor_id: string
|
|
device_id: string
|
|
slot?: string // PCIe only, e.g. "0000:0c:00.0"
|
|
bus_device?: string // USB only, e.g. "002:007"
|
|
form_factor?: string // "M.2 / Mini PCIe (x1)" | "USB Accelerator" | ...
|
|
interface_speed?: string // "PCIe 2.5GT/s x1" | "USB 3.0" | ...
|
|
kernel_driver?: string | null
|
|
usb_driver?: string | null
|
|
kernel_modules?: {
|
|
gasket: boolean
|
|
apex: boolean
|
|
}
|
|
device_nodes?: string[]
|
|
edgetpu_runtime?: string
|
|
programmed?: boolean // USB only: runtime has interacted with the device
|
|
drivers_ready: boolean
|
|
// Thermal data — PCIe/M.2 only (apex driver). Always null for USB Coral.
|
|
temperature?: number | null // °C current die temperature
|
|
temperature_trips?: number[] | null // trip_point0/1/2_temp, ordered warn→critical
|
|
thermal_warnings?: Array<{
|
|
name: string // e.g. "hw_temp_warn1"
|
|
threshold_c: number | null
|
|
enabled: boolean
|
|
}> | null
|
|
}
|
|
|
|
export interface UsbDevice {
|
|
bus_device: string // "002:007"
|
|
vendor_id: string // "18d1"
|
|
product_id: string // "9302"
|
|
vendor: string
|
|
name: string
|
|
class_code: string // "ff"
|
|
class_label: string // "Vendor Specific", "HID", "Mass Storage", ...
|
|
speed_mbps: number
|
|
speed_label: string // "USB 3.0" | "USB 2.0" | ...
|
|
serial?: string
|
|
driver?: string
|
|
}
|
|
|
|
export interface GPU {
|
|
slot: string
|
|
name: string
|
|
vendor: string
|
|
type: string
|
|
pci_class?: string
|
|
pci_driver?: string
|
|
pci_kernel_module?: string
|
|
driver_version?: string
|
|
memory_total?: string
|
|
memory_used?: string
|
|
memory_free?: string
|
|
temperature?: number
|
|
power_draw?: string
|
|
power_limit?: string
|
|
utilization_gpu?: number
|
|
utilization_memory?: number
|
|
clock_graphics?: string
|
|
clock_memory?: string
|
|
engine_render?: number
|
|
engine_blitter?: number
|
|
engine_video?: number
|
|
engine_video_enhance?: number
|
|
pcie_gen?: string
|
|
pcie_width?: string
|
|
fan_speed?: number
|
|
fan_unit?: string
|
|
processes?: Array<{
|
|
pid: string
|
|
name: string
|
|
memory: string
|
|
}>
|
|
has_monitoring_tool?: boolean
|
|
note?: string
|
|
}
|
|
|
|
export interface DiskHardwareInfo {
|
|
type?: string
|
|
driver?: string
|
|
interface?: string
|
|
model?: string
|
|
serial?: string
|
|
family?: string
|
|
firmware?: string
|
|
rotation_rate?: string
|
|
form_factor?: string
|
|
sata_version?: string
|
|
}
|
|
|
|
export interface NetworkHardwareInfo {
|
|
driver?: string
|
|
kernel_modules?: string
|
|
subsystem?: string
|
|
max_link_speed?: string
|
|
max_link_width?: string
|
|
current_link_speed?: string
|
|
current_link_width?: string
|
|
interface_name?: string
|
|
interface_speed?: string
|
|
mac_address?: string
|
|
}
|
|
|
|
export interface HardwareData {
|
|
cpu?: {
|
|
model?: string
|
|
cores_per_socket?: number
|
|
sockets?: number
|
|
total_threads?: number
|
|
l3_cache?: string
|
|
virtualization?: string
|
|
}
|
|
motherboard?: {
|
|
manufacturer?: string
|
|
model?: string
|
|
bios?: {
|
|
vendor?: string
|
|
version?: string
|
|
date?: string
|
|
}
|
|
}
|
|
memory_modules?: Array<{
|
|
slot: string
|
|
size?: string
|
|
type?: string
|
|
speed?: string
|
|
manufacturer?: string
|
|
}>
|
|
temperatures?: Temperature[]
|
|
power_meter?: PowerMeter
|
|
network_cards?: NetworkInterface[]
|
|
storage_devices?: StorageDevice[]
|
|
pci_devices?: PCIDevice[]
|
|
gpus?: GPU[]
|
|
fans?: Fan[]
|
|
power_supplies?: PowerSupply[]
|
|
ups?: UPS | UPS[]
|
|
coral_tpus?: CoralTPU[]
|
|
usb_devices?: UsbDevice[]
|
|
}
|
|
|
|
export const fetcher = async (url: string) => {
|
|
// Extract just the endpoint from the URL if it's a full URL
|
|
const endpoint = url.startsWith("http") ? new URL(url).pathname : url
|
|
return fetchApi(endpoint)
|
|
}
|