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 |
|
16 | try {
|
17 | var symbolKey = symbolKeys[i];
|
18 | if (isSymbol(Symbol[symbolKey])) wellKnownSymbol(symbolKey);
|
19 | } catch (error) { }
|
20 | }
|
21 |
|
22 |
|
23 |
|
24 |
|
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 |
|
31 | if (WellKnownSymbolsStore[keys[j]] == symbol) return true;
|
32 | }
|
33 | } catch (error) { }
|
34 | return false;
|
35 | };
|