UNPKG

foop

Version:

interfaces that describe their intentions.

72 lines (69 loc) 5.44 kB
var EMPTY_STRING = require('../native/EMPTY_STRING') var size = require('../util/size') var isNullOrUndefined = require('./nullOrUndefined') var isObj = require('./objTypeof') /* prettier-ignore */ /** * Returns `true` if the given value is its type's empty value; * `false` otherwise. * * @since 5.0.0-beta.1 * @memberOf is * * @param {*} x value to check if empty * @return {boolean} * * @func * @fork v0.1.0 * @category Logic * @sig a -> Boolean * * {@link https://github.com/js-data/js-data/blob/v2/src/utils.js#L98 js-data-is-empty} * {@link https://github.com/wycats/handlebars.js/blob/master/lib/handlebars/utils.js#L85 handlebars-is-empty} * {@link https://github.com/bitovi/u/blob/master/js/object/isEmptyObject.js can-u-is-empty-object} * {@link https://github.com/jashkenas/underscore/blob/master/underscore.js#L1293 underscore-is-empty} * {@link https://github.com/ramda/ramda/issues/1228 ramda-is-empty} * @see {@link can-u-is-empty-object} * @see {@link underscore-is-empty} * @see {@link ramda-is-empty} * @see {@link handlebars-is-empty} * @see {@link js-data-is-empty} * @see empty * * @example * * isEmpty([1, 2, 3]); //=> false * isEmpty([]); //=> true * isEmpty(''); //=> true * isEmpty(null); //=> false * isEmpty({}); //=> true * isEmpty({length: 0}); //=> false * */ module.exports = function isEmpty(x) { if (x === EMPTY_STRING) { return true } else if (isNullOrUndefined(x)) { return false } else if (isObj(x)) { // @NOTE // for (const property in x) // return true // return false return size(x) === 0 } else { return false } // @NOTE old version // else return ( // // null|undefined = empty // // isNullOrUndefined(x) || // // '' = empty // // [] | {} = empty // keys(x).length === 0 // ) } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHkuanMiLCJzb3VyY2VzIjpbImVtcHR5LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEVNUFRZX1NUUklORyA9IHJlcXVpcmUoJy4uL25hdGl2ZS9FTVBUWV9TVFJJTkcnKVxuY29uc3Qgc2l6ZSA9IHJlcXVpcmUoJy4uL3V0aWwvc2l6ZScpXG5jb25zdCBpc051bGxPclVuZGVmaW5lZCA9IHJlcXVpcmUoJy4vbnVsbE9yVW5kZWZpbmVkJylcbmNvbnN0IGlzT2JqID0gcmVxdWlyZSgnLi9vYmpUeXBlb2YnKVxuXG4vKiBwcmV0dGllci1pZ25vcmUgKi9cbi8qKlxuICogUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGl0cyB0eXBlJ3MgZW1wdHkgdmFsdWU7XG4gKiBgZmFsc2VgIG90aGVyd2lzZS5cbiAqXG4gKiBAc2luY2UgNS4wLjAtYmV0YS4xXG4gKiBAbWVtYmVyT2YgaXNcbiAqXG4gKiBAcGFyYW0geyp9IHggdmFsdWUgdG8gY2hlY2sgaWYgZW1wdHlcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKlxuICogQGZ1bmNcbiAqIEBmb3JrIHYwLjEuMFxuICogQGNhdGVnb3J5IExvZ2ljXG4gKiBAc2lnIGEgLT4gQm9vbGVhblxuICpcbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vanMtZGF0YS9qcy1kYXRhL2Jsb2IvdjIvc3JjL3V0aWxzLmpzI0w5OCBqcy1kYXRhLWlzLWVtcHR5fVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9ibG9iL21hc3Rlci9saWIvaGFuZGxlYmFycy91dGlscy5qcyNMODUgaGFuZGxlYmFycy1pcy1lbXB0eX1cbiAqIHtAbGluayBodHRwczovL2dpdGh1Yi5jb20vYml0b3ZpL3UvYmxvYi9tYXN0ZXIvanMvb2JqZWN0L2lzRW1wdHlPYmplY3QuanMgY2FuLXUtaXMtZW1wdHktb2JqZWN0fVxuICoge0BsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9qYXNoa2VuYXMvdW5kZXJzY29yZS9ibG9iL21hc3Rlci91bmRlcnNjb3JlLmpzI0wxMjkzIHVuZGVyc2NvcmUtaXMtZW1wdHl9XG4gKiB7QGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3JhbWRhL3JhbWRhL2lzc3Vlcy8xMjI4IHJhbWRhLWlzLWVtcHR5fVxuICogQHNlZSB7QGxpbmsgY2FuLXUtaXMtZW1wdHktb2JqZWN0fVxuICogQHNlZSB7QGxpbmsgdW5kZXJzY29yZS1pcy1lbXB0eX1cbiAqIEBzZWUge0BsaW5rIHJhbWRhLWlzLWVtcHR5fVxuICogQHNlZSB7QGxpbmsgaGFuZGxlYmFycy1pcy1lbXB0eX1cbiAqIEBzZWUge0BsaW5rIGpzLWRhdGEtaXMtZW1wdHl9XG4gKiBAc2VlIGVtcHR5XG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIGlzRW1wdHkoWzEsIDIsIDNdKTsgICAvLz0+IGZhbHNlXG4gKiAgICAgIGlzRW1wdHkoW10pOyAgICAgICAgICAvLz0+IHRydWVcbiAqICAgICAgaXNFbXB0eSgnJyk7ICAgICAgICAgIC8vPT4gdHJ1ZVxuICogICAgICBpc0VtcHR5KG51bGwpOyAgICAgICAgLy89PiBmYWxzZVxuICogICAgICBpc0VtcHR5KHt9KTsgICAgICAgICAgLy89PiB0cnVlXG4gKiAgICAgIGlzRW1wdHkoe2xlbmd0aDogMH0pOyAvLz0+IGZhbHNlXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGlzRW1wdHkoeCkge1xuICBpZiAoeCA9PT0gRU1QVFlfU1RSSU5HKSB7XG4gICAgcmV0dXJuIHRydWVcbiAgfVxuICBlbHNlIGlmIChpc051bGxPclVuZGVmaW5lZCh4KSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGVsc2UgaWYgKGlzT2JqKHgpKSB7XG4gICAgLy8gQE5PVEVcbiAgICAvLyBmb3IgKGNvbnN0IHByb3BlcnR5IGluIHgpXG4gICAgLy8gICByZXR1cm4gdHJ1ZVxuICAgIC8vIHJldHVybiBmYWxzZVxuICAgIHJldHVybiBzaXplKHgpID09PSAwXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBATk9URSBvbGQgdmVyc2lvblxuICAvLyBlbHNlIHJldHVybiAoXG4gIC8vICAgLy8gbnVsbHx1bmRlZmluZWQgPSBlbXB0eVxuICAvLyAgIC8vIGlzTnVsbE9yVW5kZWZpbmVkKHgpIHx8XG4gIC8vICAgLy8gJycgPSBlbXB0eVxuICAvLyAgIC8vIFtdIHwge30gPSBlbXB0eVxuICAvLyAgIGtleXMoeCkubGVuZ3RoID09PSAwXG4gIC8vIClcbn1cbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLHdCQUF3QixDQUFDO0FBQ3REQSxHQUFLLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDcENBLEdBQUssQ0FBQyxpQkFBaUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLENBQUM7QUFDdERBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXdDcEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLE9BQU8sQ0FBQyxDQUFDLEVBQUU7RUFDbkMsSUFBSSxDQUFDLEtBQUssWUFBWSxFQUFFO0lBQ3RCLE9BQU8sSUFBSTtHQUNaO09BQ0ksSUFBSSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUM3QixPQUFPLEtBQUs7R0FDYjtPQUNJLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFOzs7OztJQUtqQixPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0dBQ3JCO09BQ0k7SUFDSCxPQUFPLEtBQUs7R0FDYjs7Ozs7Ozs7OztDQVVGOyJ9