/safe-bigint

Safely create a BigInt from a numerical string, even one larger than MAX_SAFE_INTEGER.

Primary LanguageJavaScriptMIT LicenseMIT

safe-bigint Version Badge

github actions coverage dependency status dev dependency status License Downloads

npm badge

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.

Example

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
    );
}

Tests

Simply clone the repo, npm install, and run npm test