File size: 681 Bytes
f0743f4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
/**
 * Normalizes an error-like object into an HTTP status and message.
 * Ensures we always respond with a valid numeric status to avoid UI hangs.
 */
export function normalizeHttpError(
  err: Error | { status?: number; message?: string } | unknown,
  fallbackStatus = 400,
) {
  let status = fallbackStatus;
  if (err && typeof err === 'object' && 'status' in err && typeof err.status === 'number') {
    status = err.status;
  }

  let message = 'An error occurred.';
  if (
    err &&
    typeof err === 'object' &&
    'message' in err &&
    typeof err.message === 'string' &&
    err.message.length > 0
  ) {
    message = err.message;
  }

  return { status, message };
}