@modern-kit/utils
Version:
50 lines (45 loc) • 1.58 kB
JavaScript
;
var validatorIsBoolean = require('../../validator/isBoolean/index.cjs');
var validatorIsNumber = require('../../validator/isNumber/index.cjs');
var validatorIsNil = require('../../validator/isNil/index.cjs');
var validatorIsArray = require('../../validator/isArray/index.cjs');
var validatorIsString = require('../../validator/isString/index.cjs');
var validatorIsPlainObject = require('../../validator/isPlainObject/index.cjs');
require('../../validator/isReference/index.cjs');
require('../../validator/isPrimitive/index.cjs');
const isFalsyNumber = (value) => {
return validatorIsNumber.isNumber(value) && value === 0;
};
const isFalsyString = (value) => {
return validatorIsString.isString(value) && value === "";
};
const isFalsyArray = (value) => {
return validatorIsArray.isArray(value) && value.length === 0;
};
const isFalsyObject = (value) => {
return validatorIsPlainObject.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 (validatorIsNil.isNil(value)) {
return true;
}
if (validatorIsNumber.isNumber(value) && isNaN(value)) {
return true;
}
if (validatorIsBoolean.isBoolean(value) && value === false) {
return true;
}
return falsyCheckList.some(
(falsyProp) => !!FALSY_CHECK_MAPPER[falsyProp](value)
);
};
}
exports.pickFalsy = pickFalsy;
//# sourceMappingURL=index.cjs.map