calculate-string
Advanced tools
Comparing version 1.0.0 to 2.0.0
95
index.js
/** | ||
* Copyright (c) 2021, Reece Stokes. (GPL-3.0 Licensed) | ||
* Copyright (c) 2021, Reece Stokes. (MIT Licensed) | ||
* https://github.com/MrGriefs/calculate-string | ||
*/ | ||
const reg = { | ||
var bjs = require('big.js'); | ||
var pow = function (a, b) { if (b > 33219) return Infinity; if (b < -33219) return -Infinity; return a.lt(0) ? a.pow(b).times(-1) : a.pow(b) } | ||
, div = function (a, b) { return a.div(b) } | ||
, mul = function (a, b) { return a.times(b) } | ||
, add = function (a, b) { return a.plus(b) } | ||
, sub = function (a, b) { return a.minus(b) } | ||
var reg = { | ||
bra: /\((.+)\)/ | ||
, ind: /([\d.]+)\^([\d.]+)/ | ||
, div: /([\d.]+)[/÷]([\d.]+)/ | ||
, mul: /([\d.]+)[*x]([\d.]+)/i | ||
, add: /([\d.]+)\+([\d.]+)/ | ||
, sub: /([\d.]+)-([\d.]+)/ | ||
, ind: /(\$?[\d.]+)(?:\^|\*{2})(\$?-?[\d.]+)/ | ||
, div: /(\$?[\d.]+)[/÷](\$?-?[\d.]+)/ | ||
, mul: /(\$?[\d.]+)[*x×](\$?-?[\d.]+)/i | ||
, add: /(\$?[\d.]+)(?!e)\+(\$?-?[\d.]+)/i | ||
, sub: /(\$?[\d.]+)-(\$?-?[\d.]+)/ | ||
} | ||
const ops = { | ||
bra: (a, _, format) => parseString(a, format) | ||
, ind: (a, b) => Math.pow(Number(a), Number(b)) | ||
, div: (a, b) => Number(a) / Number(b) | ||
, mul: (a, b) => Number(a) * Number(b) | ||
, add: (a, b) => Number(a) + Number(b) | ||
, sub: (a, b) => Number(a) - Number(b) | ||
var ops = { | ||
bra: (a, _, format) => a[0] === '-' ? parse(a.slice(1), format).times(-1) : parse(a, format) | ||
, ind: (a, b) => pow(big(a), Number(b)) | ||
, div: (a, b) => div(big(a), big(b)) | ||
, mul: (a, b) => mul(big(a), big(b)) | ||
, add: (a, b) => add(big(a), big(b)) | ||
, sub: (a, b) => sub(big(a), big(b)) | ||
} | ||
const orders = { | ||
var orders = { | ||
BIDMAS: ["bra", "ind", "div", "mul", "add", "sub"] | ||
@@ -29,19 +37,31 @@ , PEMDAS: ["bra", "ind", "mul", "div", "add", "sub"] | ||
function big(n) { | ||
try { return new bjs(n) } | ||
catch(e) { return NaN } | ||
} | ||
function operate(type, a, b, format) { | ||
const op = ops[type]; | ||
return op(a, b, format); | ||
return ops[type](a, b, format); | ||
} | ||
function parseString(string, format = orders.BIDMAS) { | ||
function parse(string, format) { | ||
if (typeof string === "number") string = String(string); | ||
string = string.replace(/[ ,]+/g, ""); | ||
for (const type of format) { | ||
const pattern = reg[type]; | ||
string = string.replace(/[ ,$]+/g, "") | ||
.replace(/\d\.?\d*e(\+?|-)\d+/gi, str => big(str).toString()); | ||
var methodResults = []; | ||
var methodNum = 0; | ||
for (var type of format) { | ||
var pattern = reg[type]; | ||
if (!pattern) continue; | ||
var match; | ||
while (match = string.match(pattern)) { | ||
string = string.slice(0, match.index) + operate(type, match[1], match[2], format) + string.slice(match.index + match[0].length); | ||
if (match[1][0] === '$') match[1] = methodResults[match[1].slice(1)]; | ||
else if (match.input[0] === '-') match[1] = '-' + match[1]; | ||
if (match[2] && match[2][0] === '$') match[2] = methodResults[match[2].slice(1)]; | ||
methodResults[methodNum] = operate(type, match[1], match[2], format); | ||
string = string.slice(0, match.index) + '$' + methodNum + string.slice(match.index + match[0].length); | ||
methodNum++ | ||
} | ||
} | ||
return string; | ||
return methodResults[methodResults.length - 1] || big(string); | ||
} | ||
@@ -52,26 +72,17 @@ | ||
* @param {string} string - The string which contains mathematical operations. | ||
* @param {string|Array<string>=} [order=BIDMAS] | ||
* The order of operations to use. Defaults to BIDMAS. | ||
* | ||
* Can be either "BIDMAS", "PEMDAS" or an array of the order of operations: | ||
* - `bra` | ||
* - `ind` | ||
* - `div` | ||
* - `mul` | ||
* - `add` | ||
* - `sub` | ||
* | ||
* @returns {number} | ||
* @param {(string|Array<string>)} [order=BIDMAS] | ||
* The order of operations to use. Defaults to BIDMAS. | ||
* Can be either "BIDMAS", "PEMDAS" or an array of the order of operations: | ||
* ``` | ||
* ['bra', 'ind', 'div', 'mul', 'add', 'sub'] | ||
* ``` | ||
* @returns {string} | ||
*/ | ||
function calculateString (string, order = orders.BIDMAS) { | ||
function calculate (string, order = orders.BIDMAS) { | ||
if (typeof order === "string") order = orders[order.toUpperCase()]; | ||
if (!Array.isArray(order)) throw new TypeError("Format must be \"BIDMAS\", \"PEMDAS\" or an Array, got \"" + typeof order + "\"."); | ||
if (typeof string !== "string") throw new TypeError("`string` must be type of string, got \"" + typeof string + "\".") | ||
return Number(parseString(string, order)); | ||
return parse(string, order).toString(); | ||
} | ||
if (typeof exports === "object" && typeof module !== "undefined") { | ||
module.exports = calculateString; | ||
} else { | ||
("undefined" != typeof globalThis ? globalThis : self).calculateString = calculateString | ||
} | ||
module.exports = calculate; |
@@ -1,5 +0,1 @@ | ||
/** | ||
* Copyright (c) 2021, Reece Stokes. (GPL-3.0 Licensed) | ||
* https://github.com/MrGriefs/calculate-string | ||
*/ | ||
const reg={bra:/\((.+)\)/,ind:/([\d.]+)\^([\d.]+)/,div:/([\d.]+)[/÷]([\d.]+)/,mul:/([\d.]+)[*x]([\d.]+)/i,add:/([\d.]+)\+([\d.]+)/,sub:/([\d.]+)-([\d.]+)/},ops={bra:(r,e,t)=>parseString(r,t),ind:(r,e)=>Math.pow(Number(r),Number(e)),div:(r,e)=>Number(r)/Number(e),mul:(r,e)=>Number(r)*Number(e),add:(r,e)=>Number(r)+Number(e),sub:(r,e)=>Number(r)-Number(e)},orders={BIDMAS:["bra","ind","div","mul","add","sub"],PEMDAS:["bra","ind","mul","div","add","sub"]};function operate(r,e,t,o){return(0,ops[r])(e,t,o)}function parseString(r,e=orders.BIDMAS){"number"==typeof r&&(r=String(r)),r=r.replace(/[ ,]+/g,"");for(const o of e){const n=reg[o];if(n)for(var t;t=r.match(n);)r=r.slice(0,t.index)+operate(o,t[1],t[2],e)+r.slice(t.index+t[0].length)}return r}function calculateString(r,e=orders.BIDMAS){if("string"==typeof e&&(e=orders[e.toUpperCase()]),!Array.isArray(e))throw new TypeError('Format must be "BIDMAS", "PEMDAS" or an Array, got "'+typeof e+'".');if("string"!=typeof r)throw new TypeError('`string` must be type of string, got "'+typeof r+'".');return Number(parseString(r,e))}"object"==typeof exports&&"undefined"!=typeof module?module.exports=calculateString:("undefined"!=typeof globalThis?globalThis:self).calculateString=calculateString; | ||
var calculateString;(()=>{var r={10:(r,t,e)=>{var n=e(302),i={bra:/\((.+)\)/,ind:/(\$?[\d.]+)(?:\^|\*{2})(\$?-?[\d.]+)/,div:/(\$?[\d.]+)[/÷](\$?-?[\d.]+)/,mul:/(\$?[\d.]+)[*x×](\$?-?[\d.]+)/i,add:/(\$?[\d.]+)(?!e)\+(\$?-?[\d.]+)/i,sub:/(\$?[\d.]+)-(\$?-?[\d.]+)/},o={bra:(r,t,e)=>"-"===r[0]?f(r.slice(1),e).times(-1):f(r,e),ind:(r,t)=>function(r,t){return t>33219?1/0:t<-33219?-1/0:r.lt(0)?r.pow(t).times(-1):r.pow(t)}(c(r),Number(t)),div:(r,t)=>function(r,t){return r.div(t)}(c(r),c(t)),mul:(r,t)=>function(r,t){return r.times(t)}(c(r),c(t)),add:(r,t)=>function(r,t){return r.plus(t)}(c(r),c(t)),sub:(r,t)=>function(r,t){return r.minus(t)}(c(r),c(t))},s={BIDMAS:["bra","ind","div","mul","add","sub"],PEMDAS:["bra","ind","mul","div","add","sub"]};function c(r){try{return new n(r)}catch(r){return NaN}}function u(r,t,e,n){return o[r](t,e,n)}function f(r,t){"number"==typeof r&&(r=String(r)),r=r.replace(/[ ,$]+/g,"").replace(/\d\.?\d*e(\+?|-)\d+/gi,(r=>c(r).toString()));var e=[],n=0;for(var o of t){var s=i[o];if(s)for(var f;f=r.match(s);)"$"===f[1][0]?f[1]=e[f[1].slice(1)]:"-"===f.input[0]&&(f[1]="-"+f[1]),f[2]&&"$"===f[2][0]&&(f[2]=e[f[2].slice(1)]),e[n]=u(o,f[1],f[2],t),r=r.slice(0,f.index)+"$"+n+r.slice(f.index+f[0].length),n++}return e[e.length-1]||c(r)}r.exports=function(r,t=s.BIDMAS){if("string"==typeof t&&(t=s[t.toUpperCase()]),!Array.isArray(t))throw new TypeError('Format must be "BIDMAS", "PEMDAS" or an Array, got "'+typeof t+'".');if("string"!=typeof r)throw new TypeError('`string` must be type of string, got "'+typeof r+'".');return f(r,t).toString()}},302:function(r,t,e){var n;!function(i){"use strict";var o,s=1e6,c="[big.js] ",u=c+"Invalid ",f=u+"decimal places",h=c+"Division by zero",l={},a=void 0,d=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function p(r,t,e,n){var i=r.c;if(e===a&&(e=r.constructor.RM),0!==e&&1!==e&&2!==e&&3!==e)throw Error("[big.js] Invalid rounding mode");if(t<1)n=3===e&&(n||!!i[0])||0===t&&(1===e&&i[0]>=5||2===e&&(i[0]>5||5===i[0]&&(n||i[1]!==a))),i.length=1,n?(r.e=r.e-t+1,i[0]=1):i[0]=r.e=0;else if(t<i.length){if(n=1===e&&i[t]>=5||2===e&&(i[t]>5||5===i[t]&&(n||i[t+1]!==a||1&i[t-1]))||3===e&&(n||!!i[0]),i.length=t--,n)for(;++i[t]>9;)i[t]=0,t--||(++r.e,i.unshift(1));for(t=i.length;!i[--t];)i.pop()}return r}function v(r,t,e){var n=r.e,i=r.c.join(""),o=i.length;if(t)i=i.charAt(0)+(o>1?"."+i.slice(1):"")+(n<0?"e":"e+")+n;else if(n<0){for(;++n;)i="0"+i;i="0."+i}else if(n>0)if(++n>o)for(n-=o;n--;)i+="0";else n<o&&(i=i.slice(0,n)+"."+i.slice(n));else o>1&&(i=i.charAt(0)+"."+i.slice(1));return r.s<0&&e?"-"+i:i}l.abs=function(){var r=new this.constructor(this);return r.s=1,r},l.cmp=function(r){var t,e=this,n=e.c,i=(r=new e.constructor(r)).c,o=e.s,s=r.s,c=e.e,u=r.e;if(!n[0]||!i[0])return n[0]?o:i[0]?-s:0;if(o!=s)return o;if(t=o<0,c!=u)return c>u^t?1:-1;for(s=(c=n.length)<(u=i.length)?c:u,o=-1;++o<s;)if(n[o]!=i[o])return n[o]>i[o]^t?1:-1;return c==u?0:c>u^t?1:-1},l.div=function(r){var t=this,e=t.constructor,n=t.c,i=(r=new e(r)).c,o=t.s==r.s?1:-1,c=e.DP;if(c!==~~c||c<0||c>s)throw Error(f);if(!i[0])throw Error(h);if(!n[0])return r.s=o,r.c=[r.e=0],r;var u,l,d,v,g,w=i.slice(),m=u=i.length,E=n.length,b=n.slice(0,u),y=b.length,x=r,A=x.c=[],$=0,D=c+(x.e=t.e-r.e)+1;for(x.s=o,o=D<0?0:D,w.unshift(0);y++<u;)b.push(0);do{for(d=0;d<10;d++){if(u!=(y=b.length))v=u>y?1:-1;else for(g=-1,v=0;++g<u;)if(i[g]!=b[g]){v=i[g]>b[g]?1:-1;break}if(!(v<0))break;for(l=y==u?i:w;y;){if(b[--y]<l[y]){for(g=y;g&&!b[--g];)b[g]=9;--b[g],b[y]+=10}b[y]-=l[y]}for(;!b[0];)b.shift()}A[$++]=v?d:++d,b[0]&&v?b[y]=n[m]||0:b=[n[m]]}while((m++<E||b[0]!==a)&&o--);return A[0]||1==$||(A.shift(),x.e--,D--),$>D&&p(x,D,e.RM,b[0]!==a),x},l.eq=function(r){return 0===this.cmp(r)},l.gt=function(r){return this.cmp(r)>0},l.gte=function(r){return this.cmp(r)>-1},l.lt=function(r){return this.cmp(r)<0},l.lte=function(r){return this.cmp(r)<1},l.minus=l.sub=function(r){var t,e,n,i,o=this,s=o.constructor,c=o.s,u=(r=new s(r)).s;if(c!=u)return r.s=-u,o.plus(r);var f=o.c.slice(),h=o.e,l=r.c,a=r.e;if(!f[0]||!l[0])return l[0]?r.s=-u:f[0]?r=new s(o):r.s=1,r;if(c=h-a){for((i=c<0)?(c=-c,n=f):(a=h,n=l),n.reverse(),u=c;u--;)n.push(0);n.reverse()}else for(e=((i=f.length<l.length)?f:l).length,c=u=0;u<e;u++)if(f[u]!=l[u]){i=f[u]<l[u];break}if(i&&(n=f,f=l,l=n,r.s=-r.s),(u=(e=l.length)-(t=f.length))>0)for(;u--;)f[t++]=0;for(u=t;e>c;){if(f[--e]<l[e]){for(t=e;t&&!f[--t];)f[t]=9;--f[t],f[e]+=10}f[e]-=l[e]}for(;0===f[--u];)f.pop();for(;0===f[0];)f.shift(),--a;return f[0]||(r.s=1,f=[a=0]),r.c=f,r.e=a,r},l.mod=function(r){var t,e=this,n=e.constructor,i=e.s,o=(r=new n(r)).s;if(!r.c[0])throw Error(h);return e.s=r.s=1,t=1==r.cmp(e),e.s=i,r.s=o,t?new n(e):(i=n.DP,o=n.RM,n.DP=n.RM=0,e=e.div(r),n.DP=i,n.RM=o,this.minus(e.times(r)))},l.plus=l.add=function(r){var t,e,n,i=this,o=i.constructor;if(r=new o(r),i.s!=r.s)return r.s=-r.s,i.minus(r);var s=i.e,c=i.c,u=r.e,f=r.c;if(!c[0]||!f[0])return f[0]||(c[0]?r=new o(i):r.s=i.s),r;if(c=c.slice(),t=s-u){for(t>0?(u=s,n=f):(t=-t,n=c),n.reverse();t--;)n.push(0);n.reverse()}for(c.length-f.length<0&&(n=f,f=c,c=n),t=f.length,e=0;t;c[t]%=10)e=(c[--t]=c[t]+f[t]+e)/10|0;for(e&&(c.unshift(e),++u),t=c.length;0===c[--t];)c.pop();return r.c=c,r.e=u,r},l.pow=function(r){var t=this,e=new t.constructor("1"),n=e,i=r<0;if(r!==~~r||r<-1e6||r>1e6)throw Error(u+"exponent");for(i&&(r=-r);1&r&&(n=n.times(t)),r>>=1;)t=t.times(t);return i?e.div(n):n},l.prec=function(r,t){if(r!==~~r||r<1||r>s)throw Error(u+"precision");return p(new this.constructor(this),r,t)},l.round=function(r,t){if(r===a)r=0;else if(r!==~~r||r<-s||r>s)throw Error(f);return p(new this.constructor(this),r+this.e+1,t)},l.sqrt=function(){var r,t,e,n=this,i=n.constructor,o=n.s,s=n.e,u=new i("0.5");if(!n.c[0])return new i(n);if(o<0)throw Error(c+"No square root");0===(o=Math.sqrt(n+""))||o===1/0?((t=n.c.join("")).length+s&1||(t+="0"),s=((s+1)/2|0)-(s<0||1&s),r=new i(((o=Math.sqrt(t))==1/0?"5e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+s)):r=new i(o+""),s=r.e+(i.DP+=4);do{e=r,r=u.times(e.plus(n.div(e)))}while(e.c.slice(0,s).join("")!==r.c.slice(0,s).join(""));return p(r,(i.DP-=4)+r.e+1,i.RM)},l.times=l.mul=function(r){var t,e=this,n=e.constructor,i=e.c,o=(r=new n(r)).c,s=i.length,c=o.length,u=e.e,f=r.e;if(r.s=e.s==r.s?1:-1,!i[0]||!o[0])return r.c=[r.e=0],r;for(r.e=u+f,s<c&&(t=i,i=o,o=t,f=s,s=c,c=f),t=new Array(f=s+c);f--;)t[f]=0;for(u=c;u--;){for(c=0,f=s+u;f>u;)c=t[f]+o[u]*i[f-u-1]+c,t[f--]=c%10,c=c/10|0;t[f]=c}for(c?++r.e:t.shift(),u=t.length;!t[--u];)t.pop();return r.c=t,r},l.toExponential=function(r,t){var e=this,n=e.c[0];if(r!==a){if(r!==~~r||r<0||r>s)throw Error(f);for(e=p(new e.constructor(e),++r,t);e.c.length<r;)e.c.push(0)}return v(e,!0,!!n)},l.toFixed=function(r,t){var e=this,n=e.c[0];if(r!==a){if(r!==~~r||r<0||r>s)throw Error(f);for(r=r+(e=p(new e.constructor(e),r+e.e+1,t)).e+1;e.c.length<r;)e.c.push(0)}return v(e,!1,!!n)},l.toJSON=l.toString=function(){var r=this,t=r.constructor;return v(r,r.e<=t.NE||r.e>=t.PE,!!r.c[0])},l.toNumber=function(){var r=Number(v(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(r.toString()))throw Error(c+"Imprecise conversion");return r},l.toPrecision=function(r,t){var e=this,n=e.constructor,i=e.c[0];if(r!==a){if(r!==~~r||r<1||r>s)throw Error(u+"precision");for(e=p(new n(e),r,t);e.c.length<r;)e.c.push(0)}return v(e,r<=e.e||e.e<=n.NE||e.e>=n.PE,!!i)},l.valueOf=function(){var r=this,t=r.constructor;if(!0===t.strict)throw Error(c+"valueOf disallowed");return v(r,r.e<=t.NE||r.e>=t.PE,!0)},(o=function r(){function t(e){var n=this;if(!(n instanceof t))return e===a?r():new t(e);if(e instanceof t)n.s=e.s,n.e=e.e,n.c=e.c.slice();else{if("string"!=typeof e){if(!0===t.strict)throw TypeError(u+"number");e=0===e&&1/e<0?"-0":String(e)}!function(r,t){var e,n,i;if(!d.test(t))throw Error(u+"number");for(r.s="-"==t.charAt(0)?(t=t.slice(1),-1):1,(e=t.indexOf("."))>-1&&(t=t.replace(".","")),(n=t.search(/e/i))>0?(e<0&&(e=n),e+=+t.slice(n+1),t=t.substring(0,n)):e<0&&(e=t.length),i=t.length,n=0;n<i&&"0"==t.charAt(n);)++n;if(n==i)r.c=[r.e=0];else{for(;i>0&&"0"==t.charAt(--i););for(r.e=e-n-1,r.c=[],e=0;n<=i;)r.c[e++]=+t.charAt(n++)}}(n,e)}n.constructor=t}return t.prototype=l,t.DP=20,t.RM=1,t.NE=-7,t.PE=21,t.strict=!1,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}()).default=o.Big=o,void 0===(n=function(){return o}.call(t,e,t,r))||(r.exports=n)}()}},t={},e=function e(n){var i=t[n];if(void 0!==i)return i.exports;var o=t[n]={exports:{}};return r[n].call(o.exports,o,o.exports,e),o.exports}(10);calculateString=e})(); |
{ | ||
"name": "calculate-string", | ||
"version": "1.0.0", | ||
"version": "2.0.0", | ||
"description": "Parses a string containing mathematical operators to a number", | ||
@@ -11,3 +11,4 @@ "main": "index.js", | ||
"scripts": { | ||
"test": "echo \"Error: no test specified\" && exit 1" | ||
"build": "webpack && node tests.js", | ||
"test": "npm run build" | ||
}, | ||
@@ -19,3 +20,3 @@ "keywords": [ | ||
"author": "Reece Stokes <hagen@paw.bot>", | ||
"license": "GPL-3.0", | ||
"license": "MIT", | ||
"repository": { | ||
@@ -28,3 +29,9 @@ "type": "git", | ||
}, | ||
"homepage": "https://github.com/MrGriefs/calculate-string#readme" | ||
"homepage": "https://github.com/MrGriefs/calculate-string#readme", | ||
"dependencies": { | ||
"big.js": "^6.1.1" | ||
}, | ||
"devDependencies": { | ||
"webpack-cli": "^4.7.2" | ||
} | ||
} |
@@ -6,5 +6,3 @@ <h2 align="center">Calculate String</h2> | ||
<a href="https://discord.gg/eazpsZNrRk"><img alt="Discord" src="https://img.shields.io/discord/368557500884189186?color=7389D8&labelColor=6A7EC2&logo=discord&logoColor=ffffff"></a> | ||
<img alt="Travis (.org)" src="https://img.shields.io/travis/MrGriefs/calculate-string"> | ||
<img alt="David" src="https://img.shields.io/david/MrGriefs/calculate-string"> | ||
<img alt="node-current" src="https://img.shields.io/node/v/calculate-string"> | ||
<img alt="GitHub package.json version" src="https://img.shields.io/github/package-json/v/MrGriefs/calculate-string"> | ||
@@ -48,10 +46,8 @@ <a href="https://npm.runkit.com/calculate-string"><img alt="RunKit" src="https://img.shields.io/badge/Run-Kit-red"></a> | ||
calculateString('1,000 + 1,000') // 2,000 | ||
calculateString('(100 + 10) / 10') // 11 | ||
calculateString('100 ^ 2') // 10,000 | ||
Number.isNaN(calculateString("this won't get parsed")) // true | ||
calculateString('1,000 + 1,000') // String: '2000' | ||
calculateString('(100 + 10) / 10') // String: '11' | ||
BigInt(calculateString('2 ^ 64')) // BigInt: 18,446,744,073,709,551,616 | ||
Number.isNaN(calculateString("this won't get parsed")) // Boolean: true | ||
``` | ||
### HTML | ||
```html | ||
@@ -58,0 +54,0 @@ <!DOCTYPE html> |
Sorry, the diff of this file is not supported yet
Copyleft License
License(Experimental) Copyleft license information was found.
Found 1 instance in 1 package
No tests
QualityPackage does not have any tests. This is a strong signal of a poorly maintained or low quality package.
Found 1 instance in 1 package
Non-permissive License
License(Experimental) A license not known to be considered permissive was found.
Found 1 instance in 1 package
0
100
0
15397
1
1
75
68
+ Addedbig.js@^6.1.1
+ Addedbig.js@6.2.2(transitive)