Safely create a BigInt from a numerical string, even one larger than MAX_SAFE_INTEGER
.
Note that the implementation in node versions that lack the exports
field, or bundlers/tooling that does not understand it, will use Function
, which in browsers, may not work due to CSP controls.
However, the modern version (which modern node and bundlers/tooling should all detect) just exports the BigInt
constructor.
Feel free to alias this package with module.exports = BigInt
or export default BigInt
in your build process configuration.
const safeBigInt = require('safe-bigint');
const assert = require('assert');
const { satisfies } = require('semver');
assert.equal(9007199254740991n, safeBigInt(9007199254740991));
assert.equal(9007199254740992n, safeBigInt(9007199254740992));
if (satisfies(process.version, '10.4 - 10.8')) {
assert.throws(
() => BigInt(9007199254740992),
RangeError
);
}
Simply clone the repo, npm install
, and run npm test