UNPKG

2.22 kBJavaScriptView Raw
1import baseGetTag from './_baseGetTag.js';
2import isLength from './isLength.js';
3import isObjectLike from './isObjectLike.js';
4
5/** `Object#toString` result references. */
6var argsTag = '[object Arguments]',
7 arrayTag = '[object Array]',
8 boolTag = '[object Boolean]',
9 dateTag = '[object Date]',
10 errorTag = '[object Error]',
11 funcTag = '[object Function]',
12 mapTag = '[object Map]',
13 numberTag = '[object Number]',
14 objectTag = '[object Object]',
15 regexpTag = '[object RegExp]',
16 setTag = '[object Set]',
17 stringTag = '[object String]',
18 weakMapTag = '[object WeakMap]';
19
20var arrayBufferTag = '[object ArrayBuffer]',
21 dataViewTag = '[object DataView]',
22 float32Tag = '[object Float32Array]',
23 float64Tag = '[object Float64Array]',
24 int8Tag = '[object Int8Array]',
25 int16Tag = '[object Int16Array]',
26 int32Tag = '[object Int32Array]',
27 uint8Tag = '[object Uint8Array]',
28 uint8ClampedTag = '[object Uint8ClampedArray]',
29 uint16Tag = '[object Uint16Array]',
30 uint32Tag = '[object Uint32Array]';
31
32/** Used to identify `toStringTag` values of typed arrays. */
33var typedArrayTags = {};
34typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
35typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
36typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
37typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
38typedArrayTags[uint32Tag] = true;
39typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
40typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
41typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
42typedArrayTags[errorTag] = typedArrayTags[funcTag] =
43typedArrayTags[mapTag] = typedArrayTags[numberTag] =
44typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
45typedArrayTags[setTag] = typedArrayTags[stringTag] =
46typedArrayTags[weakMapTag] = false;
47
48/**
49 * The base implementation of `_.isTypedArray` without Node.js optimizations.
50 *
51 * @private
52 * @param {*} value The value to check.
53 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
54 */
55function baseIsTypedArray(value) {
56 return isObjectLike(value) &&
57 isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
58}
59
60export default baseIsTypedArray;