varisObject=require('../internals/is-object');// `ToPrimitive` abstract operation// https://tc39.github.io/ecma262/#sec-toprimitive// instead of the ES6 spec version, we didn't implement @@toPrimitive case// and the second argument - flag - preferred type is a stringmodule.exports=function(input,PREFERRED_STRING){if(!isObject(input))returninput;varfn,val;if(PREFERRED_STRING&&typeof(fn=input.toString)=='function'&&!isObject(val=fn.call(input)))returnval;if(typeof(fn=input.valueOf)=='function'&&!isObject(val=fn.call(input)))returnval;if(!PREFERRED_STRING&&typeof(fn=input.toString)=='function'&&!isObject(val=fn.call(input)))returnval;throwTypeError("Can't convert object to primitive value");};