util-helpers 4.9.0 → 4.10.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 (56) hide show
  1. package/README.md +2 -0
  2. package/dist/util-helpers.js +163 -111
  3. package/dist/util-helpers.js.map +1 -1
  4. package/dist/util-helpers.min.js +1 -1
  5. package/dist/util-helpers.min.js.map +1 -1
  6. package/esm/index.js +1 -0
  7. package/esm/isBankCard.js +2 -2
  8. package/esm/isBusinessLicense.js +2 -2
  9. package/esm/isChinese.js +2 -2
  10. package/esm/isEmail.js +2 -2
  11. package/esm/isHMCard.js +2 -2
  12. package/esm/isIPv4.js +2 -2
  13. package/esm/isIPv6.js +2 -2
  14. package/esm/isIdCard.js +2 -2
  15. package/esm/isMobile.js +2 -2
  16. package/esm/isPassport.js +4 -4
  17. package/esm/isPostcode.js +2 -2
  18. package/esm/isQQ.js +2 -2
  19. package/esm/isSocialCreditCode.js +2 -2
  20. package/esm/isSwiftCode.js +12 -2
  21. package/esm/isTWCard.js +19 -5
  22. package/esm/isTelephone.js +2 -2
  23. package/esm/isUrl.js +2 -2
  24. package/esm/isVehicle.js +2 -2
  25. package/esm/isWX.js +2 -2
  26. package/esm/randomString.js +1 -1
  27. package/esm/strlen.js +38 -0
  28. package/lib/index.js +8 -0
  29. package/lib/isBankCard.js +2 -2
  30. package/lib/isBusinessLicense.js +2 -2
  31. package/lib/isChinese.js +2 -2
  32. package/lib/isEmail.js +2 -2
  33. package/lib/isHMCard.js +2 -2
  34. package/lib/isIPv4.js +2 -2
  35. package/lib/isIPv6.js +2 -2
  36. package/lib/isIdCard.js +2 -2
  37. package/lib/isMobile.js +2 -2
  38. package/lib/isPassport.js +5 -5
  39. package/lib/isPostcode.js +2 -2
  40. package/lib/isQQ.js +2 -2
  41. package/lib/isSocialCreditCode.js +2 -2
  42. package/lib/isSwiftCode.js +12 -2
  43. package/lib/isTWCard.js +20 -6
  44. package/lib/isTelephone.js +2 -2
  45. package/lib/isUrl.js +2 -2
  46. package/lib/isVehicle.js +2 -2
  47. package/lib/isWX.js +2 -2
  48. package/lib/randomString.js +1 -1
  49. package/lib/strlen.js +48 -0
  50. package/package.json +1 -1
  51. package/types/index.d.ts +1 -0
  52. package/types/isPassport.d.ts +1 -1
  53. package/types/isSwiftCode.d.ts +10 -0
  54. package/types/isTWCard.d.ts +7 -2
  55. package/types/randomString.d.ts +1 -1
  56. package/types/strlen.d.ts +20 -0
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
@@ -19,10 +19,20 @@ var reg = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
19
19
  * @since 4.9.0
20
20
  * @param {*} value 要检测的值
21
21
  * @returns {boolean} 值是否为 Swift Code
22
+ * @example
23
+ *
24
+ * isSwiftCode('DEUTDEFF') // true
25
+ * isSwiftCode('deutdeff') // false
26
+ *
27
+ * isSwiftCode('BKTWTWTP010') // true
28
+ * isSwiftCode('010BKTWTWTP') // false
29
+ *
30
+ * isSwiftCode('ICBKCNBJBJM') // true
31
+ *
22
32
  */
23
33
 
24
34
  function isSwiftCode(value) {
25
- var valueStr = (0, _convertToString["default"])(value);
35
+ var valueStr = (0, _normalizeString["default"])(value);
26
36
  return reg.test(valueStr);
27
37
  }
28
38
 
package/lib/isTWCard.js CHANGED
@@ -5,12 +5,14 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
12
- // 台湾居民来往大陆通行证正则,支持一次性短期台胞证
13
- var regTWCard = /^(\d{8}|[\da-z]{10})$/i;
12
+ // 台湾居民来往大陆通行证正则
13
+ var regTWCard = /^\d{8}$/i; // 一次性短期台胞证
14
+
15
+ var singleRegTWCard = /^[\da-z]{10,12}$/i;
14
16
  /**
15
17
  * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。
16
18
  *
@@ -19,18 +21,30 @@ var regTWCard = /^(\d{8}|[\da-z]{10})$/i;
19
21
  * @since 4.0.0
20
22
  * @see 参考 {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证|台湾居民来往大陆通行证}
21
23
  * @param {*} value 要检测的值
24
+ * @param {Object} [options] 配置项
25
+ * @param {boolean} [options.loose=false] 宽松模式。如果为true,表示支持一次性短期通行证
22
26
  * @returns {boolean} 是否为台湾居民来往大陆通行证
23
27
  * @example
24
28
  * isTWCard('12345678') // true
25
29
  * isTWCard('07257456') // true
26
30
  *
27
31
  * // 一次性短期
28
- * isTWCard('F290299977') // true
32
+ * isTWCard('F290299977') // false
33
+ * isTWCard('F290299977', { loose: true }) // true
29
34
  */
30
35
 
31
36
  function isTWCard(value) {
32
- var valueStr = (0, _convertToString["default"])(value);
33
- return regTWCard.test(valueStr);
37
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
38
+ _ref$loose = _ref.loose,
39
+ loose = _ref$loose === void 0 ? false : _ref$loose;
40
+
41
+ var valueStr = (0, _normalizeString["default"])(value);
42
+
43
+ if (regTWCard.test(valueStr)) {
44
+ return true;
45
+ }
46
+
47
+ return loose ? singleRegTWCard.test(valueStr) : false;
34
48
  }
35
49
 
36
50
  var _default = isTWCard;
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
@@ -36,7 +36,7 @@ var reg = /^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;
36
36
  */
37
37
 
38
38
  function isTelephone(value) {
39
- var valueStr = (0, _convertToString["default"])(value);
39
+ var valueStr = (0, _normalizeString["default"])(value);
40
40
  return reg.test(valueStr);
41
41
  }
42
42
 
package/lib/isUrl.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
@@ -45,7 +45,7 @@ var reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:
45
45
  */
46
46
 
47
47
  function isUrl(value) {
48
- var valueStr = (0, _convertToString["default"])(value);
48
+ var valueStr = (0, _normalizeString["default"])(value);
49
49
  return reg.test(valueStr);
50
50
  }
51
51
 
package/lib/isVehicle.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
@@ -40,7 +40,7 @@ var reg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕
40
40
  */
41
41
 
42
42
  function isVehicle(value) {
43
- var valueStr = (0, _convertToString["default"])(value);
43
+ var valueStr = (0, _normalizeString["default"])(value);
44
44
  return reg.test(valueStr);
45
45
  }
46
46
 
package/lib/isWX.js CHANGED
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports["default"] = void 0;
7
7
 
8
- var _convertToString = _interopRequireDefault(require("./utils/convertToString"));
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
9
 
10
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
11
 
@@ -30,7 +30,7 @@ var reg = /^[a-z]([-_a-z0-9]{5,19})+$/i;
30
30
  */
31
31
 
32
32
  function isWX(value) {
33
- var valueStr = (0, _convertToString["default"])(value);
33
+ var valueStr = (0, _normalizeString["default"])(value);
34
34
  return reg.test(valueStr);
35
35
  }
36
36
 
@@ -34,7 +34,7 @@ function internalRandomString() {
34
34
  * @alias module:Other.randomString
35
35
  * @since 4.8.0
36
36
  * @param {number} [len=0] 长度
37
- * @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
37
+ * @param {string} [optionalChars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'] 允许的字符,默认为数字和大小写字母
38
38
  * @returns {string} 随机字符串
39
39
  * @example
40
40
  * randomString(5); // slk23
package/lib/strlen.js ADDED
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _normalizeString = _interopRequireDefault(require("./normalizeString"));
9
+
10
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
+
12
+ /**
13
+ * 获取字符长度。中文汉字占2个字符,英文占1个字符,特殊如emoji占4个字符。
14
+ *
15
+ * @static
16
+ * @alias module:Other.strlen
17
+ * @since 4.10.0
18
+ * @param {string} str 字符串
19
+ * @returns {number} 字符长度
20
+ * @example
21
+ *
22
+ * strlen('你好a'); // 5
23
+ * strlen('你好,世界!'); // 12
24
+ * strlen('严両丞丽'); // 8
25
+ * strlen('abcde'); // 5
26
+ * strlen('𠮷'); // 4
27
+ * strlen('🍎'); // 4
28
+ *
29
+ */
30
+ function strlen(str) {
31
+ var realStr = (0, _normalizeString["default"])(str);
32
+ var len = 0;
33
+
34
+ for (var i = 0; i < realStr.length; i++) {
35
+ var c = realStr.charCodeAt(i);
36
+
37
+ if (c >= 0x0001 && c <= 0x007e || 0xff60 <= c && c <= 0xff9f) {
38
+ len++;
39
+ } else {
40
+ len += 2;
41
+ }
42
+ }
43
+
44
+ return len;
45
+ }
46
+
47
+ var _default = strlen;
48
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "util-helpers",
3
- "version": "4.9.0",
3
+ "version": "4.10.2",
4
4
  "description": "一个基于业务场景的工具方法库",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
package/types/index.d.ts CHANGED
@@ -41,4 +41,5 @@ export { default as round } from "./round";
41
41
  export { default as waitTime } from "./waitTime";
42
42
  export { default as calculateCursorPosition } from "./calculateCursorPosition";
43
43
  export { default as randomString } from "./randomString";
44
+ export { default as strlen } from "./strlen";
44
45
  export { setDisableWarning } from "./utils/config";
@@ -1,7 +1,7 @@
1
1
  export default isPassport;
2
2
  /**
3
3
  * 检测值是否为护照号
4
- * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ)、澳门特区护照(MA)
4
+ * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*),注意不区分大小写
5
5
  *
6
6
  * @static
7
7
  * @alias module:Validator.isPassport
@@ -8,5 +8,15 @@ export default isSwiftCode;
8
8
  * @since 4.9.0
9
9
  * @param {*} value 要检测的值
10
10
  * @returns {boolean} 值是否为 Swift Code
11
+ * @example
12
+ *
13
+ * isSwiftCode('DEUTDEFF') // true
14
+ * isSwiftCode('deutdeff') // false
15
+ *
16
+ * isSwiftCode('BKTWTWTP010') // true
17
+ * isSwiftCode('010BKTWTWTP') // false
18
+ *
19
+ * isSwiftCode('ICBKCNBJBJM') // true
20
+ *
11
21
  */
12
22
  declare function isSwiftCode(value: any): boolean;
@@ -7,12 +7,17 @@ export default isTWCard;
7
7
  * @since 4.0.0
8
8
  * @see 参考 {@link https://zh.wikipedia.org/wiki/台湾居民来往大陆通行证|台湾居民来往大陆通行证}
9
9
  * @param {*} value 要检测的值
10
+ * @param {Object} [options] 配置项
11
+ * @param {boolean} [options.loose=false] 宽松模式。如果为true,表示支持一次性短期通行证
10
12
  * @returns {boolean} 是否为台湾居民来往大陆通行证
11
13
  * @example
12
14
  * isTWCard('12345678') // true
13
15
  * isTWCard('07257456') // true
14
16
  *
15
17
  * // 一次性短期
16
- * isTWCard('F290299977') // true
18
+ * isTWCard('F290299977') // false
19
+ * isTWCard('F290299977', { loose: true }) // true
17
20
  */
18
- declare function isTWCard(value: any): boolean;
21
+ declare function isTWCard(value: any, { loose }?: {
22
+ loose?: boolean | undefined;
23
+ } | undefined): boolean;
@@ -6,7 +6,7 @@ export default randomString;
6
6
  * @alias module:Other.randomString
7
7
  * @since 4.8.0
8
8
  * @param {number} [len=0] 长度
9
- * @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
9
+ * @param {string} [optionalChars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'] 允许的字符,默认为数字和大小写字母
10
10
  * @returns {string} 随机字符串
11
11
  * @example
12
12
  * randomString(5); // slk23
@@ -0,0 +1,20 @@
1
+ export default strlen;
2
+ /**
3
+ * 获取字符长度。中文汉字占2个字符,英文占1个字符,特殊如emoji占4个字符。
4
+ *
5
+ * @static
6
+ * @alias module:Other.strlen
7
+ * @since 4.10.0
8
+ * @param {string} str 字符串
9
+ * @returns {number} 字符长度
10
+ * @example
11
+ *
12
+ * strlen('你好a'); // 5
13
+ * strlen('你好,世界!'); // 12
14
+ * strlen('严両丞丽'); // 8
15
+ * strlen('abcde'); // 5
16
+ * strlen('𠮷'); // 4
17
+ * strlen('🍎'); // 4
18
+ *
19
+ */
20
+ declare function strlen(str: string): number;