| 'use strict'; | 
|   | 
| var forEach = require('for-each'); | 
| var availableTypedArrays = require('available-typed-arrays'); | 
| var callBound = require('call-bind/callBound'); | 
|   | 
| var $toString = callBound('Object.prototype.toString'); | 
| var hasToStringTag = require('has-tostringtag/shams')(); | 
| var gOPD = require('gopd'); | 
|   | 
| var g = typeof globalThis === 'undefined' ? global : globalThis; | 
| var typedArrays = availableTypedArrays(); | 
|   | 
| var $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) { | 
|     for (var i = 0; i < array.length; i += 1) { | 
|         if (array[i] === value) { | 
|             return i; | 
|         } | 
|     } | 
|     return -1; | 
| }; | 
| var $slice = callBound('String.prototype.slice'); | 
| var toStrTags = {}; | 
| var getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof'); | 
| if (hasToStringTag && gOPD && getPrototypeOf) { | 
|     forEach(typedArrays, function (typedArray) { | 
|         var arr = new g[typedArray](); | 
|         if (Symbol.toStringTag in arr) { | 
|             var proto = getPrototypeOf(arr); | 
|             var descriptor = gOPD(proto, Symbol.toStringTag); | 
|             if (!descriptor) { | 
|                 var superProto = getPrototypeOf(proto); | 
|                 descriptor = gOPD(superProto, Symbol.toStringTag); | 
|             } | 
|             toStrTags[typedArray] = descriptor.get; | 
|         } | 
|     }); | 
| } | 
|   | 
| var tryTypedArrays = function tryAllTypedArrays(value) { | 
|     var anyTrue = false; | 
|     forEach(toStrTags, function (getter, typedArray) { | 
|         if (!anyTrue) { | 
|             try { | 
|                 anyTrue = getter.call(value) === typedArray; | 
|             } catch (e) { /**/ } | 
|         } | 
|     }); | 
|     return anyTrue; | 
| }; | 
|   | 
| module.exports = function isTypedArray(value) { | 
|     if (!value || typeof value !== 'object') { return false; } | 
|     if (!hasToStringTag || !(Symbol.toStringTag in value)) { | 
|         var tag = $slice($toString(value), 8, -1); | 
|         return $indexOf(typedArrays, tag) > -1; | 
|     } | 
|     if (!gOPD) { return false; } | 
|     return tryTypedArrays(value); | 
| }; |