UNPKG

@eddaic/nestjs-decorators

Version:

Additional decorators intended for use with NestJS framework.

46 lines (45 loc) 1.36 kB
"use strict"; 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); }