| 123456789101112131415161718192021222324252627282930313233343536373839 | '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-completepropertydescriptormodule.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;};
 |