'use strict'; var GetIntrinsic = require('get-intrinsic'); var $TypeError = GetIntrinsic('%TypeError%'); var $Number = GetIntrinsic('%Number%'); var isPrimitive = require('../helpers/isPrimitive'); var ToPrimitive = require('./ToPrimitive'); var StringToNumber = require('./StringToNumber'); // https://ecma-international.org/ecma-262/13.0/#sec-tonumber module.exports = function ToNumber(argument) { var value = isPrimitive(argument) ? argument : ToPrimitive(argument, $Number); if (typeof value === 'symbol') { throw new $TypeError('Cannot convert a Symbol value to a number'); } if (typeof value === 'bigint') { throw new $TypeError('Conversion from \'BigInt\' to \'number\' is not allowed.'); } if (typeof value === 'string') { return StringToNumber(value); } return $Number(value); };