Files
nest/packages/common/pipes/default-value.pipe.ts
Micael Levi (lab) de83c0c960 feat(common,microservices): add isNumber shared util
Also, add another test for `isString` utility, to clarify that it must
return `false` for strings made by `String` constructor.
2021-12-26 18:39:56 -04:00

31 lines
750 B
TypeScript

import { Injectable } from '../decorators/core/injectable.decorator';
import {
ArgumentMetadata,
PipeTransform,
} from '../interfaces/features/pipe-transform.interface';
import { isNil, isNumber } from '../utils/shared.utils';
/**
* Defines the built-in DefaultValue Pipe
*
* @see [Built-in Pipes](https://docs.nestjs.com/pipes#built-in-pipes)
*
* @publicApi
*/
@Injectable()
export class DefaultValuePipe<T = any, R = any>
implements PipeTransform<T, T | R>
{
constructor(private readonly defaultValue: R) {}
transform(value?: T, _metadata?: ArgumentMetadata): T | R {
if (
isNil(value) ||
(isNumber(value) && isNaN(value as unknown as number))
) {
return this.defaultValue;
}
return value;
}
}