import { CallHandler, ExecutionContext, Injectable, NestInterceptor, } from '@nestjs/common'; import { Reflector } from '@nestjs/core'; import { map, Observable } from 'rxjs'; export interface StandardApiResponse { success: boolean; statusCode: number; path: string; timestamp: string; data: T; } @Injectable() export class ResponseInterceptor implements NestInterceptor> { constructor(private readonly reflector: Reflector) {} intercept( context: ExecutionContext, next: CallHandler, ): Observable> { const http = context.switchToHttp(); const response = http.getResponse(); const request = http.getRequest(); return next.handle().pipe( map((data) => ({ success: true, statusCode: response.statusCode, path: request.url, timestamp: new Date().toISOString(), data, })), ); } }