export const protocols = [ "shadowsocks", "vmess", "vless", "trojan", "hysteria", "tuic", "anytls", "socks", "naive", "http", "mieru", ] as const; // Global label map for display; fallback to raw value if missing export const LABELS = { // transport tcp: "TCP", udp: "UDP", websocket: "WebSocket", grpc: "gRPC", mkcp: "mKCP", httpupgrade: "HTTP Upgrade", xhttp: "XHTTP", // security none: "NONE", tls: "TLS", reality: "Reality", // fingerprint chrome: "Chrome", firefox: "Firefox", safari: "Safari", ios: "IOS", android: "Android", edge: "edge", "360": "360", qq: "QQ", // multiplex low: "Low", middle: "Middle", high: "High", } as const; // Flat arrays for enum-like sets export const SS_CIPHERS = [ "aes-128-gcm", "aes-192-gcm", "aes-256-gcm", "chacha20-ietf-poly1305", "2022-blake3-aes-128-gcm", "2022-blake3-aes-256-gcm", "2022-blake3-chacha20-poly1305", ] as const; export const TRANSPORTS = { vmess: ["tcp", "websocket", "grpc"] as const, vless: ["tcp", "websocket", "grpc", "mkcp", "httpupgrade", "xhttp"] as const, trojan: ["tcp", "websocket", "grpc"] as const, mieru: ["tcp", "udp"] as const, } as const; export const SECURITY = { shadowsocks: ["none", "http", "tls"] as const, vmess: ["none", "tls"] as const, vless: ["none", "tls", "reality"] as const, trojan: ["tls"] as const, hysteria: ["tls"] as const, tuic: ["tls"] as const, anytls: ["none", "tls", "reality"] as const, naive: ["none", "tls"] as const, http: ["none", "tls"] as const, } as const; export const FLOWS = { vless: ["none", "xtls-rprx-vision"] as const, } as const; export const TUIC_UDP_RELAY_MODES = ["native", "quic"] as const; export const TUIC_CONGESTION = ["bbr", "cubic", "new_reno"] as const; export const XHTTP_MODES = [ "auto", "packet-up", "stream-up", "stream-one", ] as const; export const ENCRYPTION_TYPES = ["none", "mlkem768x25519plus"] as const; export const ENCRYPTION_MODES = ["native", "xorpub", "random"] as const; export const ENCRYPTION_RTT = ["0rtt", "1rtt"] as const; export const FINGERPRINTS = [ "chrome", "firefox", "safari", "ios", "android", "edge", "360", "qq", ] as const; export const CERT_MODES = ["none", "http", "dns", "self"] as const; export const multiplexLevels = ["none", "low", "middle", "high"] as const; export function getLabel(value: string): string { const label = (LABELS as Record)[value]; return label ?? value.toUpperCase(); }