UNPKG

@chubbyts/chubbyts-http-error

Version:

Creates http error which can be catched and converted to error responses.

108 lines (107 loc) 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mapToHttpError = exports.createNetworkAuthenticationRequired = exports.createNotExtended = exports.createLoopDetected = exports.createInsufficientStorage = exports.createVariantAlsoNegotiates = exports.createHTTPVersionNotSupported = exports.createGatewayTimeout = exports.createServiceUnavailable = exports.createBadGateway = exports.createNotImplemented = exports.createInternalServerError = exports.createUnavailableForLegalReasons = exports.createRequestHeaderFieldsTooLarge = exports.createTooManyRequests = exports.createPreconditionRequired = exports.createUpgradeRequired = exports.createTooEarly = exports.createFailedDependency = exports.createLocked = exports.createUnprocessableEntity = exports.createMisdirectedRequest = exports.createImateapot = exports.createExpectationFailed = exports.createRangeNotSatisfiable = exports.createUnsupportedMediaType = exports.createRequestURITooLong = exports.createRequestEntityTooLarge = exports.createPreconditionFailed = exports.createLengthRequired = exports.createGone = exports.createConflict = exports.createRequestTimeout = exports.createProxyAuthenticationRequired = exports.createNotAcceptable = exports.createMethodNotAllowed = exports.createNotFound = exports.createForbidden = exports.createPaymentRequired = exports.createUnauthorized = exports.createBadRequest = exports.isHttpError = exports.HttpError = void 0; class HttpError extends Error { constructor(type, status, title, _httpError, data = {}) { super(title); this.type = type; this.status = status; this.title = title; this._httpError = _httpError; Object.entries(data).forEach(([key, value]) => { this[key] = value; }); } } exports.HttpError = HttpError; const isHttpError = (error) => { return error instanceof HttpError; }; exports.isHttpError = isHttpError; const createBadRequest = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.1', 400, 'Bad Request', 'BadRequest', data); exports.createBadRequest = createBadRequest; const createUnauthorized = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.2', 401, 'Unauthorized', 'Unauthorized', data); exports.createUnauthorized = createUnauthorized; const createPaymentRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.3', 402, 'Payment Required', 'PaymentRequired', data); exports.createPaymentRequired = createPaymentRequired; const createForbidden = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.4', 403, 'Forbidden', 'Forbidden', data); exports.createForbidden = createForbidden; const createNotFound = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.5', 404, 'Not Found', 'NotFound', data); exports.createNotFound = createNotFound; const createMethodNotAllowed = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.6', 405, 'Method Not Allowed', 'MethodNotAllowed', data); exports.createMethodNotAllowed = createMethodNotAllowed; const createNotAcceptable = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.7', 406, 'Not Acceptable', 'NotAcceptable', data); exports.createNotAcceptable = createNotAcceptable; const createProxyAuthenticationRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.8', 407, 'Proxy Authentication Required', 'ProxyAuthenticationRequired', data); exports.createProxyAuthenticationRequired = createProxyAuthenticationRequired; const createRequestTimeout = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.9', 408, 'Request Timeout', 'RequestTimeout', data); exports.createRequestTimeout = createRequestTimeout; const createConflict = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.10', 409, 'Conflict', 'Conflict', data); exports.createConflict = createConflict; const createGone = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.11', 410, 'Gone', 'Gone', data); exports.createGone = createGone; const createLengthRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.12', 411, 'Length Required', 'LengthRequired', data); exports.createLengthRequired = createLengthRequired; const createPreconditionFailed = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.13', 412, 'Precondition Failed', 'PreconditionFailed', data); exports.createPreconditionFailed = createPreconditionFailed; const createRequestEntityTooLarge = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.14', 413, 'Request Entity Too Large', 'RequestEntityTooLarge', data); exports.createRequestEntityTooLarge = createRequestEntityTooLarge; const createRequestURITooLong = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.15', 414, 'Request-URI Too Long', 'RequestURITooLong', data); exports.createRequestURITooLong = createRequestURITooLong; const createUnsupportedMediaType = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.16', 415, 'Unsupported Media Type', 'UnsupportedMediaType', data); exports.createUnsupportedMediaType = createUnsupportedMediaType; const createRangeNotSatisfiable = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.17', 416, 'Range Not Satisfiable', 'RangeNotSatisfiable', data); exports.createRangeNotSatisfiable = createRangeNotSatisfiable; const createExpectationFailed = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.4.18', 417, 'Expectation Failed', 'ExpectationFailed', data); exports.createExpectationFailed = createExpectationFailed; const createImateapot = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2324#section-2.3.2', 418, "I'm a teapot", 'Imateapot', data); exports.createImateapot = createImateapot; const createMisdirectedRequest = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc7540#section-9.1.2', 421, 'Misdirected Request', 'MisdirectedRequest', data); exports.createMisdirectedRequest = createMisdirectedRequest; const createUnprocessableEntity = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc4918#section-11.2', 422, 'Unprocessable Entity', 'UnprocessableEntity', data); exports.createUnprocessableEntity = createUnprocessableEntity; const createLocked = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc4918#section-11.3', 423, 'Locked', 'Locked', data); exports.createLocked = createLocked; const createFailedDependency = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc4918#section-11.4', 424, 'Failed Dependency', 'FailedDependency', data); exports.createFailedDependency = createFailedDependency; const createTooEarly = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc8470#section-5.2', 425, 'Too Early', 'TooEarly', data); exports.createTooEarly = createTooEarly; const createUpgradeRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.15', 426, 'Upgrade Required', 'UpgradeRequired', data); exports.createUpgradeRequired = createUpgradeRequired; const createPreconditionRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc6585#section-3', 428, 'Precondition Required', 'PreconditionRequired', data); exports.createPreconditionRequired = createPreconditionRequired; const createTooManyRequests = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc6585#section-4', 429, 'Too Many Requests', 'TooManyRequests', data); exports.createTooManyRequests = createTooManyRequests; const createRequestHeaderFieldsTooLarge = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc6585#section-7.3', 431, 'Request Header Fields Too Large', 'RequestHeaderFieldsTooLarge', data); exports.createRequestHeaderFieldsTooLarge = createRequestHeaderFieldsTooLarge; const createUnavailableForLegalReasons = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc7725#section-3', 451, 'Unavailable For Legal Reasons', 'UnavailableForLegalReasons', data); exports.createUnavailableForLegalReasons = createUnavailableForLegalReasons; const createInternalServerError = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.1', 500, 'Internal Server Error', 'InternalServerError', data); exports.createInternalServerError = createInternalServerError; const createNotImplemented = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.2', 501, 'Not Implemented', 'NotImplemented', data); exports.createNotImplemented = createNotImplemented; const createBadGateway = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.3', 502, 'Bad Gateway', 'BadGateway', data); exports.createBadGateway = createBadGateway; const createServiceUnavailable = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.4', 503, 'Service Unavailable', 'ServiceUnavailable', data); exports.createServiceUnavailable = createServiceUnavailable; const createGatewayTimeout = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.5', 504, 'Gateway Timeout', 'GatewayTimeout', data); exports.createGatewayTimeout = createGatewayTimeout; const createHTTPVersionNotSupported = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2616#section-10.5.6', 505, 'HTTP Version Not Supported', 'HTTPVersionNotSupported', data); exports.createHTTPVersionNotSupported = createHTTPVersionNotSupported; const createVariantAlsoNegotiates = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2295#section-8.1', 506, 'Variant Also Negotiates', 'VariantAlsoNegotiates', data); exports.createVariantAlsoNegotiates = createVariantAlsoNegotiates; const createInsufficientStorage = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc4918#section-11.5', 507, 'Insufficient Storage', 'InsufficientStorage', data); exports.createInsufficientStorage = createInsufficientStorage; const createLoopDetected = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc5842#section-7.2', 508, 'Loop Detected', 'LoopDetected', data); exports.createLoopDetected = createLoopDetected; const createNotExtended = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc2774#section-7', 510, 'Not Extended', 'NotExtended', data); exports.createNotExtended = createNotExtended; const createNetworkAuthenticationRequired = (data) => new HttpError('https://datatracker.ietf.org/doc/html/rfc6585#section-6', 511, 'Network Authentication Required', 'NetworkAuthenticationRequired', data); exports.createNetworkAuthenticationRequired = createNetworkAuthenticationRequired; const mapToHttpError = (e) => { return (0, exports.createInternalServerError)({ detail: 'A website error has occurred. Sorry for the temporary inconvenience.', cause: e, }); }; exports.mapToHttpError = mapToHttpError;