@elsikora/nestjs-crud-automator
Version:
A library for automating the creation of CRUD operations in NestJS.
71 lines (68 loc) • 3.67 kB
JavaScript
import { __decorate } from '../external/tslib/tslib.es6.js';
import { randomUUID } from 'node:crypto';
import { Injectable, HttpStatus, HttpException, InternalServerErrorException } from '@nestjs/common';
import { ThrottlerException } from '@nestjs/throttler';
import { catchError } from 'rxjs/operators';
let CorrelationIDResponseBodyInterceptor = class CorrelationIDResponseBodyInterceptor {
intercept(context, next) {
return next.handle().pipe(catchError((error) => {
if (error instanceof ThrottlerException) {
const request = context.switchToHttp().getRequest();
let correlationId = request.headers["x-correlation-id"];
const errorResponse = error.getResponse();
correlationId ??= randomUUID();
let customErrorResponse = {};
customErrorResponse.statusCode = HttpStatus.TOO_MANY_REQUESTS;
if (typeof errorResponse === "object" && errorResponse != null) {
customErrorResponse = { ...errorResponse };
}
else {
customErrorResponse.message = errorResponse;
}
customErrorResponse.error = "Too Many Requests";
customErrorResponse.timestamp = Date.now();
customErrorResponse.correlationID = correlationId;
throw new HttpException(customErrorResponse, error.getStatus());
}
else if (error instanceof HttpException) {
const request = context.switchToHttp().getRequest();
let correlationId = request.headers["x-correlation-id"];
const errorResponse = error.getResponse();
correlationId ??= randomUUID();
let customErrorResponse = {};
if (typeof errorResponse === "object" && errorResponse != null) {
customErrorResponse = { ...errorResponse };
}
else {
customErrorResponse.message = errorResponse;
}
customErrorResponse.correlationID = correlationId;
customErrorResponse.timestamp = Date.now();
throw new HttpException(customErrorResponse, error.getStatus());
}
else {
const request = context.switchToHttp().getRequest();
let correlationId = request.headers["x-correlation-id"];
correlationId ??= randomUUID();
if (!(error instanceof Error)) {
error = new InternalServerErrorException("Unknown error");
}
const internalError = error;
const errorResponse = "Internal server error";
const customErrorResponse = {};
customErrorResponse.statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
customErrorResponse.message = errorResponse;
customErrorResponse.error = "Internal server error";
customErrorResponse.timestamp = Date.now();
customErrorResponse.correlationID = correlationId;
const status = "getStatus" in internalError && typeof internalError.getStatus === "function" ? internalError.getStatus() : HttpStatus.INTERNAL_SERVER_ERROR;
throw new HttpException(customErrorResponse, status);
}
}));
}
};
CorrelationIDResponseBodyInterceptor = __decorate([
Injectable()
], CorrelationIDResponseBodyInterceptor);
export { CorrelationIDResponseBodyInterceptor };
//# sourceMappingURL=correlation-id-response-body.interceptor.js.map