You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							156 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
	
	
							156 lines
						
					
					
						
							4.1 KiB
						
					
					
				/**
 | 
						|
 * Lodash (Custom Build) <https://lodash.com/>
 | 
						|
 * Build: `lodash modularize exports="npm" -o ./`
 | 
						|
 * Copyright JS Foundation and other contributors <https://js.foundation/>
 | 
						|
 * Released under MIT license <https://lodash.com/license>
 | 
						|
 * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
 | 
						|
 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
 | 
						|
 */
 | 
						|
 | 
						|
/** `Object#toString` result references. */
 | 
						|
var asyncTag = '[object AsyncFunction]',
 | 
						|
    funcTag = '[object Function]',
 | 
						|
    genTag = '[object GeneratorFunction]',
 | 
						|
    nullTag = '[object Null]',
 | 
						|
    proxyTag = '[object Proxy]',
 | 
						|
    undefinedTag = '[object Undefined]';
 | 
						|
 | 
						|
/** Detect free variable `global` from Node.js. */
 | 
						|
var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
 | 
						|
 | 
						|
/** Detect free variable `self`. */
 | 
						|
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
 | 
						|
 | 
						|
/** Used as a reference to the global object. */
 | 
						|
var root = freeGlobal || freeSelf || Function('return this')();
 | 
						|
 | 
						|
/** Used for built-in method references. */
 | 
						|
var objectProto = Object.prototype;
 | 
						|
 | 
						|
/** Used to check objects for own properties. */
 | 
						|
var hasOwnProperty = objectProto.hasOwnProperty;
 | 
						|
 | 
						|
/**
 | 
						|
 * Used to resolve the
 | 
						|
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 | 
						|
 * of values.
 | 
						|
 */
 | 
						|
var nativeObjectToString = objectProto.toString;
 | 
						|
 | 
						|
/** Built-in value references. */
 | 
						|
var Symbol = root.Symbol,
 | 
						|
    symToStringTag = Symbol ? Symbol.toStringTag : undefined;
 | 
						|
 | 
						|
/**
 | 
						|
 * The base implementation of `getTag` without fallbacks for buggy environments.
 | 
						|
 *
 | 
						|
 * @private
 | 
						|
 * @param {*} value The value to query.
 | 
						|
 * @returns {string} Returns the `toStringTag`.
 | 
						|
 */
 | 
						|
function baseGetTag(value) {
 | 
						|
  if (value == null) {
 | 
						|
    return value === undefined ? undefinedTag : nullTag;
 | 
						|
  }
 | 
						|
  return (symToStringTag && symToStringTag in Object(value))
 | 
						|
    ? getRawTag(value)
 | 
						|
    : objectToString(value);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 | 
						|
 *
 | 
						|
 * @private
 | 
						|
 * @param {*} value The value to query.
 | 
						|
 * @returns {string} Returns the raw `toStringTag`.
 | 
						|
 */
 | 
						|
function getRawTag(value) {
 | 
						|
  var isOwn = hasOwnProperty.call(value, symToStringTag),
 | 
						|
      tag = value[symToStringTag];
 | 
						|
 | 
						|
  try {
 | 
						|
    value[symToStringTag] = undefined;
 | 
						|
    var unmasked = true;
 | 
						|
  } catch (e) {}
 | 
						|
 | 
						|
  var result = nativeObjectToString.call(value);
 | 
						|
  if (unmasked) {
 | 
						|
    if (isOwn) {
 | 
						|
      value[symToStringTag] = tag;
 | 
						|
    } else {
 | 
						|
      delete value[symToStringTag];
 | 
						|
    }
 | 
						|
  }
 | 
						|
  return result;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Converts `value` to a string using `Object.prototype.toString`.
 | 
						|
 *
 | 
						|
 * @private
 | 
						|
 * @param {*} value The value to convert.
 | 
						|
 * @returns {string} Returns the converted string.
 | 
						|
 */
 | 
						|
function objectToString(value) {
 | 
						|
  return nativeObjectToString.call(value);
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Checks if `value` is classified as a `Function` object.
 | 
						|
 *
 | 
						|
 * @static
 | 
						|
 * @memberOf _
 | 
						|
 * @since 0.1.0
 | 
						|
 * @category Lang
 | 
						|
 * @param {*} value The value to check.
 | 
						|
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 | 
						|
 * @example
 | 
						|
 *
 | 
						|
 * _.isFunction(_);
 | 
						|
 * // => true
 | 
						|
 *
 | 
						|
 * _.isFunction(/abc/);
 | 
						|
 * // => false
 | 
						|
 */
 | 
						|
function isFunction(value) {
 | 
						|
  if (!isObject(value)) {
 | 
						|
    return false;
 | 
						|
  }
 | 
						|
  // The use of `Object#toString` avoids issues with the `typeof` operator
 | 
						|
  // in Safari 9 which returns 'object' for typed arrays and other constructors.
 | 
						|
  var tag = baseGetTag(value);
 | 
						|
  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * Checks if `value` is the
 | 
						|
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 | 
						|
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 | 
						|
 *
 | 
						|
 * @static
 | 
						|
 * @memberOf _
 | 
						|
 * @since 0.1.0
 | 
						|
 * @category Lang
 | 
						|
 * @param {*} value The value to check.
 | 
						|
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 | 
						|
 * @example
 | 
						|
 *
 | 
						|
 * _.isObject({});
 | 
						|
 * // => true
 | 
						|
 *
 | 
						|
 * _.isObject([1, 2, 3]);
 | 
						|
 * // => true
 | 
						|
 *
 | 
						|
 * _.isObject(_.noop);
 | 
						|
 * // => true
 | 
						|
 *
 | 
						|
 * _.isObject(null);
 | 
						|
 * // => false
 | 
						|
 */
 | 
						|
function isObject(value) {
 | 
						|
  var type = typeof value;
 | 
						|
  return value != null && (type == 'object' || type == 'function');
 | 
						|
}
 | 
						|
 | 
						|
module.exports = isFunction;
 |