You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					44 lines
				
				1.2 KiB
			
		
		
			
		
	
	
					44 lines
				
				1.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var GetIntrinsic = require('get-intrinsic');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var callBound = require('call-bind/callBound');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var $SyntaxError = GetIntrinsic('%SyntaxError%');
							 | 
						||
| 
								 | 
							
								var getGlobalSymbolDescription = GetIntrinsic('%Symbol.keyFor%', true);
							 | 
						||
| 
								 | 
							
								var thisSymbolValue = callBound('%Symbol.prototype.valueOf%', true);
							 | 
						||
| 
								 | 
							
								var symToStr = callBound('Symbol.prototype.toString', true);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var getInferredName = require('./getInferredName');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable consistent-return */
							 | 
						||
| 
								 | 
							
								module.exports = callBound('%Symbol.prototype.description%', true) || function getSymbolDescription(symbol) {
							 | 
						||
| 
								 | 
							
									if (!thisSymbolValue) {
							 | 
						||
| 
								 | 
							
										throw new $SyntaxError('Symbols are not supported in this environment');
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									// will throw if not a symbol primitive or wrapper object
							 | 
						||
| 
								 | 
							
									var sym = thisSymbolValue(symbol);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									if (getInferredName) {
							 | 
						||
| 
								 | 
							
										var name = getInferredName(sym);
							 | 
						||
| 
								 | 
							
										if (name === '') {
							 | 
						||
| 
								 | 
							
											return;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										return name.slice(1, -1); // name.slice('['.length, -']'.length);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									var desc;
							 | 
						||
| 
								 | 
							
									if (getGlobalSymbolDescription) {
							 | 
						||
| 
								 | 
							
										desc = getGlobalSymbolDescription(sym);
							 | 
						||
| 
								 | 
							
										if (typeof desc === 'string') {
							 | 
						||
| 
								 | 
							
											return desc;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									desc = symToStr(sym).slice(7, -1); // str.slice('Symbol('.length, -')'.length);
							 | 
						||
| 
								 | 
							
									if (desc) {
							 | 
						||
| 
								 | 
							
										return desc;
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								};
							 |