(error: unknown, fallback = 'Operation failed')
| 183 | } |
| 184 | |
| 185 | export function generalizedErrorMessage(error: unknown, fallback = 'Operation failed'): string { |
| 186 | const message = error instanceof Error ? error.message : String(error); |
| 187 | const redacted = redactSecrets(message); |
| 188 | const lower = redacted.toLowerCase(); |
| 189 | if (lower.includes('timeout')) return 'Request timed out'; |
| 190 | if (lower.includes('429') || lower.includes('rate')) return 'Rate limit exceeded'; |
| 191 | if (lower.includes('401') || lower.includes('403') || isAuthenticationErrorText(lower)) |
| 192 | return 'Authentication failed'; |
| 193 | if (lower.includes('5') && /\b5\d\d\b/.test(lower)) return 'Provider returned an error'; |
| 194 | if ( |
| 195 | lower.includes('network') || |
| 196 | lower.includes('fetch') || |
| 197 | lower.includes('econn') || |
| 198 | lower.includes('enotfound') |
| 199 | ) |
| 200 | return 'Network error'; |
| 201 | return fallback; |
| 202 | } |
| 203 | |
| 204 | /** |
| 205 | * Chinese-locale companion to `generalizedErrorMessage()` (PR110b |
no test coverage detected