util-helpers 4.21.3 → 4.21.5

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 (40) hide show
  1. package/README.md +33 -33
  2. package/dist/util-helpers.js +88 -57
  3. package/dist/util-helpers.js.map +1 -1
  4. package/dist/util-helpers.min.js +1 -1
  5. package/dist/util-helpers.min.js.map +1 -1
  6. package/esm/VERSION.js +1 -1
  7. package/esm/compressImage.js +4 -3
  8. package/esm/fileReader.js +4 -3
  9. package/esm/index.js +1 -1
  10. package/esm/isChinese.js +11 -6
  11. package/esm/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js +98 -0
  12. package/esm/safeDate.js +4 -3
  13. package/esm/utils/Cache.js +1 -1
  14. package/esm/utils/native.js +2 -1
  15. package/lib/VERSION.js +1 -1
  16. package/lib/compressImage.js +4 -3
  17. package/lib/fileReader.js +4 -3
  18. package/lib/index.js +1 -1
  19. package/lib/isChinese.js +11 -6
  20. package/lib/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js +100 -0
  21. package/lib/safeDate.js +4 -3
  22. package/lib/utils/Cache.js +1 -1
  23. package/lib/utils/native.js +1 -0
  24. package/package.json +16 -14
  25. package/types/ajax.d.ts +1 -1
  26. package/types/compressImage.d.ts +66 -4
  27. package/types/fileReader.d.ts +31 -2
  28. package/types/filterTree.d.ts +2 -2
  29. package/types/findTreeNode.d.ts +2 -2
  30. package/types/findTreeNodes.d.ts +2 -2
  31. package/types/findTreeSelect.d.ts +2 -2
  32. package/types/formatMobile.d.ts +1 -1
  33. package/types/isChinese.d.ts +1 -1
  34. package/types/listToTree.d.ts +3 -3
  35. package/types/safeDate.d.ts +29 -3
  36. package/types/transformFieldNames.d.ts +3 -3
  37. package/types/treeToList.d.ts +2 -2
  38. package/types/utils/native.d.ts +6 -0
  39. package/esm/node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js +0 -72
  40. package/lib/node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js +0 -74
@@ -7,11 +7,11 @@ type NodeAssign = 'spread' | 'self';
7
7
  * @static
8
8
  * @alias module:Tree.filterTree
9
9
  * @since 4.15.0
10
- * @param {object[]} tree 树结构数据
10
+ * @param {Object[]} tree 树结构数据
11
11
  * @param {function} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 `Truthy` ,结果将包含该节点
12
12
  * @param {string} [childrenField='children'] 子级字段名
13
13
  * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
14
- * @returns {object[]}
14
+ * @returns {Object[]}
15
15
  * @example
16
16
  * const menus = [{ id: '1', name: '首页', code: 'trade', pid: null }, { id: '2', name: '交易管理', code: 'trade', pid: null, children: [{ id: '3', name: '交易查询', code: 'trade-1', pid: '2', children: [{ id: '4', name: '交易查询-查询操作', code: 'trade-1-1', pid: '3' }]}]}, { id: '5', name: '权限管理', code: 'authorization', pid: null, children: [{ id: '6', name: '角色管理', code: 'authorization-1', pid: '5' }, { id: '7', name: '用户管理', code: 'authorization-2', pid: '5' }]}];
17
17
  *
@@ -4,10 +4,10 @@
4
4
  * @static
5
5
  * @alias module:Tree.findTreeNode
6
6
  * @since 4.14.0
7
- * @param {object[]} tree 树结构数据
7
+ * @param {Object[]} tree 树结构数据
8
8
  * @param {function} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 `Truthy` ,将返回该节点
9
9
  * @param {string} [childrenField='children'] 子级字段名
10
- * @returns {object|undefined}
10
+ * @returns {Object|undefined}
11
11
  * @example
12
12
  * const menus = [{ id: '1', name: '首页', code: 'trade', pid: null }, { id: '2', name: '交易管理', code: 'trade', pid: null, children: [{ id: '3', name: '交易查询', code: 'trade-1', pid: '2', children: [{ id: '4', name: '交易查询-查询操作', code: 'trade-1-1', pid: '3' }]}]}, { id: '5', name: '权限管理', code: 'authorization', pid: null, children: [{ id: '6', name: '角色管理', code: 'authorization-1', pid: '5' }, { id: '7', name: '用户管理', code: 'authorization-2', pid: '5' }]}];
13
13
  *
@@ -4,10 +4,10 @@
4
4
  * @static
5
5
  * @alias module:Tree.findTreeNodes
6
6
  * @since 4.15.0
7
- * @param {object[]} tree 树结构数据
7
+ * @param {Object[]} tree 树结构数据
8
8
  * @param {function} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 Truthy ,返回结果将包含该节点
9
9
  * @param {string} [childrenField='children'] 子级字段名
10
- * @returns {object[]}
10
+ * @returns {Object[]}
11
11
  * @example
12
12
  * const menus = [{ id: '1', name: '首页', code: 'trade', pid: null }, { id: '2', name: '交易管理', code: 'trade', pid: null, children: [{ id: '3', name: '交易查询', code: 'trade-1', pid: '2', children: [{ id: '4', name: '交易查询-查询操作', code: 'trade-1-1', pid: '3' }]}]}, { id: '5', name: '权限管理', code: 'authorization', pid: null, children: [{ id: '6', name: '角色管理', code: 'authorization-1', pid: '5' }, { id: '7', name: '用户管理', code: 'authorization-2', pid: '5' }]}];
13
13
  *
@@ -4,10 +4,10 @@
4
4
  * @static
5
5
  * @alias module:Tree.findTreeSelect
6
6
  * @since 4.14.0
7
- * @param {object[]} tree 树结构数据
7
+ * @param {Object[]} tree 树结构数据
8
8
  * @param {function} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 Truthy 将返回包含该节点的所有父级节点
9
9
  * @param {string} [childrenField='children'] 子级字段名
10
- * @returns {object[]}
10
+ * @returns {Object[]}
11
11
  * @example
12
12
  * const menus = [{ id: '1', name: '首页', code: 'trade', pid: null }, { id: '2', name: '交易管理', code: 'trade', pid: null, children: [{ id: '3', name: '交易查询', code: 'trade-1', pid: '2', children: [{ id: '4', name: '交易查询-查询操作', code: 'trade-1-1', pid: '3' }]}]}, { id: '5', name: '权限管理', code: 'authorization', pid: null, children: [{ id: '6', name: '角色管理', code: 'authorization-1', pid: '5' }, { id: '7', name: '用户管理', code: 'authorization-2', pid: '5' }]}];
13
13
  *
@@ -10,7 +10,7 @@ type Options = {
10
10
  * @alias module:Processor.formatMobile
11
11
  * @since 4.5.0
12
12
  * @param {string} mobileNo 手机号码
13
- * @param {object} [options] 配置项
13
+ * @param {Object} [options] 配置项
14
14
  * @param {string} [options.spaceMark=' '] 间隔字符
15
15
  * @returns {string} 格式化后的手机号码
16
16
  * @example
@@ -14,7 +14,7 @@ type Options = {
14
14
  * @param {*} value 要检测的值
15
15
  * @param {Object} [options] 配置项
16
16
  * @param {boolean} [options.loose=false] 宽松模式。如果为true,只要包含中文即为true
17
- * @param {boolean} [options.useExtend=false] 使用统一表意文字扩展A-F。注意:如果不支持 `RegExp.prototype.unicode`,扩展字符集将自动不生效,如IE浏览器。
17
+ * @param {boolean} [options.useExtend=false] 使用统一表意文字扩展A-I。注意:如果不支持 `RegExp.prototype.unicode`,扩展字符集将自动不生效,如IE浏览器。
18
18
  * @returns {boolean} 值是否为中文
19
19
  * @example
20
20
  *
@@ -12,14 +12,14 @@ type Options = {
12
12
  * @static
13
13
  * @alias module:Tree.listToTree
14
14
  * @since 4.14.0
15
- * @param {object[]} list 列表数据
16
- * @param {object} [options] 配置项
15
+ * @param {Object[]} list 列表数据
16
+ * @param {Object} [options] 配置项
17
17
  * @param {string} [options.keyField='id'] 当前数据的键值字段名称
18
18
  * @param {string} [options.parentField='pid'] 当前数据的父级字段名称
19
19
  * @param {string} [options.childrenField='children'] 子级字段名称
20
20
  * @param {'none'|'null'|'array'} [options.emptyChildrenValue='none'] 子级为空时的值,none表示删除该子级,null表示为null,array表示为[]。
21
21
  * @param {'spread'|'self'} [options.nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
22
- * @returns {object[]} 树结构
22
+ * @returns {Object[]} 树结构
23
23
  * @example
24
24
  *
25
25
  * const menus = [
@@ -1,4 +1,30 @@
1
- declare function safeDate(): Date;
2
- declare function safeDate(value: number | string | Date): Date;
3
- declare function safeDate(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
1
+ interface SafeDate {
2
+ (): Date;
3
+ (value: number | string | Date): Date;
4
+ (year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number): Date;
5
+ }
6
+ /**
7
+ * 创建一个 Date 实例日期对象,同 <a href="https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date#%E5%8F%82%E6%95%B0">new Date()</a>
8
+ *
9
+ * 规避了苹果设备浏览器不支持部分格式(例如,YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。
10
+ *
11
+ * 如果参数为 undefined 正常返回 Date 。
12
+ *
13
+ * @function
14
+ * @alias module:Processor.safeDate
15
+ * @since 4.4.0
16
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date | Date}
17
+ * @param {string|number|Date} [value] 日期时间字符串、毫秒数、日期对象
18
+ * @param {...number} [args] 月/日/时/分/秒/毫秒
19
+ * @returns {Date} Date 实例日期对象
20
+ * @example
21
+ *
22
+ * safeDate('2022-1-1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
23
+ * safeDate('2022/1/1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
24
+ * safeDate('2022.1.1'); // Sat Jan 01 2022 00:00:00 GMT+0800 (中国标准时间)
25
+ * safeDate('2022.1.1 11:11'); // Sat Jan 01 2022 11:11:00 GMT+0800 (中国标准时间)
26
+ * safeDate(99, 1); // Mon Feb 01 1999 00:00:00 GMT+0800 (中国标准时间)
27
+ * safeDate(1646711233171); // Tue Mar 08 2022 11:47:13 GMT+0800 (中国标准时间)
28
+ */
29
+ declare const safeDate: SafeDate;
4
30
  export default safeDate;
@@ -9,11 +9,11 @@ type TransformFieldNames<D extends any, F extends Record<string, any>, C extends
9
9
  * @static
10
10
  * @alias module:Tree.transformFieldNames
11
11
  * @since 4.14.0
12
- * @param {object[]} data 对象数组。如果是树结构数据,需要指定第三个参数 childrenField
13
- * @param {function} fieldNames 字段名映射
12
+ * @param {Object[]} data 对象数组。如果是树结构数据,需要指定第三个参数 childrenField
13
+ * @param {Object} fieldNames 字段名映射
14
14
  * @param {string} [childrenField] 子级数据字段名
15
15
  * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
16
- * @returns {object[]}
16
+ * @returns {Object[]}
17
17
  * @example
18
18
  *
19
19
  * const options = [{code: '1', name: 'one'},{code:'2', name:'two'}];
@@ -4,9 +4,9 @@
4
4
  * @static
5
5
  * @alias module:Tree.treeToList
6
6
  * @since 4.14.0
7
- * @param {object[]} tree 树结构数据
7
+ * @param {Object[]} tree 树结构数据
8
8
  * @param {string} childrenField 子级字段名称
9
- * @returns {object[]} 列表数据
9
+ * @returns {Object[]} 列表数据
10
10
  * @example
11
11
  * const menus = [{ id: '1', name: '首页', code: 'trade', pid: null }, { id: '2', name: '交易管理', code: 'trade', pid: null, children: [{ id: '3', name: '交易查询', code: 'trade-1', pid: '2', children: [{ id: '4', name: '交易查询-查询操作', code: 'trade-1-1', pid: '3' }]}]}, { id: '5', name: '权限管理', code: 'authorization', pid: null, children: [{ id: '6', name: '角色管理', code: 'authorization-1', pid: '5' }, { id: '7', name: '用户管理', code: 'authorization-2', pid: '5' }]}];
12
12
  *
@@ -2,5 +2,11 @@ export declare const objectKeys: {
2
2
  (o: object): string[];
3
3
  (o: {}): string[];
4
4
  };
5
+ export declare const objectValues: {
6
+ <T>(o: {
7
+ [s: string]: T;
8
+ } | ArrayLike<T>): T[];
9
+ (o: {}): any[];
10
+ };
5
11
  export declare const createObjectURL: (obj: Blob | MediaSource) => string;
6
12
  export declare const revokeObjectURL: (url: string) => void;
@@ -1,72 +0,0 @@
1
- var EmitterPro = /** @class */ (function () {
2
- function EmitterPro() {
3
- this.handler = {};
4
- }
5
- EmitterPro.prototype.eventNames = function () {
6
- return Object.keys(this.handler);
7
- };
8
- EmitterPro.prototype.listeners = function (eventName) {
9
- return this.handler[eventName] || [];
10
- };
11
- EmitterPro.prototype.hasListener = function (eventName, listener) {
12
- return this.listeners(eventName).some(function (item) { return item === listener; });
13
- };
14
- EmitterPro.prototype.on = function (eventName, listener) {
15
- if (!this.handler[eventName]) {
16
- this.handler[eventName] = [listener];
17
- }
18
- else {
19
- // 不允许添加相同的方法
20
- if (!this.hasListener(eventName, listener)) {
21
- this.handler[eventName].push(listener);
22
- }
23
- }
24
- return this;
25
- };
26
- EmitterPro.prototype.off = function (eventName, listener) {
27
- if (this.handler[eventName]) {
28
- if (typeof listener === 'function') {
29
- this.handler[eventName] = this.handler[eventName].filter(function (item) { return item !== listener; });
30
- }
31
- else {
32
- delete this.handler[eventName];
33
- }
34
- }
35
- return this;
36
- };
37
- EmitterPro.prototype.emit = function (eventName) {
38
- var args = [];
39
- for (var _i = 1; _i < arguments.length; _i++) {
40
- args[_i - 1] = arguments[_i];
41
- }
42
- var listeners = this.listeners(eventName);
43
- if (listeners.length > 0) {
44
- listeners.forEach(function (listener) {
45
- // eslint-disable-next-line prefer-spread
46
- listener.apply(void 0, args);
47
- });
48
- return true;
49
- }
50
- return false;
51
- };
52
- EmitterPro.prototype.once = function (eventName, listener) {
53
- var _this = this;
54
- var wrap = function () {
55
- var args = [];
56
- for (var _i = 0; _i < arguments.length; _i++) {
57
- args[_i] = arguments[_i];
58
- }
59
- // eslint-disable-next-line prefer-spread
60
- listener.apply(void 0, args);
61
- _this.off(eventName, wrap);
62
- };
63
- return this.on(eventName, wrap);
64
- };
65
- EmitterPro.prototype.offAll = function () {
66
- this.handler = {};
67
- return this;
68
- };
69
- return EmitterPro;
70
- }());
71
-
72
- export { EmitterPro as default };
@@ -1,74 +0,0 @@
1
- 'use strict';
2
-
3
- exports.default = /** @class */ (function () {
4
- function EmitterPro() {
5
- this.handler = {};
6
- }
7
- EmitterPro.prototype.eventNames = function () {
8
- return Object.keys(this.handler);
9
- };
10
- EmitterPro.prototype.listeners = function (eventName) {
11
- return this.handler[eventName] || [];
12
- };
13
- EmitterPro.prototype.hasListener = function (eventName, listener) {
14
- return this.listeners(eventName).some(function (item) { return item === listener; });
15
- };
16
- EmitterPro.prototype.on = function (eventName, listener) {
17
- if (!this.handler[eventName]) {
18
- this.handler[eventName] = [listener];
19
- }
20
- else {
21
- // 不允许添加相同的方法
22
- if (!this.hasListener(eventName, listener)) {
23
- this.handler[eventName].push(listener);
24
- }
25
- }
26
- return this;
27
- };
28
- EmitterPro.prototype.off = function (eventName, listener) {
29
- if (this.handler[eventName]) {
30
- if (typeof listener === 'function') {
31
- this.handler[eventName] = this.handler[eventName].filter(function (item) { return item !== listener; });
32
- }
33
- else {
34
- delete this.handler[eventName];
35
- }
36
- }
37
- return this;
38
- };
39
- EmitterPro.prototype.emit = function (eventName) {
40
- var args = [];
41
- for (var _i = 1; _i < arguments.length; _i++) {
42
- args[_i - 1] = arguments[_i];
43
- }
44
- var listeners = this.listeners(eventName);
45
- if (listeners.length > 0) {
46
- listeners.forEach(function (listener) {
47
- // eslint-disable-next-line prefer-spread
48
- listener.apply(void 0, args);
49
- });
50
- return true;
51
- }
52
- return false;
53
- };
54
- EmitterPro.prototype.once = function (eventName, listener) {
55
- var _this = this;
56
- var wrap = function () {
57
- var args = [];
58
- for (var _i = 0; _i < arguments.length; _i++) {
59
- args[_i] = arguments[_i];
60
- }
61
- // eslint-disable-next-line prefer-spread
62
- listener.apply(void 0, args);
63
- _this.off(eventName, wrap);
64
- };
65
- return this.on(eventName, wrap);
66
- };
67
- EmitterPro.prototype.offAll = function () {
68
- this.handler = {};
69
- return this;
70
- };
71
- return EmitterPro;
72
- }());
73
-
74
- module.exports = exports.default;