@eddaic/nestjs-decorators
Version:
Additional decorators intended for use with NestJS framework.
46 lines (45 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.toBoolean = toBoolean;
exports.ToBoolean = ToBoolean;
const class_transformer_1 = require("class-transformer");
/**
* Converts falsy values `null`, `undefined`, `0`, `false` and empty strings
* to false. Otherwise the value is returned as true
* @param value
* @returns
*/
function toBoolean(value) {
if (value === null || value === undefined) {
return false;
}
else if (typeof value === 'boolean') {
return value;
}
else if (typeof value === 'string') {
return !['false', '0', ''].includes(value.trim());
}
else if (typeof value === 'number') {
return value !== 0;
}
else if (typeof value === 'bigint') {
return value !== 0n;
}
else if (typeof value === 'object') {
return true;
}
else {
return false;
}
}
/**
* Transform a boolean value or leave undefined if not present
* @param field - the property name of the value to transform in the object
* @returns PropertyDecorator
*/
function ToBoolean(field) {
return (0, class_transformer_1.Transform)(({ obj = {} }) => typeof obj === 'object' && field in obj
? // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
toBoolean(obj[field])
: undefined);
}