1. define valibot pipe globally
it'll be initialize ValibotValidationPipe internally
@Module({
imports: [
ValibotModule.forRoot({
disableErrorMessages: true,
}),
],
})
export class AppModule {}
or
import { ValibotValidationPipe } from 'nestjs-valibot';
@Module({
providers: [
{
provide: APP_PIPE,
useClass: ValibotValidationPipe,
},
],
})
export class AppModule {}
or
// main.ts
app.useGlobalPipes(new ValibotValidationPipe());
2. create DTO
// app.module.ts
import * as v from 'valibot';
import { createDto } from 'nestjs-valibot';
const schema = v.object({
page: v.number(),
});
export class GetRowDto extends createDto(schema) {}
3. use it
import { GetRowDto } from './app.dto';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Post()
getPage(@Body() { page }: GetRowDto) {
return page;
}
}
4. using onto frontend
try {
const data = new GetRowDto(input);
} catch(err: ValiError) {}
const { issues, success } = safeParse(GetRowDto.schema);
- [x] create pipe to connect valibot output to nestjs
- [x] create module that is customizable