[79a0317] | 1 | 'use strict';
|
---|
| 2 | var shared = require('../internals/shared');
|
---|
| 3 | var getBuiltIn = require('../internals/get-built-in');
|
---|
| 4 | var uncurryThis = require('../internals/function-uncurry-this');
|
---|
| 5 | var isSymbol = require('../internals/is-symbol');
|
---|
| 6 | var wellKnownSymbol = require('../internals/well-known-symbol');
|
---|
| 7 |
|
---|
| 8 | var Symbol = getBuiltIn('Symbol');
|
---|
| 9 | var $isWellKnownSymbol = Symbol.isWellKnownSymbol;
|
---|
| 10 | var getOwnPropertyNames = getBuiltIn('Object', 'getOwnPropertyNames');
|
---|
| 11 | var thisSymbolValue = uncurryThis(Symbol.prototype.valueOf);
|
---|
| 12 | var WellKnownSymbolsStore = shared('wks');
|
---|
| 13 |
|
---|
| 14 | for (var i = 0, symbolKeys = getOwnPropertyNames(Symbol), symbolKeysLength = symbolKeys.length; i < symbolKeysLength; i++) {
|
---|
| 15 | // some old engines throws on access to some keys like `arguments` or `caller`
|
---|
| 16 | try {
|
---|
| 17 | var symbolKey = symbolKeys[i];
|
---|
| 18 | if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);
|
---|
| 19 | } catch (error) { /* empty */ }
|
---|
| 20 | }
|
---|
| 21 |
|
---|
| 22 | // `Symbol.isWellKnownSymbol` method
|
---|
| 23 | // https://tc39.es/proposal-symbol-predicates/#sec-symbol-iswellknownsymbol
|
---|
| 24 | // We should patch it for newly added well-known symbols. If it's not required, this module just will not be injected
|
---|
| 25 | module.exports = function isWellKnownSymbol(value) {
|
---|
| 26 | if ($isWellKnownSymbol && $isWellKnownSymbol(value)) return true;
|
---|
| 27 | try {
|
---|
| 28 | var symbol = thisSymbolValue(value);
|
---|
| 29 | for (var j = 0, keys = getOwnPropertyNames(WellKnownSymbolsStore), keysLength = keys.length; j < keysLength; j++) {
|
---|
| 30 | // eslint-disable-next-line eqeqeq -- polyfilled symbols case
|
---|
| 31 | if (WellKnownSymbolsStore[keys[j]] == symbol) return true;
|
---|
| 32 | }
|
---|
| 33 | } catch (error) { /* empty */ }
|
---|
| 34 | return false;
|
---|
| 35 | };
|
---|