chore(types): consolidate traffic monitor types into shared globals

This commit is contained in:
Slinetrac
2025-12-09 13:27:46 +08:00
parent 494e888b52
commit aa767695af
6 changed files with 84 additions and 106 deletions

View File

@@ -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";

View File

@@ -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;

View File

@@ -1,9 +1,3 @@
import type {
ISamplingConfig,
ITrafficDataPoint,
ITrafficWorkerSnapshotMessage,
TrafficWorkerRequestMessage,
} from "../types/traffic-monitor";
import {
TrafficDataSampler,
formatTrafficName,

View File

@@ -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;

View File

@@ -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;

View File

@@ -1,9 +1,3 @@
import type {
ISamplerStats,
ISamplingConfig,
ITrafficDataPoint,
} from "@/types/traffic-monitor";
interface ICompressedDataPoint {
up: number;
down: number;