| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 | | 'use strict'; |  |   |  | var GetIntrinsic = require('get-intrinsic'); |  |   |  | var has = require('has'); |  | var $TypeError = GetIntrinsic('%TypeError%'); |  |   |  | module.exports = function IsPropertyDescriptor(ES, Desc) { |  |     if (ES.Type(Desc) !== 'Object') { |  |         return false; |  |     } |  |     var allowed = { |  |         '[[Configurable]]': true, |  |         '[[Enumerable]]': true, |  |         '[[Get]]': true, |  |         '[[Set]]': true, |  |         '[[Value]]': true, |  |         '[[Writable]]': true |  |     }; |  |   |  |     for (var key in Desc) { // eslint-disable-line no-restricted-syntax |  |         if (has(Desc, key) && !allowed[key]) { |  |             return false; |  |         } |  |     } |  |   |  |     if (ES.IsDataDescriptor(Desc) && ES.IsAccessorDescriptor(Desc)) { |  |         throw new $TypeError('Property Descriptors may not be both accessor and data descriptors'); |  |     } |  |     return true; |  | }; | 
 |