Skip to content

Commit c3d7f3f

Browse files
authored
Merge pull request #15 from storyofams/feat/package-loader
chore: skip validation when class-validator/transformer is not installed
2 parents dbf2d9b + 4954a27 commit c3d7f3f

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

lib/internals/classValidator.ts

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
1-
import { ClassConstructor, plainToClass } from 'class-transformer';
2-
import { validate } from 'class-validator';
1+
import type { ClassConstructor } from 'class-transformer';
32
import { BadRequestException } from '../exceptions';
43
import { flattenValidationErrors } from './getClassValidatorError';
4+
import { loadPackage } from './loadPackage';
55

66
export async function validateObject(cls: ClassConstructor<any>, value: Record<string, string>): Promise<any> {
7-
const bodyValue = plainToClass(cls, value, {
7+
const classValidator = loadPackage('class-validator');
8+
if (!classValidator) {
9+
return value;
10+
}
11+
12+
const classTransformer = loadPackage('class-transformer');
13+
if (!classTransformer) {
14+
return value;
15+
}
16+
17+
const bodyValue = classTransformer.plainToClass(cls, value, {
818
enableImplicitConversion: true
919
});
10-
const validationErrors = await validate(bodyValue, {
20+
const validationErrors = await classValidator.validate(bodyValue, {
1121
enableDebugMessages: process.env.NODE_ENV === 'development'
1222
});
1323

lib/internals/loadPackage.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
export function loadPackage(name: string): any {
2+
try {
3+
return require(name);
4+
} catch {
5+
return false;
6+
}
7+
}

0 commit comments

Comments
 (0)