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.
		
		
		
		
		
			
		
			
				
					40 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					40 lines
				
				1.2 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								import superPropBase from "./superPropBase.js";
							 | 
						||
| 
								 | 
							
								import defineProperty from "./defineProperty.js";
							 | 
						||
| 
								 | 
							
								function set(target, property, value, receiver) {
							 | 
						||
| 
								 | 
							
								  if (typeof Reflect !== "undefined" && Reflect.set) {
							 | 
						||
| 
								 | 
							
								    set = Reflect.set;
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    set = function set(target, property, value, receiver) {
							 | 
						||
| 
								 | 
							
								      var base = superPropBase(target, property);
							 | 
						||
| 
								 | 
							
								      var desc;
							 | 
						||
| 
								 | 
							
								      if (base) {
							 | 
						||
| 
								 | 
							
								        desc = Object.getOwnPropertyDescriptor(base, property);
							 | 
						||
| 
								 | 
							
								        if (desc.set) {
							 | 
						||
| 
								 | 
							
								          desc.set.call(receiver, value);
							 | 
						||
| 
								 | 
							
								          return true;
							 | 
						||
| 
								 | 
							
								        } else if (!desc.writable) {
							 | 
						||
| 
								 | 
							
								          return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      desc = Object.getOwnPropertyDescriptor(receiver, property);
							 | 
						||
| 
								 | 
							
								      if (desc) {
							 | 
						||
| 
								 | 
							
								        if (!desc.writable) {
							 | 
						||
| 
								 | 
							
								          return false;
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								        desc.value = value;
							 | 
						||
| 
								 | 
							
								        Object.defineProperty(receiver, property, desc);
							 | 
						||
| 
								 | 
							
								      } else {
							 | 
						||
| 
								 | 
							
								        defineProperty(receiver, property, value);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      return true;
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return set(target, property, value, receiver);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export default function _set(target, property, value, receiver, isStrict) {
							 | 
						||
| 
								 | 
							
								  var s = set(target, property, value, receiver || target);
							 | 
						||
| 
								 | 
							
								  if (!s && isStrict) {
							 | 
						||
| 
								 | 
							
								    throw new TypeError('failed to set property');
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return value;
							 | 
						||
| 
								 | 
							
								}
							 |