UNPKG

@ezuikit/utils-collect

Version:

collect utils

9 lines (8 loc) 13.4 kB
/* * * @ezuikit/utils-collect v0.1.1 * Copyright (c) 2025-4-15 Ezviz-OpenBiz * Released under MIT the License. * */ "use strict";var e,n,r,i,o=(e="undefined"!=typeof self?self:window,n={navigator:void 0!==e.navigator?e.navigator:{userAgent:""},infoMap:{engine:["WebKit","Trident","Gecko","Presto"],browser:["Safari","Chrome","Edge","IE","Firefox","Firefox Focus","Chromium","Opera","Vivaldi","Yandex","Arora","Lunascape","QupZilla","Coc Coc","Kindle","Iceweasel","Konqueror","Iceape","SeaMonkey","Epiphany","360","360SE","360EE","UC","QQBrowser","QQ","Baidu","Maxthon","Sogou","LBBROWSER","2345Explorer","TheWorld","XiaoMi","Quark","Qiyu","Wechat","Taobao","Alipay","Weibo","Douban","Suning","iQiYi"],os:["Windows","Linux","Mac OS","Android","Ubuntu","FreeBSD","Debian","iOS","Windows Phone","BlackBerry","MeeGo","Symbian","Chrome OS","WebOS"],device:["Mobile","Tablet","iPad"]}},r={getMatchMap:function(e){return{Trident:e.indexOf("Trident")>-1||e.indexOf("NET CLR")>-1,Presto:e.indexOf("Presto")>-1,WebKit:e.indexOf("AppleWebKit")>-1,Gecko:e.indexOf("Gecko/")>-1,Safari:e.indexOf("Safari")>-1,Chrome:e.indexOf("Chrome")>-1||e.indexOf("CriOS")>-1,IE:e.indexOf("MSIE")>-1||e.indexOf("Trident")>-1,Edge:e.indexOf("Edge")>-1,Firefox:e.indexOf("Firefox")>-1||e.indexOf("FxiOS")>-1,"Firefox Focus":e.indexOf("Focus")>-1,Chromium:e.indexOf("Chromium")>-1,Opera:e.indexOf("Opera")>-1||e.indexOf("OPR")>-1,Vivaldi:e.indexOf("Vivaldi")>-1,Yandex:e.indexOf("YaBrowser")>-1,Arora:e.indexOf("Arora")>-1,Lunascape:e.indexOf("Lunascape")>-1,QupZilla:e.indexOf("QupZilla")>-1,"Coc Coc":e.indexOf("coc_coc_browser")>-1,Kindle:e.indexOf("Kindle")>-1||e.indexOf("Silk/")>-1,Iceweasel:e.indexOf("Iceweasel")>-1,Konqueror:e.indexOf("Konqueror")>-1,Iceape:e.indexOf("Iceape")>-1,SeaMonkey:e.indexOf("SeaMonkey")>-1,Epiphany:e.indexOf("Epiphany")>-1,360:e.indexOf("QihooBrowser")>-1||e.indexOf("QHBrowser")>-1,"360EE":e.indexOf("360EE")>-1,"360SE":e.indexOf("360SE")>-1,UC:e.indexOf("UC")>-1||e.indexOf(" UBrowser")>-1,QQBrowser:e.indexOf("QQBrowser")>-1,QQ:e.indexOf("QQ/")>-1,Baidu:e.indexOf("Baidu")>-1||e.indexOf("BIDUBrowser")>-1,Maxthon:e.indexOf("Maxthon")>-1,Sogou:e.indexOf("MetaSr")>-1||e.indexOf("Sogou")>-1,LBBROWSER:e.indexOf("LBBROWSER")>-1,"2345Explorer":e.indexOf("2345Explorer")>-1,TheWorld:e.indexOf("TheWorld")>-1,XiaoMi:e.indexOf("MiuiBrowser")>-1,Quark:e.indexOf("Quark")>-1,Qiyu:e.indexOf("Qiyu")>-1,Wechat:e.indexOf("MicroMessenger")>-1,Taobao:e.indexOf("AliApp(TB")>-1,Alipay:e.indexOf("AliApp(AP")>-1,Weibo:e.indexOf("Weibo")>-1,Douban:e.indexOf("com.douban.frodo")>-1,Suning:e.indexOf("SNEBUY-APP")>-1,iQiYi:e.indexOf("IqiyiApp")>-1,Windows:e.indexOf("Windows")>-1,Linux:e.indexOf("Linux")>-1||e.indexOf("X11")>-1,"Mac OS":e.indexOf("Macintosh")>-1,Android:e.indexOf("Android")>-1||e.indexOf("Adr")>-1,Ubuntu:e.indexOf("Ubuntu")>-1,FreeBSD:e.indexOf("FreeBSD")>-1,Debian:e.indexOf("Debian")>-1,"Windows Phone":e.indexOf("IEMobile")>-1||e.indexOf("Windows Phone")>-1,BlackBerry:e.indexOf("BlackBerry")>-1||e.indexOf("RIM")>-1,MeeGo:e.indexOf("MeeGo")>-1,Symbian:e.indexOf("Symbian")>-1,iOS:e.indexOf("like Mac OS X")>-1,"Chrome OS":e.indexOf("CrOS")>-1,WebOS:e.indexOf("hpwOS")>-1,Mobile:e.indexOf("Mobi")>-1||e.indexOf("iPh")>-1||e.indexOf("480")>-1,Tablet:e.indexOf("Tablet")>-1||e.indexOf("Nexus 7")>-1,iPad:e.indexOf("iPad")>-1}},matchInfoMap:function(e){var i,o=(null==(i=n.navigator)?void 0:i.userAgent)||"",t=r.getMatchMap(o);for(var a in n.infoMap)for(var c=0;c<n.infoMap[a].length;c++){var u=n.infoMap[a][c];t[u]&&(e[a]=u)}},getOS:function(){var e=this;return r.matchInfoMap(e),null==e?void 0:e.os},getOSVersion:function(){var e=this,r=n.navigator.userAgent||"";e.osVersion="";var i={Windows:function(){var e=r.replace(/^.*Windows NT ([\d.]+);.*$/,"$1");return{6.4:"10",6.3:"8.1",6.2:"8",6.1:"7","6.0":"Vista",5.2:"XP",5.1:"XP","5.0":"2000"}[e]||e},Android:function(){return r.replace(/^.*Android ([\d.]+);.*$/,"$1")},iOS:function(){return r.replace(/^.*OS ([\d_]+) like.*$/,"$1").replace(/_/g,".")},Debian:function(){return r.replace(/^.*Debian\/([\d.]+).*$/,"$1")},"Windows Phone":function(){return r.replace(/^.*Windows Phone( OS)? ([\d.]+);.*$/,"$2")},"Mac OS":function(){return r.replace(/^.*Mac OS X ([\d_]+).*$/,"$1").replace(/_/g,".")},WebOS:function(){return r.replace(/^.*hpwOS\/([\d.]+);.*$/,"$1")}};return"function"==typeof i[e.os]&&(e.osVersion=i[e.os](),e.osVersion==r&&(e.osVersion="")),e.osVersion},getOrientationStatu:function(){return window.matchMedia("(orientation: portrait)").matches?"vertical":"horizontal"},getDeviceType:function(){var e=this;return e.device="PC",r.matchInfoMap(e),e.device},getNetwork:function(){var e,n,r,i;return null==(e=(null==(n=navigator)?void 0:n.connection)||(null==(r=navigator)?void 0:r.mozConnection)||(null==(i=navigator)?void 0:i.webkitConnection))?void 0:e.effectiveType},getLanguage:function(){var e,r,i;return this.language=((i=((null==(e=n.navigator)?void 0:e.browserLanguage)||(null==(r=n.navigator)?void 0:r.language)).split("-"))[1]&&(i[1]=i[1].toUpperCase()),i.join("_")),this.language},createFingerprint:function(e){var n=document.createElement("canvas"),r=n.getContext("2d"),i=e||window.location.host;r.textBaseline="top",r.font="14px 'Arial'",r.fillStyle="#f60",r.fillRect(125,1,62,20),r.fillStyle="#069",r.fillText(i,2,15),r.fillStyle="rgba(102, 204, 0, 0.7)",r.fillText(i,4,17);var o=n.toDataURL().replace("data:image/png;base64,","");return function(e){var n,r,i,o="";for(n=0,r=(e+="").length;n<r;n++)o+=(i=e.charCodeAt(n).toString(16)).length<2?"0"+i:i;return o}(atob(o).slice(-16,-12))},getBrowserInfo:function(){var i=this;r.matchInfoMap(i);var o=n.navigator.userAgent||"",t=function(e,r){var i=n.navigator.mimeTypes;for(var o in i)if(i[o][e]==r)return!0;return!1},a=r.getMatchMap(o),c=!1;if(e.chrome){var u=o.replace(/^.*Chrome\/([\d]+).*$/,"$1");+u>36&&e.showModalDialog?c=!0:+u>45&&(c=t("type","application/vnd.chromium.remoting-viewer"))}if(a.Baidu&&a.Opera&&(a.Baidu=!1),a.Mobile&&(a.Mobile=!o.includes("iPad")),c&&(t("type","application/gameplugin")||n.navigator&&void 0===n.navigator.connection.saveData?a["360SE"]=!0:a["360EE"]=!0),a.IE||a.Edge)switch(window.screenTop-window.screenY){case 71:case 74:case 99:case 75:case 105:break;case 102:a["360EE"]=!0;break;case 104:a["360SE"]=!0}var d={Safari:function(){return o.replace(/^.*Version\/([\d.]+).*$/,"$1")},Chrome:function(){return o.replace(/^.*Chrome\/([\d.]+).*$/,"$1").replace(/^.*CriOS\/([\d.]+).*$/,"$1")},IE:function(){return o.replace(/^.*MSIE ([\d.]+).*$/,"$1").replace(/^.*rv:([\d.]+).*$/,"$1")},Edge:function(){return o.replace(/^.*Edge\/([\d.]+).*$/,"$1")},Firefox:function(){return o.replace(/^.*Firefox\/([\d.]+).*$/,"$1").replace(/^.*FxiOS\/([\d.]+).*$/,"$1")},"Firefox Focus":function(){return o.replace(/^.*Focus\/([\d.]+).*$/,"$1")},Chromium:function(){return o.replace(/^.*Chromium\/([\d.]+).*$/,"$1")},Opera:function(){return o.replace(/^.*Opera\/([\d.]+).*$/,"$1").replace(/^.*OPR\/([\d.]+).*$/,"$1")},Vivaldi:function(){return o.replace(/^.*Vivaldi\/([\d.]+).*$/,"$1")},Yandex:function(){return o.replace(/^.*YaBrowser\/([\d.]+).*$/,"$1")},Arora:function(){return o.replace(/^.*Arora\/([\d.]+).*$/,"$1")},Lunascape:function(){return o.replace(/^.*Lunascape[\/\s]([\d.]+).*$/,"$1")},QupZilla:function(){return o.replace(/^.*QupZilla[\/\s]([\d.]+).*$/,"$1")},"Coc Coc":function(){return o.replace(/^.*coc_coc_browser\/([\d.]+).*$/,"$1")},Kindle:function(){return o.replace(/^.*Version\/([\d.]+).*$/,"$1")},Iceweasel:function(){return o.replace(/^.*Iceweasel\/([\d.]+).*$/,"$1")},Konqueror:function(){return o.replace(/^.*Konqueror\/([\d.]+).*$/,"$1")},Iceape:function(){return o.replace(/^.*Iceape\/([\d.]+).*$/,"$1")},SeaMonkey:function(){return o.replace(/^.*SeaMonkey\/([\d.]+).*$/,"$1")},Epiphany:function(){return o.replace(/^.*Epiphany\/([\d.]+).*$/,"$1")},360:function(){return o.replace(/^.*QihooBrowser\/([\d.]+).*$/,"$1")},"360SE":function(){return{63:"10.0",55:"9.1",45:"8.1",42:"8.0",31:"7.0",21:"6.3"}[+o.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"360EE":function(){return{69:"11.0",63:"9.5",55:"9.0",50:"8.7",30:"7.5"}[+o.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},Maxthon:function(){return o.replace(/^.*Maxthon\/([\d.]+).*$/,"$1")},QQBrowser:function(){return o.replace(/^.*QQBrowser\/([\d.]+).*$/,"$1")},QQ:function(){return o.replace(/^.*QQ\/([\d.]+).*$/,"$1")},Baidu:function(){return o.replace(/^.*BIDUBrowser[\s\/]([\d.]+).*$/,"$1")},UC:function(){return o.replace(/^.*UC?Browser\/([\d.]+).*$/,"$1")},Sogou:function(){return o.replace(/^.*SE ([\d.X]+).*$/,"$1").replace(/^.*SogouMobileBrowser\/([\d.]+).*$/,"$1")},LBBROWSER:function(){return{57:"6.5",49:"6.0",46:"5.9",42:"5.3",39:"5.2",34:"5.0",29:"4.5",21:"4.0"}[+navigator.userAgent.replace(/^.*Chrome\/([\d]+).*$/,"$1")]||""},"2345Explorer":function(){return o.replace(/^.*2345Explorer\/([\d.]+).*$/,"$1")},TheWorld:function(){return o.replace(/^.*TheWorld ([\d.]+).*$/,"$1")},XiaoMi:function(){return o.replace(/^.*MiuiBrowser\/([\d.]+).*$/,"$1")},Quark:function(){return o.replace(/^.*Quark\/([\d.]+).*$/,"$1")},Qiyu:function(){return o.replace(/^.*Qiyu\/([\d.]+).*$/,"$1")},Wechat:function(){return o.replace(/^.*MicroMessenger\/([\d.]+).*$/,"$1")},Taobao:function(){return o.replace(/^.*AliApp\(TB\/([\d.]+).*$/,"$1")},Alipay:function(){return o.replace(/^.*AliApp\(AP\/([\d.]+).*$/,"$1")},Weibo:function(){return o.replace(/^.*weibo__([\d.]+).*$/,"$1")},Douban:function(){return o.replace(/^.*com.douban.frodo\/([\d.]+).*$/,"$1")},Suning:function(){return o.replace(/^.*SNEBUY-APP([\d.]+).*$/,"$1")},iQiYi:function(){return o.replace(/^.*IqiyiVersion\/([\d.]+).*$/,"$1")}};return i.browserVersion="",d[i.browser]&&(i.browserVersion=d[i.browser](),i.browserVersion==o&&(i.browserVersion="")),"Edge"==i.browser&&(i.engine="EdgeHTML"),"Chrome"==i.browser&&parseInt(i.browserVersion)>27&&(i.engine="Blink"),"Opera"==i.browser&&parseInt(i.browserVersion)>12&&(i.engine="Blink"),"Yandex"==i.browser&&(i.engine="Blink"),i.browser+" (version: "+i.browserVersion+"; kernel: "+i.engine+")"}},i={DeviceInfoObj:function(i){var o,t=function(e){var n;null==(n=i.info)||n.forEach((function(n){n.toLowerCase()===e.toLowerCase()&&(c[e]=a[e])}))};i=i||{domain:""};var a={deviceType:r.getDeviceType(),OS:r.getOS(),OSVersion:r.getOSVersion(),sh:e.screen.height,sw:e.screen.width,lang:r.getLanguage(),netWork:r.getNetwork(),orientation:r.getOrientationStatu(),browserInfo:r.getBrowserInfo(),fingerprint:r.createFingerprint(i.domain),userAgent:null==(o=n.navigator)?void 0:o.userAgent};if(!i.info||0===i.info.length)return a;var c={};for(var u in a)t(u);return c}},{getDeviceInfo:function(e){return i.DeviceInfoObj(e)}}),t=function(){function e(){}return e.add=function(n,r){e.queues.push({url:n,data:r})},e.fire=function(){if(e.queues&&0!==e.queues.length){e.isStop=!1;var n=e.queues[0];n.url&&e.api.report(n.data),e.queues.splice(0,1),e.fire()}else e.isStop=!0},e}();function a(e){return e&&"undefined"!=typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}t.isStop=!0,t.queues=[];var c=function(){function e(e){this.url=e}var n=e.prototype;return n.report=function(e){this.checkUrl(this.url)&&this.sendInfo(e)},n.sendInfo=function(e){navigator.sendBeacon?this.sendBeacon(this.url,e):this.sendImage(this.url,e)},n.sendImage=function(e,n){var r=this.changeJSON2Query(n),i=new Image;i.onload=i.onerror=function(){i=null},i.src=e+"?"+r+"&random="+Math.random()},n.sendBeacon=function(e,n){try{navigator.sendBeacon(e,this.formatParamsByURLSearchParams(n))}catch(e){}},n.formatParamsByURLSearchParams=function(e){var n=new URLSearchParams;for(var r in e)"object"===a(e[r])&&(e[r]=JSON.stringify(e[r])),n.append(r,e[r]);return n},n.changeJSON2Query=function(e){var n="";for(var r in e){""!=n&&(n+="&");var i=e[r];n+=r+"="+encodeURIComponent("object"===(void 0===i?"undefined":a(i))?JSON.stringify(i):i)}return n},n.checkUrl=function(e){if(!e)return!1;return/^[hH][tT][tT][pP]([sS]?):\/\//.test(e)},e}();function u(){return u=Object.assign||function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])}return e},u.apply(this,arguments)}var d=function(){function e(e){this.options=e,this.extendsInfo=e.extendsInfo||{},this.clientInfo=this._getDeviceInfo(),t.api=new c(e.url),this.changeUrl=this.changeUrl.bind(this)}var n=e.prototype;return n.changeUrl=function(e){t.api=new c(e)},n.send=function(e){return this.options.forbidden||"object"!=(void 0===e?"undefined":(n=e)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||(this._handleRecordError(e),t.isStop&&t.fire()),this;var n},n.setForbidden=function(e){this.options.forbidden=e},n.updateExtendsInfo=function(e){void 0===e&&(e={}),this.extendsInfo=u({},this.extendsInfo||{},e)},n._handleRecordError=function(e){try{var n=this._handleErrorInfo(e);t.add(this.options.url,n)}catch(e){}},n._handleErrorInfo=function(e){var n=this._getExtendsInfo(),r=u({st:(new Date).getTime()},n,e);return r.clientInfo=this.clientInfo,r},n._getExtendsInfo=function(){try{var e,n={},r=this.extendsInfo||{};for(var i in"function"==typeof r.getDynamic&&(e=r.getDynamic()),"[object Object]"===Object.prototype.toString.call(e)&&(r=u({},r,e)),r)"function"!=typeof r[i]&&(n[i]=r[i]);return n}catch(e){return{}}},n._getDeviceInfo=function(){try{var e=o.getDeviceInfo();return JSON.stringify(e)}catch(e){return""}},e}();module.exports=d;