Files
ProxMenux/AppImage/types/hardware.ts
T
2026-04-17 20:56:07 +02:00

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)
}