Import source: web/src/lib/types

Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
arsam
2026-09-18 23:20:22 +03:30
parent 70f3ee9116
commit 31cab9b24b
+90
View File
@@ -0,0 +1,90 @@
export type TargetState = "up" | "degraded" | "down" | "unknown";
export interface CheckPoint {
ts: number;
ok: boolean;
latency_ms: number;
detail?: string;
error?: string;
}
export interface LatencyStats {
avg_ms: number;
p50_ms: number;
p95_ms: number;
min_ms: number;
max_ms: number;
}
export interface Incident {
id: number;
target_id: string;
started_at: number;
ended_at?: number;
error?: string;
}
export type CheckKind = "http" | "tcp" | "tls" | "icmp" | "docker";
export interface Target {
id: string;
name: string;
type: CheckKind;
endpoint: string;
interval_sec: number;
state: TargetState;
fails: number;
last?: CheckPoint;
uptime_24h?: number;
uptime_7d?: number;
uptime_30d?: number;
latency: LatencyStats;
cert_days?: number;
incident?: Incident;
}
export interface Bucket {
start: number;
total: number;
failed: number;
avg_latency_ms: number;
max_latency_ms: number;
}
export interface HistoryResponse {
target_id: string;
range: string;
from: number;
to: number;
points: CheckPoint[];
buckets: Bucket[];
bucket_ms: number;
}
export interface CheckEvent {
target_id: string;
ts: number;
ok: boolean;
latency_ms: number;
detail?: string;
error?: string;
state: TargetState;
}
export interface StateEvent {
target_id: string;
ts: number;
state: TargetState;
prev_state: TargetState;
incident?: Incident;
}
/** A target enriched with live, client-side stream state. */
export interface LiveTarget extends Target {
/** Increments on every completed probe — drives the pulse animation. */
pulse: number;
/** Wall time of the last confirmed state transition — drives ripples. */
stateChangedAt: number;
/** Rolling buffer of recent checks for the sparkline. */
series: CheckPoint[];
}