util-helpers 4.15.2 → 4.16.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.
Files changed (74) hide show
  1. package/README.md +6 -5
  2. package/dist/util-helpers.js +887 -479
  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/ajax.js +149 -0
  7. package/esm/blobToDataURL.js +8 -12
  8. package/esm/dataURLToBlob.js +6 -5
  9. package/esm/download.js +156 -0
  10. package/esm/fileReader.js +67 -0
  11. package/esm/filterTree.js +1 -1
  12. package/esm/findTreeNode.js +1 -1
  13. package/esm/findTreeNodes.js +1 -1
  14. package/esm/findTreeSelect.js +1 -1
  15. package/esm/index.js +15 -5
  16. package/esm/interface.doc.js +124 -0
  17. package/esm/{transformFieldNames.type.js → interface.type.js} +2 -4
  18. package/esm/listToTree.js +1 -1
  19. package/esm/numberToChinese.js +3 -2
  20. package/esm/parseIdCard.js +1 -1
  21. package/esm/replaceChar.js +11 -7
  22. package/esm/safeDate.js +26 -9
  23. package/esm/transformFieldNames.js +2 -3
  24. package/esm/treeToList.js +1 -1
  25. package/esm/utils/config.js +1 -1
  26. package/esm/utils/type/index.js +3 -1
  27. package/esm/utils/type/isArrayBuffer.js +25 -0
  28. package/esm/utils/type/isBlob.js +27 -0
  29. package/lib/ajax.js +156 -0
  30. package/lib/blobToDataURL.js +8 -12
  31. package/lib/dataURLToBlob.js +6 -5
  32. package/lib/download.js +161 -0
  33. package/lib/fileReader.js +74 -0
  34. package/lib/filterTree.js +1 -1
  35. package/lib/findTreeNode.js +1 -1
  36. package/lib/findTreeNodes.js +1 -1
  37. package/lib/findTreeSelect.js +1 -1
  38. package/lib/index.js +26 -5
  39. package/lib/interface.doc.js +126 -0
  40. package/lib/listToTree.js +1 -1
  41. package/lib/numberToChinese.js +3 -2
  42. package/lib/parseIdCard.js +1 -1
  43. package/lib/replaceChar.js +11 -7
  44. package/lib/safeDate.js +27 -10
  45. package/lib/transformFieldNames.js +1 -1
  46. package/lib/treeToList.js +1 -1
  47. package/lib/utils/config.js +1 -1
  48. package/lib/utils/type/index.js +14 -0
  49. package/lib/utils/type/isArrayBuffer.js +32 -0
  50. package/lib/utils/type/isBlob.js +34 -0
  51. package/package.json +2 -2
  52. package/types/ajax.d.ts +121 -0
  53. package/types/blobToDataURL.d.ts +5 -1
  54. package/types/download.d.ts +77 -0
  55. package/types/fileReader.d.ts +3 -0
  56. package/types/filterTree.d.ts +1 -1
  57. package/types/findTreeNode.d.ts +1 -1
  58. package/types/findTreeNodes.d.ts +1 -1
  59. package/types/findTreeSelect.d.ts +1 -1
  60. package/types/index.d.ts +8 -5
  61. package/types/{transformFieldNames.type.d.ts → interface.type.d.ts} +1 -1
  62. package/types/listToTree.d.ts +1 -1
  63. package/types/numberToChinese.d.ts +3 -2
  64. package/types/parseIdCard.d.ts +2 -2
  65. package/types/replaceChar.d.ts +11 -7
  66. package/types/safeDate.d.ts +3 -23
  67. package/types/transformFieldNames.d.ts +2 -2
  68. package/types/treeToList.d.ts +1 -1
  69. package/types/utils/type/index.d.ts +21 -19
  70. package/types/utils/type/isArrayBuffer.d.ts +21 -0
  71. package/types/utils/type/isBlob.d.ts +23 -0
  72. package/esm/transformFieldNames.doc.js +0 -35
  73. package/lib/transformFieldNames.doc.js +0 -42
  74. /package/lib/{transformFieldNames.type.js → interface.type.js} +0 -0
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var FileReaderMethodMap = {
8
+ arrayBuffer: 'readAsArrayBuffer',
9
+ binaryString: 'readAsBinaryString',
10
+ dataURL: 'readAsDataURL',
11
+ text: 'readAsText'
12
+ };
13
+
14
+ /**
15
+ * @overload
16
+ * @param {Blob} blob
17
+ * @param {'arrayBuffer'} type
18
+ * @returns {Promise<ArrayBuffer>}
19
+ */
20
+
21
+ /**
22
+ * @overload
23
+ * @param {Blob} blob
24
+ * @param {'binaryString'|'binaryString'|'dataURL'|'text'} [type='dataURL']
25
+ * @returns {Promise<string>}
26
+ */
27
+
28
+ /**
29
+ * 读取 Blob 或 File 对象<br/><br/>
30
+ *
31
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
32
+ *
33
+ * @static
34
+ * @alias module:Processor.fileReader
35
+ * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader|FileReader}
36
+ * @since 4.16.0
37
+ * @param {Blob} blob Blob 或 File 对象
38
+ * @param {'arrayBuffer'|'binaryString'|'dataURL'|'text'} [type='dataURL'] Blob 或 File 对象
39
+ * @returns {Promise<string|ArrayBuffer>} 文件的内容
40
+ * @example
41
+ * const aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
42
+ * const htmlBlob = new Blob(aFileParts, { type: 'text/html' }); // 得到 blob
43
+ *
44
+ * fileReader(htmlBlob).then(data=>{
45
+ * console.log(data); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
46
+ * });
47
+ *
48
+ * const textBlob = new Blob(aFileParts, { type: 'text/plain' });
49
+ *
50
+ * fileReader(textBlob, 'text').then(data=>{
51
+ * console.log(data); // <a id="a"><b id="b">hey!</b></a>
52
+ * });
53
+ */
54
+ function fileReader(blob) {
55
+ var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dataURL';
56
+ var method = FileReaderMethodMap[type];
57
+ if (!method) {
58
+ method = FileReaderMethodMap.dataURL;
59
+ }
60
+ return new Promise(function (resolve, reject) {
61
+ var reader = new FileReader();
62
+ // @ts-ignore
63
+ reader[method](blob);
64
+ // @ts-ignore
65
+ reader.onload = function () {
66
+ return resolve(reader.result);
67
+ };
68
+ reader.onerror = function (error) {
69
+ return reject(error);
70
+ };
71
+ });
72
+ }
73
+ var _default = fileReader;
74
+ exports["default"] = _default;
package/lib/filterTree.js CHANGED
@@ -15,7 +15,7 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
15
15
  * 过滤/筛选树节点。<br/><br/>如果某节点被过滤掉,它的子节点也一并抛弃
16
16
  *
17
17
  * @static
18
- * @alias module:Processor.filterTree
18
+ * @alias module:Tree.filterTree
19
19
  * @since 4.15.0
20
20
  * @template {any} T
21
21
  * @template {(item: T) => boolean} F
@@ -16,7 +16,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
16
16
  * 查找树结构数据节点
17
17
  *
18
18
  * @static
19
- * @alias module:Other.findTreeNode
19
+ * @alias module:Tree.findTreeNode
20
20
  * @since 4.14.0
21
21
  * @template {any} T
22
22
  * @template {(item: T) => boolean} F
@@ -16,7 +16,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len
16
16
  * 查找树结构数据多个节点
17
17
  *
18
18
  * @static
19
- * @alias module:Other.findTreeNodes
19
+ * @alias module:Tree.findTreeNodes
20
20
  * @since 4.15.0
21
21
  * @template {any} T
22
22
  * @template {(item: T) => boolean} F
@@ -59,7 +59,7 @@ function internalFindTreeSelect(tree, predicate, childrenField) {
59
59
  * 查找包含当前节点的所有父级节点
60
60
  *
61
61
  * @static
62
- * @alias module:Other.findTreeSelect
62
+ * @alias module:Tree.findTreeSelect
63
63
  * @since 4.14.0
64
64
  * @template {any} T
65
65
  * @template {(item: T) => boolean} F
package/lib/index.js CHANGED
@@ -3,6 +3,12 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ Object.defineProperty(exports, "ajax", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ajax["default"];
10
+ }
11
+ });
6
12
  Object.defineProperty(exports, "blobToDataURL", {
7
13
  enumerable: true,
8
14
  get: function get() {
@@ -33,6 +39,18 @@ Object.defineProperty(exports, "divide", {
33
39
  return _divide["default"];
34
40
  }
35
41
  });
42
+ Object.defineProperty(exports, "download", {
43
+ enumerable: true,
44
+ get: function get() {
45
+ return _download["default"];
46
+ }
47
+ });
48
+ Object.defineProperty(exports, "fileReader", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _fileReader["default"];
52
+ }
53
+ });
36
54
  Object.defineProperty(exports, "filterTree", {
37
55
  enumerable: true,
38
56
  get: function get() {
@@ -350,25 +368,28 @@ var _numberToChinese = _interopRequireDefault(require("./numberToChinese"));
350
368
  var _bytesToSize = _interopRequireDefault(require("./bytesToSize"));
351
369
  var _parseIdCard = _interopRequireDefault(require("./parseIdCard"));
352
370
  var _blobToDataURL = _interopRequireDefault(require("./blobToDataURL"));
371
+ var _fileReader = _interopRequireDefault(require("./fileReader"));
353
372
  var _dataURLToBlob = _interopRequireDefault(require("./dataURLToBlob"));
354
373
  var _setDataURLPrefix = _interopRequireDefault(require("./setDataURLPrefix"));
355
374
  var _normalizeString = _interopRequireDefault(require("./normalizeString"));
356
375
  var _safeDate = _interopRequireDefault(require("./safeDate"));
357
376
  var _formatMobile = _interopRequireDefault(require("./formatMobile"));
358
377
  var _padZero = _interopRequireDefault(require("./padZero"));
359
- var _transformFieldNames = _interopRequireDefault(require("./transformFieldNames"));
360
- var _listToTree = _interopRequireDefault(require("./listToTree"));
361
- var _treeToList = _interopRequireDefault(require("./treeToList"));
362
- var _filterTree = _interopRequireDefault(require("./filterTree"));
363
378
  var _plus = _interopRequireDefault(require("./plus"));
364
379
  var _minus = _interopRequireDefault(require("./minus"));
365
380
  var _times = _interopRequireDefault(require("./times"));
366
381
  var _divide = _interopRequireDefault(require("./divide"));
367
382
  var _round = _interopRequireDefault(require("./round"));
368
- var _waitTime = _interopRequireDefault(require("./waitTime"));
383
+ var _ajax = _interopRequireDefault(require("./ajax"));
369
384
  var _calculateCursorPosition = _interopRequireDefault(require("./calculateCursorPosition"));
385
+ var _download = _interopRequireDefault(require("./download"));
370
386
  var _randomString = _interopRequireDefault(require("./randomString"));
371
387
  var _strlen = _interopRequireDefault(require("./strlen"));
388
+ var _waitTime = _interopRequireDefault(require("./waitTime"));
389
+ var _transformFieldNames = _interopRequireDefault(require("./transformFieldNames"));
390
+ var _listToTree = _interopRequireDefault(require("./listToTree"));
391
+ var _treeToList = _interopRequireDefault(require("./treeToList"));
392
+ var _filterTree = _interopRequireDefault(require("./filterTree"));
372
393
  var _findTreeNode = _interopRequireDefault(require("./findTreeNode"));
373
394
  var _findTreeNodes = _interopRequireDefault(require("./findTreeNodes"));
374
395
  var _findTreeSelect = _interopRequireDefault(require("./findTreeSelect"));
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ /* eslint-disable no-unused-vars */
4
+ // 该文件用于 jsdoc 生成文件。因为一些 typescript 语法, jsdoc 不支持,导致生成文档报错。
5
+
6
+ /**
7
+ * 转换字段名,返回一个转换字段后的值,不改变原值。
8
+ *
9
+ * @static
10
+ * @alias module:Tree.transformFieldNames
11
+ * @since 4.14.0
12
+ * @param {object[]} data 对象数组。如果是树结构数据,需要指定第三个参数 childrenField
13
+ * @param {object} fieldNames 字段名映射
14
+ * @param {string} [childrenField] 子级数据字段名
15
+ * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
16
+ * @returns {object[]}
17
+ * @example
18
+ *
19
+ * const options = [{code: '1', name: 'one'},{code:'2', name:'two'}];
20
+ * const newOptions = transformFieldNames(options, {label: 'name', value: 'code'});
21
+ * // [{value: '1', label: 'one'},{value:'2', label:'two'}]
22
+ *
23
+ * // 嵌套数据,指定子级字段名 children
24
+ * const options2 = [{code: '1', name: 'one'},{code:'2', name:'two', children: [{code:'2-1', name:'two-one', children: [{code: '2-1-1', name:'two-one-one'}]}]}];
25
+ * const newOptions2 = transformFieldNames(options2, {label: 'name', value: 'code'}, 'children');
26
+ * // [{value: '1', label: 'one'},{value:'2', label:'two', children: [{value: '2-1', label:'two-one', children: [{value: '2-1-1', label:'two-one-one'}]}]}]
27
+ *
28
+ * const options3 = [{code: '1', name: 'one'},{code:'2', name:'two', childs: [{code:'2-1', name:'two-one'}]}];
29
+ * const newOptions3 = transformFieldNames(options3, {label: 'name', value: 'code'}, 'childs');
30
+ * // [{value: '1', label: 'one'},{value:'2', label:'two', childs: [{value: '2-1', label:'two-one'}]}]
31
+ *
32
+ * // 嵌套数据,并替换子集字段名
33
+ * const newOptions4 = transformFieldNames(options3, {label: 'name', value: 'code', children: 'childs'}, 'childs');
34
+ * // [{value: '1', label: 'one'},{value:'2', label:'two', children: [{value: '2-1', label:'two-one'}]}]
35
+ */
36
+ function transformFieldNames(data, fieldNames, childrenField) {}
37
+
38
+ /**
39
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest|XMLHttpRequest}
40
+ * @typedef {Object} AjaxOptions ajax配置项
41
+ * @property {string} [method="get"] 创建请求时使用的方法
42
+ * @property {*} [data=null] 请求体被发送的数据
43
+ * @property {object} [headers] 自定义请求头
44
+ * @property {string} [responseType] 响应类型
45
+ * @property {number} [timeout] 请求超时的毫秒数
46
+ * @property {boolean} [withCredentials=false] 跨域请求时是否需要使用凭证
47
+ * @property {boolean} [async=true] 是否异步执行操作
48
+ * @property {string|null} [user=null] 用户名,用于认证用途
49
+ * @property {string|null} [password=null] 密码,用于认证用途
50
+ * @property {function} [onLoadStart] 接收到响应数据时触发
51
+ * @property {function} [onProgress] 请求接收到更多数据时,周期性地触发
52
+ * @property {function} [onAbort] 当 request 被停止时触发,例如当程序调用 XMLHttpRequest.abort() 时
53
+ * @property {function} [onTimeout] 在预设时间内没有接收到响应时触发
54
+ * @property {function} [onError] 当 request 遭遇错误时触发
55
+ * @property {function} [onLoad] 请求成功完成时触发
56
+ * @property {function} [onLoadEnd] 请求结束时触发,无论请求成功 (load) 还是失败 (abort 或 error)
57
+ */
58
+
59
+ /**
60
+ * 请求<br/><br/>
61
+ *
62
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
63
+ *
64
+ * @static
65
+ * @alias module:Other.ajax
66
+ * @since 4.16.0
67
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest|XMLHttpRequest}
68
+ * @param {string} url 地址
69
+ * @param {AjaxOptions} [options] 配置项
70
+ * @returns {Promise<object>} XHR 事件对象
71
+ * @example
72
+ * ajax('/somefile').then(res=>{
73
+ * // do something
74
+ * });
75
+ *
76
+ * ajax('/api', { method: 'post' }).then(res=>{
77
+ * // do something
78
+ * });
79
+ */
80
+ function ajax(url, options) {}
81
+
82
+ /**
83
+ * @callback TransformRequest
84
+ * @param {AjaxOptions} options ajax 配置项
85
+ * @returns {AjaxOptions}
86
+ */
87
+
88
+ /**
89
+ * @callback TransformResponse
90
+ * @param {Blob} res 响应的Blob对象。如果你通过 transformRequest 修改了 responseType ,该参数将是该类型响应值。
91
+ * @returns {Blob}
92
+ */
93
+
94
+ /**
95
+ * @typedef {Object} DownloadOptions 下载配置项
96
+ * @property {string} [options.fileName] 文件名称
97
+ * @property {string} [options.type] MIME 类型
98
+ * @property {'url'|'text'} [options.dataType] 手动设置数据类型,默认会根据传入的数据判断类型,主要是为了区分 url 和 text 。<br/>如果你要下载的文本是 url ,请设置 'text' ;如果你要下载的 url 是绝对/相对路径,请设置 'url' 。
99
+ * @property {TransformRequest} [options.transformRequest] 请求前触发,XHR 对象或配置调整
100
+ * @property {TransformResponse} [options.transformResponse] 请求成功后触发,在传递给 then/catch 前,允许修改响应数据
101
+ */
102
+
103
+ /**
104
+ * 下载<br/><br/>
105
+ *
106
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端,兼容 IE10+ 和现代浏览器。</em>
107
+ *
108
+ * @static
109
+ * @alias module:Other.download
110
+ * @since 4.16.0
111
+ * @see {@link https://zh.wikipedia.org/wiki/多用途互聯網郵件擴展|MIME}
112
+ * @param {string|Blob|TypedArray} data 字符串、blob数据或url地址
113
+ * @param {string|DownloadOptions} [options] 文件名称 或 配置项
114
+ * @returns {Promise<void>}
115
+ * @example
116
+ * // 文本
117
+ * download('hello world', 'text.txt');
118
+ *
119
+ * // 远程文件
120
+ * download('/xxx.jpg', { dataType: 'url' });
121
+ *
122
+ * // blob文件
123
+ * download(new Blob(['hello world']), 'text.txt');
124
+ *
125
+ */
126
+ function download(data, fileName, options) {}
package/lib/listToTree.js CHANGED
@@ -48,7 +48,7 @@ function processEmptyChildren(arr, options) {
48
48
  * 列表数据转树结构
49
49
  *
50
50
  * @static
51
- * @alias module:Processor.listToTree
51
+ * @alias module:Tree.listToTree
52
52
  * @since 4.14.0
53
53
  * @template {Record<string,any>} [T=Record<string,any>]
54
54
  * @template {*} [R=T&Record<string,any>]
@@ -136,8 +136,9 @@ function mapNumberChar(num) {
136
136
  }
137
137
 
138
138
  /**
139
- * 数字转中文数字
140
- * 不在安全数字 -9007199254740991~9007199254740991 内,处理会有异常
139
+ * 数字转中文数字<br/><br/>
140
+ *
141
+ * 如果数字不在安全数字 -9007199254740991~9007199254740991 范围内,处理会有异常。
141
142
  *
142
143
  * @static
143
144
  * @alias module:Processor.numberToChinese
@@ -77,7 +77,7 @@ var Provinces = [
77
77
  * @since 4.0.0
78
78
  * @see 参考 {@link https://baike.baidu.com/item/居民身份证号码|居民身份证号码}
79
79
  * @param {string} id 身份证号码,支持15位
80
- * @returns {null|IdCardInfo} null 或 省份、生日、性别,省/市/区/年/月/日/性别编码
80
+ * @returns {IdCardInfo | null} 省份、生日、性别,省/市/区/年/月/日/性别编码。如果解析失败将返回 null
81
81
  * @example
82
82
  *
83
83
  * parseIdCard('123456789123456'); // null
@@ -22,20 +22,24 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "d
22
22
  * @returns {string} 处理后的字符
23
23
  * @example
24
24
  *
25
- * // 手机号
25
+ * // 手机号 前3后4
26
26
  * replaceChar('13000000000'); // 130****0000
27
27
  *
28
- * // 身份证
29
- * replaceChar('130701199310302288'); // 130***********2288
28
+ * // 身份证 前6后4
29
+ * replaceChar('130701199310302288', { start: 6, end: -4 }); // 130701********2288
30
30
  *
31
- * // 邮箱
31
+ * // 邮箱 @前两位
32
32
  * const email = '12345@qq.com'
33
+ * const emailAtIndex = email.indexOf('@');
34
+ * replaceChar(email, { start: emailAtIndex - 2, end: emailAtIndex }); // 123**@qq.com
35
+ * // 邮箱 前2和@后面内容,固定替换字符4位
33
36
  * replaceChar(email, {start: 2, end: email.indexOf('@'), repeat: 4}); // 12****@qq.com
34
37
  *
35
- * // 银行卡号
38
+ * // 银行卡号 只展示后4位,固定替换字符4位
36
39
  * replaceChar('6228480402564890018', {start: 0, end: -4, repeat: 4}); // ****0018
37
- *
38
- * // 带格式的银行卡号,忽略空字符串
40
+ * // 银行卡号 前6后4
41
+ * replaceChar('6228480402564890018', { start: 6, end: -4 }); // 622848*********0018
42
+ * // 银行卡号 前4后3 忽略格式的空格
39
43
  * replaceChar('6228 4804 0256 4890 018', {start: 4, end: -4, exclude: ' '}); // 6228 **** **** **** 018
40
44
  *
41
45
  * // 用户名
package/lib/safeDate.js CHANGED
@@ -4,16 +4,37 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
- var _isNil = _interopRequireDefault(require("./utils/type/isNil"));
8
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
7
  function _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct.bind(); } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }
10
8
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
11
9
  function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
12
- // TODO: 函数重载,类型参照 Date
10
+ /**
11
+ * @overload
12
+ * @return {Date}
13
+ */
14
+
15
+ /**
16
+ * @overload
17
+ * @param {number | string | Date} value Unix时间戳、时间戳字符串 dateString 、Date 日期对象
18
+ * @return {Date}
19
+ */
20
+
21
+ /**
22
+ * @overload
23
+ * @param {number} year 表示年份的整数值。0 到 99 会被映射至 1900 年至 1999 年,其他值代表实际年份。
24
+ * @param {number} monthIndex 表示月份的整数值,从 0(1 月)到 11(12 月)。
25
+ * @param {number} [date] 表示一个月中的第几天的整数值,从 1 开始。默认值为 1。
26
+ * @param {number} [hours] 表示一天中的小时数的整数值 (24 小时制)。默认值为 0(午夜)。
27
+ * @param {number} [minutes] 表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为 0。
28
+ * @param {number} [seconds] 表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为 0。
29
+ * @param {number} [ms] 表示一个完整时间的毫秒部分的整数值。默认值为 0。
30
+ * @return {Date}
31
+ */
13
32
 
14
33
  /**
15
- * 创建一个 Date 实例日期对象,同 new Date() 。<br/>
16
- * 规避了苹果设备浏览器不支持部分格式(YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。
34
+ * 创建一个 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> <br/><br/>
35
+ *
36
+ * 规避了苹果设备浏览器不支持部分格式(例如,YYYY-MM-DD HH-mm 或 YYYY.MM.DD)。<br/>
37
+ * 如果参数为 undefined 正常返回 Date 。
17
38
  *
18
39
  * @static
19
40
  * @alias module:Processor.safeDate
@@ -30,8 +51,6 @@ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Objec
30
51
  * safeDate('2022.1.1 11:11'); // Sat Jan 01 2022 11:11:00 GMT+0800 (中国标准时间)
31
52
  * safeDate(99, 1); // Mon Feb 01 1999 00:00:00 GMT+0800 (中国标准时间)
32
53
  * safeDate(1646711233171); // Tue Mar 08 2022 11:47:13 GMT+0800 (中国标准时间)
33
- *
34
- *
35
54
  */
36
55
  function safeDate(value) {
37
56
  var safeValue = typeof value === 'string' ? value.replace(/[\\.-]/g, '/') : value;
@@ -42,9 +61,7 @@ function safeDate(value) {
42
61
  // @ts-ignore
43
62
  return _construct(Date, [safeValue].concat(args));
44
63
  }
45
-
46
- // @ts-ignore
47
- return (0, _isNil["default"])(safeValue) ? new Date() : new Date(safeValue);
64
+ return typeof safeValue === 'undefined' ? new Date() : new Date(safeValue);
48
65
  }
49
66
  var _default = safeDate;
50
67
  exports["default"] = _default;
@@ -24,7 +24,7 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
24
24
  * @param {F} fieldNames 字段名映射
25
25
  * @param {C} [childrenField] 子级数据字段名
26
26
  * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
27
- * @returns {import('./transformFieldNames.type.js').TransformFieldNames<D, F, C>}
27
+ * @returns {import('./interface.type.js').TransformFieldNames<D, F, C>}
28
28
  * @example
29
29
  *
30
30
  * const options = [{code: '1', name: 'one'},{code:'2', name:'two'}];
package/lib/treeToList.js CHANGED
@@ -15,7 +15,7 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
15
15
  * 树结构转列表数据
16
16
  *
17
17
  * @static
18
- * @alias module:Processor.treeToList
18
+ * @alias module:Tree.treeToList
19
19
  * @since 4.14.0
20
20
  * @template {Record<string,any>} T
21
21
  * @template {keyof T} K
@@ -24,5 +24,5 @@ function setDisableWarning(bool) {
24
24
  }
25
25
 
26
26
  // eslint-disable-next-line no-undef
27
- var version = "4.15.2";
27
+ var version = "4.16.0";
28
28
  exports.version = version;
@@ -15,6 +15,18 @@ Object.defineProperty(exports, "isArray", {
15
15
  return _isArray["default"];
16
16
  }
17
17
  });
18
+ Object.defineProperty(exports, "isArrayBuffer", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _isArrayBuffer["default"];
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "isBlob", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _isBlob["default"];
28
+ }
29
+ });
18
30
  Object.defineProperty(exports, "isBoolean", {
19
31
  enumerable: true,
20
32
  get: function get() {
@@ -113,6 +125,8 @@ Object.defineProperty(exports, "isWeakSet", {
113
125
  });
114
126
  var _isArguments = _interopRequireDefault(require("./isArguments"));
115
127
  var _isArray = _interopRequireDefault(require("./isArray"));
128
+ var _isArrayBuffer = _interopRequireDefault(require("./isArrayBuffer"));
129
+ var _isBlob = _interopRequireDefault(require("./isBlob"));
116
130
  var _isBoolean = _interopRequireDefault(require("./isBoolean"));
117
131
  var _isDate = _interopRequireDefault(require("./isDate"));
118
132
  var _isError = _interopRequireDefault(require("./isError"));
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _isType = _interopRequireDefault(require("./isType"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ /**
10
+ * 检查值是否为ArrayBuffer对象
11
+ *
12
+ * @static
13
+ * @alias module:Type.isArrayBuffer
14
+ * @since 4.16.0
15
+ * @param {*} value 检查值
16
+ * @returns {boolean} 是否为ArrayBuffer对象
17
+ * @example
18
+ *
19
+ * isArrayBuffer(new ArrayBuffer(8))
20
+ * // => true
21
+ *
22
+ * isArrayBuffer({})
23
+ * // => false
24
+ *
25
+ * isArrayBuffer('2012')
26
+ * // => false
27
+ */
28
+ function isArrayBuffer(value) {
29
+ return (0, _isType["default"])(value, 'ArrayBuffer');
30
+ }
31
+ var _default = isArrayBuffer;
32
+ exports["default"] = _default;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _isType = _interopRequireDefault(require("./isType"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9
+ /**
10
+ * 检查值是否为Blob对象<br/><br/>
11
+ *
12
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
13
+ *
14
+ * @static
15
+ * @alias module:Type.isBlob
16
+ * @since 4.16.0
17
+ * @param {*} value 检查值
18
+ * @returns {boolean} 是否为Blob对象
19
+ * @example
20
+ *
21
+ * isBlob(new Blob(['a']))
22
+ * // => true
23
+ *
24
+ * isBlob({})
25
+ * // => false
26
+ *
27
+ * isBlob('2012')
28
+ * // => false
29
+ */
30
+ function isBlob(value) {
31
+ return (0, _isType["default"])(value, 'Blob');
32
+ }
33
+ var _default = isBlob;
34
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "util-helpers",
3
- "version": "4.15.2",
3
+ "version": "4.16.0",
4
4
  "description": "一个基于业务场景的工具方法库",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -84,7 +84,7 @@
84
84
  "prettier": "^2.3.2",
85
85
  "rollup": "^2.49.0",
86
86
  "rollup-plugin-terser": "^7.0.2",
87
- "typescript": "^4.9.3"
87
+ "typescript": "^5.0.4"
88
88
  },
89
89
  "lint-staged": {
90
90
  "**/*.js": "npm run lint-staged:js",