lib/shared/interceptors/dto.interceptor.ts
An interceptor to transform plain JavaScript objects into instances of a specified DTO class.
Methods |
constructor(serializer)
|
||||
Parameters :
|
intercept | |||||||||
intercept(context: ExecutionContext, next: CallHandler)
|
|||||||||
Parameters :
Returns :
any
|
import {
CallHandler,
ExecutionContext,
Injectable,
NestInterceptor,
} from "@nestjs/common";
import { map } from "rxjs";
import { plainToInstance } from "class-transformer";
/**
* An interceptor to transform plain JavaScript objects into instances of a specified DTO class.
* @template T - The DTO class to use for transformation.
*/
@Injectable()
export class DtoInterceptor<T> implements NestInterceptor {
constructor(private readonly serializer: new () => T) {}
intercept(context: ExecutionContext, next: CallHandler) {
return next
.handle()
.pipe(map((data) => plainToInstance(this.serializer, data)));
}
}