util-helpers 4.11.1 → 4.12.2

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.
Files changed (93) hide show
  1. package/dist/util-helpers.js +106 -71
  2. package/dist/util-helpers.js.map +1 -1
  3. package/dist/util-helpers.min.js +1 -1
  4. package/dist/util-helpers.min.js.map +1 -1
  5. package/esm/divide.js +6 -6
  6. package/esm/index.js +35 -1
  7. package/esm/minus.js +6 -6
  8. package/esm/plus.js +6 -6
  9. package/esm/round.js +4 -5
  10. package/esm/times.js +6 -6
  11. package/esm/utils/config.js +2 -1
  12. package/esm/utils/math.util.js +30 -0
  13. package/lib/divide.js +5 -6
  14. package/lib/index.js +6 -0
  15. package/lib/minus.js +5 -6
  16. package/lib/plus.js +5 -6
  17. package/lib/round.js +4 -5
  18. package/lib/times.js +5 -6
  19. package/lib/utils/config.js +3 -1
  20. package/lib/utils/math.util.js +33 -0
  21. package/package.json +3 -1
  22. package/types/src/blobToDataURL.d.ts +25 -0
  23. package/types/src/bytesToSize.d.ts +24 -0
  24. package/types/src/calculateCursorPosition.d.ts +26 -0
  25. package/types/src/dataURLToBlob.d.ts +15 -0
  26. package/types/src/divide.d.ts +21 -0
  27. package/types/src/formatBankCard.d.ts +35 -0
  28. package/types/src/formatMobile.d.ts +27 -0
  29. package/types/src/formatMoney.d.ts +50 -0
  30. package/types/src/index.d.ts +45 -0
  31. package/types/src/isBankCard.d.ts +32 -0
  32. package/types/src/isBusinessLicense.d.ts +29 -0
  33. package/types/src/isChinese.d.ts +41 -0
  34. package/types/src/isEmail.d.ts +19 -0
  35. package/types/src/isHMCard.d.ts +24 -0
  36. package/types/src/isIPv4.d.ts +25 -0
  37. package/types/src/isIPv6.d.ts +50 -0
  38. package/types/src/isIdCard.d.ts +34 -0
  39. package/types/src/isMobile.d.ts +19 -0
  40. package/types/src/isPassport.d.ts +21 -0
  41. package/types/src/isPassword.d.ts +46 -0
  42. package/types/src/isPostcode.d.ts +19 -0
  43. package/types/src/isPromiseLike.d.ts +21 -0
  44. package/types/src/isQQ.d.ts +19 -0
  45. package/types/src/isSocialCreditCode.d.ts +31 -0
  46. package/types/src/isSwiftCode.d.ts +22 -0
  47. package/types/src/isTWCard.d.ts +23 -0
  48. package/types/src/isTelephone.d.ts +25 -0
  49. package/types/src/isUrl.d.ts +34 -0
  50. package/types/src/isVehicle.d.ts +29 -0
  51. package/types/src/isWX.d.ts +19 -0
  52. package/types/src/minus.d.ts +21 -0
  53. package/types/src/normalizeString.d.ts +22 -0
  54. package/types/src/numberToChinese.d.ts +57 -0
  55. package/types/src/padZero.d.ts +24 -0
  56. package/types/src/parseIdCard.d.ts +107 -0
  57. package/types/src/plus.d.ts +21 -0
  58. package/types/src/randomString.d.ts +19 -0
  59. package/types/src/replaceChar.d.ts +54 -0
  60. package/types/src/round.d.ts +22 -0
  61. package/types/src/safeDate.d.ts +22 -0
  62. package/types/src/setDataURLPrefix.d.ts +24 -0
  63. package/types/src/strlen.d.ts +20 -0
  64. package/types/src/times.d.ts +21 -0
  65. package/types/src/utils/config.d.ts +13 -0
  66. package/types/src/utils/constants.d.ts +2 -0
  67. package/types/src/utils/convertToString.d.ts +8 -0
  68. package/types/src/utils/devWarn.d.ts +7 -0
  69. package/types/src/utils/math.util.d.ts +63 -0
  70. package/types/src/utils/type/index.d.ts +19 -0
  71. package/types/src/utils/type/isArguments.d.ts +18 -0
  72. package/types/src/utils/type/isArray.d.ts +18 -0
  73. package/types/src/utils/type/isBoolean.d.ts +18 -0
  74. package/types/src/utils/type/isDate.d.ts +18 -0
  75. package/types/src/utils/type/isError.d.ts +18 -0
  76. package/types/src/utils/type/isFunction.d.ts +18 -0
  77. package/types/src/utils/type/isMap.d.ts +18 -0
  78. package/types/src/utils/type/isNaN.d.ts +18 -0
  79. package/types/src/utils/type/isNil.d.ts +11 -0
  80. package/types/src/utils/type/isNull.d.ts +18 -0
  81. package/types/src/utils/type/isNumber.d.ts +27 -0
  82. package/types/src/utils/type/isObject.d.ts +21 -0
  83. package/types/src/utils/type/isRegExp.d.ts +18 -0
  84. package/types/src/utils/type/isSet.d.ts +18 -0
  85. package/types/src/utils/type/isString.d.ts +18 -0
  86. package/types/src/utils/type/isSymbol.d.ts +18 -0
  87. package/types/src/utils/type/isType.d.ts +11 -0
  88. package/types/src/utils/type/isUndefined.d.ts +21 -0
  89. package/types/src/utils/type/isWeakMap.d.ts +18 -0
  90. package/types/src/utils/type/isWeakSet.d.ts +18 -0
  91. package/types/src/validatePassword.d.ts +134 -0
  92. package/types/src/waitTime.d.ts +20 -0
  93. package/types/utils/math.util.d.ts +7 -0
@@ -562,6 +562,8 @@
562
562
  return lastCode === checkCode;
563
563
  }
564
564
 
565
+ const version = "4.12.2";
566
+
565
567
  var config = {
566
568
  // 禁用warning提示
567
569
  disableWarning: true
@@ -1575,12 +1577,92 @@
1575
1577
 
1576
1578
  var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
1577
1579
 
1580
+ /**
1581
+ * 检查值是否为NaN
1582
+ *
1583
+ * @static
1584
+ * @alias module:Type.isNaN
1585
+ * @since 1.1.0
1586
+ * @param {*} value 检查值
1587
+ * @returns {boolean} 是否为NaN
1588
+ * @example
1589
+ *
1590
+ * isNaN(NaN)
1591
+ * // => true
1592
+ *
1593
+ * isNaN(1)
1594
+ * // => false
1595
+ */
1596
+
1597
+ function _isNaN(value) {
1598
+ return isType(value, 'Number') && isNaN(value);
1599
+ }
1600
+
1601
+ /**
1602
+ * 检查值是否为Number
1603
+ *
1604
+ * @static
1605
+ * @alias module:Type.isNumber
1606
+ * @since 1.1.0
1607
+ * @param {*} value 检查值
1608
+ * @returns {boolean} 是否为Number
1609
+ * @example
1610
+ *
1611
+ * isNumber(1)
1612
+ * // => true
1613
+ *
1614
+ * isNumber(Number.MIN_VALUE)
1615
+ * // => true
1616
+ *
1617
+ * isNumber(Infinity)
1618
+ * // => true
1619
+ *
1620
+ * isNumber(NaN)
1621
+ * // => true
1622
+ *
1623
+ * isNumber('1')
1624
+ * // => false
1625
+ */
1626
+
1627
+ function isNumber(value) {
1628
+ return isType(value, 'Number');
1629
+ }
1630
+
1578
1631
  /**
1579
1632
  * 参考: https://github.com/nefe/number-precision/blob/master/src/index.ts
1580
1633
  *
1581
1634
  * 解决浮动运算问题,避免小数点后产生多位数和计算精度损失。
1582
1635
  * 问题示例:2.3 + 2.4 = 4.699999999999999,1.0 - 0.9 = 0.09999999999999998
1583
1636
  */
1637
+ /**
1638
+ * 值是否为有效的数值
1639
+ *
1640
+ * @param {*} value 待检测的值
1641
+ * @returns {boolean} 是否为有效的数值
1642
+ */
1643
+
1644
+ function isEffectiveNumeric(value) {
1645
+ if (isNumber(value) && !isNaN(value)) {
1646
+ return true;
1647
+ } // 避免空字符串 或 带空格的字符串
1648
+
1649
+
1650
+ if (isString(value)) {
1651
+ var fmtStrValue = value.trim(); // 带空格的字符串也不转换数字
1652
+ // Number(' ') => 0
1653
+
1654
+ if (fmtStrValue === value) {
1655
+ var numValue = fmtStrValue ? Number(fmtStrValue) : NaN;
1656
+
1657
+ if (!isNaN(numValue)) {
1658
+ return true;
1659
+ }
1660
+ }
1661
+ }
1662
+
1663
+ devWarn("".concat(value, " is not a valid number."));
1664
+ return false;
1665
+ }
1584
1666
  /**
1585
1667
  * 是否为科学计数法数字
1586
1668
  *
@@ -1734,27 +1816,6 @@
1734
1816
  return trimLeftZero(ret);
1735
1817
  }
1736
1818
 
1737
- /**
1738
- * 检查值是否为NaN
1739
- *
1740
- * @static
1741
- * @alias module:Type.isNaN
1742
- * @since 1.1.0
1743
- * @param {*} value 检查值
1744
- * @returns {boolean} 是否为NaN
1745
- * @example
1746
- *
1747
- * isNaN(NaN)
1748
- * // => true
1749
- *
1750
- * isNaN(1)
1751
- * // => false
1752
- */
1753
-
1754
- function _isNaN(value) {
1755
- return isType(value, 'Number') && isNaN(value);
1756
- }
1757
-
1758
1819
  var reg = /^[+-]?\d*\.?\d*$/;
1759
1820
  /**
1760
1821
  * 检查数字或数字字符串
@@ -2674,36 +2735,6 @@
2674
2735
  return str;
2675
2736
  }
2676
2737
 
2677
- /**
2678
- * 检查值是否为Number
2679
- *
2680
- * @static
2681
- * @alias module:Type.isNumber
2682
- * @since 1.1.0
2683
- * @param {*} value 检查值
2684
- * @returns {boolean} 是否为Number
2685
- * @example
2686
- *
2687
- * isNumber(1)
2688
- * // => true
2689
- *
2690
- * isNumber(Number.MIN_VALUE)
2691
- * // => true
2692
- *
2693
- * isNumber(Infinity)
2694
- * // => true
2695
- *
2696
- * isNumber(NaN)
2697
- * // => true
2698
- *
2699
- * isNumber('1')
2700
- * // => false
2701
- */
2702
-
2703
- function isNumber(value) {
2704
- return isType(value, 'Number');
2705
- }
2706
-
2707
2738
  /**
2708
2739
  * 精确乘法,支持多个数相乘
2709
2740
  *
@@ -2735,12 +2766,13 @@
2735
2766
 
2736
2767
  if (rest.length > 0) {
2737
2768
  return times.apply(void 0, [times(num1, num2)].concat(_toConsumableArray(rest)));
2738
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2769
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2739
2770
 
2740
2771
 
2741
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2742
- // @ts-ignore
2743
- return num1;
2772
+ if (!isEffectiveNumeric(num1)) {
2773
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2774
+ } else if (!isEffectiveNumeric(num2)) {
2775
+ return Number(num1);
2744
2776
  }
2745
2777
 
2746
2778
  var num1Changed = float2Fixed(num1);
@@ -2782,12 +2814,13 @@
2782
2814
 
2783
2815
  if (rest.length > 0) {
2784
2816
  return plus.apply(void 0, [plus(num1, num2)].concat(_toConsumableArray(rest)));
2785
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2817
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2786
2818
 
2787
2819
 
2788
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2789
- // @ts-ignore
2790
- return num1;
2820
+ if (!isEffectiveNumeric(num1)) {
2821
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2822
+ } else if (!isEffectiveNumeric(num2)) {
2823
+ return Number(num1);
2791
2824
  }
2792
2825
 
2793
2826
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -2825,12 +2858,13 @@
2825
2858
 
2826
2859
  if (rest.length > 0) {
2827
2860
  return minus.apply(void 0, [minus(num1, num2)].concat(_toConsumableArray(rest)));
2828
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2861
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2829
2862
 
2830
2863
 
2831
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2832
- // @ts-ignore
2833
- return num1;
2864
+ if (!isEffectiveNumeric(num1)) {
2865
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2866
+ } else if (!isEffectiveNumeric(num2)) {
2867
+ return Number(num1);
2834
2868
  }
2835
2869
 
2836
2870
  var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
@@ -2868,12 +2902,13 @@
2868
2902
 
2869
2903
  if (rest.length > 0) {
2870
2904
  return divide.apply(void 0, [divide(num1, num2)].concat(_toConsumableArray(rest)));
2871
- } // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2905
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2872
2906
 
2873
2907
 
2874
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2875
- // @ts-ignore
2876
- return num1;
2908
+ if (!isEffectiveNumeric(num1)) {
2909
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2910
+ } else if (!isEffectiveNumeric(num2)) {
2911
+ return Number(num1);
2877
2912
  }
2878
2913
 
2879
2914
  var num1Changed = float2Fixed(num1);
@@ -2908,10 +2943,9 @@
2908
2943
  function round(num) {
2909
2944
  var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2910
2945
 
2911
- // 兼容处理,如果参数为非数字或字符串时,直接返回
2912
- if ((!isNumber(num) || _isNaN(num)) && !isString(num)) {
2913
- // @ts-ignore
2914
- return num;
2946
+ // 兼容处理,如果参数包含无效数值时,返回第一个参数
2947
+ if (!isEffectiveNumeric(num)) {
2948
+ return NaN;
2915
2949
  }
2916
2950
 
2917
2951
  var base = Math.pow(10, precision);
@@ -3133,6 +3167,7 @@
3133
3167
  exports.strlen = strlen;
3134
3168
  exports.times = times;
3135
3169
  exports.validatePassword = validatePassword;
3170
+ exports.version = version;
3136
3171
  exports.waitTime = waitTime;
3137
3172
 
3138
3173
  Object.defineProperty(exports, '__esModule', { value: true });