@applicaster/zapp-react-native-utils 15.0.0-rc.112 → 15.0.0-rc.113
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.
|
@@ -11,16 +11,6 @@ describe("toNumber", () => {
|
|
|
11
11
|
});
|
|
12
12
|
});
|
|
13
13
|
|
|
14
|
-
it("return number if input is BigInt", () => {
|
|
15
|
-
const inputs = [5n, -5n];
|
|
16
|
-
expect.assertions(inputs.length);
|
|
17
|
-
|
|
18
|
-
inputs.forEach((input) => {
|
|
19
|
-
const output = toNumber(input);
|
|
20
|
-
expect(output).toBe(Number(input));
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
|
|
24
14
|
it("return number if input is string as number", () => {
|
|
25
15
|
const inputs = ["-1", "0", "1", "100", "0.2"];
|
|
26
16
|
expect.assertions(inputs.length);
|
|
@@ -34,6 +24,8 @@ describe("toNumber", () => {
|
|
|
34
24
|
it("return undefined if input is not a number", () => {
|
|
35
25
|
const inputs = [
|
|
36
26
|
"vfdvf",
|
|
27
|
+
"5n",
|
|
28
|
+
"-5n",
|
|
37
29
|
null,
|
|
38
30
|
undefined,
|
|
39
31
|
NaN,
|
|
@@ -42,8 +34,6 @@ describe("toNumber", () => {
|
|
|
42
34
|
{ test: 1 },
|
|
43
35
|
[],
|
|
44
36
|
[1],
|
|
45
|
-
"5n",
|
|
46
|
-
"-5n",
|
|
47
37
|
];
|
|
48
38
|
|
|
49
39
|
expect.assertions(inputs.length);
|
|
@@ -53,4 +43,29 @@ describe("toNumber", () => {
|
|
|
53
43
|
expect(output).toBeUndefined();
|
|
54
44
|
});
|
|
55
45
|
});
|
|
46
|
+
|
|
47
|
+
describe("BigInt support", () => {
|
|
48
|
+
// Conditional test based on BigInt availability
|
|
49
|
+
const isBigIntSupported = typeof BigInt !== "undefined";
|
|
50
|
+
|
|
51
|
+
if (isBigIntSupported) {
|
|
52
|
+
it("converts BigInt to number when BigInt is supported", () => {
|
|
53
|
+
expect(toNumber(BigInt(5))).toBe(5);
|
|
54
|
+
expect(toNumber(BigInt(0))).toBe(0);
|
|
55
|
+
expect(toNumber(BigInt(-10))).toBe(-10);
|
|
56
|
+
expect(toNumber(BigInt(1000))).toBe(1000);
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
it("handles large BigInt values that may lose precision", () => {
|
|
60
|
+
const largeBigInt = BigInt(Number.MAX_SAFE_INTEGER) + BigInt(1);
|
|
61
|
+
const result = toNumber(largeBigInt);
|
|
62
|
+
expect(result).toBe(Number(largeBigInt));
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
it("skips BigInt tests when BigInt is not supported", () => {
|
|
66
|
+
// Placeholder test to indicate BigInt is not available
|
|
67
|
+
expect(typeof BigInt).toBe("undefined");
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
});
|
|
56
71
|
});
|
|
@@ -156,10 +156,38 @@ describe("toPositiveNumber", () => {
|
|
|
156
156
|
it("handles Symbol values", () => {
|
|
157
157
|
expect(toPositiveNumber(Symbol("test"))).toBeUndefined();
|
|
158
158
|
});
|
|
159
|
+
});
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
describe("BigInt support", () => {
|
|
162
|
+
// Conditional test based on BigInt availability
|
|
163
|
+
const isBigIntSupported = typeof BigInt !== "undefined";
|
|
164
|
+
|
|
165
|
+
if (isBigIntSupported) {
|
|
166
|
+
it("converts positive BigInt values to numbers when BigInt is supported", () => {
|
|
167
|
+
expect(toPositiveNumber(BigInt(5))).toBe(5);
|
|
168
|
+
expect(toPositiveNumber(BigInt(100))).toBe(100);
|
|
169
|
+
expect(toPositiveNumber(BigInt(1000))).toBe(1000);
|
|
170
|
+
});
|
|
171
|
+
|
|
172
|
+
it("returns undefined for zero BigInt", () => {
|
|
173
|
+
expect(toPositiveNumber(BigInt(0))).toBeUndefined();
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
it("returns undefined for negative BigInt values", () => {
|
|
177
|
+
expect(toPositiveNumber(BigInt(-5))).toBeUndefined();
|
|
178
|
+
expect(toPositiveNumber(BigInt(-100))).toBeUndefined();
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
it("handles large positive BigInt values", () => {
|
|
182
|
+
const largeBigInt = BigInt(Number.MAX_SAFE_INTEGER);
|
|
183
|
+
const result = toPositiveNumber(largeBigInt);
|
|
184
|
+
expect(result).toBe(Number(largeBigInt));
|
|
185
|
+
});
|
|
186
|
+
} else {
|
|
187
|
+
it("skips BigInt tests when BigInt is not supported", () => {
|
|
188
|
+
// Placeholder test to indicate BigInt is not available
|
|
189
|
+
expect(typeof BigInt).toBe("undefined");
|
|
190
|
+
});
|
|
191
|
+
}
|
|
164
192
|
});
|
|
165
193
|
});
|
package/numberUtils/index.ts
CHANGED
|
@@ -8,7 +8,11 @@ export const toNumber = (value: unknown): number | undefined => {
|
|
|
8
8
|
return undefined;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
// Feature-detect BigInt support to avoid ReferenceError on older runtimes
|
|
12
|
+
const isBigIntSupported = typeof BigInt !== "undefined";
|
|
13
|
+
const isBigIntValue = isBigIntSupported && R.is(BigInt, value);
|
|
14
|
+
|
|
15
|
+
if (R.is(Number, value) || isBigIntValue || R.is(String, value)) {
|
|
12
16
|
const numberOrNan = Number(value);
|
|
13
17
|
|
|
14
18
|
return Number.isNaN(numberOrNan) ? undefined : numberOrNan;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@applicaster/zapp-react-native-utils",
|
|
3
|
-
"version": "15.0.0-rc.
|
|
3
|
+
"version": "15.0.0-rc.113",
|
|
4
4
|
"description": "Applicaster Zapp React Native utilities package",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"types": "index.d.ts",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
},
|
|
28
28
|
"homepage": "https://github.com/applicaster/quickbrick#readme",
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@applicaster/applicaster-types": "15.0.0-rc.
|
|
30
|
+
"@applicaster/applicaster-types": "15.0.0-rc.113",
|
|
31
31
|
"buffer": "^5.2.1",
|
|
32
32
|
"camelize": "^1.0.0",
|
|
33
33
|
"dayjs": "^1.11.10",
|