util-helpers 4.11.0 → 4.12.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.
Files changed (93) hide show
  1. package/dist/util-helpers.js +979 -606
  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 +4 -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
@@ -56,12 +56,12 @@
56
56
  * @param {*} value 检查值
57
57
  * @returns {boolean} 是否为 undefined 或 null
58
58
  */
59
+
59
60
  function isNil(value) {
60
61
  return isUndefined(value) || isNull(value);
61
62
  }
62
63
 
63
- const toString = Object.prototype.toString;
64
-
64
+ var toString = Object.prototype.toString;
65
65
  /**
66
66
  * 检测值的 `toString` 类型
67
67
  *
@@ -71,8 +71,9 @@
71
71
  * @param {string} typename 类型名称
72
72
  * @returns {boolean} 返回值的 `toString` 类型是否匹配
73
73
  */
74
+
74
75
  function isType(value, typename) {
75
- return toString.call(value) === `[object ${typename}]`;
76
+ return toString.call(value) === "[object ".concat(typename, "]");
76
77
  }
77
78
 
78
79
  /**
@@ -91,6 +92,7 @@
91
92
  * isString(1)
92
93
  * // => false
93
94
  */
95
+
94
96
  function isString(value) {
95
97
  return isType(value, 'String');
96
98
  }
@@ -101,6 +103,7 @@
101
103
  * @param {*} value 值
102
104
  * @returns {string} 字符串
103
105
  */
106
+
104
107
  function convertToString(value) {
105
108
  return isString(value) ? value : String(value);
106
109
  }
@@ -125,16 +128,16 @@
125
128
  * normalizeString(1); // '1'
126
129
  * normalizeString('a'); // 'a'
127
130
  */
131
+
128
132
  function normalizeString(value) {
129
133
  if (isNil(value)) {
130
134
  return '';
131
135
  }
136
+
132
137
  return convertToString(value);
133
138
  }
134
139
 
135
- // 手机号码 11位数字,以1开头,第二位是3456789其中一个,后面再加9个数字
136
- const reg$d = /^1[3456789]\d{9}$/;
137
-
140
+ var reg$d = /^1[3456789]\d{9}$/;
138
141
  /**
139
142
  * 检测值是否为手机号码
140
143
  *
@@ -152,14 +155,13 @@
152
155
  * // => false
153
156
  *
154
157
  */
158
+
155
159
  function isMobile(value) {
156
- const valueStr = normalizeString(value);
160
+ var valueStr = normalizeString(value);
157
161
  return reg$d.test(valueStr);
158
162
  }
159
163
 
160
- // 固定电话 支持区号和分机号 3~4位区号,以0开头;7~8位直播号,以29开头;16位分机号
161
- const reg$c = /^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;
162
-
164
+ var reg$c = /^(0\d{2,3}\-)?([2-9]\d{6,7})(\-\d{1,6})?$/;
163
165
  /**
164
166
  * 检测值是否为固定电话
165
167
  *
@@ -183,14 +185,13 @@
183
185
  * // => false
184
186
  *
185
187
  */
188
+
186
189
  function isTelephone(value) {
187
- const valueStr = normalizeString(value);
190
+ var valueStr = normalizeString(value);
188
191
  return reg$c.test(valueStr);
189
192
  }
190
193
 
191
- // 邮政编码
192
- const reg$b = /^\d{6}$/;
193
-
194
+ var reg$b = /^\d{6}$/;
194
195
  /**
195
196
  * 检测值是否为邮政编码,6位数字
196
197
  *
@@ -208,14 +209,13 @@
208
209
  * // => false
209
210
  *
210
211
  */
212
+
211
213
  function isPostcode(value) {
212
- const valueStr = normalizeString(value);
214
+ var valueStr = normalizeString(value);
213
215
  return reg$b.test(valueStr);
214
216
  }
215
217
 
216
- // 身份证号正则
217
- const regIdCard$1 = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[012]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X)?$/i;
218
-
218
+ var regIdCard$1 = /^[1-9]\d{5}(19|20)?\d{2}((0[1-9])|(1[012]))(([0-2][1-9])|10|20|30|31)\d{3}(\d|X)?$/i;
219
219
  /**
220
220
  * 校验码计算
221
221
  *
@@ -225,19 +225,22 @@
225
225
  * @param {string} id 身份证号码
226
226
  * @returns {boolean} 校验码是否正确
227
227
  */
228
+
228
229
  function check(id) {
229
- let index, sum, num;
230
+ var index, sum, num;
231
+
230
232
  for (sum = index = 0; index < 17; index++) {
231
- sum += (Math.pow(2, 17 - index) % 11) * Number(id[index]);
233
+ sum += Math.pow(2, 17 - index) % 11 * Number(id[index]);
232
234
  }
233
- num = (12 - (sum % 11)) % 11;
235
+
236
+ num = (12 - sum % 11) % 11;
237
+
234
238
  if (num < 10) {
235
239
  return num === Number(id[17]);
236
240
  } else {
237
241
  return id[17].toUpperCase() === 'X';
238
242
  }
239
243
  }
240
-
241
244
  /**
242
245
  * 检测值是否为18位身份证号码。<br/>宽松模式下,支持15位身份证号码
243
246
  *
@@ -267,8 +270,17 @@
267
270
  * // => true
268
271
  *
269
272
  */
270
- function isIdCard(value, { loose = false, checkCode = true } = {}) {
271
- const valueStr = normalizeString(value);
273
+
274
+
275
+ function isIdCard(value) {
276
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
277
+ _ref$loose = _ref.loose,
278
+ loose = _ref$loose === void 0 ? false : _ref$loose,
279
+ _ref$checkCode = _ref.checkCode,
280
+ checkCode = _ref$checkCode === void 0 ? true : _ref$checkCode;
281
+
282
+ var valueStr = normalizeString(value);
283
+
272
284
  if (valueStr.length === 15 && loose) {
273
285
  return regIdCard$1.test(valueStr);
274
286
  }
@@ -277,15 +289,14 @@
277
289
  if (checkCode) {
278
290
  return check(valueStr);
279
291
  }
292
+
280
293
  return true;
281
294
  }
282
295
 
283
296
  return false;
284
297
  }
285
298
 
286
- // 邮箱
287
- const reg$a = /^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
288
-
299
+ var reg$a = /^[\da-z]+([\-\.\_]?[\da-z]+)*@[\da-z]+([\-\.]?[\da-z]+)*(\.[a-z]{2,})+$/i;
289
300
  /**
290
301
  * 检测值是否为Email
291
302
  *
@@ -303,14 +314,13 @@
303
314
  * // => false
304
315
  *
305
316
  */
317
+
306
318
  function isEmail(value) {
307
- const valueStr = normalizeString(value);
319
+ var valueStr = normalizeString(value);
308
320
  return reg$a.test(valueStr);
309
321
  }
310
322
 
311
- // QQ号正则
312
- const reg$9 = /^[1-9]\d{4,10}$/;
313
-
323
+ var reg$9 = /^[1-9]\d{4,10}$/;
314
324
  /**
315
325
  * 检测值是否为QQ号,非0开头,5至11位数字
316
326
  *
@@ -328,14 +338,13 @@
328
338
  * // => false
329
339
  *
330
340
  */
341
+
331
342
  function isQQ(value) {
332
- const valueStr = normalizeString(value);
343
+ var valueStr = normalizeString(value);
333
344
  return reg$9.test(valueStr);
334
345
  }
335
346
 
336
- // 微信号 6至20位,以字母开头,字母,数字,减号(连接符),下划线
337
- const reg$8 = /^[a-z]([-_a-z0-9]{5,19})+$/i;
338
-
347
+ var reg$8 = /^[a-z]([-_a-z0-9]{5,19})+$/i;
339
348
  /**
340
349
  * 检测值是否为微信号
341
350
  *
@@ -353,14 +362,13 @@
353
362
  * // => false
354
363
  *
355
364
  */
365
+
356
366
  function isWX(value) {
357
- const valueStr = normalizeString(value);
367
+ var valueStr = normalizeString(value);
358
368
  return reg$8.test(valueStr);
359
369
  }
360
370
 
361
- // 车牌号正则
362
- const reg$7 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;
363
-
371
+ var reg$7 = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([A-Z0-9]{4}[A-Z0-9挂学警港澳]{1})|([A-Z0-9]{5}[DF])|([DF][A-Z0-9]{5}))$/;
364
372
  /**
365
373
  * 检测值是否为车牌号,支持新能源和非新能源车牌
366
374
  *
@@ -388,35 +396,34 @@
388
396
  * // => true
389
397
  *
390
398
  */
399
+
391
400
  function isVehicle(value) {
392
- const valueStr = normalizeString(value);
401
+ var valueStr = normalizeString(value);
393
402
  return reg$7.test(valueStr);
394
403
  }
395
404
 
396
- // 非0开头,10~21位数字
397
- const reg$6 = /^[1-9]\d{9,20}$/;
398
-
399
- // 8~30位数字
400
- const regLoose = /^\d{8,30}$/;
405
+ var reg$6 = /^[1-9]\d{9,20}$/; // 8~30位数字
401
406
 
407
+ var regLoose = /^\d{8,30}$/;
402
408
  /**
403
409
  * luhn 计算校验位
404
410
  * @private
405
411
  * @param {string} numStr 银行卡前面数字
406
412
  * @returns {number}
407
413
  */
414
+
408
415
  function sumCheckCode$2(numStr) {
409
- const numArr = (numStr + '').replace(/\D/g, '').split('').reverse();
416
+ var numArr = (numStr + '').replace(/\D/g, '').split('').reverse();
417
+ var sum = 0;
410
418
 
411
- let sum = 0;
412
- for (let i = 0; i < numArr.length; i++) {
413
- const currNum = parseInt(numArr[i]);
419
+ for (var i = 0; i < numArr.length; i++) {
420
+ var currNum = parseInt(numArr[i]);
414
421
  sum += i % 2 === 0 ? currNum * 2 - (currNum > 4 ? 9 : 0) : currNum;
415
422
  }
416
- const mod = sum % 10;
423
+
424
+ var mod = sum % 10;
417
425
  return mod !== 0 ? 10 - mod : 0;
418
426
  }
419
-
420
427
  /**
421
428
  * 检测值是否为银行卡号。正常模式(非0开头,10~21位数字)宽松模式(8~30位数字)
422
429
  *
@@ -444,24 +451,30 @@
444
451
  * // => true
445
452
  *
446
453
  */
447
- function isBankCard(value, { loose = false, luhn = false } = {}) {
448
- const valueStr = normalizeString(value);
449
- const validateResult = loose ? regLoose.test(valueStr) : reg$6.test(valueStr);
454
+
455
+
456
+ function isBankCard(value) {
457
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
458
+ _ref$loose = _ref.loose,
459
+ loose = _ref$loose === void 0 ? false : _ref$loose,
460
+ _ref$luhn = _ref.luhn,
461
+ luhn = _ref$luhn === void 0 ? false : _ref$luhn;
462
+
463
+ var valueStr = normalizeString(value);
464
+ var validateResult = loose ? regLoose.test(valueStr) : reg$6.test(valueStr);
450
465
 
451
466
  if (validateResult && luhn) {
452
- const precode = valueStr.substring(0, valueStr.length - 1);
453
- const checkCode = valueStr[valueStr.length - 1];
467
+ var precode = valueStr.substring(0, valueStr.length - 1);
468
+ var checkCode = valueStr[valueStr.length - 1];
454
469
  return checkCode === String(sumCheckCode$2(precode));
455
470
  }
471
+
456
472
  return validateResult;
457
473
  }
458
474
 
459
- // 基础规则,由18位数字和大写字母组成,不使用I、O、Z、S、V。
460
- const baseReg$1 = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/;
461
-
462
- // 基础字符组成
463
- const baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
475
+ var baseReg$1 = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/; // 基础字符组成
464
476
 
477
+ var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
465
478
  /**
466
479
  * 计算校验码
467
480
  *
@@ -470,27 +483,31 @@
470
483
  * @param {string} preCode 统一代码前17位
471
484
  * @returns {string} 校验码
472
485
  */
486
+
473
487
  function sumCheckCode$1(preCode) {
474
- let total = 0;
488
+ var total = 0; // 计算字符位置对应序号和加权因子的乘积,总和
475
489
 
476
- // 计算字符位置对应序号和加权因子的乘积,总和
477
- for (let i = 0; i < 17; i++) {
490
+ var _loop = function _loop(i) {
478
491
  // 字符位置对应的基础编码序号
479
- const index = baseCodeArr.findIndex((item) => item === preCode[i]);
480
- // 加权因子
481
- const wf = Math.pow(3, i) % 31;
482
- // 计算序号和加权因子的乘积,并计算级数之和
492
+ var index = baseCodeArr.findIndex(function (item) {
493
+ return item === preCode[i];
494
+ }); // 加权因子
495
+
496
+ var wf = Math.pow(3, i) % 31; // 计算序号和加权因子的乘积,并计算级数之和
497
+
483
498
  total += index * wf;
484
- }
499
+ };
485
500
 
486
- // 计算整数求余函数MOD
487
- const remainder = total % 31;
488
- // 校验码字符值序号
489
- const checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
501
+ for (var i = 0; i < 17; i++) {
502
+ _loop(i);
503
+ } // 计算整数求余函数MOD
490
504
 
505
+
506
+ var remainder = total % 31; // 校验码字符值序号
507
+
508
+ var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
491
509
  return baseCodeArr[checkCodeIndex];
492
510
  }
493
-
494
511
  /**
495
512
  * 检测值是否为统一社会信用代码,也叫三证合一组织代码。由18位数字和大写字母组成,不使用I、O、Z、S、V。
496
513
  *
@@ -518,35 +535,39 @@
518
535
  * // => false
519
536
  *
520
537
  */
521
- function isSocialCreditCode(value, options = {}) {
522
- const valueStr = normalizeString(value);
523
- // @ts-ignore
538
+
539
+
540
+ function isSocialCreditCode(value) {
541
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
542
+ var valueStr = normalizeString(value); // @ts-ignore
524
543
  // TODO 下个版本废弃 loose
525
- const { loose = false, checkCode: cc = true } = options;
526
- const needCheckCode = !loose && cc;
527
544
 
528
- const passBaseRule = baseReg$1.test(valueStr);
545
+ var _options$loose = options.loose,
546
+ loose = _options$loose === void 0 ? false : _options$loose,
547
+ _options$checkCode = options.checkCode,
548
+ cc = _options$checkCode === void 0 ? true : _options$checkCode;
549
+ var needCheckCode = !loose && cc;
550
+ var passBaseRule = baseReg$1.test(valueStr); // 宽松模式 或 基础规则不通过直接返回
529
551
 
530
- // 宽松模式 或 基础规则不通过直接返回
531
552
  if (!needCheckCode || !passBaseRule) {
532
553
  return passBaseRule;
533
- }
554
+ } // 前17位
555
+
534
556
 
535
- // 前17位
536
- const preCode = valueStr.substring(0, 17);
537
- // 校验码
538
- const lastCode = valueStr.substring(valueStr.length - 1);
539
- // 计算校验码
540
- const checkCode = sumCheckCode$1(preCode);
557
+ var preCode = valueStr.substring(0, 17); // 校验码
541
558
 
559
+ var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
560
+
561
+ var checkCode = sumCheckCode$1(preCode);
542
562
  return lastCode === checkCode;
543
563
  }
544
564
 
545
- const config = {
565
+ const version = "4.12.1";
566
+
567
+ var config = {
546
568
  // 禁用warning提示
547
569
  disableWarning: true
548
570
  };
549
-
550
571
  /**
551
572
  * 设置禁止warning提示
552
573
  * @static
@@ -554,6 +575,7 @@
554
575
  * @since 3.6.1
555
576
  * @param {boolean} bool 是否禁止warning提示
556
577
  */
578
+
557
579
  function setDisableWarning(bool) {
558
580
  config.disableWarning = !!bool;
559
581
  }
@@ -563,17 +585,19 @@
563
585
  *
564
586
  * @param {any[]} args 打印的信息
565
587
  */
566
- function devWarn(...args) {
588
+
589
+ function devWarn() {
567
590
  if (!config.disableWarning) {
568
- console.warn(...args);
591
+ var _console;
592
+
593
+ (_console = console).warn.apply(_console, arguments);
569
594
  }
570
595
  }
571
596
 
572
- const regNumber = /[\d]/;
573
- const regLowerCaseLetter = /[a-z]/;
574
- const regUpperCaseLetter = /[A-Z]/;
575
- const regAllNumberAndLetter = /[\d|a-z]/gi;
576
-
597
+ var regNumber = /[\d]/;
598
+ var regLowerCaseLetter = /[a-z]/;
599
+ var regUpperCaseLetter = /[A-Z]/;
600
+ var regAllNumberAndLetter = /[\d|a-z]/gi;
577
601
  /**
578
602
  * 是否包含数字
579
603
  *
@@ -581,10 +605,10 @@
581
605
  * @param {string} val 检查的值
582
606
  * @returns {boolean} 是否包含数字
583
607
  */
608
+
584
609
  function hasNumber(val) {
585
610
  return regNumber.test(val);
586
611
  }
587
-
588
612
  /**
589
613
  * 是否包含小写字母
590
614
  *
@@ -592,10 +616,11 @@
592
616
  * @param {string} val 检测的值
593
617
  * @returns {boolean} 是否包含小写字母
594
618
  */
619
+
620
+
595
621
  function hasLowerCaseLetter(val) {
596
622
  return regLowerCaseLetter.test(val);
597
623
  }
598
-
599
624
  /**
600
625
  * 是否包含大写字母
601
626
  *
@@ -603,10 +628,11 @@
603
628
  * @param {string} val 检测的值
604
629
  * @returns {boolean} 是否包含大写字母
605
630
  */
631
+
632
+
606
633
  function hasUpperCaseLetter(val) {
607
634
  return regUpperCaseLetter.test(val);
608
635
  }
609
-
610
636
  /**
611
637
  * 是否为十六进制
612
638
  *
@@ -614,10 +640,11 @@
614
640
  * @param {string} val 检测的值
615
641
  * @returns {boolean} 是否为十六进制
616
642
  */
643
+
644
+
617
645
  function hasHex(val) {
618
- return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1;
646
+ return val.indexOf('\\x') > -1 || val.indexOf("\\u") > -1;
619
647
  }
620
-
621
648
  /**
622
649
  * 是否包含特殊字符
623
650
  *
@@ -626,33 +653,35 @@
626
653
  * @param {string} chars 特殊字符
627
654
  * @returns {boolean} 是否包含特殊字符
628
655
  */
656
+
657
+
629
658
  function hasSpecialCharacter(val, chars) {
630
659
  if (!chars || !val) {
631
660
  return false;
632
661
  }
633
662
 
634
- const specialChars = val.replace(regAllNumberAndLetter, '');
663
+ var specialChars = val.replace(regAllNumberAndLetter, '');
635
664
 
636
665
  if (!specialChars) {
637
666
  return false;
638
667
  }
639
668
 
640
- const regChars = hasHex(chars) ? new RegExp(`[${chars}]`) : null;
669
+ var regChars = hasHex(chars) ? new RegExp("[".concat(chars, "]")) : null;
641
670
 
642
671
  if (regChars) {
643
672
  return regChars.test(specialChars);
644
673
  }
645
674
 
646
- let ret = false;
647
- specialChars.split('').some((charItem) => {
675
+ var ret = false;
676
+ specialChars.split('').some(function (charItem) {
648
677
  if (chars.indexOf(charItem) > -1) {
649
678
  ret = true;
650
679
  }
680
+
651
681
  return ret;
652
682
  });
653
683
  return ret;
654
684
  }
655
-
656
685
  /**
657
686
  * 是否包含非法字符
658
687
  *
@@ -661,12 +690,14 @@
661
690
  * @param {string} chars 特殊字符
662
691
  * @returns {boolean} 是否包含非法字符
663
692
  */
693
+
694
+
664
695
  function hasUnallowableCharacter(val, chars) {
665
696
  if (!val) {
666
697
  return false;
667
698
  }
668
699
 
669
- const specialChars = val.replace(regAllNumberAndLetter, '');
700
+ var specialChars = val.replace(regAllNumberAndLetter, '');
670
701
 
671
702
  if (!specialChars) {
672
703
  return false;
@@ -674,20 +705,22 @@
674
705
  return true;
675
706
  }
676
707
 
677
- const regChars = hasHex(chars) ? new RegExp(`[^${chars}]`) : null;
708
+ var regChars = hasHex(chars) ? new RegExp("[^".concat(chars, "]")) : null;
709
+
678
710
  if (regChars) {
679
711
  return regChars.test(specialChars);
680
712
  }
681
- let ret = false;
682
- specialChars.split('').some((charItem) => {
713
+
714
+ var ret = false;
715
+ specialChars.split('').some(function (charItem) {
683
716
  if (chars.indexOf(charItem) === -1) {
684
717
  ret = true;
685
718
  }
719
+
686
720
  return ret;
687
721
  });
688
722
  return ret;
689
723
  }
690
-
691
724
  /**
692
725
  * @typedef {Object} PasswordContaines - 验证密码的包含内容
693
726
  * @property {boolean} number - 包含数字
@@ -776,32 +809,41 @@
776
809
  * }
777
810
  * }
778
811
  */
779
- function validatePassword(value, { level = 2, ignoreCase = false, special = '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' } = {}) {
780
- let valStr = value;
812
+
813
+
814
+ function validatePassword(value) {
815
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
816
+ _ref$level = _ref.level,
817
+ level = _ref$level === void 0 ? 2 : _ref$level,
818
+ _ref$ignoreCase = _ref.ignoreCase,
819
+ ignoreCase = _ref$ignoreCase === void 0 ? false : _ref$ignoreCase,
820
+ _ref$special = _ref.special,
821
+ special = _ref$special === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _ref$special;
822
+
823
+ var valStr = value;
781
824
 
782
825
  if (typeof value !== 'string') {
783
- devWarn(`[validatePassword] value must be a string.`);
826
+ devWarn("[validatePassword] value must be a string.");
784
827
  valStr = '';
785
828
  }
786
829
 
787
- let currentLevel = 0;
830
+ var currentLevel = 0; // 包含数字
831
+
832
+ var containesNumber = hasNumber(valStr); // 包含小写字母
833
+
834
+ var containesLowerCaseLetter = hasLowerCaseLetter(valStr); // 包含大写字母
835
+
836
+ var containesUpperCaseLetter = hasUpperCaseLetter(valStr); // 包含特殊字符
788
837
 
789
- // 包含数字
790
- const containesNumber = hasNumber(valStr);
791
- // 包含小写字母
792
- const containesLowerCaseLetter = hasLowerCaseLetter(valStr);
793
- // 包含大写字母
794
- const containesUpperCaseLetter = hasUpperCaseLetter(valStr);
795
- // 包含特殊字符
796
- const containesSpecialCharacter = hasSpecialCharacter(valStr, special);
797
- // 包含非法字符,即含有非数字字母特殊字符以外的其他字符
798
- const containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
838
+ var containesSpecialCharacter = hasSpecialCharacter(valStr, special); // 包含非法字符,即含有非数字字母特殊字符以外的其他字符
839
+
840
+ var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
799
841
 
800
842
  if (containesNumber) {
801
843
  currentLevel += 1;
802
- }
844
+ } // 不区分大小写
845
+
803
846
 
804
- // 不区分大小写
805
847
  if (ignoreCase) {
806
848
  if (containesLowerCaseLetter || containesUpperCaseLetter) {
807
849
  currentLevel += 1;
@@ -811,6 +853,7 @@
811
853
  if (containesLowerCaseLetter) {
812
854
  currentLevel += 1;
813
855
  }
856
+
814
857
  if (containesUpperCaseLetter) {
815
858
  currentLevel += 1;
816
859
  }
@@ -818,13 +861,12 @@
818
861
 
819
862
  if (containesSpecialCharacter) {
820
863
  currentLevel += 1;
821
- }
864
+ } // 验证结果
822
865
 
823
- // 验证结果
824
- const validated = currentLevel >= level && !containesUnallowableCharacter;
825
866
 
867
+ var validated = currentLevel >= level && !containesUnallowableCharacter;
826
868
  return {
827
- validated,
869
+ validated: validated,
828
870
  level: currentLevel,
829
871
  containes: {
830
872
  number: containesNumber,
@@ -876,13 +918,24 @@
876
918
  * isPassword(' _Aa12345678', {level: 3, ignoreCase: true});
877
919
  * // => false
878
920
  */
879
- function isPassword(value, { level = 2, ignoreCase = false, special = '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' } = {}) {
880
- return validatePassword(value, { level, ignoreCase, special }).validated;
881
- }
882
921
 
883
- // 护照号 9位,包括首字母和数字;支持 普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*)
884
- const reg$5 = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
922
+ function isPassword(value) {
923
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
924
+ _ref$level = _ref.level,
925
+ level = _ref$level === void 0 ? 2 : _ref$level,
926
+ _ref$ignoreCase = _ref.ignoreCase,
927
+ ignoreCase = _ref$ignoreCase === void 0 ? false : _ref$ignoreCase,
928
+ _ref$special = _ref.special,
929
+ special = _ref$special === void 0 ? '\\x21-\\x2F\\x3A-\\x40\\x5B-\\x60\\x7B-\\x7E' : _ref$special;
930
+
931
+ return validatePassword(value, {
932
+ level: level,
933
+ ignoreCase: ignoreCase,
934
+ special: special
935
+ }).validated;
936
+ }
885
937
 
938
+ var reg$5 = /^((e[\da-z])|(de)|(se)|(pe)|([khm][\da-z]))[\da-z]{7}$/i;
886
939
  /**
887
940
  * 检测值是否为护照号
888
941
  * 支持普通护照(E*)、外交护照(DE)、公务护照(SE)、公务普通护照(PE)、香港特区护照(K/KJ/H*)、澳门特区护照(MA/MB/M*),注意不区分大小写
@@ -902,47 +955,37 @@
902
955
  * // => false
903
956
  *
904
957
  */
958
+
905
959
  function isPassport(value) {
906
- const valueStr = normalizeString(value);
960
+ var valueStr = normalizeString(value);
907
961
  return reg$5.test(valueStr);
908
962
  }
909
963
 
910
- const chineseDictionary = {
964
+ var chineseDictionary = {
911
965
  // 基本汉字
912
- chineseBasic: '[\u4e00-\u9fa5]',
913
-
966
+ chineseBasic: "[\u4E00-\u9FA5]",
914
967
  // 基本汉字补充
915
- chineseExtend: '[\u9ea6-\u9fef]',
916
-
968
+ chineseExtend: "[\u9EA6-\u9FEF]",
917
969
  // 汉字扩展A
918
- chineseExtendA: '[\u3400-\u4DB5]',
919
-
970
+ chineseExtendA: "[\u3400-\u4DB5]",
920
971
  // 汉字扩展B
921
- chineseExtendB: '[\u{20000}-\u{2A6D6}]',
922
-
972
+ chineseExtendB: "[\uD840\uDC00-\uD869\uDED6]",
923
973
  // 汉字扩展C
924
- chineseExtendC: '[\u{2A700}-\u{2B734}]',
925
-
974
+ chineseExtendC: "[\uD869\uDF00-\uD86D\uDF34]",
926
975
  // 汉字扩展D
927
- chineseExtendD: '[\u{2B740}-\u{2B81D}]',
928
-
976
+ chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
929
977
  // 汉字扩展E
930
- chineseExtendE: '[\u{2B820}-\u{2CEA1}]',
931
-
978
+ chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
932
979
  // 汉字扩展F
933
- chineseExtendF: '[\u{2CEB0}-\u{2EBE0}]'
980
+ chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
934
981
  };
982
+ var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
983
+ var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
984
+ var chineseWithExtend = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')';
985
+ var looseChineseExtendRegExp = chineseWithExtend + '+';
986
+ var chineseExtendRegExp = '^' + chineseWithExtend + '+$'; // eslint-disable-next-line no-prototype-builtins
935
987
 
936
- const looseChineseRegExp = chineseDictionary.chineseBasic + '+';
937
- const chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
938
-
939
- const chineseWithExtend = '(?:' + chineseDictionary.chineseBasic + '|' + chineseDictionary.chineseExtend + '|' + chineseDictionary.chineseExtendA + '|' + chineseDictionary.chineseExtendB + '|' + chineseDictionary.chineseExtendC + '|' + chineseDictionary.chineseExtendD + '|' + chineseDictionary.chineseExtendE + '|' + chineseDictionary.chineseExtendF + ')';
940
- const looseChineseExtendRegExp = chineseWithExtend + '+';
941
- const chineseExtendRegExp = '^' + chineseWithExtend + '+$';
942
-
943
- // eslint-disable-next-line no-prototype-builtins
944
- const supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
945
-
988
+ var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
946
989
  /**
947
990
  * 检测值是否为中文
948
991
  *
@@ -979,21 +1022,25 @@
979
1022
  * isChinese('𠮷aa', { useExtend: true, loose: true });
980
1023
  * // => true
981
1024
  */
982
- function isChinese(value, { loose = false, useExtend = false } = {}) {
983
- const valueStr = normalizeString(value);
984
- const basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
985
- const extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
986
1025
 
987
- const hasExtend = useExtend && supportRegExpUnicode;
988
- const resultRegExp = hasExtend ? extendRegExp : basicRegExp;
989
- const flag = hasExtend ? 'u' : undefined;
990
- const reg = new RegExp(resultRegExp, flag);
1026
+ function isChinese(value) {
1027
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1028
+ _ref$loose = _ref.loose,
1029
+ loose = _ref$loose === void 0 ? false : _ref$loose,
1030
+ _ref$useExtend = _ref.useExtend,
1031
+ useExtend = _ref$useExtend === void 0 ? false : _ref$useExtend;
1032
+
1033
+ var valueStr = normalizeString(value);
1034
+ var basicRegExp = loose ? looseChineseRegExp : chineseRegExp;
1035
+ var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
1036
+ var hasExtend = useExtend && supportRegExpUnicode;
1037
+ var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
1038
+ var flag = hasExtend ? 'u' : undefined;
1039
+ var reg = new RegExp(resultRegExp, flag);
991
1040
  return reg.test(valueStr);
992
1041
  }
993
1042
 
994
- // ipv4正则
995
- const reg$4 = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
996
-
1043
+ var reg$4 = /^((\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
997
1044
  /**
998
1045
  * 检测值是否为ipv4
999
1046
  *
@@ -1017,14 +1064,13 @@
1017
1064
  * // => false
1018
1065
  *
1019
1066
  */
1067
+
1020
1068
  function isIPv4(value) {
1021
- const valueStr = normalizeString(value);
1069
+ var valueStr = normalizeString(value);
1022
1070
  return reg$4.test(valueStr);
1023
1071
  }
1024
1072
 
1025
- // ipv6正则
1026
- const reg$3 = /^((([0-9A-F]{1,4}:){7}([0-9A-F]{1,4}|:))|(([0-9A-F]{1,4}:){6}(:[0-9A-F]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){5}(((:[0-9A-F]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){4}(((:[0-9A-F]{1,4}){1,3})|((:[0-9A-F]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){3}(((:[0-9A-F]{1,4}){1,4})|((:[0-9A-F]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){2}(((:[0-9A-F]{1,4}){1,5})|((:[0-9A-F]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){1}(((:[0-9A-F]{1,4}){1,6})|((:[0-9A-F]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(:(((:[0-9A-F]{1,4}){1,7})|((:[0-9A-F]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:)))(%.+)?$/i;
1027
-
1073
+ var reg$3 = /^((([0-9A-F]{1,4}:){7}([0-9A-F]{1,4}|:))|(([0-9A-F]{1,4}:){6}(:[0-9A-F]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){5}(((:[0-9A-F]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3})|:))|(([0-9A-F]{1,4}:){4}(((:[0-9A-F]{1,4}){1,3})|((:[0-9A-F]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){3}(((:[0-9A-F]{1,4}){1,4})|((:[0-9A-F]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){2}(((:[0-9A-F]{1,4}){1,5})|((:[0-9A-F]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(([0-9A-F]{1,4}:){1}(((:[0-9A-F]{1,4}){1,6})|((:[0-9A-F]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:))|(:(((:[0-9A-F]{1,4}){1,7})|((:[0-9A-F]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|\d{1,2})(\.(25[0-5]|2[0-4]\d|1\d\d|\d{1,2})){3}))|:)))(%.+)?$/i;
1028
1074
  /**
1029
1075
  * 检测值是否为ipv6
1030
1076
  *
@@ -1073,14 +1119,13 @@
1073
1119
  * // => false
1074
1120
  *
1075
1121
  */
1122
+
1076
1123
  function isIPv6(value) {
1077
- const valueStr = normalizeString(value);
1124
+ var valueStr = normalizeString(value);
1078
1125
  return reg$3.test(valueStr);
1079
1126
  }
1080
1127
 
1081
- // url正则
1082
- const reg$2 = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\*\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
1083
-
1128
+ var reg$2 = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\*\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;
1084
1129
  /**
1085
1130
  * 检测值是否为url
1086
1131
  *
@@ -1113,14 +1158,13 @@
1113
1158
  * isUrl('http://www.example.com/test/123?foo=bar');
1114
1159
  * // => true
1115
1160
  */
1161
+
1116
1162
  function isUrl(value) {
1117
- const valueStr = normalizeString(value);
1163
+ var valueStr = normalizeString(value);
1118
1164
  return reg$2.test(valueStr);
1119
1165
  }
1120
1166
 
1121
- // 基础规则,由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
1122
- const baseReg = /^\d{15}$/;
1123
-
1167
+ var baseReg = /^\d{15}$/;
1124
1168
  /**
1125
1169
  * 计算校验码
1126
1170
  *
@@ -1129,20 +1173,21 @@
1129
1173
  * @param {string} preCode 营业执照前14位
1130
1174
  * @returns {number} 校验码
1131
1175
  */
1176
+
1132
1177
  function sumCheckCode(preCode) {
1133
- let retNum; // 校验位数字
1178
+ var retNum; // 校验位数字
1134
1179
 
1135
- let pj = 10; // Pj+1 11,初始为10
1180
+ var pj = 10; // Pj+1 11,初始为10
1136
1181
 
1137
- for (let j = 0; j < 14; j++) {
1138
- const sj = pj + Number(preCode[j]);
1139
- let sj10 = sj % 10;
1182
+ for (var j = 0; j < 14; j++) {
1183
+ var sj = pj + Number(preCode[j]);
1184
+ var sj10 = sj % 10;
1140
1185
  sj10 = sj10 === 0 ? 10 : sj10;
1141
- const pj1 = sj10 * 2;
1186
+ var pj1 = sj10 * 2;
1142
1187
  pj = pj1 % 11;
1143
- }
1188
+ } // 反模10计算
1189
+
1144
1190
 
1145
- // 反模10计算
1146
1191
  if (pj === 1) {
1147
1192
  retNum = 0;
1148
1193
  } else {
@@ -1151,7 +1196,6 @@
1151
1196
 
1152
1197
  return retNum;
1153
1198
  }
1154
-
1155
1199
  /**
1156
1200
  * 检测值是否为营业执照号,也叫工商注册号。由14位数字本体码和1位数字校验码组成,其中本体码从左至右依次为:6位首次登记机关码、8位顺序码。
1157
1201
  *
@@ -1177,30 +1221,241 @@
1177
1221
  * isBusinessLicense('31011560098', { checkCode: false });
1178
1222
  * // => false
1179
1223
  */
1180
- function isBusinessLicense(value, options = {}) {
1181
- const valueStr = normalizeString(value);
1182
- // @ts-ignore
1224
+
1225
+
1226
+ function isBusinessLicense(value) {
1227
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1228
+ var valueStr = normalizeString(value); // @ts-ignore
1183
1229
  // TODO 下个版本废弃 loose
1184
- const { loose = false, checkCode: cc = true } = options;
1185
- const needCheckCode = !loose && cc;
1186
1230
 
1187
- const passBaseRule = baseReg.test(valueStr);
1231
+ var _options$loose = options.loose,
1232
+ loose = _options$loose === void 0 ? false : _options$loose,
1233
+ _options$checkCode = options.checkCode,
1234
+ cc = _options$checkCode === void 0 ? true : _options$checkCode;
1235
+ var needCheckCode = !loose && cc;
1236
+ var passBaseRule = baseReg.test(valueStr); // 宽松模式 或 基础规则不通过直接返回
1188
1237
 
1189
- // 宽松模式 或 基础规则不通过直接返回
1190
1238
  if (!needCheckCode || !passBaseRule) {
1191
1239
  return passBaseRule;
1192
- }
1240
+ } // 前14位
1241
+
1193
1242
 
1194
- // 前14位
1195
- const preCode = valueStr.substring(0, 14);
1196
- // 校验码
1197
- const lastCode = valueStr.substring(valueStr.length - 1);
1198
- // 计算校验码
1199
- const checkCode = sumCheckCode(preCode);
1243
+ var preCode = valueStr.substring(0, 14); // 校验码
1200
1244
 
1245
+ var lastCode = valueStr.substring(valueStr.length - 1); // 计算校验码
1246
+
1247
+ var checkCode = sumCheckCode(preCode);
1201
1248
  return lastCode === String(checkCode);
1202
1249
  }
1203
1250
 
1251
+ function _typeof(obj) {
1252
+ "@babel/helpers - typeof";
1253
+
1254
+ if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
1255
+ _typeof = function (obj) {
1256
+ return typeof obj;
1257
+ };
1258
+ } else {
1259
+ _typeof = function (obj) {
1260
+ return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
1261
+ };
1262
+ }
1263
+
1264
+ return _typeof(obj);
1265
+ }
1266
+
1267
+ function _wrapRegExp() {
1268
+ _wrapRegExp = function (re, groups) {
1269
+ return new BabelRegExp(re, undefined, groups);
1270
+ };
1271
+
1272
+ var _super = RegExp.prototype;
1273
+
1274
+ var _groups = new WeakMap();
1275
+
1276
+ function BabelRegExp(re, flags, groups) {
1277
+ var _this = new RegExp(re, flags);
1278
+
1279
+ _groups.set(_this, groups || _groups.get(re));
1280
+
1281
+ return _setPrototypeOf(_this, BabelRegExp.prototype);
1282
+ }
1283
+
1284
+ _inherits(BabelRegExp, RegExp);
1285
+
1286
+ BabelRegExp.prototype.exec = function (str) {
1287
+ var result = _super.exec.call(this, str);
1288
+
1289
+ if (result) result.groups = buildGroups(result, this);
1290
+ return result;
1291
+ };
1292
+
1293
+ BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {
1294
+ if (typeof substitution === "string") {
1295
+ var groups = _groups.get(this);
1296
+
1297
+ return _super[Symbol.replace].call(this, str, substitution.replace(/\$<([^>]+)>/g, function (_, name) {
1298
+ return "$" + groups[name];
1299
+ }));
1300
+ } else if (typeof substitution === "function") {
1301
+ var _this = this;
1302
+
1303
+ return _super[Symbol.replace].call(this, str, function () {
1304
+ var args = arguments;
1305
+
1306
+ if (typeof args[args.length - 1] !== "object") {
1307
+ args = [].slice.call(args);
1308
+ args.push(buildGroups(args, _this));
1309
+ }
1310
+
1311
+ return substitution.apply(this, args);
1312
+ });
1313
+ } else {
1314
+ return _super[Symbol.replace].call(this, str, substitution);
1315
+ }
1316
+ };
1317
+
1318
+ function buildGroups(result, re) {
1319
+ var g = _groups.get(re);
1320
+
1321
+ return Object.keys(g).reduce(function (groups, name) {
1322
+ groups[name] = result[g[name]];
1323
+ return groups;
1324
+ }, Object.create(null));
1325
+ }
1326
+
1327
+ return _wrapRegExp.apply(this, arguments);
1328
+ }
1329
+
1330
+ function _inherits(subClass, superClass) {
1331
+ if (typeof superClass !== "function" && superClass !== null) {
1332
+ throw new TypeError("Super expression must either be null or a function");
1333
+ }
1334
+
1335
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
1336
+ constructor: {
1337
+ value: subClass,
1338
+ writable: true,
1339
+ configurable: true
1340
+ }
1341
+ });
1342
+ if (superClass) _setPrototypeOf(subClass, superClass);
1343
+ }
1344
+
1345
+ function _setPrototypeOf(o, p) {
1346
+ _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
1347
+ o.__proto__ = p;
1348
+ return o;
1349
+ };
1350
+
1351
+ return _setPrototypeOf(o, p);
1352
+ }
1353
+
1354
+ function _isNativeReflectConstruct() {
1355
+ if (typeof Reflect === "undefined" || !Reflect.construct) return false;
1356
+ if (Reflect.construct.sham) return false;
1357
+ if (typeof Proxy === "function") return true;
1358
+
1359
+ try {
1360
+ Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
1361
+ return true;
1362
+ } catch (e) {
1363
+ return false;
1364
+ }
1365
+ }
1366
+
1367
+ function _construct(Parent, args, Class) {
1368
+ if (_isNativeReflectConstruct()) {
1369
+ _construct = Reflect.construct;
1370
+ } else {
1371
+ _construct = function _construct(Parent, args, Class) {
1372
+ var a = [null];
1373
+ a.push.apply(a, args);
1374
+ var Constructor = Function.bind.apply(Parent, a);
1375
+ var instance = new Constructor();
1376
+ if (Class) _setPrototypeOf(instance, Class.prototype);
1377
+ return instance;
1378
+ };
1379
+ }
1380
+
1381
+ return _construct.apply(null, arguments);
1382
+ }
1383
+
1384
+ function _slicedToArray(arr, i) {
1385
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
1386
+ }
1387
+
1388
+ function _toConsumableArray(arr) {
1389
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
1390
+ }
1391
+
1392
+ function _arrayWithoutHoles(arr) {
1393
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
1394
+ }
1395
+
1396
+ function _arrayWithHoles(arr) {
1397
+ if (Array.isArray(arr)) return arr;
1398
+ }
1399
+
1400
+ function _iterableToArray(iter) {
1401
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
1402
+ }
1403
+
1404
+ function _iterableToArrayLimit(arr, i) {
1405
+ var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]);
1406
+
1407
+ if (_i == null) return;
1408
+ var _arr = [];
1409
+ var _n = true;
1410
+ var _d = false;
1411
+
1412
+ var _s, _e;
1413
+
1414
+ try {
1415
+ for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {
1416
+ _arr.push(_s.value);
1417
+
1418
+ if (i && _arr.length === i) break;
1419
+ }
1420
+ } catch (err) {
1421
+ _d = true;
1422
+ _e = err;
1423
+ } finally {
1424
+ try {
1425
+ if (!_n && _i["return"] != null) _i["return"]();
1426
+ } finally {
1427
+ if (_d) throw _e;
1428
+ }
1429
+ }
1430
+
1431
+ return _arr;
1432
+ }
1433
+
1434
+ function _unsupportedIterableToArray(o, minLen) {
1435
+ if (!o) return;
1436
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
1437
+ var n = Object.prototype.toString.call(o).slice(8, -1);
1438
+ if (n === "Object" && o.constructor) n = o.constructor.name;
1439
+ if (n === "Map" || n === "Set") return Array.from(o);
1440
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
1441
+ }
1442
+
1443
+ function _arrayLikeToArray(arr, len) {
1444
+ if (len == null || len > arr.length) len = arr.length;
1445
+
1446
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
1447
+
1448
+ return arr2;
1449
+ }
1450
+
1451
+ function _nonIterableSpread() {
1452
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1453
+ }
1454
+
1455
+ function _nonIterableRest() {
1456
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
1457
+ }
1458
+
1204
1459
  /**
1205
1460
  * 检测值是否类似Promise对象
1206
1461
  *
@@ -1221,12 +1476,10 @@
1221
1476
  * => true
1222
1477
  */
1223
1478
  function isPromiseLike(obj) {
1224
- return obj !== null && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
1479
+ return obj !== null && (_typeof(obj) === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
1225
1480
  }
1226
1481
 
1227
- // 港澳居民来往内地通行证正则
1228
- const regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
1229
-
1482
+ var regHMCard = /^[hm]{1}([0-9]{10}|[0-9]{8})$/i;
1230
1483
  /**
1231
1484
  * 检测值是否为港澳居民来往内地通行证,俗称回乡证或回乡卡。
1232
1485
  *
@@ -1249,17 +1502,15 @@
1249
1502
  * isHMCard('m32031177') // true
1250
1503
  * isHMCard('M32031177') // true
1251
1504
  */
1505
+
1252
1506
  function isHMCard(value) {
1253
- const valueStr = normalizeString(value);
1507
+ var valueStr = normalizeString(value);
1254
1508
  return regHMCard.test(valueStr);
1255
1509
  }
1256
1510
 
1257
- // 台湾居民来往大陆通行证正则
1258
- const regTWCard = /^\d{8}$/i;
1259
-
1260
- // 一次性短期台胞证
1261
- const singleRegTWCard = /^[\da-z]{10,12}$/i;
1511
+ var regTWCard = /^\d{8}$/i; // 一次性短期台胞证
1262
1512
 
1513
+ var singleRegTWCard = /^[\da-z]{10,12}$/i;
1263
1514
  /**
1264
1515
  * 检测值是否为台湾居民来往大陆通行证,俗称台胞证。
1265
1516
  *
@@ -1279,16 +1530,22 @@
1279
1530
  * isTWCard('F290299977') // false
1280
1531
  * isTWCard('F290299977', { loose: true }) // true
1281
1532
  */
1282
- function isTWCard(value, { loose = false } = {}) {
1283
- const valueStr = normalizeString(value);
1533
+
1534
+ function isTWCard(value) {
1535
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1536
+ _ref$loose = _ref.loose,
1537
+ loose = _ref$loose === void 0 ? false : _ref$loose;
1538
+
1539
+ var valueStr = normalizeString(value);
1540
+
1284
1541
  if (regTWCard.test(valueStr)) {
1285
1542
  return true;
1286
1543
  }
1544
+
1287
1545
  return loose ? singleRegTWCard.test(valueStr) : false;
1288
1546
  }
1289
1547
 
1290
- const reg$1 = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
1291
-
1548
+ var reg$1 = /^[A-Z]{6}[A-Z\d]{2}(?:[A-Z\d]{3})?$/;
1292
1549
  /**
1293
1550
  * 检测值是否为 Swift Code。8位或11位,前6位为大写字母,7-8位为大写字母或数字,9-11位为可选的大写字母或数字。
1294
1551
  *
@@ -1309,15 +1566,67 @@
1309
1566
  * isSwiftCode('ICBKCNBJBJM') // true
1310
1567
  *
1311
1568
  */
1569
+
1312
1570
  function isSwiftCode(value) {
1313
- const valueStr = normalizeString(value);
1571
+ var valueStr = normalizeString(value);
1314
1572
  return reg$1.test(valueStr);
1315
1573
  }
1316
1574
 
1317
1575
  // 最大安全数字
1318
- const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
1319
- // 最小安全数字
1320
- const MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
1576
+ var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; // 最小安全数字
1577
+
1578
+ var MIN_SAFE_INTEGER = Number.MIN_SAFE_INTEGER || -9007199254740991;
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
+ }
1321
1630
 
1322
1631
  /**
1323
1632
  * 参考: https://github.com/nefe/number-precision/blob/master/src/index.ts
@@ -1325,17 +1634,45 @@
1325
1634
  * 解决浮动运算问题,避免小数点后产生多位数和计算精度损失。
1326
1635
  * 问题示例:2.3 + 2.4 = 4.699999999999999,1.0 - 0.9 = 0.09999999999999998
1327
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
1328
1653
 
1654
+ if (fmtStrValue === value) {
1655
+ var numValue = fmtStrValue ? Number(fmtStrValue) : NaN;
1656
+
1657
+ if (isNumber(numValue) && !isNaN(numValue)) {
1658
+ return true;
1659
+ }
1660
+ }
1661
+ }
1662
+
1663
+ devWarn("".concat(value, " is not a valid number."));
1664
+ return false;
1665
+ }
1329
1666
  /**
1330
1667
  * 是否为科学计数法数字
1331
1668
  *
1332
1669
  * @param {string} num 检查值
1333
1670
  * @returns {boolean}
1334
1671
  */
1672
+
1335
1673
  function isScientificNumber(num) {
1336
1674
  return /\d+\.?\d*e[\+\-]*\d+/i.test(num);
1337
1675
  }
1338
-
1339
1676
  /**
1340
1677
  * 把错误的数据转正
1341
1678
  *
@@ -1346,60 +1683,63 @@
1346
1683
  *
1347
1684
  * strip(0.09999999999999998)=0.1
1348
1685
  */
1349
- function strip(num, precision = 12) {
1686
+
1687
+ function strip(num) {
1688
+ var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 12;
1350
1689
  return +parseFloat(num.toPrecision(precision));
1351
1690
  }
1352
-
1353
1691
  /**
1354
1692
  * 计算数字的小数点长度,支持科学记数法
1355
1693
  *
1356
1694
  * @param {number|string} num 输入数
1357
1695
  * @returns {number} 小数点长度
1358
1696
  */
1697
+
1359
1698
  function digitLength(num) {
1360
1699
  // Get digit length of e
1361
- const eSplit = num.toString().split(/e/i);
1362
- const len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
1700
+ var eSplit = num.toString().split(/e/i);
1701
+ var len = (eSplit[0].split('.')[1] || '').length - +(eSplit[1] || 0);
1363
1702
  return len > 0 ? len : 0;
1364
1703
  }
1365
-
1366
1704
  /**
1367
1705
  * 把小数转成整数,支持科学计数法。如果是小数则放大成整数
1368
1706
  *
1369
1707
  * @param {number|string} num 输入数
1370
1708
  * @returns {number}
1371
1709
  */
1710
+
1372
1711
  function float2Fixed(num) {
1373
- const strNum = String(num);
1712
+ var strNum = String(num);
1713
+
1374
1714
  if (!isScientificNumber(strNum)) {
1375
1715
  return Number(strNum.replace('.', ''));
1376
1716
  }
1377
- const dLen = digitLength(num);
1717
+
1718
+ var dLen = digitLength(num);
1378
1719
  return dLen > 0 ? strip(+num * Math.pow(10, dLen)) : +num;
1379
1720
  }
1380
-
1381
1721
  /**
1382
1722
  * 检测数字是否越界,如果越界给出提示
1383
1723
  * @param {number} num 输入数
1384
1724
  * @returns
1385
1725
  */
1726
+
1386
1727
  function checkBoundary(num) {
1387
1728
  if (+num > MAX_SAFE_INTEGER || +num < MIN_SAFE_INTEGER) {
1388
- devWarn(`${num} is beyond boundary when transfer to integer, the results may not be accurate`);
1729
+ devWarn("".concat(num, " is beyond boundary when transfer to integer, the results may not be accurate"));
1389
1730
  }
1390
1731
  }
1391
-
1392
1732
  /**
1393
1733
  * 去掉左边数字0
1394
1734
  *
1395
1735
  * @param {string} num 数字字符串
1396
1736
  * @returns {string}
1397
1737
  */
1398
- function trimLeftZero(num) {
1399
- const reg = /^([+-])?(0+)([0-9\.]+)$/;
1400
- const result = reg.exec(num);
1401
1738
 
1402
- let sign;
1739
+ function trimLeftZero(num) {
1740
+ var reg = /^([+-])?(0+)([0-9\.]+)$/;
1741
+ var result = reg.exec(num);
1742
+ var sign;
1403
1743
 
1404
1744
  if (result) {
1405
1745
  sign = result[1] || '';
@@ -1408,7 +1748,6 @@
1408
1748
 
1409
1749
  return num;
1410
1750
  }
1411
-
1412
1751
  /**
1413
1752
  * 科学计数法转换成普通数字
1414
1753
  *
@@ -1419,39 +1758,40 @@
1419
1758
  * @param {string | number} num 科学计数法数字
1420
1759
  * @returns {string | number} 转换后的数字字符串
1421
1760
  */
1761
+
1422
1762
  function scientificToNumber(num) {
1423
- const strNum = String(num);
1763
+ var strNum = String(num);
1424
1764
 
1425
1765
  if (!isScientificNumber(strNum)) {
1426
1766
  return num;
1427
1767
  }
1428
-
1429
1768
  /** @type string */
1430
- let ret;
1431
1769
 
1432
- const zero = '0';
1433
- const parts = strNum.toLowerCase().split('e');
1434
- const e = parts.pop(); // 存储指数
1770
+
1771
+ var ret;
1772
+ var zero = '0';
1773
+ var parts = strNum.toLowerCase().split('e');
1774
+ var e = parts.pop(); // 存储指数
1435
1775
  // @ts-ignore
1436
- const l = Math.abs(e); // 取绝对值,l-1就是0的个数
1776
+
1777
+ var l = Math.abs(e); // 取绝对值,l-1就是0的个数
1437
1778
  // @ts-ignore
1438
- const sign = e / l; //判断正负
1439
- const coeff_array = parts[0].split('.'); // 将系数按照小数点拆分
1440
1779
 
1780
+ var sign = e / l; //判断正负
1781
+
1782
+ var coeff_array = parts[0].split('.'); // 将系数按照小数点拆分
1441
1783
  // 如果是小数
1784
+
1442
1785
  if (sign === -1) {
1443
1786
  // 整数部分
1444
- const intVal = trimLeftZero(coeff_array[0]);
1445
-
1446
- // 整数部分大于科学计数后面部分
1787
+ var intVal = trimLeftZero(coeff_array[0]); // 整数部分大于科学计数后面部分
1447
1788
  // 如: 10e-1, 10.2e-1
1448
- if (intVal.length > l) {
1449
- const thanLen = intVal.length - l;
1450
- const dec = coeff_array[1] || '';
1451
1789
 
1452
- ret = intVal.slice(0, thanLen);
1790
+ if (intVal.length > l) {
1791
+ var thanLen = intVal.length - l;
1792
+ var dec = coeff_array[1] || '';
1793
+ ret = intVal.slice(0, thanLen); // 处理 10e-1, 100e-1
1453
1794
 
1454
- // 处理 10e-1, 100e-1
1455
1795
  if (intVal.slice(thanLen) !== '0' || dec) {
1456
1796
  ret += '.' + intVal.slice(thanLen) + dec;
1457
1797
  }
@@ -1462,42 +1802,21 @@
1462
1802
  }
1463
1803
  } else {
1464
1804
  // 小数部分
1465
- const dec = coeff_array[1] || '';
1805
+ var _dec = coeff_array[1] || ''; // 如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数
1806
+
1466
1807
 
1467
- // 如果是整数,将整数除第一位之外的非零数字计入位数,相应的减少0的个数
1468
- if (l - dec.length < 0) {
1469
- ret = trimLeftZero(coeff_array[0] + dec.substring(0, l)) + '.' + dec.substring(l);
1808
+ if (l - _dec.length < 0) {
1809
+ ret = trimLeftZero(coeff_array[0] + _dec.substring(0, l)) + '.' + _dec.substring(l);
1470
1810
  } else {
1471
1811
  // 拼接字符串,如果是整数,不需要拼接小数点
1472
- ret = coeff_array.join('') + new Array(l - dec.length + 1).join(zero);
1812
+ ret = coeff_array.join('') + new Array(l - _dec.length + 1).join(zero);
1473
1813
  }
1474
1814
  }
1475
1815
 
1476
1816
  return trimLeftZero(ret);
1477
1817
  }
1478
1818
 
1479
- /**
1480
- * 检查值是否为NaN
1481
- *
1482
- * @static
1483
- * @alias module:Type.isNaN
1484
- * @since 1.1.0
1485
- * @param {*} value 检查值
1486
- * @returns {boolean} 是否为NaN
1487
- * @example
1488
- *
1489
- * isNaN(NaN)
1490
- * // => true
1491
- *
1492
- * isNaN(1)
1493
- * // => false
1494
- */
1495
- function _isNaN(value) {
1496
- return isType(value, 'Number') && isNaN(value);
1497
- }
1498
-
1499
- const reg = /^[+-]?\d*\.?\d*$/;
1500
-
1819
+ var reg = /^[+-]?\d*\.?\d*$/;
1501
1820
  /**
1502
1821
  * 检查数字或数字字符串
1503
1822
  *
@@ -1505,22 +1824,21 @@
1505
1824
  * @param {string} num
1506
1825
  * @returns 是否为数字
1507
1826
  */
1508
- function checkNumber(num) {
1509
- if (!(reg.test(num) || isScientificNumber(num)) || _isNaN(num) || (typeof num !== 'number' && typeof num !== 'string') || num === '') {
1510
- devWarn(`${num} invalid parameter.`);
1511
1827
 
1828
+ function checkNumber(num) {
1829
+ if (!(reg.test(num) || isScientificNumber(num)) || _isNaN(num) || typeof num !== 'number' && typeof num !== 'string' || num === '') {
1830
+ devWarn("".concat(num, " invalid parameter."));
1512
1831
  return false;
1513
- }
1514
-
1515
- // 数字超限如果不是是字符串,可能有异常
1832
+ } // 数字超限如果不是是字符串,可能有异常
1516
1833
  // 如 1111111111111111111111 // => 1.1111111111111111e+21
1834
+
1835
+
1517
1836
  if (typeof num === 'number') {
1518
1837
  checkBoundary(num);
1519
1838
  }
1520
1839
 
1521
1840
  return true;
1522
1841
  }
1523
-
1524
1842
  /**
1525
1843
  * 格式化整数部分
1526
1844
  *
@@ -1529,20 +1847,22 @@
1529
1847
  * @param {string} thousand 千分位符号
1530
1848
  * @returns 格式化后的值
1531
1849
  */
1850
+
1851
+
1532
1852
  function formatInt(intStr, thousand) {
1533
- let txt = '';
1853
+ var txt = '';
1534
1854
  intStr = trimLeftZero(intStr);
1535
1855
  intStr = intStr[0] === '+' ? intStr.substring(1) : intStr; // 去掉+符号
1536
- const negativeSymbol = Number(intStr) < 0 ? '-' : '';
1537
- const reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
1538
1856
 
1539
- for (let i = 0; i < reArr.length; i++) {
1857
+ var negativeSymbol = Number(intStr) < 0 ? '-' : '';
1858
+ var reArr = negativeSymbol ? intStr.substring(1).split('').reverse() : intStr.split('').reverse();
1859
+
1860
+ for (var i = 0; i < reArr.length; i++) {
1540
1861
  txt += reArr[i] + ((i + 1) % 3 === 0 && i + 1 !== reArr.length ? thousand : '');
1541
1862
  }
1542
1863
 
1543
1864
  return negativeSymbol + txt.split('').reverse().join('');
1544
1865
  }
1545
-
1546
1866
  /**
1547
1867
  * 格式化小数部分,如果使用 toFixed,超大额数字会自动被截断
1548
1868
  *
@@ -1552,16 +1872,18 @@
1552
1872
  * @param {string} decimal 小数点符号
1553
1873
  * @returns 格式化后的值
1554
1874
  */
1875
+
1876
+
1555
1877
  function formatDec(decStr, precision, decimal) {
1556
1878
  if (precision === 0) {
1557
1879
  return '';
1558
1880
  }
1559
1881
 
1560
- const zero = 0;
1561
- let ret = '';
1882
+ var zero = 0;
1883
+ var ret = '';
1562
1884
 
1563
1885
  if (decStr && Number(decStr) > 0) {
1564
- let tmpNum = parseFloat('0.' + decStr);
1886
+ var tmpNum = parseFloat('0.' + decStr);
1565
1887
  ret = tmpNum.toFixed(precision).substring(2);
1566
1888
  } else {
1567
1889
  ret = zero.toFixed(precision).substring(2);
@@ -1569,7 +1891,6 @@
1569
1891
 
1570
1892
  return decimal + ret;
1571
1893
  }
1572
-
1573
1894
  /**
1574
1895
  * 格式化金额
1575
1896
  *
@@ -1613,27 +1934,41 @@
1613
1934
  * formatMoney(1000.00, { decimal: '&' });
1614
1935
  * // => 1,000&00
1615
1936
  */
1616
- const formatMoney = (num, { precision = 2, symbol, thousand = ',', decimal = '.' } = {}) => {
1937
+
1938
+
1939
+ var formatMoney = function formatMoney(num) {
1940
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1941
+ _ref$precision = _ref.precision,
1942
+ precision = _ref$precision === void 0 ? 2 : _ref$precision,
1943
+ symbol = _ref.symbol,
1944
+ _ref$thousand = _ref.thousand,
1945
+ thousand = _ref$thousand === void 0 ? ',' : _ref$thousand,
1946
+ _ref$decimal = _ref.decimal,
1947
+ decimal = _ref$decimal === void 0 ? '.' : _ref$decimal;
1948
+
1617
1949
  // 数字参数不正确,返回空字符串
1618
1950
  // @ts-ignore
1619
1951
  if (!checkNumber(num)) {
1620
1952
  return '';
1621
- }
1953
+ } // 参数规整化
1954
+
1622
1955
 
1623
- // 参数规整化
1624
1956
  if (typeof precision !== 'number' || _isNaN(precision) || precision < 0) {
1625
1957
  precision = 2;
1626
1958
  } else if (precision > 10) {
1627
1959
  precision = 10;
1628
1960
  }
1961
+
1629
1962
  symbol = typeof symbol === 'string' ? symbol : '';
1630
1963
  thousand = typeof thousand === 'string' ? thousand : ',';
1631
- decimal = typeof decimal === 'string' ? decimal : '.';
1964
+ decimal = typeof decimal === 'string' ? decimal : '.'; // 转换数字字符串,支持科学记数法
1965
+
1966
+ var strNum = scientificToNumber(num) + ''; // 整数和小数部分
1632
1967
 
1633
- // 转换数字字符串,支持科学记数法
1634
- const strNum = scientificToNumber(num) + '';
1635
- // 整数和小数部分
1636
- const [intStr, decStr] = strNum.split('.');
1968
+ var _strNum$split = strNum.split('.'),
1969
+ _strNum$split2 = _slicedToArray(_strNum$split, 2),
1970
+ intStr = _strNum$split2[0],
1971
+ decStr = _strNum$split2[1];
1637
1972
 
1638
1973
  return symbol + formatInt(intStr, thousand) + formatDec(decStr, precision, decimal);
1639
1974
  };
@@ -1668,13 +2003,20 @@
1668
2003
  * // => 6228-4804-0256-4890
1669
2004
  *
1670
2005
  */
1671
- function formatBankCard(bankCardNo = '', { char = ' ', length = 4 } = {}) {
1672
- const reg = new RegExp(`(.{${length}})`, 'g');
1673
- const regChar = new RegExp(`${char}`, 'g');
1674
2006
 
1675
- const realValue = normalizeString(bankCardNo).replace(regChar, '');
1676
- const str = realValue.replace(reg, `$1${char}`);
2007
+ function formatBankCard() {
2008
+ var bankCardNo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
2009
+
2010
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
2011
+ _ref$char = _ref["char"],
2012
+ _char = _ref$char === void 0 ? ' ' : _ref$char,
2013
+ _ref$length = _ref.length,
2014
+ length = _ref$length === void 0 ? 4 : _ref$length;
1677
2015
 
2016
+ var reg = new RegExp("(.{".concat(length, "})"), 'g');
2017
+ var regChar = new RegExp("".concat(_char), 'g');
2018
+ var realValue = normalizeString(bankCardNo).replace(regChar, '');
2019
+ var str = realValue.replace(reg, "$1".concat(_char));
1678
2020
  return realValue.length % length === 0 ? str.substring(0, str.length - 1) : str;
1679
2021
  }
1680
2022
 
@@ -1724,64 +2066,69 @@
1724
2066
  * // => 林**
1725
2067
  *
1726
2068
  */
1727
- function replaceChar(str, { start = 3, end = -4, char = '*', repeat, exclude } = {}) {
1728
- const realStr = normalizeString(str);
1729
- const strLen = realStr.length;
1730
2069
 
1731
- // 开始位置超过str长度
2070
+ function replaceChar(str) {
2071
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
2072
+ _ref$start = _ref.start,
2073
+ start = _ref$start === void 0 ? 3 : _ref$start,
2074
+ _ref$end = _ref.end,
2075
+ end = _ref$end === void 0 ? -4 : _ref$end,
2076
+ _ref$char = _ref["char"],
2077
+ _char = _ref$char === void 0 ? '*' : _ref$char,
2078
+ repeat = _ref.repeat,
2079
+ exclude = _ref.exclude;
2080
+
2081
+ var realStr = normalizeString(str);
2082
+ var strLen = realStr.length; // 开始位置超过str长度
2083
+
1732
2084
  if (Math.abs(start) >= strLen) {
1733
2085
  return realStr;
1734
2086
  }
1735
2087
 
1736
2088
  start = start >= 0 ? start : strLen + start;
1737
- end = end >= 0 ? end : strLen + end;
2089
+ end = end >= 0 ? end : strLen + end; // 开始位置大于结束位置
1738
2090
 
1739
- // 开始位置大于结束位置
1740
2091
  if (start >= end) {
1741
2092
  return realStr;
1742
2093
  }
1743
2094
 
1744
- let middleStr = realStr.substring(start, end);
2095
+ var middleStr = realStr.substring(start, end);
1745
2096
 
1746
2097
  if (exclude) {
1747
- const reg = new RegExp(`[^${exclude}]`, 'g');
1748
- middleStr = middleStr.replace(reg, char);
2098
+ var reg = new RegExp("[^".concat(exclude, "]"), 'g');
2099
+ middleStr = middleStr.replace(reg, _char);
1749
2100
  } else {
1750
2101
  repeat = typeof repeat === 'number' && repeat >= 0 ? repeat : middleStr.length;
1751
- middleStr = char.repeat(repeat);
2102
+ middleStr = _char.repeat(repeat);
1752
2103
  }
1753
2104
 
1754
2105
  return realStr.substring(0, start) + middleStr + realStr.substring(end);
1755
2106
  }
1756
2107
 
1757
- // 简体
1758
- const chnNumberChar = ['', '', '', '', '四', '五', '六', '七', '八', '九'];
1759
- const chnUnitChar = ['', '十', '百', '千'];
2108
+ var chnNumberChar = ['零', '一', '二', '三', '四', '五', '六', '七', '八', '九'];
2109
+ var chnUnitChar = ['', '', '', '']; // 繁体
1760
2110
 
1761
- // 繁体
1762
- const big5NumberChar = ['', '', '', '', '肆', '伍', '陆', '柒', '捌', '玖'];
1763
- const big5UnitChar = ['', '拾', '佰', '仟'];
1764
-
1765
- // 数字字符、计数单位
2111
+ var big5NumberChar = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];
2112
+ var big5UnitChar = ['', '', '', '']; // 数字字符、计数单位
1766
2113
 
1767
2114
  /**
1768
2115
  * @type {string[]}
1769
2116
  * @private
1770
2117
  */
1771
- let numberChar;
1772
2118
 
2119
+ var numberChar;
1773
2120
  /**
1774
2121
  * @type {string[]}
1775
2122
  * @private
1776
2123
  */
1777
- let unitChar;
1778
2124
 
2125
+ var unitChar;
1779
2126
  /**
1780
2127
  * @type {string[]}
1781
2128
  * @private
1782
2129
  */
1783
- let unitSection;
1784
2130
 
2131
+ var unitSection;
1785
2132
  /**
1786
2133
  * 每个小节的内部进行转化
1787
2134
  *
@@ -1789,17 +2136,18 @@
1789
2136
  * @param {number} section 数字
1790
2137
  * @returns {string} 转化的数字
1791
2138
  */
2139
+
1792
2140
  function sectionToChinese(section) {
1793
- let str = '';
1794
- let chnstr = '';
1795
- let zero = false; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
1796
- let unitPos = 0;
2141
+ var str = '';
2142
+ var chnstr = '';
2143
+ var zero = false; //zero为是否进行补零, 第一次进行取余由于为个位数,默认不补零
2144
+
2145
+ var unitPos = 0;
1797
2146
 
1798
2147
  while (section > 0) {
1799
2148
  // 对数字取余10,得到的数即为个位数
1800
- let v = section % 10;
2149
+ var v = section % 10; //如果数字为零,则对字符串进行补零
1801
2150
 
1802
- //如果数字为零,则对字符串进行补零
1803
2151
  if (v == 0) {
1804
2152
  if (zero) {
1805
2153
  //如果遇到连续多次取余都是0,那么只需补一个零即可
@@ -1813,12 +2161,13 @@
1813
2161
  str += unitChar[unitPos];
1814
2162
  chnstr = str + chnstr;
1815
2163
  }
2164
+
1816
2165
  unitPos++;
1817
2166
  section = Math.floor(section / 10);
1818
2167
  }
2168
+
1819
2169
  return chnstr;
1820
2170
  }
1821
-
1822
2171
  /**
1823
2172
  * 转换整数
1824
2173
  *
@@ -1826,22 +2175,26 @@
1826
2175
  * @param {number} num 要转换的数字
1827
2176
  * @returns {string} 中文数字
1828
2177
  */
1829
- function convertInteger(num) {
1830
- let numInt = Math.floor(num);
1831
2178
 
1832
- let unitPos = 0;
1833
- let strIns = '';
1834
- let chnStr = '';
1835
- let needZero = false;
2179
+
2180
+ function convertInteger(num) {
2181
+ var numInt = Math.floor(num);
2182
+ var unitPos = 0;
2183
+ var strIns = '';
2184
+ var chnStr = '';
2185
+ var needZero = false;
1836
2186
 
1837
2187
  if (numInt === 0) {
1838
2188
  return numberChar[0];
1839
2189
  }
2190
+
1840
2191
  while (numInt > 0) {
1841
2192
  var section = numInt % 10000;
2193
+
1842
2194
  if (needZero) {
1843
2195
  chnStr = numberChar[0] + chnStr;
1844
2196
  }
2197
+
1845
2198
  strIns = sectionToChinese(section);
1846
2199
  strIns += section !== 0 ? unitSection[unitPos] : unitSection[0];
1847
2200
  chnStr = strIns + chnStr;
@@ -1849,29 +2202,29 @@
1849
2202
  numInt = Math.floor(numInt / 10000);
1850
2203
  unitPos++;
1851
2204
  }
2205
+
1852
2206
  return chnStr;
1853
2207
  }
1854
-
1855
2208
  /**
1856
2209
  * 转换小数
1857
2210
  *
1858
2211
  * @private
1859
2212
  * @param {number} num 要转换的数字
1860
2213
  */
1861
- function convertDecimal(num) {
1862
- const strNum = num + '';
1863
- const index = strNum.indexOf('.');
1864
2214
 
1865
- let ret = '';
2215
+
2216
+ function convertDecimal(num) {
2217
+ var strNum = num + '';
2218
+ var index = strNum.indexOf('.');
2219
+ var ret = '';
1866
2220
 
1867
2221
  if (index > -1) {
1868
- let decimalStr = strNum.slice(index + 1);
2222
+ var decimalStr = strNum.slice(index + 1);
1869
2223
  ret = mapNumberChar(parseInt(decimalStr));
1870
2224
  }
1871
2225
 
1872
2226
  return ret;
1873
2227
  }
1874
-
1875
2228
  /**
1876
2229
  * 映射为中文数字
1877
2230
  *
@@ -1879,17 +2232,18 @@
1879
2232
  * @param {number} num 要处理的数字
1880
2233
  * @returns {string} 返回中文数字的映射
1881
2234
  */
2235
+
2236
+
1882
2237
  function mapNumberChar(num) {
1883
- const strNum = num + '';
1884
- let ret = '';
2238
+ var strNum = num + '';
2239
+ var ret = '';
1885
2240
 
1886
- for (let i = 0, len = strNum.length; i < len; i++) {
2241
+ for (var i = 0, len = strNum.length; i < len; i++) {
1887
2242
  ret += numberChar[parseInt(strNum[i])];
1888
2243
  }
1889
2244
 
1890
2245
  return ret;
1891
2246
  }
1892
-
1893
2247
  /**
1894
2248
  * 数字转中文数字
1895
2249
  * 不在安全数字 -9007199254740991~9007199254740991 内,处理会有异常
@@ -1935,55 +2289,65 @@
1935
2289
  * // => 一九九〇
1936
2290
  *
1937
2291
  */
1938
- function numberToChinese(num, { big5 = false, unit = true, decimal = '点', zero = '', negative = '负', unitConfig = {} } = {}) {
2292
+
2293
+
2294
+ function numberToChinese(num) {
2295
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
2296
+ _ref$big = _ref.big5,
2297
+ big5 = _ref$big === void 0 ? false : _ref$big,
2298
+ _ref$unit = _ref.unit,
2299
+ unit = _ref$unit === void 0 ? true : _ref$unit,
2300
+ _ref$decimal = _ref.decimal,
2301
+ decimal = _ref$decimal === void 0 ? '点' : _ref$decimal,
2302
+ _ref$zero = _ref.zero,
2303
+ zero = _ref$zero === void 0 ? '' : _ref$zero,
2304
+ _ref$negative = _ref.negative,
2305
+ negative = _ref$negative === void 0 ? '负' : _ref$negative,
2306
+ _ref$unitConfig = _ref.unitConfig,
2307
+ unitConfig = _ref$unitConfig === void 0 ? {} : _ref$unitConfig;
2308
+
1939
2309
  // 非数字 或 NaN 不处理
1940
2310
  if (typeof num !== 'number' || isNaN(num)) {
1941
- devWarn(`参数错误 ${num},请传入数字`);
1942
-
2311
+ devWarn("\u53C2\u6570\u9519\u8BEF ".concat(num, "\uFF0C\u8BF7\u4F20\u5165\u6570\u5B57"));
1943
2312
  return '';
1944
- }
2313
+ } // 超过安全数字提示
2314
+
1945
2315
 
1946
- // 超过安全数字提示
1947
- checkBoundary(num);
2316
+ checkBoundary(num); // 设置数字字符和计数单位
1948
2317
 
1949
- // 设置数字字符和计数单位
1950
2318
  if (big5) {
1951
2319
  numberChar = big5NumberChar.slice();
1952
2320
  unitChar = big5UnitChar.slice();
1953
2321
  } else {
1954
2322
  numberChar = chnNumberChar.slice();
1955
2323
  unitChar = chnUnitChar.slice();
1956
- }
2324
+ } // 设置节点计数单位,万、亿、万亿
2325
+
1957
2326
 
1958
- // 设置节点计数单位,万、亿、万亿
1959
- const unitWan = unitConfig?.w || '';
1960
- const unitYi = unitConfig?.y || '亿';
1961
- const unitWanYi = unitWan + unitYi;
1962
- unitSection = ['', unitWan, unitYi, unitWanYi];
2327
+ var unitWan = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.w) || '万';
2328
+ var unitYi = (unitConfig === null || unitConfig === void 0 ? void 0 : unitConfig.y) || '亿';
2329
+ var unitWanYi = unitWan + unitYi;
2330
+ unitSection = ['', unitWan, unitYi, unitWanYi]; // 设置0
1963
2331
 
1964
- // 设置0
1965
2332
  if (zero) {
1966
2333
  numberChar[0] = zero;
1967
- }
2334
+ } // 前置字符,负数处理
2335
+
1968
2336
 
1969
- // 前置字符,负数处理
1970
- const preStr = num < 0 ? negative : '';
2337
+ var preStr = num < 0 ? negative : ''; // 整数和小数
1971
2338
 
1972
- // 整数和小数
1973
- let chnInteger, chnDecimal;
1974
- const numAbs = Math.abs(num);
2339
+ var chnInteger, chnDecimal;
2340
+ var numAbs = Math.abs(num); // 处理整数
1975
2341
 
1976
- // 处理整数
1977
2342
  if (unit) {
1978
2343
  chnInteger = convertInteger(numAbs);
1979
2344
  } else {
1980
2345
  chnInteger = mapNumberChar(Math.floor(numAbs));
1981
- }
2346
+ } // 处理小数
1982
2347
 
1983
- // 处理小数
1984
- chnDecimal = convertDecimal(numAbs);
1985
2348
 
1986
- return chnDecimal ? `${preStr}${chnInteger}${decimal}${chnDecimal}` : `${preStr}${chnInteger}`;
2349
+ chnDecimal = convertDecimal(numAbs);
2350
+ return chnDecimal ? "".concat(preStr).concat(chnInteger).concat(decimal).concat(chnDecimal) : "".concat(preStr).concat(chnInteger);
1987
2351
  }
1988
2352
 
1989
2353
  /**
@@ -2009,76 +2373,36 @@
2009
2373
  * // => 1 GB
2010
2374
  */
2011
2375
  function bytesToSize(bytes) {
2012
- const numBytes = typeof bytes !== 'number' ? Number(bytes) : bytes;
2376
+ var numBytes = typeof bytes !== 'number' ? Number(bytes) : bytes;
2013
2377
  if (numBytes === 0 || isNaN(numBytes)) return '0 B';
2014
-
2015
- const k = 1024;
2016
- // 存储单位
2017
- const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
2018
- const i = Math.floor(Math.log(numBytes) / Math.log(k));
2019
-
2020
- return sizes[i] ? `${Number((numBytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}` : numBytes + '';
2021
- }
2022
-
2023
- const regIdCard = /^(?<province>\d{2})(?<city>\d{2})(?<area>\d{2})(?<year>(?:\d{2})?\d{2})(?<month>\d{2})(?<day>\d{2})\d{2}(?<gender>\d)(?:\d|X)?$/i;
2024
-
2025
- const Provinces = [
2026
- // 华北地区:北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000
2027
- ['11', '北京市'],
2028
- ['12', '天津市'],
2029
- ['13', '河北省'],
2030
- ['14', '山西省'],
2031
- ['15', '内蒙古自治区'],
2032
-
2033
- // 东北地区: 辽宁省|210000,吉林省|220000,黑龙江省|230000
2034
- ['21', '辽宁省'],
2035
- ['22', '吉林省'],
2036
- ['23', '黑龙江省'],
2037
-
2038
- // 华东地区: 上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000
2039
- ['31', '上海市'],
2040
- ['32', '江苏省'],
2041
- ['33', '浙江省'],
2042
- ['34', '安徽省'],
2043
- ['35', '福建省'],
2044
- ['36', '江西省'],
2045
- ['37', '山东省'],
2046
-
2047
- // 华中地区: 河南省|410000,湖北省|420000,湖南省|430000
2048
- ['41', '河南省'],
2049
- ['42', '湖北省'],
2050
- ['43', '湖南省'],
2051
-
2052
- // 华南地区:广东省|440000,广西壮族自治区|450000,海南省|460000
2053
- ['44', '广东省'],
2054
- ['45', '广西壮族自治区'],
2055
- ['46', '海南省'],
2056
-
2057
- // 西南地区:重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000
2058
- ['50', '重庆市'],
2059
- ['51', '四川省'],
2060
- ['52', '贵州省'],
2061
- ['53', '云南省'],
2062
- ['54', '西藏自治区'],
2063
-
2064
- // 西北地区: 陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000
2065
- ['61', '陕西省'],
2066
- ['62', '甘肃省'],
2067
- ['63', '青海省'],
2068
- ['64', '宁夏回族自治区'],
2069
- ['65', '新疆维吾尔自治区'],
2070
-
2071
- // 台湾地区:台湾省|710000
2072
- // 台湾居民公民身份号码地址码为830000,参考 http://www.wanweibaike.com/wiki-中华人民共和国行政区划代码_(7区)、https://zh.wikipedia.org/wiki/港澳台居民居住证
2073
- ['71', '台湾省'],
2074
- ['83', '台湾省'],
2075
-
2076
- // 港澳地区:香港特别行政区|810000,澳门特别行政区|820000
2077
- ['81', '香港特别行政区'],
2078
- ['82', '澳门特别行政区']
2079
- ];
2080
-
2081
- // 第一位数字是以前的大区制代码。第二位是大区所在省市编码。全国共分为8个大区:华北(1)、东北(2)、华东(3)、中南(4)、西南(5)、西北(6)、台湾(7)和港澳(8)。
2378
+ var k = 1024; // 存储单位
2379
+
2380
+ var sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
2381
+ var i = Math.floor(Math.log(numBytes) / Math.log(k));
2382
+ return sizes[i] ? "".concat(Number((numBytes / Math.pow(k, i)).toFixed(2)), " ").concat(sizes[i]) : numBytes + '';
2383
+ }
2384
+
2385
+ var regIdCard = /*#__PURE__*/_wrapRegExp(/^([0-9]{2})([0-9]{2})([0-9]{2})((?:[0-9]{2})?[0-9]{2})([0-9]{2})([0-9]{2})[0-9]{2}([0-9])(?:[0-9]|X)?$/i, {
2386
+ province: 1,
2387
+ city: 2,
2388
+ area: 3,
2389
+ year: 4,
2390
+ month: 5,
2391
+ day: 6,
2392
+ gender: 7
2393
+ });
2394
+
2395
+ var Provinces = [// 华北地区:北京市|110000,天津市|120000,河北省|130000,山西省|140000,内蒙古自治区|150000
2396
+ ['11', '北京市'], ['12', '天津市'], ['13', '河北省'], ['14', '山西省'], ['15', '内蒙古自治区'], // 东北地区: 辽宁省|210000,吉林省|220000,黑龙江省|230000
2397
+ ['21', '辽宁省'], ['22', '吉林省'], ['23', '黑龙江省'], // 华东地区: 上海市|310000,江苏省|320000,浙江省|330000,安徽省|340000,福建省|350000,江西省|360000,山东省|370000
2398
+ ['31', '上海市'], ['32', '江苏省'], ['33', '浙江省'], ['34', '安徽省'], ['35', '福建省'], ['36', '江西省'], ['37', '山东省'], // 华中地区: 河南省|410000,湖北省|420000,湖南省|430000
2399
+ ['41', '河南省'], ['42', '湖北省'], ['43', '湖南省'], // 华南地区:广东省|440000,广西壮族自治区|450000,海南省|460000
2400
+ ['44', '广东省'], ['45', '广西壮族自治区'], ['46', '海南省'], // 西南地区:重庆市|500000,四川省|510000,贵州省|520000,云南省|530000,西藏自治区|540000
2401
+ ['50', '重庆市'], ['51', '四川省'], ['52', '贵州省'], ['53', '云南省'], ['54', '西藏自治区'], // 西北地区: 陕西省|610000,甘肃省|620000,青海省|630000,宁夏回族自治区|640000,新疆维吾尔自治区|650000
2402
+ ['61', '陕西省'], ['62', '甘肃省'], ['63', '青海省'], ['64', '宁夏回族自治区'], ['65', '新疆维吾尔自治区'], // 台湾地区:台湾省|710000
2403
+ // 台湾居民公民身份号码地址码为830000,参考 http://www.wanweibaike.com/wiki-中华人民共和国行政区划代码_(7区)、https://zh.wikipedia.org/wiki/港澳台居民居住证
2404
+ ['71', '台湾省'], ['83', '台湾省'], // 港澳地区:香港特别行政区|810000,澳门特别行政区|820000
2405
+ ['81', '香港特别行政区'], ['82', '澳门特别行政区']]; // 第一位数字是以前的大区制代码。第二位是大区所在省市编码。全国共分为8个大区:华北(1)、东北(2)、华东(3)、中南(4)、西南(5)、西北(6)、台湾(7)和港澳(8)。
2082
2406
  // const Regions = [
2083
2407
  // ['1', '华北地区'],
2084
2408
  // ['2', '东北地区'],
@@ -2143,23 +2467,27 @@
2143
2467
  * }
2144
2468
  *
2145
2469
  */
2470
+
2146
2471
  function parseIdCard(id) {
2147
- if (!isIdCard(id, { loose: true })) {
2472
+ if (!isIdCard(id, {
2473
+ loose: true
2474
+ })) {
2148
2475
  return null;
2149
2476
  }
2150
2477
 
2151
- const info = regIdCard.exec(id);
2478
+ var info = regIdCard.exec(id);
2152
2479
 
2153
2480
  if (!info) {
2154
2481
  return null;
2155
2482
  }
2156
-
2157
2483
  /**
2158
2484
  * @type {{ province: string, city: string, area: string, year: string, month: string, day: string, gender: string }}
2159
2485
  *
2160
2486
  */
2161
2487
  // @ts-ignore
2162
- const origin = info?.groups || {
2488
+
2489
+
2490
+ var origin = (info === null || info === void 0 ? void 0 : info.groups) || {
2163
2491
  province: info[1],
2164
2492
  city: info[2],
2165
2493
  area: info[3],
@@ -2168,23 +2496,23 @@
2168
2496
  day: info[6],
2169
2497
  gender: info[7]
2170
2498
  };
2171
-
2172
- const province = Provinces.find((item) => item[0] === origin.province);
2499
+ var province = Provinces.find(function (item) {
2500
+ return item[0] === origin.province;
2501
+ });
2173
2502
 
2174
2503
  if (!province) {
2175
2504
  return null;
2176
2505
  }
2177
2506
 
2178
- const birthday = `${origin.year}-${origin.month}-${origin.day}`;
2179
- const gender = Number(origin.gender) % 2 === 0 ? '女' : '男';
2180
- // const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));
2507
+ var birthday = "".concat(origin.year, "-").concat(origin.month, "-").concat(origin.day);
2508
+ var gender = Number(origin.gender) % 2 === 0 ? '女' : '男'; // const region = Regions.find(item => item[0] === origin.province?.substring(0, 1));
2181
2509
 
2182
2510
  return {
2183
2511
  // region,
2184
2512
  province: province[1],
2185
- birthday,
2186
- gender,
2187
- origin
2513
+ birthday: birthday,
2514
+ gender: gender,
2515
+ origin: origin
2188
2516
  };
2189
2517
  }
2190
2518
 
@@ -2216,12 +2544,17 @@
2216
2544
  * });
2217
2545
  */
2218
2546
  function blobToDataURL(blob) {
2219
- return new Promise((resolve, reject) => {
2220
- const reader = new FileReader();
2221
- reader.readAsDataURL(blob);
2222
- // @ts-ignore
2223
- reader.onload = () => resolve(reader.result);
2224
- reader.onerror = (error) => reject(error);
2547
+ return new Promise(function (resolve, reject) {
2548
+ var reader = new FileReader();
2549
+ reader.readAsDataURL(blob); // @ts-ignore
2550
+
2551
+ reader.onload = function () {
2552
+ return resolve(reader.result);
2553
+ };
2554
+
2555
+ reader.onerror = function (error) {
2556
+ return reject(error);
2557
+ };
2225
2558
  });
2226
2559
  }
2227
2560
 
@@ -2239,17 +2572,20 @@
2239
2572
  * dataURLToBlob(dataurl);
2240
2573
  */
2241
2574
  function dataURLToBlob(dataurl) {
2242
- const arr = dataurl.split(',');
2243
- // @ts-ignore
2244
- const mime = arr[0].match(/:(.*?);/)[1];
2245
- const bstr = atob(arr[1]);
2246
- let n = bstr.length;
2247
- const u8arr = new Uint8Array(n);
2575
+ var arr = dataurl.split(','); // @ts-ignore
2576
+
2577
+ var mime = arr[0].match(/:(.*?);/)[1];
2578
+ var bstr = atob(arr[1]);
2579
+ var n = bstr.length;
2580
+ var u8arr = new Uint8Array(n);
2248
2581
 
2249
2582
  while (n--) {
2250
2583
  u8arr[n] = bstr.charCodeAt(n);
2251
2584
  }
2252
- return new Blob([u8arr], { type: mime });
2585
+
2586
+ return new Blob([u8arr], {
2587
+ type: mime
2588
+ });
2253
2589
  }
2254
2590
 
2255
2591
  /**
@@ -2274,12 +2610,12 @@
2274
2610
  * setDataURLPrefix(data, ''); // data:;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
2275
2611
  * setDataURLPrefix(data, '', false); // data:,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
2276
2612
  */
2277
- function setDataURLPrefix(data, mimetype = 'image/png', base64 = true) {
2278
- return `data:${mimetype}${base64 ? ';base64' : ''},${data}`;
2613
+ function setDataURLPrefix(data) {
2614
+ var mimetype = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'image/png';
2615
+ var base64 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
2616
+ return "data:".concat(mimetype).concat(base64 ? ';base64' : '', ",").concat(data);
2279
2617
  }
2280
2618
 
2281
- // TODO: 函数重载,类型参照 Date
2282
-
2283
2619
  /**
2284
2620
  * 创建一个 Date 实例日期对象,同 new Date() 。<br/>
2285
2621
  * 规避了苹果设备浏览器不支持部分格式(YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。
@@ -2300,15 +2636,20 @@
2300
2636
  * safeDate(1646711233171); // Tue Mar 08 2022 11:47:13 GMT+0800 (中国标准时间)
2301
2637
  *
2302
2638
  */
2303
- function safeDate(value, ...args) {
2304
- const safeValue = typeof value === 'string' ? value.replace(/[\\.-]/g, '/') : value;
2639
+
2640
+ function safeDate(value) {
2641
+ var safeValue = typeof value === 'string' ? value.replace(/[\\.-]/g, '/') : value;
2642
+
2643
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2644
+ args[_key - 1] = arguments[_key];
2645
+ }
2305
2646
 
2306
2647
  if (args && args.length > 0) {
2307
2648
  // @ts-ignore
2308
- return new Date(safeValue, ...args);
2309
- }
2649
+ return _construct(Date, [safeValue].concat(args));
2650
+ } // @ts-ignore
2651
+
2310
2652
 
2311
- // @ts-ignore
2312
2653
  return isNil(safeValue) ? new Date() : new Date(safeValue);
2313
2654
  }
2314
2655
 
@@ -2335,16 +2676,23 @@
2335
2676
  * formatMobile('133456') // '133 456'
2336
2677
  * formatMobile('13345678') // '133 4567 8'
2337
2678
  */
2338
- function formatMobile(mobileNo, { char = ' ' } = {}) {
2339
- const regChar = new RegExp(char, 'g');
2340
- const realValue = normalizeString(mobileNo).replace(regChar, '').substring(0, 11);
2679
+
2680
+ function formatMobile(mobileNo) {
2681
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
2682
+ _ref$char = _ref["char"],
2683
+ _char = _ref$char === void 0 ? ' ' : _ref$char;
2684
+
2685
+ var regChar = new RegExp(_char, 'g');
2686
+ var realValue = normalizeString(mobileNo).replace(regChar, '').substring(0, 11);
2341
2687
 
2342
2688
  if (realValue.length > 7) {
2343
- return realValue.replace(/^(...)(....)/g, `$1${char}$2${char}`);
2689
+ return realValue.replace(/^(...)(....)/g, "$1".concat(_char, "$2").concat(_char));
2344
2690
  }
2691
+
2345
2692
  if (realValue.length > 3) {
2346
- return realValue.replace(/^(...)/g, `$1${char}`);
2693
+ return realValue.replace(/^(...)/g, "$1".concat(_char));
2347
2694
  }
2695
+
2348
2696
  return realValue;
2349
2697
  }
2350
2698
 
@@ -2370,9 +2718,11 @@
2370
2718
  * padZero(688, 5); // '00688'
2371
2719
  * padZero('688', 5); // '00688'
2372
2720
  */
2373
- function padZero(value, size = 2) {
2374
- const str = normalizeString(value);
2375
- const len = str.length;
2721
+
2722
+ function padZero(value) {
2723
+ var size = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
2724
+ var str = normalizeString(value);
2725
+ var len = str.length;
2376
2726
 
2377
2727
  if (typeof size !== 'number' || size < 0) {
2378
2728
  size = 0;
@@ -2381,36 +2731,8 @@
2381
2731
  if (len < size) {
2382
2732
  return '0'.repeat(size - len) + str;
2383
2733
  }
2384
- return str;
2385
- }
2386
2734
 
2387
- /**
2388
- * 检查值是否为Number
2389
- *
2390
- * @static
2391
- * @alias module:Type.isNumber
2392
- * @since 1.1.0
2393
- * @param {*} value 检查值
2394
- * @returns {boolean} 是否为Number
2395
- * @example
2396
- *
2397
- * isNumber(1)
2398
- * // => true
2399
- *
2400
- * isNumber(Number.MIN_VALUE)
2401
- * // => true
2402
- *
2403
- * isNumber(Infinity)
2404
- * // => true
2405
- *
2406
- * isNumber(NaN)
2407
- * // => true
2408
- *
2409
- * isNumber('1')
2410
- * // => false
2411
- */
2412
- function isNumber(value) {
2413
- return isType(value, 'Number');
2735
+ return str;
2414
2736
  }
2415
2737
 
2416
2738
  /**
@@ -2432,25 +2754,32 @@
2432
2754
  * times(3, 0.6, 2, 10);
2433
2755
  * // => 36
2434
2756
  */
2435
- function times(...nums) {
2436
- const [num1, num2, ...rest] = nums;
2437
- if (rest.length > 0) {
2438
- return times(times(num1, num2), ...rest);
2439
- }
2440
2757
 
2441
- // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2442
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2443
- // @ts-ignore
2444
- return num1;
2758
+ function times() {
2759
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
2760
+ nums[_key] = arguments[_key];
2445
2761
  }
2446
2762
 
2447
- const num1Changed = float2Fixed(num1);
2448
- const num2Changed = float2Fixed(num2);
2449
- const baseNum = digitLength(num1) + digitLength(num2);
2450
- const leftValue = num1Changed * num2Changed;
2763
+ var num1 = nums[0],
2764
+ num2 = nums[1],
2765
+ rest = nums.slice(2);
2451
2766
 
2452
- checkBoundary(leftValue);
2767
+ if (rest.length > 0) {
2768
+ return times.apply(void 0, [times(num1, num2)].concat(_toConsumableArray(rest)));
2769
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2453
2770
 
2771
+
2772
+ if (!isEffectiveNumeric(num1)) {
2773
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2774
+ } else if (!isEffectiveNumeric(num2)) {
2775
+ return Number(num1);
2776
+ }
2777
+
2778
+ var num1Changed = float2Fixed(num1);
2779
+ var num2Changed = float2Fixed(num2);
2780
+ var baseNum = digitLength(num1) + digitLength(num2);
2781
+ var leftValue = num1Changed * num2Changed;
2782
+ checkBoundary(leftValue);
2454
2783
  return leftValue / Math.pow(10, baseNum);
2455
2784
  }
2456
2785
 
@@ -2473,20 +2802,28 @@
2473
2802
  * plus(0.1, 0.2, 0.3, 0.4);
2474
2803
  * // => 1
2475
2804
  */
2476
- function plus(...nums) {
2477
- const [num1, num2, ...rest] = nums;
2478
2805
 
2479
- if (rest.length > 0) {
2480
- return plus(plus(num1, num2), ...rest);
2806
+ function plus() {
2807
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
2808
+ nums[_key] = arguments[_key];
2481
2809
  }
2482
2810
 
2483
- // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2484
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2485
- // @ts-ignore
2486
- return num1;
2811
+ var num1 = nums[0],
2812
+ num2 = nums[1],
2813
+ rest = nums.slice(2);
2814
+
2815
+ if (rest.length > 0) {
2816
+ return plus.apply(void 0, [plus(num1, num2)].concat(_toConsumableArray(rest)));
2817
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2818
+
2819
+
2820
+ if (!isEffectiveNumeric(num1)) {
2821
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2822
+ } else if (!isEffectiveNumeric(num2)) {
2823
+ return Number(num1);
2487
2824
  }
2488
2825
 
2489
- const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
2826
+ var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
2490
2827
  return (times(num1, baseNum) + times(num2, baseNum)) / baseNum;
2491
2828
  }
2492
2829
 
@@ -2509,20 +2846,28 @@
2509
2846
  * minus(1, 0.9, 0.02, 0.08);
2510
2847
  * // => 0
2511
2848
  */
2512
- function minus(...nums) {
2513
- const [num1, num2, ...rest] = nums;
2514
2849
 
2515
- if (rest.length > 0) {
2516
- return minus(minus(num1, num2), ...rest);
2850
+ function minus() {
2851
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
2852
+ nums[_key] = arguments[_key];
2517
2853
  }
2518
2854
 
2519
- // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2520
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2521
- // @ts-ignore
2522
- return num1;
2855
+ var num1 = nums[0],
2856
+ num2 = nums[1],
2857
+ rest = nums.slice(2);
2858
+
2859
+ if (rest.length > 0) {
2860
+ return minus.apply(void 0, [minus(num1, num2)].concat(_toConsumableArray(rest)));
2861
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2862
+
2863
+
2864
+ if (!isEffectiveNumeric(num1)) {
2865
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2866
+ } else if (!isEffectiveNumeric(num2)) {
2867
+ return Number(num1);
2523
2868
  }
2524
2869
 
2525
- const baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
2870
+ var baseNum = Math.pow(10, Math.max(digitLength(num1), digitLength(num2)));
2526
2871
  return (times(num1, baseNum) - times(num2, baseNum)) / baseNum;
2527
2872
  }
2528
2873
 
@@ -2545,24 +2890,32 @@
2545
2890
  * divide(1000, 10, 10, 10);
2546
2891
  * // => 1
2547
2892
  */
2548
- function divide(...nums) {
2549
- const [num1, num2, ...rest] = nums;
2550
2893
 
2551
- if (rest.length > 0) {
2552
- return divide(divide(num1, num2), ...rest);
2894
+ function divide() {
2895
+ for (var _len = arguments.length, nums = new Array(_len), _key = 0; _key < _len; _key++) {
2896
+ nums[_key] = arguments[_key];
2553
2897
  }
2554
2898
 
2555
- // 兼容处理,如果第2个参数为非数字或字符串时,返回第一个参数
2556
- if ((!isNumber(num2) || _isNaN(num2)) && !isString(num2)) {
2557
- // @ts-ignore
2558
- return num1;
2899
+ var num1 = nums[0],
2900
+ num2 = nums[1],
2901
+ rest = nums.slice(2);
2902
+
2903
+ if (rest.length > 0) {
2904
+ return divide.apply(void 0, [divide(num1, num2)].concat(_toConsumableArray(rest)));
2905
+ } // 兼容处理,如果参数包含无效数值时,尝试取出有效数值参数
2906
+
2907
+
2908
+ if (!isEffectiveNumeric(num1)) {
2909
+ return isEffectiveNumeric(num2) ? Number(num2) : NaN;
2910
+ } else if (!isEffectiveNumeric(num2)) {
2911
+ return Number(num1);
2559
2912
  }
2560
2913
 
2561
- const num1Changed = float2Fixed(num1);
2562
- const num2Changed = float2Fixed(num2);
2914
+ var num1Changed = float2Fixed(num1);
2915
+ var num2Changed = float2Fixed(num2);
2563
2916
  checkBoundary(num1Changed);
2564
- checkBoundary(num2Changed);
2565
- // fix: 类似 10 ** -4 为 0.00009999999999999999,strip 修正
2917
+ checkBoundary(num2Changed); // fix: 类似 10 ** -4 为 0.00009999999999999999,strip 修正
2918
+
2566
2919
  return times(num1Changed / num2Changed, strip(Math.pow(10, digitLength(num2) - digitLength(num1))));
2567
2920
  }
2568
2921
 
@@ -2586,14 +2939,16 @@
2586
2939
  * round(4060, -2);
2587
2940
  * // => 4100
2588
2941
  */
2589
- function round(num, precision = 0) {
2590
- // 兼容处理,如果参数为非数字或字符串时,直接返回
2591
- if ((!isNumber(num) || _isNaN(num)) && !isString(num)) {
2592
- // @ts-ignore
2593
- return num;
2942
+
2943
+ function round(num) {
2944
+ var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2945
+
2946
+ // 兼容处理,如果参数包含无效数值时,返回第一个参数
2947
+ if (!isEffectiveNumeric(num)) {
2948
+ return NaN;
2594
2949
  }
2595
2950
 
2596
- const base = Math.pow(10, precision);
2951
+ var base = Math.pow(10, precision);
2597
2952
  return divide(Math.round(times(num, base)), base);
2598
2953
  }
2599
2954
 
@@ -2615,14 +2970,13 @@
2615
2970
  * // do something
2616
2971
  * })
2617
2972
  */
2618
- function waitTime(time = 1000) {
2619
- return new Promise((resolve) => {
2973
+ function waitTime() {
2974
+ var time = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1000;
2975
+ return new Promise(function (resolve) {
2620
2976
  setTimeout(resolve, time);
2621
2977
  });
2622
2978
  }
2623
2979
 
2624
- // ref: https://github.com/ant-design/ant-design-mobile/blob/v2/components/input-item/index.tsx#L240
2625
-
2626
2980
  /**
2627
2981
  * 计算输入框的值格式化后光标位置
2628
2982
  *
@@ -2643,22 +2997,28 @@
2643
2997
  * @param {'mobile'|'bankCard'} [options.type] 格式化类型,内置手机号码和银行卡号特殊处理
2644
2998
  * @returns {number} 格式化后的光标位置
2645
2999
  */
2646
- function calculateCursorPosition(prevPos, prevCtrlValue, rawValue, ctrlValue, { placeholderChar = ' ', maskReg = /\D/g, type } = {}) {
2647
- const realCtrlValue = normalizeString(prevCtrlValue);
2648
- const realRawValue = normalizeString(rawValue);
2649
- const placeholderChars = Array.isArray(placeholderChar) ? placeholderChar : [placeholderChar];
2650
3000
 
2651
- const editLength = realRawValue.length - realCtrlValue.length;
2652
- const isAddition = editLength > 0;
3001
+ function calculateCursorPosition(prevPos, prevCtrlValue, rawValue, ctrlValue) {
3002
+ var _ref = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
3003
+ _ref$placeholderChar = _ref.placeholderChar,
3004
+ placeholderChar = _ref$placeholderChar === void 0 ? ' ' : _ref$placeholderChar,
3005
+ _ref$maskReg = _ref.maskReg,
3006
+ maskReg = _ref$maskReg === void 0 ? /\D/g : _ref$maskReg,
3007
+ type = _ref.type;
2653
3008
 
2654
- let pos = prevPos;
3009
+ var realCtrlValue = normalizeString(prevCtrlValue);
3010
+ var realRawValue = normalizeString(rawValue);
3011
+ var placeholderChars = Array.isArray(placeholderChar) ? placeholderChar : [placeholderChar];
3012
+ var editLength = realRawValue.length - realCtrlValue.length;
3013
+ var isAddition = editLength > 0;
3014
+ var pos = prevPos;
2655
3015
 
2656
3016
  if (isAddition) {
2657
- const additionStr = realRawValue.substring(pos - editLength, pos);
2658
- let ctrlCharCount = additionStr.replace(maskReg, '').length;
3017
+ var additionStr = realRawValue.substring(pos - editLength, pos);
3018
+ var ctrlCharCount = additionStr.replace(maskReg, '').length;
2659
3019
  pos -= editLength - ctrlCharCount;
3020
+ var placeholderCharCount = 0;
2660
3021
 
2661
- let placeholderCharCount = 0;
2662
3022
  while (ctrlCharCount > 0) {
2663
3023
  if (placeholderChars.indexOf(ctrlValue.charAt(pos - ctrlCharCount + placeholderCharCount)) !== -1) {
2664
3024
  placeholderCharCount++;
@@ -2666,20 +3026,20 @@
2666
3026
  ctrlCharCount--;
2667
3027
  }
2668
3028
  }
3029
+
2669
3030
  pos += placeholderCharCount;
2670
3031
  }
2671
3032
 
2672
- if ((type === 'mobile' && (pos === 4 || pos === 9)) || (type === 'bankCard' && pos > 0 && pos % 5 === 0)) {
3033
+ if (type === 'mobile' && (pos === 4 || pos === 9) || type === 'bankCard' && pos > 0 && pos % 5 === 0) {
2673
3034
  pos -= 1;
2674
3035
  }
2675
3036
 
2676
3037
  return pos;
2677
3038
  }
2678
3039
 
2679
- const numberChars = '0123456789';
2680
- const letterChars = 'abcdefghijklmnopqrstuvwxyz';
2681
- const defaultChars = numberChars + letterChars + letterChars.toUpperCase();
2682
-
3040
+ var numberChars = '0123456789';
3041
+ var letterChars = 'abcdefghijklmnopqrstuvwxyz';
3042
+ var defaultChars = numberChars + letterChars + letterChars.toUpperCase();
2683
3043
  /**
2684
3044
  * @private
2685
3045
  * @param {number} [len=0] 长度
@@ -2687,14 +3047,19 @@
2687
3047
  * @param {string} [prefix=''] 前缀部分,不计入长度
2688
3048
  * @returns {string}
2689
3049
  */
2690
- function internalRandomString(len = 0, optionalChars = defaultChars, prefix = '') {
3050
+
3051
+ function internalRandomString() {
3052
+ var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
3053
+ var optionalChars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultChars;
3054
+ var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
3055
+
2691
3056
  while (len-- > 0) {
2692
- const r = optionalChars[Math.floor(Math.random() * optionalChars.length)];
3057
+ var r = optionalChars[Math.floor(Math.random() * optionalChars.length)];
2693
3058
  return internalRandomString(len, optionalChars, prefix + r);
2694
3059
  }
3060
+
2695
3061
  return prefix;
2696
3062
  }
2697
-
2698
3063
  /**
2699
3064
  * 生成随机字符串
2700
3065
  *
@@ -2712,10 +3077,13 @@
2712
3077
  * randomString(5, 'abc'); // ccbcb
2713
3078
  * randomString(8, 'abcefg'); // bcgcfabg
2714
3079
  */
2715
- function randomString(len = 0, optionalChars) {
2716
3080
 
2717
- const realChars = typeof optionalChars === 'string' && optionalChars ? optionalChars : defaultChars;
2718
3081
 
3082
+ function randomString() {
3083
+ var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
3084
+ var optionalChars = arguments.length > 1 ? arguments[1] : undefined;
3085
+
3086
+ var realChars = typeof optionalChars === 'string' && optionalChars ? optionalChars : defaultChars;
2719
3087
  return internalRandomString(len, realChars);
2720
3088
  }
2721
3089
 
@@ -2737,17 +3105,21 @@
2737
3105
  * strlen('🍎'); // 4
2738
3106
  *
2739
3107
  */
3108
+
2740
3109
  function strlen(str) {
2741
- const realStr = normalizeString(str);
2742
- let len = 0;
2743
- for (let i = 0; i < realStr.length; i++) {
2744
- const c = realStr.charCodeAt(i);
2745
- if ((c >= 0x0001 && c <= 0x007e) || (0xff60 <= c && c <= 0xff9f)) {
3110
+ var realStr = normalizeString(str);
3111
+ var len = 0;
3112
+
3113
+ for (var i = 0; i < realStr.length; i++) {
3114
+ var c = realStr.charCodeAt(i);
3115
+
3116
+ if (c >= 0x0001 && c <= 0x007e || 0xff60 <= c && c <= 0xff9f) {
2746
3117
  len++;
2747
3118
  } else {
2748
3119
  len += 2;
2749
3120
  }
2750
3121
  }
3122
+
2751
3123
  return len;
2752
3124
  }
2753
3125
 
@@ -2795,6 +3167,7 @@
2795
3167
  exports.strlen = strlen;
2796
3168
  exports.times = times;
2797
3169
  exports.validatePassword = validatePassword;
3170
+ exports.version = version;
2798
3171
  exports.waitTime = waitTime;
2799
3172
 
2800
3173
  Object.defineProperty(exports, '__esModule', { value: true });