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.
		
		
		
		
		
			
		
			
				
					
					
						
							80 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							80 lines
						
					
					
						
							1.9 KiB
						
					
					
				
								var isES5 = (function(){
							 | 
						|
								    "use strict";
							 | 
						|
								    return this === undefined;
							 | 
						|
								})();
							 | 
						|
								
							 | 
						|
								if (isES5) {
							 | 
						|
								    module.exports = {
							 | 
						|
								        freeze: Object.freeze,
							 | 
						|
								        defineProperty: Object.defineProperty,
							 | 
						|
								        getDescriptor: Object.getOwnPropertyDescriptor,
							 | 
						|
								        keys: Object.keys,
							 | 
						|
								        names: Object.getOwnPropertyNames,
							 | 
						|
								        getPrototypeOf: Object.getPrototypeOf,
							 | 
						|
								        isArray: Array.isArray,
							 | 
						|
								        isES5: isES5,
							 | 
						|
								        propertyIsWritable: function(obj, prop) {
							 | 
						|
								            var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
							 | 
						|
								            return !!(!descriptor || descriptor.writable || descriptor.set);
							 | 
						|
								        }
							 | 
						|
								    };
							 | 
						|
								} else {
							 | 
						|
								    var has = {}.hasOwnProperty;
							 | 
						|
								    var str = {}.toString;
							 | 
						|
								    var proto = {}.constructor.prototype;
							 | 
						|
								
							 | 
						|
								    var ObjectKeys = function (o) {
							 | 
						|
								        var ret = [];
							 | 
						|
								        for (var key in o) {
							 | 
						|
								            if (has.call(o, key)) {
							 | 
						|
								                ret.push(key);
							 | 
						|
								            }
							 | 
						|
								        }
							 | 
						|
								        return ret;
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    var ObjectGetDescriptor = function(o, key) {
							 | 
						|
								        return {value: o[key]};
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    var ObjectDefineProperty = function (o, key, desc) {
							 | 
						|
								        o[key] = desc.value;
							 | 
						|
								        return o;
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    var ObjectFreeze = function (obj) {
							 | 
						|
								        return obj;
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    var ObjectGetPrototypeOf = function (obj) {
							 | 
						|
								        try {
							 | 
						|
								            return Object(obj).constructor.prototype;
							 | 
						|
								        }
							 | 
						|
								        catch (e) {
							 | 
						|
								            return proto;
							 | 
						|
								        }
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    var ArrayIsArray = function (obj) {
							 | 
						|
								        try {
							 | 
						|
								            return str.call(obj) === "[object Array]";
							 | 
						|
								        }
							 | 
						|
								        catch(e) {
							 | 
						|
								            return false;
							 | 
						|
								        }
							 | 
						|
								    };
							 | 
						|
								
							 | 
						|
								    module.exports = {
							 | 
						|
								        isArray: ArrayIsArray,
							 | 
						|
								        keys: ObjectKeys,
							 | 
						|
								        names: ObjectKeys,
							 | 
						|
								        defineProperty: ObjectDefineProperty,
							 | 
						|
								        getDescriptor: ObjectGetDescriptor,
							 | 
						|
								        freeze: ObjectFreeze,
							 | 
						|
								        getPrototypeOf: ObjectGetPrototypeOf,
							 | 
						|
								        isES5: isES5,
							 | 
						|
								        propertyIsWritable: function() {
							 | 
						|
								            return true;
							 | 
						|
								        }
							 | 
						|
								    };
							 | 
						|
								}
							 | 
						|
								
							 |