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.
		
		
		
		
			
				
					33 lines
				
				823 B
			
		
		
			
		
	
	
					33 lines
				
				823 B
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var slice = Array.prototype.slice;
							 | 
						||
| 
								 | 
							
								var isArgs = require('./isArguments');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var origKeys = Object.keys;
							 | 
						||
| 
								 | 
							
								var keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var originalKeys = Object.keys;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								keysShim.shim = function shimObjectKeys() {
							 | 
						||
| 
								 | 
							
									if (Object.keys) {
							 | 
						||
| 
								 | 
							
										var keysWorksWithArguments = (function () {
							 | 
						||
| 
								 | 
							
											// Safari 5.0 bug
							 | 
						||
| 
								 | 
							
											var args = Object.keys(arguments);
							 | 
						||
| 
								 | 
							
											return args && args.length === arguments.length;
							 | 
						||
| 
								 | 
							
										}(1, 2));
							 | 
						||
| 
								 | 
							
										if (!keysWorksWithArguments) {
							 | 
						||
| 
								 | 
							
											Object.keys = function keys(object) { // eslint-disable-line func-name-matching
							 | 
						||
| 
								 | 
							
												if (isArgs(object)) {
							 | 
						||
| 
								 | 
							
													return originalKeys(slice.call(object));
							 | 
						||
| 
								 | 
							
												}
							 | 
						||
| 
								 | 
							
												return originalKeys(object);
							 | 
						||
| 
								 | 
							
											};
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										Object.keys = keysShim;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return Object.keys || keysShim;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = keysShim;
							 |