UNPKG

@akala/core

Version:
180 lines 10.7 kB
/** * 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