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.
		
		
		
		
		
			
		
			
				
					
					
						
							26 lines
						
					
					
						
							1019 B
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							26 lines
						
					
					
						
							1019 B
						
					
					
				| 'use strict'; | |
| var call = require('../internals/function-call'); | |
| var isObject = require('../internals/is-object'); | |
| var isSymbol = require('../internals/is-symbol'); | |
| var getMethod = require('../internals/get-method'); | |
| var ordinaryToPrimitive = require('../internals/ordinary-to-primitive'); | |
| var wellKnownSymbol = require('../internals/well-known-symbol'); | |
| 
 | |
| var $TypeError = TypeError; | |
| var TO_PRIMITIVE = wellKnownSymbol('toPrimitive'); | |
| 
 | |
| // `ToPrimitive` abstract operation | |
| // https://tc39.es/ecma262/#sec-toprimitive | |
| module.exports = function (input, pref) { | |
|   if (!isObject(input) || isSymbol(input)) return input; | |
|   var exoticToPrim = getMethod(input, TO_PRIMITIVE); | |
|   var result; | |
|   if (exoticToPrim) { | |
|     if (pref === undefined) pref = 'default'; | |
|     result = call(exoticToPrim, input, pref); | |
|     if (!isObject(result) || isSymbol(result)) return result; | |
|     throw new $TypeError("Can't convert object to primitive value"); | |
|   } | |
|   if (pref === undefined) pref = 'number'; | |
|   return ordinaryToPrimitive(input, pref); | |
| };
 |