45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
|
/**
|
||
|
* Copyright (c) 2013-present, Facebook, Inc.
|
||
|
* All rights reserved.
|
||
|
*
|
||
|
* This source code is licensed under the BSD-style license found in the
|
||
|
* LICENSE file in the root directory of this source tree. An additional grant
|
||
|
* of patent rights can be found in the PATENTS file in the same directory.
|
||
|
*
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
'use strict';
|
||
|
|
||
|
/* eslint-disable fb-www/typeof-undefined */
|
||
|
/* eslint-disable no-unused-vars */
|
||
|
|
||
|
var invariant = require('./invariant');
|
||
|
|
||
|
/**
|
||
|
* Checks if a value is empty.
|
||
|
*/
|
||
|
function isEmpty(value) {
|
||
|
if (Array.isArray(value)) {
|
||
|
return value.length === 0;
|
||
|
} else if (typeof value === 'object') {
|
||
|
if (value) {
|
||
|
!(!isIterable(value) || value.size === undefined) ? process.env.NODE_ENV !== 'production' ? invariant(false, 'isEmpty() does not support iterable collections.') : invariant(false) : void 0;
|
||
|
for (var _ in value) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
return true;
|
||
|
} else {
|
||
|
return !value;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function isIterable(value) {
|
||
|
if (typeof Symbol === 'undefined') {
|
||
|
return false;
|
||
|
}
|
||
|
return value[Symbol.iterator];
|
||
|
}
|
||
|
|
||
|
module.exports = isEmpty;
|