26 lines
680 B
TypeScript
26 lines
680 B
TypeScript
import { ArgumentMetadata, Injectable, PipeTransform } from '@nestjs/common';
|
|
import { plainToClass } from 'class-transformer';
|
|
|
|
@Injectable()
|
|
export class SanitizePipe implements PipeTransform {
|
|
transform(value: any, metadata: ArgumentMetadata) {
|
|
if (
|
|
!(value instanceof Object) ||
|
|
value instanceof Buffer ||
|
|
value instanceof Array
|
|
) {
|
|
return value;
|
|
}
|
|
const constructorFunction = metadata.metatype;
|
|
if (!constructorFunction || value instanceof constructorFunction) {
|
|
return value;
|
|
}
|
|
try {
|
|
return plainToClass(constructorFunction, value);
|
|
} catch (err) {
|
|
console.error(err);
|
|
throw err;
|
|
}
|
|
}
|
|
}
|