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.
		
		
		
		
			
				
					27 lines
				
				1019 B
			
		
		
			
		
	
	
					27 lines
				
				1019 B
			| 
											11 months ago
										 | '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); | ||
|  | }; |