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.
		
		
		
		
			
				
					35 lines
				
				1.5 KiB
			
		
		
			
		
	
	
					35 lines
				
				1.5 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								var global = require('../internals/global');
							 | 
						||
| 
								 | 
							
								var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');
							 | 
						||
| 
								 | 
							
								var has = require('../internals/has');
							 | 
						||
| 
								 | 
							
								var setGlobal = require('../internals/set-global');
							 | 
						||
| 
								 | 
							
								var inspectSource = require('../internals/inspect-source');
							 | 
						||
| 
								 | 
							
								var InternalStateModule = require('../internals/internal-state');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getInternalState = InternalStateModule.get;
							 | 
						||
| 
								 | 
							
								var enforceInternalState = InternalStateModule.enforce;
							 | 
						||
| 
								 | 
							
								var TEMPLATE = String(String).split('String');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(module.exports = function (O, key, value, options) {
							 | 
						||
| 
								 | 
							
								  var unsafe = options ? !!options.unsafe : false;
							 | 
						||
| 
								 | 
							
								  var simple = options ? !!options.enumerable : false;
							 | 
						||
| 
								 | 
							
								  var noTargetGet = options ? !!options.noTargetGet : false;
							 | 
						||
| 
								 | 
							
								  if (typeof value == 'function') {
							 | 
						||
| 
								 | 
							
								    if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);
							 | 
						||
| 
								 | 
							
								    enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (O === global) {
							 | 
						||
| 
								 | 
							
								    if (simple) O[key] = value;
							 | 
						||
| 
								 | 
							
								    else setGlobal(key, value);
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  } else if (!unsafe) {
							 | 
						||
| 
								 | 
							
								    delete O[key];
							 | 
						||
| 
								 | 
							
								  } else if (!noTargetGet && O[key]) {
							 | 
						||
| 
								 | 
							
								    simple = true;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (simple) O[key] = value;
							 | 
						||
| 
								 | 
							
								  else createNonEnumerableProperty(O, key, value);
							 | 
						||
| 
								 | 
							
								// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
							 | 
						||
| 
								 | 
							
								})(Function.prototype, 'toString', function toString() {
							 | 
						||
| 
								 | 
							
								  return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
							 | 
						||
| 
								 | 
							
								});
							 |