@modern-kit/utils
Version:
48 lines (44 loc) • 1.38 kB
JavaScript
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