@polyv/utils 2.7.0 → 2.9.0-beta.1

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/cjs/boolean.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Y 或者 N。
7
7
  */
8
- export declare type YOrN = 'Y' | 'N';
8
+ export type YOrN = 'Y' | 'N';
9
9
  /**
10
10
  * 布尔值转换为 Y 或者 N。
11
11
  * @param value 布尔值。
package/cjs/boolean.js CHANGED
@@ -1 +1 @@
1
- "use strict";function boolToYN(o){if("boolean"!=typeof o)throw new Error("The value argument must be a boolean type");return o?"Y":"N"}function ynToBool(o,e){var r=String(o).toUpperCase();if("Y"!==r&&"N"!==r){if(null==e)throw new Error('The value argument must be "Y" or "N"');r=String(e).toUpperCase()}return"Y"===r}function allY(o){return o.every((function(o){return ynToBool(o)}))}function someY(o){return o.some((function(o){return ynToBool(o)}))}function allN(o){return o.every((function(o){return!ynToBool(o)}))}function someN(o){return o.some((function(o){return!ynToBool(o)}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.someN=exports.allN=exports.someY=exports.allY=exports.ynToBool=exports.boolToYN=void 0,exports.boolToYN=boolToYN,exports.ynToBool=ynToBool,exports.allY=allY,exports.someY=someY,exports.allN=allN,exports.someN=someN;
1
+ "use strict";function boolToYN(o){if("boolean"!=typeof o)throw new Error("The value argument must be a boolean type");return o?"Y":"N"}function ynToBool(o,e){var r=String(o).toUpperCase();if("Y"!==r&&"N"!==r){if(null==e)throw new Error('The value argument must be "Y" or "N"');r=String(e).toUpperCase()}return"Y"===r}function allY(o){return o.every((function(o){return ynToBool(o)}))}function someY(o){return o.some((function(o){return ynToBool(o)}))}function allN(o){return o.every((function(o){return!ynToBool(o)}))}function someN(o){return o.some((function(o){return!ynToBool(o)}))}Object.defineProperty(exports,"__esModule",{value:!0}),exports.boolToYN=boolToYN,exports.ynToBool=ynToBool,exports.allY=allY,exports.someY=someY,exports.allN=allN,exports.someN=someN;
package/cjs/browser.d.ts CHANGED
@@ -1,15 +1,24 @@
1
1
  /**
2
- * 判断当前浏览器是否运行在移动设备上(User-Agent 识别为主,特征判断为辅)。
2
+ * 本模块提供浏览器特性检测相关方法。
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * 检测当前浏览器是否运行在移动设备上(User-Agent 识别为主,特征判断为辅)。
3
7
  * @returns 当前浏览器是否运行在移动设备上。
4
8
  */
5
9
  export declare function isMobile(): boolean;
6
10
  /**
7
- * 判断当前浏览器是否为傲游浏览器。
11
+ * 检测当前浏览器是否具备移动设备特征(特征判断为主,User-Agent 识别为辅)。
12
+ * @returns 当前浏览器是否具备移动设备特征。
13
+ */
14
+ export declare function hasMobileFeature(): boolean;
15
+ /**
16
+ * 检测当前浏览器是否为傲游浏览器。
8
17
  * @returns 当前浏览器是否为傲游浏览器。
9
18
  */
10
- export declare function isMaxthon(): any;
19
+ export declare function isMaxthon(): boolean;
11
20
  /**
12
- * 判断当前浏览器是否支持通过 MSE 播放 H264 视频。
21
+ * 检测当前浏览器是否支持通过 MSE 播放 H264 视频。
13
22
  * @returns 当前浏览器是否支持通过 MSE 播放 H264 视频。
14
23
  */
15
24
  export declare function supportMSEH264(): boolean;
package/cjs/browser.js CHANGED
@@ -1 +1 @@
1
- "use strict";function isMobile(){var o=navigator.userAgent;return!!(/mobile|android/i.test(o)||/\bMacintosh\b/.test(o)&&navigator.maxTouchPoints)||!/\b(Windows\sNT|Macintosh|x86(_(32|64))?|amd64|i[1-6]86)\b/.test(o)&&"onorientationchange"in window}function isMaxthon(){var o=navigator.userAgent;if(/\bMaxthon\b/i.test(o))return!0;if("maxthon"in window){var t=window.maxthon;return"function"==typeof t.IsMaxthon&&t.IsMaxthon()}return!1}function supportMSEH264(){var o=window.MediaSource;return o&&"function"==typeof o.isTypeSupported&&o.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}Object.defineProperty(exports,"__esModule",{value:!0}),exports.supportMSEH264=exports.isMaxthon=exports.isMobile=void 0,exports.isMobile=isMobile,exports.isMaxthon=isMaxthon,exports.supportMSEH264=supportMSEH264;
1
+ "use strict";function isMobile(){var t=navigator.userAgent;return!!/mobile|android/i.test(t)||!/\b(Windows\sNT|Macintosh|x86(_(32|64))?|amd64|i[1-6]86)\b/.test(t)&&("onorientationchange"in window&&"number"==typeof window.orientation)}function hasMobileFeature(){var t=navigator.platform;return"onorientationchange"in window&&"number"==typeof window.orientation||(!!/^(iPhone|iPod|iPad)/.test(t)||"Win32"!==t&&!/^Linux\s*(x86|i686)/.test(t)&&("MacIntel"===t||"Macintosh"===t?navigator.maxTouchPoints>0:"function"==typeof matchMedia&&(matchMedia("(hover: none)").matches&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches)))}function isMaxthon(){var t=navigator.userAgent;if(/\bMaxthon\b/i.test(t))return!0;if("maxthon"in window){var e=window.maxthon;return"function"==typeof e.IsMaxthon&&e.IsMaxthon()}return!1}function supportMSEH264(){var t=window.MediaSource;return t&&"function"==typeof t.isTypeSupported&&t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}Object.defineProperty(exports,"__esModule",{value:!0}),exports.isMobile=isMobile,exports.hasMobileFeature=hasMobileFeature,exports.isMaxthon=isMaxthon,exports.supportMSEH264=supportMSEH264;
@@ -70,7 +70,7 @@ export declare class Countdown {
70
70
  protected _timerId?: number;
71
71
  /**
72
72
  * 倒计时类构造函数。
73
- * @param secs 倒计时总秒数。
73
+ * @param totalSecs 倒计时总秒数。
74
74
  * @param cb 剩余时长的回调函数,正常情况下大概 1 秒回调一次。
75
75
  */
76
76
  constructor(totalSecs: number, cb: ICountdownCallback);
package/cjs/date.js CHANGED
@@ -1 +1 @@
1
- "use strict";function ensureDate(e){return"object"!=typeof e&&(e=new Date(e)),e}function formatDate(e,t){var r={Y:(e=ensureDate(e)).getFullYear(),M:e.getMonth()+1,D:e.getDate(),h:e.getHours(),m:e.getMinutes(),s:e.getSeconds()};return t.replace(/([YMDhms])\1*/g,(function(e){var t=r[e[0]].toString(),n=e.length;return n>t.length&&(t=new Array(n-t.length+1).join("0")+t),t}))}function formatSeconds(e,t){if(void 0===t&&(t={segments:2,digits:2}),e=Number(e),isNaN(e)||e<0)throw new Error('"secs" must be a positive integer');var r=0|(t.segments||2),n=0|(t.digits||2);n=Math.max(1,n),-1===[2,3].indexOf(r)&&(r=2);var o=new Array(n+1).join("0"),a=[60,1];return 3===t.segments&&a.unshift(3600),a.map((function(t){var r=Math.floor(e/t),a=r.toString().length;return e%=t,(o+r).slice(-Math.max(a,n))})).join(":")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatSeconds=exports.formatDate=void 0,exports.formatDate=formatDate,exports.formatSeconds=formatSeconds;
1
+ "use strict";function ensureDate(e){return"object"!=typeof e&&(e=new Date(e)),e}function formatDate(e,t){var r={Y:(e=ensureDate(e)).getFullYear(),M:e.getMonth()+1,D:e.getDate(),h:e.getHours(),m:e.getMinutes(),s:e.getSeconds()};return t.replace(/([YMDhms])\1*/g,(function(e){var t=r[e[0]].toString(),n=e.length;return n>t.length&&(t=new Array(n-t.length+1).join("0")+t),t}))}function formatSeconds(e,t){if(void 0===t&&(t={segments:2,digits:2}),e=Number(e),isNaN(e)||e<0)throw new Error('"secs" must be a positive integer');var r=0|(t.segments||2),n=0|(t.digits||2);n=Math.max(1,n),-1===[2,3].indexOf(r)&&(r=2);var o=new Array(n+1).join("0"),a=[60,1];return 3===t.segments&&a.unshift(3600),a.map((function(t){var r=Math.floor(e/t),a=r.toString().length;return e%=t,(o+r).slice(-Math.max(a,n))})).join(":")}Object.defineProperty(exports,"__esModule",{value:!0}),exports.formatDate=formatDate,exports.formatSeconds=formatSeconds;
package/cjs/event.d.ts CHANGED
@@ -59,15 +59,15 @@
59
59
  /**
60
60
  * 事件类型
61
61
  */
62
- export declare type EventType = number | string | symbol;
62
+ export type EventType = number | string | symbol;
63
63
  /**
64
64
  * 事件参数关系类型
65
65
  */
66
- export declare type EventRelationsType = Record<EventType, unknown>;
66
+ export type EventRelationsType = Record<EventType, unknown>;
67
67
  /**
68
68
  * 事件回调函数类型
69
69
  */
70
- export declare type EventHandler<Relations extends EventRelationsType, E extends EventType> = (params: Relations[E]) => unknown;
70
+ export type EventHandler<Relations extends EventRelationsType, E extends EventType> = (params: Relations[E]) => unknown;
71
71
  export declare class EventEmitter<Relations extends EventRelationsType = EventRelationsType, Events extends EventType = string> {
72
72
  /**
73
73
  * 事件回调存储器
package/cjs/file.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * 本模块提供文件处理相关方法。
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * 文件体积单位。
7
+ */
8
+ export declare enum FileSizeUnit {
9
+ B = "B",
10
+ KB = "KB",
11
+ MB = "MB",
12
+ GB = "GB",
13
+ TB = "TB"
14
+ }
15
+ /**
16
+ * 文件体积转换选项。
17
+ */
18
+ export interface FileSizeConversionOptions {
19
+ /**
20
+ * 目标单位。
21
+ */
22
+ unit: FileSizeUnit;
23
+ /**
24
+ * 是否允许纯小数。
25
+ * 如果不允许,则在保证转换目标值大于 1 的前提下,以距离目标单位最近的单位进行转换。
26
+ * 默认为允许。
27
+ */
28
+ allowPureDecimal?: boolean;
29
+ }
30
+ /**
31
+ * 文件体积转换结果。
32
+ */
33
+ export interface FileSizeConversionResult {
34
+ /**
35
+ * 转过结果的值。
36
+ */
37
+ value: number;
38
+ /**
39
+ * 转换结果的单位。
40
+ */
41
+ unit: FileSizeUnit;
42
+ }
43
+ /**
44
+ * 转换文件体积。
45
+ * @param sizeInBytes 以字节为单位的文件体积值。
46
+ * @param options 转换选项。
47
+ * @returns 转换结果。
48
+ */
49
+ export declare function convertFileSize(sizeInBytes: number, options: FileSizeUnit | FileSizeConversionOptions): FileSizeConversionResult;
package/cjs/file.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";var FileSizeUnit;function convertFileSize(e,i){var t="object"==typeof i?Object.assign({},i):{unit:i};if(!t.unit)throw new Error("Please specify file size unit");var n=[FileSizeUnit.B,FileSizeUnit.KB,FileSizeUnit.MB,FileSizeUnit.GB,FileSizeUnit.TB],l={value:e,unit:t.unit};return n.some((function(i,r){var o=e/Math.pow(1024,r);return!1===t.allowPureDecimal&&o<1||(l.value=o,l.unit=i,t.unit===i||r===n.length)})),l}Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileSizeUnit=void 0,exports.convertFileSize=convertFileSize,function(e){e.B="B",e.KB="KB",e.MB="MB",e.GB="GB",e.TB="TB"}(FileSizeUnit||(exports.FileSizeUnit=FileSizeUnit={}));
package/cjs/image.js CHANGED
@@ -1 +1 @@
1
- "use strict";function supportWebP(){var A=document.createElement("canvas");if(A.getContext&&A.getContext("2d")){var e="image/webp";return 0===A.toDataURL(e).indexOf("data:"+e)}return!1}function supportAVIF(){return new Promise((function(A){var e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",e.onerror=function(){A(!1)},e.onload=function(){A(!0)},setTimeout((function(){A(!1)}),1e3)}))}function ossCompress(A,e){var s=document.createElement("a");s.href=A;var t=s.search,o=s.hostname.toLowerCase();if(-1===["liveimages.videocc.net","vod-assets.videocc.net"].indexOf(o)||/(?:\?|&)x-oss-process(?:=|&|$)/.test(t))return A;var r="";return null==e.width&&null==e.height||(r+="/resize",e.width&&(r+=",w_"+e.width),e.height&&(r+=",h_"+e.height),r+=",limit_1"),e.allowAVIF?r+="/format,avif":e.allowWebP&&(r+="/format,webp"),r&&(r="x-oss-process=image"+r,A+=(-1===A.indexOf("?")?"?":"&")+r),A}function compressHTMLImgs(A,e){return A?A.replace(/(<img.*?\ssrc=)(["']?)(.+?)\2(.*?>)/gi,(function(A,s,t,o,r){return s+'"'+ossCompress(o,e)+'" data-src="'+o+'"'+r})):""}Object.defineProperty(exports,"__esModule",{value:!0}),exports.compressHTMLImgs=exports.ossCompress=exports.supportAVIF=exports.supportWebP=void 0,exports.supportWebP=supportWebP,exports.supportAVIF=supportAVIF,exports.ossCompress=ossCompress,exports.compressHTMLImgs=compressHTMLImgs;
1
+ "use strict";function supportWebP(){var A=document.createElement("canvas");if(A.getContext&&A.getContext("2d")){var e="image/webp";return 0===A.toDataURL(e).indexOf("data:"+e)}return!1}function supportAVIF(){return new Promise((function(A){var e=new Image;e.src="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=",e.onerror=function(){A(!1)},e.onload=function(){A(!0)},setTimeout((function(){A(!1)}),1e3)}))}function ossCompress(A,e){var t=document.createElement("a");t.href=A;var s=t.search,o=t.hostname.toLowerCase();if(-1===["liveimages.videocc.net","vod-assets.videocc.net"].indexOf(o)||/(?:\?|&)x-oss-process(?:=|&|$)/.test(s))return A;var r="";return null==e.width&&null==e.height||(r+="/resize",e.width&&(r+=",w_"+e.width),e.height&&(r+=",h_"+e.height),r+=",limit_1"),e.allowAVIF?r+="/format,avif":e.allowWebP&&(r+="/format,webp"),r&&(r="x-oss-process=image"+r,A+=(-1===A.indexOf("?")?"?":"&")+r),A}function compressHTMLImgs(A,e){return A?A.replace(/(<img.*?\ssrc=)(["']?)(.+?)\2(.*?>)/gi,(function(A,t,s,o,r){return t+'"'+ossCompress(o,e)+'" data-src="'+o+'"'+r})):""}Object.defineProperty(exports,"__esModule",{value:!0}),exports.supportWebP=supportWebP,exports.supportAVIF=supportAVIF,exports.ossCompress=ossCompress,exports.compressHTMLImgs=compressHTMLImgs;
package/cjs/json.js CHANGED
@@ -1 +1 @@
1
- "use strict";function cloneJSON(e){return null==e?e:JSON.parse(JSON.stringify(e))}function tryParseJSON(e,r){var t;try{t=JSON.parse(e)}catch(e){t="function"==typeof r?r(e):r}return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.tryParseJSON=exports.cloneJSON=void 0,exports.cloneJSON=cloneJSON,exports.tryParseJSON=tryParseJSON;
1
+ "use strict";function cloneJSON(e){return null==e?e:JSON.parse(JSON.stringify(e))}function tryParseJSON(e,r){var t;try{t=JSON.parse(e)}catch(e){t="function"==typeof r?r(e):r}return t}Object.defineProperty(exports,"__esModule",{value:!0}),exports.cloneJSON=cloneJSON,exports.tryParseJSON=tryParseJSON;
package/cjs/net.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.normalizeProtocol=exports.removeProtocol=exports.changeProtocol=exports.startsWithProtocol=void 0;var reProtocol=/^(?:([a-z]+):)?\/{2,3}/i;function startsWithProtocol(o,t){var r=reProtocol.test(o);if(r&&t){for(var e=(RegExp.$1||"").toLowerCase(),c=t.length-1;c>=0;c--)if(e===t[c].toLowerCase())return!0;return!1}return r}function changeProtocol(o,t){return reProtocol.test(t)||(t+="://"),startsWithProtocol(o)?o.replace(reProtocol,t):t+o}function removeProtocol(o){return o.replace(reProtocol,"")}function normalizeProtocol(o){return changeProtocol(o,"http:"===window.location.protocol?"http":"https")}exports.startsWithProtocol=startsWithProtocol,exports.changeProtocol=changeProtocol,exports.removeProtocol=removeProtocol,exports.normalizeProtocol=normalizeProtocol;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.startsWithProtocol=startsWithProtocol,exports.changeProtocol=changeProtocol,exports.removeProtocol=removeProtocol,exports.normalizeProtocol=normalizeProtocol;var reProtocol=/^(?:([a-z]+):)?\/{2,3}/i;function startsWithProtocol(o,t){var r=reProtocol.test(o);if(r&&t){for(var e=(RegExp.$1||"").toLowerCase(),c=t.length-1;c>=0;c--)if(e===t[c].toLowerCase())return!0;return!1}return r}function changeProtocol(o,t){return reProtocol.test(t)||(t+="://"),startsWithProtocol(o)?o.replace(reProtocol,t):t+o}function removeProtocol(o){return o.replace(reProtocol,"")}function normalizeProtocol(o){return changeProtocol(o,"http:"===window.location.protocol?"http":"https")}
package/cjs/string.d.ts CHANGED
@@ -91,8 +91,8 @@ export declare function randomStr(length: number, prefix?: string): string;
91
91
  export declare function uuidV4(): string;
92
92
  /**
93
93
  * 版本号对比。
94
- * @param versionA 待比较版本 A。
95
- * @param versionB 待比较版本 B。
94
+ * @param verA 待比较版本 A。
95
+ * @param verB 待比较版本 B。
96
96
  * @return 大于 0 时,表示版本 A 大于版本 B;
97
97
  * 小于 0 时,表示版本 B 大于版本 A;
98
98
  * 等于 0 时,表示两个版本号一致。
package/cjs/string.js CHANGED
@@ -1 +1 @@
1
- "use strict";function strLen(e,n){var r,t;"number"==typeof n?n={enLen:1,nonEnLen:n}:((n=n||{}).enLen=null!==(r=n.enLen)&&void 0!==r?r:1,n.nonEnLen=null!==(t=n.nonEnLen)&&void 0!==t?t:2);for(var o=0,s=e.length-1;s>=0;s--)o+=e.charCodeAt(s)>255?n.nonEnLen||0:n.enLen||0;return o}function cutStr(e,n,r){(r=r||{}).enLen=Number(r.enLen)||1,r.nonEnLen=Number(r.nonEnLen)||2,r.ellipsis=r.ellipsis||"...";var t=strLen(e=String(e),r);if(t<=n)return e;n-=strLen(r.ellipsis,r);for(var o="",s=-1;n>0&&++s<t;)(n-=e.charCodeAt(s)>255?r.nonEnLen:r.enLen)>=0&&(o+=e.charAt(s));return o+=r.ellipsis}Object.defineProperty(exports,"__esModule",{value:!0}),exports.compareVersions=exports.uuidV4=exports.randomStr=exports.nl2br=exports.removeTags=exports.unescapeHTML=exports.escapeHTML=exports.cutStr=exports.strLen=void 0,exports.strLen=strLen,exports.cutStr=cutStr;var htmlChars=['"',"'","&","<",">"],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach((function(e,n){charsToEntities[e]=htmlEntities[n],entitiesToChars[htmlEntities[n]]=e}));var reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");function escapeHTML(e){return null==e?e:String(e).replace(reHTMLChars,(function(e){return charsToEntities[e]}))}function unescapeHTML(e){return null==e?e:String(e).replace(reHTMLEntities,(function(e){return entitiesToChars[e]}))}function removeTags(e){return null==e?"":String(e).replace(/<.+?>/g,"")}function nl2br(e){return null==e?e:String(e).replace(/\r?\n/g,"<br />")}function randomStr(e,n){if(!(e|=0)||e<0)throw new Error('"length" must be a number greater than 0');var r="";do{r+=Math.random().toString(36).substr(2)}while(r.length<e);return r=r.substr(0,e),null!=n&&(r=n+r),r}function uuidV4(){var e=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(e+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(n){var r=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===n?r:3&r|8).toString(16)}))}function compareVersions(e,n){if(!e||!n)throw new Error("Please specify both verA and verB");for(var r=/(\.0+)+$/,t=String(e).replace(r,"").split("."),o=String(n).replace(r,"").split("."),s=Math.min(t.length,o.length),i=0;i<s;i++){var a=parseInt(t[i])-parseInt(o[i]);if(a)return a}return t.length-o.length}exports.escapeHTML=escapeHTML,exports.unescapeHTML=unescapeHTML,exports.removeTags=removeTags,exports.nl2br=nl2br,exports.randomStr=randomStr,exports.uuidV4=uuidV4,exports.compareVersions=compareVersions;
1
+ "use strict";function strLen(e,n){var r,t;"number"==typeof n?n={enLen:1,nonEnLen:n}:((n=n||{}).enLen=null!==(r=n.enLen)&&void 0!==r?r:1,n.nonEnLen=null!==(t=n.nonEnLen)&&void 0!==t?t:2);for(var o=0,i=e.length-1;i>=0;i--)o+=e.charCodeAt(i)>255?n.nonEnLen||0:n.enLen||0;return o}function cutStr(e,n,r){(r=r||{}).enLen=Number(r.enLen)||1,r.nonEnLen=Number(r.nonEnLen)||2,r.ellipsis=r.ellipsis||"...";var t=strLen(e=String(e),r);if(t<=n)return e;n-=strLen(r.ellipsis,r);for(var o="",i=-1;n>0&&++i<t;)(n-=e.charCodeAt(i)>255?r.nonEnLen:r.enLen)>=0&&(o+=e.charAt(i));return o+=r.ellipsis}Object.defineProperty(exports,"__esModule",{value:!0}),exports.strLen=strLen,exports.cutStr=cutStr,exports.escapeHTML=escapeHTML,exports.unescapeHTML=unescapeHTML,exports.removeTags=removeTags,exports.nl2br=nl2br,exports.randomStr=randomStr,exports.uuidV4=uuidV4,exports.compareVersions=compareVersions;var htmlChars=['"',"'","&","<",">"],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach((function(e,n){charsToEntities[e]=htmlEntities[n],entitiesToChars[htmlEntities[n]]=e}));var reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");function escapeHTML(e){return null==e?e:String(e).replace(reHTMLChars,(function(e){return charsToEntities[e]}))}function unescapeHTML(e){return null==e?e:String(e).replace(reHTMLEntities,(function(e){return entitiesToChars[e]}))}function removeTags(e){return null==e?"":String(e).replace(/<.+?>/g,"")}function nl2br(e){return null==e?e:String(e).replace(/\r?\n/g,"<br />")}function randomStr(e,n){if(!(e|=0)||e<0)throw new Error('"length" must be a number greater than 0');var r="";do{r+=Math.random().toString(36).substr(2)}while(r.length<e);return r=r.substr(0,e),null!=n&&(r=n+r),r}function uuidV4(){var e=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(e+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(n){var r=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"===n?r:3&r|8).toString(16)}))}function compareVersions(e,n){if(!e||!n)throw new Error("Please specify both verA and verB");for(var r=/(\.0+)+$/,t=String(e).replace(r,"").split("."),o=String(n).replace(r,"").split("."),i=Math.min(t.length,o.length),s=0;s<i;s++){var a=parseInt(t[s])-parseInt(o[s]);if(a)return a}return t.length-o.length}
package/cjs/validate.js CHANGED
@@ -1 +1 @@
1
- "use strict";function isChsPhoneNO(e){return/^1[3-9]\d{9}$/.test(e)}function isPhoneNO(e,s){return void 0===s&&(s="+86"),"+86"===s?isChsPhoneNO(e):/^\d{5,20}$/.test(e)}function isEmail(e){if(/^[\w-]+(?:\.[\w-]+)*@[\w-]+(?:\.[\w-]+)*\.[a-zA-Z]{2,}$/.test(e)){for(var s=e.replace("@",".").split("."),t=s.length-1;t>=0;t--)if(/^[-_]/.test(s[t])||/[_-]$/.test(s[t]))return!1;return!0}return!1}Object.defineProperty(exports,"__esModule",{value:!0}),exports.isEmail=exports.isPhoneNO=exports.isChsPhoneNO=void 0,exports.isChsPhoneNO=isChsPhoneNO,exports.isPhoneNO=isPhoneNO,exports.isEmail=isEmail;
1
+ "use strict";function isChsPhoneNO(e){return/^1[3-9]\d{9}$/.test(e)}function isPhoneNO(e,t){return void 0===t&&(t="+86"),"+86"===t?isChsPhoneNO(e):/^\d{5,20}$/.test(e)}function isEmail(e){if(/^[\w-]+(?:\.[\w-]+)*@[\w-]+(?:\.[\w-]+)*\.[a-zA-Z]{2,}$/.test(e)){for(var t=e.replace("@",".").split("."),s=t.length-1;s>=0;s--)if(/^[-_]/.test(t[s])||/[_-]$/.test(t[s]))return!1;return!0}return!1}Object.defineProperty(exports,"__esModule",{value:!0}),exports.isChsPhoneNO=isChsPhoneNO,exports.isPhoneNO=isPhoneNO,exports.isEmail=isEmail;
package/es/boolean.d.ts CHANGED
@@ -5,7 +5,7 @@
5
5
  /**
6
6
  * Y 或者 N。
7
7
  */
8
- export declare type YOrN = 'Y' | 'N';
8
+ export type YOrN = 'Y' | 'N';
9
9
  /**
10
10
  * 布尔值转换为 Y 或者 N。
11
11
  * @param value 布尔值。
package/es/browser.d.ts CHANGED
@@ -1,15 +1,24 @@
1
1
  /**
2
- * 判断当前浏览器是否运行在移动设备上(User-Agent 识别为主,特征判断为辅)。
2
+ * 本模块提供浏览器特性检测相关方法。
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * 检测当前浏览器是否运行在移动设备上(User-Agent 识别为主,特征判断为辅)。
3
7
  * @returns 当前浏览器是否运行在移动设备上。
4
8
  */
5
9
  export declare function isMobile(): boolean;
6
10
  /**
7
- * 判断当前浏览器是否为傲游浏览器。
11
+ * 检测当前浏览器是否具备移动设备特征(特征判断为主,User-Agent 识别为辅)。
12
+ * @returns 当前浏览器是否具备移动设备特征。
13
+ */
14
+ export declare function hasMobileFeature(): boolean;
15
+ /**
16
+ * 检测当前浏览器是否为傲游浏览器。
8
17
  * @returns 当前浏览器是否为傲游浏览器。
9
18
  */
10
- export declare function isMaxthon(): any;
19
+ export declare function isMaxthon(): boolean;
11
20
  /**
12
- * 判断当前浏览器是否支持通过 MSE 播放 H264 视频。
21
+ * 检测当前浏览器是否支持通过 MSE 播放 H264 视频。
13
22
  * @returns 当前浏览器是否支持通过 MSE 播放 H264 视频。
14
23
  */
15
24
  export declare function supportMSEH264(): boolean;
package/es/browser.js CHANGED
@@ -1 +1 @@
1
- export function isMobile(){const t=navigator.userAgent;return!!(/mobile|android/i.test(t)||/\bMacintosh\b/.test(t)&&navigator.maxTouchPoints)||!/\b(Windows\sNT|Macintosh|x86(_(32|64))?|amd64|i[1-6]86)\b/.test(t)&&"onorientationchange"in window}export function isMaxthon(){const t=navigator.userAgent;if(/\bMaxthon\b/i.test(t))return!0;if("maxthon"in window){const t=window.maxthon;return"function"==typeof t.IsMaxthon&&t.IsMaxthon()}return!1}export function supportMSEH264(){const t=window.MediaSource;return t&&"function"==typeof t.isTypeSupported&&t.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}
1
+ export function isMobile(){const n=navigator.userAgent;return!!/mobile|android/i.test(n)||!/\b(Windows\sNT|Macintosh|x86(_(32|64))?|amd64|i[1-6]86)\b/.test(n)&&("onorientationchange"in window&&"number"==typeof window.orientation)}export function hasMobileFeature(){const n=navigator.platform;return"onorientationchange"in window&&"number"==typeof window.orientation||(!!/^(iPhone|iPod|iPad)/.test(n)||"Win32"!==n&&!/^Linux\s*(x86|i686)/.test(n)&&("MacIntel"===n||"Macintosh"===n?navigator.maxTouchPoints>0:"function"==typeof matchMedia&&(matchMedia("(hover: none)").matches&&matchMedia("(pointer: coarse)").matches&&!matchMedia("(pointer: fine)").matches)))}export function isMaxthon(){const n=navigator.userAgent;if(/\bMaxthon\b/i.test(n))return!0;if("maxthon"in window){const n=window.maxthon;return"function"==typeof n.IsMaxthon&&n.IsMaxthon()}return!1}export function supportMSEH264(){const n=window.MediaSource;return n&&"function"==typeof n.isTypeSupported&&n.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"')}
package/es/countdown.d.ts CHANGED
@@ -70,7 +70,7 @@ export declare class Countdown {
70
70
  protected _timerId?: number;
71
71
  /**
72
72
  * 倒计时类构造函数。
73
- * @param secs 倒计时总秒数。
73
+ * @param totalSecs 倒计时总秒数。
74
74
  * @param cb 剩余时长的回调函数,正常情况下大概 1 秒回调一次。
75
75
  */
76
76
  constructor(totalSecs: number, cb: ICountdownCallback);
package/es/event.d.ts CHANGED
@@ -59,15 +59,15 @@
59
59
  /**
60
60
  * 事件类型
61
61
  */
62
- export declare type EventType = number | string | symbol;
62
+ export type EventType = number | string | symbol;
63
63
  /**
64
64
  * 事件参数关系类型
65
65
  */
66
- export declare type EventRelationsType = Record<EventType, unknown>;
66
+ export type EventRelationsType = Record<EventType, unknown>;
67
67
  /**
68
68
  * 事件回调函数类型
69
69
  */
70
- export declare type EventHandler<Relations extends EventRelationsType, E extends EventType> = (params: Relations[E]) => unknown;
70
+ export type EventHandler<Relations extends EventRelationsType, E extends EventType> = (params: Relations[E]) => unknown;
71
71
  export declare class EventEmitter<Relations extends EventRelationsType = EventRelationsType, Events extends EventType = string> {
72
72
  /**
73
73
  * 事件回调存储器
package/es/file.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * 本模块提供文件处理相关方法。
3
+ * @packageDocumentation
4
+ */
5
+ /**
6
+ * 文件体积单位。
7
+ */
8
+ export declare enum FileSizeUnit {
9
+ B = "B",
10
+ KB = "KB",
11
+ MB = "MB",
12
+ GB = "GB",
13
+ TB = "TB"
14
+ }
15
+ /**
16
+ * 文件体积转换选项。
17
+ */
18
+ export interface FileSizeConversionOptions {
19
+ /**
20
+ * 目标单位。
21
+ */
22
+ unit: FileSizeUnit;
23
+ /**
24
+ * 是否允许纯小数。
25
+ * 如果不允许,则在保证转换目标值大于 1 的前提下,以距离目标单位最近的单位进行转换。
26
+ * 默认为允许。
27
+ */
28
+ allowPureDecimal?: boolean;
29
+ }
30
+ /**
31
+ * 文件体积转换结果。
32
+ */
33
+ export interface FileSizeConversionResult {
34
+ /**
35
+ * 转过结果的值。
36
+ */
37
+ value: number;
38
+ /**
39
+ * 转换结果的单位。
40
+ */
41
+ unit: FileSizeUnit;
42
+ }
43
+ /**
44
+ * 转换文件体积。
45
+ * @param sizeInBytes 以字节为单位的文件体积值。
46
+ * @param options 转换选项。
47
+ * @returns 转换结果。
48
+ */
49
+ export declare function convertFileSize(sizeInBytes: number, options: FileSizeUnit | FileSizeConversionOptions): FileSizeConversionResult;
package/es/file.js ADDED
@@ -0,0 +1 @@
1
+ export var FileSizeUnit;!function(i){i.B="B",i.KB="KB",i.MB="MB",i.GB="GB",i.TB="TB"}(FileSizeUnit||(FileSizeUnit={}));export function convertFileSize(i,e){const t="object"==typeof e?Object.assign({},e):{unit:e};if(!t.unit)throw new Error("Please specify file size unit");const n=[FileSizeUnit.B,FileSizeUnit.KB,FileSizeUnit.MB,FileSizeUnit.GB,FileSizeUnit.TB],l={value:i,unit:t.unit};return n.some(((e,o)=>{const B=i/Math.pow(1024,o);return!1===t.allowPureDecimal&&B<1||(l.value=B,l.unit=e,t.unit===e||o===n.length)})),l}
package/es/string.d.ts CHANGED
@@ -91,8 +91,8 @@ export declare function randomStr(length: number, prefix?: string): string;
91
91
  export declare function uuidV4(): string;
92
92
  /**
93
93
  * 版本号对比。
94
- * @param versionA 待比较版本 A。
95
- * @param versionB 待比较版本 B。
94
+ * @param verA 待比较版本 A。
95
+ * @param verB 待比较版本 B。
96
96
  * @return 大于 0 时,表示版本 A 大于版本 B;
97
97
  * 小于 0 时,表示版本 B 大于版本 A;
98
98
  * 等于 0 时,表示两个版本号一致。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyv/utils",
3
- "version": "2.7.0",
3
+ "version": "2.9.0-beta.1",
4
4
  "description": "Utility functions of Polyv frontend development.",
5
5
  "keywords": [
6
6
  "polyv",
@@ -18,8 +18,7 @@
18
18
  },
19
19
  "homepage": "https://polyv.github.io/fed-common-utils/index.html",
20
20
  "engines": {
21
- "node": ">=10.0.0"
21
+ "node": ">=20.0.0"
22
22
  },
23
- "dependencies": {},
24
23
  "miniprogram": "./"
25
24
  }