export const HTTP_ERROR_STATUS_CODES = { 400: 400, // BAD_REQUEST 401: 401, // UNAUTHORIZED 402: 402, // PAYMENT_REQUIRED 403: 403, // FORBIDDEN 404: 404, // NOT_FOUND 405: 405, // METHOD_NOT_ALLOWED 406: 406, // NOT_ACCEPTABLE 407: 407, // PROXY_AUTHENTICATION_REQUIRED 408: 408, // REQUEST_TIMEOUT 409: 409, // CONFLICT 410: 410, // GONE 411: 411, // LENGTH_REQUIRED 412: 412, // PRECONDITION_FAILED 413: 413, // REQUEST_TOO_LONG 414: 414, // REQUEST_URI_TOO_LONG 415: 415, // UNSUPPORTED_MEDIA_TYPE 416: 416, // REQUESTED_RANGE_NOT_SATISFIABLE 417: 417, // EXPECTATION_FAILED 418: 418, // IM_A_TEAPOT 419: 419, // INSUFFICIENT_SPACE_ON_RESOURCE 420: 420, // METHOD_FAILURE 421: 421, // MISDIRECTED_REQUEST 422: 422, // UNPROCESSABLE_ENTITY 423: 423, // LOCKED 424: 424, // FAILED_DEPENDENCY 428: 428, // PRECONDITION_REQUIRED 429: 429, // TOO_MANY_REQUESTS 431: 431, // REQUEST_HEADER_FIELDS_TOO_LARGE 451: 451, // UNAVAILABLE_FOR_LEGAL_REASONS 500: 500, // INTERNAL_SERVER_ERROR 501: 501, // NOT_IMPLEMENTED 502: 502, // BAD_GATEWAY 503: 503, // SERVICE_UNAVAILABLE 504: 504, // GATEWAY_TIMEOUT 505: 505, // HTTP_VERSION_NOT_SUPPORTED 507: 507, // INSUFFICIENT_STORAGE 511: 511, // NETWORK_AUTHENTICATION_REQUIRED } as const; export type HttpErrorStatusCode = (typeof HTTP_ERROR_STATUS_CODES)[keyof typeof HTTP_ERROR_STATUS_CODES]; // --- Complete list from `http-status-codes` --- // 100: 'CONTINUE' // 101: 'SWITCHING_PROTOCOLS' // 102: 'PROCESSING' // 200: 'OK' // 201: 'CREATED' // 202: 'ACCEPTED' // 203: 'NON_AUTHORITATIVE_INFORMATION' // 204: 'NO_CONTENT' // 205: 'RESET_CONTENT' // 206: 'PARTIAL_CONTENT' // 207: 'MULTI_STATUS' // 300: 'MULTIPLE_CHOICES' // 301: 'MOVED_PERMANENTLY' // 302: 'MOVED_TEMPORARILY' // 303: 'SEE_OTHER' // 304: 'NOT_MODIFIED' // 305: 'USE_PROXY' // 307: 'TEMPORARY_REDIRECT' // 308: 'PERMANENT_REDIRECT' // 400: 'BAD_REQUEST' // 401: 'UNAUTHORIZED' // 402: 'PAYMENT_REQUIRED' // 403: 'FORBIDDEN' // 404: 'NOT_FOUND' // 405: 'METHOD_NOT_ALLOWED' // 406: 'NOT_ACCEPTABLE' // 407: 'PROXY_AUTHENTICATION_REQUIRED' // 408: 'REQUEST_TIMEOUT' // 409: 'CONFLICT' // 410: 'GONE' // 411: 'LENGTH_REQUIRED' // 412: 'PRECONDITION_FAILED' // 413: 'REQUEST_TOO_LONG' // 414: 'REQUEST_URI_TOO_LONG' // 415: 'UNSUPPORTED_MEDIA_TYPE' // 416: 'REQUESTED_RANGE_NOT_SATISFIABLE' // 417: 'EXPECTATION_FAILED' // 418: 'IM_A_TEAPOT' // 419: 'INSUFFICIENT_SPACE_ON_RESOURCE' // 420: 'METHOD_FAILURE' // 421: 'MISDIRECTED_REQUEST' // 422: 'UNPROCESSABLE_ENTITY' // 423: 'LOCKED' // 424: 'FAILED_DEPENDENCY' // 428: 'PRECONDITION_REQUIRED' // 429: 'TOO_MANY_REQUESTS' // 431: 'REQUEST_HEADER_FIELDS_TOO_LARGE' // 451: 'UNAVAILABLE_FOR_LEGAL_REASONS' // 500: 'INTERNAL_SERVER_ERROR' // 501: 'NOT_IMPLEMENTED' // 502: 'BAD_GATEWAY' // 503: 'SERVICE_UNAVAILABLE' // 504: 'GATEWAY_TIMEOUT' // 505: 'HTTP_VERSION_NOT_SUPPORTED' // 507: 'INSUFFICIENT_STORAGE' // 511: 'NETWORK_AUTHENTICATION_REQUIRED' export type HttpErrorStatusCodes = (typeof HTTP_ERROR_STATUS_CODES)[keyof typeof HTTP_ERROR_STATUS_CODES]; export function isValidHttpStatusCode( value: number, ): value is HttpErrorStatusCode { return value in HTTP_ERROR_STATUS_CODES; }