* 迁移旧版配置到新版 * 旧版: { enabled: boolean, url: string } * 新版: { mode: ProxyMode, url: string }
(data: Record<string, unknown>)
| 41 | * 新版: { mode: ProxyMode, url: string } |
| 42 | */ |
| 43 | function migrateOldConfig(data: Record<string, unknown>): ProxyConfig { |
| 44 | // 如果是旧版配置(有 enabled 字段,没有 mode 字段) |
| 45 | if ('enabled' in data && !('mode' in data)) { |
| 46 | const enabled = Boolean(data.enabled) |
| 47 | const url = String(data.url || '') |
| 48 | return { |
| 49 | mode: enabled && url ? 'manual' : 'system', // 旧版关闭的改为跟随系统 |
| 50 | url: url, |
| 51 | } |
| 52 | } |
| 53 | // 新版配置 |
| 54 | const mode = data.mode as ProxyMode |
| 55 | if (!['off', 'system', 'manual'].includes(mode)) { |
| 56 | return { ...DEFAULT_CONFIG } |
| 57 | } |
| 58 | return { |
| 59 | mode: mode, |
| 60 | url: String(data.url || ''), |
| 61 | } |
| 62 | } |
| 63 | |
| 64 | /** |
| 65 | * 加载代理配置 |