@alwatr/is-number 9.33.0 → 9.33.1

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 CHANGED
@@ -16,14 +16,14 @@ npm install @alwatr/is-number
16
16
  import {isNumber, toNumber, isFiniteNumber} from '@alwatr/is-number';
17
17
 
18
18
  // Check if a value is a number
19
- isNumber(123); // true
20
- isNumber('123'); // true
21
- isNumber('abc'); // false
19
+ isNumber(123); // true
20
+ isNumber('123'); // true
21
+ isNumber('abc'); // false
22
22
 
23
23
  // Convert a value to a number if possible
24
- toNumber(123); // 123
25
- toNumber('123'); // 123
26
- toNumber('abc'); // null
24
+ toNumber(123); // 123
25
+ toNumber('123'); // 123
26
+ toNumber('abc'); // null
27
27
 
28
28
  // Check if a value is a finite number (without type coercion)
29
29
  isFiniteNumber(123); // true
@@ -51,12 +51,12 @@ this doesn't coerce values to numbers before checking.
51
51
  JavaScript type behavior can be confusing. This library helps to simplify number validation:
52
52
 
53
53
  ```ts
54
- console.log(typeof '123'); // 'string'
55
- console.log(+[]); // 0
56
- console.log(+''); // 0
57
- console.log(+' '); // 0
58
- console.log(typeof NaN); // 'number'
59
- console.log(typeof Infinity); // 'number'
54
+ console.log(typeof '123'); // 'string'
55
+ console.log(+[]); // 0
56
+ console.log(+''); // 0
57
+ console.log(+' '); // 0
58
+ console.log(typeof NaN); // 'number'
59
+ console.log(typeof Infinity); // 'number'
60
60
  ```
61
61
 
62
62
  ### isNumber Examples
@@ -64,37 +64,37 @@ console.log(typeof Infinity); // 'number'
64
64
  #### Returns `true`
65
65
 
66
66
  ```ts
67
- isNumber(5e3); // true
68
- isNumber(0xff); // true
69
- isNumber(-1.1); // true
70
- isNumber(0); // true
71
- isNumber(1); // true
72
- isNumber(1.1); // true
73
- isNumber('-1.1'); // true
74
- isNumber('0'); // true
75
- isNumber('0xff'); // true
76
- isNumber('1'); // true
77
- isNumber('1.1'); // true
78
- isNumber('5e3'); // true
79
- isNumber('012'); // true
80
- isNumber(' 123 '); // true
67
+ isNumber(5e3); // true
68
+ isNumber(0xff); // true
69
+ isNumber(-1.1); // true
70
+ isNumber(0); // true
71
+ isNumber(1); // true
72
+ isNumber(1.1); // true
73
+ isNumber('-1.1'); // true
74
+ isNumber('0'); // true
75
+ isNumber('0xff'); // true
76
+ isNumber('1'); // true
77
+ isNumber('1.1'); // true
78
+ isNumber('5e3'); // true
79
+ isNumber('012'); // true
80
+ isNumber(' 123 '); // true
81
81
  ```
82
82
 
83
83
  #### Returns `false`
84
84
 
85
85
  ```ts
86
- isNumber(Infinity); // false
87
- isNumber(NaN); // false
88
- isNumber(null); // false
89
- isNumber(undefined); // false
90
- isNumber(''); // false
91
- isNumber(' '); // false
92
- isNumber('foo'); // false
93
- isNumber('123foo'); // false
94
- isNumber([1]); // false
95
- isNumber([]); // false
96
- isNumber(function () {}); // false
97
- isNumber({}); // false
86
+ isNumber(Infinity); // false
87
+ isNumber(NaN); // false
88
+ isNumber(null); // false
89
+ isNumber(undefined); // false
90
+ isNumber(''); // false
91
+ isNumber(' '); // false
92
+ isNumber('foo'); // false
93
+ isNumber('123foo'); // false
94
+ isNumber([1]); // false
95
+ isNumber([]); // false
96
+ isNumber(function () {}); // false
97
+ isNumber({}); // false
98
98
  ```
99
99
 
100
100
  ### toNumber Examples
@@ -102,33 +102,33 @@ isNumber({}); // false
102
102
  #### Returns a number
103
103
 
104
104
  ```ts
105
- toNumber(5e3); // 5000
106
- toNumber(0xff); // 255
107
- toNumber(-1.1); // -1.1
108
- toNumber(0); // 0
109
- toNumber(1); // 1
110
- toNumber('-1.1'); // -1.1
111
- toNumber('0'); // 0
112
- toNumber('0xff'); // 255
113
- toNumber('5e3'); // 5000
114
- toNumber(' 123 '); // 123
105
+ toNumber(5e3); // 5000
106
+ toNumber(0xff); // 255
107
+ toNumber(-1.1); // -1.1
108
+ toNumber(0); // 0
109
+ toNumber(1); // 1
110
+ toNumber('-1.1'); // -1.1
111
+ toNumber('0'); // 0
112
+ toNumber('0xff'); // 255
113
+ toNumber('5e3'); // 5000
114
+ toNumber(' 123 '); // 123
115
115
  ```
116
116
 
117
117
  #### Returns `null`
118
118
 
119
119
  ```ts
120
- toNumber(Infinity); // null
121
- toNumber(NaN); // null
122
- toNumber(null); // null
123
- toNumber(undefined); // null
124
- toNumber(''); // null
125
- toNumber(' '); // null
126
- toNumber('foo'); // null
127
- toNumber('123foo'); // null
128
- toNumber([1]); // null
129
- toNumber([]); // null
130
- toNumber(function () {}); // null
131
- toNumber({}); // null
120
+ toNumber(Infinity); // null
121
+ toNumber(NaN); // null
122
+ toNumber(null); // null
123
+ toNumber(undefined); // null
124
+ toNumber(''); // null
125
+ toNumber(' '); // null
126
+ toNumber('foo'); // null
127
+ toNumber('123foo'); // null
128
+ toNumber([1]); // null
129
+ toNumber([]); // null
130
+ toNumber(function () {}); // null
131
+ toNumber({}); // null
132
132
  ```
133
133
 
134
134
  ## Sponsors
@@ -0,0 +1,5 @@
1
+ /* 📦 @alwatr/is-number v9.33.1 */
2
+ function z(j){if(typeof Number.isFinite==="function")return Number.isFinite(j);return typeof j==="number"&&isFinite(j)}function A(j){if(typeof j==="number")return j-j===0;if(typeof j==="string"){let k=j.trim();if(k==="")return!1;let q=+k;return z(q)}return!1}function B(j){if(typeof j==="number")return j-j===0?j:null;if(typeof j==="string"){let k=j.trim();if(k==="")return null;let q=+k;return z(q)?q:null}return null}export{B as toNumber,A as isNumber,z as isFiniteNumber};
3
+
4
+ //# debugId=6AE988162A32DAE464756E2164756E21
5
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/main.ts"],
4
+ "sourcesContent": [
5
+ "/**\n * Polyfill for Number.isFinite - properly checks if a value is a finite number\n * without type coercion.\n *\n * @param value - The value to check\n * @returns true if the value is a finite number, false otherwise\n */\nexport function isFiniteNumber(value: unknown): value is number {\n // Use native implementation if available\n if (typeof Number.isFinite === 'function') {\n return Number.isFinite(value);\n }\n // Fallback implementation\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Check if the value is a number or can be converted to a number.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a number or can be converted to a number, otherwise `false`.\n *\n * @example\n * ```ts\n * isNumber(123); // true\n * isNumber('123'); // true\n * isNumber(' 123 '); // true\n * isNumber('0xff'); // true\n * isNumber('-1.1'); // true\n * isNumber(''); // false\n * isNumber(' '); // false\n * isNumber(' 123a '); // false\n * isNumber(NaN); // false\n * isNumber(Infinity); // false\n * isNumber({}); // false\n * isNumber([]); // false\n * isNumber(null); // false\n * isNumber(undefined); // false\n * ```\n */\nexport function isNumber(value: unknown): boolean {\n // Handle number type\n if (typeof value === 'number') {\n return value - value === 0;\n }\n\n // Handle string type\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') return false;\n\n // Use unary plus for fastest string-to-number conversion\n const num = +trimmed;\n return isFiniteNumber(num);\n }\n\n return false;\n}\n\n/**\n * Convert a value to a number if possible.\n *\n * @param value - The value to convert.\n * @returns The converted number if valid, otherwise `null`.\n *\n * @example\n * ```ts\n * toNumber(123); // 123\n * toNumber('123'); // 123\n * toNumber(' 123 '); // 123\n * toNumber('0xff'); // 255\n * toNumber('-1.1'); // -1.1\n * toNumber(''); // null\n * toNumber(' '); // null\n * toNumber('123a'); // null\n * toNumber(NaN); // null\n * toNumber(Infinity); // null\n * toNumber({}); // null\n * toNumber([]); // null\n * toNumber(null); // null\n * toNumber(undefined); // null\n * ```\n */\nexport function toNumber(value: unknown): number | null {\n // Handle number type\n if (typeof value === 'number') {\n return value - value === 0 ? value : null;\n }\n\n // Handle string type\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') return null;\n\n const num = +trimmed;\n return isFiniteNumber(num) ? num : null;\n }\n\n return null;\n}\n"
6
+ ],
7
+ "mappings": ";AAOO,SAAS,CAAc,CAAC,EAAiC,CAE9D,GAAI,OAAO,OAAO,WAAa,WAC7B,OAAO,OAAO,SAAS,CAAK,EAG9B,OAAO,OAAO,IAAU,UAAY,SAAS,CAAK,EA2B7C,SAAS,CAAQ,CAAC,EAAyB,CAEhD,GAAI,OAAO,IAAU,SACnB,OAAO,EAAQ,IAAU,EAI3B,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,IAAY,GAAI,MAAO,GAG3B,IAAM,EAAM,CAAC,EACb,OAAO,EAAe,CAAG,EAG3B,MAAO,GA2BF,SAAS,CAAQ,CAAC,EAA+B,CAEtD,GAAI,OAAO,IAAU,SACnB,OAAO,EAAQ,IAAU,EAAI,EAAQ,KAIvC,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,IAAY,GAAI,OAAO,KAE3B,IAAM,EAAM,CAAC,EACb,OAAO,EAAe,CAAG,EAAI,EAAM,KAGrC,OAAO",
8
+ "debugId": "6AE988162A32DAE464756E2164756E21",
9
+ "names": []
10
+ }
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
- /* 📦 @alwatr/is-number v9.33.0 */
1
+ /* 📦 @alwatr/is-number v9.33.1 */
2
2
  function z(j){if(typeof Number.isFinite==="function")return Number.isFinite(j);return typeof j==="number"&&isFinite(j)}function A(j){if(typeof j==="number")return j-j===0;if(typeof j==="string"){let k=j.trim();if(k==="")return!1;let q=+k;return z(q)}return!1}function B(j){if(typeof j==="number")return j-j===0?j:null;if(typeof j==="string"){let k=j.trim();if(k==="")return null;let q=+k;return z(q)?q:null}return null}export{B as toNumber,A as isNumber,z as isFiniteNumber};
3
3
 
4
- //# debugId=1F31759930AC8AED64756E2164756E21
4
+ //# debugId=6AE988162A32DAE464756E2164756E21
5
5
  //# sourceMappingURL=main.js.map
package/dist/main.js.map CHANGED
@@ -5,6 +5,6 @@
5
5
  "/**\n * Polyfill for Number.isFinite - properly checks if a value is a finite number\n * without type coercion.\n *\n * @param value - The value to check\n * @returns true if the value is a finite number, false otherwise\n */\nexport function isFiniteNumber(value: unknown): value is number {\n // Use native implementation if available\n if (typeof Number.isFinite === 'function') {\n return Number.isFinite(value);\n }\n // Fallback implementation\n return typeof value === 'number' && isFinite(value);\n}\n\n/**\n * Check if the value is a number or can be converted to a number.\n *\n * @param value - The value to check.\n * @returns `true` if the value is a number or can be converted to a number, otherwise `false`.\n *\n * @example\n * ```ts\n * isNumber(123); // true\n * isNumber('123'); // true\n * isNumber(' 123 '); // true\n * isNumber('0xff'); // true\n * isNumber('-1.1'); // true\n * isNumber(''); // false\n * isNumber(' '); // false\n * isNumber(' 123a '); // false\n * isNumber(NaN); // false\n * isNumber(Infinity); // false\n * isNumber({}); // false\n * isNumber([]); // false\n * isNumber(null); // false\n * isNumber(undefined); // false\n * ```\n */\nexport function isNumber(value: unknown): boolean {\n // Handle number type\n if (typeof value === 'number') {\n return value - value === 0;\n }\n\n // Handle string type\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') return false;\n\n // Use unary plus for fastest string-to-number conversion\n const num = +trimmed;\n return isFiniteNumber(num);\n }\n\n return false;\n}\n\n/**\n * Convert a value to a number if possible.\n *\n * @param value - The value to convert.\n * @returns The converted number if valid, otherwise `null`.\n *\n * @example\n * ```ts\n * toNumber(123); // 123\n * toNumber('123'); // 123\n * toNumber(' 123 '); // 123\n * toNumber('0xff'); // 255\n * toNumber('-1.1'); // -1.1\n * toNumber(''); // null\n * toNumber(' '); // null\n * toNumber('123a'); // null\n * toNumber(NaN); // null\n * toNumber(Infinity); // null\n * toNumber({}); // null\n * toNumber([]); // null\n * toNumber(null); // null\n * toNumber(undefined); // null\n * ```\n */\nexport function toNumber(value: unknown): number | null {\n // Handle number type\n if (typeof value === 'number') {\n return value - value === 0 ? value : null;\n }\n\n // Handle string type\n if (typeof value === 'string') {\n const trimmed = value.trim();\n if (trimmed === '') return null;\n\n const num = +trimmed;\n return isFiniteNumber(num) ? num : null;\n }\n\n return null;\n}\n"
6
6
  ],
7
7
  "mappings": ";AAOO,SAAS,CAAc,CAAC,EAAiC,CAE9D,GAAI,OAAO,OAAO,WAAa,WAC7B,OAAO,OAAO,SAAS,CAAK,EAG9B,OAAO,OAAO,IAAU,UAAY,SAAS,CAAK,EA2B7C,SAAS,CAAQ,CAAC,EAAyB,CAEhD,GAAI,OAAO,IAAU,SACnB,OAAO,EAAQ,IAAU,EAI3B,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,IAAY,GAAI,MAAO,GAG3B,IAAM,EAAM,CAAC,EACb,OAAO,EAAe,CAAG,EAG3B,MAAO,GA2BF,SAAS,CAAQ,CAAC,EAA+B,CAEtD,GAAI,OAAO,IAAU,SACnB,OAAO,EAAQ,IAAU,EAAI,EAAQ,KAIvC,GAAI,OAAO,IAAU,SAAU,CAC7B,IAAM,EAAU,EAAM,KAAK,EAC3B,GAAI,IAAY,GAAI,OAAO,KAE3B,IAAM,EAAM,CAAC,EACb,OAAO,EAAe,CAAG,EAAI,EAAM,KAGrC,OAAO",
8
- "debugId": "1F31759930AC8AED64756E2164756E21",
8
+ "debugId": "6AE988162A32DAE464756E2164756E21",
9
9
  "names": []
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alwatr/is-number",
3
- "version": "9.33.0",
3
+ "version": "9.33.1",
4
4
  "description": "A simple utility to Check the value is number or can convert to a number, for example string ' 123 ' can be converted to 123.",
5
5
  "license": "MPL-2.0",
6
6
  "author": "S. Ali Mihandoost <ali.mihandoost@gmail.com> (https://ali.mihandoost.com)",
@@ -15,31 +15,34 @@
15
15
  "exports": {
16
16
  ".": {
17
17
  "types": "./dist/main.d.ts",
18
+ "development": "./dist/dev/main.js",
18
19
  "import": "./dist/main.js",
19
20
  "default": "./dist/main.js"
20
21
  }
21
22
  },
22
23
  "sideEffects": false,
23
24
  "devDependencies": {
24
- "@alwatr/nano-build": "9.25.0",
25
+ "@alwatr/nano-build": "9.33.1",
25
26
  "@alwatr/standard": "9.33.0",
26
- "@alwatr/type-helper": "9.14.0",
27
+ "@alwatr/type-helper": "9.33.1",
27
28
  "typescript": "^6.0.3"
28
29
  },
29
30
  "scripts": {
30
31
  "b": "bun run build",
31
32
  "build": "bun run build:ts && bun run build:es",
32
- "build:es": "nano-build --preset=module src/main.ts",
33
+ "build:es": "bun run build:es:dev && bun run build:es:prod",
34
+ "build:es:dev": "nano-build --preset=module --outdir=dist/dev src/main.ts",
35
+ "build:es:prod": "NODE_ENV=production nano-build --preset=module --outdir=dist src/main.ts",
33
36
  "build:ts": "tsc --build",
34
37
  "cl": "bun run clean",
35
38
  "clean": "rm -rfv dist *.tsbuildinfo",
36
39
  "format": "prettier --write \"src/**/*.ts\"",
37
40
  "lint": "eslint src/ --ext .ts",
38
41
  "t": "bun run test",
39
- "test": "ALWATR_DEBUG=0 bun test",
42
+ "test": "bun test",
40
43
  "w": "bun run watch",
41
44
  "watch": "bun run watch:ts & bun run watch:es",
42
- "watch:es": "bun run build:es --watch",
45
+ "watch:es": "bun run build:es:dev --watch",
43
46
  "watch:ts": "bun run build:ts --watch --preserveWatchOutput"
44
47
  },
45
48
  "files": [
@@ -88,5 +91,5 @@
88
91
  "utility",
89
92
  "utils"
90
93
  ],
91
- "gitHead": "ba7e63efa62c86c7845269f94c4cc9924c38ff21"
94
+ "gitHead": "84fba5b7b428188be17aaaaf062b0b7eaae96555"
92
95
  }