@buildery/nest-exception-handling
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

Nest Logo

A progressive Node.js framework for building efficient and scalable server-side applications.

NPM Version Package License NPM Downloads CircleCI Coverage Discord Backers on Open Collective Sponsors on Open Collective Support us

Description

Nestjs Exception handling implementation. Includes:

  • Handler's chain mechanism
  • Custom exception to inherit from
  • Implemented Nest JS Validation Exception handler

Exception structure:

    {
        code: "ERROR:<ENTITY>-<CODE_MESSAGE>"
        status: 500,
        title: "Error!",
        message: 'This was screwed',
        body: { any info you like }
    }

Nest framework TypeScript starter repository.

Use

installation

$ npm install @asemin/nestjs-exception-handling

Handler creation example

Class must extend ExceptionHandler and implement handle method. Method must return HandlerExceptionDto filled.

export class MongoExceptionHandler extends ExceptionHandler{
    handle(exception: any): HandledExceptionDto {
        if ( !(exception instanceof MongoError) )
            return this.next?.handle(exception);

        switch (exception.code) {
            case 11000:
                return new HandledExceptionDto(getException(API_ERROR_CODES.DATABASE.DUPLICATE));
        }

        return null;
    }
}

handlers chain creation

Each member must extend ExceptionHandler

export const handlersChain = [
    new MongoExceptionHandler(),
    new ValidationExceptionHandler(),
    new CustomExceptionHandler(),
    new HttpExceptionHandler()
];

Nestjs exception filter configuration. main.ts:

    const exceptionFilter = new ExceptionFilter(
        <ExceptionHandler>createExceptionHandlersChain(handlersChain)
    );

    app.useGlobalFilters(exceptionFilter);

Custom exception use

throwException

Use one of the codes. Fill free to put any information to body (second param) If there are no code suitable - throw any exception type manually.

throwException(API_ERROR_CODES.COMMON.EMPTY_PARAM, {method: 'getByPermissionAndPermissionSets', fields: {permissionId, permissionSetIds}})

getException info

const {code, status, message} = getException(API_ERROR_CODES.COMMON.UNKNOWN);

Package Sidebar

Install

npm i @buildery/nest-exception-handling

Weekly Downloads

3

Version

1.0.2

License

ISC

Unpacked Size

133 kB

Total Files

100

Last publish

Collaborators

  • karpov-dev
  • anton.semin