/ opencodehub / cli / src / lib / api-error.ts
Swadhin Biswas feat(cli): expand command coverage and config support · 3/6/2026
7e372c1
31 lines · 1.0 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
export function parseApiErrorMessage(
  status: number,
  data: unknown,
  fallbackPrefix = "API error",
) {
  if (typeof data === "string" && data.trim()) return data.trim();
  if (!data || typeof data !== "object") return `${fallbackPrefix}: ${status}`;

  const record = data as Record<string, unknown>;
  const directMessage = record.message || record.error || record.detail;
  if (typeof directMessage === "string" && directMessage.trim()) {
    return directMessage.trim();
  }

  if (record.errors && Array.isArray(record.errors) && record.errors.length > 0) {
    const messages = record.errors
      .map((entry) => {
        if (typeof entry === "string") return entry;
        if (entry && typeof entry === "object") {
          const msg = (entry as Record<string, unknown>).message;
          if (typeof msg === "string") return msg;
        }
        return null;
      })
      .filter((entry): entry is string => !!entry);
    if (messages.length > 0) return messages.join("; ");
  }

  return `${fallbackPrefix}: ${status}`;
}