util-helpers 4.7.2 → 4.8.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/util-helpers.js +73 -34
- package/dist/util-helpers.js.map +1 -1
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/index.js +1 -0
- package/esm/isBankCard.js +30 -4
- package/esm/isSocialCreditCode.js +11 -30
- package/esm/randomString.js +56 -0
- package/lib/index.js +8 -0
- package/lib/isBankCard.js +30 -4
- package/lib/isSocialCreditCode.js +11 -30
- package/lib/randomString.js +63 -0
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/isBankCard.d.ts +3 -1
- package/types/randomString.d.ts +19 -0
|
@@ -2,30 +2,7 @@ import convertToString from './utils/convertToString'; // 基础规则,由18
|
|
|
2
2
|
|
|
3
3
|
var baseReg = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/; // 基础字符组成
|
|
4
4
|
|
|
5
|
-
var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
|
|
6
|
-
|
|
7
|
-
var weightFactor = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
|
|
8
|
-
/**
|
|
9
|
-
* 获取字符位置
|
|
10
|
-
*
|
|
11
|
-
* @private
|
|
12
|
-
* @param {string} code 字符
|
|
13
|
-
* @returns {number} 字符所在基础字符的位置
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
function getBaseCodeIndex(code) {
|
|
17
|
-
var ret;
|
|
18
|
-
baseCodeArr.some(function (item, index) {
|
|
19
|
-
if (item === code) {
|
|
20
|
-
ret = index;
|
|
21
|
-
return true;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
return false;
|
|
25
|
-
}); // @ts-ignore
|
|
26
|
-
|
|
27
|
-
return ret;
|
|
28
|
-
}
|
|
5
|
+
var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
|
|
29
6
|
/**
|
|
30
7
|
* 计算校验码
|
|
31
8
|
*
|
|
@@ -35,24 +12,28 @@ function getBaseCodeIndex(code) {
|
|
|
35
12
|
* @returns {string} 校验码
|
|
36
13
|
*/
|
|
37
14
|
|
|
38
|
-
|
|
39
15
|
function sumCheckCode(preCode) {
|
|
40
|
-
// const preCodeArr = preCode.split('');
|
|
41
16
|
var total = 0; // 计算字符位置对应序号和加权因子的乘积,总和
|
|
42
17
|
|
|
43
|
-
|
|
18
|
+
var _loop = function _loop(i) {
|
|
44
19
|
// 字符位置对应的基础编码序号
|
|
45
|
-
var index =
|
|
20
|
+
var index = baseCodeArr.findIndex(function (item) {
|
|
21
|
+
return item === preCode[i];
|
|
22
|
+
}); // 加权因子
|
|
46
23
|
|
|
47
|
-
var wf =
|
|
24
|
+
var wf = Math.pow(3, i) % 31; // 计算序号和加权因子的乘积,并计算级数之和
|
|
48
25
|
|
|
49
26
|
total += index * wf;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
for (var i = 0; i < 17; i++) {
|
|
30
|
+
_loop(i);
|
|
50
31
|
} // 计算整数求余函数MOD
|
|
51
32
|
|
|
52
33
|
|
|
53
34
|
var remainder = total % 31; // 校验码字符值序号
|
|
54
35
|
|
|
55
|
-
var checkCodeIndex = 31 - remainder;
|
|
36
|
+
var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
|
|
56
37
|
return baseCodeArr[checkCodeIndex];
|
|
57
38
|
}
|
|
58
39
|
/**
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
var numberChars = '0123456789';
|
|
2
|
+
var letterChars = 'abcdefghijklmnopqrstuvwxyz';
|
|
3
|
+
var defaultChars = numberChars + letterChars + letterChars.toUpperCase();
|
|
4
|
+
/**
|
|
5
|
+
* @private
|
|
6
|
+
* @param {number} [len=0] 长度
|
|
7
|
+
* @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
|
|
8
|
+
* @param {string} [prefix=''] 前缀部分,不计入长度
|
|
9
|
+
* @returns {string}
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
function internalRandomString() {
|
|
13
|
+
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
14
|
+
var optionalChars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultChars;
|
|
15
|
+
var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
16
|
+
|
|
17
|
+
while (len-- > 0) {
|
|
18
|
+
var r = optionalChars[Math.floor(Math.random() * optionalChars.length)];
|
|
19
|
+
return internalRandomString(len, optionalChars, prefix + r);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return prefix;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 生成随机字符串
|
|
26
|
+
*
|
|
27
|
+
* @static
|
|
28
|
+
* @alias module:Other.randomString
|
|
29
|
+
* @since 4.8.0
|
|
30
|
+
* @param {number} [len=0] 长度
|
|
31
|
+
* @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
|
|
32
|
+
* @returns {string} 随机字符串
|
|
33
|
+
* @example
|
|
34
|
+
* randomString(5); // slk23
|
|
35
|
+
* randomString(8); // 71mHqo2A
|
|
36
|
+
*
|
|
37
|
+
* // 自定义允许的字符
|
|
38
|
+
* randomString(5, 'abc'); // ccbcb
|
|
39
|
+
* randomString(8, 'abcefg'); // bcgcfabg
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
function randomString() {
|
|
44
|
+
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
45
|
+
var optionalChars = arguments.length > 1 ? arguments[1] : undefined;
|
|
46
|
+
var realLen = typeof len === 'number' ? len : Number(len);
|
|
47
|
+
|
|
48
|
+
if (isNaN(realLen)) {
|
|
49
|
+
realLen = 0;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
var realChars = typeof optionalChars === 'string' && optionalChars ? optionalChars : defaultChars;
|
|
53
|
+
return internalRandomString(len, realChars);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default randomString;
|
package/lib/index.js
CHANGED
|
@@ -249,6 +249,12 @@ Object.defineProperty(exports, "calculateCursorPosition", {
|
|
|
249
249
|
return _calculateCursorPosition["default"];
|
|
250
250
|
}
|
|
251
251
|
});
|
|
252
|
+
Object.defineProperty(exports, "randomString", {
|
|
253
|
+
enumerable: true,
|
|
254
|
+
get: function get() {
|
|
255
|
+
return _randomString["default"];
|
|
256
|
+
}
|
|
257
|
+
});
|
|
252
258
|
Object.defineProperty(exports, "setDisableWarning", {
|
|
253
259
|
enumerable: true,
|
|
254
260
|
get: function get() {
|
|
@@ -338,6 +344,8 @@ var _waitTime = _interopRequireDefault(require("./waitTime"));
|
|
|
338
344
|
|
|
339
345
|
var _calculateCursorPosition = _interopRequireDefault(require("./calculateCursorPosition"));
|
|
340
346
|
|
|
347
|
+
var _randomString = _interopRequireDefault(require("./randomString"));
|
|
348
|
+
|
|
341
349
|
var _config = require("./utils/config");
|
|
342
350
|
|
|
343
351
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
package/lib/isBankCard.js
CHANGED
|
@@ -13,6 +13,25 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
13
13
|
var reg = /^[1-9]\d{9,20}$/; // 8~30位数字
|
|
14
14
|
|
|
15
15
|
var regLoose = /^\d{8,30}$/;
|
|
16
|
+
/**
|
|
17
|
+
* luhn 计算校验位
|
|
18
|
+
*
|
|
19
|
+
* @param {string} num 银行卡前面数字
|
|
20
|
+
* @returns
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
function sumCheckCode(num) {
|
|
24
|
+
var numArr = (num + '').replace(/\D/g, '').split('').reverse();
|
|
25
|
+
var sum = 0;
|
|
26
|
+
|
|
27
|
+
for (var i = 0; i < numArr.length; i++) {
|
|
28
|
+
var currNum = parseInt(numArr[i]);
|
|
29
|
+
sum += i % 2 === 0 ? currNum * 2 - (currNum > 4 ? 9 : 0) : currNum;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var mod = sum % 10;
|
|
33
|
+
return mod !== 0 ? 10 - mod : 0;
|
|
34
|
+
}
|
|
16
35
|
/**
|
|
17
36
|
* 检测值是否为银行卡号。正常模式(非0开头,10~21位数字)宽松模式(8~30位数字)
|
|
18
37
|
*
|
|
@@ -23,6 +42,7 @@ var regLoose = /^\d{8,30}$/;
|
|
|
23
42
|
* @param {*} value 要检测的值
|
|
24
43
|
* @param {Object} [options] 配置项
|
|
25
44
|
* @param {boolean} [options.loose=false] 宽松模式,8~30位数字
|
|
45
|
+
* @param {boolean} [options.luhn=false] 使用 Luhn 算法校验校验码
|
|
26
46
|
* @returns {boolean} 值是否为银行卡号
|
|
27
47
|
* @example
|
|
28
48
|
*
|
|
@@ -40,18 +60,24 @@ var regLoose = /^\d{8,30}$/;
|
|
|
40
60
|
*
|
|
41
61
|
*/
|
|
42
62
|
|
|
63
|
+
|
|
43
64
|
function isBankCard(value) {
|
|
44
65
|
var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
|
|
45
66
|
_ref$loose = _ref.loose,
|
|
46
|
-
loose = _ref$loose === void 0 ? false : _ref$loose
|
|
67
|
+
loose = _ref$loose === void 0 ? false : _ref$loose,
|
|
68
|
+
_ref$luhn = _ref.luhn,
|
|
69
|
+
luhn = _ref$luhn === void 0 ? false : _ref$luhn;
|
|
47
70
|
|
|
48
71
|
var valueStr = (0, _convertToString["default"])(value);
|
|
72
|
+
var validateResult = loose ? regLoose.test(valueStr) : reg.test(valueStr);
|
|
49
73
|
|
|
50
|
-
if (
|
|
51
|
-
|
|
74
|
+
if (validateResult && luhn) {
|
|
75
|
+
var precode = valueStr.substring(0, valueStr.length - 1);
|
|
76
|
+
var checkCode = valueStr[valueStr.length - 1];
|
|
77
|
+
return checkCode === String(sumCheckCode(precode));
|
|
52
78
|
}
|
|
53
79
|
|
|
54
|
-
return
|
|
80
|
+
return validateResult;
|
|
55
81
|
}
|
|
56
82
|
|
|
57
83
|
var _default = isBankCard;
|
|
@@ -12,30 +12,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
|
|
|
12
12
|
// 基础规则,由18位数字和大写字母组成,不使用I、O、Z、S、V。
|
|
13
13
|
var baseReg = /^[\dA-HJ-NPQRTUWXY]{2}\d{6}[\dA-HJ-NPQRTUWXY]{10}$/; // 基础字符组成
|
|
14
14
|
|
|
15
|
-
var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
|
|
16
|
-
|
|
17
|
-
var weightFactor = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];
|
|
18
|
-
/**
|
|
19
|
-
* 获取字符位置
|
|
20
|
-
*
|
|
21
|
-
* @private
|
|
22
|
-
* @param {string} code 字符
|
|
23
|
-
* @returns {number} 字符所在基础字符的位置
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
function getBaseCodeIndex(code) {
|
|
27
|
-
var ret;
|
|
28
|
-
baseCodeArr.some(function (item, index) {
|
|
29
|
-
if (item === code) {
|
|
30
|
-
ret = index;
|
|
31
|
-
return true;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
return false;
|
|
35
|
-
}); // @ts-ignore
|
|
36
|
-
|
|
37
|
-
return ret;
|
|
38
|
-
}
|
|
15
|
+
var baseCodeArr = '0123456789ABCDEFGHJKLMNPQRTUWXY'.split('');
|
|
39
16
|
/**
|
|
40
17
|
* 计算校验码
|
|
41
18
|
*
|
|
@@ -45,24 +22,28 @@ function getBaseCodeIndex(code) {
|
|
|
45
22
|
* @returns {string} 校验码
|
|
46
23
|
*/
|
|
47
24
|
|
|
48
|
-
|
|
49
25
|
function sumCheckCode(preCode) {
|
|
50
|
-
// const preCodeArr = preCode.split('');
|
|
51
26
|
var total = 0; // 计算字符位置对应序号和加权因子的乘积,总和
|
|
52
27
|
|
|
53
|
-
|
|
28
|
+
var _loop = function _loop(i) {
|
|
54
29
|
// 字符位置对应的基础编码序号
|
|
55
|
-
var index =
|
|
30
|
+
var index = baseCodeArr.findIndex(function (item) {
|
|
31
|
+
return item === preCode[i];
|
|
32
|
+
}); // 加权因子
|
|
56
33
|
|
|
57
|
-
var wf =
|
|
34
|
+
var wf = Math.pow(3, i) % 31; // 计算序号和加权因子的乘积,并计算级数之和
|
|
58
35
|
|
|
59
36
|
total += index * wf;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
for (var i = 0; i < 17; i++) {
|
|
40
|
+
_loop(i);
|
|
60
41
|
} // 计算整数求余函数MOD
|
|
61
42
|
|
|
62
43
|
|
|
63
44
|
var remainder = total % 31; // 校验码字符值序号
|
|
64
45
|
|
|
65
|
-
var checkCodeIndex = 31 - remainder;
|
|
46
|
+
var checkCodeIndex = remainder !== 0 ? 31 - remainder : 0;
|
|
66
47
|
return baseCodeArr[checkCodeIndex];
|
|
67
48
|
}
|
|
68
49
|
/**
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
var numberChars = '0123456789';
|
|
8
|
+
var letterChars = 'abcdefghijklmnopqrstuvwxyz';
|
|
9
|
+
var defaultChars = numberChars + letterChars + letterChars.toUpperCase();
|
|
10
|
+
/**
|
|
11
|
+
* @private
|
|
12
|
+
* @param {number} [len=0] 长度
|
|
13
|
+
* @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
|
|
14
|
+
* @param {string} [prefix=''] 前缀部分,不计入长度
|
|
15
|
+
* @returns {string}
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
function internalRandomString() {
|
|
19
|
+
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
20
|
+
var optionalChars = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultChars;
|
|
21
|
+
var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
22
|
+
|
|
23
|
+
while (len-- > 0) {
|
|
24
|
+
var r = optionalChars[Math.floor(Math.random() * optionalChars.length)];
|
|
25
|
+
return internalRandomString(len, optionalChars, prefix + r);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return prefix;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 生成随机字符串
|
|
32
|
+
*
|
|
33
|
+
* @static
|
|
34
|
+
* @alias module:Other.randomString
|
|
35
|
+
* @since 4.8.0
|
|
36
|
+
* @param {number} [len=0] 长度
|
|
37
|
+
* @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
|
|
38
|
+
* @returns {string} 随机字符串
|
|
39
|
+
* @example
|
|
40
|
+
* randomString(5); // slk23
|
|
41
|
+
* randomString(8); // 71mHqo2A
|
|
42
|
+
*
|
|
43
|
+
* // 自定义允许的字符
|
|
44
|
+
* randomString(5, 'abc'); // ccbcb
|
|
45
|
+
* randomString(8, 'abcefg'); // bcgcfabg
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
function randomString() {
|
|
50
|
+
var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
51
|
+
var optionalChars = arguments.length > 1 ? arguments[1] : undefined;
|
|
52
|
+
var realLen = typeof len === 'number' ? len : Number(len);
|
|
53
|
+
|
|
54
|
+
if (isNaN(realLen)) {
|
|
55
|
+
realLen = 0;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
var realChars = typeof optionalChars === 'string' && optionalChars ? optionalChars : defaultChars;
|
|
59
|
+
return internalRandomString(len, realChars);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
var _default = randomString;
|
|
63
|
+
exports["default"] = _default;
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -39,4 +39,5 @@ export { default as divide } from "./divide";
|
|
|
39
39
|
export { default as round } from "./round";
|
|
40
40
|
export { default as waitTime } from "./waitTime";
|
|
41
41
|
export { default as calculateCursorPosition } from "./calculateCursorPosition";
|
|
42
|
+
export { default as randomString } from "./randomString";
|
|
42
43
|
export { setDisableWarning } from "./utils/config";
|
package/types/isBankCard.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export default isBankCard;
|
|
|
9
9
|
* @param {*} value 要检测的值
|
|
10
10
|
* @param {Object} [options] 配置项
|
|
11
11
|
* @param {boolean} [options.loose=false] 宽松模式,8~30位数字
|
|
12
|
+
* @param {boolean} [options.luhn=false] 使用 Luhn 算法校验校验码
|
|
12
13
|
* @returns {boolean} 值是否为银行卡号
|
|
13
14
|
* @example
|
|
14
15
|
*
|
|
@@ -25,6 +26,7 @@ export default isBankCard;
|
|
|
25
26
|
* // => true
|
|
26
27
|
*
|
|
27
28
|
*/
|
|
28
|
-
declare function isBankCard(value: any, { loose }?: {
|
|
29
|
+
declare function isBankCard(value: any, { loose, luhn }?: {
|
|
29
30
|
loose?: boolean | undefined;
|
|
31
|
+
luhn?: boolean | undefined;
|
|
30
32
|
} | undefined): boolean;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export default randomString;
|
|
2
|
+
/**
|
|
3
|
+
* 生成随机字符串
|
|
4
|
+
*
|
|
5
|
+
* @static
|
|
6
|
+
* @alias module:Other.randomString
|
|
7
|
+
* @since 4.8.0
|
|
8
|
+
* @param {number} [len=0] 长度
|
|
9
|
+
* @param {string} [optionalChars] 允许的字符,默认为数字和大小写字母
|
|
10
|
+
* @returns {string} 随机字符串
|
|
11
|
+
* @example
|
|
12
|
+
* randomString(5); // slk23
|
|
13
|
+
* randomString(8); // 71mHqo2A
|
|
14
|
+
*
|
|
15
|
+
* // 自定义允许的字符
|
|
16
|
+
* randomString(5, 'abc'); // ccbcb
|
|
17
|
+
* randomString(8, 'abcefg'); // bcgcfabg
|
|
18
|
+
*/
|
|
19
|
+
declare function randomString(len?: number | undefined, optionalChars?: string | undefined): string;
|