util-helpers 4.21.3 → 4.21.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -33
- package/dist/util-helpers.js +88 -57
- package/dist/util-helpers.js.map +1 -1
- package/dist/util-helpers.min.js +1 -1
- package/dist/util-helpers.min.js.map +1 -1
- package/esm/VERSION.js +1 -1
- package/esm/compressImage.js +4 -3
- package/esm/fileReader.js +4 -3
- package/esm/index.js +1 -1
- package/esm/isChinese.js +11 -6
- package/esm/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js +98 -0
- package/esm/safeDate.js +4 -3
- package/esm/utils/Cache.js +1 -1
- package/esm/utils/native.js +2 -1
- package/lib/VERSION.js +1 -1
- package/lib/compressImage.js +4 -3
- package/lib/fileReader.js +4 -3
- package/lib/index.js +1 -1
- package/lib/isChinese.js +11 -6
- package/lib/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js +100 -0
- package/lib/safeDate.js +4 -3
- package/lib/utils/Cache.js +1 -1
- package/lib/utils/native.js +1 -0
- package/package.json +16 -14
- package/types/ajax.d.ts +1 -1
- package/types/compressImage.d.ts +66 -4
- package/types/fileReader.d.ts +31 -2
- package/types/filterTree.d.ts +2 -2
- package/types/findTreeNode.d.ts +2 -2
- package/types/findTreeNodes.d.ts +2 -2
- package/types/findTreeSelect.d.ts +2 -2
- package/types/formatMobile.d.ts +1 -1
- package/types/isChinese.d.ts +1 -1
- package/types/listToTree.d.ts +3 -3
- package/types/safeDate.d.ts +29 -3
- package/types/transformFieldNames.d.ts +3 -3
- package/types/treeToList.d.ts +2 -2
- package/types/utils/native.d.ts +6 -0
- package/esm/node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js +0 -72
- package/lib/node_modules/.pnpm/emitter-pro@1.0.3/node_modules/emitter-pro/dist/emitter-pro.esm.js +0 -74
package/esm/VERSION.js
CHANGED
package/esm/compressImage.js
CHANGED
|
@@ -8,7 +8,7 @@ function canvasToBlob(canvas, type, quality) {
|
|
|
8
8
|
}, type, quality);
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
|
-
function
|
|
11
|
+
var compressImage = function (img, options) {
|
|
12
12
|
if (options === void 0) { options = {}; }
|
|
13
13
|
return new Promise(function (resolve, reject) {
|
|
14
14
|
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;
|
|
@@ -65,6 +65,7 @@ function compressImage(img, options) {
|
|
|
65
65
|
})
|
|
66
66
|
.catch(reject);
|
|
67
67
|
});
|
|
68
|
-
}
|
|
68
|
+
};
|
|
69
|
+
var compressImage$1 = compressImage;
|
|
69
70
|
|
|
70
|
-
export { compressImage as default };
|
|
71
|
+
export { compressImage$1 as default };
|
package/esm/fileReader.js
CHANGED
|
@@ -4,7 +4,7 @@ var FileReaderMethodMap = {
|
|
|
4
4
|
dataURL: 'readAsDataURL',
|
|
5
5
|
text: 'readAsText'
|
|
6
6
|
};
|
|
7
|
-
function
|
|
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
package/esm/isChinese.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
import { toString } from 'ut2';
|
|
2
|
+
import { objectValues } from './utils/native.js';
|
|
2
3
|
|
|
3
4
|
var chineseDictionary = {
|
|
4
5
|
chineseBasic: '[\u4e00-\u9fa5]',
|
|
5
|
-
chineseExtend: '[\u9ea6-\
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
chineseExtend: '[\u9ea6-\u9fff]',
|
|
7
|
+
chineseExtend2: '[\uF900-\uFAD9]',
|
|
8
|
+
chineseExtendA: '[\u3400-\u4DBF]',
|
|
9
|
+
chineseExtendB: "[\uD840\uDC00-\uD869\uDEDF]",
|
|
10
|
+
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF38]",
|
|
9
11
|
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
|
|
10
12
|
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
|
|
11
|
-
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
|
|
13
|
+
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]",
|
|
14
|
+
chineseExtendG: "[\uD880\uDC00-\uD884\uDF4A]",
|
|
15
|
+
chineseExtendH: "[\uD884\uDF50-\uD888\uDFAF]",
|
|
16
|
+
chineseExtendI: "[\uD87A\uDFF0-\uD87B\uDE5D]"
|
|
12
17
|
};
|
|
13
18
|
var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
|
|
14
19
|
var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
|
|
15
|
-
var chineseWithExtend = '(?:' + chineseDictionary.
|
|
20
|
+
var chineseWithExtend = '(?:' + objectValues(chineseDictionary).join('|') + ')';
|
|
16
21
|
var looseChineseExtendRegExp = chineseWithExtend + '+';
|
|
17
22
|
var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
|
|
18
23
|
var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
|
package/esm/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js
ADDED
|
@@ -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
|
|
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 };
|
package/esm/utils/Cache.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __extends, __assign } from 'tslib';
|
|
2
|
-
import EmitterPro from '../node_modules/.pnpm/emitter-pro@1.
|
|
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) {
|
package/esm/utils/native.js
CHANGED
|
@@ -2,7 +2,8 @@ import { constant, noop } from 'ut2';
|
|
|
2
2
|
import { URLExisted } from './setup.js';
|
|
3
3
|
|
|
4
4
|
var objectKeys = Object.keys;
|
|
5
|
+
var objectValues = Object.values;
|
|
5
6
|
var createObjectURL = URLExisted ? URL.createObjectURL : constant('');
|
|
6
7
|
var revokeObjectURL = URLExisted ? URL.revokeObjectURL : noop;
|
|
7
8
|
|
|
8
|
-
export { createObjectURL, objectKeys, revokeObjectURL };
|
|
9
|
+
export { createObjectURL, objectKeys, objectValues, revokeObjectURL };
|
package/lib/VERSION.js
CHANGED
package/lib/compressImage.js
CHANGED
|
@@ -10,7 +10,7 @@ function canvasToBlob(canvas, type, quality) {
|
|
|
10
10
|
}, type, quality);
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
-
function
|
|
13
|
+
var compressImage = function (img, options) {
|
|
14
14
|
if (options === void 0) { options = {}; }
|
|
15
15
|
return new Promise(function (resolve, reject) {
|
|
16
16
|
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;
|
|
@@ -67,6 +67,7 @@ function compressImage(img, options) {
|
|
|
67
67
|
})
|
|
68
68
|
.catch(reject);
|
|
69
69
|
});
|
|
70
|
-
}
|
|
70
|
+
};
|
|
71
|
+
var compressImage$1 = compressImage;
|
|
71
72
|
|
|
72
|
-
module.exports = compressImage;
|
|
73
|
+
module.exports = compressImage$1;
|
package/lib/fileReader.js
CHANGED
|
@@ -6,7 +6,7 @@ var FileReaderMethodMap = {
|
|
|
6
6
|
dataURL: 'readAsDataURL',
|
|
7
7
|
text: 'readAsText'
|
|
8
8
|
};
|
|
9
|
-
function
|
|
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.
|
|
69
|
+
exports.version = "4.21.5";
|
|
70
70
|
|
|
71
71
|
exports.isMobile = isMobile;
|
|
72
72
|
exports.isTelephone = isTelephone;
|
package/lib/isChinese.js
CHANGED
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var ut2 = require('ut2');
|
|
4
|
+
var native = require('./utils/native.js');
|
|
4
5
|
|
|
5
6
|
var chineseDictionary = {
|
|
6
7
|
chineseBasic: '[\u4e00-\u9fa5]',
|
|
7
|
-
chineseExtend: '[\u9ea6-\
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
chineseExtend: '[\u9ea6-\u9fff]',
|
|
9
|
+
chineseExtend2: '[\uF900-\uFAD9]',
|
|
10
|
+
chineseExtendA: '[\u3400-\u4DBF]',
|
|
11
|
+
chineseExtendB: "[\uD840\uDC00-\uD869\uDEDF]",
|
|
12
|
+
chineseExtendC: "[\uD869\uDF00-\uD86D\uDF38]",
|
|
11
13
|
chineseExtendD: "[\uD86D\uDF40-\uD86E\uDC1D]",
|
|
12
14
|
chineseExtendE: "[\uD86E\uDC20-\uD873\uDEA1]",
|
|
13
|
-
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]"
|
|
15
|
+
chineseExtendF: "[\uD873\uDEB0-\uD87A\uDFE0]",
|
|
16
|
+
chineseExtendG: "[\uD880\uDC00-\uD884\uDF4A]",
|
|
17
|
+
chineseExtendH: "[\uD884\uDF50-\uD888\uDFAF]",
|
|
18
|
+
chineseExtendI: "[\uD87A\uDFF0-\uD87B\uDE5D]"
|
|
14
19
|
};
|
|
15
20
|
var looseChineseRegExp = chineseDictionary.chineseBasic + '+';
|
|
16
21
|
var chineseRegExp = '^' + chineseDictionary.chineseBasic + '+$';
|
|
17
|
-
var chineseWithExtend = '(?:' +
|
|
22
|
+
var chineseWithExtend = '(?:' + native.objectValues(chineseDictionary).join('|') + ')';
|
|
18
23
|
var looseChineseExtendRegExp = chineseWithExtend + '+';
|
|
19
24
|
var chineseExtendRegExp = '^' + chineseWithExtend + '+$';
|
|
20
25
|
var supportRegExpUnicode = RegExp.prototype.hasOwnProperty('unicode');
|
package/lib/node_modules/.pnpm/emitter-pro@1.2.1/node_modules/emitter-pro/dist/emitter-pro.esm.js
ADDED
|
@@ -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
|
|
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;
|
package/lib/utils/Cache.js
CHANGED
|
@@ -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.
|
|
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) {
|
package/lib/utils/native.js
CHANGED
|
@@ -4,5 +4,6 @@ var ut2 = require('ut2');
|
|
|
4
4
|
var setup = require('./setup.js');
|
|
5
5
|
|
|
6
6
|
exports.objectKeys = Object.keys;
|
|
7
|
+
exports.objectValues = Object.values;
|
|
7
8
|
exports.createObjectURL = setup.URLExisted ? URL.createObjectURL : ut2.constant('');
|
|
8
9
|
exports.revokeObjectURL = setup.URLExisted ? URL.revokeObjectURL : ut2.noop;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "util-helpers",
|
|
3
|
-
"version": "4.21.
|
|
3
|
+
"version": "4.21.5",
|
|
4
4
|
"description": "一个基于业务场景的工具方法库",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"commit": "cz",
|
|
25
25
|
"prepublishOnly": "npm test && npm run build",
|
|
26
26
|
"tsc": "tsc --noEmit",
|
|
27
|
-
"prepare": "husky
|
|
27
|
+
"prepare": "husky"
|
|
28
28
|
},
|
|
29
29
|
"repository": {
|
|
30
30
|
"type": "git",
|
|
@@ -51,34 +51,36 @@
|
|
|
51
51
|
},
|
|
52
52
|
"homepage": "https://doly-dev.github.io/util-helpers/index.html",
|
|
53
53
|
"devDependencies": {
|
|
54
|
-
"@babel/core": "^7.24.
|
|
55
|
-
"@babel/preset-env": "^7.24.
|
|
56
|
-
"@babel/preset-typescript": "^7.
|
|
54
|
+
"@babel/core": "^7.24.4",
|
|
55
|
+
"@babel/preset-env": "^7.24.4",
|
|
56
|
+
"@babel/preset-typescript": "^7.24.1",
|
|
57
57
|
"@commitlint/cli": "^17.8.1",
|
|
58
58
|
"@commitlint/config-conventional": "^17.8.1",
|
|
59
|
+
"@commitlint/cz-commitlint": "^17.8.1",
|
|
59
60
|
"@rollup/plugin-commonjs": "^25.0.7",
|
|
60
61
|
"@rollup/plugin-node-resolve": "^15.2.3",
|
|
61
62
|
"@rollup/plugin-replace": "^5.0.5",
|
|
62
63
|
"@rollup/plugin-terser": "^0.4.4",
|
|
63
64
|
"@rollup/plugin-typescript": "^11.1.6",
|
|
64
65
|
"@types/jest": "^29.5.12",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
66
|
-
"@typescript-eslint/parser": "^
|
|
66
|
+
"@typescript-eslint/eslint-plugin": "^7.7.0",
|
|
67
|
+
"@typescript-eslint/parser": "^7.7.0",
|
|
67
68
|
"babel-jest": "^29.7.0",
|
|
68
69
|
"babel-plugin-minify-replace": "^0.5.0",
|
|
70
|
+
"commitizen": "^4.3.0",
|
|
69
71
|
"cross-env": "^7.0.3",
|
|
70
|
-
"cz-conventional-changelog": "^3.3.0",
|
|
71
72
|
"docdash": "^2.0.2",
|
|
72
73
|
"eslint": "^8.57.0",
|
|
73
|
-
"husky": "^
|
|
74
|
+
"husky": "^9.0.11",
|
|
75
|
+
"inquirer": "^8.2.6",
|
|
74
76
|
"jest": "^29.7.0",
|
|
75
77
|
"jest-canvas-mock": "^2.5.2",
|
|
76
78
|
"jest-environment-jsdom": "^29.7.0",
|
|
77
79
|
"jsdoc": "^4.0.2",
|
|
78
80
|
"lint-staged": "^13.3.0",
|
|
79
|
-
"prettier": "^2.
|
|
80
|
-
"rollup": "^
|
|
81
|
-
"typescript": "^5.4.
|
|
81
|
+
"prettier": "^3.2.5",
|
|
82
|
+
"rollup": "^4.14.3",
|
|
83
|
+
"typescript": "^5.4.5"
|
|
82
84
|
},
|
|
83
85
|
"lint-staged": {
|
|
84
86
|
"**/*.ts": "eslint",
|
|
@@ -86,11 +88,11 @@
|
|
|
86
88
|
},
|
|
87
89
|
"config": {
|
|
88
90
|
"commitizen": {
|
|
89
|
-
"path": "
|
|
91
|
+
"path": "@commitlint/cz-commitlint"
|
|
90
92
|
}
|
|
91
93
|
},
|
|
92
94
|
"dependencies": {
|
|
93
|
-
"emitter-pro": "^1.
|
|
95
|
+
"emitter-pro": "^1.2.1",
|
|
94
96
|
"tslib": "^2.6.2",
|
|
95
97
|
"ut2": "^1.7.1"
|
|
96
98
|
},
|
package/types/ajax.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ type AjaxOptions = {
|
|
|
25
25
|
* @property {boolean} [async=true] 是否异步执行操作
|
|
26
26
|
* @property {string|null} [user=null] 用户名,用于认证用途
|
|
27
27
|
* @property {string|null} [password=null] 密码,用于认证用途
|
|
28
|
-
* @property {
|
|
28
|
+
* @property {Object} [headers] 自定义请求头
|
|
29
29
|
* @property {string} [responseType] 响应类型
|
|
30
30
|
* @property {number} [timeout] 请求超时的毫秒数
|
|
31
31
|
* @property {boolean} [withCredentials=false] 跨域请求时是否需要使用凭证
|
package/types/compressImage.d.ts
CHANGED
|
@@ -22,8 +22,70 @@ type Options = {
|
|
|
22
22
|
cacheImage?: boolean | Parameters<typeof loadImageWithBlob>[1];
|
|
23
23
|
ajaxOptions?: Parameters<typeof loadImageWithBlob>[2];
|
|
24
24
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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;
|
package/types/fileReader.d.ts
CHANGED
|
@@ -5,6 +5,35 @@ declare const FileReaderMethodMap: {
|
|
|
5
5
|
readonly text: "readAsText";
|
|
6
6
|
};
|
|
7
7
|
type ReadType = keyof typeof FileReaderMethodMap;
|
|
8
|
-
|
|
9
|
-
|
|
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;
|