basant307/AI_Governance_Project
045
1var baseTimes = require('./_baseTimes'),2 isArguments = require('./isArguments'),3 isArray = require('./isArray'),4 isBuffer = require('./isBuffer'),5 isIndex = require('./_isIndex'),6 isTypedArray = require('./isTypedArray');7 8/** Used for built-in method references. */9var objectProto = Object.prototype;10 11/** Used to check objects for own properties. */12var hasOwnProperty = objectProto.hasOwnProperty;13 14/**15 * Creates an array of the enumerable property names of the array-like `value`.16 *17 * @private18 * @param {*} value The value to query.19 * @param {boolean} inherited Specify returning inherited property names.20 * @returns {Array} Returns the array of property names.21 */22function arrayLikeKeys(value, inherited) {23 var isArr = isArray(value),24 isArg = !isArr && isArguments(value),25 isBuff = !isArr && !isArg && isBuffer(value),26 isType = !isArr && !isArg && !isBuff && isTypedArray(value),27 skipIndexes = isArr || isArg || isBuff || isType,28 result = skipIndexes ? baseTimes(value.length, String) : [],29 length = result.length;30 31 for (var key in value) {32 if ((inherited || hasOwnProperty.call(value, key)) &&33 !(skipIndexes && (34 // Safari 9 has enumerable `arguments.length` in strict mode.35 key == 'length' ||36 // Node.js 0.10 has enumerable non-index properties on buffers.37 (isBuff && (key == 'offset' || key == 'parent')) ||38 // PhantomJS 2 has enumerable non-index properties on typed arrays.39 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||40 // Skip index properties.41 isIndex(key, length)42 ))) {43 result.push(key);44 }45 }46 return result;47}48 49module.exports = arrayLikeKeys;50 