export class DeroError extends Error { status: number; constructor(message: any, status: number = 500, name?: string) { super(message); this.message = message; this.status = status; this.name = name || "HttpError"; }}
export class BadRequestError extends DeroError { constructor(message: any) { super(message, 400, "BadRequestError"); }}export class UnauthorizedError extends DeroError { constructor(message: any) { super(message, 401, "UnauthorizedError"); }}export class PaymentRequiredError extends DeroError { constructor(message: any) { super(message, 402, "PaymentRequiredError"); }}export class ForbiddenError extends DeroError { constructor(message: any) { super(message, 403, "ForbiddenError"); }}export class NotFoundError extends DeroError { constructor(message: any) { super(message, 404, "NotFoundError"); }}export class MethodNotAllowedError extends DeroError { constructor(message: any) { super(message, 405, "MethodNotAllowedError"); }}export class NotAcceptableError extends DeroError { constructor(message: any) { super(message, 406, "NotAcceptableError"); }}export class ProxyAuthRequiredError extends DeroError { constructor(message: any) { super(message, 407, "ProxyAuthRequiredError"); }}export class RequestTimeoutError extends DeroError { constructor(message: any) { super(message, 408, "RequestTimeoutError"); }}export class ConflictError extends DeroError { constructor(message: any) { super(message, 409, "ConflictError"); }}export class GoneError extends DeroError { constructor(message: any) { super(message, 410, "GoneError"); }}export class LengthRequiredError extends DeroError { constructor(message: any) { super(message, 411, "LengthRequiredError"); }}export class PreconditionFailedError extends DeroError { constructor(message: any) { super(message, 412, "PreconditionFailedError"); }}export class RequestEntityTooLargeError extends DeroError { constructor(message: any) { super(message, 413, "RequestEntityTooLargeError"); }}export class RequestURITooLongError extends DeroError { constructor(message: any) { super(message, 414, "RequestURITooLongError"); }}export class UnsupportedMediaTypeError extends DeroError { constructor(message: any) { super(message, 415, "UnsupportedMediaTypeError"); }}export class RequestedRangeNotSatisfiableError extends DeroError { constructor(message: any) { super(message, 416, "RequestedRangeNotSatisfiableError"); }}export class ExpectationFailedError extends DeroError { constructor(message: any) { super(message, 417, "ExpectationFailedError"); }}export class TeapotError extends DeroError { constructor(message: any) { super(message, 418, "TeapotError"); }}export class MisdirectedRequestError extends DeroError { constructor(message: any) { super(message, 421, "MisdirectedRequestError"); }}export class UnprocessableEntityError extends DeroError { constructor(message: any) { super(message, 422, "UnprocessableEntityError"); }}export class LockedError extends DeroError { constructor(message: any) { super(message, 423, "LockedError"); }}export class FailedDependencyError extends DeroError { constructor(message: any) { super(message, 424, "FailedDependencyError"); }}export class TooEarlyError extends DeroError { constructor(message: any) { super(message, 425, "TooEarlyError"); }}export class UpgradeRequiredError extends DeroError { constructor(message: any) { super(message, 426, "UpgradeRequiredError"); }}export class PreconditionRequiredError extends DeroError { constructor(message: any) { super(message, 428, "PreconditionRequiredError"); }}export class TooManyRequestsError extends DeroError { constructor(message: any) { super(message, 429, "TooManyRequestsError"); }}export class RequestHeaderFieldsTooLargeError extends DeroError { constructor(message: any) { super(message, 431, "RequestHeaderFieldsTooLargeError"); }}export class UnavailableForLegalReasonsError extends DeroError { constructor(message: any) { super(message, 451, "UnavailableForLegalReasonsError"); }}
export class InternalServerError extends DeroError { constructor(message: any) { super(message, 500, "InternalServerError"); }}export class NotImplementedError extends DeroError { constructor(message: any) { super(message, 501, "NotImplementedError"); }}export class BadGatewayError extends DeroError { constructor(message: any) { super(message, 502, "BadGatewayError"); }}export class ServiceUnavailableError extends DeroError { constructor(message: any) { super(message, 503, "ServiceUnavailableError"); }}export class GatewayTimeoutError extends DeroError { constructor(message: any) { super(message, 504, "GatewayTimeoutError"); }}export class HTTPVersionNotSupportedError extends DeroError { constructor(message: any) { super(message, 505, "HTTPVersionNotSupportedError"); }}export class VariantAlsoNegotiatesError extends DeroError { constructor(message: any) { super(message, 506, "VariantAlsoNegotiatesError"); }}export class InsufficientStorageError extends DeroError { constructor(message: any) { super(message, 507, "InsufficientStorageError"); }}export class LoopDetectedError extends DeroError { constructor(message: any) { super(message, 508, "LoopDetectedError"); }}export class NotExtendedError extends DeroError { constructor(message: any) { super(message, 510, "NotExtendedError"); }}export class NetworkAuthenticationRequiredError extends DeroError { constructor(message: any) { super(message, 511, "NetworkAuthenticationRequiredError"); }}export function getError(err: any, isStack: boolean = false) { let status = err.status || err.statusCode || err.code || 500; if (typeof status !== "number") status = 500; let stack = void 0; if (isStack) { let arr = err.stack ? err.stack.split("\n") : [""]; arr.shift(); stack = arr .filter((line: string | string[]) => line.indexOf("file://") !== -1) .map((line: string) => line.trim()); } return { status, message: err.message || "Something went wrong", name: err.name || "HttpError", stack, };}