blob: a186988c185565c2fa9a80f12385e40c257bbd9a [file] [log] [blame]
Leo Repp58b9f112021-11-22 11:57:47 +01001'use strict';
2
3var GetIntrinsic = require('get-intrinsic');
4
5var $BigInt = GetIntrinsic('%BigInt%', true);
6var $RangeError = GetIntrinsic('%RangeError%');
7var $TypeError = GetIntrinsic('%TypeError%');
8
9var IsInteger = require('./IsInteger');
10var Type = require('./Type');
11
12// https://262.ecma-international.org/11.0/#sec-numbertobigint
13
14module.exports = function NumberToBigInt(number) {
15 if (Type(number) !== 'Number') {
16 throw new $TypeError('Assertion failed: `number` must be a String');
17 }
18 if (!IsInteger(number)) {
19 throw new $RangeError('The number ' + number + ' cannot be converted to a BigInt because it is not an integer');
20 }
21 return $BigInt(number);
22};