util-helpers 4.16.1 → 4.17.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 (260) hide show
  1. package/README.md +3 -1
  2. package/dist/util-helpers.js +1542 -4040
  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 +50 -146
  7. package/esm/blobToDataURL.js +4 -34
  8. package/esm/bytesToSize.js +12 -37
  9. package/esm/calculateCursorPosition.js +30 -52
  10. package/esm/dataURLToBlob.js +14 -28
  11. package/esm/divide.js +24 -48
  12. package/esm/download.js +83 -164
  13. package/esm/fileReader.js +18 -64
  14. package/esm/filterTree.js +25 -57
  15. package/esm/findTreeNode.js +39 -69
  16. package/esm/findTreeNodes.js +35 -68
  17. package/esm/findTreeSelect.js +38 -76
  18. package/esm/formatBankCard.js +13 -43
  19. package/esm/formatMobile.js +17 -43
  20. package/esm/formatMoney.js +59 -139
  21. package/esm/index.js +55 -130
  22. package/esm/isBankCard.js +22 -57
  23. package/esm/isBusinessLicense.js +32 -78
  24. package/esm/isChinese.js +23 -66
  25. package/esm/isEmail.js +6 -21
  26. package/esm/isHMCard.js +5 -28
  27. package/esm/isIPv4.js +5 -22
  28. package/esm/isIPv6.js +5 -36
  29. package/esm/isIdCard.js +27 -66
  30. package/esm/isMobile.js +5 -20
  31. package/esm/isPassport.js +5 -22
  32. package/esm/isPassword.js +7 -48
  33. package/esm/isPostcode.js +5 -20
  34. package/esm/isPromiseLike.js +3 -18
  35. package/esm/isQQ.js +5 -20
  36. package/esm/isSocialCreditCode.js +28 -83
  37. package/esm/isSwiftCode.js +6 -25
  38. package/esm/isTWCard.js +11 -37
  39. package/esm/isTelephone.js +6 -27
  40. package/esm/isUrl.js +5 -44
  41. package/esm/isVehicle.js +5 -28
  42. package/esm/isWX.js +5 -20
  43. package/esm/listToTree.js +51 -122
  44. package/esm/minus.js +21 -39
  45. package/esm/normalizeString.js +8 -29
  46. package/esm/numberToChinese.js +96 -215
  47. package/esm/padZero.js +14 -36
  48. package/esm/parseIdCard.js +64 -132
  49. package/esm/plus.js +21 -39
  50. package/esm/randomString.js +13 -45
  51. package/esm/replaceChar.js +27 -77
  52. package/esm/round.js +14 -31
  53. package/esm/safeDate.js +12 -55
  54. package/esm/setDataURLPrefix.js +6 -29
  55. package/esm/strlen.js +14 -30
  56. package/esm/times.js +24 -42
  57. package/esm/transformFieldNames.js +37 -95
  58. package/esm/treeToList.js +25 -86
  59. package/esm/utils/config.js +4 -14
  60. package/esm/utils/constants.js +4 -4
  61. package/esm/utils/convertToString.js +4 -9
  62. package/esm/utils/devWarn.js +11 -11
  63. package/esm/utils/math.util.js +95 -181
  64. package/esm/utils/type/isBlob.js +4 -24
  65. package/esm/utils/type/isNaN.js +4 -19
  66. package/esm/utils/type/isNil.js +5 -13
  67. package/esm/utils/type/isNull.js +3 -18
  68. package/esm/utils/type/isNumber.js +4 -28
  69. package/esm/utils/type/isObject.js +4 -23
  70. package/esm/utils/type/isString.js +4 -19
  71. package/esm/utils/type/isSymbol.js +4 -19
  72. package/esm/utils/type/isType.js +3 -12
  73. package/esm/utils/type/isUndefined.js +3 -21
  74. package/esm/validatePassword.js +86 -237
  75. package/esm/waitTime.js +7 -26
  76. package/lib/ajax.js +51 -152
  77. package/lib/blobToDataURL.js +5 -40
  78. package/lib/bytesToSize.js +13 -43
  79. package/lib/calculateCursorPosition.js +31 -58
  80. package/lib/dataURLToBlob.js +15 -34
  81. package/lib/divide.js +26 -60
  82. package/lib/download.js +85 -169
  83. package/lib/fileReader.js +19 -70
  84. package/lib/filterTree.js +27 -66
  85. package/lib/findTreeNode.js +40 -77
  86. package/lib/findTreeNodes.js +36 -76
  87. package/lib/findTreeSelect.js +40 -82
  88. package/lib/formatBankCard.js +15 -50
  89. package/lib/formatMobile.js +19 -50
  90. package/lib/formatMoney.js +60 -150
  91. package/lib/index.js +117 -395
  92. package/lib/isBankCard.js +24 -64
  93. package/lib/isBusinessLicense.js +34 -85
  94. package/lib/isChinese.js +24 -73
  95. package/lib/isEmail.js +7 -27
  96. package/lib/isHMCard.js +7 -35
  97. package/lib/isIPv4.js +7 -29
  98. package/lib/isIPv6.js +7 -43
  99. package/lib/isIdCard.js +29 -73
  100. package/lib/isMobile.js +7 -27
  101. package/lib/isPassport.js +7 -29
  102. package/lib/isPassword.js +9 -55
  103. package/lib/isPostcode.js +7 -27
  104. package/lib/isPromiseLike.js +4 -24
  105. package/lib/isQQ.js +7 -27
  106. package/lib/isSocialCreditCode.js +30 -90
  107. package/lib/isSwiftCode.js +7 -32
  108. package/lib/isTWCard.js +13 -44
  109. package/lib/isTelephone.js +7 -33
  110. package/lib/isUrl.js +6 -50
  111. package/lib/isVehicle.js +7 -35
  112. package/lib/isWX.js +7 -27
  113. package/lib/listToTree.js +53 -131
  114. package/lib/minus.js +23 -51
  115. package/lib/normalizeString.js +10 -36
  116. package/lib/numberToChinese.js +98 -222
  117. package/lib/padZero.js +16 -43
  118. package/lib/parseIdCard.js +65 -138
  119. package/lib/plus.js +23 -51
  120. package/lib/randomString.js +14 -51
  121. package/lib/replaceChar.js +28 -83
  122. package/lib/round.js +15 -37
  123. package/lib/safeDate.js +13 -63
  124. package/lib/setDataURLPrefix.js +7 -35
  125. package/lib/strlen.js +16 -37
  126. package/lib/times.js +26 -53
  127. package/lib/transformFieldNames.js +38 -101
  128. package/lib/treeToList.js +27 -94
  129. package/lib/utils/config.js +6 -23
  130. package/lib/utils/constants.js +3 -11
  131. package/lib/utils/convertToString.js +6 -16
  132. package/lib/utils/devWarn.js +13 -17
  133. package/lib/utils/math.util.js +95 -185
  134. package/lib/utils/type/isBlob.js +6 -31
  135. package/lib/utils/type/isNaN.js +6 -26
  136. package/lib/utils/type/isNil.js +7 -20
  137. package/lib/utils/type/isNull.js +4 -24
  138. package/lib/utils/type/isNumber.js +6 -35
  139. package/lib/utils/type/isObject.js +5 -29
  140. package/lib/utils/type/isString.js +6 -26
  141. package/lib/utils/type/isSymbol.js +6 -26
  142. package/lib/utils/type/isType.js +4 -18
  143. package/lib/utils/type/isUndefined.js +4 -27
  144. package/lib/validatePassword.js +87 -244
  145. package/lib/waitTime.js +8 -32
  146. package/package.json +30 -34
  147. package/types/ajax.d.ts +38 -95
  148. package/types/blobToDataURL.d.ts +2 -2
  149. package/types/bytesToSize.d.ts +7 -6
  150. package/types/calculateCursorPosition.d.ts +10 -9
  151. package/types/dataURLToBlob.d.ts +5 -5
  152. package/types/divide.d.ts +2 -2
  153. package/types/download.d.ts +22 -38
  154. package/types/fileReader.d.ts +35 -2
  155. package/types/filterTree.d.ts +6 -7
  156. package/types/findTreeNode.d.ts +5 -7
  157. package/types/findTreeNodes.d.ts +5 -7
  158. package/types/findTreeSelect.d.ts +5 -7
  159. package/types/formatBankCard.d.ts +8 -5
  160. package/types/formatMobile.d.ts +7 -4
  161. package/types/formatMoney.d.ts +8 -7
  162. package/types/index.d.ts +125 -55
  163. package/types/isBankCard.d.ts +9 -8
  164. package/types/isBusinessLicense.d.ts +8 -5
  165. package/types/isChinese.d.ts +9 -8
  166. package/types/isEmail.d.ts +1 -1
  167. package/types/isHMCard.d.ts +2 -2
  168. package/types/isIPv4.d.ts +1 -1
  169. package/types/isIPv6.d.ts +1 -1
  170. package/types/isIdCard.d.ts +8 -7
  171. package/types/isMobile.d.ts +1 -1
  172. package/types/isPassport.d.ts +2 -2
  173. package/types/isPassword.d.ts +4 -7
  174. package/types/isPostcode.d.ts +1 -1
  175. package/types/isPromiseLike.d.ts +1 -1
  176. package/types/isQQ.d.ts +1 -1
  177. package/types/isSocialCreditCode.d.ts +8 -5
  178. package/types/isSwiftCode.d.ts +2 -2
  179. package/types/isTWCard.d.ts +6 -5
  180. package/types/isTelephone.d.ts +1 -1
  181. package/types/isUrl.d.ts +2 -2
  182. package/types/isVehicle.d.ts +2 -2
  183. package/types/isWX.d.ts +1 -1
  184. package/types/listToTree.d.ts +12 -12
  185. package/types/minus.d.ts +3 -2
  186. package/types/normalizeString.d.ts +2 -2
  187. package/types/numberToChinese.d.ts +13 -12
  188. package/types/padZero.d.ts +2 -2
  189. package/types/parseIdCard.d.ts +17 -56
  190. package/types/plus.d.ts +3 -2
  191. package/types/randomString.d.ts +2 -2
  192. package/types/replaceChar.d.ts +15 -11
  193. package/types/round.d.ts +2 -2
  194. package/types/safeDate.d.ts +24 -2
  195. package/types/setDataURLPrefix.d.ts +5 -5
  196. package/types/strlen.d.ts +1 -1
  197. package/types/times.d.ts +3 -2
  198. package/types/transformFieldNames.d.ts +12 -10
  199. package/types/treeToList.d.ts +1 -1
  200. package/types/utils/config.d.ts +6 -5
  201. package/types/utils/constants.d.ts +2 -2
  202. package/types/utils/convertToString.d.ts +1 -1
  203. package/types/utils/devWarn.d.ts +1 -1
  204. package/types/utils/math.util.d.ts +15 -9
  205. package/types/utils/type/index.d.ts +7 -0
  206. package/types/utils/type/isArguments.d.ts +1 -1
  207. package/types/utils/type/isArray.d.ts +1 -1
  208. package/types/utils/type/isArrayBuffer.d.ts +1 -1
  209. package/types/utils/type/isBlob.d.ts +1 -1
  210. package/types/utils/type/isBoolean.d.ts +1 -1
  211. package/types/utils/type/isDate.d.ts +1 -1
  212. package/types/utils/type/isError.d.ts +1 -1
  213. package/types/utils/type/isFunction.d.ts +1 -1
  214. package/types/utils/type/isMap.d.ts +1 -1
  215. package/types/utils/type/isNaN.d.ts +1 -1
  216. package/types/utils/type/isNil.d.ts +1 -1
  217. package/types/utils/type/isNull.d.ts +1 -1
  218. package/types/utils/type/isNumber.d.ts +1 -1
  219. package/types/utils/type/isObject.d.ts +1 -1
  220. package/types/utils/type/isRegExp.d.ts +1 -1
  221. package/types/utils/type/isSet.d.ts +1 -1
  222. package/types/utils/type/isString.d.ts +1 -1
  223. package/types/utils/type/isSymbol.d.ts +1 -1
  224. package/types/utils/type/isType.d.ts +1 -1
  225. package/types/utils/type/isUndefined.d.ts +1 -1
  226. package/types/utils/type/isWeakMap.d.ts +1 -1
  227. package/types/utils/type/isWeakSet.d.ts +1 -1
  228. package/types/validatePassword.d.ts +17 -48
  229. package/types/waitTime.d.ts +2 -2
  230. package/esm/interface.doc.js +0 -125
  231. package/esm/interface.type.js +0 -17
  232. package/esm/utils/type/index.js +0 -29
  233. package/esm/utils/type/isArguments.js +0 -22
  234. package/esm/utils/type/isArray.js +0 -22
  235. package/esm/utils/type/isArrayBuffer.js +0 -25
  236. package/esm/utils/type/isBoolean.js +0 -22
  237. package/esm/utils/type/isDate.js +0 -22
  238. package/esm/utils/type/isError.js +0 -22
  239. package/esm/utils/type/isFunction.js +0 -22
  240. package/esm/utils/type/isMap.js +0 -22
  241. package/esm/utils/type/isRegExp.js +0 -22
  242. package/esm/utils/type/isSet.js +0 -22
  243. package/esm/utils/type/isWeakMap.js +0 -22
  244. package/esm/utils/type/isWeakSet.js +0 -22
  245. package/lib/interface.doc.js +0 -127
  246. package/lib/interface.type.js +0 -5
  247. package/lib/utils/type/index.js +0 -146
  248. package/lib/utils/type/isArguments.js +0 -29
  249. package/lib/utils/type/isArray.js +0 -29
  250. package/lib/utils/type/isArrayBuffer.js +0 -32
  251. package/lib/utils/type/isBoolean.js +0 -29
  252. package/lib/utils/type/isDate.js +0 -29
  253. package/lib/utils/type/isError.js +0 -29
  254. package/lib/utils/type/isFunction.js +0 -29
  255. package/lib/utils/type/isMap.js +0 -29
  256. package/lib/utils/type/isRegExp.js +0 -29
  257. package/lib/utils/type/isSet.js +0 -29
  258. package/lib/utils/type/isWeakMap.js +0 -29
  259. package/lib/utils/type/isWeakSet.js +0 -29
  260. package/types/interface.type.d.ts +0 -2
package/esm/download.js CHANGED
@@ -1,171 +1,90 @@
1
- import _typeof from "@babel/runtime/helpers/typeof";
2
- // 如果修改文档,请同步修改 interface.doc.js
1
+ import { __awaiter, __generator } from 'tslib';
2
+ import dataURLToBlob from './dataURLToBlob.js';
3
+ import isUrl from './isUrl.js';
4
+ import ajax from './ajax.js';
5
+ import isBlob from './utils/type/isBlob.js';
6
+ import isPromiseLike from './isPromiseLike.js';
3
7
 
4
- import dataURLToBlob from "./dataURLToBlob";
5
- import isUrl from "./isUrl";
6
- import ajax from "./ajax";
7
- import { isBlob } from "./utils/type";
8
- import isPromiseLike from "./isPromiseLike";
9
-
10
- /**
11
- * 下载文件
12
- *
13
- * @param {string} blobUrl blob 地址
14
- * @param {string} [fileName] 文件名称
15
- */
16
8
  function saver(blobUrl, fileName) {
17
- var anchor = document.createElement('a');
18
- // anchor.href = decodeURIComponent(blobUrl);
19
- anchor.href = blobUrl;
20
- anchor.style.display = 'none';
21
- anchor.setAttribute('download', fileName || '');
22
-
23
- /**
24
- * 处理点击事件,防止事件冒泡到 body/html 的点击事件。
25
- *
26
- * @param {MouseEvent} e 鼠标事件对象
27
- */
28
- function handleClick(e) {
29
- e.stopPropagation();
30
- anchor.removeEventListener('click', handleClick);
31
- }
32
- anchor.addEventListener('click', handleClick);
33
- document.body.appendChild(anchor);
34
- anchor.click();
35
- document.body.removeChild(anchor);
9
+ if (fileName === void 0) { fileName = ''; }
10
+ var anchor = document.createElement('a');
11
+ anchor.href = blobUrl;
12
+ anchor.style.display = 'none';
13
+ anchor.setAttribute('download', fileName);
14
+ function handleClick(e) {
15
+ e.stopPropagation();
16
+ anchor.removeEventListener('click', handleClick);
17
+ }
18
+ anchor.addEventListener('click', handleClick);
19
+ document.body.appendChild(anchor);
20
+ anchor.click();
21
+ document.body.removeChild(anchor);
36
22
  }
37
-
38
- /**
39
- * @typedef {import('./ajax.js').AjaxOptions} AjaxOptions ajax 配置项
40
- */
41
-
42
- /**
43
- * @callback TransformRequest
44
- * @param {AjaxOptions} options ajax 配置项
45
- * @returns {AjaxOptions | Promise<AjaxOptions>}
46
- */
47
-
48
- /**
49
- * @callback TransformResponse
50
- * @param {Blob} res 响应的Blob对象。如果你通过 transformRequest 修改了 responseType ,该参数将是该类型响应值。
51
- * @returns {Blob | Promise<Blob>}
52
- */
53
-
54
- /**
55
- * @typedef {Object} DownloadOptions 下载配置项
56
- * @property {string} [options.fileName] 文件名称
57
- * @property {string} [options.type] MIME 类型
58
- * @property {'url'|'text'} [options.dataType] 手动设置数据类型,默认会根据传入的数据判断类型,主要是为了区分 url 和 text 。<br/>如果你要下载的文本是 url ,请设置 'text' ;如果你要下载的 url 是绝对/相对路径,请设置 'url' 。
59
- * @property {TransformRequest} [options.transformRequest] 请求前触发,XHR 对象或配置调整
60
- * @property {TransformResponse} [options.transformResponse] 请求成功后触发,在传递给 then/catch 前,允许修改响应数据
61
- */
62
-
63
- /**
64
- * 下载<br/><br/>
65
- *
66
- * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端,兼容 IE10+ 和现代浏览器。</em>
67
- *
68
- * @static
69
- * @alias module:Other.download
70
- * @since 4.16.0
71
- * @see {@link https://zh.wikipedia.org/wiki/多用途互聯網郵件擴展|MIME}
72
- * @see {@link https://9ykc9s.csb.app/|在线示例}
73
- * @param {string|Blob|ArrayBuffer|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array|BigInt64Array|BigUint64Array} data 字符串、blob数据或url地址
74
- * @param {string|DownloadOptions} [options] 文件名称 或 配置项
75
- * @returns {Promise<void>}
76
- * @example
77
- * // 文本
78
- * download('hello world', 'text.txt');
79
- *
80
- * // 远程文件
81
- * download('/xxx.jpg', { dataType: 'url' });
82
- *
83
- * // blob文件
84
- * download(new Blob(['hello world']), 'text.txt');
85
- *
86
- */
87
23
  function download(data, options) {
88
- var config = _typeof(options) === 'object' ? options : {};
89
- if (typeof options === 'string') {
90
- config.fileName = options;
91
- }
92
- var fileName = config.fileName,
93
- type = config.type,
94
- dataType = config.dataType,
95
- transformRequest = config.transformRequest,
96
- transformResponse = config.transformResponse;
97
-
98
- /** @type {Blob|undefined} */
99
- var payload;
100
-
101
- // dataURLs、blob url、url、string
102
- if (typeof data === 'string') {
103
- if (!dataType && /^blob:.*?\/.*/.test(data)) {
104
- // blob url
105
- saver(data, fileName);
106
- return Promise.resolve();
107
- } else if (!dataType && /^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(data)) {
108
- // dataURLs
109
- payload = dataURLToBlob(data);
110
- } else if (dataType === 'url' || !dataType && isUrl(data)) {
111
- // url
112
- // 包装为异步方法
113
- /** @type {(opts: AjaxOptions)=>Promise<AjaxOptions>} */
114
- var asyncTransformRequest = function asyncTransformRequest(opts) {
115
- // 请求前配置调整
116
- var tempOptions = typeof transformRequest === 'function' ? transformRequest(opts) : opts;
117
- // @ts-ignore
118
- return isPromiseLike(tempOptions) ? tempOptions : Promise.resolve(tempOptions);
119
- };
120
- /** @type {(res: Blob)=>Promise<Blob>} */
121
- var asyncTransformResponse = function asyncTransformResponse(res) {
122
- var tempRes = typeof transformResponse === 'function' ? transformResponse(res) : res;
123
- // @ts-ignore
124
- return isPromiseLike(tempRes) ? tempRes : Promise.resolve(tempRes);
125
- };
126
-
127
- // 此处如果使用 async/await 语法糖,编译后的umd代码过大
128
- return asyncTransformRequest({
129
- responseType: 'blob'
130
- }).then(function (ajaxOptions) {
131
- return ajax(data, ajaxOptions).then(function (e) {
132
- // @ts-ignore
133
- return asyncTransformResponse(e.target.response).then(function (res) {
134
- var currentFileName = fileName || data.split("?")[0].split("#")[0].split("/").pop();
135
- return download(res, {
136
- fileName: currentFileName,
137
- type: type || (isBlob(res) ? res.type : undefined)
138
- });
139
- });
24
+ return __awaiter(this, void 0, void 0, function () {
25
+ var config, fileName, type, dataType, transformRequest, transformResponse, payload, asyncTransformRequest, asyncTransformResponse, ajaxOptions, ev, res, currentFileName, url;
26
+ return __generator(this, function (_a) {
27
+ switch (_a.label) {
28
+ case 0:
29
+ config = typeof options === 'object' ? options : {};
30
+ if (typeof options === 'string') {
31
+ config.fileName = options;
32
+ }
33
+ fileName = config.fileName, type = config.type, dataType = config.dataType, transformRequest = config.transformRequest, transformResponse = config.transformResponse;
34
+ if (!(typeof data === 'string')) return [3, 8];
35
+ if (!(!dataType && /^blob:.*?\/.*/.test(data))) return [3, 1];
36
+ saver(data, fileName);
37
+ return [2, Promise.resolve()];
38
+ case 1:
39
+ if (!(!dataType && /^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(data))) return [3, 2];
40
+ payload = dataURLToBlob(data);
41
+ return [3, 7];
42
+ case 2:
43
+ if (!(dataType === 'url' || (!dataType && isUrl(data)))) return [3, 6];
44
+ asyncTransformRequest = function (opts) {
45
+ var tempOptions = typeof transformRequest === 'function' ? transformRequest(opts) : opts;
46
+ return isPromiseLike(tempOptions) ? tempOptions : Promise.resolve(tempOptions);
47
+ };
48
+ asyncTransformResponse = function (res) {
49
+ var tempRes = typeof transformResponse === 'function' ? transformResponse(res) : res;
50
+ return isPromiseLike(tempRes) ? tempRes : Promise.resolve(tempRes);
51
+ };
52
+ return [4, asyncTransformRequest({ responseType: 'blob' })];
53
+ case 3:
54
+ ajaxOptions = _a.sent();
55
+ return [4, ajax(data, ajaxOptions)];
56
+ case 4:
57
+ ev = _a.sent();
58
+ return [4, asyncTransformResponse(ev.target.response)];
59
+ case 5:
60
+ res = _a.sent();
61
+ currentFileName = fileName || data.split('?')[0].split('#')[0].split('/').pop();
62
+ return [2, download(res, { fileName: currentFileName, type: type || (isBlob(res) ? res.type : undefined) })];
63
+ case 6:
64
+ payload = new Blob([data], { type: type || 'text/plain' });
65
+ _a.label = 7;
66
+ case 7: return [3, 9];
67
+ case 8:
68
+ if (data instanceof Blob) {
69
+ payload = data;
70
+ }
71
+ _a.label = 9;
72
+ case 9:
73
+ if (!payload) {
74
+ payload = new Blob([data], { type: type });
75
+ }
76
+ if (navigator.msSaveBlob) {
77
+ navigator.msSaveBlob(payload, fileName || 'download');
78
+ }
79
+ else {
80
+ url = URL.createObjectURL(payload);
81
+ saver(url, fileName);
82
+ URL.revokeObjectURL(url);
83
+ }
84
+ return [2, Promise.resolve()];
85
+ }
140
86
  });
141
- });
142
- } else {
143
- // string
144
- payload = new Blob([data], {
145
- type: type || 'text/plain'
146
- });
147
- }
148
- } else if (isBlob(data)) {
149
- // @ts-ignore
150
- payload = data;
151
- }
152
-
153
- // html、TypedArray
154
- if (!(payload instanceof Blob)) {
155
- payload = new Blob([data], {
156
- type: type
157
87
  });
158
- }
159
-
160
- // @ts-ignore
161
- if (navigator.msSaveBlob) {
162
- // @ts-ignore
163
- navigator.msSaveBlob(payload, fileName || 'download');
164
- } else {
165
- var url = URL.createObjectURL(payload);
166
- saver(url, fileName);
167
- URL.revokeObjectURL(url);
168
- }
169
- return Promise.resolve();
170
88
  }
171
- export default download;
89
+
90
+ export { download as default };
package/esm/fileReader.js CHANGED
@@ -1,67 +1,21 @@
1
1
  var FileReaderMethodMap = {
2
- arrayBuffer: 'readAsArrayBuffer',
3
- binaryString: 'readAsBinaryString',
4
- dataURL: 'readAsDataURL',
5
- text: 'readAsText'
2
+ arrayBuffer: 'readAsArrayBuffer',
3
+ binaryString: 'readAsBinaryString',
4
+ dataURL: 'readAsDataURL',
5
+ text: 'readAsText'
6
6
  };
7
-
8
- /**
9
- * @overload
10
- * @param {Blob} blob
11
- * @param {'arrayBuffer'} type
12
- * @returns {Promise<ArrayBuffer>}
13
- */
14
-
15
- /**
16
- * @overload
17
- * @param {Blob} blob
18
- * @param {'binaryString'|'binaryString'|'dataURL'|'text'} [type='dataURL']
19
- * @returns {Promise<string>}
20
- */
21
-
22
- /**
23
- * 读取 Blob 或 File 对象,可以将 Blob 转为 Base64/String/ArrayBuffer<br/><br/>
24
- *
25
- * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
26
- *
27
- * @static
28
- * @alias module:Processor.fileReader
29
- * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader|FileReader}
30
- * @since 4.16.0
31
- * @param {Blob} blob Blob 或 File 对象
32
- * @param {'arrayBuffer'|'binaryString'|'dataURL'|'text'} [type='dataURL'] Blob 或 File 对象
33
- * @returns {Promise<string|ArrayBuffer>} 文件的内容
34
- * @example
35
- * const aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
36
- * const htmlBlob = new Blob(aFileParts, { type: 'text/html' }); // 得到 blob
37
- *
38
- * fileReader(htmlBlob).then(data=>{
39
- * console.log(data); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
40
- * });
41
- *
42
- * const textBlob = new Blob(aFileParts, { type: 'text/plain' });
43
- *
44
- * fileReader(textBlob, 'text').then(data=>{
45
- * console.log(data); // <a id="a"><b id="b">hey!</b></a>
46
- * });
47
- */
48
- function fileReader(blob) {
49
- var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'dataURL';
50
- var method = FileReaderMethodMap[type];
51
- if (!method) {
52
- method = FileReaderMethodMap.dataURL;
53
- }
54
- return new Promise(function (resolve, reject) {
55
- var reader = new FileReader();
56
- // @ts-ignore
57
- reader[method](blob);
58
- // @ts-ignore
59
- reader.onload = function () {
60
- return resolve(reader.result);
61
- };
62
- reader.onerror = function (error) {
63
- return reject(error);
64
- };
65
- });
7
+ function fileReader(blob, type) {
8
+ if (type === void 0) { type = 'dataURL'; }
9
+ var method = FileReaderMethodMap[type];
10
+ if (!method) {
11
+ method = FileReaderMethodMap.dataURL;
12
+ }
13
+ return new Promise(function (resolve, reject) {
14
+ var reader = new FileReader();
15
+ reader[method](blob);
16
+ reader.onload = function () { return resolve(reader.result); };
17
+ reader.onerror = function (error) { return reject(error); };
18
+ });
66
19
  }
67
- export default fileReader;
20
+
21
+ export { fileReader as default };
package/esm/filterTree.js CHANGED
@@ -1,61 +1,29 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
- import { isObject } from "./utils/type";
1
+ import { __assign } from 'tslib';
2
+ import isObject from './utils/type/isObject.js';
5
3
 
6
- /**
7
- * 过滤/筛选树节点。<br/><br/>如果某节点被过滤掉,它的子节点也一并抛弃
8
- *
9
- * @static
10
- * @alias module:Tree.filterTree
11
- * @since 4.15.0
12
- * @template {any} T
13
- * @template {(item: T) => boolean} F
14
- * @param {T[]} tree 树结构数据
15
- * @param {F} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 Truthy ,结果将包含该节点
16
- * @param {string} [childrenField='children'] 子级字段名
17
- * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
18
- * @returns {T[]}
19
- * @example
20
- * 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" }] }];
21
- *
22
- * filterTree(menus, item=>item.name.indexOf('管理') > -1);
23
- * // [{"id":"2","name":"交易管理","code":"trade","pid":null,"children":[]},{"id":"5","name":"权限管理","code":"authorization","pid":null,"children":[{"id":"6","name":"角色管理","code":"authorization-1","pid":"5"},{"id":"7","name":"用户管理","code":"authorization-2","pid":"5"}]}]
24
- *
25
- * // 如果某节点被过滤掉,它的子节点也一并抛弃
26
- * filterTree(menus, item=>item.id === '7');
27
- * // []
28
- *
29
- * filterTree(menus, item=>item.id === 'not found');
30
- * // []
31
- */
32
- function filterTree(tree, predicate) {
33
- var childrenField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
34
- var nodeAssign = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'spread';
35
- /** @type {T[]} */
36
- var result = [];
37
- if (!Array.isArray(tree)) {
38
- return result;
39
- }
40
- tree.forEach(function (item) {
41
- var newItem = item;
42
- if (isObject(item)) {
43
- // @ts-ignore
44
- newItem = nodeAssign === 'spread' ? _objectSpread({}, item) : item;
4
+ function filterTree(tree, predicate, childrenField, nodeAssign) {
5
+ if (childrenField === void 0) { childrenField = 'children'; }
6
+ if (nodeAssign === void 0) { nodeAssign = 'spread'; }
7
+ var result = [];
8
+ if (!Array.isArray(tree)) {
9
+ return result;
45
10
  }
46
- if (predicate(newItem)) {
47
- if (isObject(newItem)) {
48
- /** @type {T[]|undefined} */
49
- // @ts-ignore
50
- var childs = newItem[childrenField];
51
- if (Array.isArray(childs) && childs.length > 0) {
52
- // @ts-ignore
53
- newItem[childrenField] = filterTree(childs, predicate, childrenField, nodeAssign);
11
+ tree.forEach(function (item) {
12
+ var newItem = item;
13
+ if (isObject(item)) {
14
+ newItem = nodeAssign === 'spread' ? __assign({}, item) : item;
54
15
  }
55
- }
56
- result.push(newItem);
57
- }
58
- });
59
- return result;
16
+ if (predicate(newItem)) {
17
+ if (isObject(newItem)) {
18
+ var childs = newItem[childrenField];
19
+ if (Array.isArray(childs) && childs.length > 0) {
20
+ newItem[childrenField] = filterTree(childs, predicate, childrenField, nodeAssign);
21
+ }
22
+ }
23
+ result.push(newItem);
24
+ }
25
+ });
26
+ return result;
60
27
  }
61
- export default filterTree;
28
+
29
+ export { filterTree as default };
@@ -1,74 +1,44 @@
1
- import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
3
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
4
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
5
- import { isObject } from "./utils/type";
1
+ import { __values, __spreadArray, __read } from 'tslib';
2
+ import isObject from './utils/type/isObject.js';
6
3
 
7
- /**
8
- * 查找树结构数据节点
9
- *
10
- * @static
11
- * @alias module:Tree.findTreeNode
12
- * @since 4.14.0
13
- * @template {any} T
14
- * @template {(item: T) => boolean} F
15
- * @param {T[]} tree 树结构数据
16
- * @param {F} predicate 遍历每一项执行的函数,参数是当前遍历到的节点数据,如果返回 Truthy ,将返回该节点
17
- * @param {string} [childrenField='children'] 子级字段名
18
- * @returns {T|undefined}
19
- * @example
20
- * 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" }] }];
21
- *
22
- * findTreeNode(menus, item=>item.id === '2');
23
- * // {"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"}]}]}
24
- *
25
- * findTreeNode(menus, item=>item.id === '7');
26
- * // {"id":"7","name":"用户管理","code":"authorization-2","pid":"5"}
27
- *
28
- * findTreeNode(menus, item=>item.id === 'not found');
29
- * // undefined
30
- */
31
- function findTreeNode(tree, predicate) {
32
- var childrenField = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';
33
- var stack = [];
34
-
35
- /** @type {T|undefined} */
36
- var node;
37
- if (!Array.isArray(tree)) {
38
- return node;
39
- }
40
- var _iterator = _createForOfIteratorHelper(tree),
41
- _step;
42
- try {
43
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
44
- var item = _step.value;
45
- stack.push(item);
46
- while (stack.length) {
47
- /** @type {T} */
48
- // @ts-ignore
49
- var temp = stack.pop();
50
- if (predicate(temp)) {
51
- node = temp;
52
- break;
4
+ function findTreeNode(tree, predicate, childrenField) {
5
+ var e_1, _a;
6
+ if (childrenField === void 0) { childrenField = 'children'; }
7
+ var stack = [];
8
+ var node;
9
+ if (!Array.isArray(tree)) {
10
+ return node;
11
+ }
12
+ try {
13
+ for (var tree_1 = __values(tree), tree_1_1 = tree_1.next(); !tree_1_1.done; tree_1_1 = tree_1.next()) {
14
+ var item = tree_1_1.value;
15
+ stack.push(item);
16
+ while (stack.length) {
17
+ var temp = stack.pop();
18
+ if (predicate(temp)) {
19
+ node = temp;
20
+ break;
21
+ }
22
+ if (isObject(temp)) {
23
+ var childs = temp[childrenField];
24
+ if (Array.isArray(childs) && childs.length > 0) {
25
+ stack.push.apply(stack, __spreadArray([], __read(childs), false));
26
+ }
27
+ }
28
+ }
29
+ if (node) {
30
+ break;
31
+ }
53
32
  }
54
- if (isObject(temp)) {
55
- /** @type {T[]} */
56
- // @ts-ignore
57
- var childs = temp[childrenField];
58
- if (Array.isArray(childs) && childs.length > 0) {
59
- stack.push.apply(stack, _toConsumableArray(childs));
60
- }
33
+ }
34
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
35
+ finally {
36
+ try {
37
+ if (tree_1_1 && !tree_1_1.done && (_a = tree_1.return)) _a.call(tree_1);
61
38
  }
62
- }
63
- if (node) {
64
- break;
65
- }
39
+ finally { if (e_1) throw e_1.error; }
66
40
  }
67
- } catch (err) {
68
- _iterator.e(err);
69
- } finally {
70
- _iterator.f();
71
- }
72
- return node;
41
+ return node;
73
42
  }
74
- export default findTreeNode;
43
+
44
+ export { findTreeNode as default };