CoolFace
Datasetpublic

basant307/AI_Governance_Project

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
0likes48downloads
implementation.js123 linesDownload Raw Back to object-keys
1'use strict';2 3var keysShim;4if (!Object.keys) {5	// modified from https://github.com/es-shims/es5-shim6	var has = Object.prototype.hasOwnProperty;7	var toStr = Object.prototype.toString;8	var isArgs = require('./isArguments'); // eslint-disable-line global-require9	var isEnumerable = Object.prototype.propertyIsEnumerable;10	var hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');11	var hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');12	var dontEnums = [13		'toString',14		'toLocaleString',15		'valueOf',16		'hasOwnProperty',17		'isPrototypeOf',18		'propertyIsEnumerable',19		'constructor'20	];21	var equalsConstructorPrototype = function (o) {22		var ctor = o.constructor;23		return ctor && ctor.prototype === o;24	};25	var excludedKeys = {26		$applicationCache: true,27		$console: true,28		$external: true,29		$frame: true,30		$frameElement: true,31		$frames: true,32		$innerHeight: true,33		$innerWidth: true,34		$onmozfullscreenchange: true,35		$onmozfullscreenerror: true,36		$outerHeight: true,37		$outerWidth: true,38		$pageXOffset: true,39		$pageYOffset: true,40		$parent: true,41		$scrollLeft: true,42		$scrollTop: true,43		$scrollX: true,44		$scrollY: true,45		$self: true,46		$webkitIndexedDB: true,47		$webkitStorageInfo: true,48		$window: true49	};50	var hasAutomationEqualityBug = (function () {51		/* global window */52		if (typeof window === 'undefined') { return false; }53		for (var k in window) {54			try {55				if (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {56					try {57						equalsConstructorPrototype(window[k]);58					} catch (e) {59						return true;60					}61				}62			} catch (e) {63				return true;64			}65		}66		return false;67	}());68	var equalsConstructorPrototypeIfNotBuggy = function (o) {69		/* global window */70		if (typeof window === 'undefined' || !hasAutomationEqualityBug) {71			return equalsConstructorPrototype(o);72		}73		try {74			return equalsConstructorPrototype(o);75		} catch (e) {76			return false;77		}78	};79 80	keysShim = function keys(object) {81		var isObject = object !== null && typeof object === 'object';82		var isFunction = toStr.call(object) === '[object Function]';83		var isArguments = isArgs(object);84		var isString = isObject && toStr.call(object) === '[object String]';85		var theKeys = [];86 87		if (!isObject && !isFunction && !isArguments) {88			throw new TypeError('Object.keys called on a non-object');89		}90 91		var skipProto = hasProtoEnumBug && isFunction;92		if (isString && object.length > 0 && !has.call(object, 0)) {93			for (var i = 0; i < object.length; ++i) {94				theKeys.push(String(i));95			}96		}97 98		if (isArguments && object.length > 0) {99			for (var j = 0; j < object.length; ++j) {100				theKeys.push(String(j));101			}102		} else {103			for (var name in object) {104				if (!(skipProto && name === 'prototype') && has.call(object, name)) {105					theKeys.push(String(name));106				}107			}108		}109 110		if (hasDontEnumBug) {111			var skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);112 113			for (var k = 0; k < dontEnums.length; ++k) {114				if (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {115					theKeys.push(dontEnums[k]);116				}117			}118		}119		return theKeys;120	};121}122module.exports = keysShim;123 
basant307/AI_Governance_Project · CoolFace