From aa767695afd70906dbcb895d5075923026c3b26f Mon Sep 17 00:00:00 2001 From: Slinetrac Date: Tue, 9 Dec 2025 13:27:46 +0800 Subject: [PATCH] chore(types): consolidate traffic monitor types into shared globals --- .../home/enhanced-canvas-traffic-graph.tsx | 5 +- src/hooks/use-traffic-monitor.ts | 9 -- src/services/traffic-monitor-worker.ts | 6 -- src/types/{types.d.ts => global.d.ts} | 83 +++++++++++++++++++ src/types/traffic-monitor.ts | 81 ------------------ src/utils/traffic-sampler.ts | 6 -- 6 files changed, 84 insertions(+), 106 deletions(-) rename src/types/{types.d.ts => global.d.ts} (92%) delete mode 100644 src/types/traffic-monitor.ts diff --git a/src/components/home/enhanced-canvas-traffic-graph.tsx b/src/components/home/enhanced-canvas-traffic-graph.tsx index 9390b8457..e8aa255e1 100644 --- a/src/components/home/enhanced-canvas-traffic-graph.tsx +++ b/src/components/home/enhanced-canvas-traffic-graph.tsx @@ -12,10 +12,7 @@ import { } from "react"; import { useTranslation } from "react-i18next"; -import { - useTrafficGraphDataEnhanced, - type ITrafficDataPoint, -} from "@/hooks/use-traffic-monitor"; +import { useTrafficGraphDataEnhanced } from "@/hooks/use-traffic-monitor"; import { debugLog } from "@/utils/debug"; import parseTraffic from "@/utils/parse-traffic"; diff --git a/src/hooks/use-traffic-monitor.ts b/src/hooks/use-traffic-monitor.ts index 0f1291be6..852b53bb5 100644 --- a/src/hooks/use-traffic-monitor.ts +++ b/src/hooks/use-traffic-monitor.ts @@ -8,18 +8,9 @@ import { } from "react"; import { Traffic } from "tauri-plugin-mihomo-api"; -import type { - ISamplerStats, - ITrafficDataPoint, - ITrafficWorkerSnapshotMessage, - TrafficWorkerRequestMessage, - TrafficWorkerResponseMessage, -} from "@/types/traffic-monitor"; import { debugLog } from "@/utils/debug"; import { TrafficDataSampler, formatTrafficName } from "@/utils/traffic-sampler"; -export type { ITrafficDataPoint } from "@/types/traffic-monitor"; - // 引用计数管理器 class ReferenceCounter { private count = 0; diff --git a/src/services/traffic-monitor-worker.ts b/src/services/traffic-monitor-worker.ts index f88462f29..dcc096466 100644 --- a/src/services/traffic-monitor-worker.ts +++ b/src/services/traffic-monitor-worker.ts @@ -1,9 +1,3 @@ -import type { - ISamplingConfig, - ITrafficDataPoint, - ITrafficWorkerSnapshotMessage, - TrafficWorkerRequestMessage, -} from "../types/traffic-monitor"; import { TrafficDataSampler, formatTrafficName, diff --git a/src/types/types.d.ts b/src/types/global.d.ts similarity index 92% rename from src/types/types.d.ts rename to src/types/global.d.ts index 0ff7ea5d0..fd1c5ddc7 100644 --- a/src/types/types.d.ts +++ b/src/types/global.d.ts @@ -906,3 +906,86 @@ interface IWebDavConfig { username: string; password: string; } + +// Traffic monitor types +interface ITrafficDataPoint { + up: number; + down: number; + timestamp: number; + name: string; +} + +interface ISamplingConfig { + rawDataMinutes: number; + compressedDataMinutes: number; + compressionRatio: number; +} + +interface ISamplerStats { + rawBufferSize: number; + compressedBufferSize: number; + compressionQueueSize: number; + totalMemoryPoints: number; +} + +interface ITrafficWorkerInitMessage { + type: "init"; + config: ISamplingConfig & { + snapshotIntervalMs: number; + defaultRangeMinutes: number; + }; +} + +interface ITrafficWorkerAppendMessage { + type: "append"; + payload: { + up: number; + down: number; + timestamp?: number; + }; +} + +interface ITrafficWorkerClearMessage { + type: "clear"; +} + +interface ITrafficWorkerSetRangeMessage { + type: "setRange"; + minutes: number; +} + +interface ITrafficWorkerRequestSnapshotMessage { + type: "requestSnapshot"; +} + +type TrafficWorkerRequestMessage = + | ITrafficWorkerInitMessage + | ITrafficWorkerAppendMessage + | ITrafficWorkerClearMessage + | ITrafficWorkerSetRangeMessage + | ITrafficWorkerRequestSnapshotMessage; + +interface ITrafficWorkerSnapshotMessage { + type: "snapshot"; + dataPoints: ITrafficDataPoint[]; + availableDataPoints: ITrafficDataPoint[]; + samplerStats: ISamplerStats; + rangeMinutes: number; + lastTimestamp?: number; + reason: + | "init" + | "interval" + | "range-change" + | "request" + | "append-throttle" + | "clear"; +} + +interface ITrafficWorkerLogMessage { + type: "log"; + message: string; +} + +type TrafficWorkerResponseMessage = + | ITrafficWorkerSnapshotMessage + | ITrafficWorkerLogMessage; diff --git a/src/types/traffic-monitor.ts b/src/types/traffic-monitor.ts deleted file mode 100644 index d0b104517..000000000 --- a/src/types/traffic-monitor.ts +++ /dev/null @@ -1,81 +0,0 @@ -export interface ITrafficDataPoint { - up: number; - down: number; - timestamp: number; - name: string; -} - -export interface ISamplingConfig { - rawDataMinutes: number; - compressedDataMinutes: number; - compressionRatio: number; -} - -export interface ISamplerStats { - rawBufferSize: number; - compressedBufferSize: number; - compressionQueueSize: number; - totalMemoryPoints: number; -} - -export interface ITrafficWorkerInitMessage { - type: "init"; - config: ISamplingConfig & { - snapshotIntervalMs: number; - defaultRangeMinutes: number; - }; -} - -export interface ITrafficWorkerAppendMessage { - type: "append"; - payload: { - up: number; - down: number; - timestamp?: number; - }; -} - -export interface ITrafficWorkerClearMessage { - type: "clear"; -} - -export interface ITrafficWorkerSetRangeMessage { - type: "setRange"; - minutes: number; -} - -export interface ITrafficWorkerRequestSnapshotMessage { - type: "requestSnapshot"; -} - -export type TrafficWorkerRequestMessage = - | ITrafficWorkerInitMessage - | ITrafficWorkerAppendMessage - | ITrafficWorkerClearMessage - | ITrafficWorkerSetRangeMessage - | ITrafficWorkerRequestSnapshotMessage; - -export interface ITrafficWorkerSnapshotMessage { - type: "snapshot"; - dataPoints: ITrafficDataPoint[]; - availableDataPoints: ITrafficDataPoint[]; - samplerStats: ISamplerStats; - rangeMinutes: number; - lastTimestamp?: number; - reason: - | "init" - | "interval" - | "range-change" - | "request" - | "append-throttle" - | "clear"; -} - -export interface ITrafficWorkerLogMessage { - type: "log"; - message: string; -} - -export type TrafficWorkerResponseMessage = - | ITrafficWorkerSnapshotMessage - | ITrafficWorkerLogMessage; diff --git a/src/utils/traffic-sampler.ts b/src/utils/traffic-sampler.ts index a6eaba967..9b6ba90e8 100644 --- a/src/utils/traffic-sampler.ts +++ b/src/utils/traffic-sampler.ts @@ -1,9 +1,3 @@ -import type { - ISamplerStats, - ISamplingConfig, - ITrafficDataPoint, -} from "@/types/traffic-monitor"; - interface ICompressedDataPoint { up: number; down: number;