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.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.0 KiB
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1.0 KiB
						
					
					
				'use strict'; | 
						|
 | 
						|
var GetIntrinsic = require('get-intrinsic'); | 
						|
 | 
						|
var $TypeError = GetIntrinsic('%TypeError%'); | 
						|
 | 
						|
var Type = require('./Type'); | 
						|
var IsDataDescriptor = require('./IsDataDescriptor'); | 
						|
var IsAccessorDescriptor = require('./IsAccessorDescriptor'); | 
						|
 | 
						|
var assertRecord = require('../helpers/assertRecord'); | 
						|
 | 
						|
// https://262.ecma-international.org/5.1/#sec-8.10.4 | 
						|
 | 
						|
module.exports = function FromPropertyDescriptor(Desc) { | 
						|
	if (typeof Desc === 'undefined') { | 
						|
		return Desc; | 
						|
	} | 
						|
 | 
						|
	assertRecord(Type, 'Property Descriptor', 'Desc', Desc); | 
						|
 | 
						|
	if (IsDataDescriptor(Desc)) { | 
						|
		return { | 
						|
			value: Desc['[[Value]]'], | 
						|
			writable: !!Desc['[[Writable]]'], | 
						|
			enumerable: !!Desc['[[Enumerable]]'], | 
						|
			configurable: !!Desc['[[Configurable]]'] | 
						|
		}; | 
						|
	} else if (IsAccessorDescriptor(Desc)) { | 
						|
		return { | 
						|
			get: Desc['[[Get]]'], | 
						|
			set: Desc['[[Set]]'], | 
						|
			enumerable: !!Desc['[[Enumerable]]'], | 
						|
			configurable: !!Desc['[[Configurable]]'] | 
						|
		}; | 
						|
	} | 
						|
	throw new $TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor'); | 
						|
 | 
						|
};
 | 
						|
 |