@polyv/utils 2.19.0-beta.1 → 2.19.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.
@@ -115,6 +115,10 @@ export interface NavigateToLinkOptions {
115
115
  isWxMiniProgramEnv?: () => Promise<boolean | undefined>;
116
116
  /** 跳转微信小程序 */
117
117
  toWxMiniProgram?: (link: string) => void;
118
+ /** 跳转失败回调 */
119
+ failCallback?: () => void;
120
+ /** app 标识 */
121
+ getIsApp?: () => string | undefined;
118
122
  }
119
123
  /**
120
124
  * 检测自定义环境 UA 配置
@@ -130,6 +134,8 @@ export declare function openAppWithFallback(options: {
130
134
  fallbackUrl: string;
131
135
  jumpWay: LinkJumpWay;
132
136
  openLink: (url: string, jumpWay: LinkJumpWay) => void;
137
+ failCallback?: () => void;
138
+ getIsApp?: () => string | undefined;
133
139
  }): void;
134
140
  /**
135
141
  * 格式化链接地址
@@ -1 +1 @@
1
- "use strict";var __awaiter=this&&this.__awaiter||function(i,n,o,e){return new(o||(o=Promise))((function(r,t){function a(i){try{l(e.next(i))}catch(i){t(i)}}function s(i){try{l(e.throw(i))}catch(i){t(i)}}function l(i){var n;i.done?r(i.value):(n=i.value,n instanceof o?n:new o((function(i){i(n)}))).then(a,s)}l((e=e.apply(i,n||[])).next())}))},__generator=this&&this.__generator||function(i,n){var o,e,r,t,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return t={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function s(s){return function(l){return function(s){if(o)throw new TypeError("Generator is already executing.");for(;t&&(t=0,s[0]&&(a=0)),a;)try{if(o=1,e&&(r=2&s[0]?e.return:s[0]?e.throw||((r=e.return)&&r.call(e),0):e.next)&&!(r=r.call(e,s[1])).done)return r;switch(e=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,e=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){a=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]<r[3])){a.label=s[1];break}if(6===s[0]&&a.label<r[1]){a.label=r[1],r=s;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(s);break}r[2]&&a.ops.pop(),a.trys.pop();continue}s=n.call(i,a)}catch(i){s=[6,i],e=0}finally{o=r=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}([s,l])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LinkJumpWay=exports.isPortable=exports.isHarmony=exports.isIOS=exports.isAndroid=void 0,exports.isCustomUA=isCustomUA,exports.openAppWithFallback=openAppWithFallback,exports.formatLink=formatLink,exports.navigateToLink=navigateToLink;var LinkJumpWay,ua_info_1=require("@just4/ua-info"),querystring_1=require("@just4/querystring"),uaInfo=(0,ua_info_1.getCurrentUAInfo)();function isCustomUA(i){var n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((function(i){return n.includes(i.toLowerCase())}))}function openAppWithFallback(i){var n,o=i.iosLink,e=i.androidLink,r=i.harmonyLink,t=i.fallbackUrl,a=i.jumpWay,s=i.openLink,l=Date.now(),u=!1,c=function(){u=!0,window.removeEventListener("blur",c)};if(window.addEventListener("blur",c),console.info("ios\uff1a".concat(exports.isIOS,"\uff0cAndroid\uff1a").concat(exports.isAndroid,"\uff0charmony\uff1a").concat(exports.isHarmony)),exports.isIOS?(console.info("iOSLink",o),n=o):exports.isAndroid?(console.info("Android link",e),n=e):exports.isHarmony&&(console.info("harmony link",r),n=r),!n)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",t),void s(t,a);window.location.href=n,setTimeout((function(){console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86"),window.removeEventListener("blur",c);var i=Date.now()-l;!u&&i<3700&&t&&(console.info("\u964d\u7ea7\u7684 url",t,a),s(t,a))}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function(){var n,o,e,r;return __generator(this,(function(t){switch(t.label){case 0:return n=i.getPlvWebviewSmallWindowSize,o=i.getPlvWebviewBridge,e=(null==n?void 0:n())||{width:90,height:160},[4,null==o?void 0:o()];case 1:return(r=t.sent())?(r.sendData("clickProduct",{width:e.width,height:e.height,newPage:!0,link:i.link,data:i.data}),[2]):[2]}}))}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function(){var n,o,e,r,t,a,s,l,u,c,p,f,k,d,v,m;return __generator(this,(function(w){switch(w.label){case 0:n=i.linkData,o=i.isWxMiniProgramEnv,e=i.toWxMiniProgram,r=i.openLink,t=i.getLinkParams,a=i.isMobile,s=n.wxMiniprogramLink,l=n.pcLink,u=n.iosLink,c=n.androidLink,p=n.harmonyLink,f=n.link,k=n.jumpWay,d=n.mobileAppLink,v=(null==a?void 0:a())||exports.isPortable,console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n),m=!1,w.label=1;case 1:return w.trys.push([1,3,,4]),[4,null==o?void 0:o()];case 2:return m=w.sent()||!1,[3,4];case 3:return w.sent(),m=!1,[3,4];case 4:return m&&e?(console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",s,f),s?e(formatLink(s,t)):r(formatLink(f,t),k),[2]):v?uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp?(r(formatLink(f,t),k),[2]):(openAppWithFallback({iosLink:u,androidLink:c,harmonyLink:p,fallbackUrl:formatLink(d||f,t),jumpWay:k,openLink:r}),[2]):(r(formatLink(l||f,t),k),[2])}}))}))}function formatLink(i,n){var o={};if(n){var e=n(i);o=Object.assign({},o,e)}return(0,querystring_1.concat)(i,o)}function navigateToLink(i){var n=i.linkData,o=i.usePlvWebviewBridge,e=i.openLink,r=i.isPlvWebview,t=i.getPlvWebviewSmallWindowSize,a=i.getPlvWebviewBridge,s=i.isWxMiniProgramEnv,l=i.toWxMiniProgram,u=i.getLinkParams,c=i.isMobile,p=(null==r?void 0:r())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",p),p){var f=n.link,k=n.iosLink,d=n.androidLink,v=n.harmonyLink,m=n.mobileAppLink,w=n.wxMiniprogramOriginalId,L=n.wxMiniprogramLink,b=n.jumpWay,g=m||f;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",m,f),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",o);var h={mobileLink:formatLink(f,u),wxMiniprogramOriginalId:w,wxMiniprogramLink:formatLink(L,u),mobileAppLink:formatLink(m,u)};return o?void toPlvWebviewBridge({link:formatLink(g,u),data:h,getPlvWebviewSmallWindowSize:t,getPlvWebviewBridge:a}):void openAppWithFallback({iosLink:k,androidLink:d,harmonyLink:v,fallbackUrl:formatLink(m||f,u),jumpWay:b,openLink:e})}toMultiPlatformLink({linkData:n,getLinkParams:u,isWxMiniProgramEnv:s,toWxMiniProgram:l,openLink:e,isMobile:c})}exports.isAndroid=uaInfo.os.isAndroid,exports.isIOS=uaInfo.os.isIOS,exports.isHarmony=uaInfo.os.isOpenHarmony,exports.isPortable=uaInfo.isPortable,function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(exports.LinkJumpWay=LinkJumpWay={}));
1
+ "use strict";var __awaiter=this&&this.__awaiter||function(i,n,e,o){return new(e||(e=Promise))((function(r,t){function a(i){try{s(o.next(i))}catch(i){t(i)}}function l(i){try{s(o.throw(i))}catch(i){t(i)}}function s(i){var n;i.done?r(i.value):(n=i.value,n instanceof e?n:new e((function(i){i(n)}))).then(a,l)}s((o=o.apply(i,n||[])).next())}))},__generator=this&&this.__generator||function(i,n){var e,o,r,t,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return t={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function l(l){return function(s){return function(l){if(e)throw new TypeError("Generator is already executing.");for(;t&&(t=0,l[0]&&(a=0)),a;)try{if(e=1,o&&(r=2&l[0]?o.return:l[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,l[1])).done)return r;switch(o=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,o=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==l[0]&&2!==l[0])){a=0;continue}if(3===l[0]&&(!r||l[1]>r[0]&&l[1]<r[3])){a.label=l[1];break}if(6===l[0]&&a.label<r[1]){a.label=r[1],r=l;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(l);break}r[2]&&a.ops.pop(),a.trys.pop();continue}l=n.call(i,a)}catch(i){l=[6,i],o=0}finally{e=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LinkJumpWay=exports.isPortable=exports.isHarmony=exports.isIOS=exports.isAndroid=void 0,exports.isCustomUA=isCustomUA,exports.openAppWithFallback=openAppWithFallback,exports.formatLink=formatLink,exports.navigateToLink=navigateToLink;var LinkJumpWay,ua_info_1=require("@just4/ua-info"),querystring_1=require("@just4/querystring"),uaInfo=(0,ua_info_1.getCurrentUAInfo)();function isCustomUA(i){var n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((function(i){return n.includes(i.toLowerCase())}))}function openAppWithFallback(i){var n=i.iosLink,e=i.androidLink,o=i.harmonyLink,r=i.fallbackUrl,t=i.jumpWay,a=i.openLink,l=i.failCallback,s=i.getIsApp,u=Date.now(),c=null==s?void 0:s();console.info("isApp \u6807\u8bc6",c);var f,p=!1,k=function(){p=!0,window.removeEventListener("blur",k)};if(window.addEventListener("blur",k),console.info("ios\uff1a".concat(exports.isIOS,"\uff0cAndroid\uff1a").concat(exports.isAndroid,"\uff0charmony\uff1a").concat(exports.isHarmony)),exports.isIOS?(console.info("iOSLink",n),f=n):exports.isAndroid?(console.info("Android link",e),f=e):exports.isHarmony&&(console.info("harmony link",o),f=o),!f)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",r),r?void a(r,t):void(null==l||l());window.location.href=f,setTimeout((function(){if(console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86\uff0c\u662f\u5426\u79bb\u5f00\u9875\u9762",p),window.removeEventListener("blur",k),"1"!==c){var i=Date.now()-u;if(!p&&i<3700){if(console.info("\u964d\u7ea7\u7684 url",r,t),!r)return void(null==l||l());a(r,t)}}else console.info("\u5b58\u5728 isApp \u6807\u8bc6\u4e0d\u505a\u964d\u7ea7")}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function(){var n,e,o,r;return __generator(this,(function(t){switch(t.label){case 0:return n=i.getPlvWebviewSmallWindowSize,e=i.getPlvWebviewBridge,o=(null==n?void 0:n())||{width:90,height:160},[4,null==e?void 0:e()];case 1:return(r=t.sent())?(r.sendData("clickProduct",{width:o.width,height:o.height,newPage:!0,link:i.link,data:i.data}),[2]):[2]}}))}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function(){var n,e,o,r,t,a,l,s,u,c,f,p,k,d,v,m,b,L,w;return __generator(this,(function(g){switch(g.label){case 0:n=i.linkData,e=i.isWxMiniProgramEnv,o=i.toWxMiniProgram,r=i.openLink,t=i.getLinkParams,a=i.isMobile,l=i.failCallback,s=i.getIsApp,u=n.wxMiniprogramLink,c=n.pcLink,f=n.iosLink,p=n.androidLink,k=n.harmonyLink,d=n.link,v=n.jumpWay,m=n.mobileAppLink,b=(null==a?void 0:a())||exports.isPortable,console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n),L=!1,g.label=1;case 1:return g.trys.push([1,3,,4]),[4,null==e?void 0:e()];case 2:return L=g.sent()||!1,[3,4];case 3:return g.sent(),L=!1,[3,4];case 4:if(L&&o){if(console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",u,d),u)o(formatLink(u,t));else{if(!d)return null==l||l(),[2];r(formatLink(d,t),v)}return[2]}return b?uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp?d?(r(formatLink(d,t),v),[2]):(null==l||l(),[2]):(console.info("\u6536\u5230 getLinkParams \u53c2\u6570",t),openAppWithFallback({iosLink:f,androidLink:p,harmonyLink:k,fallbackUrl:formatLink(m||d,t),jumpWay:v,openLink:r,failCallback:l,getIsApp:s}),[2]):(w=c||d)?(r(formatLink(w,t),v),[2]):(null==l||l(),[2])}}))}))}function formatLink(i,n){if(!i)return i;var e={};if(n){var o=n(i);console.info("\u5e26\u7684\u53c2\u6570",o),e=Object.assign({},e,o)}return console.info("\u6700\u7ec8\u62fc\u63a5\u7684\u5b57\u7b26\u4e32",(0,querystring_1.concat)(i,e)),(0,querystring_1.concat)(i,e)}function navigateToLink(i){var n=i.linkData,e=i.usePlvWebviewBridge,o=i.openLink,r=i.isPlvWebview,t=i.getPlvWebviewSmallWindowSize,a=i.getPlvWebviewBridge,l=i.isWxMiniProgramEnv,s=i.toWxMiniProgram,u=i.getLinkParams,c=i.isMobile,f=i.failCallback,p=i.getIsApp,k=(null==r?void 0:r())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",k),k){var d=n.link,v=n.iosLink,m=n.androidLink,b=n.harmonyLink,L=n.mobileAppLink,w=n.wxMiniprogramOriginalId,g=n.wxMiniprogramLink,h=n.jumpWay,W=L||d;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",L,d),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",e);var y={mobileLink:formatLink(d,u),wxMiniprogramOriginalId:w,wxMiniprogramLink:formatLink(g,u),mobileAppLink:formatLink(L,u)};return e?W?void toPlvWebviewBridge({link:formatLink(W,u),data:y,getPlvWebviewSmallWindowSize:t,getPlvWebviewBridge:a}):void(null==f||f()):void openAppWithFallback({iosLink:v,androidLink:m,harmonyLink:b,fallbackUrl:formatLink(L||d,u),jumpWay:h,openLink:o,failCallback:f,getIsApp:p})}toMultiPlatformLink({linkData:n,getLinkParams:u,isWxMiniProgramEnv:l,toWxMiniProgram:s,openLink:o,isMobile:c,failCallback:f,getIsApp:p})}exports.isAndroid=uaInfo.os.isAndroid,exports.isIOS=uaInfo.os.isIOS,exports.isHarmony=uaInfo.os.isOpenHarmony,exports.isPortable=uaInfo.isPortable,function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(exports.LinkJumpWay=LinkJumpWay={}));
package/cjs/string.js CHANGED
@@ -1 +1 @@
1
- "use strict";function strLen(n,e){var r,t;"number"==typeof e?e={enLen:1,nonEnLen:e}:((e=e||{}).enLen=null!==(r=e.enLen)&&void 0!==r?r:1,e.nonEnLen=null!==(t=e.nonEnLen)&&void 0!==t?t:2);for(var s=0,i=n.length-1;i>=0;i--)s+=n.charCodeAt(i)>255?e.nonEnLen||0:e.enLen||0;return s}function cutStr(n,e,r){(r=r||{}).enLen=Number(r.enLen)||1,r.nonEnLen=Number(r.nonEnLen)||2,r.ellipsis=r.ellipsis||"...";var t=strLen(n=String(n),r);if(t<=e)return n;e-=strLen(r.ellipsis,r);for(var s="",i=-1;e>0&&++i<t;)(e-=n.charCodeAt(i)>255?r.nonEnLen:r.enLen)>=0&&(s+=n.charAt(i));return s+=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,exports.maskChars=maskChars;var htmlChars=['"',"'","&","<",">"," "],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;","&nbsp;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach((function(n,e){charsToEntities[n]=htmlEntities[e],entitiesToChars[htmlEntities[e]]=n}));var reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");function escapeHTML(n){return null==n?n:String(n).replace(reHTMLChars,(function(n){return charsToEntities[n]}))}function unescapeHTML(n){return null==n?n:String(n).replace(reHTMLEntities,(function(n){return entitiesToChars[n]}))}function removeTags(n){return null==n?"":String(n).replace(/<.+?>/g,"")}function nl2br(n){return null==n?n:String(n).replace(/\r?\n/g,"<br />")}function randomStr(n,e){if(!(n|=0)||n<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<n);return r=r.substr(0,n),null!=e&&(r=e+r),r}function uuidV4(){var n=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(n+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var r=(n+16*Math.random())%16|0;return n=Math.floor(n/16),("x"===e?r:3&r|8).toString(16)}))}function compareVersions(n,e){if(!n||!e)throw new Error("Please specify both verA and verB");for(var r=/(\.0+)+$/,t=String(n).replace(r,"").split("."),s=String(e).replace(r,"").split("."),i=Math.min(t.length,s.length),o=0;o<i;o++){var a=parseInt(t[o])-parseInt(s[o]);if(a)return a}return t.length-s.length}function maskChars(n,e){var r,t,s;e=e||{};var i=n.length,o=null!==(r=e.start)&&void 0!==r?r:0,a=null!==(t=e.end)&&void 0!==t?t:i-1,u=null!==(s=e.maskChar)&&void 0!==s?s:"*";if(o>=0&&a>=0&&o<=a&&a<i){var l=n.substring(0,o);return l+=new Array(a-o+2).join(u),a<i-1&&(l+=n.substring(a+1)),l}if(o>=0)return o>=i?n:n.substring(0,o)+new Array(i-o+1).join(u);if(a>=0){l=new Array(Math.min(a,i)+2).join(u);return a<i-1&&(l+=n.substring(a+1)),l}return n}
1
+ "use strict";function strLen(n,e){var r,t;"number"==typeof e?e={enLen:1,nonEnLen:e}:((e=e||{}).enLen=null!==(r=e.enLen)&&void 0!==r?r:1,e.nonEnLen=null!==(t=e.nonEnLen)&&void 0!==t?t:2);for(var i=0,s=n.length-1;s>=0;s--)i+=n.charCodeAt(s)>255?e.nonEnLen||0:e.enLen||0;return i}function cutStr(n,e,r){var t;(r=r||{}).enLen=Number(r.enLen)||1,r.nonEnLen=Number(r.nonEnLen)||2,r.ellipsis=null!==(t=r.ellipsis)&&void 0!==t?t:"...";var i=strLen(n=String(n),r);if(i<=e)return n;e-=strLen(r.ellipsis,r);for(var s="",o=-1;e>0&&++o<i;)(e-=n.charCodeAt(o)>255?r.nonEnLen:r.enLen)>=0&&(s+=n.charAt(o));return s+=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,exports.maskChars=maskChars;var htmlChars=['"',"'","&","<",">"," "],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;","&nbsp;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach((function(n,e){charsToEntities[n]=htmlEntities[e],entitiesToChars[htmlEntities[e]]=n}));var reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");function escapeHTML(n){return null==n?n:String(n).replace(reHTMLChars,(function(n){return charsToEntities[n]}))}function unescapeHTML(n){return null==n?n:String(n).replace(reHTMLEntities,(function(n){return entitiesToChars[n]}))}function removeTags(n){return null==n?"":String(n).replace(/<.+?>/g,"")}function nl2br(n){return null==n?n:String(n).replace(/\r?\n/g,"<br />")}function randomStr(n,e){if(!(n|=0)||n<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<n);return r=r.substr(0,n),null!=e&&(r=e+r),r}function uuidV4(){var n=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(n+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var r=(n+16*Math.random())%16|0;return n=Math.floor(n/16),("x"===e?r:3&r|8).toString(16)}))}function compareVersions(n,e){if(!n||!e)throw new Error("Please specify both verA and verB");for(var r=/(\.0+)+$/,t=String(n).replace(r,"").split("."),i=String(e).replace(r,"").split("."),s=Math.min(t.length,i.length),o=0;o<s;o++){var a=parseInt(t[o])-parseInt(i[o]);if(a)return a}return t.length-i.length}function maskChars(n,e){var r,t,i;e=e||{};var s=n.length,o=null!==(r=e.start)&&void 0!==r?r:0,a=null!==(t=e.end)&&void 0!==t?t:s-1,u=null!==(i=e.maskChar)&&void 0!==i?i:"*";if(o>=0&&a>=0&&o<=a&&a<s){var l=n.substring(0,o);return l+=new Array(a-o+2).join(u),a<s-1&&(l+=n.substring(a+1)),l}if(o>=0)return o>=s?n:n.substring(0,o)+new Array(s-o+1).join(u);if(a>=0){l=new Array(Math.min(a,s)+2).join(u);return a<s-1&&(l+=n.substring(a+1)),l}return n}
@@ -115,6 +115,10 @@ export interface NavigateToLinkOptions {
115
115
  isWxMiniProgramEnv?: () => Promise<boolean | undefined>;
116
116
  /** 跳转微信小程序 */
117
117
  toWxMiniProgram?: (link: string) => void;
118
+ /** 跳转失败回调 */
119
+ failCallback?: () => void;
120
+ /** app 标识 */
121
+ getIsApp?: () => string | undefined;
118
122
  }
119
123
  /**
120
124
  * 检测自定义环境 UA 配置
@@ -130,6 +134,8 @@ export declare function openAppWithFallback(options: {
130
134
  fallbackUrl: string;
131
135
  jumpWay: LinkJumpWay;
132
136
  openLink: (url: string, jumpWay: LinkJumpWay) => void;
137
+ failCallback?: () => void;
138
+ getIsApp?: () => string | undefined;
133
139
  }): void;
134
140
  /**
135
141
  * 格式化链接地址
@@ -1 +1 @@
1
- var __awaiter=this&&this.__awaiter||function(i,n,o,e){return new(o||(o=Promise))((function(t,r){function a(i){try{s(e.next(i))}catch(i){r(i)}}function l(i){try{s(e.throw(i))}catch(i){r(i)}}function s(i){var n;i.done?t(i.value):(n=i.value,n instanceof o?n:new o((function(i){i(n)}))).then(a,l)}s((e=e.apply(i,n||[])).next())}))};import{getCurrentUAInfo}from"@just4/ua-info";import{concat}from"@just4/querystring";const uaInfo=getCurrentUAInfo();export const isAndroid=uaInfo.os.isAndroid;export const isIOS=uaInfo.os.isIOS;export const isHarmony=uaInfo.os.isOpenHarmony;export const isPortable=uaInfo.isPortable;export var LinkJumpWay;!function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(LinkJumpWay={}));export function isCustomUA(i){const n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((i=>n.includes(i.toLowerCase())))}export function openAppWithFallback(i){const{iosLink:n,androidLink:o,harmonyLink:e,fallbackUrl:t,jumpWay:r,openLink:a}=i,l=Date.now();let s=!1;const c=()=>{s=!0,window.removeEventListener("blur",c)};let k;if(window.addEventListener("blur",c),console.info(`ios\uff1a${isIOS}\uff0cAndroid\uff1a${isAndroid}\uff0charmony\uff1a${isHarmony}`),isIOS?(console.info("iOSLink",n),k=n):isAndroid?(console.info("Android link",o),k=o):isHarmony&&(console.info("harmony link",e),k=e),!k)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",t),void a(t,r);window.location.href=k,setTimeout((()=>{console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86"),window.removeEventListener("blur",c);const i=Date.now()-l;!s&&i<3700&&t&&(console.info("\u964d\u7ea7\u7684 url",t,r),a(t,r))}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function*(){const{getPlvWebviewSmallWindowSize:n,getPlvWebviewBridge:o}=i,e=(null==n?void 0:n())||{width:90,height:160},t=yield null==o?void 0:o();t&&t.sendData("clickProduct",{width:e.width,height:e.height,newPage:!0,link:i.link,data:i.data})}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function*(){const{linkData:n,isWxMiniProgramEnv:o,toWxMiniProgram:e,openLink:t,getLinkParams:r,isMobile:a}=i,{wxMiniprogramLink:l,pcLink:s,iosLink:c,androidLink:k,harmonyLink:u,link:d,jumpWay:f,mobileAppLink:m}=n,L=(null==a?void 0:a())||isPortable;console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n);let p=!1;try{p=(yield null==o?void 0:o())||!1}catch(i){p=!1}if(p&&e)return console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",l,d),void(l?e(formatLink(l,r)):t(formatLink(d,r),f));L?uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp?t(formatLink(d,r),f):openAppWithFallback({iosLink:c,androidLink:k,harmonyLink:u,fallbackUrl:formatLink(m||d,r),jumpWay:f,openLink:t}):t(formatLink(s||d,r),f)}))}export function formatLink(i,n){let o={};if(n){const e=n(i);o=Object.assign({},o,e)}return concat(i,o)}export function navigateToLink(i){const{linkData:n,usePlvWebviewBridge:o,openLink:e,isPlvWebview:t,getPlvWebviewSmallWindowSize:r,getPlvWebviewBridge:a,isWxMiniProgramEnv:l,toWxMiniProgram:s,getLinkParams:c,isMobile:k}=i,u=(null==t?void 0:t())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",u),u){const{link:i,iosLink:t,androidLink:l,harmonyLink:s,mobileAppLink:k,wxMiniprogramOriginalId:u,wxMiniprogramLink:d,jumpWay:f}=n,m=k||i;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",k,i),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",o);const L={mobileLink:formatLink(i,c),wxMiniprogramOriginalId:u,wxMiniprogramLink:formatLink(d,c),mobileAppLink:formatLink(k,c)};return o?void toPlvWebviewBridge({link:formatLink(m,c),data:L,getPlvWebviewSmallWindowSize:r,getPlvWebviewBridge:a}):void openAppWithFallback({iosLink:t,androidLink:l,harmonyLink:s,fallbackUrl:formatLink(k||i,c),jumpWay:f,openLink:e})}toMultiPlatformLink({linkData:n,getLinkParams:c,isWxMiniProgramEnv:l,toWxMiniProgram:s,openLink:e,isMobile:k})}
1
+ var __awaiter=this&&this.__awaiter||function(i,n,o,e){return new(o||(o=Promise))((function(t,a){function r(i){try{s(e.next(i))}catch(i){a(i)}}function l(i){try{s(e.throw(i))}catch(i){a(i)}}function s(i){var n;i.done?t(i.value):(n=i.value,n instanceof o?n:new o((function(i){i(n)}))).then(r,l)}s((e=e.apply(i,n||[])).next())}))};import{getCurrentUAInfo}from"@just4/ua-info";import{concat}from"@just4/querystring";const uaInfo=getCurrentUAInfo();export const isAndroid=uaInfo.os.isAndroid;export const isIOS=uaInfo.os.isIOS;export const isHarmony=uaInfo.os.isOpenHarmony;export const isPortable=uaInfo.isPortable;export var LinkJumpWay;!function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(LinkJumpWay={}));export function isCustomUA(i){const n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((i=>n.includes(i.toLowerCase())))}export function openAppWithFallback(i){const{iosLink:n,androidLink:o,harmonyLink:e,fallbackUrl:t,jumpWay:a,openLink:r,failCallback:l,getIsApp:s}=i,c=Date.now(),f=null==s?void 0:s();console.info("isApp \u6807\u8bc6",f);let u=!1;const k=()=>{u=!0,window.removeEventListener("blur",k)};let d;if(window.addEventListener("blur",k),console.info(`ios\uff1a${isIOS}\uff0cAndroid\uff1a${isAndroid}\uff0charmony\uff1a${isHarmony}`),isIOS?(console.info("iOSLink",n),d=n):isAndroid?(console.info("Android link",o),d=o):isHarmony&&(console.info("harmony link",e),d=e),!d)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",t),t?void r(t,a):void(null==l||l());window.location.href=d,setTimeout((()=>{if(console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86\uff0c\u662f\u5426\u79bb\u5f00\u9875\u9762",u),window.removeEventListener("blur",k),"1"===f)return void console.info("\u5b58\u5728 isApp \u6807\u8bc6\u4e0d\u505a\u964d\u7ea7");const i=Date.now()-c;if(!u&&i<3700){if(console.info("\u964d\u7ea7\u7684 url",t,a),!t)return void(null==l||l());r(t,a)}}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function*(){const{getPlvWebviewSmallWindowSize:n,getPlvWebviewBridge:o}=i,e=(null==n?void 0:n())||{width:90,height:160},t=yield null==o?void 0:o();t&&t.sendData("clickProduct",{width:e.width,height:e.height,newPage:!0,link:i.link,data:i.data})}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function*(){const{linkData:n,isWxMiniProgramEnv:o,toWxMiniProgram:e,openLink:t,getLinkParams:a,isMobile:r,failCallback:l,getIsApp:s}=i,{wxMiniprogramLink:c,pcLink:f,iosLink:u,androidLink:k,harmonyLink:d,link:p,jumpWay:m,mobileAppLink:v}=n,L=(null==r?void 0:r())||isPortable;console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n);let w=!1;try{w=(yield null==o?void 0:o())||!1}catch(i){w=!1}if(w&&e)if(console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",c,p),c)e(formatLink(c,a));else{if(!p)return void(null==l||l());t(formatLink(p,a),m)}else{if(!L){const i=f||p;return i?void t(formatLink(i,a),m):void(null==l||l())}if(uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp)return p?void t(formatLink(p,a),m):void(null==l||l());console.info("\u6536\u5230 getLinkParams \u53c2\u6570",a),openAppWithFallback({iosLink:u,androidLink:k,harmonyLink:d,fallbackUrl:formatLink(v||p,a),jumpWay:m,openLink:t,failCallback:l,getIsApp:s})}}))}export function formatLink(i,n){if(!i)return i;let o={};if(n){const e=n(i);console.info("\u5e26\u7684\u53c2\u6570",e),o=Object.assign({},o,e)}return console.info("\u6700\u7ec8\u62fc\u63a5\u7684\u5b57\u7b26\u4e32",concat(i,o)),concat(i,o)}export function navigateToLink(i){const{linkData:n,usePlvWebviewBridge:o,openLink:e,isPlvWebview:t,getPlvWebviewSmallWindowSize:a,getPlvWebviewBridge:r,isWxMiniProgramEnv:l,toWxMiniProgram:s,getLinkParams:c,isMobile:f,failCallback:u,getIsApp:k}=i,d=(null==t?void 0:t())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",d),d){const{link:i,iosLink:t,androidLink:l,harmonyLink:s,mobileAppLink:f,wxMiniprogramOriginalId:d,wxMiniprogramLink:p,jumpWay:m}=n,v=f||i;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",f,i),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",o);const L={mobileLink:formatLink(i,c),wxMiniprogramOriginalId:d,wxMiniprogramLink:formatLink(p,c),mobileAppLink:formatLink(f,c)};return o?v?void toPlvWebviewBridge({link:formatLink(v,c),data:L,getPlvWebviewSmallWindowSize:a,getPlvWebviewBridge:r}):void(null==u||u()):void openAppWithFallback({iosLink:t,androidLink:l,harmonyLink:s,fallbackUrl:formatLink(f||i,c),jumpWay:m,openLink:e,failCallback:u,getIsApp:k})}toMultiPlatformLink({linkData:n,getLinkParams:c,isWxMiniProgramEnv:l,toWxMiniProgram:s,openLink:e,isMobile:f,failCallback:u,getIsApp:k})}
package/es/string.js CHANGED
@@ -1 +1 @@
1
- export function strLen(n,e){var t,r;"number"==typeof e?e={enLen:1,nonEnLen:e}:((e=e||{}).enLen=null!==(t=e.enLen)&&void 0!==t?t:1,e.nonEnLen=null!==(r=e.nonEnLen)&&void 0!==r?r:2);let o=0;for(let t=n.length-1;t>=0;t--)o+=n.charCodeAt(t)>255?e.nonEnLen||0:e.enLen||0;return o}export function cutStr(n,e,t){(t=t||{}).enLen=Number(t.enLen)||1,t.nonEnLen=Number(t.nonEnLen)||2,t.ellipsis=t.ellipsis||"...";const r=strLen(n=String(n),t);if(r<=e)return n;e-=strLen(t.ellipsis,t);let o="",i=-1;for(;e>0&&++i<r;)(e-=n.charCodeAt(i)>255?t.nonEnLen:t.enLen)>=0&&(o+=n.charAt(i));return o+=t.ellipsis,o}const htmlChars=['"',"'","&","<",">"," "],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;","&nbsp;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach(((n,e)=>{charsToEntities[n]=htmlEntities[e],entitiesToChars[htmlEntities[e]]=n}));const reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");export function escapeHTML(n){return null==n?n:String(n).replace(reHTMLChars,(n=>charsToEntities[n]))}export function unescapeHTML(n){return null==n?n:String(n).replace(reHTMLEntities,(n=>entitiesToChars[n]))}export function removeTags(n){return null==n?"":String(n).replace(/<.+?>/g,"")}export function nl2br(n){return null==n?n:String(n).replace(/\r?\n/g,"<br />")}export function randomStr(n,e){if(!(n|=0)||n<0)throw new Error('"length" must be a number greater than 0');let t="";do{t+=Math.random().toString(36).substr(2)}while(t.length<n);return t=t.substr(0,n),null!=e&&(t=e+t),t}export function uuidV4(){let n=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(n+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=(n+16*Math.random())%16|0;return n=Math.floor(n/16),("x"===e?t:3&t|8).toString(16)}))}export function compareVersions(n,e){if(!n||!e)throw new Error("Please specify both verA and verB");const t=/(\.0+)+$/,r=String(n).replace(t,"").split("."),o=String(e).replace(t,"").split("."),i=Math.min(r.length,o.length);for(let n=0;n<i;n++){const e=parseInt(r[n])-parseInt(o[n]);if(e)return e}return r.length-o.length}export function maskChars(n,e){var t,r,o;e=e||{};const i=n.length,s=null!==(t=e.start)&&void 0!==t?t:0,l=null!==(r=e.end)&&void 0!==r?r:i-1,a=null!==(o=e.maskChar)&&void 0!==o?o:"*";if(s>=0&&l>=0&&s<=l&&l<i){let e=n.substring(0,s);return e+=new Array(l-s+2).join(a),l<i-1&&(e+=n.substring(l+1)),e}if(s>=0)return s>=i?n:n.substring(0,s)+new Array(i-s+1).join(a);if(l>=0){let e=new Array(Math.min(l,i)+2).join(a);return l<i-1&&(e+=n.substring(l+1)),e}return n}
1
+ export function strLen(n,e){var t,r;"number"==typeof e?e={enLen:1,nonEnLen:e}:((e=e||{}).enLen=null!==(t=e.enLen)&&void 0!==t?t:1,e.nonEnLen=null!==(r=e.nonEnLen)&&void 0!==r?r:2);let o=0;for(let t=n.length-1;t>=0;t--)o+=n.charCodeAt(t)>255?e.nonEnLen||0:e.enLen||0;return o}export function cutStr(n,e,t){var r;(t=t||{}).enLen=Number(t.enLen)||1,t.nonEnLen=Number(t.nonEnLen)||2,t.ellipsis=null!==(r=t.ellipsis)&&void 0!==r?r:"...";const o=strLen(n=String(n),t);if(o<=e)return n;e-=strLen(t.ellipsis,t);let i="",l=-1;for(;e>0&&++l<o;)(e-=n.charCodeAt(l)>255?t.nonEnLen:t.enLen)>=0&&(i+=n.charAt(l));return i+=t.ellipsis,i}const htmlChars=['"',"'","&","<",">"," "],htmlEntities=["&quot;","&#39;","&amp;","&lt;","&gt;","&nbsp;"],charsToEntities=Object.create(null),entitiesToChars=Object.create(null);htmlChars.forEach(((n,e)=>{charsToEntities[n]=htmlEntities[e],entitiesToChars[htmlEntities[e]]=n}));const reHTMLChars=new RegExp("["+htmlChars.join("")+"]","g"),reHTMLEntities=new RegExp("("+htmlEntities.join("|")+")","g");export function escapeHTML(n){return null==n?n:String(n).replace(reHTMLChars,(n=>charsToEntities[n]))}export function unescapeHTML(n){return null==n?n:String(n).replace(reHTMLEntities,(n=>entitiesToChars[n]))}export function removeTags(n){return null==n?"":String(n).replace(/<.+?>/g,"")}export function nl2br(n){return null==n?n:String(n).replace(/\r?\n/g,"<br />")}export function randomStr(n,e){if(!(n|=0)||n<0)throw new Error('"length" must be a number greater than 0');let t="";do{t+=Math.random().toString(36).substr(2)}while(t.length<n);return t=t.substr(0,n),null!=e&&(t=e+t),t}export function uuidV4(){let n=Date.now();return"undefined"!=typeof performance&&"function"==typeof performance.now&&(n+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=(n+16*Math.random())%16|0;return n=Math.floor(n/16),("x"===e?t:3&t|8).toString(16)}))}export function compareVersions(n,e){if(!n||!e)throw new Error("Please specify both verA and verB");const t=/(\.0+)+$/,r=String(n).replace(t,"").split("."),o=String(e).replace(t,"").split("."),i=Math.min(r.length,o.length);for(let n=0;n<i;n++){const e=parseInt(r[n])-parseInt(o[n]);if(e)return e}return r.length-o.length}export function maskChars(n,e){var t,r,o;e=e||{};const i=n.length,l=null!==(t=e.start)&&void 0!==t?t:0,s=null!==(r=e.end)&&void 0!==r?r:i-1,a=null!==(o=e.maskChar)&&void 0!==o?o:"*";if(l>=0&&s>=0&&l<=s&&s<i){let e=n.substring(0,l);return e+=new Array(s-l+2).join(a),s<i-1&&(e+=n.substring(s+1)),e}if(l>=0)return l>=i?n:n.substring(0,l)+new Array(i-l+1).join(a);if(s>=0){let e=new Array(Math.min(s,i)+2).join(a);return s<i-1&&(e+=n.substring(s+1)),e}return n}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polyv/utils",
3
- "version": "2.19.0-beta.1",
3
+ "version": "2.19.0",
4
4
  "description": "Utility functions of Polyv frontend development.",
5
5
  "keywords": [
6
6
  "polyv",