Skip to content

GoogleChromeLabs/babel-plugin-transform-jsbi-to-bigint

Repository files navigation

babel-plugin-transform-jsbi-to-bigint Build status babel-plugin-transform-jsbi-to-bigint on npm

Compile JSBI code that works in today’s environments to native BigInt code.

Example

Input using JSBI:

import JSBI from 'jsbi';

const a = JSBI.BigInt(Number.MAX_SAFE_INTEGER);
const b = JSBI.BigInt('42');

JSBI.add(a, b);
JSBI.subtract(a, b);
JSBI.multiply(a, b);
JSBI.divide(a, b);
JSBI.remainder(a, b);
JSBI.exponentiate(a, b);
JSBI.leftShift(a, b);
JSBI.signedRightShift(a, b);
JSBI.bitwiseAnd(a, b);
JSBI.bitwiseOr(a, b);
JSBI.bitwiseXor(a, b);

JSBI.unaryMinus(a);
JSBI.bitwiseNot(a);

JSBI.equal(a, b);
JSBI.notEqual(a, b);
JSBI.lessThan(a, b);
JSBI.lessThanOrEqual(a, b);
JSBI.greaterThan(a, b);
JSBI.greaterThanOrEqual(a, b);

JSBI.EQ(a, b);
JSBI.NE(a, b);
JSBI.LT(a, b);
JSBI.LE(a, b);
JSBI.GT(a, b);
JSBI.GE(a, b);

a.toString();
JSBI.toNumber(a);
a instanceof JSBI;

JSBI.asIntN(64, JSBI.BigInt('42'));
JSBI.asUintN(64, JSBI.BigInt('42'));

Transpiled output using native BigInts:

const a = BigInt(Number.MAX_SAFE_INTEGER);
const b = 42n;

a + b;
a - b;
a * b;
a / b;
a % b;
a ** b;
a << b;
a >> b;
a & b;
a | b;
a ^ b;

-a;
~a;

a === b;
a !== b;
a < b;
a <= b;
a > b;
a >= b;

a == b;
a != b;
a < b;
a <= b;
a > b;
a >= b;

a.toString();
Number(a);
typeof a === 'bigint';

BigInt.asIntN(64, 42n);
BigInt.asUintN(64, 42n);

See the JSBI documentation for more information.

Installation

$ npm install babel-plugin-transform-jsbi-to-bigint

Usage

Via .babelrc (recommended)

.babelrc

{
  "plugins": ["transform-jsbi-to-bigint"]
}

Via CLI

$ babel --plugins transform-jsbi-to-bigint script.js

Via Node.js API

require('@babel/core').transform(code, {
  'plugins': ['transform-jsbi-to-bigint']
});

For maintainers

How to publish a new release

  1. On the main branch, bump the version number in package.json:

    npm version patch -m 'Release v%s'

    Instead of patch, use minor or major as needed.

    Note that this produces a Git commit + tag.

  2. Push the release commit and tag:

    git push

    Our CI then automatically publishes the new release to npm.

About

Compile JSBI code that works in today’s environments to native BigInt code.

Resources

License

Stars

Watchers

Forks

Packages

No packages published