source: frontend/node_modules/core-js-pure/modules/es.reflect.set.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.4 KB
Line 
1'use strict';
2var $ = require('../internals/export');
3var call = require('../internals/function-call');
4var anObject = require('../internals/an-object');
5var isObject = require('../internals/is-object');
6var isDataDescriptor = require('../internals/is-data-descriptor');
7var fails = require('../internals/fails');
8var definePropertyModule = require('../internals/object-define-property');
9var getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');
10var getPrototypeOf = require('../internals/object-get-prototype-of');
11var createPropertyDescriptor = require('../internals/create-property-descriptor');
12var toPropertyKey = require('../internals/to-property-key');
13
14// `Reflect.set` method
15// https://tc39.es/ecma262/#sec-reflect.set
16var $set = function (target, propertyKey, V, receiver) {
17 var ownDescriptor = getOwnPropertyDescriptorModule.f(anObject(target), propertyKey);
18 var existingDescriptor, prototype, setter;
19 if (!ownDescriptor) {
20 if (isObject(prototype = getPrototypeOf(target))) {
21 return $set(prototype, propertyKey, V, receiver);
22 }
23 ownDescriptor = createPropertyDescriptor(0);
24 }
25 if (isDataDescriptor(ownDescriptor)) {
26 if (ownDescriptor.writable === false || !isObject(receiver)) return false;
27 if (existingDescriptor = getOwnPropertyDescriptorModule.f(receiver, propertyKey)) {
28 if (!isDataDescriptor(existingDescriptor) || existingDescriptor.writable === false) return false;
29 definePropertyModule.f(receiver, propertyKey, { value: V });
30 } else try {
31 definePropertyModule.f(receiver, propertyKey, createPropertyDescriptor(0, V));
32 } catch (error) {
33 return false;
34 }
35 } else {
36 setter = ownDescriptor.set;
37 if (setter === undefined) return false;
38 call(setter, receiver, V);
39 } return true;
40};
41
42// MS Edge 17-18 Reflect.set allows setting the property to object
43// with non-writable property on the prototype
44var MS_EDGE_BUG = fails(function () {
45 var Constructor = function () { /* empty */ };
46 var object = definePropertyModule.f(new Constructor(), 'a', { configurable: true });
47 // eslint-disable-next-line es/no-reflect -- required for testing
48 return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
49});
50
51$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
52 set: function set(target, propertyKey, V /* , receiver */) {
53 return $set(anObject(target), toPropertyKey(propertyKey), V, arguments.length < 4 ? target : arguments[3]);
54 }
55});
Note: See TracBrowser for help on using the repository browser.