3x-ui/frontend/src/schemas/node.ts

40 lines
1.2 KiB
TypeScript
Raw Normal View History

import { z } from 'zod';
export const NodeRecordSchema = z.object({
id: z.number(),
name: z.string().optional(),
remark: z.string().optional(),
scheme: z.string().optional(),
address: z.string().optional(),
port: z.number().optional(),
basePath: z.string().optional(),
apiToken: z.string().optional(),
enable: z.boolean().optional(),
status: z.string().optional(),
latencyMs: z.number().optional(),
cpuPct: z.number().optional(),
memPct: z.number().optional(),
xrayVersion: z.string().optional(),
panelVersion: z.string().optional(),
uptimeSecs: z.number().optional(),
inboundCount: z.number().optional(),
clientCount: z.number().optional(),
onlineCount: z.number().optional(),
depletedCount: z.number().optional(),
lastHeartbeat: z.number().optional(),
lastError: z.string().optional(),
allowPrivateAddress: z.boolean().optional(),
}).loose();
export const NodeListSchema = z.array(NodeRecordSchema);
export const ProbeResultSchema = z.object({
status: z.string(),
latencyMs: z.number().optional(),
xrayVersion: z.string().optional(),
error: z.string().optional(),
}).loose();
export type NodeRecord = z.infer<typeof NodeRecordSchema>;
export type ProbeResult = z.infer<typeof ProbeResultSchema>;