mirror of
https://github.com/react/react-native-devtools-frontend.git
synced 2026-10-11 14:14:36 +08:00
This also adds the MPL-2.0 license as valid license to our allowed licenses list. R=jacktfranklin@chromium.org DISABLE_THIRD_PARTY_CHECK=NPM update Change-Id: I2a3bee2ffc0b328a0579ab62ab27f938bdc876c8 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2593130 Commit-Queue: Jack Franklin <jacktfranklin@chromium.org> Reviewed-by: Jack Franklin <jacktfranklin@chromium.org> Auto-Submit: Tim van der Lippe <tvanderlippe@chromium.org>
47 lines
2.1 KiB
JavaScript
47 lines
2.1 KiB
JavaScript
var $ = require('../internals/export');
|
|
var anObject = require('../internals/an-object');
|
|
var isObject = require('../internals/is-object');
|
|
var has = require('../internals/has');
|
|
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.github.io/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;
|
|
if (!ownDescriptor) {
|
|
if (isObject(prototype = getPrototypeOf(target))) {
|
|
return set(prototype, propertyKey, V, receiver);
|
|
}
|
|
ownDescriptor = createPropertyDescriptor(0);
|
|
}
|
|
if (has(ownDescriptor, 'value')) {
|
|
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));
|
|
return true;
|
|
}
|
|
return ownDescriptor.set === undefined ? false : (ownDescriptor.set.call(receiver, V), 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 no-undef
|
|
return Reflect.set(Constructor.prototype, 'a', 1, object) !== false;
|
|
});
|
|
|
|
$({ target: 'Reflect', stat: true, forced: MS_EDGE_BUG }, {
|
|
set: set
|
|
});
|