@agrozyme/numeric 1.0.24 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/lib/helper.d.ts +10 -1
- package/lib/helper.js +50 -1
- package/lib/helper.js.map +1 -1
- package/lib/helper.mjs +45 -1
- package/lib/helper.mjs.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/helper.ts +55 -1
- package/src/index.ts +10 -1
package/README.md
CHANGED
|
@@ -46,6 +46,33 @@ Same as [Etehreum Constants](https://www.npmjs.com/package/@ethersproject/consta
|
|
|
46
46
|
|
|
47
47
|
## Helper Functions
|
|
48
48
|
|
|
49
|
+
- tryParse: try parse value to Numeric
|
|
50
|
+
|
|
51
|
+
```ts
|
|
52
|
+
const test = tryParse('test');
|
|
53
|
+
// test is false
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
- isRange: test value range
|
|
57
|
+
|
|
58
|
+
```ts
|
|
59
|
+
const test = isRange(0, -10n, '10');
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
- isInteger: test value is a integer
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
const test = isInteger('0.1');
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
- isUnsignedIntegerBits: test value is a unsigned integer that has significant bits
|
|
69
|
+
- isSignedIntegerBits: test value is a signed integer that has significant bits
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
const test1 = isUnsignedIntegerBits(8n, '256');
|
|
73
|
+
const test2 = isSignedIntegerBits(8n, '256');
|
|
74
|
+
```
|
|
75
|
+
|
|
49
76
|
- createArrayCompareFunction: create a simple array compare function
|
|
50
77
|
|
|
51
78
|
```ts
|
|
@@ -53,6 +80,8 @@ const ascending = createArrayCompareFunction(true);
|
|
|
53
80
|
const descending = createArrayCompareFunction(false);
|
|
54
81
|
```
|
|
55
82
|
|
|
83
|
+
## Format Functions
|
|
84
|
+
|
|
56
85
|
- formatValue: use [format-number](https://www.npmjs.com/package/format-number) to format a Numeric-Like value
|
|
57
86
|
|
|
58
87
|
```ts
|
package/lib/helper.d.ts
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
-
import { NumericValue } from './numeric';
|
|
1
|
+
import { Numeric, NumericValue } from './numeric';
|
|
2
|
+
export interface RangeOptions {
|
|
3
|
+
includeMinimum?: boolean;
|
|
4
|
+
includeMaximum?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const isRange: (value: NumericValue, minimum: NumericValue, maximum: NumericValue, options?: RangeOptions) => boolean;
|
|
7
|
+
export declare const tryParse: (value: NumericValue) => false | Numeric;
|
|
8
|
+
export declare const isInteger: (value: NumericValue) => boolean;
|
|
9
|
+
export declare const isUnsignedIntegerBits: (bits: bigint, value: NumericValue) => boolean;
|
|
10
|
+
export declare const isSignedIntegerBits: (bits: bigint, value: NumericValue) => boolean;
|
|
2
11
|
export declare const createArrayCompareFunction: (ascending?: boolean) => (left: NumericValue, right: NumericValue) => number;
|
package/lib/helper.js
CHANGED
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createArrayCompareFunction = void 0;
|
|
3
|
+
exports.createArrayCompareFunction = exports.isSignedIntegerBits = exports.isUnsignedIntegerBits = exports.isInteger = exports.tryParse = exports.isRange = void 0;
|
|
4
|
+
const constants_1 = require("./constants.js");
|
|
4
5
|
const numeric_1 = require("./numeric.js");
|
|
6
|
+
const isRange = (value, minimum, maximum, options) => {
|
|
7
|
+
try {
|
|
8
|
+
const data = (0, numeric_1.toNumeric)(value);
|
|
9
|
+
const defaultOptions = { includeMaximum: true, includeMinimum: true };
|
|
10
|
+
const { includeMaximum, includeMinimum } = options ? Object.assign({}, defaultOptions, options) : defaultOptions;
|
|
11
|
+
const isOverLower = includeMinimum ? data.lessThan(minimum) : data.lessThanOrEqualTo(minimum);
|
|
12
|
+
const isOverUpper = includeMaximum ? data.greaterThan(maximum) : data.greaterThanOrEqualTo(maximum);
|
|
13
|
+
return !(isOverLower || isOverUpper);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
exports.isRange = isRange;
|
|
20
|
+
const tryParse = (value) => {
|
|
21
|
+
try {
|
|
22
|
+
return (0, numeric_1.toNumeric)(value);
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.tryParse = tryParse;
|
|
29
|
+
const isInteger = (value) => {
|
|
30
|
+
const data = (0, exports.tryParse)(value);
|
|
31
|
+
return false !== data && data.isInteger();
|
|
32
|
+
};
|
|
33
|
+
exports.isInteger = isInteger;
|
|
34
|
+
const isUnsignedIntegerBits = (bits, value) => {
|
|
35
|
+
if (0n > bits || false === (0, exports.isInteger)(value)) {
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
const maximum = constants_1.Two.toPower(bits);
|
|
39
|
+
const minimum = constants_1.Zero;
|
|
40
|
+
const options = { includeMinimum: true, includeMaximum: false };
|
|
41
|
+
return (0, exports.isRange)(value, minimum, maximum, options);
|
|
42
|
+
};
|
|
43
|
+
exports.isUnsignedIntegerBits = isUnsignedIntegerBits;
|
|
44
|
+
const isSignedIntegerBits = (bits, value) => {
|
|
45
|
+
if (0n > bits || false === (0, exports.isInteger)(value)) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const maximum = constants_1.Two.toPower(bits - 1n);
|
|
49
|
+
const minimum = constants_1.NegativeOne.times(maximum);
|
|
50
|
+
const options = { includeMinimum: true, includeMaximum: false };
|
|
51
|
+
return (0, exports.isRange)(value, minimum, maximum, options);
|
|
52
|
+
};
|
|
53
|
+
exports.isSignedIntegerBits = isSignedIntegerBits;
|
|
5
54
|
const createArrayCompareFunction = (ascending = true) => ascending
|
|
6
55
|
? (left, right) => numeric_1.Numeric.sub(left, right).toNumber()
|
|
7
56
|
: (left, right) => numeric_1.Numeric.sub(right, left).toNumber();
|
package/lib/helper.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"helper.js","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
package/lib/helper.mjs
CHANGED
|
@@ -1,4 +1,48 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NegativeOne, Two, Zero } from "./constants.mjs";
|
|
2
|
+
import { Numeric, toNumeric } from "./numeric.mjs";
|
|
3
|
+
export const isRange = (value, minimum, maximum, options) => {
|
|
4
|
+
try {
|
|
5
|
+
const data = toNumeric(value);
|
|
6
|
+
const defaultOptions = { includeMaximum: true, includeMinimum: true };
|
|
7
|
+
const { includeMaximum, includeMinimum } = options ? Object.assign({}, defaultOptions, options) : defaultOptions;
|
|
8
|
+
const isOverLower = includeMinimum ? data.lessThan(minimum) : data.lessThanOrEqualTo(minimum);
|
|
9
|
+
const isOverUpper = includeMaximum ? data.greaterThan(maximum) : data.greaterThanOrEqualTo(maximum);
|
|
10
|
+
return !(isOverLower || isOverUpper);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
export const tryParse = (value) => {
|
|
17
|
+
try {
|
|
18
|
+
return toNumeric(value);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const isInteger = (value) => {
|
|
25
|
+
const data = tryParse(value);
|
|
26
|
+
return false !== data && data.isInteger();
|
|
27
|
+
};
|
|
28
|
+
export const isUnsignedIntegerBits = (bits, value) => {
|
|
29
|
+
if (0n > bits || false === isInteger(value)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const maximum = Two.toPower(bits);
|
|
33
|
+
const minimum = Zero;
|
|
34
|
+
const options = { includeMinimum: true, includeMaximum: false };
|
|
35
|
+
return isRange(value, minimum, maximum, options);
|
|
36
|
+
};
|
|
37
|
+
export const isSignedIntegerBits = (bits, value) => {
|
|
38
|
+
if (0n > bits || false === isInteger(value)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
const maximum = Two.toPower(bits - 1n);
|
|
42
|
+
const minimum = NegativeOne.times(maximum);
|
|
43
|
+
const options = { includeMinimum: true, includeMaximum: false };
|
|
44
|
+
return isRange(value, minimum, maximum, options);
|
|
45
|
+
};
|
|
2
46
|
export const createArrayCompareFunction = (ascending = true) => ascending
|
|
3
47
|
? (left, right) => Numeric.sub(left, right).toNumber()
|
|
4
48
|
: (left, right) => Numeric.sub(right, left).toNumber();
|
package/lib/helper.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper.mjs","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAgB;
|
|
1
|
+
{"version":3,"file":"helper.mjs","sourceRoot":"","sources":["../src/helper.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ export { formatValue } from './format';
|
|
|
4
4
|
export type { IFormatNumberOptions } from './format';
|
|
5
5
|
export { getNumericConfig, setupNumericConfig } from './config';
|
|
6
6
|
export { MaxInt256, MaxUint256, MinInt256, NegativeOne, One, Two, WeiPerEther, Zero } from './constants';
|
|
7
|
-
export { createArrayCompareFunction } from './helper';
|
|
7
|
+
export { createArrayCompareFunction, isInteger, isRange, isSignedIntegerBits, isUnsignedIntegerBits, tryParse, } from './helper';
|
|
8
|
+
export type { RangeOptions } from './helper';
|
|
8
9
|
/**
|
|
9
10
|
* - must use `@types/node@16` for Symbol typing
|
|
10
11
|
* - must put `@types/bn.js` in dependencies section of package.json
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createArrayCompareFunction = exports.Zero = exports.WeiPerEther = exports.Two = exports.One = exports.NegativeOne = exports.MinInt256 = exports.MaxUint256 = exports.MaxInt256 = exports.setupNumericConfig = exports.getNumericConfig = exports.formatValue = exports.toNumerics = exports.toNumeric = exports.toIntegerString = exports.toBN = exports.toBigNumber = exports.toBigInteger = exports.toBigInt = exports.Numeric = void 0;
|
|
3
|
+
exports.tryParse = exports.isUnsignedIntegerBits = exports.isSignedIntegerBits = exports.isRange = exports.isInteger = exports.createArrayCompareFunction = exports.Zero = exports.WeiPerEther = exports.Two = exports.One = exports.NegativeOne = exports.MinInt256 = exports.MaxUint256 = exports.MaxInt256 = exports.setupNumericConfig = exports.getNumericConfig = exports.formatValue = exports.toNumerics = exports.toNumeric = exports.toIntegerString = exports.toBN = exports.toBigNumber = exports.toBigInteger = exports.toBigInt = exports.Numeric = void 0;
|
|
4
4
|
var numeric_1 = require("./numeric.js");
|
|
5
5
|
Object.defineProperty(exports, "Numeric", { enumerable: true, get: function () { return numeric_1.Numeric; } });
|
|
6
6
|
Object.defineProperty(exports, "toBigInt", { enumerable: true, get: function () { return numeric_1.toBigInt; } });
|
|
@@ -26,6 +26,11 @@ Object.defineProperty(exports, "WeiPerEther", { enumerable: true, get: function
|
|
|
26
26
|
Object.defineProperty(exports, "Zero", { enumerable: true, get: function () { return constants_1.Zero; } });
|
|
27
27
|
var helper_1 = require("./helper.js");
|
|
28
28
|
Object.defineProperty(exports, "createArrayCompareFunction", { enumerable: true, get: function () { return helper_1.createArrayCompareFunction; } });
|
|
29
|
+
Object.defineProperty(exports, "isInteger", { enumerable: true, get: function () { return helper_1.isInteger; } });
|
|
30
|
+
Object.defineProperty(exports, "isRange", { enumerable: true, get: function () { return helper_1.isRange; } });
|
|
31
|
+
Object.defineProperty(exports, "isSignedIntegerBits", { enumerable: true, get: function () { return helper_1.isSignedIntegerBits; } });
|
|
32
|
+
Object.defineProperty(exports, "isUnsignedIntegerBits", { enumerable: true, get: function () { return helper_1.isUnsignedIntegerBits; } });
|
|
33
|
+
Object.defineProperty(exports, "tryParse", { enumerable: true, get: function () { return helper_1.tryParse; } });
|
|
29
34
|
/**
|
|
30
35
|
* - must use `@types/node@16` for Symbol typing
|
|
31
36
|
* - must put `@types/bn.js` in dependencies section of package.json
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuH;AAA9G,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAE,0GAAA,eAAe,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAGnG,sCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAGpB,sCAAgE;AAAvD,0GAAA,gBAAgB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAC7C,4CAAyG;AAAhG,sGAAA,SAAS,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,gGAAA,GAAG,OAAA;AAAE,gGAAA,GAAG,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,iGAAA,IAAI,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,wCAAuH;AAA9G,kGAAA,OAAO,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAAE,uGAAA,YAAY,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,+FAAA,IAAI,OAAA;AAAE,0GAAA,eAAe,OAAA;AAAE,oGAAA,SAAS,OAAA;AAAE,qGAAA,UAAU,OAAA;AAGnG,sCAAuC;AAA9B,qGAAA,WAAW,OAAA;AAGpB,sCAAgE;AAAvD,0GAAA,gBAAgB,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAC7C,4CAAyG;AAAhG,sGAAA,SAAS,OAAA;AAAE,uGAAA,UAAU,OAAA;AAAE,sGAAA,SAAS,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,gGAAA,GAAG,OAAA;AAAE,gGAAA,GAAG,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,iGAAA,IAAI,OAAA;AAEnF,sCAOkB;AANhB,oHAAA,0BAA0B,OAAA;AAC1B,mGAAA,SAAS,OAAA;AACT,iGAAA,OAAO,OAAA;AACP,6GAAA,mBAAmB,OAAA;AACnB,+GAAA,qBAAqB,OAAA;AACrB,kGAAA,QAAQ,OAAA;AAIV;;;;;KAKK"}
|
package/lib/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ export { Numeric, toBigInt, toBigInteger, toBigNumber, toBN, toIntegerString, to
|
|
|
2
2
|
export { formatValue } from "./format.mjs";
|
|
3
3
|
export { getNumericConfig, setupNumericConfig } from "./config.mjs";
|
|
4
4
|
export { MaxInt256, MaxUint256, MinInt256, NegativeOne, One, Two, WeiPerEther, Zero } from "./constants.mjs";
|
|
5
|
-
export { createArrayCompareFunction } from "./helper.mjs";
|
|
5
|
+
export { createArrayCompareFunction, isInteger, isRange, isSignedIntegerBits, isUnsignedIntegerBits, tryParse, } from "./helper.mjs";
|
|
6
6
|
/**
|
|
7
7
|
* - must use `@types/node@16` for Symbol typing
|
|
8
8
|
* - must put `@types/bn.js` in dependencies section of package.json
|
package/lib/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE;OAG9F,EAAE,WAAW,EAAE;OAGf,EAAE,gBAAgB,EAAE,kBAAkB,EAAE;OACxC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE;OAG9F,EAAE,WAAW,EAAE;OAGf,EAAE,gBAAgB,EAAE,kBAAkB,EAAE;OACxC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE;OAE9E,EACL,0BAA0B,EAC1B,SAAS,EACT,OAAO,EACP,mBAAmB,EACnB,qBAAqB,EACrB,QAAQ,GACT;AAGD;;;;;KAKK"}
|
package/package.json
CHANGED
package/src/helper.ts
CHANGED
|
@@ -1,4 +1,58 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { NegativeOne, Two, Zero } from './constants';
|
|
2
|
+
import { Numeric, NumericValue, toNumeric } from './numeric';
|
|
3
|
+
|
|
4
|
+
export interface RangeOptions {
|
|
5
|
+
includeMinimum?: boolean;
|
|
6
|
+
includeMaximum?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const isRange = (value: NumericValue, minimum: NumericValue, maximum: NumericValue, options?: RangeOptions) => {
|
|
10
|
+
try {
|
|
11
|
+
const data = toNumeric(value);
|
|
12
|
+
const defaultOptions: Required<RangeOptions> = { includeMaximum: true, includeMinimum: true };
|
|
13
|
+
const { includeMaximum, includeMinimum } = options ? Object.assign({}, defaultOptions, options) : defaultOptions;
|
|
14
|
+
const isOverLower = includeMinimum ? data.lessThan(minimum) : data.lessThanOrEqualTo(minimum);
|
|
15
|
+
const isOverUpper = includeMaximum ? data.greaterThan(maximum) : data.greaterThanOrEqualTo(maximum);
|
|
16
|
+
return !(isOverLower || isOverUpper);
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export const tryParse = (value: NumericValue) => {
|
|
23
|
+
try {
|
|
24
|
+
return toNumeric(value);
|
|
25
|
+
} catch (error) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export const isInteger = (value: NumericValue) => {
|
|
31
|
+
const data = tryParse(value);
|
|
32
|
+
return false !== data && data.isInteger();
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export const isUnsignedIntegerBits = (bits: bigint, value: NumericValue) => {
|
|
36
|
+
if (0n > bits || false === isInteger(value)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const maximum = Two.toPower(bits);
|
|
41
|
+
const minimum = Zero;
|
|
42
|
+
const options: RangeOptions = { includeMinimum: true, includeMaximum: false };
|
|
43
|
+
return isRange(value, minimum, maximum, options);
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
export const isSignedIntegerBits = (bits: bigint, value: NumericValue) => {
|
|
47
|
+
if (0n > bits || false === isInteger(value)) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const maximum = Two.toPower(bits - 1n);
|
|
52
|
+
const minimum = NegativeOne.times(maximum);
|
|
53
|
+
const options: RangeOptions = { includeMinimum: true, includeMaximum: false };
|
|
54
|
+
return isRange(value, minimum, maximum, options);
|
|
55
|
+
};
|
|
2
56
|
|
|
3
57
|
export const createArrayCompareFunction = (ascending: boolean = true) =>
|
|
4
58
|
ascending
|
package/src/index.ts
CHANGED
|
@@ -6,7 +6,16 @@ export type { IFormatNumberOptions } from './format';
|
|
|
6
6
|
|
|
7
7
|
export { getNumericConfig, setupNumericConfig } from './config';
|
|
8
8
|
export { MaxInt256, MaxUint256, MinInt256, NegativeOne, One, Two, WeiPerEther, Zero } from './constants';
|
|
9
|
-
|
|
9
|
+
|
|
10
|
+
export {
|
|
11
|
+
createArrayCompareFunction,
|
|
12
|
+
isInteger,
|
|
13
|
+
isRange,
|
|
14
|
+
isSignedIntegerBits,
|
|
15
|
+
isUnsignedIntegerBits,
|
|
16
|
+
tryParse,
|
|
17
|
+
} from './helper';
|
|
18
|
+
export type { RangeOptions } from './helper';
|
|
10
19
|
|
|
11
20
|
/**
|
|
12
21
|
* - must use `@types/node@16` for Symbol typing
|