summaryrefslogtreecommitdiffstats
path: root/node_modules/es-abstract/helpers/DefineOwnProperty.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/es-abstract/helpers/DefineOwnProperty.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/es-abstract/helpers/DefineOwnProperty.js')
-rw-r--r--node_modules/es-abstract/helpers/DefineOwnProperty.js45
1 files changed, 45 insertions, 0 deletions
diff --git a/node_modules/es-abstract/helpers/DefineOwnProperty.js b/node_modules/es-abstract/helpers/DefineOwnProperty.js
new file mode 100644
index 0000000..99ace10
--- /dev/null
+++ b/node_modules/es-abstract/helpers/DefineOwnProperty.js
@@ -0,0 +1,45 @@
+'use strict';
+
+var GetIntrinsic = require('../GetIntrinsic');
+
+var $defineProperty = GetIntrinsic('%Object.defineProperty%', true);
+
+if ($defineProperty) {
+ try {
+ $defineProperty({}, 'a', { value: 1 });
+ } catch (e) {
+ // IE 8 has a broken defineProperty
+ $defineProperty = null;
+ }
+}
+
+var callBound = require('../helpers/callBound');
+
+var $isEnumerable = callBound('Object.prototype.propertyIsEnumerable');
+
+// eslint-disable-next-line max-params
+module.exports = function DefineOwnProperty(IsDataDescriptor, SameValue, FromPropertyDescriptor, O, P, desc) {
+ if (!$defineProperty) {
+ if (!IsDataDescriptor(desc)) {
+ // ES3 does not support getters/setters
+ return false;
+ }
+ if (!desc['[[Configurable]]'] || !desc['[[Writable]]']) {
+ return false;
+ }
+
+ // fallback for ES3
+ if (P in O && $isEnumerable(O, P) !== !!desc['[[Enumerable]]']) {
+ // a non-enumerable existing property
+ return false;
+ }
+
+ // property does not exist at all, or exists but is enumerable
+ var V = desc['[[Value]]'];
+ // eslint-disable-next-line no-param-reassign
+ O[P] = V; // will use [[Define]]
+ return SameValue(O[P], V);
+ }
+ $defineProperty(O, P, FromPropertyDescriptor(desc));
+ return true;
+};