import { BadRequestException, PipeTransform } from '@nestjs/common'; import { z } from 'zod'; /** Validates and converts a body or query with a schema from @kooltap/shared: `@Body(zod(schema))`. */ export class ZodPipe implements PipeTransform> { constructor(private readonly schema: S) {} transform(value: unknown): z.output { const result = this.schema.safeParse(value); if (!result.success) { throw new BadRequestException({ code: 'validation_error', message: z.prettifyError(result.error) }); } return result.data; } } export const zod = (schema: S) => new ZodPipe(schema);