| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- // noinspection ES6ConvertVarToLetConst
- export default function isEmptyable(value) {
- return !_isNil &&
- (looksLikeArray(value) ||
- looksLikeMap(value) ||
- isPrototype(value) ||
- isKeyedObject(value)
- )
- function looksLikeArray(value) {
- return _isArrayLike(value) && (_isArray(value) || typeof value == "string" || typeof value.splice == "function" || _isBuffer(value) || _isTypedArray(value) || _isArguments(value))
- }
- function looksLikeMap(value) {
- const tag = getTag(value)
- const mapTag = "[object Map]"
- const setTag = "[object Set]"
- return (tag === mapTag) || (tag === setTag)
- }
- function isKeyedObject(value) {
- return _isObject(value) && (_keys(value).length > 0)
- }
- // lodash internals
- function isPrototype(value) {
- const objectProto = Object.prototype
- const Ctor = value && value.constructor
- const proto = (typeof Ctor === "function" && Ctor.prototype) || objectProto
- return value === proto
- }
- function getTag(value) {
- const nullTag = "[object Null]"
- const symToStringTag = Symbol ? Symbol.toStringTag : undefined
- const undefinedTag = "[object Undefined]"
- const objectProto = Object.prototype
- const hasOwnProperty = objectProto.hasOwnProperty
- const nativeObjectToString = objectProto.toString
- if (value == null) {
- return value === undefined ? undefinedTag : nullTag
- }
- return symToStringTag && symToStringTag in Object(value)
- ? getRawTag(value)
- : objectToString(value)
- function getRawTag(value) {
- const isOwn = hasOwnProperty.call(value, symToStringTag)
- const tag = value[symToStringTag]
- try {
- value[symToStringTag] = undefined
- var unmasked = true
- } catch (e) {
- }
- const result = nativeObjectToString.call(value)
- if (unmasked) {
- if (isOwn) {
- value[symToStringTag] = tag
- } else {
- delete value[symToStringTag]
- }
- }
- return result
- }
- function objectToString(value) {
- return nativeObjectToString.call(value)
- }
- }
- }
|