Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 71 lines 1.8 kB view raw
1import type { ZodIssue } from "zod"; 2 3import type { ErrorCode } from "./error-code"; 4 5export function statusToCode(status: number): ErrorCode { 6 switch (status) { 7 case 400: 8 return "BAD_REQUEST"; 9 case 401: 10 return "UNAUTHORIZED"; 11 case 402: 12 return "PAYMENT_REQUIRED"; 13 case 403: 14 return "FORBIDDEN"; 15 case 404: 16 return "NOT_FOUND"; 17 case 405: 18 return "METHOD_NOT_ALLOWED"; 19 case 409: 20 return "CONFLICT"; 21 case 422: 22 return "UNPROCESSABLE_ENTITY"; 23 case 500: 24 return "INTERNAL_SERVER_ERROR"; 25 default: 26 return "INTERNAL_SERVER_ERROR"; 27 } 28} 29 30export function codeToStatus(code: ErrorCode) { 31 switch (code) { 32 case "BAD_REQUEST": 33 return 400; 34 case "UNAUTHORIZED": 35 return 401; 36 case "PAYMENT_REQUIRED": 37 return 402; 38 case "FORBIDDEN": 39 return 403; 40 case "NOT_FOUND": 41 return 404; 42 case "METHOD_NOT_ALLOWED": 43 return 405; 44 case "CONFLICT": 45 return 409; 46 case "UNPROCESSABLE_ENTITY": 47 return 422; 48 case "INTERNAL_SERVER_ERROR": 49 return 500; 50 default: 51 return 500; 52 } 53} 54 55// Props to cal.com: https://github.com/calcom/cal.com/blob/5d325495a9c30c5a9d89fc2adfa620b8fde9346e/packages/lib/server/getServerErrorFromUnknown.ts#L17 56export function parseZodErrorIssues(issues: ZodIssue[]): string { 57 return issues 58 .map((i) => 59 i.code === "invalid_union" 60 ? i.errors.map((ue) => parseZodErrorIssues(ue)).join("; ") 61 : i.code === "unrecognized_keys" 62 ? i.message 63 : `${i.path.length ? `${i.code} in '${i.path}': ` : ""}${i.message}`, 64 ) 65 .join("; "); 66} 67 68export function redactError<TError extends Error | unknown>(err: TError) { 69 if (!(err instanceof Error)) return err; 70 console.error(`Type of Error: ${err.constructor}`); 71}