util-helpers 4.22.2 → 4.23.0
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 +3 -0
- package/dist/util-helpers.js +105 -25
- 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/VERSION.js +1 -1
- package/esm/index.js +2 -1
- package/esm/randomString.js +26 -12
- package/esm/transformObjectValue.js +25 -0
- package/esm/validatePassword.js +4 -13
- package/lib/VERSION.js +1 -1
- package/lib/index.js +3 -1
- package/lib/randomString.js +25 -11
- package/lib/transformObjectValue.js +27 -0
- package/lib/validatePassword.js +4 -13
- package/package.json +1 -1
- package/types/AsyncMemo.d.ts +14 -0
- package/types/index.d.ts +1 -0
- package/types/randomString.d.ts +7 -3
- package/types/transformObjectValue.d.ts +67 -0
package/esm/VERSION.js
CHANGED
package/esm/index.js
CHANGED
|
@@ -35,6 +35,7 @@ export { default as normalizeString } from './normalizeString.js';
|
|
|
35
35
|
export { default as safeDate } from './safeDate.js';
|
|
36
36
|
export { default as formatMobile } from './formatMobile.js';
|
|
37
37
|
export { default as padZero } from './padZero.js';
|
|
38
|
+
export { default as transformObjectValue } from './transformObjectValue.js';
|
|
38
39
|
export { default as plus } from './plus.js';
|
|
39
40
|
export { default as minus } from './minus.js';
|
|
40
41
|
export { default as times } from './times.js';
|
|
@@ -65,6 +66,6 @@ export { setDisableWarning } from './utils/config.js';
|
|
|
65
66
|
export { default as VERSION } from './VERSION.js';
|
|
66
67
|
export { default as AsyncMemo } from './AsyncMemo.js';
|
|
67
68
|
|
|
68
|
-
var version = "4.
|
|
69
|
+
var version = "4.23.0";
|
|
69
70
|
|
|
70
71
|
export { version };
|
package/esm/randomString.js
CHANGED
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import { toNumber } from 'ut2';
|
|
1
|
+
import { toNumber, randomInt } from 'ut2';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
var letter = 'abcdefghijklmnopqrstuvwxyz';
|
|
4
|
+
var chars = {
|
|
5
|
+
number: '0123456789',
|
|
6
|
+
lower: letter,
|
|
7
|
+
upper: letter.toUpperCase()
|
|
8
|
+
};
|
|
9
|
+
var allChars = chars.number + chars.lower + chars.upper;
|
|
10
|
+
function internalRandomString(len, pool, prefix) {
|
|
7
11
|
if (prefix === void 0) { prefix = ''; }
|
|
8
12
|
while (len-- > 0) {
|
|
9
|
-
var r =
|
|
10
|
-
return internalRandomString(len,
|
|
13
|
+
var r = pool[randomInt(0, pool.length - 1)];
|
|
14
|
+
return internalRandomString(len, pool, prefix + r);
|
|
11
15
|
}
|
|
12
16
|
return prefix;
|
|
13
17
|
}
|
|
14
|
-
function
|
|
18
|
+
var randomString = function (len, pool) {
|
|
15
19
|
if (len === void 0) { len = 0; }
|
|
16
|
-
var
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
var _pool;
|
|
21
|
+
if (typeof pool !== 'string') {
|
|
22
|
+
_pool = allChars;
|
|
23
|
+
}
|
|
24
|
+
else if (chars[pool]) {
|
|
25
|
+
_pool = chars[pool];
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
_pool = pool;
|
|
29
|
+
}
|
|
30
|
+
return internalRandomString(toNumber(len), _pool);
|
|
31
|
+
};
|
|
32
|
+
var randomString$1 = randomString;
|
|
19
33
|
|
|
20
|
-
export { randomString as default };
|
|
34
|
+
export { randomString$1 as default };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isPlainObject, forEach, isArray } from 'ut2';
|
|
2
|
+
|
|
3
|
+
var transformObjectValue = function (data, fn, deep) {
|
|
4
|
+
if (deep === void 0) { deep = true; }
|
|
5
|
+
if (isPlainObject(data)) {
|
|
6
|
+
var result_1 = {};
|
|
7
|
+
forEach(data, function (value, key) {
|
|
8
|
+
var newValue = deep && (isPlainObject(value) || isArray(value)) ? transformObjectValue(value, fn) : fn(value, key);
|
|
9
|
+
result_1[key] = newValue;
|
|
10
|
+
});
|
|
11
|
+
return result_1;
|
|
12
|
+
}
|
|
13
|
+
else if (isArray(data)) {
|
|
14
|
+
var result_2 = [];
|
|
15
|
+
forEach(data, function (value, index) {
|
|
16
|
+
var newValue = deep && (isPlainObject(value) || isArray(value)) ? transformObjectValue(value, fn) : fn(value, index);
|
|
17
|
+
result_2.push(newValue);
|
|
18
|
+
});
|
|
19
|
+
return result_2;
|
|
20
|
+
}
|
|
21
|
+
return data;
|
|
22
|
+
};
|
|
23
|
+
var transformObjectValue$1 = transformObjectValue;
|
|
24
|
+
|
|
25
|
+
export { transformObjectValue$1 as default };
|
package/esm/validatePassword.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
1
|
import devWarn from './utils/devWarn.js';
|
|
2
2
|
|
|
3
|
-
var regNumber =
|
|
3
|
+
var regNumber = /\d/;
|
|
4
4
|
var regLowerCaseLetter = /[a-z]/;
|
|
5
5
|
var regUpperCaseLetter = /[A-Z]/;
|
|
6
6
|
var regAllNumberAndLetter = /[\d|a-z]/gi;
|
|
7
|
-
function hasNumber(val) {
|
|
8
|
-
return regNumber.test(val);
|
|
9
|
-
}
|
|
10
|
-
function hasLowerCaseLetter(val) {
|
|
11
|
-
return regLowerCaseLetter.test(val);
|
|
12
|
-
}
|
|
13
|
-
function hasUpperCaseLetter(val) {
|
|
14
|
-
return regUpperCaseLetter.test(val);
|
|
15
|
-
}
|
|
16
7
|
function hasHex(val) {
|
|
17
8
|
return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1;
|
|
18
9
|
}
|
|
@@ -70,9 +61,9 @@ function validatePassword(value, options) {
|
|
|
70
61
|
valStr = '';
|
|
71
62
|
}
|
|
72
63
|
var currentLevel = 0;
|
|
73
|
-
var containesNumber =
|
|
74
|
-
var containesLowerCaseLetter =
|
|
75
|
-
var containesUpperCaseLetter =
|
|
64
|
+
var containesNumber = regNumber.test(valStr);
|
|
65
|
+
var containesLowerCaseLetter = regLowerCaseLetter.test(valStr);
|
|
66
|
+
var containesUpperCaseLetter = regUpperCaseLetter.test(valStr);
|
|
76
67
|
var containesSpecialCharacter = hasSpecialCharacter(valStr, special);
|
|
77
68
|
var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
|
|
78
69
|
if (containesNumber) {
|
package/lib/VERSION.js
CHANGED
package/lib/index.js
CHANGED
|
@@ -37,6 +37,7 @@ var normalizeString = require('./normalizeString.js');
|
|
|
37
37
|
var safeDate = require('./safeDate.js');
|
|
38
38
|
var formatMobile = require('./formatMobile.js');
|
|
39
39
|
var padZero = require('./padZero.js');
|
|
40
|
+
var transformObjectValue = require('./transformObjectValue.js');
|
|
40
41
|
var plus = require('./plus.js');
|
|
41
42
|
var minus = require('./minus.js');
|
|
42
43
|
var times = require('./times.js');
|
|
@@ -67,7 +68,7 @@ var config = require('./utils/config.js');
|
|
|
67
68
|
var VERSION = require('./VERSION.js');
|
|
68
69
|
var AsyncMemo = require('./AsyncMemo.js');
|
|
69
70
|
|
|
70
|
-
exports.version = "4.
|
|
71
|
+
exports.version = "4.23.0";
|
|
71
72
|
|
|
72
73
|
exports.isMobile = isMobile;
|
|
73
74
|
exports.isTelephone = isTelephone;
|
|
@@ -106,6 +107,7 @@ exports.normalizeString = normalizeString;
|
|
|
106
107
|
exports.safeDate = safeDate;
|
|
107
108
|
exports.formatMobile = formatMobile;
|
|
108
109
|
exports.padZero = padZero;
|
|
110
|
+
exports.transformObjectValue = transformObjectValue;
|
|
109
111
|
exports.plus = plus;
|
|
110
112
|
exports.minus = minus;
|
|
111
113
|
exports.times = times;
|
package/lib/randomString.js
CHANGED
|
@@ -2,21 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
var ut2 = require('ut2');
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
var letter = 'abcdefghijklmnopqrstuvwxyz';
|
|
6
|
+
var chars = {
|
|
7
|
+
number: '0123456789',
|
|
8
|
+
lower: letter,
|
|
9
|
+
upper: letter.toUpperCase()
|
|
10
|
+
};
|
|
11
|
+
var allChars = chars.number + chars.lower + chars.upper;
|
|
12
|
+
function internalRandomString(len, pool, prefix) {
|
|
9
13
|
if (prefix === void 0) { prefix = ''; }
|
|
10
14
|
while (len-- > 0) {
|
|
11
|
-
var r =
|
|
12
|
-
return internalRandomString(len,
|
|
15
|
+
var r = pool[ut2.randomInt(0, pool.length - 1)];
|
|
16
|
+
return internalRandomString(len, pool, prefix + r);
|
|
13
17
|
}
|
|
14
18
|
return prefix;
|
|
15
19
|
}
|
|
16
|
-
function
|
|
20
|
+
var randomString = function (len, pool) {
|
|
17
21
|
if (len === void 0) { len = 0; }
|
|
18
|
-
var
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
var _pool;
|
|
23
|
+
if (typeof pool !== 'string') {
|
|
24
|
+
_pool = allChars;
|
|
25
|
+
}
|
|
26
|
+
else if (chars[pool]) {
|
|
27
|
+
_pool = chars[pool];
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
_pool = pool;
|
|
31
|
+
}
|
|
32
|
+
return internalRandomString(ut2.toNumber(len), _pool);
|
|
33
|
+
};
|
|
34
|
+
var randomString$1 = randomString;
|
|
21
35
|
|
|
22
|
-
module.exports = randomString;
|
|
36
|
+
module.exports = randomString$1;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var ut2 = require('ut2');
|
|
4
|
+
|
|
5
|
+
var transformObjectValue = function (data, fn, deep) {
|
|
6
|
+
if (deep === void 0) { deep = true; }
|
|
7
|
+
if (ut2.isPlainObject(data)) {
|
|
8
|
+
var result_1 = {};
|
|
9
|
+
ut2.forEach(data, function (value, key) {
|
|
10
|
+
var newValue = deep && (ut2.isPlainObject(value) || ut2.isArray(value)) ? transformObjectValue(value, fn) : fn(value, key);
|
|
11
|
+
result_1[key] = newValue;
|
|
12
|
+
});
|
|
13
|
+
return result_1;
|
|
14
|
+
}
|
|
15
|
+
else if (ut2.isArray(data)) {
|
|
16
|
+
var result_2 = [];
|
|
17
|
+
ut2.forEach(data, function (value, index) {
|
|
18
|
+
var newValue = deep && (ut2.isPlainObject(value) || ut2.isArray(value)) ? transformObjectValue(value, fn) : fn(value, index);
|
|
19
|
+
result_2.push(newValue);
|
|
20
|
+
});
|
|
21
|
+
return result_2;
|
|
22
|
+
}
|
|
23
|
+
return data;
|
|
24
|
+
};
|
|
25
|
+
var transformObjectValue$1 = transformObjectValue;
|
|
26
|
+
|
|
27
|
+
module.exports = transformObjectValue$1;
|
package/lib/validatePassword.js
CHANGED
|
@@ -2,19 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
var devWarn = require('./utils/devWarn.js');
|
|
4
4
|
|
|
5
|
-
var regNumber =
|
|
5
|
+
var regNumber = /\d/;
|
|
6
6
|
var regLowerCaseLetter = /[a-z]/;
|
|
7
7
|
var regUpperCaseLetter = /[A-Z]/;
|
|
8
8
|
var regAllNumberAndLetter = /[\d|a-z]/gi;
|
|
9
|
-
function hasNumber(val) {
|
|
10
|
-
return regNumber.test(val);
|
|
11
|
-
}
|
|
12
|
-
function hasLowerCaseLetter(val) {
|
|
13
|
-
return regLowerCaseLetter.test(val);
|
|
14
|
-
}
|
|
15
|
-
function hasUpperCaseLetter(val) {
|
|
16
|
-
return regUpperCaseLetter.test(val);
|
|
17
|
-
}
|
|
18
9
|
function hasHex(val) {
|
|
19
10
|
return val.indexOf('\\x') > -1 || val.indexOf('\\u') > -1;
|
|
20
11
|
}
|
|
@@ -72,9 +63,9 @@ function validatePassword(value, options) {
|
|
|
72
63
|
valStr = '';
|
|
73
64
|
}
|
|
74
65
|
var currentLevel = 0;
|
|
75
|
-
var containesNumber =
|
|
76
|
-
var containesLowerCaseLetter =
|
|
77
|
-
var containesUpperCaseLetter =
|
|
66
|
+
var containesNumber = regNumber.test(valStr);
|
|
67
|
+
var containesLowerCaseLetter = regLowerCaseLetter.test(valStr);
|
|
68
|
+
var containesUpperCaseLetter = regUpperCaseLetter.test(valStr);
|
|
78
69
|
var containesSpecialCharacter = hasSpecialCharacter(valStr, special);
|
|
79
70
|
var containesUnallowableCharacter = hasUnallowableCharacter(valStr, special);
|
|
80
71
|
if (containesNumber) {
|
package/package.json
CHANGED
package/types/AsyncMemo.d.ts
CHANGED
|
@@ -2,11 +2,25 @@ import { Cache, CacheOptions } from 'cache2';
|
|
|
2
2
|
/**
|
|
3
3
|
* 异步缓存
|
|
4
4
|
*
|
|
5
|
+
* 特点:
|
|
6
|
+
* 1. 共享异步。同一个缓存键的异步,最多同时运行一个异步,异步结果共享。
|
|
7
|
+
* 2. 持久化数据。存在缓存结果,不再执行异步方法,直接返回该结果。
|
|
8
|
+
* 3. 每个实例都有独立的缓存空间。相互之间隔离,缓存灵活配置,更多配置请查阅 [`cache2`](https://www.npmjs.com/package/cache2)。
|
|
9
|
+
*
|
|
5
10
|
* @class
|
|
6
11
|
* @see {@link https://www.npmjs.com/package/cache2 | cache2}
|
|
7
12
|
* @param {Object} [options] 缓存配置项,更多配置项可参考 [`cache2`](https://www.npmjs.com/package/cache2)
|
|
8
13
|
* @param {number} [options.max] 最大缓存数量
|
|
9
14
|
* @param {'replaced' | 'limited'} [options.maxStrategy] 缓存策略
|
|
15
|
+
* @example
|
|
16
|
+
*
|
|
17
|
+
* const asyncMemo = new AsyncMemo({ max: 20, maxStrategy: 'replaced' });
|
|
18
|
+
* asyncMemo.run(()=>download({ fssid: 'a' }), 'a');
|
|
19
|
+
* asyncMemo.run(()=>download({ fssid: 'b' }), 'b');
|
|
20
|
+
* asyncMemo.run(()=>download({ fssid: 'a' }), 'a'); // 如果有缓存结果直接返回,如果有异步执行中,不会重复触发异步,但共享异步结果。
|
|
21
|
+
*
|
|
22
|
+
* asyncMemo.run(()=>download({ fssid: 'a' }), 'a', { persisted: false }); // 不读取缓存结果,但是异步执行结果还是会缓存。
|
|
23
|
+
* asyncMemo.run(()=>download({ fssid: 'a' })); // 没有缓存键时,直接执行异步方法,不读取缓存结果,也不会缓存异步结果。
|
|
10
24
|
*/
|
|
11
25
|
declare class AsyncMemo<DataType = any> {
|
|
12
26
|
private promiseCache;
|
package/types/index.d.ts
CHANGED
|
@@ -47,6 +47,7 @@ export { default as normalizeString } from './normalizeString';
|
|
|
47
47
|
export { default as safeDate } from './safeDate';
|
|
48
48
|
export { default as formatMobile } from './formatMobile';
|
|
49
49
|
export { default as padZero } from './padZero';
|
|
50
|
+
export { default as transformObjectValue } from './transformObjectValue';
|
|
50
51
|
/**
|
|
51
52
|
* 数学计算,修正浮点数计算问题
|
|
52
53
|
*
|
package/types/randomString.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
|
+
interface RandomString {
|
|
2
|
+
(len: number, poll: 'number' | 'lower' | 'upper'): string;
|
|
3
|
+
(len: number, poll?: string): string;
|
|
4
|
+
}
|
|
1
5
|
/**
|
|
2
6
|
* 生成随机字符串
|
|
3
7
|
*
|
|
4
|
-
* @
|
|
8
|
+
* @function
|
|
5
9
|
* @alias module:Other.randomString
|
|
6
10
|
* @since 4.8.0
|
|
7
11
|
* @param {number} [len=0] 长度
|
|
8
|
-
* @param {string} [
|
|
12
|
+
* @param {'number' | 'lower' | 'upper' | string} [pool='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'] 字符池,默认为数字和大小写字母,支持number/lower/upper
|
|
9
13
|
* @returns {string} 随机字符串
|
|
10
14
|
* @example
|
|
11
15
|
*
|
|
@@ -17,5 +21,5 @@
|
|
|
17
21
|
* randomString(8, 'abcefg'); // bcgcfabg
|
|
18
22
|
*
|
|
19
23
|
*/
|
|
20
|
-
declare
|
|
24
|
+
declare const randomString: RandomString;
|
|
21
25
|
export default randomString;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
type PropertyName = string | symbol;
|
|
2
|
+
interface TransformObjectValue {
|
|
3
|
+
<V>(arr: V[], fn: (value: V, index: number) => any, deep: false): any[];
|
|
4
|
+
<V>(arr: V[], fn: (value: any, index: number) => any, deep?: boolean): any[];
|
|
5
|
+
<T extends object>(obj: T, fn: (value: T[keyof T], key: keyof T) => any, deep: false): Record<PropertyName, any>;
|
|
6
|
+
<T extends object>(obj: T, fn: (value: T[keyof T] extends object ? any : T[keyof T], key: T[keyof T] extends object ? any : keyof T) => any, deep?: boolean): Record<PropertyName, any>;
|
|
7
|
+
<T>(obj: T, fn: (...args: any[]) => any): T;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 创建一个转换值的新对象或数组。
|
|
11
|
+
*
|
|
12
|
+
* 例如 antd Form 中的设置表单值时,如果值为空字符串可能需要转为 `undefined` ,才不影响表单的初始值。
|
|
13
|
+
*
|
|
14
|
+
* @static
|
|
15
|
+
* @alias module:Processor.transformObjectValue
|
|
16
|
+
* @since 4.23.0
|
|
17
|
+
* @param {Array | Object} data 要转换值的普通对象或数组
|
|
18
|
+
* @param {Function} fn 遍历普通对象或数组键值方法
|
|
19
|
+
* @param {boolean} [deep=true] 深度遍历,检测值为普通对象或数组时递归处理。默认 true 。
|
|
20
|
+
* @returns {Array | Object} 如果是普通对象或数组,返回一个新的对象或数组,否则返回自身
|
|
21
|
+
* @example
|
|
22
|
+
*
|
|
23
|
+
* const data1 = { foo: 'bar', baz: 42 }
|
|
24
|
+
* // 数字转为字符串
|
|
25
|
+
* transformObjectValue(data1, value => {
|
|
26
|
+
* if(typeof value === 'number'){
|
|
27
|
+
* return String(value)
|
|
28
|
+
* }
|
|
29
|
+
* return value;
|
|
30
|
+
* });
|
|
31
|
+
* // { foo: 'bar', baz: '42' }
|
|
32
|
+
*
|
|
33
|
+
* const data2 = [1,2,3,4];
|
|
34
|
+
* // 数字转为字符串
|
|
35
|
+
* transformObjectValue(data2, value=>{
|
|
36
|
+
* if(typeof value === 'number'){
|
|
37
|
+
* return String(value)
|
|
38
|
+
* }
|
|
39
|
+
* });
|
|
40
|
+
* // ['1', '2', '3', '4']
|
|
41
|
+
*
|
|
42
|
+
* // 嵌套普通对象或数组
|
|
43
|
+
* const data3 = { foo: 'bar', baz: 42, c: [1,2,3,4], d: '' }
|
|
44
|
+
* // 数字转为字符串,空字符串转为undefined
|
|
45
|
+
* transformObjectValue(data3, value=>{
|
|
46
|
+
* if(typeof value === 'number'){
|
|
47
|
+
* return String(value);
|
|
48
|
+
* }
|
|
49
|
+
* retrun value === '' ? undefined : value
|
|
50
|
+
* });
|
|
51
|
+
* // { foo: 'bar', baz: '42', ['1', '2', '3', '4'], d: undefined }
|
|
52
|
+
*
|
|
53
|
+
* // 数组的值不处理,对象值为数字转为字符串,空字符串转为undefined
|
|
54
|
+
* transformObjectValue(data3, (value, key)=>{
|
|
55
|
+
* if(typeof key === 'number'){
|
|
56
|
+
* return value;
|
|
57
|
+
* }
|
|
58
|
+
* if(typeof value === 'number'){
|
|
59
|
+
* return String(value);
|
|
60
|
+
* }
|
|
61
|
+
* retrun value === '' ? undefined : value
|
|
62
|
+
* });
|
|
63
|
+
* // { foo: 'bar', baz: '42', [1, 2, 3, 4], d: undefined }
|
|
64
|
+
*
|
|
65
|
+
*/
|
|
66
|
+
declare const transformObjectValue: TransformObjectValue;
|
|
67
|
+
export default transformObjectValue;
|