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
				
				989 B
			
		
		
			
		
	
	
					40 lines
				
				989 B
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var has = require('has');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var assertRecord = require('../helpers/assertRecord');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var IsDataDescriptor = require('./IsDataDescriptor');
							 | 
						||
| 
								 | 
							
								var IsGenericDescriptor = require('./IsGenericDescriptor');
							 | 
						||
| 
								 | 
							
								var Type = require('./Type');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// https://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = function CompletePropertyDescriptor(Desc) {
							 | 
						||
| 
								 | 
							
									/* eslint no-param-reassign: 0 */
							 | 
						||
| 
								 | 
							
									assertRecord(Type, 'Property Descriptor', 'Desc', Desc);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (IsGenericDescriptor(Desc) || IsDataDescriptor(Desc)) {
							 | 
						||
| 
								 | 
							
										if (!has(Desc, '[[Value]]')) {
							 | 
						||
| 
								 | 
							
											Desc['[[Value]]'] = void 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (!has(Desc, '[[Writable]]')) {
							 | 
						||
| 
								 | 
							
											Desc['[[Writable]]'] = false;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									} else {
							 | 
						||
| 
								 | 
							
										if (!has(Desc, '[[Get]]')) {
							 | 
						||
| 
								 | 
							
											Desc['[[Get]]'] = void 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (!has(Desc, '[[Set]]')) {
							 | 
						||
| 
								 | 
							
											Desc['[[Set]]'] = void 0;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if (!has(Desc, '[[Enumerable]]')) {
							 | 
						||
| 
								 | 
							
										Desc['[[Enumerable]]'] = false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									if (!has(Desc, '[[Configurable]]')) {
							 | 
						||
| 
								 | 
							
										Desc['[[Configurable]]'] = false;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return Desc;
							 | 
						||
| 
								 | 
							
								};
							 |