@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 CHANGED
@@ -3674,6 +3674,6 @@
3674
3674
  "symbolId": "src/resolve:AwsCdkResolver"
3675
3675
  }
3676
3676
  },
3677
- "version": "0.0.248",
3678
- "fingerprint": "mVPpn+kWEpYvqbim682CJX7Wkg6qSLSsQJhpPs60mGo="
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.248" };
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 : true, //when hexadecimal string should be parsed
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 //when number with eNotation or number parsed in eNotation should be considered
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.0.5",
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": "^3.10.0"
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*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;
3
- // const octRegex = /0x[a-z0-9]+/;
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 Number.parseInt(trimmedStr, 16);
43
- // } else if (options.parseOct && octRegex.test(str)) {
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
- // if(numTrimmedByZeros === numStr){
84
- // if(options.leadingZeros) return num;
85
- // else return str;
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
- module.exports = toNumber
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.0")).toEqual(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.576",
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.178.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.327",
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.0",
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.106.0",
65
+ "jsii-diff": "^1.107.0",
66
66
  "jsii-docgen": "^10.5.0",
67
- "jsii-pacmak": "^1.106.0",
67
+ "jsii-pacmak": "^1.107.0",
68
68
  "jsii-rosetta": "^5",
69
- "projen": "^0.91.11",
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.248",
96
+ "version": "0.0.250",
97
97
  "jest": {
98
98
  "coverageProvider": "v8",
99
99
  "testMatch": [