Spaces:
Configuration error
Configuration error
; | |
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'); | |
}; | |