@cdk8s/awscdk-resolver 0.0.248 → 0.0.250
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/.jsii +2 -2
- package/lib/resolve.js +1 -1
- package/node_modules/strnum/CHANGELOG.md +16 -0
- package/node_modules/strnum/README.md +14 -3
- package/node_modules/strnum/package.json +8 -2
- package/node_modules/strnum/strnum.js +43 -56
- package/node_modules/strnum/strnum.test.js +19 -6
- package/package.json +8 -8
package/.jsii
CHANGED
@@ -3674,6 +3674,6 @@
|
|
3674
3674
|
"symbolId": "src/resolve:AwsCdkResolver"
|
3675
3675
|
}
|
3676
3676
|
},
|
3677
|
-
"version": "0.0.
|
3678
|
-
"fingerprint": "
|
3677
|
+
"version": "0.0.250",
|
3678
|
+
"fingerprint": "M7kXkErZAc2XL3T1kYM+THXcvN+DzuM+7D/HdyDQJCI="
|
3679
3679
|
}
|
package/lib/resolve.js
CHANGED
@@ -61,5 +61,5 @@ class AwsCdkResolver {
|
|
61
61
|
}
|
62
62
|
exports.AwsCdkResolver = AwsCdkResolver;
|
63
63
|
_a = JSII_RTTI_SYMBOL_1;
|
64
|
-
AwsCdkResolver[_a] = { fqn: "@cdk8s/awscdk-resolver.AwsCdkResolver", version: "0.0.
|
64
|
+
AwsCdkResolver[_a] = { fqn: "@cdk8s/awscdk-resolver.AwsCdkResolver", version: "0.0.250" };
|
65
65
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXNvbHZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsaURBQTZDO0FBQzdDLDZCQUE2QjtBQUM3Qiw2Q0FBK0U7QUFJL0UsTUFBYSxjQUFjO0lBRWxCLE9BQU8sQ0FBQyxPQUEwQjtRQUV2QyxJQUFJLENBQUMsbUJBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkMsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUN0QywrREFBK0Q7WUFDL0QsbUJBQW1CO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLE9BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNsRCxPQUFPLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ2IsMkVBQTJFO1lBQzNFLGtFQUFrRTtZQUNsRSwyRUFBMkU7WUFDM0UsK0VBQStFO1lBQy9FLCtDQUErQztZQUMvQyxPQUFPLENBQUMsWUFBWSxDQUFDLG9DQUFvQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLENBQUM7SUFFSCxDQUFDO0lBRU8sVUFBVSxDQUFDLEtBQWE7UUFFOUIsTUFBTSxlQUFlLEdBQVksRUFBRSxDQUFDO1FBRXBDLEtBQUssTUFBTSxLQUFLLElBQUksMEJBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDN0QsSUFBSSx1QkFBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBQ3JDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLHVCQUFTLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQWMsQ0FBQztnQkFDN0csa0ZBQWtGO2dCQUNsRix3REFBd0Q7Z0JBQ3hELElBQUksTUFBTTtvQkFBRSxPQUFPLE1BQU0sQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQztRQUVELDZCQUE2QjtRQUM3Qiw2QkFBNkI7UUFDN0Isb0NBQW9DO1FBQ3BDLG9GQUFvRjtRQUNwRiwrREFBK0Q7UUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsS0FBSyx1QkFBdUIsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXZJLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFpQjtRQUV4QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLHVCQUF1QixDQUFDLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsNEJBQVksRUFBQyxPQUFPLENBQUMsUUFBUSxFQUFFO1lBQy9DLE1BQU07WUFDTixtQkFBSyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTO1lBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtTQUNmLEVBQUUsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBRWhFLENBQUM7O0FBOURILHdDQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWNGaWxlU3luYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IFRva2VuLCBTdGFjaywgVG9rZW5pemF0aW9uLCBSZWZlcmVuY2UsIENmbk91dHB1dCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IElSZXNvbHZlciwgUmVzb2x1dGlvbkNvbnRleHQgfSBmcm9tICdjZGs4cyc7XG5cblxuZXhwb3J0IGNsYXNzIEF3c0Nka1Jlc29sdmVyIGltcGxlbWVudHMgSVJlc29sdmVyIHtcblxuICBwdWJsaWMgcmVzb2x2ZShjb250ZXh0OiBSZXNvbHV0aW9uQ29udGV4dCkge1xuXG4gICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoY29udGV4dC52YWx1ZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRleHQudmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICAvLyBzaG91bGQgYmUgb2sgYmVjYXVzZSB3ZSBvbmx5IHJlc29sdmUgQ2ZuT3V0cHV0IHZhbHVlcywgd2hpY2hcbiAgICAgIC8vIG11c3QgYmUgc3RyaW5ncy5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCB2YWx1ZSB0eXBlOiAke3R5cGVvZihjb250ZXh0LnZhbHVlKX0gKEV4cGVjdGVkICdzdHJpbmcnKWApO1xuICAgIH1cblxuICAgIGNvbnN0IG91dHB1dCA9IHRoaXMuZmluZE91dHB1dChjb250ZXh0LnZhbHVlKTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgb3V0cHV0VmFsdWUgPSB0aGlzLmZldGNoT3V0cHV0VmFsdWUob3V0cHV0KTtcbiAgICAgIGNvbnRleHQucmVwbGFjZVZhbHVlKG91dHB1dFZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIGlmIGJvdGggY2RrOHMgYW5kIEFXUyBDREsgYXBwbGljYXRpb25zIGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgc2FtZSBmaWxlLFxuICAgICAgLy8gYSBjZGs4cyBzeW50aCBpcyBnb2luZyB0byBoYXBwZW4gYmVmb3JlIHRoZSBBV1MgQ0RLIGRlcGxveW1lbnQuXG4gICAgICAvLyBpbiB0aGlzIGNhc2Ugd2UgbXVzdCBzd2FsbG93IHRoZSBlcnJvciwgb3RoZXJ3aXNlIHRoZSBBV1MgQ0RLIGRlcGxveW1lbnRcbiAgICAgIC8vIHdvbid0IGJlIGFibGUgdG8gZ28gdGhyb3VnaC4gd2UgcmVwbGFjZSB0aGUgdmFsdWUgd2l0aCBzb21ldGhpbmcgdG8gaW5kaWNhdGVcbiAgICAgIC8vIHRoYXQgYSBmZXRjaGluZyBhdHRlbXB0IHdhcyBtYWRlIGFuZCBmYWlsZWQuXG4gICAgICBjb250ZXh0LnJlcGxhY2VWYWx1ZShgRmFpbGVkIGZldGNoaW5nIHZhbHVlIGZvciBvdXRwdXQgJHtvdXRwdXQubm9kZS5wYXRofTogJHtlcnJ9YCk7XG4gICAgfVxuXG4gIH1cblxuICBwcml2YXRlIGZpbmRPdXRwdXQodmFsdWU6IHN0cmluZykge1xuXG4gICAgY29uc3QgaW5zcGVjdGVkU3RhY2tzOiBTdGFja1tdID0gW107XG5cbiAgICBmb3IgKGNvbnN0IHRva2VuIG9mIFRva2VuaXphdGlvbi5yZXZlcnNlU3RyaW5nKHZhbHVlKS50b2tlbnMpIHtcbiAgICAgIGlmIChSZWZlcmVuY2UuaXNSZWZlcmVuY2UodG9rZW4pKSB7XG4gICAgICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodG9rZW4udGFyZ2V0KTtcbiAgICAgICAgaW5zcGVjdGVkU3RhY2tzLnB1c2goc3RhY2spO1xuICAgICAgICBjb25zdCBvdXRwdXQgPSBzdGFjay5ub2RlLmZpbmRBbGwoKS5maWx0ZXIoYyA9PiBjIGluc3RhbmNlb2YgQ2ZuT3V0cHV0ICYmIGMudmFsdWUgPT09IHZhbHVlKVswXSBhcyBDZm5PdXRwdXQ7XG4gICAgICAgIC8vIHdlIGRvbid0IHJlYWxseSBjYXJlIGlmIHRoZXJlIGFyZSBtb3JlIG91dHB1dHMgKHBvc3NpYmx5IGZyb20gZGlmZmVyZW50IHN0YWNrcylcbiAgICAgICAgLy8gdGhhdCBwb2ludCB0byB0aGUgc2FtZSB2YWx1ZS4gdGhlIGZpcnN0IHdpbGwgc3VmZmljZS5cbiAgICAgICAgaWYgKG91dHB1dCkgcmV0dXJuIG91dHB1dDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgZWl0aGVyOlxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gIDEuIFVzZXIgZGlkbid0IGRlZmluZSBhbiBvdXRwdXQuXG4gICAgLy8gIDIuIE91dHB1dCB3YXMgZGVmaW5lZCBpbiBhIGRpZmZlcmVudCBzdGFjayB0aGFuIHRoZSB0b2tlbnMgY29tcHJpc2luZyBpdHMgdmFsdWUuXG4gICAgLy8gIDMuIE5vbmUgb2YgdGhlIHRva2VucyBjb21wcmlzaW5nIHRoZSB2YWx1ZSBhcmUgYSBSZWZlcmVuY2UuXG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gZmluZCBvdXRwdXQgZGVmaW5lZCBmb3IgJHt2YWx1ZX0gKEluc3BlY3RlZCBzdGFja3M6ICR7aW5zcGVjdGVkU3RhY2tzLm1hcChzID0+IHMuc3RhY2tOYW1lKS5qb2luKCcsJyl9KWApO1xuXG4gIH1cblxuICBwcml2YXRlIGZldGNoT3V0cHV0VmFsdWUob3V0cHV0OiBDZm5PdXRwdXQpIHtcblxuICAgIGNvbnN0IHNjcmlwdCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLicsICdsaWInLCAnZmV0Y2gtb3V0cHV0LXZhbHVlLmpzJyk7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZXhlY0ZpbGVTeW5jKHByb2Nlc3MuZXhlY1BhdGgsIFtcbiAgICAgIHNjcmlwdCxcbiAgICAgIFN0YWNrLm9mKG91dHB1dCkuc3RhY2tOYW1lLFxuICAgICAgb3V0cHV0Lm5vZGUuaWQsXG4gICAgXSwgeyBlbmNvZGluZzogJ3V0Zi04Jywgc3RkaW86IFsncGlwZSddIH0pLnRvU3RyaW5nKCkudHJpbSgpKTtcblxuICB9XG5cbn1cbiJdfQ==
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
**2.0.4 / 2025-02-20**
|
3
|
+
- remove console log
|
4
|
+
|
5
|
+
**2.0.3 / 2025-02-20**
|
6
|
+
- fix for string which are falsly identified as e-notation
|
7
|
+
|
8
|
+
**2.0.1 / 2025-02-20**
|
9
|
+
- fix: handle only zeros
|
10
|
+
- fix: return original string when NaN
|
11
|
+
|
12
|
+
**2.0.0 / 2025-02-20**
|
13
|
+
- Migrating to ESM modules. No functional change
|
14
|
+
|
15
|
+
**1.1.0 / 2025-02-20**
|
16
|
+
- fix (#9): support missing floating point and e notations
|
@@ -1,6 +1,16 @@
|
|
1
1
|
# strnum
|
2
2
|
Parse string into Number based on configuration
|
3
3
|
|
4
|
+
## Users
|
5
|
+
|
6
|
+
<a href="https://github.com/aws-amplify" target="_blank"><img src="https://avatars.githubusercontent.com/u/41077760?s=100&v=4"></a>
|
7
|
+
<a href="https://github.com/astrapay" target="_blank"><img src="https://avatars.githubusercontent.com/u/90901882?s=100&v=4"></a>
|
8
|
+
<a href="https://github.com/process-analytics" target="_blank"><img src="https://avatars.githubusercontent.com/u/60110287?s=100&v=4"></a>
|
9
|
+
<a href="https://github.com/NaturalIntelligence" target="_blank"><img src="https://avatars.githubusercontent.com/u/16322633?s=100&v=4"></a>
|
10
|
+
Many React Native projects and plugins
|
11
|
+
|
12
|
+
## Usage
|
13
|
+
|
4
14
|
```bash
|
5
15
|
npm install strnum
|
6
16
|
```
|
@@ -80,7 +90,8 @@ toNumber("+1212121212", { skipLike: /\+[0-9]{10}/} )); //"+1212121212"
|
|
80
90
|
|
81
91
|
Supported Options
|
82
92
|
```js
|
83
|
-
hex
|
93
|
+
hex: true, //when hexadecimal string should be parsed
|
84
94
|
leadingZeros: true, //when number with leading zeros like 08 should be parsed. 0.0 is not impacted
|
85
|
-
eNotation: true
|
86
|
-
|
95
|
+
eNotation: true, //when number with eNotation or number parsed in eNotation should be considered
|
96
|
+
skipLike: /regex/ //when string should not be parsed when it matches the specified regular expression
|
97
|
+
```
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "strnum",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.1",
|
4
4
|
"description": "Parse String to Number based on configuration",
|
5
5
|
"main": "strnum.js",
|
6
6
|
"scripts": {
|
@@ -18,7 +18,13 @@
|
|
18
18
|
},
|
19
19
|
"author": "Amit Gupta (https://amitkumargupta.work/)",
|
20
20
|
"license": "MIT",
|
21
|
+
"funding": [
|
22
|
+
{
|
23
|
+
"type": "github",
|
24
|
+
"url": "https://github.com/sponsors/NaturalIntelligence"
|
25
|
+
}
|
26
|
+
],
|
21
27
|
"devDependencies": {
|
22
|
-
"jasmine": "^
|
28
|
+
"jasmine": "^5.6.0"
|
23
29
|
}
|
24
30
|
}
|
@@ -1,78 +1,71 @@
|
|
1
1
|
const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;
|
2
|
-
const numRegex = /^([\-\+])?(0*)(
|
3
|
-
// const octRegex =
|
2
|
+
const numRegex = /^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/;
|
3
|
+
// const octRegex = /^0x[a-z0-9]+/;
|
4
4
|
// const binRegex = /0x[a-z0-9]+/;
|
5
5
|
|
6
|
-
|
7
|
-
//polyfill
|
8
|
-
if (!Number.parseInt && window.parseInt) {
|
9
|
-
Number.parseInt = window.parseInt;
|
10
|
-
}
|
11
|
-
if (!Number.parseFloat && window.parseFloat) {
|
12
|
-
Number.parseFloat = window.parseFloat;
|
13
|
-
}
|
14
|
-
|
15
|
-
|
6
|
+
|
16
7
|
const consider = {
|
17
8
|
hex : true,
|
9
|
+
// oct: false,
|
18
10
|
leadingZeros: true,
|
19
11
|
decimalPoint: "\.",
|
20
|
-
eNotation: true
|
12
|
+
eNotation: true,
|
21
13
|
//skipLike: /regex/
|
22
14
|
};
|
23
15
|
|
24
16
|
function toNumber(str, options = {}){
|
25
|
-
// const options = Object.assign({}, consider);
|
26
|
-
// if(opt.leadingZeros === false){
|
27
|
-
// options.leadingZeros = false;
|
28
|
-
// }else if(opt.hex === false){
|
29
|
-
// options.hex = false;
|
30
|
-
// }
|
31
|
-
|
32
17
|
options = Object.assign({}, consider, options );
|
33
18
|
if(!str || typeof str !== "string" ) return str;
|
34
|
-
|
19
|
+
else if(str==="0") return 0;
|
20
|
+
|
35
21
|
let trimmedStr = str.trim();
|
36
|
-
// if(trimmedStr === "0.0") return 0;
|
37
|
-
// else if(trimmedStr === "+0.0") return 0;
|
38
|
-
// else if(trimmedStr === "-0.0") return -0;
|
39
22
|
|
40
23
|
if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;
|
41
24
|
else if (options.hex && hexRegex.test(trimmedStr)) {
|
42
|
-
return
|
43
|
-
// }
|
25
|
+
return parse_int(trimmedStr, 16);
|
26
|
+
// }else if (options.oct && octRegex.test(str)) {
|
44
27
|
// return Number.parseInt(val, 8);
|
28
|
+
}else if (trimmedStr.search(/[eE]/)!== -1) { //eNotation
|
29
|
+
const notation = trimmedStr.match(/^([-\+])?(0*)([0-9]*(\.[0-9]*)?[eE][-\+]?[0-9]+)$/);
|
30
|
+
// +00.123 => [ , '+', '00', '.123', ..
|
31
|
+
if(notation){
|
32
|
+
// console.log(notation)
|
33
|
+
if(options.leadingZeros){ //accept with leading zeros
|
34
|
+
trimmedStr = (notation[1] || "") + notation[3];
|
35
|
+
}else{
|
36
|
+
if(notation[2] === "0" && notation[3][0]=== "."){ //valid number
|
37
|
+
}else{
|
38
|
+
return str;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
return options.eNotation ? Number(trimmedStr) : str;
|
42
|
+
}else{
|
43
|
+
return str;
|
44
|
+
}
|
45
45
|
// }else if (options.parseBin && binRegex.test(str)) {
|
46
46
|
// return Number.parseInt(val, 2);
|
47
47
|
}else{
|
48
48
|
//separate negative sign, leading zeros, and rest number
|
49
49
|
const match = numRegex.exec(trimmedStr);
|
50
|
+
// +00.123 => [ , '+', '00', '.123', ..
|
50
51
|
if(match){
|
51
52
|
const sign = match[1];
|
52
53
|
const leadingZeros = match[2];
|
53
54
|
let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros
|
54
55
|
//trim ending zeros for floating number
|
55
56
|
|
56
|
-
const eNotation = match[4] || match[6];
|
57
57
|
if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== ".") return str; //-0123
|
58
58
|
else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== ".") return str; //0123
|
59
|
+
else if(options.leadingZeros && leadingZeros===str) return 0; //00
|
60
|
+
|
59
61
|
else{//no leading zeros or leading zeros are allowed
|
60
62
|
const num = Number(trimmedStr);
|
61
63
|
const numStr = "" + num;
|
64
|
+
|
62
65
|
if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation
|
63
66
|
if(options.eNotation) return num;
|
64
67
|
else return str;
|
65
|
-
}else if(eNotation){ //given number has enotation
|
66
|
-
if(options.eNotation) return num;
|
67
|
-
else return str;
|
68
68
|
}else if(trimmedStr.indexOf(".") !== -1){ //floating number
|
69
|
-
// const decimalPart = match[5].substr(1);
|
70
|
-
// const intPart = trimmedStr.substr(0,trimmedStr.indexOf("."));
|
71
|
-
|
72
|
-
|
73
|
-
// const p = numStr.indexOf(".");
|
74
|
-
// const givenIntPart = numStr.substr(0,p);
|
75
|
-
// const givenDecPart = numStr.substr(p+1);
|
76
69
|
if(numStr === "0" && (numTrimmedByZeros === "") ) return num; //0.0
|
77
70
|
else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000
|
78
71
|
else if( sign && numStr === "-"+numTrimmedByZeros) return num;
|
@@ -80,26 +73,11 @@ function toNumber(str, options = {}){
|
|
80
73
|
}
|
81
74
|
|
82
75
|
if(leadingZeros){
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
// }else return str;
|
87
|
-
if(numTrimmedByZeros === numStr) return num;
|
88
|
-
else if(sign+numTrimmedByZeros === numStr) return num;
|
89
|
-
else return str;
|
76
|
+
return (numTrimmedByZeros === numStr) || (sign+numTrimmedByZeros === numStr) ? num : str
|
77
|
+
}else {
|
78
|
+
return (trimmedStr === numStr) || (trimmedStr === sign+numStr) ? num : str
|
90
79
|
}
|
91
|
-
|
92
|
-
if(trimmedStr === numStr) return num;
|
93
|
-
else if(trimmedStr === sign+numStr) return num;
|
94
|
-
// else{
|
95
|
-
// //number with +/- sign
|
96
|
-
// trimmedStr.test(/[-+][0-9]);
|
97
|
-
|
98
|
-
// }
|
99
|
-
return str;
|
100
80
|
}
|
101
|
-
// else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;
|
102
|
-
|
103
81
|
}else{ //non-numeric string
|
104
82
|
return str;
|
105
83
|
}
|
@@ -121,4 +99,13 @@ function trimZeros(numStr){
|
|
121
99
|
}
|
122
100
|
return numStr;
|
123
101
|
}
|
124
|
-
|
102
|
+
|
103
|
+
function parse_int(numStr, base){
|
104
|
+
//polyfill
|
105
|
+
if(parseInt) return parseInt(numStr, base);
|
106
|
+
else if(Number.parseInt) return Number.parseInt(numStr, base);
|
107
|
+
else if(window && window.parseInt) return window.parseInt(numStr, base);
|
108
|
+
else throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")
|
109
|
+
}
|
110
|
+
|
111
|
+
module.exports = toNumber;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
const toNumber = require("./strnum");
|
1
|
+
const toNumber = require("./strnum.js");
|
2
2
|
|
3
3
|
describe("Should convert all the valid numeric strings to number", () => {
|
4
4
|
it("should return undefined, null, empty string, or non-numeric as it is", () => {
|
@@ -6,6 +6,7 @@ describe("Should convert all the valid numeric strings to number", () => {
|
|
6
6
|
expect(toNumber(null)).toEqual(null);
|
7
7
|
expect(toNumber("")).toEqual("");
|
8
8
|
expect(toNumber("string")).toEqual("string");
|
9
|
+
expect(toNumber("e89794659669cb7bb967db73a7ea6889c3891727")).toEqual("e89794659669cb7bb967db73a7ea6889c3891727");
|
9
10
|
});
|
10
11
|
it("should not parse number with spaces or comma", () => {
|
11
12
|
expect(toNumber("12,12")).toEqual("12,12");
|
@@ -34,6 +35,14 @@ describe("Should convert all the valid numeric strings to number", () => {
|
|
34
35
|
expect(toNumber("JVBERi0xLjMNCiXi48")).toEqual("JVBERi0xLjMNCiXi48");
|
35
36
|
})
|
36
37
|
it("leading zeros", () => {
|
38
|
+
expect(toNumber("0")).toEqual(0);
|
39
|
+
expect(toNumber("00")).toEqual(0);
|
40
|
+
expect(toNumber("00.0")).toEqual(0);
|
41
|
+
|
42
|
+
expect(toNumber("0",{ leadingZeros : false})).toEqual(0);
|
43
|
+
expect(toNumber("00",{ leadingZeros : false})).toEqual("00");
|
44
|
+
expect(toNumber("00.0",{ leadingZeros : false})).toEqual("00.0");
|
45
|
+
|
37
46
|
expect(toNumber("06")).toEqual(6);
|
38
47
|
expect(toNumber("06", { leadingZeros : true})).toEqual(6);
|
39
48
|
expect(toNumber("06", { leadingZeros : false})).toEqual("06");
|
@@ -51,11 +60,12 @@ describe("Should convert all the valid numeric strings to number", () => {
|
|
51
60
|
expect(toNumber("20.21.030") ).toEqual("20.21.030");
|
52
61
|
expect(toNumber("0.21.030") ).toEqual("0.21.030");
|
53
62
|
expect(toNumber("0.21.") ).toEqual("0.21.");
|
54
|
-
expect(toNumber("0.") ).toEqual("0.");
|
55
|
-
expect(toNumber("1.") ).toEqual("1.");
|
56
63
|
});
|
57
64
|
it("floating point and leading zeros", () => {
|
58
|
-
expect(toNumber("0.
|
65
|
+
expect(toNumber("0.")).toEqual(0);
|
66
|
+
expect(toNumber("+0.")).toEqual(0);
|
67
|
+
expect(toNumber("-0.")).toEqual(-0);
|
68
|
+
expect(toNumber("1.") ).toEqual(1);
|
59
69
|
expect(toNumber("00.00")).toEqual(0);
|
60
70
|
expect(toNumber("0.06")).toEqual(0.06);
|
61
71
|
expect(toNumber("00.6")).toEqual(0.6);
|
@@ -108,10 +118,13 @@ describe("Should convert all the valid numeric strings to number", () => {
|
|
108
118
|
|
109
119
|
expect(toNumber("-1.0e2") ).toEqual(-100);
|
110
120
|
expect(toNumber("1.0e-2")).toEqual(0.01);
|
111
|
-
|
121
|
+
|
112
122
|
expect(toNumber("420926189200190257681175017717") ).toEqual(4.209261892001902e+29);
|
113
123
|
expect(toNumber("420926189200190257681175017717" , { eNotation: false} )).toEqual("420926189200190257681175017717");
|
114
|
-
|
124
|
+
|
125
|
+
expect(toNumber("1e-2")).toEqual(0.01);
|
126
|
+
expect(toNumber("1e+2")).toEqual(100);
|
127
|
+
expect(toNumber("1.e+2")).toEqual(100);
|
115
128
|
});
|
116
129
|
|
117
130
|
it("scientific notation with upper E", () => {
|
package/package.json
CHANGED
@@ -42,31 +42,31 @@
|
|
42
42
|
"organization": false
|
43
43
|
},
|
44
44
|
"devDependencies": {
|
45
|
-
"@cdk8s/projen-common": "0.0.
|
45
|
+
"@cdk8s/projen-common": "0.0.577",
|
46
46
|
"@stylistic/eslint-plugin": "^2",
|
47
47
|
"@types/fs-extra": "^11.0.4",
|
48
48
|
"@types/jest": "^27",
|
49
49
|
"@types/node": "16.18.78",
|
50
50
|
"@typescript-eslint/eslint-plugin": "^8",
|
51
51
|
"@typescript-eslint/parser": "^8",
|
52
|
-
"aws-cdk": "^2.
|
52
|
+
"aws-cdk": "^2.1000.2",
|
53
53
|
"aws-cdk-lib": "2.109.0",
|
54
54
|
"cdk8s": "2.68.91",
|
55
|
-
"cdk8s-cli": "^2.198.
|
55
|
+
"cdk8s-cli": "^2.198.331",
|
56
56
|
"commit-and-tag-version": "^12",
|
57
57
|
"constructs": "10.3.0",
|
58
58
|
"eslint": "^9",
|
59
|
-
"eslint-import-resolver-typescript": "^3.8.
|
59
|
+
"eslint-import-resolver-typescript": "^3.8.3",
|
60
60
|
"eslint-plugin-import": "^2.31.0",
|
61
61
|
"fs-extra": "^11.3.0",
|
62
62
|
"jest": "^27",
|
63
63
|
"jest-junit": "^16",
|
64
64
|
"jsii": "^5",
|
65
|
-
"jsii-diff": "^1.
|
65
|
+
"jsii-diff": "^1.107.0",
|
66
66
|
"jsii-docgen": "^10.5.0",
|
67
|
-
"jsii-pacmak": "^1.
|
67
|
+
"jsii-pacmak": "^1.107.0",
|
68
68
|
"jsii-rosetta": "^5",
|
69
|
-
"projen": "^0.91.
|
69
|
+
"projen": "^0.91.12",
|
70
70
|
"ts-jest": "^27",
|
71
71
|
"ts-node": "^10.9.2",
|
72
72
|
"typescript": "^5.7.3"
|
@@ -93,7 +93,7 @@
|
|
93
93
|
"publishConfig": {
|
94
94
|
"access": "public"
|
95
95
|
},
|
96
|
-
"version": "0.0.
|
96
|
+
"version": "0.0.250",
|
97
97
|
"jest": {
|
98
98
|
"coverageProvider": "v8",
|
99
99
|
"testMatch": [
|