import { NestInterceptor, ExecutionContext, CallHandler, Injectable } from '@nestjs/common'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; import { Response } from '../interfaces/api-response.interface'; @Injectable() export class TransformInterceptor<T> implements NestInterceptor<T, Response<T>> { intercept(ctx: ExecutionContext, next: CallHandler): Observable<Response<T>> { return next.handle().pipe( map((data) => ({ statusCode: ctx.switchToHttp().getResponse().statusCode, message: data?.message || 'Success response', data: data?.output ?? data ?? null, })), ); } }