You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
var CreateDataProperty = require('es-abstract/2020/CreateDataProperty'); var IsCallable = require('es-abstract/2020/IsCallable'); var RequireObjectCoercible = require('es-abstract/2020/RequireObjectCoercible'); var ToObject = require('es-abstract/2020/ToObject'); var callBound = require('call-bind/callBound');
var $gOPD = Object.getOwnPropertyDescriptor; var $getOwnNames = Object.getOwnPropertyNames; var $getSymbols = Object.getOwnPropertySymbols; var $concat = callBound('Array.prototype.concat'); var $reduce = callBound('Array.prototype.reduce'); var getAll = $getSymbols ? function (obj) { return $concat($getOwnNames(obj), $getSymbols(obj)); } : $getOwnNames;
var isES5 = IsCallable($gOPD) && IsCallable($getOwnNames);
module.exports = function getOwnPropertyDescriptors(value) { RequireObjectCoercible(value); if (!isES5) { throw new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor'); }
var O = ToObject(value); return $reduce( getAll(O), function (acc, key) { var descriptor = $gOPD(O, key); if (typeof descriptor !== 'undefined') { CreateDataProperty(acc, key, descriptor); } return acc; }, {} ); };
|