1.0.13 • Published 3 years ago

common-errors-middlewares v1.0.13

Weekly downloads
3
License
ISC
Repository
github
Last release
3 years ago

Common Middlewares and Errors

Common Middlewares and Errors is a Node js library which provides a clean structure for all your customized error handlers and middlewares..

Installation

Use the package manager npm

npm i common-errors-middlewares

Throwing Errors

import { BadRequestError } from 'common-errors-middlewares';

if(condition fails)
throw new BadRequestError('Invalid credentials');

Catching errors from middleware

// In your app.js file

import { errorHandler } from 'common-errors-middlewares';

app.use(errorHandler);

Error Types

ErrorsDescription
BadRequestErrorReturns Error message with status code 400
CustomErrorReturns Error Message with an extra Field value. Example : throw new CustomError('Error message', field? string);
DatabaseConnectionErrorReturns DB Error Message with status code 500. Example : throw new DatabaseConnectionError();
NotAuthorizedErrorReturns status code 401 with default "Not authorized" message. Example : throw new NotAuthorizedError();
NotFoundErrorReturns Status code 401 with default "Route not found" message. Example : throw new NotFoundError();
RequestValidationErrorReturn Status code 400 with invalid fields. Example : const errors = validationResult(req); throw new RequestValidationError(errors.array());

Middleware Types

MiddlewareDescription
currentUserChecks if current user session exists. Requires ( process.env.JWT and req.session.jwt)
errorHandlerCatches error for all error throws defined in error section
requireAuthIf current user does not exists requre auth
validateRequestValidate rules defined for request parameters through express-validator.

Example: [ body('email') .isEmail() .withMessage('Email must be valid'), body('password') .trim() .isLength({ min: 4, max: 20 }) .withMessage('Password must be between 4 and 20 characters')],validateRequest `

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.