| /** | |
| * lodash 3.0.6 (Custom Build) <https://lodash.com/> | |
| * Build: `lodash modularize exports="npm" -o ./` | |
| * Copyright jQuery Foundation and other contributors <https://jquery.org/> | |
| * 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 | |
| */ | |
| /** Used as references for various `Number` constants. */ | |
| var MAX_SAFE_INTEGER = 9007199254740991; | |
| /** `Object#toString` result references. */ | |
| var argsTag = '[object Arguments]', | |
| arrayTag = '[object Array]', | |
| boolTag = '[object Boolean]', | |
| dateTag = '[object Date]', | |
| errorTag = '[object Error]', | |
| funcTag = '[object Function]', | |
| mapTag = '[object Map]', | |
| numberTag = '[object Number]', | |
| objectTag = '[object Object]', | |
| regexpTag = '[object RegExp]', | |
| setTag = '[object Set]', | |
| stringTag = '[object String]', | |
| weakMapTag = '[object WeakMap]'; | |
| var arrayBufferTag = '[object ArrayBuffer]', | |
| dataViewTag = '[object DataView]', | |
| float32Tag = '[object Float32Array]', | |
| float64Tag = '[object Float64Array]', | |
| int8Tag = '[object Int8Array]', | |
| int16Tag = '[object Int16Array]', | |
| int32Tag = '[object Int32Array]', | |
| uint8Tag = '[object Uint8Array]', | |
| uint8ClampedTag = '[object Uint8ClampedArray]', | |
| uint16Tag = '[object Uint16Array]', | |
| uint32Tag = '[object Uint32Array]'; | |
| /** Used to identify `toStringTag` values of typed arrays. */ | |
| var typedArrayTags = {}; | |
| typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = | |
| typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = | |
| typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = | |
| typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = | |
| typedArrayTags[uint32Tag] = true; | |
| typedArrayTags[argsTag] = typedArrayTags[arrayTag] = | |
| typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = | |
| typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = | |
| typedArrayTags[errorTag] = typedArrayTags[funcTag] = | |
| typedArrayTags[mapTag] = typedArrayTags[numberTag] = | |
| typedArrayTags[objectTag] = typedArrayTags[regexpTag] = | |
| typedArrayTags[setTag] = typedArrayTags[stringTag] = | |
| typedArrayTags[weakMapTag] = false; | |
| /** Used for built-in method references. */ | |
| var objectProto = Object.prototype; | |
| /** | |
| * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) | |
| * of values. | |
| */ | |
| var objectToString = objectProto.toString; | |
| /** | |
| * Checks if `value` is a valid array-like length. | |
| * | |
| * **Note:** This function is loosely based on | |
| * [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). | |
| * | |
| * @static | |
| * @memberOf _ | |
| * @since 4.0.0 | |
| * @category Lang | |
| * @param {*} value The value to check. | |
| * @returns {boolean} Returns `true` if `value` is a valid length, | |
| * else `false`. | |
| * @example | |
| * | |
| * _.isLength(3); | |
| * // => true | |
| * | |
| * _.isLength(Number.MIN_VALUE); | |
| * // => false | |
| * | |
| * _.isLength(Infinity); | |
| * // => false | |
| * | |
| * _.isLength('3'); | |
| * // => false | |
| */ | |
| function isLength(value) { | |
| return typeof value == 'number' && | |
| value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; | |
| } | |
| /** | |
| * Checks if `value` is object-like. A value is object-like if it's not `null` | |
| * and has a `typeof` result of "object". | |
| * | |
| * @static | |
| * @memberOf _ | |
| * @since 4.0.0 | |
| * @category Lang | |
| * @param {*} value The value to check. | |
| * @returns {boolean} Returns `true` if `value` is object-like, else `false`. | |
| * @example | |
| * | |
| * _.isObjectLike({}); | |
| * // => true | |
| * | |
| * _.isObjectLike([1, 2, 3]); | |
| * // => true | |
| * | |
| * _.isObjectLike(_.noop); | |
| * // => false | |
| * | |
| * _.isObjectLike(null); | |
| * // => false | |
| */ | |
| function isObjectLike(value) { | |
| return !!value && typeof value == 'object'; | |
| } | |
| /** | |
| * Checks if `value` is classified as a typed array. | |
| * | |
| * @static | |
| * @memberOf _ | |
| * @since 3.0.0 | |
| * @category Lang | |
| * @param {*} value The value to check. | |
| * @returns {boolean} Returns `true` if `value` is correctly classified, | |
| * else `false`. | |
| * @example | |
| * | |
| * _.isTypedArray(new Uint8Array); | |
| * // => true | |
| * | |
| * _.isTypedArray([]); | |
| * // => false | |
| */ | |
| function isTypedArray(value) { | |
| return isObjectLike(value) && | |
| isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; | |
| } | |
| module.exports = isTypedArray; | |