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;
| };
|
|