es-toolkit 1.20.0-dev.649 → 1.20.0-dev.650

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.
@@ -182,3 +182,6 @@ export { inRange } from './math/inRange.mjs';
182
182
  export { random } from './math/random.mjs';
183
183
  export { toPath } from './util/toPath.mjs';
184
184
  export { toString } from './util/toString.mjs';
185
+ export { toNumber } from './util/toNumber.mjs';
186
+ export { toInteger } from './util/toInteger.mjs';
187
+ export { toFinite } from './util/toFinite.mjs';
@@ -182,3 +182,6 @@ export { inRange } from './math/inRange.js';
182
182
  export { random } from './math/random.js';
183
183
  export { toPath } from './util/toPath.js';
184
184
  export { toString } from './util/toString.js';
185
+ export { toNumber } from './util/toNumber.js';
186
+ export { toInteger } from './util/toInteger.js';
187
+ export { toFinite } from './util/toFinite.js';
@@ -1589,6 +1589,31 @@ function random(...args) {
1589
1589
  }
1590
1590
  }
1591
1591
 
1592
+ function toNumber(value) {
1593
+ if (isSymbol(value)) {
1594
+ return NaN;
1595
+ }
1596
+ return Number(value);
1597
+ }
1598
+
1599
+ function toFinite(value) {
1600
+ if (!value) {
1601
+ return value === 0 ? value : 0;
1602
+ }
1603
+ value = toNumber(value);
1604
+ if (value === Infinity || value === -Infinity) {
1605
+ const sign = value < 0 ? -1 : 1;
1606
+ return sign * Number.MAX_VALUE;
1607
+ }
1608
+ return value === value ? value : 0;
1609
+ }
1610
+
1611
+ function toInteger(value) {
1612
+ const finite = toFinite(value);
1613
+ const remainder = finite % 1;
1614
+ return remainder ? finite - remainder : finite;
1615
+ }
1616
+
1592
1617
  exports.at = zipWith.at;
1593
1618
  exports.compact = zipWith.compact;
1594
1619
  exports.countBy = zipWith.countBy;
@@ -1766,6 +1791,9 @@ exports.spread = spread;
1766
1791
  exports.startCase = startCase;
1767
1792
  exports.startsWith = startsWith;
1768
1793
  exports.throttle = throttle;
1794
+ exports.toFinite = toFinite;
1795
+ exports.toInteger = toInteger;
1796
+ exports.toNumber = toNumber;
1769
1797
  exports.toPath = toPath;
1770
1798
  exports.toString = toString;
1771
1799
  exports.trim = trim;
@@ -182,3 +182,6 @@ export { inRange } from './math/inRange.mjs';
182
182
  export { random } from './math/random.mjs';
183
183
  export { toPath } from './util/toPath.mjs';
184
184
  export { toString } from './util/toString.mjs';
185
+ export { toNumber } from './util/toNumber.mjs';
186
+ export { toInteger } from './util/toInteger.mjs';
187
+ export { toFinite } from './util/toFinite.mjs';
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts `value` to a finite number.
3
+ *
4
+ * @param {unknown} value - The value to convert.
5
+ * @returns {number} Returns the number.
6
+ *
7
+ * @example
8
+ * toNumber(3.2); // => 3.2
9
+ * toNumber(Number.MIN_VALUE); // => 5e-324
10
+ * toNumber(Infinity); // => 1.7976931348623157e+308
11
+ * toNumber('3.2'); // => 3.2
12
+ * toNumber(Symbol.iterator); // => 0
13
+ * toNumber(NaN); // => 0
14
+ */
15
+ declare function toFinite(value?: unknown): number;
16
+
17
+ export { toFinite };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts `value` to a finite number.
3
+ *
4
+ * @param {unknown} value - The value to convert.
5
+ * @returns {number} Returns the number.
6
+ *
7
+ * @example
8
+ * toNumber(3.2); // => 3.2
9
+ * toNumber(Number.MIN_VALUE); // => 5e-324
10
+ * toNumber(Infinity); // => 1.7976931348623157e+308
11
+ * toNumber('3.2'); // => 3.2
12
+ * toNumber(Symbol.iterator); // => 0
13
+ * toNumber(NaN); // => 0
14
+ */
15
+ declare function toFinite(value?: unknown): number;
16
+
17
+ export { toFinite };
@@ -0,0 +1,15 @@
1
+ import { toNumber } from './toNumber.mjs';
2
+
3
+ function toFinite(value) {
4
+ if (!value) {
5
+ return value === 0 ? value : 0;
6
+ }
7
+ value = toNumber(value);
8
+ if (value === Infinity || value === -Infinity) {
9
+ const sign = value < 0 ? -1 : 1;
10
+ return sign * Number.MAX_VALUE;
11
+ }
12
+ return value === value ? value : 0;
13
+ }
14
+
15
+ export { toFinite };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts `value` to an integer.
3
+ *
4
+ * @param {unknown} value - The value to convert.
5
+ * @returns {number} Returns the number.
6
+ *
7
+ * @example
8
+ * toInteger(3.2); // => 3
9
+ * toInteger(Number.MIN_VALUE); // => 0
10
+ * toInteger(Infinity); // => 1.7976931348623157e+308
11
+ * toInteger('3.2'); // => 3
12
+ * toInteger(Symbol.iterator); // => 0
13
+ * toInteger(NaN); // => 0
14
+ */
15
+ declare function toInteger(value?: unknown): number;
16
+
17
+ export { toInteger };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts `value` to an integer.
3
+ *
4
+ * @param {unknown} value - The value to convert.
5
+ * @returns {number} Returns the number.
6
+ *
7
+ * @example
8
+ * toInteger(3.2); // => 3
9
+ * toInteger(Number.MIN_VALUE); // => 0
10
+ * toInteger(Infinity); // => 1.7976931348623157e+308
11
+ * toInteger('3.2'); // => 3
12
+ * toInteger(Symbol.iterator); // => 0
13
+ * toInteger(NaN); // => 0
14
+ */
15
+ declare function toInteger(value?: unknown): number;
16
+
17
+ export { toInteger };
@@ -0,0 +1,9 @@
1
+ import { toFinite } from './toFinite.mjs';
2
+
3
+ function toInteger(value) {
4
+ const finite = toFinite(value);
5
+ const remainder = finite % 1;
6
+ return remainder ? finite - remainder : finite;
7
+ }
8
+
9
+ export { toInteger };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Converts `value` to a number.
3
+ *
4
+ * Unlike `Number()`, this function returns `NaN` for symbols.
5
+ *
6
+ * @param {unknown} value - The value to convert.
7
+ * @returns {number} Returns the number.
8
+ *
9
+ * @example
10
+ * toNumber(3.2); // => 3.2
11
+ * toNumber(Number.MIN_VALUE); // => 5e-324
12
+ * toNumber(Infinity); // => Infinity
13
+ * toNumber('3.2'); // => 3.2
14
+ * toNumber(Symbol.iterator); // => NaN
15
+ * toNumber(NaN); // => NaN
16
+ */
17
+ declare function toNumber(value?: unknown): number;
18
+
19
+ export { toNumber };
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Converts `value` to a number.
3
+ *
4
+ * Unlike `Number()`, this function returns `NaN` for symbols.
5
+ *
6
+ * @param {unknown} value - The value to convert.
7
+ * @returns {number} Returns the number.
8
+ *
9
+ * @example
10
+ * toNumber(3.2); // => 3.2
11
+ * toNumber(Number.MIN_VALUE); // => 5e-324
12
+ * toNumber(Infinity); // => Infinity
13
+ * toNumber('3.2'); // => 3.2
14
+ * toNumber(Symbol.iterator); // => NaN
15
+ * toNumber(NaN); // => NaN
16
+ */
17
+ declare function toNumber(value?: unknown): number;
18
+
19
+ export { toNumber };
@@ -0,0 +1,10 @@
1
+ import { isSymbol } from '../predicate/isSymbol.mjs';
2
+
3
+ function toNumber(value) {
4
+ if (isSymbol(value)) {
5
+ return NaN;
6
+ }
7
+ return Number(value);
8
+ }
9
+
10
+ export { toNumber };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "es-toolkit",
3
3
  "description": "A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.",
4
- "version": "1.20.0-dev.649+c9346d50",
4
+ "version": "1.20.0-dev.650+d47ee5f4",
5
5
  "homepage": "https://es-toolkit.slash.page",
6
6
  "bugs": "https://github.com/toss/es-toolkit/issues",
7
7
  "repository": {