import type { IpRule } from './api'; const MAX_IPS = 200; /** 从表单生成 IpRule,未选模式或内容为空时返回 null */ export function buildIpRule(mode: '' | 'allow' | 'block', text: string): IpRule | null { if (mode !== 'allow' && mode !== 'block') return null; const ips = text .split(/[\n,;,]+/u) .map(s => s.trim()) .filter(Boolean) .slice(0, MAX_IPS); if (ips.length === 0) return null; return { mode, ips }; } export function parseIpRuleText(json: string | null | undefined): { mode: '' | 'allow' | 'block'; text: string } { if (!json) return { mode: '', text: '' }; try { const r = JSON.parse(json) as IpRule; if (r.mode !== 'allow' && r.mode !== 'block') return { mode: '', text: '' }; return { mode: r.mode, text: (r.ips ?? []).join('\n') }; } catch { return { mode: '', text: '' }; } }