UNPKG

@modern-kit/utils

Version:
48 lines (44 loc) 1.38 kB
import { isBoolean } from '../../validator/isBoolean/index.mjs'; import { isNumber } from '../../validator/isNumber/index.mjs'; import { isNil } from '../../validator/isNil/index.mjs'; import { isArray } from '../../validator/isArray/index.mjs'; import { isString } from '../../validator/isString/index.mjs'; import { isPlainObject } from '../../validator/isPlainObject/index.mjs'; import '../../validator/isReference/index.mjs'; import '../../validator/isPrimitive/index.mjs'; const isFalsyNumber = (value) => { return isNumber(value) && value === 0; }; const isFalsyString = (value) => { return isString(value) && value === ""; }; const isFalsyArray = (value) => { return isArray(value) && value.length === 0; }; const isFalsyObject = (value) => { return isPlainObject(value) && Object.keys(value).length === 0; }; const FALSY_CHECK_MAPPER = { number: isFalsyNumber, string: isFalsyString, array: isFalsyArray, object: isFalsyObject }; function pickFalsy(...falsyCheckList) { return function(value) { if (isNil(value)) { return true; } if (isNumber(value) && isNaN(value)) { return true; } if (isBoolean(value) && value === false) { return true; } return falsyCheckList.some( (falsyProp) => !!FALSY_CHECK_MAPPER[falsyProp](value) ); }; } export { pickFalsy }; //# sourceMappingURL=index.mjs.map