@chubbyts/chubbyts-http-error
Version:
Creates http error which can be catched and converted to error responses.
108 lines (107 loc) • 11.3 kB
JavaScript
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;
;