/** * Checks if a given value is considered valid based on its type. * * @returns A boolean indicating whether the value is valid. * * The validation rules are as follows: * - `null` or `undefined` values are considered invalid. * - Strings are valid if they are not empty after trimming whitespace. * - Booleans are valid only if they are `true`. * - Numbers are valid if they are non-negative. * - Objects are valid if they have at least one property. * - All other types are considered valid by default. * @param values */ export function isValid(...values: any[]): boolean { if (values.length === 0) { return false; } for (const value of values) { if (!validateSingleValue(value)) { return false; } } return true; } function validateSingleValue(value: any): boolean { if (value === null || value === undefined) { return false; } if (Array.isArray(value)) { return value.length > 0; } switch (typeof value) { case 'string': return value.trim().length > 0; case 'boolean': return value; case 'number': return Number.isFinite(value) && value >= 0; case 'object': return Object.keys(value).length > 0; default: return true; } }