@ebec/http
TypeScript icon, indicating that this package has built-in type declarations

2.3.0 • Public • Published

@ebec/http 🥁

npm version main codecov Conventional Commits

A library that provides extensible ES6 HTTP error classes that define basic information about the error.

Table of Contents

Installation

npm install @ebec/http --save

Usage

The usage is pretty easy, just import one of the client or server error classes and use them in throw- & catch- statements.

Basic

import {
    InternalServerError,
    NotFoundError
} from "@ebec/http";

const clientError = new NotFoundError();

console.log(clientError.statusCode);
// 404

console.log(clientError.logMessage);
// false

console.log(clientError.code);
// NOT_FOUND

// ------------------------------------

const serverError = new InternalServerError({
    logLevel: 'warning'
});

console.log(clientError.statusCode);
// 500

console.log(clientError.logMessage);
// true

console.log(clientError.code);
// INTERNAL_SERVER_ERROR

console.log(clientError.logLevel);
// warning

Another way to use the predefined error classes is to extend them, with own options.

Extend

import {
    Options,
    mergeOptions,
    NotFoundError
} from "@ebec/http";

class UserNotFound extends NotFoundError {
    constructor() {
        super({
            statusMessage: 'The user was not found.',
            code: 'USER_NOT_FOUND'
        });
    }
}

Classes

The following HTTP classes are predefined:

Base

  • HTTPError
  • ClientError
  • ServerError

Client

  • 400 BadRequestError
  • 401 UnauthorizedError
  • 403 ForbiddenError
  • 404 NotFoundError
  • 405 MethodNotAllowedError
  • 406 NotAcceptableError
  • 407 ProxyAuthenticationRequiredError
  • 408 RequestTimeoutError
  • 409 ConflictError
  • 410 GoneError
  • 411 LengthRequiredError
  • 412 PreconditionFailedError
  • 413 RequestEntityTooLargeError
  • 414 RequestUriTooLongError
  • 415 UnsupportedMediaTypeError
  • 416 RequestRangeNotSatisfiedError
  • 417 ExpectationFailedError
  • 418 ImATeapotError
  • 420 EnhanceYourCalmError
  • 422 UnprocessableEntityError
  • 423 LockedError
  • 424 FailedDependencyError
  • 424 UnorderedCollectionError
  • 426 UpgradeRequiredError
  • 428 PreconditionRequiredError
  • 429 TooManyRequestError
  • 431 RequestHeaderFieldsTooLargeError
  • 444 NoResponseError
  • 449 RetryWithError
  • 450 BlockedByWindowsParentError
  • 499 ClientClosedRequestError

Server

  • 500 InternalServerError
  • 501 NotImplementedError
  • 502 BadGatewayError
  • 503 ServiceUnavailableError
  • 504 GatewayTimeoutError
  • 505 HTTPVersionNotSupportedError
  • 506 VariantAlsoNegotiates
  • 507 InsufficientStorageError
  • 508 LoopDetectedError
  • 509 BandwidthLimitExceededError
  • 510 NotExtendedError
  • 511 NetworkAuthenticationRequiredError

Utils

isHTTPError

This method determines whether it is a client or server error.

import { isHTTPError, NotFoundError } from "@ebec/http";

const error = new NotFoundError();
console.log(isHTTPError(error));
// true

isClientError

This method determines whether it is a client error.

import { isClientError, NotFoundError } from "@ebec/http";

const error = new NotFoundError();
console.log(isClientError(error));
// true

isServerError

This method determines whether it is a server error.

import { isServerError, NotFoundError } from "@ebec/http";

const error = new NotFoundError();
console.log(isServerError(error));
// false

License

Made with 💚

Published under MIT License.

Package Sidebar

Install

npm i @ebec/http

Weekly Downloads

482

Version

2.3.0

License

MIT

Unpacked Size

186 kB

Total Files

121

Last publish

Collaborators

  • tada5hi