index.ts 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { z } from 'zod';
  2. import { BlackholeOutboundSettingsSchema } from './blackhole';
  3. import { AmneziaWGOutboundSettingsSchema } from './amneziawg';
  4. import { DNSOutboundSettingsSchema } from './dns';
  5. import { FreedomOutboundSettingsSchema } from './freedom';
  6. import { HttpOutboundSettingsSchema } from './http';
  7. import { HysteriaOutboundSettingsSchema } from './hysteria';
  8. import { LoopbackOutboundSettingsSchema } from './loopback';
  9. import { ShadowsocksOutboundSettingsSchema } from './shadowsocks';
  10. import { SocksOutboundSettingsSchema } from './socks';
  11. import { TrojanOutboundSettingsSchema } from './trojan';
  12. import { VlessOutboundSettingsSchema } from './vless';
  13. import { VmessOutboundSettingsSchema } from './vmess';
  14. import { WireguardOutboundSettingsSchema } from './wireguard';
  15. export * from './blackhole';
  16. export * from './amneziawg';
  17. export * from './dns';
  18. export * from './freedom';
  19. export * from './http';
  20. export * from './hysteria';
  21. export * from './loopback';
  22. export * from './shadowsocks';
  23. export * from './socks';
  24. export * from './trojan';
  25. export * from './vless';
  26. export * from './vmess';
  27. export * from './wireguard';
  28. export const OutboundSettingsSchema = z.discriminatedUnion('protocol', [
  29. z.object({ protocol: z.literal('vmess'), settings: VmessOutboundSettingsSchema }),
  30. z.object({ protocol: z.literal('vless'), settings: VlessOutboundSettingsSchema }),
  31. z.object({ protocol: z.literal('trojan'), settings: TrojanOutboundSettingsSchema }),
  32. z.object({ protocol: z.literal('shadowsocks'), settings: ShadowsocksOutboundSettingsSchema }),
  33. z.object({ protocol: z.literal('wireguard'), settings: WireguardOutboundSettingsSchema }),
  34. z.object({ protocol: z.literal('amneziawg'), settings: AmneziaWGOutboundSettingsSchema }),
  35. z.object({ protocol: z.literal('hysteria'), settings: HysteriaOutboundSettingsSchema }),
  36. z.object({ protocol: z.literal('http'), settings: HttpOutboundSettingsSchema }),
  37. z.object({ protocol: z.literal('socks'), settings: SocksOutboundSettingsSchema }),
  38. z.object({ protocol: z.literal('freedom'), settings: FreedomOutboundSettingsSchema }),
  39. z.object({ protocol: z.literal('blackhole'), settings: BlackholeOutboundSettingsSchema }),
  40. z.object({ protocol: z.literal('dns'), settings: DNSOutboundSettingsSchema }),
  41. z.object({ protocol: z.literal('loopback'), settings: LoopbackOutboundSettingsSchema }),
  42. ]);
  43. export type OutboundSettings = z.infer<typeof OutboundSettingsSchema>;