Son CV dans un terminal web en Javascript!
https://terminal-cv.gregandev.fr
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.
61 lines
1.8 KiB
61 lines
1.8 KiB
1 year ago
|
'use strict';
|
||
|
|
||
|
var forEach = require('foreach');
|
||
|
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 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 gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');
|
||
|
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);
|
||
|
};
|