util-helpers 4.21.4 → 4.21.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/esm/VERSION.js CHANGED
@@ -1,4 +1,4 @@
1
- var VERSION = "4.21.4";
1
+ var VERSION = "4.21.6";
2
2
  var VERSION$1 = VERSION;
3
3
 
4
4
  export { VERSION$1 as default };
@@ -1,5 +1,6 @@
1
1
  import { toNumber } from 'ut2';
2
2
  import loadImageWithBlob from './loadImageWithBlob.js';
3
+ import { nativeUndefined } from './utils/native.js';
3
4
 
4
5
  function canvasToBlob(canvas, type, quality) {
5
6
  return new Promise(function (resolve) {
@@ -8,7 +9,7 @@ function canvasToBlob(canvas, type, quality) {
8
9
  }, type, quality);
9
10
  });
10
11
  }
11
- function compressImage(img, options) {
12
+ var compressImage = function (img, options) {
12
13
  if (options === void 0) { options = {}; }
13
14
  return new Promise(function (resolve, reject) {
14
15
  var width = options.width, height = options.height, rotate = options.rotate, _a = options.offset, offset = _a === void 0 ? [0, 0] : _a, _b = options.cacheImage, cacheImage = _b === void 0 ? true : _b, _c = options.background, background = _c === void 0 ? '#fff' : _c, canvasWidth = options.canvasWidth, canvasHeight = options.canvasHeight, _d = options.format, format = _d === void 0 ? 'blob' : _d, _e = options.type, type = _e === void 0 ? 'image/jpeg' : _e, _f = options.quality, quality = _f === void 0 ? 0.8 : _f, beforeCompress = options.beforeCompress, beforeDraw = options.beforeDraw, afterDraw = options.afterDraw, ajaxOptions = options.ajaxOptions;
@@ -41,7 +42,7 @@ function compressImage(img, options) {
41
42
  ctx.fillRect(0, 0, canvas.width, canvas.height);
42
43
  }
43
44
  var internalOffset = [0, 0];
44
- if (rotate !== undefined) {
45
+ if (rotate !== nativeUndefined) {
45
46
  ctx.translate(image.width / 2, image.height / 2);
46
47
  internalOffset = [-image.width / 2, -image.height / 2];
47
48
  ctx.rotate((rotate * Math.PI) / 180);
@@ -65,6 +66,7 @@ function compressImage(img, options) {
65
66
  })
66
67
  .catch(reject);
67
68
  });
68
- }
69
+ };
70
+ var compressImage$1 = compressImage;
69
71
 
70
- export { compressImage as default };
72
+ export { compressImage$1 as default };
package/esm/download.js CHANGED
@@ -3,7 +3,7 @@ import { isBlob, isPromiseLike } from 'ut2';
3
3
  import dataURLToBlob from './dataURLToBlob.js';
4
4
  import isUrl from './isUrl.js';
5
5
  import ajax from './ajax.js';
6
- import { createObjectURL, revokeObjectURL } from './utils/native.js';
6
+ import { createObjectURL, revokeObjectURL, nativeUndefined } from './utils/native.js';
7
7
 
8
8
  function saver(blobUrl, fileName) {
9
9
  if (fileName === void 0) { fileName = ''; }
@@ -59,7 +59,7 @@ function download(data, options) {
59
59
  case 5:
60
60
  res = _a.sent();
61
61
  currentFileName = fileName || data.split('?')[0].split('#')[0].split('/').pop();
62
- return [2, download(res, { fileName: currentFileName, type: type || (isBlob(res) ? res.type : undefined) })];
62
+ return [2, download(res, { fileName: currentFileName, type: type || (isBlob(res) ? res.type : nativeUndefined) })];
63
63
  case 6:
64
64
  payload = new Blob([data], { type: type || 'text/plain' });
65
65
  _a.label = 7;
package/esm/fileReader.js CHANGED
@@ -4,7 +4,7 @@ var FileReaderMethodMap = {
4
4
  dataURL: 'readAsDataURL',
5
5
  text: 'readAsText'
6
6
  };
7
- function fileReader(blob, type) {
7
+ var fileReader = function (blob, type) {
8
8
  if (type === void 0) { type = 'dataURL'; }
9
9
  var method = FileReaderMethodMap[type];
10
10
  if (!method) {
@@ -16,6 +16,7 @@ function fileReader(blob, type) {
16
16
  reader.onload = function () { return resolve(reader.result); };
17
17
  reader.onerror = function (error) { return reject(error); };
18
18
  });
19
- }
19
+ };
20
+ var fileReader$1 = fileReader;
20
21
 
21
- export { fileReader as default };
22
+ export { fileReader$1 as default };
package/esm/index.js CHANGED
@@ -64,6 +64,6 @@ export { default as findTreeSelect } from './findTreeSelect.js';
64
64
  export { setDisableWarning } from './utils/config.js';
65
65
  export { default as VERSION } from './VERSION.js';
66
66
 
67
- var version = "4.21.4";
67
+ var version = "4.21.6";
68
68
 
69
69
  export { version };
package/esm/isChinese.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { toString } from 'ut2';
2
- import { objectValues } from './utils/native.js';
2
+ import { objectValues, nativeUndefined } from './utils/native.js';
3
3
 
4
4
  var chineseDictionary = {
5
5
  chineseBasic: '[\u4e00-\u9fa5]',
@@ -29,7 +29,7 @@ function isChinese(value, options) {
29
29
  var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
30
30
  var hasExtend = useExtend && supportRegExpUnicode;
31
31
  var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
32
- var flag = hasExtend ? 'u' : undefined;
32
+ var flag = hasExtend ? 'u' : nativeUndefined;
33
33
  var reg = new RegExp(resultRegExp, flag);
34
34
  return reg.test(valueStr);
35
35
  }
@@ -0,0 +1,98 @@
1
+ var EmitterPro = /** @class */ (function () {
2
+ function EmitterPro() {
3
+ this.handlers = {};
4
+ }
5
+ EmitterPro.prototype.eventNames = function () {
6
+ var _a;
7
+ var symbols = ((_a = Object.getOwnPropertySymbols) === null || _a === void 0 ? void 0 : _a.call(Object, this.handlers)) || [];
8
+ var keys = Object.keys(this.handlers);
9
+ return keys.concat(symbols);
10
+ };
11
+ EmitterPro.prototype.rawListeners = function (eventName) {
12
+ var handler = this.handlers[eventName];
13
+ return handler ? handler.map(function (item) { return item.raw; }) : [];
14
+ };
15
+ EmitterPro.prototype.listeners = function (eventName) {
16
+ var handler = this.handlers[eventName];
17
+ return handler ? handler.map(function (item) { return item.wrap; }) : [];
18
+ };
19
+ EmitterPro.prototype.hasListener = function (eventName, listener) {
20
+ return this.rawListeners(eventName).some(function (item) { return item === listener; });
21
+ };
22
+ EmitterPro.prototype._on = function (eventName, raw, wrap, context, dir) {
23
+ if (context === void 0) { context = null; }
24
+ if (dir === void 0) { dir = 1; }
25
+ var currentListener = { raw: raw, wrap: wrap, context: context };
26
+ if (!this.handlers[eventName]) {
27
+ this.handlers[eventName] = [currentListener];
28
+ }
29
+ else {
30
+ var appendMethod = dir === 1 ? 'push' : 'unshift';
31
+ this.handlers[eventName][appendMethod](currentListener);
32
+ }
33
+ return this;
34
+ };
35
+ EmitterPro.prototype.prependListener = function (eventName, listener, context) {
36
+ return this._on(eventName, listener, listener, context, 0);
37
+ };
38
+ EmitterPro.prototype.on = function (eventName, listener, context) {
39
+ return this._on(eventName, listener, listener, context);
40
+ };
41
+ EmitterPro.prototype._wrapOnce = function (eventName, listener, context) {
42
+ var _this = this;
43
+ if (context === void 0) { context = null; }
44
+ var wrap = (function () {
45
+ var args = [];
46
+ for (var _i = 0; _i < arguments.length; _i++) {
47
+ args[_i] = arguments[_i];
48
+ }
49
+ listener.apply(context, args);
50
+ _this.off(eventName, wrap);
51
+ });
52
+ return wrap;
53
+ };
54
+ EmitterPro.prototype.once = function (eventName, listener, context) {
55
+ var wrap = this._wrapOnce(eventName, listener, context);
56
+ return this._on(eventName, listener, wrap, context);
57
+ };
58
+ EmitterPro.prototype.prependOnceListener = function (eventName, listener, context) {
59
+ var wrap = this._wrapOnce(eventName, listener, context);
60
+ return this._on(eventName, listener, wrap, context, 0);
61
+ };
62
+ EmitterPro.prototype.off = function (eventName, listener) {
63
+ var handler = this.handlers[eventName];
64
+ if (handler) {
65
+ if (listener) {
66
+ var index = handler.findIndex(function (item) { return item.wrap === listener || item.raw === listener; });
67
+ if (index !== -1) {
68
+ handler.splice(index, 1);
69
+ }
70
+ }
71
+ else {
72
+ delete this.handlers[eventName];
73
+ }
74
+ }
75
+ return this;
76
+ };
77
+ EmitterPro.prototype.offAll = function () {
78
+ this.handlers = {};
79
+ return this;
80
+ };
81
+ EmitterPro.prototype.emit = function (eventName) {
82
+ var args = [];
83
+ for (var _i = 1; _i < arguments.length; _i++) {
84
+ args[_i - 1] = arguments[_i];
85
+ }
86
+ var handler = this.handlers[eventName];
87
+ if (handler && handler.length > 0) {
88
+ handler.forEach(function (listener) {
89
+ listener.wrap.apply(listener.context, args);
90
+ });
91
+ return true;
92
+ }
93
+ return false;
94
+ };
95
+ return EmitterPro;
96
+ }());
97
+
98
+ export { EmitterPro as default };
package/esm/safeDate.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { __spreadArray, __read } from 'tslib';
2
2
 
3
- function safeDate(value) {
3
+ var safeDate = function (value) {
4
4
  var args = [];
5
5
  for (var _i = 1; _i < arguments.length; _i++) {
6
6
  args[_i - 1] = arguments[_i];
@@ -10,6 +10,7 @@ function safeDate(value) {
10
10
  return new (Date.bind.apply(Date, __spreadArray([void 0, safeValue], __read(args), false)))();
11
11
  }
12
12
  return typeof safeValue === 'undefined' ? new Date() : new Date(safeValue);
13
- }
13
+ };
14
+ var safeDate$1 = safeDate;
14
15
 
15
- export { safeDate as default };
16
+ export { safeDate$1 as default };
@@ -1,5 +1,5 @@
1
1
  import { __extends, __assign } from 'tslib';
2
- import EmitterPro from '../node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js';
2
+ import EmitterPro from '../node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js';
3
3
  import { forEach } from 'ut2';
4
4
 
5
5
  var Cache = (function (_super) {
@@ -1,9 +1,10 @@
1
1
  import { constant, noop } from 'ut2';
2
2
  import { URLExisted } from './setup.js';
3
3
 
4
+ var nativeUndefined = void 0;
4
5
  var objectKeys = Object.keys;
5
6
  var objectValues = Object.values;
6
7
  var createObjectURL = URLExisted ? URL.createObjectURL : constant('');
7
8
  var revokeObjectURL = URLExisted ? URL.revokeObjectURL : noop;
8
9
 
9
- export { createObjectURL, objectKeys, objectValues, revokeObjectURL };
10
+ export { createObjectURL, nativeUndefined, objectKeys, objectValues, revokeObjectURL };
package/lib/VERSION.js CHANGED
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var VERSION = "4.21.4";
3
+ var VERSION = "4.21.6";
4
4
  var VERSION$1 = VERSION;
5
5
 
6
6
  module.exports = VERSION$1;
@@ -2,6 +2,7 @@
2
2
 
3
3
  var ut2 = require('ut2');
4
4
  var loadImageWithBlob = require('./loadImageWithBlob.js');
5
+ var native = require('./utils/native.js');
5
6
 
6
7
  function canvasToBlob(canvas, type, quality) {
7
8
  return new Promise(function (resolve) {
@@ -10,7 +11,7 @@ function canvasToBlob(canvas, type, quality) {
10
11
  }, type, quality);
11
12
  });
12
13
  }
13
- function compressImage(img, options) {
14
+ var compressImage = function (img, options) {
14
15
  if (options === void 0) { options = {}; }
15
16
  return new Promise(function (resolve, reject) {
16
17
  var width = options.width, height = options.height, rotate = options.rotate, _a = options.offset, offset = _a === void 0 ? [0, 0] : _a, _b = options.cacheImage, cacheImage = _b === void 0 ? true : _b, _c = options.background, background = _c === void 0 ? '#fff' : _c, canvasWidth = options.canvasWidth, canvasHeight = options.canvasHeight, _d = options.format, format = _d === void 0 ? 'blob' : _d, _e = options.type, type = _e === void 0 ? 'image/jpeg' : _e, _f = options.quality, quality = _f === void 0 ? 0.8 : _f, beforeCompress = options.beforeCompress, beforeDraw = options.beforeDraw, afterDraw = options.afterDraw, ajaxOptions = options.ajaxOptions;
@@ -43,7 +44,7 @@ function compressImage(img, options) {
43
44
  ctx.fillRect(0, 0, canvas.width, canvas.height);
44
45
  }
45
46
  var internalOffset = [0, 0];
46
- if (rotate !== undefined) {
47
+ if (rotate !== native.nativeUndefined) {
47
48
  ctx.translate(image.width / 2, image.height / 2);
48
49
  internalOffset = [-image.width / 2, -image.height / 2];
49
50
  ctx.rotate((rotate * Math.PI) / 180);
@@ -67,6 +68,7 @@ function compressImage(img, options) {
67
68
  })
68
69
  .catch(reject);
69
70
  });
70
- }
71
+ };
72
+ var compressImage$1 = compressImage;
71
73
 
72
- module.exports = compressImage;
74
+ module.exports = compressImage$1;
package/lib/download.js CHANGED
@@ -61,7 +61,7 @@ function download(data, options) {
61
61
  case 5:
62
62
  res = _a.sent();
63
63
  currentFileName = fileName || data.split('?')[0].split('#')[0].split('/').pop();
64
- return [2, download(res, { fileName: currentFileName, type: type || (ut2.isBlob(res) ? res.type : undefined) })];
64
+ return [2, download(res, { fileName: currentFileName, type: type || (ut2.isBlob(res) ? res.type : native.nativeUndefined) })];
65
65
  case 6:
66
66
  payload = new Blob([data], { type: type || 'text/plain' });
67
67
  _a.label = 7;
package/lib/fileReader.js CHANGED
@@ -6,7 +6,7 @@ var FileReaderMethodMap = {
6
6
  dataURL: 'readAsDataURL',
7
7
  text: 'readAsText'
8
8
  };
9
- function fileReader(blob, type) {
9
+ var fileReader = function (blob, type) {
10
10
  if (type === void 0) { type = 'dataURL'; }
11
11
  var method = FileReaderMethodMap[type];
12
12
  if (!method) {
@@ -18,6 +18,7 @@ function fileReader(blob, type) {
18
18
  reader.onload = function () { return resolve(reader.result); };
19
19
  reader.onerror = function (error) { return reject(error); };
20
20
  });
21
- }
21
+ };
22
+ var fileReader$1 = fileReader;
22
23
 
23
- module.exports = fileReader;
24
+ module.exports = fileReader$1;
package/lib/index.js CHANGED
@@ -66,7 +66,7 @@ var findTreeSelect = require('./findTreeSelect.js');
66
66
  var config = require('./utils/config.js');
67
67
  var VERSION = require('./VERSION.js');
68
68
 
69
- exports.version = "4.21.4";
69
+ exports.version = "4.21.6";
70
70
 
71
71
  exports.isMobile = isMobile;
72
72
  exports.isTelephone = isTelephone;
package/lib/isChinese.js CHANGED
@@ -31,7 +31,7 @@ function isChinese(value, options) {
31
31
  var extendRegExp = loose ? looseChineseExtendRegExp : chineseExtendRegExp;
32
32
  var hasExtend = useExtend && supportRegExpUnicode;
33
33
  var resultRegExp = hasExtend ? extendRegExp : basicRegExp;
34
- var flag = hasExtend ? 'u' : undefined;
34
+ var flag = hasExtend ? 'u' : native.nativeUndefined;
35
35
  var reg = new RegExp(resultRegExp, flag);
36
36
  return reg.test(valueStr);
37
37
  }
@@ -0,0 +1,100 @@
1
+ 'use strict';
2
+
3
+ exports.default = /** @class */ (function () {
4
+ function EmitterPro() {
5
+ this.handlers = {};
6
+ }
7
+ EmitterPro.prototype.eventNames = function () {
8
+ var _a;
9
+ var symbols = ((_a = Object.getOwnPropertySymbols) === null || _a === void 0 ? void 0 : _a.call(Object, this.handlers)) || [];
10
+ var keys = Object.keys(this.handlers);
11
+ return keys.concat(symbols);
12
+ };
13
+ EmitterPro.prototype.rawListeners = function (eventName) {
14
+ var handler = this.handlers[eventName];
15
+ return handler ? handler.map(function (item) { return item.raw; }) : [];
16
+ };
17
+ EmitterPro.prototype.listeners = function (eventName) {
18
+ var handler = this.handlers[eventName];
19
+ return handler ? handler.map(function (item) { return item.wrap; }) : [];
20
+ };
21
+ EmitterPro.prototype.hasListener = function (eventName, listener) {
22
+ return this.rawListeners(eventName).some(function (item) { return item === listener; });
23
+ };
24
+ EmitterPro.prototype._on = function (eventName, raw, wrap, context, dir) {
25
+ if (context === void 0) { context = null; }
26
+ if (dir === void 0) { dir = 1; }
27
+ var currentListener = { raw: raw, wrap: wrap, context: context };
28
+ if (!this.handlers[eventName]) {
29
+ this.handlers[eventName] = [currentListener];
30
+ }
31
+ else {
32
+ var appendMethod = dir === 1 ? 'push' : 'unshift';
33
+ this.handlers[eventName][appendMethod](currentListener);
34
+ }
35
+ return this;
36
+ };
37
+ EmitterPro.prototype.prependListener = function (eventName, listener, context) {
38
+ return this._on(eventName, listener, listener, context, 0);
39
+ };
40
+ EmitterPro.prototype.on = function (eventName, listener, context) {
41
+ return this._on(eventName, listener, listener, context);
42
+ };
43
+ EmitterPro.prototype._wrapOnce = function (eventName, listener, context) {
44
+ var _this = this;
45
+ if (context === void 0) { context = null; }
46
+ var wrap = (function () {
47
+ var args = [];
48
+ for (var _i = 0; _i < arguments.length; _i++) {
49
+ args[_i] = arguments[_i];
50
+ }
51
+ listener.apply(context, args);
52
+ _this.off(eventName, wrap);
53
+ });
54
+ return wrap;
55
+ };
56
+ EmitterPro.prototype.once = function (eventName, listener, context) {
57
+ var wrap = this._wrapOnce(eventName, listener, context);
58
+ return this._on(eventName, listener, wrap, context);
59
+ };
60
+ EmitterPro.prototype.prependOnceListener = function (eventName, listener, context) {
61
+ var wrap = this._wrapOnce(eventName, listener, context);
62
+ return this._on(eventName, listener, wrap, context, 0);
63
+ };
64
+ EmitterPro.prototype.off = function (eventName, listener) {
65
+ var handler = this.handlers[eventName];
66
+ if (handler) {
67
+ if (listener) {
68
+ var index = handler.findIndex(function (item) { return item.wrap === listener || item.raw === listener; });
69
+ if (index !== -1) {
70
+ handler.splice(index, 1);
71
+ }
72
+ }
73
+ else {
74
+ delete this.handlers[eventName];
75
+ }
76
+ }
77
+ return this;
78
+ };
79
+ EmitterPro.prototype.offAll = function () {
80
+ this.handlers = {};
81
+ return this;
82
+ };
83
+ EmitterPro.prototype.emit = function (eventName) {
84
+ var args = [];
85
+ for (var _i = 1; _i < arguments.length; _i++) {
86
+ args[_i - 1] = arguments[_i];
87
+ }
88
+ var handler = this.handlers[eventName];
89
+ if (handler && handler.length > 0) {
90
+ handler.forEach(function (listener) {
91
+ listener.wrap.apply(listener.context, args);
92
+ });
93
+ return true;
94
+ }
95
+ return false;
96
+ };
97
+ return EmitterPro;
98
+ }());
99
+
100
+ module.exports = exports.default;
package/lib/safeDate.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  var tslib = require('tslib');
4
4
 
5
- function safeDate(value) {
5
+ var safeDate = function (value) {
6
6
  var args = [];
7
7
  for (var _i = 1; _i < arguments.length; _i++) {
8
8
  args[_i - 1] = arguments[_i];
@@ -12,6 +12,7 @@ function safeDate(value) {
12
12
  return new (Date.bind.apply(Date, tslib.__spreadArray([void 0, safeValue], tslib.__read(args), false)))();
13
13
  }
14
14
  return typeof safeValue === 'undefined' ? new Date() : new Date(safeValue);
15
- }
15
+ };
16
+ var safeDate$1 = safeDate;
16
17
 
17
- module.exports = safeDate;
18
+ module.exports = safeDate$1;
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var tslib = require('tslib');
4
- var emitterPro_esm = require('../node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js');
4
+ var emitterPro_esm = require('../node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js');
5
5
  var ut2 = require('ut2');
6
6
 
7
7
  var Cache = (function (_super) {
@@ -3,6 +3,7 @@
3
3
  var ut2 = require('ut2');
4
4
  var setup = require('./setup.js');
5
5
 
6
+ exports.nativeUndefined = void 0;
6
7
  exports.objectKeys = Object.keys;
7
8
  exports.objectValues = Object.values;
8
9
  exports.createObjectURL = setup.URLExisted ? URL.createObjectURL : ut2.constant('');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "util-helpers",
3
- "version": "4.21.4",
3
+ "version": "4.21.6",
4
4
  "description": "一个基于业务场景的工具方法库",
5
5
  "main": "lib/index.js",
6
6
  "module": "esm/index.js",
@@ -51,8 +51,8 @@
51
51
  },
52
52
  "homepage": "https://doly-dev.github.io/util-helpers/index.html",
53
53
  "devDependencies": {
54
- "@babel/core": "^7.24.3",
55
- "@babel/preset-env": "^7.24.3",
54
+ "@babel/core": "^7.24.4",
55
+ "@babel/preset-env": "^7.24.4",
56
56
  "@babel/preset-typescript": "^7.24.1",
57
57
  "@commitlint/cli": "^17.8.1",
58
58
  "@commitlint/config-conventional": "^17.8.1",
@@ -63,8 +63,8 @@
63
63
  "@rollup/plugin-terser": "^0.4.4",
64
64
  "@rollup/plugin-typescript": "^11.1.6",
65
65
  "@types/jest": "^29.5.12",
66
- "@typescript-eslint/eslint-plugin": "^7.3.1",
67
- "@typescript-eslint/parser": "^7.3.1",
66
+ "@typescript-eslint/eslint-plugin": "^7.7.0",
67
+ "@typescript-eslint/parser": "^7.7.0",
68
68
  "babel-jest": "^29.7.0",
69
69
  "babel-plugin-minify-replace": "^0.5.0",
70
70
  "commitizen": "^4.3.0",
@@ -72,15 +72,15 @@
72
72
  "docdash": "^2.0.2",
73
73
  "eslint": "^8.57.0",
74
74
  "husky": "^9.0.11",
75
- "inquirer": "8",
75
+ "inquirer": "^8.2.6",
76
76
  "jest": "^29.7.0",
77
77
  "jest-canvas-mock": "^2.5.2",
78
78
  "jest-environment-jsdom": "^29.7.0",
79
79
  "jsdoc": "^4.0.2",
80
80
  "lint-staged": "^13.3.0",
81
81
  "prettier": "^3.2.5",
82
- "rollup": "^4.13.0",
83
- "typescript": "^5.4.3"
82
+ "rollup": "^4.14.3",
83
+ "typescript": "^5.4.5"
84
84
  },
85
85
  "lint-staged": {
86
86
  "**/*.ts": "eslint",
@@ -92,7 +92,7 @@
92
92
  }
93
93
  },
94
94
  "dependencies": {
95
- "emitter-pro": "^1.0.3",
95
+ "emitter-pro": "^1.2.1",
96
96
  "tslib": "^2.6.2",
97
97
  "ut2": "^1.7.1"
98
98
  },
@@ -22,8 +22,70 @@ type Options = {
22
22
  cacheImage?: boolean | Parameters<typeof loadImageWithBlob>[1];
23
23
  ajaxOptions?: Parameters<typeof loadImageWithBlob>[2];
24
24
  };
25
- declare function compressImage(img: string | Blob, options: Omit<Options, 'format'> & {
26
- format: 'dataURL';
27
- }): Promise<string>;
28
- declare function compressImage(img: string | Blob, options?: Options): Promise<Blob>;
25
+ interface CompressImage {
26
+ (img: string | Blob, options: Omit<Options, 'format'> & {
27
+ format: 'dataURL';
28
+ }): Promise<string>;
29
+ (img: string | Blob, options?: Options): Promise<Blob>;
30
+ }
31
+ /**
32
+ * 压缩图片。
33
+ *
34
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
35
+ *
36
+ * <em style="font-weight: bold;">如果是半透明图片并且导出 `image/png` 格式,建议将背景变成透明 `background=transparent`,避免出现白边。注意正常图片压缩导出 `image/png` 格式后文件可能会比原图大。</em>
37
+ *
38
+ * @function
39
+ * @alias module:Other.compressImage
40
+ * @since 4.20.0
41
+ * @see {@link https://sytpwg.csb.app/ | 在线示例}
42
+ * @param {string | Blob} img 图片地址或 blob 对象
43
+ * @param {Object} [options] 配置项
44
+ * @param {number} [options.width] 自定义图片宽度,默认图片自身宽度
45
+ * @param {number} [options.height] 自定义图片高度,默认图片自身高度
46
+ * @param {number} [options.rotate] 旋转
47
+ * @param {Array | function} [options.offset=[0, 0]] x,y轴偏移值
48
+ * @param {string} [options.background=#fff] 背景颜色
49
+ * @param {number | function} [options.canvasWidth] 画布宽度,默认图片宽度
50
+ * @param {number | function} [options.canvasHeight] 画布高度,默认图片高度
51
+ * @param {'blob' | 'dataURL'} [options.format='blob'] 导出格式
52
+ * @param {string} [options.type='image/jpeg'] 图片类型
53
+ * @param {number} [options.quality=0.8] 图片质量
54
+ * @param {function} [options.beforeCompress] 图片加载完成,画布创建之前调用
55
+ * @param {function} [options.beforeDraw] 图片载入画布之前调用
56
+ * @param {function} [options.afterDraw] 图片载入画布之后调用
57
+ * @param {boolean | CacheOptions} [options.cacheImage=true] 是否使用 `loadImageWithBlob` 缓存。
58
+ * @param {AjaxOptions} [options.ajaxOptions] ajax 请求配置项,当传入的图片为字符串时才会触发请求。
59
+ * @returns {Promise<Blob | string>} blob 对象 或 data url 图片
60
+ * @example
61
+ *
62
+ * // 默认返回压缩后的 blob 对象
63
+ * compressImage(file).then(blob=>{
64
+ * // do something
65
+ * });
66
+ *
67
+ * // 设置返回格式 data url
68
+ * compressImage(file, { format: 'dataURL' }).then(url=>{
69
+ * // do something
70
+ * });
71
+ *
72
+ * // 自定义配置
73
+ * compressImage('https://dummyimage.com/200x300', {
74
+ * width: 100,
75
+ * height: 100,
76
+ * quality: 0.5,
77
+ * beforeCompress({ image, blob }){},
78
+ * beforeDraw({ image, blob, canvas, context }){}
79
+ * afterDraw({ image, blob, canvas, context }){}
80
+ * }).then(blob=>{
81
+ * // do something
82
+ * });
83
+ *
84
+ * // 支持不同形式的图片文件
85
+ * compressImage('data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=').then(blob=>{
86
+ * // do something
87
+ * });
88
+ *
89
+ */
90
+ declare const compressImage: CompressImage;
29
91
  export default compressImage;
@@ -5,6 +5,35 @@ declare const FileReaderMethodMap: {
5
5
  readonly text: "readAsText";
6
6
  };
7
7
  type ReadType = keyof typeof FileReaderMethodMap;
8
- declare function fileReader(blob: Blob, type: 'arrayBuffer'): Promise<ArrayBuffer>;
9
- declare function fileReader(blob: Blob, type?: Exclude<ReadType, 'arrayBuffer'>): Promise<string>;
8
+ interface FileReader {
9
+ (blob: Blob, type: 'arrayBuffer'): Promise<ArrayBuffer>;
10
+ (blob: Blob, type?: Exclude<ReadType, 'arrayBuffer'>): Promise<string>;
11
+ }
12
+ /**
13
+ * 读取 Blob 或 File 对象,转为 Base64/String/ArrayBuffer
14
+ *
15
+ * <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
16
+ *
17
+ * @function
18
+ * @alias module:Processor.fileReader
19
+ * @see {@link https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader | FileReader}
20
+ * @since 4.16.0
21
+ * @param {Blob} blob Blob 或 File 对象
22
+ * @param {'arrayBuffer'|'binaryString'|'dataURL'|'text'} [type='dataURL'] 读取类型
23
+ * @returns {Promise<string|ArrayBuffer>} 文件内容
24
+ * @example
25
+ * const aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
26
+ * const htmlBlob = new Blob(aFileParts, { type: 'text/html' }); // 得到 blob
27
+ *
28
+ * fileReader(htmlBlob).then(data=>{
29
+ * console.log(data); // data:text/html;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=
30
+ * });
31
+ *
32
+ * const textBlob = new Blob(aFileParts, { type: 'text/plain' });
33
+ *
34
+ * fileReader(textBlob, 'text').then(data=>{
35
+ * console.log(data); // <a id="a"><b id="b">hey!</b></a>
36
+ * });
37
+ */
38
+ declare const fileReader: FileReader;
10
39
  export default fileReader;