@akala/core
Version:
180 lines • 10.7 kB
JavaScript
/**
* Enumeration of standard HTTP status codes with descriptive documentation.
*/
export var HttpStatusCode;
(function (HttpStatusCode) {
/** Continue (100) - The server has received the request headers */
HttpStatusCode[HttpStatusCode["Continue"] = 100] = "Continue";
/** Switching Protocols (101) - The server is switching protocols */
HttpStatusCode[HttpStatusCode["SwitchingProtocols"] = 101] = "SwitchingProtocols";
/** Processing (102) - The server is processing the request */
HttpStatusCode[HttpStatusCode["Processing"] = 102] = "Processing";
/** Early Hints (103) - Preload hinting information */
HttpStatusCode[HttpStatusCode["EarlyHints"] = 103] = "EarlyHints";
/** OK (200) - Standard success response */
HttpStatusCode[HttpStatusCode["OK"] = 200] = "OK";
/** Created (201) - Resource created successfully */
HttpStatusCode[HttpStatusCode["Created"] = 201] = "Created";
/** Accepted (202) - Request accepted for processing */
HttpStatusCode[HttpStatusCode["Accepted"] = 202] = "Accepted";
/** Non-Authoritative Information (203) - Response from cache or third party */
HttpStatusCode[HttpStatusCode["NonAuthoritativeInformation"] = 203] = "NonAuthoritativeInformation";
/** No Content (204) - Successful with no body */
HttpStatusCode[HttpStatusCode["NoContent"] = 204] = "NoContent";
/** Reset Content (205) - Client should reset document view */
HttpStatusCode[HttpStatusCode["ResetContent"] = 205] = "ResetContent";
/** Partial Content (206) - Partial content response */
HttpStatusCode[HttpStatusCode["PartialContent"] = 206] = "PartialContent";
/** Multi-Status (207) - Multiple status codes for WebDAV */
HttpStatusCode[HttpStatusCode["MultiStatus"] = 207] = "MultiStatus";
/** Already Reported (208) - WebDAV binding members listed */
HttpStatusCode[HttpStatusCode["AlreadyReported"] = 208] = "AlreadyReported";
/** IM Used (226) - Instance manipulation applied */
HttpStatusCode[HttpStatusCode["IMUsed"] = 226] = "IMUsed";
/** Multiple Choices (300) - Multiple redirect options */
HttpStatusCode[HttpStatusCode["MultipleChoices"] = 300] = "MultipleChoices";
/** Moved Permanently (301) - Resource permanently moved */
HttpStatusCode[HttpStatusCode["MovedPermanently"] = 301] = "MovedPermanently";
/** Found (302) - Temporary redirect */
HttpStatusCode[HttpStatusCode["Found"] = 302] = "Found";
/** See Other (303) - Redirect via GET */
HttpStatusCode[HttpStatusCode["SeeOther"] = 303] = "SeeOther";
/** Not Modified (304) - Cached response valid */
HttpStatusCode[HttpStatusCode["NotModified"] = 304] = "NotModified";
/** Use Proxy (305) - Use proxy specified */
HttpStatusCode[HttpStatusCode["UseProxy"] = 305] = "UseProxy";
/** Temporary Redirect (307) - Temporary redirection */
HttpStatusCode[HttpStatusCode["TemporaryRedirect"] = 307] = "TemporaryRedirect";
/** Permanent Redirect (308) - Permanent redirection */
HttpStatusCode[HttpStatusCode["PermanentRedirect"] = 308] = "PermanentRedirect";
/** Bad Request (400) - Malformed request syntax */
HttpStatusCode[HttpStatusCode["BadRequest"] = 400] = "BadRequest";
/** Unauthorized (401) - Authentication required */
HttpStatusCode[HttpStatusCode["Unauthorized"] = 401] = "Unauthorized";
/** Payment Required (402) - Payment required */
HttpStatusCode[HttpStatusCode["PaymentRequired"] = 402] = "PaymentRequired";
/** Forbidden (403) - Insufficient permissions */
HttpStatusCode[HttpStatusCode["Forbidden"] = 403] = "Forbidden";
/** Not Found (404) - Resource not found */
HttpStatusCode[HttpStatusCode["NotFound"] = 404] = "NotFound";
/** Method Not Allowed (405) - Unsupported HTTP method */
HttpStatusCode[HttpStatusCode["MethodNotAllowed"] = 405] = "MethodNotAllowed";
/** Not Acceptable (406) - Can't satisfy accept headers */
HttpStatusCode[HttpStatusCode["NotAcceptable"] = 406] = "NotAcceptable";
/** Proxy Authentication Required (407) - Proxy auth needed */
HttpStatusCode[HttpStatusCode["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired";
/** Request Timeout (408) - Server timed out waiting */
HttpStatusCode[HttpStatusCode["RequestTimeout"] = 408] = "RequestTimeout";
/** Conflict (409) - Resource state conflict */
HttpStatusCode[HttpStatusCode["Conflict"] = 409] = "Conflict";
/** Gone (410) - Resource permanently unavailable */
HttpStatusCode[HttpStatusCode["Gone"] = 410] = "Gone";
/** Length Required (411) - Content-Length missing */
HttpStatusCode[HttpStatusCode["LengthRequired"] = 411] = "LengthRequired";
/** Precondition Failed (412) - Server precondition failed */
HttpStatusCode[HttpStatusCode["PreconditionFailed"] = 412] = "PreconditionFailed";
/** Payload Too Large (413) - Request entity too large */
HttpStatusCode[HttpStatusCode["PayloadTooLarge"] = 413] = "PayloadTooLarge";
/** URI Too Long (414) - Request URI too long */
HttpStatusCode[HttpStatusCode["URITooLong"] = 414] = "URITooLong";
/** Unsupported Media Type (415) - Unsupported content type */
HttpStatusCode[HttpStatusCode["UnsupportedMediaType"] = 415] = "UnsupportedMediaType";
/** Range Not Satisfiable (416) - Can't satisfy range request */
HttpStatusCode[HttpStatusCode["RangeNotSatisfiable"] = 416] = "RangeNotSatisfiable";
/** Expectation Failed (417) - Can't meet Expect header */
HttpStatusCode[HttpStatusCode["ExpectationFailed"] = 417] = "ExpectationFailed";
/** I'm a teapot (418) - April Fools joke code */
HttpStatusCode[HttpStatusCode["IAmATeapot"] = 418] = "IAmATeapot";
/** Misdirected Request (421) - Wrong server path */
HttpStatusCode[HttpStatusCode["MisdirectedRequest"] = 421] = "MisdirectedRequest";
/** Unprocessable Entity (422) - Semantic errors */
HttpStatusCode[HttpStatusCode["UnprocessableEntity"] = 422] = "UnprocessableEntity";
/** Locked (423) - WebDAV resource locked */
HttpStatusCode[HttpStatusCode["Locked"] = 423] = "Locked";
/** Failed Dependency (424) - WebDAV dependency failed */
HttpStatusCode[HttpStatusCode["FailedDependency"] = 424] = "FailedDependency";
/** Too Early (425) - Risk of replay request */
HttpStatusCode[HttpStatusCode["TooEarly"] = 425] = "TooEarly";
/** Upgrade Required (426) - Protocol upgrade needed */
HttpStatusCode[HttpStatusCode["UpgradeRequired"] = 426] = "UpgradeRequired";
/** Precondition Required (428) - Conditional request required */
HttpStatusCode[HttpStatusCode["PreconditionRequired"] = 428] = "PreconditionRequired";
/** Too Many Requests (429) - Rate limiting */
HttpStatusCode[HttpStatusCode["TooManyRequests"] = 429] = "TooManyRequests";
/** Request Header Fields Too Large (431) - Headers too large */
HttpStatusCode[HttpStatusCode["RequestHeaderFieldsTooLarge"] = 431] = "RequestHeaderFieldsTooLarge";
/** Unavailable For Legal Reasons (451) - Legal restriction */
HttpStatusCode[HttpStatusCode["UnavailableForLegalReasons"] = 451] = "UnavailableForLegalReasons";
/** Internal Server Error (500) - Generic server error */
HttpStatusCode[HttpStatusCode["InternalServerError"] = 500] = "InternalServerError";
/** NotImplemented (501) - Unsupported functionality */
HttpStatusCode[HttpStatusCode["NotImplemented"] = 501] = "NotImplemented";
/** Bad Gateway (502) - Invalid upstream response */
HttpStatusCode[HttpStatusCode["BadGateway"] = 502] = "BadGateway";
/** Service Unavailable (503) - Temporary overload */
HttpStatusCode[HttpStatusCode["ServiceUnavailable"] = 503] = "ServiceUnavailable";
/** Gateway Timeout (504) - Upstream timeout */
HttpStatusCode[HttpStatusCode["GatewayTimeout"] = 504] = "GatewayTimeout";
/** HTTP Version Not Supported (505) - Unsupported version */
HttpStatusCode[HttpStatusCode["HTTPVersionNotSupported"] = 505] = "HTTPVersionNotSupported";
/** Variant Also Negotiates (506) - Content negotiation error */
HttpStatusCode[HttpStatusCode["VariantAlsoNegotiates"] = 506] = "VariantAlsoNegotiates";
/** Insufficient Storage (507) - WebDAV storage full */
HttpStatusCode[HttpStatusCode["InsufficientStorage"] = 507] = "InsufficientStorage";
/** Loop Detected (508) - Infinite loop detected */
HttpStatusCode[HttpStatusCode["LoopDetected"] = 508] = "LoopDetected";
/** Not Extended (510) - Further extensions needed */
HttpStatusCode[HttpStatusCode["NotExtended"] = 510] = "NotExtended";
/** Network Authentication Required (511) - Network auth required */
HttpStatusCode[HttpStatusCode["NetworkAuthenticationRequired"] = 511] = "NetworkAuthenticationRequired";
})(HttpStatusCode || (HttpStatusCode = {}));
/**
* Error class that includes a status code.
* @class
* @property {number} statusCode - The status code associated with the error.
*/
export class ErrorWithStatus extends Error {
statusCode;
/**
* Creates an instance of ErrorWithStatus.
* @param {HttpStatusCode | number} statusCode - The HTTP status code.
* @param {string} [message] - Optional error message. If omitted, a default message is generated based on the statusCode.
*/
constructor(statusCode, message, name, cause) {
super(message || getMessageFromStatusCode(statusCode), { cause: cause });
this.statusCode = statusCode;
if (name)
this.name = name;
}
}
export default ErrorWithStatus;
/**
* Generates a default error message based on the provided HTTP status code.
* @param {HttpStatusCode} statusCode - The HTTP status code.
* @returns {string} - The default error message.
*/
export function getMessageFromStatusCode(statusCode) {
switch (statusCode) {
case HttpStatusCode.BadRequest:
case HttpStatusCode.MethodNotAllowed:
return 'Invalid operation';
case HttpStatusCode.Unauthorized:
return 'Unauthorized access';
case HttpStatusCode.Forbidden:
return 'Forbidden';
case HttpStatusCode.NotFound:
return 'Not found';
case HttpStatusCode.NotAcceptable:
return 'Not acceptable';
case HttpStatusCode.RequestTimeout:
return 'Timeout';
case HttpStatusCode.Conflict:
case HttpStatusCode.Locked:
case HttpStatusCode.InternalServerError:
case HttpStatusCode.NotImplemented:
case HttpStatusCode.ServiceUnavailable:
case HttpStatusCode.InsufficientStorage:
return HttpStatusCode[statusCode];
}
}
//# sourceMappingURL=errorWithStatus.js.map