util-helpers 4.19.4 → 4.20.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.
- package/README.md +6 -0
- package/dist/util-helpers.js +267 -17
- 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 +60 -0
- package/esm/gcd.js +42 -0
- package/esm/getImageInfo.js +45 -0
- package/esm/index.js +7 -1
- package/esm/lcm.js +20 -0
- package/esm/loadImage.js +40 -0
- package/esm/loadImageWithBlob.js +59 -0
- package/lib/VERSION.js +1 -1
- package/lib/compressImage.js +62 -0
- package/lib/gcd.js +44 -0
- package/lib/getImageInfo.js +47 -0
- package/lib/index.js +13 -1
- package/lib/lcm.js +22 -0
- package/lib/loadImage.js +42 -0
- package/lib/loadImageWithBlob.js +61 -0
- package/package.json +19 -18
- package/types/compressImage.d.ts +27 -0
- package/types/divide.d.ts +1 -1
- package/types/download.d.ts +2 -0
- package/types/gcd.d.ts +29 -0
- package/types/getImageInfo.d.ts +37 -0
- package/types/index.d.ts +6 -0
- package/types/lcm.d.ts +31 -0
- package/types/loadImage.d.ts +28 -0
- package/types/loadImageWithBlob.d.ts +36 -0
- package/types/loadScript.d.ts +5 -3
- package/types/minus.d.ts +1 -1
- package/types/plus.d.ts +1 -1
- package/types/times.d.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "util-helpers",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.20.0",
|
|
4
4
|
"description": "一个基于业务场景的工具方法库",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "esm/index.js",
|
|
@@ -50,31 +50,32 @@
|
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://doly-dev.github.io/util-helpers/index.html",
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"@babel/core": "^7.22.
|
|
54
|
-
"@babel/preset-env": "^7.22.
|
|
53
|
+
"@babel/core": "^7.22.10",
|
|
54
|
+
"@babel/preset-env": "^7.22.10",
|
|
55
55
|
"@babel/preset-typescript": "^7.22.5",
|
|
56
|
-
"@commitlint/cli": "^17.
|
|
57
|
-
"@commitlint/config-conventional": "^17.
|
|
58
|
-
"@rollup/plugin-commonjs": "^25.0.
|
|
59
|
-
"@rollup/plugin-node-resolve": "^15.1
|
|
56
|
+
"@commitlint/cli": "^17.7.1",
|
|
57
|
+
"@commitlint/config-conventional": "^17.7.0",
|
|
58
|
+
"@rollup/plugin-commonjs": "^25.0.4",
|
|
59
|
+
"@rollup/plugin-node-resolve": "^15.2.1",
|
|
60
60
|
"@rollup/plugin-replace": "^5.0.2",
|
|
61
61
|
"@rollup/plugin-terser": "^0.4.3",
|
|
62
62
|
"@rollup/plugin-typescript": "^11.1.2",
|
|
63
|
-
"@types/jest": "^29.5.
|
|
64
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
65
|
-
"@typescript-eslint/parser": "^5.
|
|
66
|
-
"babel-jest": "^29.
|
|
63
|
+
"@types/jest": "^29.5.4",
|
|
64
|
+
"@typescript-eslint/eslint-plugin": "^5.62.0",
|
|
65
|
+
"@typescript-eslint/parser": "^5.62.0",
|
|
66
|
+
"babel-jest": "^29.6.3",
|
|
67
67
|
"babel-plugin-minify-replace": "^0.5.0",
|
|
68
68
|
"cross-env": "^7.0.3",
|
|
69
69
|
"cz-conventional-changelog": "^3.3.0",
|
|
70
70
|
"docdash": "^2.0.1",
|
|
71
|
-
"eslint": "^8.
|
|
72
|
-
"jest": "^29.
|
|
73
|
-
"jest-
|
|
71
|
+
"eslint": "^8.47.0",
|
|
72
|
+
"jest": "^29.6.3",
|
|
73
|
+
"jest-canvas-mock": "^2.5.2",
|
|
74
|
+
"jest-environment-jsdom": "^29.6.3",
|
|
74
75
|
"jsdoc": "^4.0.2",
|
|
75
|
-
"lint-staged": "^13.
|
|
76
|
+
"lint-staged": "^13.3.0",
|
|
76
77
|
"prettier": "^2.8.8",
|
|
77
|
-
"rollup": "^3.
|
|
78
|
+
"rollup": "^3.28.1",
|
|
78
79
|
"typescript": "^5.1.6",
|
|
79
80
|
"yorkie": "^2.0.0"
|
|
80
81
|
},
|
|
@@ -92,7 +93,7 @@
|
|
|
92
93
|
}
|
|
93
94
|
},
|
|
94
95
|
"dependencies": {
|
|
95
|
-
"tslib": "^2.6.
|
|
96
|
-
"ut2": "^1.
|
|
96
|
+
"tslib": "^2.6.2",
|
|
97
|
+
"ut2": "^1.4.4"
|
|
97
98
|
}
|
|
98
99
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
type Info = {
|
|
2
|
+
image: HTMLImageElement;
|
|
3
|
+
blob: Blob;
|
|
4
|
+
canvas: HTMLCanvasElement;
|
|
5
|
+
context: CanvasRenderingContext2D;
|
|
6
|
+
};
|
|
7
|
+
type Options = {
|
|
8
|
+
width?: number;
|
|
9
|
+
height?: number;
|
|
10
|
+
rotate?: number;
|
|
11
|
+
offset?: [number, number] | ((info: Info, options: Options) => [number, number]);
|
|
12
|
+
cacheImage?: boolean;
|
|
13
|
+
background?: string;
|
|
14
|
+
canvasWidth?: number | ((info: Info, options: Options) => number);
|
|
15
|
+
canvasHeight?: number | ((info: Info, options: Options) => number);
|
|
16
|
+
format?: 'blob' | 'dataURL';
|
|
17
|
+
type?: string;
|
|
18
|
+
quality?: number;
|
|
19
|
+
beforeCompress?: (imageWithBlob: Pick<Info, 'image' | 'blob'>, options: Options) => void;
|
|
20
|
+
beforeDraw?: (info: Info, options: Options) => void;
|
|
21
|
+
afterDraw?: (info: Info, options: Options) => void;
|
|
22
|
+
};
|
|
23
|
+
declare function compressImage(img: string | Blob, options: Omit<Options, 'format'> & {
|
|
24
|
+
format: 'dataURL';
|
|
25
|
+
}): Promise<string>;
|
|
26
|
+
declare function compressImage(img: string | Blob, options?: Options): Promise<Blob>;
|
|
27
|
+
export default compressImage;
|
package/types/divide.d.ts
CHANGED
package/types/download.d.ts
CHANGED
package/types/gcd.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 最大公约数,使用辗转相除法。
|
|
3
|
+
*
|
|
4
|
+
* 遵循以下约定:
|
|
5
|
+
*
|
|
6
|
+
* 1. 如果参数中包含无效数值,返回 `NaN` 。
|
|
7
|
+
* 2. 如果全部参数都为 `0` ,返回 `0` 。
|
|
8
|
+
* 3. 如果参数包含 `0` ,仅计算非零的数。
|
|
9
|
+
* 4. 如果参数为负数,将转为绝对值的正数。
|
|
10
|
+
* 5. 如果参数包含小数点,将转为四舍五入的整数。
|
|
11
|
+
*
|
|
12
|
+
* @static
|
|
13
|
+
* @alias module:Math.gcd
|
|
14
|
+
* @since 4.20.0
|
|
15
|
+
* @see {@link https://baike.baidu.com/item/最大公约数 | 最大公约数}
|
|
16
|
+
* @param {...(number|string)} nums 两个或多个整数。
|
|
17
|
+
* @returns {number} 最大公约数。
|
|
18
|
+
* @example
|
|
19
|
+
*
|
|
20
|
+
* gcd(8, 14); // 2
|
|
21
|
+
* gcd(57, 48); // 3
|
|
22
|
+
* gcd(140, 21, 42); // 7
|
|
23
|
+
* gcd('foo', 'bar'); // NaN
|
|
24
|
+
* gcd(0, 10); // 10
|
|
25
|
+
* gcd(2.3, 3.8, 8, -10); // 2
|
|
26
|
+
*
|
|
27
|
+
*/
|
|
28
|
+
declare function gcd(...nums: (string | number)[]): number;
|
|
29
|
+
export default gcd;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 获取图片信息。
|
|
3
|
+
*
|
|
4
|
+
* <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
|
|
5
|
+
*
|
|
6
|
+
* @static
|
|
7
|
+
* @alias module:Other.getImageInfo
|
|
8
|
+
* @since 4.20.0
|
|
9
|
+
* @param {string | Blob} img 图片地址或 blob 对象
|
|
10
|
+
* @param {boolean} [useCache=true] 缓存最近一次成功结果,当图片地址或 blob 对象一致时,直接返回该缓存。避免连续请求同一个图片资源,重复加载问题。
|
|
11
|
+
* @returns {Promise<ImageInfo>} 图片信息
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* getImageInfo(file).then(imageInfo=>{
|
|
15
|
+
* // do something
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* getImageInfo('https://dummyimage.com/200x300').then(imageInfo=>{
|
|
19
|
+
* // do something
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* getImageInfo('data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=').then(imageInfo=>{
|
|
23
|
+
* // do something
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
declare function getImageInfo(img: string | Blob, useCache?: boolean): Promise<{
|
|
28
|
+
width: number;
|
|
29
|
+
height: number;
|
|
30
|
+
contrast: string;
|
|
31
|
+
measure: string;
|
|
32
|
+
size: string;
|
|
33
|
+
bytes: number;
|
|
34
|
+
image: HTMLImageElement;
|
|
35
|
+
blob: Blob;
|
|
36
|
+
}>;
|
|
37
|
+
export default getImageInfo;
|
package/types/index.d.ts
CHANGED
|
@@ -91,6 +91,8 @@ export { default as minus } from './minus';
|
|
|
91
91
|
export { default as times } from './times';
|
|
92
92
|
export { default as divide } from './divide';
|
|
93
93
|
export { default as round } from './round';
|
|
94
|
+
export { default as gcd } from './gcd';
|
|
95
|
+
export { default as lcm } from './lcm';
|
|
94
96
|
/**
|
|
95
97
|
* 其他
|
|
96
98
|
*
|
|
@@ -99,7 +101,11 @@ export { default as round } from './round';
|
|
|
99
101
|
*/
|
|
100
102
|
export { default as ajax } from './ajax';
|
|
101
103
|
export { default as calculateCursorPosition } from './calculateCursorPosition';
|
|
104
|
+
export { default as compressImage } from './compressImage';
|
|
102
105
|
export { default as download } from './download';
|
|
106
|
+
export { default as getImageInfo } from './getImageInfo';
|
|
107
|
+
export { default as loadImage } from './loadImage';
|
|
108
|
+
export { default as loadImageWithBlob } from './loadImageWithBlob';
|
|
103
109
|
export { default as loadScript } from './loadScript';
|
|
104
110
|
export { default as randomString } from './randomString';
|
|
105
111
|
export { default as strlen } from './strlen';
|
package/types/lcm.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 最小公倍数。
|
|
3
|
+
*
|
|
4
|
+
* 遵循以下约定:
|
|
5
|
+
*
|
|
6
|
+
* 1. 如果参数中包含无效数值,返回 `NaN` 。
|
|
7
|
+
* 2. 如果只有一个参数,另一个参数默认为 `1` 。
|
|
8
|
+
* 3. 如果全部参数都为 `0` ,返回 `NaN` 。因为作为除数的最大公约数为 `0` ,结果为 `NaN` 。
|
|
9
|
+
* 4. 如果全部参数都为 `Infinity` ,返回 `NaN` 。因为除数和被除数都是 `Infinity` ,结果为 `NaN` 。
|
|
10
|
+
* 5. 如果参数包含 `0` ,返回 `0` 。
|
|
11
|
+
* 6. 如果参数为负数,将转为绝对值的正数。
|
|
12
|
+
* 7. 如果参数包含小数点,将转为四舍五入的整数。
|
|
13
|
+
*
|
|
14
|
+
* @static
|
|
15
|
+
* @alias module:Math.lcm
|
|
16
|
+
* @since 4.20.0
|
|
17
|
+
* @see {@link https://baike.baidu.com/item/最小公倍数 | 最小公倍数}
|
|
18
|
+
* @param {...(number|string)} nums 两个或多个整数。
|
|
19
|
+
* @returns {number} 最小公倍数。
|
|
20
|
+
* @example
|
|
21
|
+
*
|
|
22
|
+
* lcm(3, 4); // 12
|
|
23
|
+
* lcm(8, 4); // 8
|
|
24
|
+
* lcm(2, 4, 8); // 32
|
|
25
|
+
* lcm('foo', 'bar'); // NaN
|
|
26
|
+
* lcm(0, 10); // 0
|
|
27
|
+
* lcm(2.3, 3.8, 8, -10); // 320
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
declare function lcm(...nums: (string | number)[]): number;
|
|
31
|
+
export default lcm;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 加载图片。
|
|
3
|
+
*
|
|
4
|
+
* <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
|
|
5
|
+
*
|
|
6
|
+
* @static
|
|
7
|
+
* @alias module:Other.loadImage
|
|
8
|
+
* @since 4.20.0
|
|
9
|
+
* @param {string | Blob} img 图片地址或 blob 对象
|
|
10
|
+
* @param {boolean} [useCache=true] 缓存最近一次成功结果,当图片地址或 blob 对象一致时,直接返回该缓存。避免连续请求同一个图片资源,重复加载问题。
|
|
11
|
+
* @returns {Promise<HTMLImageElement>} HTML图片元素
|
|
12
|
+
* @example
|
|
13
|
+
*
|
|
14
|
+
* loadImage(file).then(image=>{
|
|
15
|
+
* // do something
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* loadImage('https://dummyimage.com/200x300').then(image=>{
|
|
19
|
+
* // do something
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* loadImage('data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=').then(image=>{
|
|
23
|
+
* // do something
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
declare function loadImage(img: string | Blob, useCache?: boolean): Promise<HTMLImageElement>;
|
|
28
|
+
export default loadImage;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {Object} ImageWithBlob HTML图片元素和 blob 对象
|
|
3
|
+
* @property {HTMLImageElement} image HTML图片元素
|
|
4
|
+
* @property {Blob} blob blob 对象
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* 加载图片,返回图片元素和 blob 对象。
|
|
8
|
+
*
|
|
9
|
+
* <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
|
|
10
|
+
*
|
|
11
|
+
* @method
|
|
12
|
+
* @alias module:Other.loadImageWithBlob
|
|
13
|
+
* @since 4.20.0
|
|
14
|
+
* @param {string | Blob} img 图片地址或 blob 对象
|
|
15
|
+
* @param {boolean} [useCache=true] 缓存最近一次成功结果,当图片地址或 blob 对象一致时,直接返回该缓存。避免连续请求同一个图片资源,重复加载问题。
|
|
16
|
+
* @returns {Promise<ImageWithBlob>} HTML图片元素和 blob 对象
|
|
17
|
+
* @example
|
|
18
|
+
*
|
|
19
|
+
* loadImage(file).then(({image, blob})=>{
|
|
20
|
+
* // do something
|
|
21
|
+
* });
|
|
22
|
+
*
|
|
23
|
+
* loadImage('https://dummyimage.com/200x300').then(({image, blob})=>{
|
|
24
|
+
* // do something
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* loadImage('data:image/png;base64,PGEgaWQ9ImEiPjxiIGlkPSJiIj5oZXkhPC9iPjwvYT4=').then(({image, blob})=>{
|
|
28
|
+
* // do something
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
declare function loadImageWithBlob(img: string | Blob, useCache?: boolean): Promise<{
|
|
33
|
+
image: HTMLImageElement;
|
|
34
|
+
blob: Blob;
|
|
35
|
+
}>;
|
|
36
|
+
export default loadImageWithBlob;
|
package/types/loadScript.d.ts
CHANGED
|
@@ -5,15 +5,17 @@ type ScriptAttribute = Pick<HTMLScriptElement, 'async' | 'crossOrigin' | 'defer'
|
|
|
5
5
|
/**
|
|
6
6
|
* 加载 js 文件。
|
|
7
7
|
*
|
|
8
|
-
* 默认属性 `async=true` `type=text/javascript` 。如果加载失败,默认会删除该 `script` 的 `dom` 标签。
|
|
9
|
-
*
|
|
10
8
|
* <em style="font-weight: bold;">注意:该方法仅适用于浏览器端。</em>
|
|
11
9
|
*
|
|
12
10
|
* @static
|
|
13
11
|
* @alias module:Other.loadScript
|
|
14
12
|
* @since 4.19.0
|
|
15
13
|
* @param {string} src js 地址。
|
|
16
|
-
* @param {Object} [options] script 标签属性。比如 `
|
|
14
|
+
* @param {Object} [options] script 标签属性。比如 `defer` `onload` `onerror` `id` 等,下面列举部分带有默认值或额外扩展的配置。
|
|
15
|
+
* @param {boolean} [options.destroyOnError=true] 如果加载失败或错误,自动删除 dom 中的 script 标签。
|
|
16
|
+
* @param {Object} [options.attrs] 自定义 script 属性,通过 script.setAttribute 设置。
|
|
17
|
+
* @param {boolean} [options.async=true] 异步加载。
|
|
18
|
+
* @param {string} [options.type='text/javascript'] 类型。
|
|
17
19
|
* @return {Promise<HTMLScriptElement>} 异步返回 script 元素。
|
|
18
20
|
* @example
|
|
19
21
|
*
|
package/types/minus.d.ts
CHANGED
package/types/plus.d.ts
CHANGED