Expand README with architecture and setup details
This commit is contained in:
101
src/domain/types.ts
Normal file
101
src/domain/types.ts
Normal file
@@ -0,0 +1,101 @@
|
||||
export type Protocol = 'TCP' | 'UDP';
|
||||
export type ProfileItemType = 'process' | 'folder' | 'exe';
|
||||
export type TargetKind = 'local' | 'external';
|
||||
export type ProxyProtocol = 'socks5' | 'http';
|
||||
export type ComponentId = 'control-app' | 'proxyfier' | 'singbox';
|
||||
export type ComponentState = 'installed' | 'missing' | 'stopped' | 'running' | 'error';
|
||||
export type ActivityLevel = 'info' | 'warning' | 'error' | 'success';
|
||||
|
||||
export interface ProfileItemInput {
|
||||
type: ProfileItemType | string;
|
||||
value: string;
|
||||
recursive?: boolean;
|
||||
}
|
||||
|
||||
export interface ProfileInput {
|
||||
id?: string;
|
||||
name: string;
|
||||
enabled?: boolean;
|
||||
targetId?: string;
|
||||
protocols?: string[];
|
||||
items?: ProfileItemInput[];
|
||||
}
|
||||
|
||||
export interface ProfileItem {
|
||||
type: ProfileItemType;
|
||||
value: string;
|
||||
recursive: boolean;
|
||||
}
|
||||
|
||||
export interface Profile {
|
||||
id: string;
|
||||
name: string;
|
||||
enabled: boolean;
|
||||
targetId: string;
|
||||
protocols: Protocol[];
|
||||
items: ProfileItem[];
|
||||
}
|
||||
|
||||
export interface TargetInput {
|
||||
id?: string;
|
||||
name: string;
|
||||
kind?: TargetKind | string;
|
||||
protocol?: ProxyProtocol | string;
|
||||
host: string;
|
||||
port: number;
|
||||
requiresComponent?: ComponentId | string;
|
||||
}
|
||||
|
||||
export interface Target {
|
||||
id: string;
|
||||
name: string;
|
||||
kind: TargetKind;
|
||||
protocol: ProxyProtocol;
|
||||
host: string;
|
||||
port: number;
|
||||
requiresComponent?: ComponentId;
|
||||
}
|
||||
|
||||
export interface ComponentStatus {
|
||||
id: ComponentId;
|
||||
name: string;
|
||||
state: ComponentState;
|
||||
installed: boolean;
|
||||
running: boolean;
|
||||
version?: string;
|
||||
path?: string;
|
||||
problems: string[];
|
||||
actions: string[];
|
||||
}
|
||||
|
||||
export interface LocalSingBoxConfig {
|
||||
subscriptionDisplayUrl?: string;
|
||||
hasSubscription: boolean;
|
||||
selectedServerTag?: string;
|
||||
listenHost: string;
|
||||
listenPort: number;
|
||||
serviceName: string;
|
||||
installRoot: string;
|
||||
updatedAt?: string;
|
||||
}
|
||||
|
||||
export interface SubscriptionServer {
|
||||
tag: string;
|
||||
type: string;
|
||||
server: string;
|
||||
serverPort: number;
|
||||
}
|
||||
|
||||
export interface SubscriptionCache {
|
||||
servers: SubscriptionServer[];
|
||||
userInfo: Record<string, number | string | boolean | null>;
|
||||
fetchedAt: string;
|
||||
}
|
||||
|
||||
export interface ActivityEntry {
|
||||
id: string;
|
||||
at: string;
|
||||
level: ActivityLevel;
|
||||
title: string;
|
||||
message: string;
|
||||
}
|
||||
Reference in New Issue
Block a user