aboutsummaryrefslogtreecommitdiff
path: root/node_modules/has-symbols/shams.js
diff options
context:
space:
mode:
authorgrant-kun <[email protected]>2022-09-26 07:14:29 -0500
committergrant-kun <[email protected]>2022-09-26 07:14:29 -0500
commit86feb9e6403cfa6198ffb6895877c1c00d2a738a (patch)
treecf29210132c5ffb2be80afe04eb0fa231dac3382 /node_modules/has-symbols/shams.js
parent47e3ae49258f9ddfb91b570745fedeaef4f0fc8f (diff)
update (not working)
Diffstat (limited to 'node_modules/has-symbols/shams.js')
-rw-r--r--node_modules/has-symbols/shams.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/node_modules/has-symbols/shams.js b/node_modules/has-symbols/shams.js
new file mode 100644
index 0000000..1285210
--- /dev/null
+++ b/node_modules/has-symbols/shams.js
@@ -0,0 +1,42 @@
+'use strict';
+
+/* eslint complexity: [2, 18], max-statements: [2, 33] */
+module.exports = function hasSymbols() {
+ if (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }
+ if (typeof Symbol.iterator === 'symbol') { return true; }
+
+ var obj = {};
+ var sym = Symbol('test');
+ var symObj = Object(sym);
+ if (typeof sym === 'string') { return false; }
+
+ if (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }
+ if (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }
+
+ // temp disabled per https://github.com/ljharb/object.assign/issues/17
+ // if (sym instanceof Symbol) { return false; }
+ // temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4
+ // if (!(symObj instanceof Symbol)) { return false; }
+
+ // if (typeof Symbol.prototype.toString !== 'function') { return false; }
+ // if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }
+
+ var symVal = 42;
+ obj[sym] = symVal;
+ for (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop
+ if (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }
+
+ if (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }
+
+ var syms = Object.getOwnPropertySymbols(obj);
+ if (syms.length !== 1 || syms[0] !== sym) { return false; }
+
+ if (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }
+
+ if (typeof Object.getOwnPropertyDescriptor === 'function') {
+ var descriptor = Object.getOwnPropertyDescriptor(obj, sym);
+ if (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }
+ }
+
+ return true;
+};