UNPKG

@capawesome/cli

Version:

The Capawesome Cloud Command Line Interface (CLI) to manage Live Updates and more.

68 lines (67 loc) 2.47 kB
import { AxiosError } from 'axios'; import { ZodError } from 'zod'; export class UserError extends Error { constructor(message) { super(message); this.name = 'UserError'; } } export const getCodeFromUnknownError = (error) => { if (error instanceof Error && 'code' in error && typeof error.code === 'string') { return error.code; } return undefined; }; export const getMessageFromUnknownError = (error) => { let message = 'An unknown error has occurred.'; if (error instanceof AxiosError) { message = getErrorMessageFromAxiosError(error); } else if (error instanceof ZodError) { message = getErrorMessageFromZodError(error); } else if (error instanceof Error) { message = error.message; } return message; }; const getErrorMessageFromAxiosError = (error) => { let message = 'An unknown network error has occurred.'; if (!error.response && (error.code === 'ENOTFOUND' || error.code === 'ECONNREFUSED' || error.code === 'ENETUNREACH' || error.message.includes('Network Error'))) { message = 'No connection could be established. Please check your internet connection and try again.'; } else if (error.response?.status === 401) { message = 'Your token is no longer valid. Please sign in again.'; } else if (error.response?.status === 500) { message = 'An internal server error has occurred. Please try again later.'; } else if (error.response?.status === 503) { message = 'The service is currently unavailable. Please try again later.'; } else if (error.response?.data?.message) { message = error.response?.data?.message; } else if (Array.isArray(error.response?.data?.error) && (error.response?.data).error[0]?.message) { message = (error.response?.data).error[0].message; } else if (error.response?.data?.error?.issues?.[0]?.message) { message = (error.response?.data).error.issues[0].message; } else if (error.response?.data && typeof error.response?.data === 'string') { message = error.response.data; } return message; }; const getErrorMessageFromZodError = (error) => { let message = 'An unknown validation error has occurred. Please check your input.'; const firstIssue = error.issues[0]; if (firstIssue) { message = firstIssue.message; } return message; };