| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- 'use strict';
 
- var $TypeError = require('es-errors/type');
 
- var IsDataDescriptor = require('./IsDataDescriptor');
 
- var IsAccessorDescriptor = require('./IsAccessorDescriptor');
 
- var isPropertyDescriptor = require('../helpers/records/property-descriptor');
 
- // https://262.ecma-international.org/5.1/#sec-8.10.4
 
- module.exports = function FromPropertyDescriptor(Desc) {
 
- 	if (typeof Desc === 'undefined') {
 
- 		return Desc;
 
- 	}
 
- 	if (!isPropertyDescriptor(Desc)) {
 
- 		throw new $TypeError('Assertion failed: `Desc` must be a Property Descriptor');
 
- 	}
 
- 	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');
 
- };
 
 
  |