diff options
Diffstat (limited to 'node_modules/object.getownpropertydescriptors/implementation.js')
-rw-r--r-- | node_modules/object.getownpropertydescriptors/implementation.js | 60 |
1 files changed, 27 insertions, 33 deletions
diff --git a/node_modules/object.getownpropertydescriptors/implementation.js b/node_modules/object.getownpropertydescriptors/implementation.js index 784c22c99..529f86e95 100644 --- a/node_modules/object.getownpropertydescriptors/implementation.js +++ b/node_modules/object.getownpropertydescriptors/implementation.js @@ -1,44 +1,38 @@ 'use strict'; -var ES = require('es-abstract/es7'); +var CreateDataProperty = require('es-abstract/2019/CreateDataProperty'); +var IsCallable = require('es-abstract/2019/IsCallable'); +var RequireObjectCoercible = require('es-abstract/2019/RequireObjectCoercible'); +var ToObject = require('es-abstract/2019/ToObject'); +var callBound = require('es-abstract/helpers/callBound'); -var defineProperty = Object.defineProperty; -var getDescriptor = Object.getOwnPropertyDescriptor; -var getOwnNames = Object.getOwnPropertyNames; -var getSymbols = Object.getOwnPropertySymbols; -var concat = Function.call.bind(Array.prototype.concat); -var reduce = Function.call.bind(Array.prototype.reduce); -var getAll = getSymbols ? function (obj) { - return concat(getOwnNames(obj), getSymbols(obj)); -} : getOwnNames; +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 = ES.IsCallable(getDescriptor) && ES.IsCallable(getOwnNames); - -var safePut = function put(obj, prop, val) { // eslint-disable-line max-params - if (defineProperty && prop in obj) { - defineProperty(obj, prop, { - configurable: true, - enumerable: true, - value: val, - writable: true - }); - } else { - obj[prop] = val; - } -}; +var isES5 = IsCallable($gOPD) && IsCallable($getOwnNames); module.exports = function getOwnPropertyDescriptors(value) { - ES.RequireObjectCoercible(value); + RequireObjectCoercible(value); if (!isES5) { throw new TypeError('getOwnPropertyDescriptors requires Object.getOwnPropertyDescriptor'); } - var O = ES.ToObject(value); - return reduce(getAll(O), function (acc, key) { - var descriptor = getDescriptor(O, key); - if (typeof descriptor !== 'undefined') { - safePut(acc, key, descriptor); - } - return acc; - }, {}); + 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; + }, + {} + ); }; |