first
This commit is contained in:
50
node_modules/core-js/modules/es.reflect.set.js
generated
vendored
Normal file
50
node_modules/core-js/modules/es.reflect.set.js
generated
vendored
Normal file
@ -0,0 +1,50 @@
|
||||
'use strict';
|
||||
var $ = require('../internals/export');
|
||||
var call = require('../internals/function-call');
|
||||
var anObject = require('../internals/an-object');
|
||||
var isObject = require('../internals/is-object');
|
||||
var isDataDescriptor = require('../internals/is-data-descriptor');
|
||||
var fails = require('../internals/fails');
|
||||
var definePropertyModule = require('../internals/object-define-property');
|
||||
var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
|
||||
var getPrototypeOf = require('../internals/object-get-prototype-of');
|
||||
var createPropertyDescriptor = require('../internals/create-property-descriptor');
|
||||
|
||||
// `Reflect.set` method
|
||||
// https://tc39.es/ecma262/#sec-reflect.set
|
||||
function set(target, propertyKey, V /* , receiver */) {
|
||||
var receiver = arguments.length < 4 ? target : arguments[3];
|
||||
var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
|
||||
var existingDescriptor, prototype, setter;
|
||||
if (!ownDescriptor) {
|
||||
if (isObject(prototype = getPrototypeOf(target))) {
|
||||
return set(prototype, propertyKey, V, receiver);
|
||||
}
|
||||
ownDescriptor = createPropertyDescriptor(0);
|
||||
}
|
||||
if (isDataDescriptor(ownDescriptor)) {
|
||||
if (ownDescriptor.writable === false || !isObject(receiver)) return false;
|
||||
if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
|
||||
if (existingDescriptor.get || existingDescriptor.set || existingDescriptor.writable === false) return false;
|
||||
existingDescriptor.value = V;
|
||||
definePropertyModule.f(receiver, propertyKey, existingDescriptor);
|
||||
} else definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
|
||||
} else {
|
||||
setter = ownDescriptor.set;
|
||||
if (setter === undefined) return false;
|
||||
call(setter, receiver, V);
|
||||
} return true;
|
||||
}
|
||||
|
||||
// MS Edge 17-18 Reflect.set allows setting the property to object
|
||||
// with non-writable property on the prototype
|
||||
var MS_EDGE_BUG = fails(function () {
|
||||
var Constructor = function () { /* empty */ };
|
||||
var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });
|
||||
// eslint-disable-next-line es/no-reflect -- required for testing
|
||||
return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
|
||||
});
|
||||
|
||||
$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
|
||||
set: set
|
||||
});
|
Reference in New Issue
Block a user