util-helpers 4.15.3 → 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 (53) hide show
  1. package/README.md +6 -5
  2. package/dist/util-helpers.js +452 -48
  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/index.js +4 -1
  12. package/esm/interface.doc.js +124 -0
  13. package/esm/numberToChinese.js +3 -2
  14. package/esm/parseIdCard.js +1 -1
  15. package/esm/safeDate.js +26 -9
  16. package/esm/transformFieldNames.js +2 -3
  17. package/esm/utils/config.js +1 -1
  18. package/esm/utils/type/index.js +3 -1
  19. package/esm/utils/type/isArrayBuffer.js +25 -0
  20. package/esm/utils/type/isBlob.js +27 -0
  21. package/lib/ajax.js +156 -0
  22. package/lib/blobToDataURL.js +8 -12
  23. package/lib/dataURLToBlob.js +6 -5
  24. package/lib/download.js +161 -0
  25. package/lib/fileReader.js +74 -0
  26. package/lib/index.js +22 -1
  27. package/lib/interface.doc.js +126 -0
  28. package/lib/numberToChinese.js +3 -2
  29. package/lib/parseIdCard.js +1 -1
  30. package/lib/safeDate.js +27 -10
  31. package/lib/transformFieldNames.js +1 -1
  32. package/lib/utils/config.js +1 -1
  33. package/lib/utils/type/index.js +14 -0
  34. package/lib/utils/type/isArrayBuffer.js +32 -0
  35. package/lib/utils/type/isBlob.js +34 -0
  36. package/package.json +2 -2
  37. package/types/ajax.d.ts +121 -0
  38. package/types/blobToDataURL.d.ts +5 -1
  39. package/types/download.d.ts +77 -0
  40. package/types/fileReader.d.ts +3 -0
  41. package/types/index.d.ts +4 -1
  42. package/types/numberToChinese.d.ts +3 -2
  43. package/types/parseIdCard.d.ts +2 -2
  44. package/types/safeDate.d.ts +3 -23
  45. package/types/transformFieldNames.d.ts +2 -2
  46. package/types/utils/type/index.d.ts +21 -19
  47. package/types/utils/type/isArrayBuffer.d.ts +21 -0
  48. package/types/utils/type/isBlob.d.ts +23 -0
  49. package/esm/transformFieldNames.doc.js +0 -35
  50. package/lib/transformFieldNames.doc.js +0 -42
  51. /package/esm/{transformFieldNames.type.js → interface.type.js} +0 -0
  52. /package/lib/{transformFieldNames.type.js → interface.type.js} +0 -0
  53. /package/types/{transformFieldNames.type.d.ts → interface.type.d.ts} +0 -0
@@ -1,8 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
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
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
- // 修改类型,请同步到 transformFieldNames.type.js
5
- // 修改文档,请同步到 transformFieldNames.doc.js
4
+ // 如果修改文档,请同步修改 interface.doc.js
6
5
 
7
6
  import { isObject } from './utils/type';
8
7
 
@@ -19,7 +18,7 @@ import { isObject } from './utils/type';
19
18
  * @param {F} fieldNames 字段名映射
20
19
  * @param {C} [childrenField] 子级数据字段名
21
20
  * @param {'spread'|'self'} [nodeAssign='spread'] 节点赋值方式。spread表示使用展开运算符创建新值,self表示使用自身对象。
22
- * @returns {import('./transformFieldNames.type.js').TransformFieldNames<D, F, C>}
21
+ * @returns {import('./interface.type.js').TransformFieldNames<D, F, C>}
23
22
  * @example
24
23
  *
25
24
  * const options = [{code: '1', name: 'one'},{code:'2', name:'two'}];
@@ -15,5 +15,5 @@ function setDisableWarning(bool) {
15
15
  }
16
16
 
17
17
  // eslint-disable-next-line no-undef
18
- var version = "4.15.3";
18
+ var version = "4.16.0";
19
19
  export { config, setDisableWarning, version };
@@ -1,5 +1,7 @@
1
1
  import isArguments from './isArguments';
2
2
  import isArray from './isArray';
3
+ import isArrayBuffer from './isArrayBuffer';
4
+ import isBlob from './isBlob';
3
5
  import isBoolean from './isBoolean';
4
6
  import isDate from './isDate';
5
7
  import isError from './isError';
@@ -24,4 +26,4 @@ import isUndefined from './isUndefined';
24
26
  * @ignore
25
27
  * @since 1.1.0
26
28
  */
27
- export { isArguments, isArray, isBoolean, isDate, isError, isFunction, isObject, isNull, isNaN, isNumber, isRegExp, isString, isSymbol, isMap, isWeakMap, isSet, isWeakSet, isUndefined };
29
+ export { isArguments, isArray, isArrayBuffer, isBlob, isBoolean, isDate, isError, isFunction, isObject, isNull, isNaN, isNumber, isRegExp, isString, isSymbol, isMap, isWeakMap, isSet, isWeakSet, isUndefined };
@@ -0,0 +1,25 @@
1
+ import isType from './isType';
2
+
3
+ /**
4
+ * 检查值是否为ArrayBuffer对象
5
+ *
6
+ * @static
7
+ * @alias module:Type.isArrayBuffer
8
+ * @since 4.16.0
9
+ * @param {*} value 检查值
10
+ * @returns {boolean} 是否为ArrayBuffer对象
11
+ * @example
12
+ *
13
+ * isArrayBuffer(new ArrayBuffer(8))
14
+ * // => true
15
+ *
16
+ * isArrayBuffer({})
17
+ * // => false
18
+ *
19
+ * isArrayBuffer('2012')
20
+ * // => false
21
+ */
22
+ function isArrayBuffer(value) {
23
+ return isType(value, 'ArrayBuffer');
24
+ }
25
+ export default isArrayBuffer;
@@ -0,0 +1,27 @@
1
+ import isType from './isType';
2
+
3
+ /**
4
+ * 检查值是否为Blob对象<br/><br/>
5
+ *
6
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
7
+ *
8
+ * @static
9
+ * @alias module:Type.isBlob
10
+ * @since 4.16.0
11
+ * @param {*} value 检查值
12
+ * @returns {boolean} 是否为Blob对象
13
+ * @example
14
+ *
15
+ * isBlob(new Blob(['a']))
16
+ * // => true
17
+ *
18
+ * isBlob({})
19
+ * // => false
20
+ *
21
+ * isBlob('2012')
22
+ * // => false
23
+ */
24
+ function isBlob(value) {
25
+ return isType(value, 'Blob');
26
+ }
27
+ export default isBlob;
package/lib/ajax.js ADDED
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
+ /**
9
+ * @typedef {XMLHttpRequest['onloadstart']} XMLHttpRequestEvent XMLHttpRequest 事件对象
10
+ */
11
+
12
+ /**
13
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest|XMLHttpRequest}
14
+ * @typedef {Object} AjaxOptions ajax配置项
15
+ * @property {string} [method="get"] 创建请求时使用的方法
16
+ * @property {Document | XMLHttpRequestBodyInit | null} [data=null] 请求体被发送的数据
17
+ * @property {Object.<string, string>} [headers] 自定义请求头
18
+ * @property {XMLHttpRequestResponseType} [responseType] 响应类型
19
+ * @property {number} [timeout] 请求超时的毫秒数
20
+ * @property {boolean} [withCredentials=false] 跨域请求时是否需要使用凭证
21
+ * @property {boolean} [async=true] 是否异步执行操作
22
+ * @property {string|null} [user=null] 用户名,用于认证用途
23
+ * @property {string|null} [password=null] 密码,用于认证用途
24
+ * @property {XMLHttpRequestEvent} [onLoadStart] 接收到响应数据时触发
25
+ * @property {XMLHttpRequestEvent} [onProgress] 请求接收到更多数据时,周期性地触发
26
+ * @property {XMLHttpRequestEvent} [onAbort] 当 request 被停止时触发,例如当程序调用 XMLHttpRequest.abort() 时
27
+ * @property {XMLHttpRequestEvent} [onTimeout] 在预设时间内没有接收到响应时触发
28
+ * @property {XMLHttpRequestEvent} [onError] 当 request 遭遇错误时触发
29
+ * @property {XMLHttpRequestEvent} [onLoad] 请求成功完成时触发
30
+ * @property {XMLHttpRequestEvent} [onLoadEnd] 请求结束时触发,无论请求成功 (load) 还是失败 (abort 或 error)
31
+ */
32
+
33
+ /**
34
+ * 请求<br/><br/>
35
+ *
36
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
37
+ *
38
+ * @static
39
+ * @alias module:Other.ajax
40
+ * @since 4.16.0
41
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest|XMLHttpRequest}
42
+ * @param {string} url 地址
43
+ * @param {AjaxOptions} [options] 配置项
44
+ * @returns {Promise<ProgressEvent<EventTarget>>}
45
+ * @example
46
+ * ajax('/somefile').then(res=>{
47
+ * // do something
48
+ * });
49
+ *
50
+ * ajax('/api', { method: 'post' }).then(res=>{
51
+ * // do something
52
+ * });
53
+ */
54
+ function ajax(url, options) {
55
+ var _ref = options || {},
56
+ _ref$method = _ref.method,
57
+ method = _ref$method === void 0 ? 'get' : _ref$method,
58
+ _ref$data = _ref.data,
59
+ data = _ref$data === void 0 ? null : _ref$data,
60
+ timeout = _ref.timeout,
61
+ headers = _ref.headers,
62
+ _ref$withCredentials = _ref.withCredentials,
63
+ withCredentials = _ref$withCredentials === void 0 ? false : _ref$withCredentials,
64
+ _ref$async = _ref.async,
65
+ async = _ref$async === void 0 ? true : _ref$async,
66
+ _ref$user = _ref.user,
67
+ user = _ref$user === void 0 ? null : _ref$user,
68
+ _ref$password = _ref.password,
69
+ password = _ref$password === void 0 ? null : _ref$password,
70
+ responseType = _ref.responseType,
71
+ onAbort = _ref.onAbort,
72
+ onError = _ref.onError,
73
+ onLoad = _ref.onLoad,
74
+ onLoadEnd = _ref.onLoadEnd,
75
+ onLoadStart = _ref.onLoadStart,
76
+ onProgress = _ref.onProgress,
77
+ onTimeout = _ref.onTimeout;
78
+ return new Promise(function (resolve, reject) {
79
+ var xhr = new XMLHttpRequest();
80
+ xhr.open(method.toLowerCase(), url, async, user, password);
81
+
82
+ // 设置请求超时
83
+ if (typeof timeout === 'number' && timeout > 0) {
84
+ xhr.timeout = timeout;
85
+ }
86
+
87
+ // 跨域请求时是否需要使用凭证
88
+ xhr.withCredentials = withCredentials;
89
+
90
+ // 设置响应类型
91
+ if (responseType) {
92
+ xhr.responseType = responseType;
93
+ }
94
+
95
+ // 设置请求头
96
+ if (_typeof(headers) === 'object') {
97
+ Object.keys(headers).map(function (item) {
98
+ xhr.setRequestHeader(item, headers[item]);
99
+ });
100
+ }
101
+
102
+ /**
103
+ * 请求成功异步调用
104
+ * @param {XMLHttpRequestEvent} [cb] 回调方法
105
+ */
106
+ var wrapSuccess = function wrapSuccess(cb) {
107
+ /**
108
+ * 内部方法
109
+ * @param {ProgressEvent<EventTarget>} e 事件对象
110
+ */
111
+ return function (e) {
112
+ resolve(e);
113
+ cb === null || cb === void 0 ? void 0 : cb.call(xhr, e);
114
+ };
115
+ };
116
+
117
+ /**
118
+ * 请求失败(中断/超时/失败)处理
119
+ * @param {XMLHttpRequestEvent} [cb] 回调方法
120
+ */
121
+ var wrapError = function wrapError(cb) {
122
+ /**
123
+ * 内部方法
124
+ * @param {ProgressEvent<EventTarget>} e 事件对象
125
+ */
126
+ return function (e) {
127
+ reject(e);
128
+ cb === null || cb === void 0 ? void 0 : cb.call(xhr, e);
129
+ };
130
+ };
131
+
132
+ // 事件处理
133
+ /**@type {Object.<keyof XMLHttpRequestEventTargetEventMap, XMLHttpRequestEvent | undefined>} */
134
+ var events = {
135
+ loadstart: onLoadStart,
136
+ progress: onProgress,
137
+ abort: wrapError(onAbort),
138
+ timeout: wrapError(onTimeout),
139
+ error: wrapError(onError),
140
+ load: wrapSuccess(onLoad),
141
+ loadend: onLoadEnd
142
+ };
143
+ /**@type {(keyof XMLHttpRequestEventTargetEventMap)[]} */
144
+ // @ts-ignore
145
+ var eventNames = Object.keys(events);
146
+ eventNames.map(function (item) {
147
+ var func = events[item];
148
+ if (func) {
149
+ xhr.addEventListener(item, func);
150
+ }
151
+ });
152
+ xhr.send(data);
153
+ });
154
+ }
155
+ var _default = ajax;
156
+ exports["default"] = _default;
@@ -4,17 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
+ var _fileReader = _interopRequireDefault(require("./fileReader"));
8
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
7
9
  // file、blob文件如何预览图片?
8
10
  // 方法1:将file或者blob类型文件转成base64数据,再作为src赋值给img标签
9
11
  // 方法2:使用 window.URL.createObjectURL(blob) 为blob、file 创建一个指向该参数对象的URL
10
12
 
11
13
  /**
12
- * 将 Blob 或 File 对象转成 data:URL 格式的 Base64 字符串。
14
+ * 将 Blob 或 File 对象转成 data:URL 格式的 Base64 字符串<br/><br/>
15
+ *
16
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
13
17
  *
14
18
  * @static
15
19
  * @alias module:Processor.blobToDataURL
16
20
  * @see 参考 {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader/readAsDataURL|FileReader.readAsDataURL()}
17
21
  * @since 4.1.0
22
+ * @ignore
23
+ * @deprecated 请使用 `fileReader` 方法
18
24
  * @param {Blob} blob Blob 或 File 对象
19
25
  * @returns {Promise<string>} data:URL 格式的 Base64 字符串。
20
26
  * @example
@@ -32,17 +38,7 @@ exports["default"] = void 0;
32
38
  * });
33
39
  */
34
40
  function blobToDataURL(blob) {
35
- return new Promise(function (resolve, reject) {
36
- var reader = new FileReader();
37
- reader.readAsDataURL(blob);
38
- // @ts-ignore
39
- reader.onload = function () {
40
- return resolve(reader.result);
41
- };
42
- reader.onerror = function (error) {
43
- return reject(error);
44
- };
45
- });
41
+ return (0, _fileReader["default"])(blob);
46
42
  }
47
43
  var _default = blobToDataURL;
48
44
  exports["default"] = _default;
@@ -18,17 +18,18 @@ exports["default"] = void 0;
18
18
  * dataURLToBlob(dataurl); // Blob {size: 32, type: 'text/html'}
19
19
  */
20
20
  function dataURLToBlob(dataurl) {
21
- var arr = dataurl.split(',');
22
- // @ts-ignore
23
- var mime = arr[0].match(/:(.*?);/)[1];
24
- var bstr = atob(arr[1]);
21
+ var parts = dataurl.split(',');
22
+ var meta = parts[0].substring(5).split(';');
23
+ var type = meta[0];
24
+ var decoder = meta.indexOf('base64') !== -1 ? atob : decodeURIComponent;
25
+ var bstr = decoder(parts[1]);
25
26
  var n = bstr.length;
26
27
  var u8arr = new Uint8Array(n);
27
28
  while (n--) {
28
29
  u8arr[n] = bstr.charCodeAt(n);
29
30
  }
30
31
  return new Blob([u8arr], {
31
- type: mime
32
+ type: type
32
33
  });
33
34
  }
34
35
  var _default = dataURLToBlob;
@@ -0,0 +1,161 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+ var _dataURLToBlob = _interopRequireDefault(require("./dataURLToBlob"));
8
+ var _isUrl = _interopRequireDefault(require("./isUrl"));
9
+ var _ajax = _interopRequireDefault(require("./ajax"));
10
+ var _type = require("./utils/type");
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
12
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
13
+ /**
14
+ * 下载文件
15
+ *
16
+ * @param {string} blobUrl blob 地址
17
+ * @param {string} [fileName] 文件名称
18
+ */
19
+ function saver(blobUrl, fileName) {
20
+ var anchor = document.createElement('a');
21
+ // anchor.href = decodeURIComponent(blobUrl);
22
+ anchor.href = blobUrl;
23
+ anchor.style.display = 'none';
24
+ anchor.setAttribute('download', fileName || '');
25
+
26
+ /**
27
+ * 处理点击事件,防止事件冒泡到 body/html 的点击事件。
28
+ *
29
+ * @param {MouseEvent} e 鼠标事件对象
30
+ */
31
+ function handleClick(e) {
32
+ e.stopPropagation();
33
+ anchor.removeEventListener('click', handleClick);
34
+ }
35
+ anchor.addEventListener('click', handleClick);
36
+ document.body.appendChild(anchor);
37
+ anchor.click();
38
+ document.body.removeChild(anchor);
39
+ }
40
+
41
+ /**
42
+ * @typedef {import('./ajax.js').AjaxOptions} AjaxOptions ajax 配置项
43
+ */
44
+
45
+ /**
46
+ * @callback TransformRequest
47
+ * @param {AjaxOptions} options ajax 配置项
48
+ * @returns {AjaxOptions}
49
+ */
50
+
51
+ /**
52
+ * @callback TransformResponse
53
+ * @param {Blob} res 响应的Blob对象。如果你通过 transformRequest 修改了 responseType ,该参数将是该类型响应值。
54
+ * @returns {Blob}
55
+ */
56
+
57
+ /**
58
+ * @typedef {Object} DownloadOptions 下载配置项
59
+ * @property {string} [options.fileName] 文件名称
60
+ * @property {string} [options.type] MIME 类型
61
+ * @property {'url'|'text'} [options.dataType] 手动设置数据类型,默认会根据传入的数据判断类型,主要是为了区分 url 和 text 。<br/>如果你要下载的文本是 url ,请设置 'text' ;如果你要下载的 url 是绝对/相对路径,请设置 'url' 。
62
+ * @property {TransformRequest} [options.transformRequest] 请求前触发,XHR 对象或配置调整
63
+ * @property {TransformResponse} [options.transformResponse] 请求成功后触发,在传递给 then/catch 前,允许修改响应数据
64
+ */
65
+
66
+ /**
67
+ * 下载<br/><br/>
68
+ *
69
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端,兼容 IE10+ 和现代浏览器。</em>
70
+ *
71
+ * @static
72
+ * @alias module:Other.download
73
+ * @since 4.16.0
74
+ * @see {@link https://zh.wikipedia.org/wiki/多用途互聯網郵件擴展|多用途互联网邮件扩展}
75
+ * @param {string|Blob|ArrayBuffer|Int8Array|Uint8Array|Uint8ClampedArray|Int16Array|Uint16Array|Int32Array|Uint32Array|Float32Array|Float64Array|BigInt64Array|BigUint64Array} data 字符串、blob数据或url地址
76
+ * @param {string|DownloadOptions} [options] 文件名称 或 配置项
77
+ * @returns {Promise<void>}
78
+ * @example
79
+ * // 文本
80
+ * download('hello world', 'text.txt');
81
+ *
82
+ * // 远程文件
83
+ * download('/xxx.jpg', { dataType: 'url' });
84
+ *
85
+ * // blob文件
86
+ * download(new Blob(['hello world']), 'text.txt');
87
+ *
88
+ */
89
+ function download(data, options) {
90
+ var config = _typeof(options) === 'object' ? options : {};
91
+ if (typeof options === 'string') {
92
+ config.fileName = options;
93
+ }
94
+ var fileName = config.fileName,
95
+ type = config.type,
96
+ dataType = config.dataType,
97
+ transformRequest = config.transformRequest,
98
+ transformResponse = config.transformResponse;
99
+
100
+ /** @type {Blob|undefined} */
101
+ var payload;
102
+
103
+ // dataURLs、blob url、url、string
104
+ if (typeof data === 'string') {
105
+ if (!dataType && /^blob:.*?\/.*/.test(data)) {
106
+ // blob url
107
+ saver(data, fileName);
108
+ return Promise.resolve();
109
+ } else if (!dataType && /^data:([\w+-]+\/[\w+.-]+)?[,;]/.test(data)) {
110
+ // dataURLs
111
+ payload = (0, _dataURLToBlob["default"])(data);
112
+ } else if (dataType === 'url' || !dataType && (0, _isUrl["default"])(data)) {
113
+ // url
114
+ /** @type {AjaxOptions} */
115
+ var defaultAjaxOptions = {
116
+ responseType: 'blob'
117
+ };
118
+ // 请求前配置调整
119
+ var ajaxOptions = typeof transformRequest === 'function' ? transformRequest(defaultAjaxOptions) : defaultAjaxOptions;
120
+ return (0, _ajax["default"])(data, ajaxOptions).then(function (e) {
121
+ /** @type {Blob} */
122
+ // @ts-ignore
123
+ // 响应结果调整
124
+ var res = typeof transformResponse === 'function' ? transformResponse(e.target.response) : e.target.response;
125
+ var currentFileName = fileName || data.split("?")[0].split("#")[0].split("/").pop();
126
+ return download(res, {
127
+ fileName: currentFileName,
128
+ type: type || ((0, _type.isBlob)(res) ? res.type : undefined)
129
+ });
130
+ });
131
+ } else {
132
+ // string
133
+ payload = new Blob([data], {
134
+ type: type || 'text/plain'
135
+ });
136
+ }
137
+ } else if ((0, _type.isBlob)(data)) {
138
+ // @ts-ignore
139
+ payload = data;
140
+ }
141
+
142
+ // html、TypedArray
143
+ if (!(payload instanceof Blob)) {
144
+ payload = new Blob([data], {
145
+ type: type
146
+ });
147
+ }
148
+
149
+ // @ts-ignore
150
+ if (navigator.msSaveBlob) {
151
+ // @ts-ignore
152
+ navigator.msSaveBlob(payload, fileName || 'download');
153
+ } else {
154
+ var url = URL.createObjectURL(payload);
155
+ saver(url, fileName);
156
+ URL.revokeObjectURL(url);
157
+ }
158
+ return Promise.resolve();
159
+ }
160
+ var _default = download;
161
+ exports["default"] = _default;
@@ -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/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,6 +368,7 @@ 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"));
@@ -361,10 +380,12 @@ var _minus = _interopRequireDefault(require("./minus"));
361
380
  var _times = _interopRequireDefault(require("./times"));
362
381
  var _divide = _interopRequireDefault(require("./divide"));
363
382
  var _round = _interopRequireDefault(require("./round"));
364
- var _waitTime = _interopRequireDefault(require("./waitTime"));
383
+ var _ajax = _interopRequireDefault(require("./ajax"));
365
384
  var _calculateCursorPosition = _interopRequireDefault(require("./calculateCursorPosition"));
385
+ var _download = _interopRequireDefault(require("./download"));
366
386
  var _randomString = _interopRequireDefault(require("./randomString"));
367
387
  var _strlen = _interopRequireDefault(require("./strlen"));
388
+ var _waitTime = _interopRequireDefault(require("./waitTime"));
368
389
  var _transformFieldNames = _interopRequireDefault(require("./transformFieldNames"));
369
390
  var _listToTree = _interopRequireDefault(require("./listToTree"));
370
391
  var _treeToList = _interopRequireDefault(require("./treeToList"));