36 lines
		
	
	
		
			767 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			767 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
var toStr = Object.prototype.toString;
 | 
						|
var hasSymbols = require('has-symbols')();
 | 
						|
 | 
						|
if (hasSymbols) {
 | 
						|
	var symToStr = Symbol.prototype.toString;
 | 
						|
	var symStringRegex = /^Symbol\(.*\)$/;
 | 
						|
	var isSymbolObject = function isRealSymbolObject(value) {
 | 
						|
		if (typeof value.valueOf() !== 'symbol') {
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		return symStringRegex.test(symToStr.call(value));
 | 
						|
	};
 | 
						|
 | 
						|
	module.exports = function isSymbol(value) {
 | 
						|
		if (typeof value === 'symbol') {
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
		if (toStr.call(value) !== '[object Symbol]') {
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
		try {
 | 
						|
			return isSymbolObject(value);
 | 
						|
		} catch (e) {
 | 
						|
			return false;
 | 
						|
		}
 | 
						|
	};
 | 
						|
} else {
 | 
						|
 | 
						|
	module.exports = function isSymbol(value) {
 | 
						|
		// this environment does not support Symbols.
 | 
						|
		return false && value;
 | 
						|
	};
 | 
						|
}
 |