ua-parser-js 2.0.2 → 2.0.3
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/dist/ua-parser.min.js +3 -3
- package/dist/ua-parser.min.mjs +3 -3
- package/dist/ua-parser.pack.js +3 -3
- package/dist/ua-parser.pack.mjs +3 -3
- package/package.json +14 -3
- package/src/enums/ua-parser-enums.d.ts +9 -1
- package/src/enums/ua-parser-enums.js +9 -1
- package/src/enums/ua-parser-enums.mjs +9 -1
- package/src/extensions/ua-parser-extensions.d.ts +1 -1
- package/src/extensions/ua-parser-extensions.js +43 -22
- package/src/extensions/ua-parser-extensions.mjs +43 -22
- package/src/helpers/ua-parser-helpers.d.ts +1 -1
- package/src/helpers/ua-parser-helpers.js +4 -1
- package/src/helpers/ua-parser-helpers.mjs +4 -1
- package/src/main/ua-parser.d.ts +1 -1
- package/src/main/ua-parser.js +33 -15
- package/src/main/ua-parser.mjs +33 -15
package/dist/ua-parser.pack.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* UAParser.js v2.0.
|
2
|
-
Copyright © 2012-
|
1
|
+
/* UAParser.js v2.0.3
|
2
|
+
Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
|
3
3
|
AGPLv3 License */
|
4
|
-
function M(i){for(var e={},t=0;t<i.length;t++)e[i[t].toUpperCase()]=i[t];return e}var P=500,R="user-agent",w="",U="?",V="function",n="undefined",l="object",B="string",c="browser",u="cpu",h="device",p="engine",m="os",f="result",g="name",v="type",k="vendor",x="version",y="architecture",C="major",T="model",G="console",S="mobile",r="tablet",i="smarttv",e="wearable",L="xr",F="embedded",D="inapp",$="brands",_="formFactors",W="fullVersionList",q="platform",X="platformVersion",K="bitness",o="sec-ch-ua",Q=o+"-full-version-list",Y=o+"-arch",Z=o+"-"+K,J=o+"-form-factors",ii=o+"-"+S,ei=o+"-"+T,ti=o+"-"+q,oi=ti+"-version",ri=[$,W,S,T,q,X,y,_,K],ai="Amazon",t="Apple",si="ASUS",ni="BlackBerry",a="Google",wi="Huawei",bi="Lenovo",di="Honor",li="Microsoft",ci="Motorola",ui="Nvidia",hi="OnePlus",pi="OPPO",mi="Samsung",fi="Sony",gi="Xiaomi",vi="Zebra",ki="Chromium",s="Chromecast",xi="Firefox",b="Opera",yi="Facebook",d="Mobile ",Ci=" Browser",Ti="Windows",z=typeof window!==n&&window.navigator?window.navigator:void 0,O=z&&z.userAgentData?z.userAgentData:void 0,Si=function(i,e){if(typeof i===l&&0<i.length){for(var t in i)if(H(i[t])==H(e))return!0;return!1}return!!A(i)&&-1!==H(e).indexOf(H(i))},_i=function(i,e){for(var t in i)return/^(browser|cpu|device|engine|os)$/.test(t)||!!e&&_i(i[t])},A=function(i){return typeof i===B},qi=function(i){if(i){for(var e,t=[],o=j(/\\?\"/g,i).split(","),r=0;r<o.length;r++)-1<o[r].indexOf(";")?(e=Ai(o[r]).split(";v="),t[r]={brand:e[0],version:e[1]}):t[r]=Ai(o[r]);return t}},H=function(i){return A(i)?i.toLowerCase():i},zi=function(i){return A(i)?j(/[^\d\.]/g,i).split(".")[0]:void 0},N=function(i){for(var e in i){e=i[e];typeof e==l&&2==e.length?this[e[0]]=e[1]:this[e]=void 0}return this},j=function(i,e){return A(e)?e.replace(i,w):e},Oi=function(i){return j(/\\?\"/g,i)},Ai=function(i,e){if(A(i))return i=j(/^\s\s*/,i),typeof e===n?i:i.substring(0,P)},Hi=function(i,e){if(i&&e)for(var t,o,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],b=e[n+1],d=t=0;d<w.length&&!a&&w[d];)if(a=w[d++].exec(i))for(o=0;o<b.length;o++)s=a[++t],typeof(r=b[o])===l&&0<r.length?2===r.length?typeof r[1]==V?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==V||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0):this[r]=s||void 0;n+=2}},E=function(i,e){for(var t in e)if(typeof e[t]===l&&0<e[t].length){for(var o=0;o<e[t].length;o++)if(Si(e[t][o],i))return t===U?void 0:t}else if(Si(e[t],i))return t===U?void 0:t;return e.hasOwnProperty("*")?e["*"]:i},Ni={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},ji={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Ei={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[x,[g,d+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[x,[g,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[g,x],[/opios[\/ ]+([\w\.]+)/i],[x,[g,b+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[x,[g,b+" GX"]],[/\bopr\/([\w\.]+)/i],[x,[g,b]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[x,[g,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[x,[g,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,/(heytap|ovi|115)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[g,x],[/quark(?:pc)?\/([-\w\.]+)/i],[x,[g,"Quark"]],[/\bddg\/([\w\.]+)/i],[x,[g,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[x,[g,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[x,[g,"WeChat"]],[/konqueror\/([\w\.]+)/i],[x,[g,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[x,[g,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[x,[g,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[x,[g,"Smart "+bi+Ci]],[/(avast|avg)\/([\w\.]+)/i],[[g,/(.+)/,"$1 Secure"+Ci],x],[/\bfocus\/([\w\.]+)/i],[x,[g,xi+" Focus"]],[/\bopt\/([\w\.]+)/i],[x,[g,b+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[x,[g,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[x,[g,"Dolphin"]],[/coast\/([\w\.]+)/i],[x,[g,b+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[x,[g,"MIUI"+Ci]],[/fxios\/([\w\.-]+)/i],[x,[g,d+xi]],[/\bqihoobrowser\/?([\w\.]*)/i],[x,[g,"360"]],[/\b(qq)\/([\w\.]+)/i],[[g,/(.+)/,"$1Browser"],x],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[g,/(.+)/,"$1"+Ci],x],[/samsungbrowser\/([\w\.]+)/i],[x,[g,mi+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[x,[g,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[g,"Sogou Mobile"],x],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[g,x],[/(lbbrowser|rekonq)/i],[g],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[x,g],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[g,yi],x,[v,D]],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(instagram|snapchat)[\/ ]([-\w\.]+)/i],[g,x,[v,D]],[/\bgsa\/([\w\.]+) .*safari\//i],[x,[g,"GSA"],[v,D]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[x,[g,"TikTok"],[v,D]],[/\[(linkedin)app\]/i],[g,[v,D]],[/(chromium)[\/ ]([-\w\.]+)/i],[g,x],[/headlesschrome(?:\/([\w\.]+)| )/i],[x,[g,"Chrome Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[g,"Chrome WebView"],x],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[x,[g,"Android"+Ci]],[/chrome\/([\w\.]+) mobile/i],[x,[g,d+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[g,x],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[x,[g,d+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[g,d+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[x,g],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[g,[x,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[g,x],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[g,d+xi],x],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[g,"Netscape"],x],[/(wolvic|librewolf)\/([\w\.]+)/i],[g,x],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[x,[g,xi+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[g,[x,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[g,[x,/[^\d\.]+./,w]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[y,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[y,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[y,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[y,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[y,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[y,/ower/,w,H]],[/ sun4\w[;\)]/i],[[y,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[y,H]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[T,[k,mi],[v,r]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[T,[k,mi],[v,S]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[T,[k,t],[v,S]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[T,[k,t],[v,r]],[/(macintosh);/i],[T,[k,t]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[T,[k,"Sharp"],[v,S]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[T,[k,di],[v,r]],[/honor([-\w ]+)[;\)]/i],[T,[k,di],[v,S]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[T,[k,wi],[v,r]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[T,[k,wi],[v,S]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[T,/_/g," "],[k,gi],[v,r]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[T,/_/g," "],[k,gi],[v,S]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[T,[k,pi],[v,S]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[T,[k,E,{OnePlus:["304","403","203"],"*":pi}],[v,r]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[T,[k,"Vivo"],[v,S]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[T,[k,"Realme"],[v,S]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[T,[k,ci],[v,S]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[T,[k,ci],[v,r]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[T,[k,"LG"],[v,r]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i,/\blg-?([\d\w]+) bui/i],[T,[k,"LG"],[v,S]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[T,[k,bi],[v,r]],[/(nokia) (t[12][01])/i],[k,T,[v,r]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[T,/_/g," "],[v,S],[k,"Nokia"]],[/(pixel (c|tablet))\b/i],[T,[k,a],[v,r]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[T,[k,a],[v,S]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[T,[k,fi],[v,S]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[T,"Xperia Tablet"],[k,fi],[v,r]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[T,[k,hi],[v,S]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[T,[k,ai],[v,r]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[T,/(.+)/g,"Fire Phone $1"],[k,ai],[v,S]],[/(playbook);[-\w\),; ]+(rim)/i],[T,k,[v,r]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[T,[k,ni],[v,S]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[T,[k,si],[v,r]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[T,[k,si],[v,S]],[/(nexus 9)/i],[T,[k,"HTC"],[v,r]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[k,[T,/_/g," "],[v,S]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[T,[k,"TCL"],[v,r]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[T,[k,"TCL"],[v,S]],[/(itel) ((\w+))/i],[[k,H],T,[v,E,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[T,[k,"Acer"],[v,r]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[T,[k,"Meizu"],[v,S]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[T,[k,"Ulefone"],[v,S]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[T,[k,"Energizer"],[v,S]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[T,[k,"Cat"],[v,S]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[T,[k,"Smartfren"],[v,S]],[/droid.+; (a(?:015|06[35]|142p?))/i],[T,[k,"Nothing"],[v,S]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[k,T,[v,r]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[k,T,[v,S]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[k,T,[v,r]],[/(surface duo)/i],[T,[k,li],[v,r]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[T,[k,"Fairphone"],[v,S]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[T,[k,ui],[v,r]],[/(sprint) (\w+)/i],[k,T,[v,S]],[/(kin\.[onetw]{3})/i],[[T,/\./g," "],[k,li],[v,S]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[T,[k,vi],[v,r]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[T,[k,vi],[v,S]],[/smart-tv.+(samsung)/i],[k,[v,i]],[/hbbtv.+maple;(\d+)/i],[[T,/^/,"SmartTV"],[k,mi],[v,i]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[k,"LG"],[v,i]],[/(apple) ?tv/i],[k,[T,t+" TV"],[v,i]],[/crkey.*devicetype\/chromecast/i],[[T,s+" Third Generation"],[k,a],[v,i]],[/crkey.*devicetype\/([^/]*)/i],[[T,/^/,"Chromecast "],[k,a],[v,i]],[/fuchsia.*crkey/i],[[T,s+" Nest Hub"],[k,a],[v,i]],[/crkey/i],[[T,s],[k,a],[v,i]],[/droid.+aft(\w+)( bui|\))/i],[T,[k,ai],[v,i]],[/(shield \w+ tv)/i],[T,[k,ui],[v,i]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[T,[k,"Sharp"],[v,i]],[/(bravia[\w ]+)( bui|\))/i],[T,[k,fi],[v,i]],[/(mi(tv|box)-?\w+) bui/i],[T,[k,gi],[v,i]],[/Hbbtv.*(technisat) (.*);/i],[k,T,[v,i]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[k,Ai],[T,Ai],[v,i]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[T,[v,i]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[v,i]],[/(ouya)/i,/(nintendo) (\w+)/i],[k,T,[v,G]],[/droid.+; (shield)( bui|\))/i],[T,[k,ui],[v,G]],[/(playstation \w+)/i],[T,[k,fi],[v,G]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[T,[k,li],[v,G]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[T,[k,mi],[v,e]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[k,T,[v,e]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[T,[k,pi],[v,e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[T,[k,t],[v,e]],[/(opwwe\d{3})/i],[T,[k,hi],[v,e]],[/(moto 360)/i],[T,[k,ci],[v,e]],[/(smartwatch 3)/i],[T,[k,fi],[v,e]],[/(g watch r)/i],[T,[k,"LG"],[v,e]],[/droid.+; (wt63?0{2,3})\)/i],[T,[k,vi],[v,e]],[/droid.+; (glass) \d/i],[T,[k,a],[v,L]],[/(pico) (4|neo3(?: link|pro)?)/i],[k,T,[v,L]],[/; (quest( \d| pro)?)/i],[T,[k,yi],[v,L]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[k,[v,F]],[/(aeobc)\b/i],[T,[k,ai],[v,F]],[/(homepod).+mac os/i],[T,[k,t],[v,F]],[/windows iot/i],[[v,F]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i],[T,[v,E,{mobile:"Mobile",xr:"VR","*":r}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[v,r]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[v,S]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[T,[k,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[x,[g,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[g,x],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[x,[g,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[g,x],[/ladybird\//i],[[g,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[x,g]],os:[[/microsoft (windows) (vista|xp)/i],[g,x],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[g,[x,E,Ni]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[x,E,Ni],[g,Ti]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[x,/_/g,"."],[g,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[g,"macOS"],[x,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[x,[g,s+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[x,[g,s+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[x,[g,s+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[x,[g,s+" Linux"]],[/crkey\/([\d\.]+)/i],[x,[g,s]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[x,g],[/(ubuntu) ([\w\.]+) like android/i],[[g,/(.+)/,"$1 Touch"],x],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i],[g,x],[/\(bb(10);/i],[x,[g,ni]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[x,[g,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[x,[g,xi+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[x,[g,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[x,[g,"watchOS"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[g,"Chrome OS"],x],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[g,x],[/(sunos) ?([\w\.\d]*)/i],[[g,"Solaris"],x],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[g,x]]},Ii=(b={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},N.call(b.init,[[c,[g,x,C,v]],[u,[y]],[h,[v,T,k]],[p,[g,x]],[m,[g,x]]]),N.call(b.isIgnore,[[c,[x,C]],[p,[x]],[m,[x]]]),N.call(b.isIgnoreRgx,[[c,/ ?browser$/i],[m,/ ?os$/i]]),N.call(b.toString,[[c,[g,x]],[u,[y]],[h,[k,T]],[p,[g,x]],[m,[g,x]]]),b),Mi=function(e,i){var t=Ii.init[i],o=Ii.isIgnore[i]||0,r=Ii.isIgnoreRgx[i]||0,a=Ii.toString[i]||0;function s(){N.call(this,t)}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return O?O.getHighEntropyValues(ri).then(function(i){return e.setCH(new Pi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=f&&(s.prototype.is=function(i){var e,t=!1;for(e in this)if(this.hasOwnProperty(e)&&!Si(o,e)&&H(r?j(r,this[e]):this[e])==H(r?j(r,i):i)){if(t=!0,i!=n)break}else if(i==n&&t){t=!t;break}return t},s.prototype.toString=function(){var i,e=w;for(i in a)typeof this[a[i]]!==n&&(e+=(e?" ":w)+this[a[i]]);return e||n}),O||(s.prototype.then=function(i){function e(){for(var i in t)t.hasOwnProperty(i)&&(this[i]=t[i])}var t=this,o=(e.prototype={is:s.prototype.is,toString:s.prototype.toString},new e);return i(o),o}),new s};function Pi(i,e){if(i=i||{},N.call(this,ri),e)N.call(this,[[$,qi(i[o])],[W,qi(i[Q])],[S,/\?1/.test(i[ii])],[T,Oi(i[ei])],[q,Oi(i[ti])],[X,Oi(i[oi])],[y,Oi(i[Y])],[_,qi(i[J])],[K,Oi(i[Z])]]);else for(var t in i)this.hasOwnProperty(t)&&typeof i[t]!==n&&(this[t]=i[t])}function Ri(i,e,t,o){return this.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:void 0:this.data},this.set=function(i,e){return this.data[i]=e,this},this.setCH=function(i){return this.uaCH=i,this},this.detectFeature=function(){if(z&&z.userAgent==this.ua)switch(this.itemType){case c:z.brave&&typeof z.brave.isBrave==V&&this.set(g,"Brave");break;case h:!this.get(v)&&O&&O[S]&&this.set(v,S),"Macintosh"==this.get(T)&&z&&typeof z.standalone!==n&&z.maxTouchPoints&&2<z.maxTouchPoints&&this.set(T,"iPad").set(v,r);break;case m:!this.get(g)&&O&&O[q]&&this.set(g,O[q]);break;case f:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(c,i(c)).set(u,i(u)).set(h,i(h)).set(p,i(p)).set(m,i(m))}return this},this.parseUA=function(){return this.itemType!=f&&Hi.call(this.data,this.ua,this.rgxMap),this.itemType==c&&this.set(C,zi(this.get(x))),this},this.parseCH=function(){var i,e=this.uaCH,t=this.rgxMap;switch(this.itemType){case c:case p:var o,r=e[W]||e[$];if(r)for(var a in r){var s=r[a].brand||r[a],a=r[a].version;this.itemType!=c||/not.a.brand/i.test(s)||o&&(!/chrom/i.test(o)||s==ki)||(s=E(s,{Chrome:"Google Chrome",Edge:"Microsoft Edge","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome"}),this.set(g,s).set(x,a).set(C,zi(a)),o=s),this.itemType==p&&s==ki&&this.set(x,a)}break;case u:var n=e[y];n&&("64"==e[K]&&(n+="64"),Hi.call(this.data,n+";",t));break;case h:if(e[S]&&this.set(v,S),e[T]&&(this.set(T,e[T]),this.get(v)&&this.get(k)||(Hi.call(n={},"droid 9; "+e[T]+")",t),!this.get(v)&&n.type&&this.set(v,n.type),!this.get(k)&&n.vendor&&this.set(k,n.vendor))),e[_]){if("string"!=typeof e[_])for(var w=0;!i&&w<e[_].length;)i=E(e[_][w++],ji);else i=E(e[_],ji);this.set(v,i)}break;case m:var b,n=e[q];n&&(b=e[X],n==Ti&&(b=13<=parseInt(zi(b),10)?"11":"10"),this.set(g,n).set(x,b)),this.get(g)==Ti&&"Xbox"==e[T]&&this.set(g,"Xbox").set(x,void 0);break;case f:var d=this.data,n=function(i){return d[i].getItem().setCH(e).parseCH().get()};this.set(c,n(c)).set(u,n(u)).set(h,n(h)).set(p,n(p)).set(m,n(m))}return this},N.call(this,[["itemType",i],["ua",e],["uaCH",o],["rgxMap",t],["data",Mi(this,i)]]),this}function I(i,e,t){var o,r,a,s,n;return typeof i===l?(e=_i(i,!0)?(typeof e===l&&(t=e),i):void(t=i),i=void 0):typeof i!==B||_i(e,!0)||(t=e,e=void 0),t&&typeof t.append===V&&(o={},t.forEach(function(i,e){o[e]=i}),t=o),this instanceof I?(r=typeof i===B?i:t&&t[R]?t[R]:z&&z.userAgent?z.userAgent:w,a=new Pi(t,!0),s=e?((i,e)=>{var t,o={},r=e;if(!_i(e))for(var a in r={},e)for(var s in e[a])r[s]=e[a][s].concat(r[s]||[]);for(t in i)o[t]=r[t]&&r[t].length%2==0?r[t].concat(i[t]):i[t];return o})(Ei,e):Ei,N.call(this,[["getBrowser",(n=function(i){return i==f?function(){return new Ri(i,r,s,a).set("ua",r).set(c,this.getBrowser()).set(u,this.getCPU()).set(h,this.getDevice()).set(p,this.getEngine()).set(m,this.getOS()).get()}:function(){return new Ri(i,r,s[i],a).parseUA().get()}})(c)],["getCPU",n(u)],["getDevice",n(h)],["getEngine",n(p)],["getOS",n(m)],["getResult",n(f)],["getUA",function(){return r}],["setUA",function(i){return A(i)&&(r=i.length>P?Ai(i,P):i),this}]]).setUA(r),this):new I(i,e,t).getResult()}I.VERSION="2.0.2",I.BROWSER=M([g,x,C,v]),I.CPU=M([y]),I.DEVICE=M([T,k,v,G,S,i,r,e,F]),I.ENGINE=I.OS=M([g,x]);export{I as UAParser};
|
4
|
+
function E(i){for(var e={},o=0;o<i.length;o++)e[i[o].toUpperCase()]=i[o];return e}var B=500,P="user-agent",w="",U="?",R="function",n="undefined",l="object",V="string",c="browser",u="cpu",h="device",p="engine",m="os",f="result",g="name",v="type",k="vendor",x="version",y="architecture",C="major",T="model",L="console",S="mobile",r="tablet",i="smarttv",e="wearable",G="xr",F="embedded",D="inapp",$="brands",_="formFactors",W="fullVersionList",q="platform",X="platformVersion",Y="bitness",t="sec-ch-ua",K=t+"-full-version-list",Q=t+"-arch",Z=t+"-"+Y,J=t+"-form-factors",ii=t+"-"+S,ei=t+"-"+T,oi=t+"-"+q,ti=oi+"-version",ri=[$,W,S,T,q,X,y,_,Y],ai="Amazon",o="Apple",si="ASUS",ni="BlackBerry",a="Google",wi="Huawei",bi="Lenovo",di="Honor",li="Microsoft",ci="Motorola",ui="Nvidia",hi="OnePlus",pi="OPPO",mi="Samsung",fi="Sony",gi="Xiaomi",vi="Zebra",ki="Chromium",s="Chromecast",xi="Firefox",b="Opera",yi="Facebook",d="Mobile ",Ci=" Browser",Ti="Windows",z=typeof window!==n&&window.navigator?window.navigator:void 0,O=z&&z.userAgentData?z.userAgentData:void 0,Si=function(i,e){if(typeof i===l&&0<i.length){for(var o in i)if(H(i[o])==H(e))return!0;return!1}return!!A(i)&&-1!==H(e).indexOf(H(i))},_i=function(i,e){for(var o in i)return/^(browser|cpu|device|engine|os)$/.test(o)||!!e&&_i(i[o])},A=function(i){return typeof i===V},qi=function(i){if(i){for(var e,o=[],t=N(/\\?\"/g,i).split(","),r=0;r<t.length;r++)-1<t[r].indexOf(";")?(e=Ai(t[r]).split(";v="),o[r]={brand:e[0],version:e[1]}):o[r]=Ai(t[r]);return o}},H=function(i){return A(i)?i.toLowerCase():i},zi=function(i){return A(i)?N(/[^\d\.]/g,i).split(".")[0]:void 0},M=function(i){for(var e in i){e=i[e];typeof e==l&&2==e.length?this[e[0]]=e[1]:this[e]=void 0}return this},N=function(i,e){return A(e)?e.replace(i,w):e},Oi=function(i){return N(/\\?\"/g,i)},Ai=function(i,e){if(A(i))return i=N(/^\s\s*/,i),typeof e===n?i:i.substring(0,B)},Hi=function(i,e){if(i&&e)for(var o,t,r,a,s,n=0;n<e.length&&!a;){for(var w=e[n],b=e[n+1],d=o=0;d<w.length&&!a&&w[d];)if(a=w[d++].exec(i))for(t=0;t<b.length;t++)s=a[++o],typeof(r=b[t])===l&&0<r.length?2===r.length?typeof r[1]==R?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==R||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0):this[r]=s||void 0;n+=2}},I=function(i,e){for(var o in e)if(typeof e[o]===l&&0<e[o].length){for(var t=0;t<e[o].length;t++)if(Si(e[o][t],i))return o===U?void 0:o}else if(Si(e[o],i))return o===U?void 0:o;return e.hasOwnProperty("*")?e["*"]:i},Mi={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Ni={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Ii={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[x,[g,d+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[x,[g,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[g,x],[/opios[\/ ]+([\w\.]+)/i],[x,[g,b+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[x,[g,b+" GX"]],[/\bopr\/([\w\.]+)/i],[x,[g,b]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[x,[g,"Baidu"]],[/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i],[x,[g,"Maxthon"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,/(heytap|ovi|115|surf)browser\/([\d\.]+)/i,/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i],[g,x],[/quark(?:pc)?\/([-\w\.]+)/i],[x,[g,"Quark"]],[/\bddg\/([\w\.]+)/i],[x,[g,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[x,[g,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[x,[g,"WeChat"]],[/konqueror\/([\w\.]+)/i],[x,[g,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[x,[g,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[x,[g,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[x,[g,"Smart "+bi+Ci]],[/(avast|avg)\/([\w\.]+)/i],[[g,/(.+)/,"$1 Secure"+Ci],x],[/\bfocus\/([\w\.]+)/i],[x,[g,xi+" Focus"]],[/\bopt\/([\w\.]+)/i],[x,[g,b+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[x,[g,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[x,[g,"Dolphin"]],[/coast\/([\w\.]+)/i],[x,[g,b+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[x,[g,"MIUI"+Ci]],[/fxios\/([\w\.-]+)/i],[x,[g,d+xi]],[/\bqihoobrowser\/?([\w\.]*)/i],[x,[g,"360"]],[/\b(qq)\/([\w\.]+)/i],[[g,/(.+)/,"$1Browser"],x],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[g,/(.+)/,"$1"+Ci],x],[/samsungbrowser\/([\w\.]+)/i],[x,[g,mi+" Internet"]],[/metasr[\/ ]?([\d\.]+)/i],[x,[g,"Sogou Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[g,"Sogou Mobile"],x],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i],[g,x],[/(lbbrowser|rekonq)/i],[g],[/ome\/([\w\.]+) \w* ?(iron) saf/i,/ome\/([\w\.]+).+qihu (360)[es]e/i],[x,g],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[g,yi],x,[v,D]],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/(daum)apps[\/ ]([\w\.]+)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(instagram|snapchat)[\/ ]([-\w\.]+)/i],[g,x,[v,D]],[/\bgsa\/([\w\.]+) .*safari\//i],[x,[g,"GSA"],[v,D]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[x,[g,"TikTok"],[v,D]],[/\[(linkedin)app\]/i],[g,[v,D]],[/(chromium)[\/ ]([-\w\.]+)/i],[g,x],[/headlesschrome(?:\/([\w\.]+)| )/i],[x,[g,"Chrome Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[g,"Chrome WebView"],x],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[x,[g,"Android"+Ci]],[/chrome\/([\w\.]+) mobile/i],[x,[g,d+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[g,x],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[x,[g,d+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[g,d+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[x,g],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[g,[x,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[g,x],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[g,d+xi],x],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[g,"Netscape"],x],[/(wolvic|librewolf)\/([\w\.]+)/i],[g,x],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[x,[g,xi+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/\b(links) \(([\w\.]+)/i],[g,[x,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[g,[x,/[^\d\.]+./,w]]],cpu:[[/\b((amd|x|x86[-_]?|wow|win)64)\b/i],[[y,"amd64"]],[/(ia32(?=;))/i,/\b((i[346]|x)86)(pc)?\b/i],[[y,"ia32"]],[/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i],[[y,"arm64"]],[/\b(arm(v[67])?ht?n?[fl]p?)\b/i],[[y,"armhf"]],[/( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i],[[y,"arm"]],[/((ppc|powerpc)(64)?)( mac|;|\))/i],[[y,/ower/,w,H]],[/ sun4\w[;\)]/i],[[y,"sparc"]],[/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i],[[y,H]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[T,[k,mi],[v,r]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[T,[k,mi],[v,S]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[T,[k,o],[v,S]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[T,[k,o],[v,r]],[/(macintosh);/i],[T,[k,o]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[T,[k,"Sharp"],[v,S]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[T,[k,di],[v,r]],[/honor([-\w ]+)[;\)]/i],[T,[k,di],[v,S]],[/\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i],[T,[k,wi],[v,r]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[T,[k,wi],[v,S]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[T,/_/g," "],[k,gi],[v,r]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,/ ([\w ]+) miui\/v?\d/i],[[T,/_/g," "],[k,gi],[v,S]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[T,[k,pi],[v,S]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[T,[k,I,{OnePlus:["304","403","203"],"*":pi}],[v,r]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[T,[k,"BLU"],[v,S]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[T,[k,"Vivo"],[v,S]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[T,[k,"Realme"],[v,S]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[T,[k,ci],[v,S]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[T,[k,ci],[v,r]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[T,[k,"LG"],[v,r]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,/\blg-?([\d\w]+) bui/i],[T,[k,"LG"],[v,S]],[/(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i,/lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i],[T,[k,bi],[v,r]],[/(nokia) (t[12][01])/i],[k,T,[v,r]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[T,/_/g," "],[v,S],[k,"Nokia"]],[/(pixel (c|tablet))\b/i],[T,[k,a],[v,r]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[T,[k,a],[v,S]],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[T,[k,fi],[v,S]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[T,"Xperia Tablet"],[k,fi],[v,r]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[T,[k,hi],[v,S]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[T,[k,ai],[v,r]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[T,/(.+)/g,"Fire Phone $1"],[k,ai],[v,S]],[/(playbook);[-\w\),; ]+(rim)/i],[T,k,[v,r]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[T,[k,ni],[v,S]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[T,[k,si],[v,r]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[T,[k,si],[v,S]],[/(nexus 9)/i],[T,[k,"HTC"],[v,r]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[k,[T,/_/g," "],[v,S]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[T,[k,"TCL"],[v,r]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[T,[k,"TCL"],[v,S]],[/(itel) ((\w+))/i],[[k,H],T,[v,I,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[T,[k,"Acer"],[v,r]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[T,[k,"Meizu"],[v,S]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[T,[k,"Ulefone"],[v,S]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[T,[k,"Energizer"],[v,S]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[T,[k,"Cat"],[v,S]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[T,[k,"Smartfren"],[v,S]],[/droid.+; (a(?:015|06[35]|142p?))/i],[T,[k,"Nothing"],[v,S]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[T,[k,"Archos"],[v,r]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[T,[k,"Archos"],[v,S]],[/(imo) (tab \w+)/i,/(infinix) (x1101b?)/i],[k,T,[v,r]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,/(oppo) ?([\w ]+) bui/i],[k,T,[v,S]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[k,T,[v,r]],[/(surface duo)/i],[T,[k,li],[v,r]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[T,[k,"Fairphone"],[v,S]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[T,[k,ui],[v,r]],[/(sprint) (\w+)/i],[k,T,[v,S]],[/(kin\.[onetw]{3})/i],[[T,/\./g," "],[k,li],[v,S]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[T,[k,vi],[v,r]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[T,[k,vi],[v,S]],[/smart-tv.+(samsung)/i],[k,[v,i]],[/hbbtv.+maple;(\d+)/i],[[T,/^/,"SmartTV"],[k,mi],[v,i]],[/tcast.+(lg)e?. ([-\w]+)/i],[k,T,[v,i]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[k,"LG"],[v,i]],[/(apple) ?tv/i],[k,[T,o+" TV"],[v,i]],[/crkey.*devicetype\/chromecast/i],[[T,s+" Third Generation"],[k,a],[v,i]],[/crkey.*devicetype\/([^/]*)/i],[[T,/^/,"Chromecast "],[k,a],[v,i]],[/fuchsia.*crkey/i],[[T,s+" Nest Hub"],[k,a],[v,i]],[/crkey/i],[[T,s],[k,a],[v,i]],[/(portaltv)/i],[T,[k,yi],[v,i]],[/droid.+aft(\w+)( bui|\))/i],[T,[k,ai],[v,i]],[/(shield \w+ tv)/i],[T,[k,ui],[v,i]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[T,[k,"Sharp"],[v,i]],[/(bravia[\w ]+)( bui|\))/i],[T,[k,fi],[v,i]],[/(mi(tv|box)-?\w+) bui/i],[T,[k,gi],[v,i]],[/Hbbtv.*(technisat) (.*);/i],[k,T,[v,i]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[k,Ai],[T,Ai],[v,i]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[T,[v,i]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[v,i]],[/(ouya)/i,/(nintendo) (\w+)/i],[k,T,[v,L]],[/droid.+; (shield)( bui|\))/i],[T,[k,ui],[v,L]],[/(playstation \w+)/i],[T,[k,fi],[v,L]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[T,[k,li],[v,L]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[T,[k,mi],[v,e]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[k,T,[v,e]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[T,[k,pi],[v,e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[T,[k,o],[v,e]],[/(opwwe\d{3})/i],[T,[k,hi],[v,e]],[/(moto 360)/i],[T,[k,ci],[v,e]],[/(smartwatch 3)/i],[T,[k,fi],[v,e]],[/(g watch r)/i],[T,[k,"LG"],[v,e]],[/droid.+; (wt63?0{2,3})\)/i],[T,[k,vi],[v,e]],[/droid.+; (glass) \d/i],[T,[k,a],[v,G]],[/(pico) (4|neo3(?: link|pro)?)/i],[k,T,[v,G]],[/(quest( \d| pro)?s?).+vr/i],[T,[k,yi],[v,G]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[k,[v,F]],[/(aeobc)\b/i],[T,[k,ai],[v,F]],[/(homepod).+mac os/i],[T,[k,o],[v,F]],[/windows iot/i],[[v,F]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i],[T,[v,I,{mobile:"Mobile",xr:"VR","*":r}]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[v,r]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[v,S]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[T,[k,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[x,[g,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[g,x],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[x,[g,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[g,x],[/ladybird\//i],[[g,"LibWeb"]],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[x,g]],os:[[/microsoft (windows) (vista|xp)/i],[g,x],[/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i],[g,[x,I,Mi]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[x,I,Mi],[g,Ti]],[/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[x,/_/g,"."],[g,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[g,"macOS"],[x,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[x,[g,s+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[x,[g,s+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[x,[g,s+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[x,[g,s+" Linux"]],[/crkey\/([\d\.]+)/i],[x,[g,s]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[x,g],[/(ubuntu) ([\w\.]+) like android/i],[[g,/(.+)/,"$1 Touch"],x],[/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i],[g,x],[/\(bb(10);/i],[x,[g,ni]],[/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i],[x,[g,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[x,[g,xi+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[x,[g,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[x,[g,"watchOS"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[g,"Chrome OS"],x],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[g,x],[/(sunos) ?([\w\.\d]*)/i],[[g,"Solaris"],x],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[g,x]]},ji=(b={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},M.call(b.init,[[c,[g,x,C,v]],[u,[y]],[h,[v,T,k]],[p,[g,x]],[m,[g,x]]]),M.call(b.isIgnore,[[c,[x,C]],[p,[x]],[m,[x]]]),M.call(b.isIgnoreRgx,[[c,/ ?browser$/i],[m,/ ?os$/i]]),M.call(b.toString,[[c,[g,x]],[u,[y]],[h,[k,T]],[p,[g,x]],[m,[g,x]]]),b),Ei=function(e,i){var o=ji.init[i],t=ji.isIgnore[i]||0,r=ji.isIgnoreRgx[i]||0,a=ji.toString[i]||0;function s(){M.call(this,o)}return s.prototype.getItem=function(){return e},s.prototype.withClientHints=function(){return O?O.getHighEntropyValues(ri).then(function(i){return e.setCH(new Bi(i,!1)).parseCH().get()}):e.parseCH().get()},s.prototype.withFeatureCheck=function(){return e.detectFeature().get()},i!=f&&(s.prototype.is=function(i){var e,o=!1;for(e in this)if(this.hasOwnProperty(e)&&!Si(t,e)&&H(r?N(r,this[e]):this[e])==H(r?N(r,i):i)){if(o=!0,i!=n)break}else if(i==n&&o){o=!o;break}return o},s.prototype.toString=function(){var i,e=w;for(i in a)typeof this[a[i]]!==n&&(e+=(e?" ":w)+this[a[i]]);return e||n}),O||(s.prototype.then=function(i){function e(){for(var i in o)o.hasOwnProperty(i)&&(this[i]=o[i])}var o=this,t=(e.prototype={is:s.prototype.is,toString:s.prototype.toString},new e);return i(t),t}),new s};function Bi(i,e){if(i=i||{},M.call(this,ri),e)M.call(this,[[$,qi(i[t])],[W,qi(i[K])],[S,/\?1/.test(i[ii])],[T,Oi(i[ei])],[q,Oi(i[oi])],[X,Oi(i[ti])],[y,Oi(i[Q])],[_,qi(i[J])],[Y,Oi(i[Z])]]);else for(var o in i)this.hasOwnProperty(o)&&typeof i[o]!==n&&(this[o]=i[o])}function Pi(i,e,o,t){return this.get=function(i){return i?this.data.hasOwnProperty(i)?this.data[i]:void 0:this.data},this.set=function(i,e){return this.data[i]=e,this},this.setCH=function(i){return this.uaCH=i,this},this.detectFeature=function(){if(z&&z.userAgent==this.ua)switch(this.itemType){case c:z.brave&&typeof z.brave.isBrave==R&&this.set(g,"Brave");break;case h:!this.get(v)&&O&&O[S]&&this.set(v,S),"Macintosh"==this.get(T)&&z&&typeof z.standalone!==n&&z.maxTouchPoints&&2<z.maxTouchPoints&&this.set(T,"iPad").set(v,r);break;case m:!this.get(g)&&O&&O[q]&&this.set(g,O[q]);break;case f:var e=this.data,i=function(i){return e[i].getItem().detectFeature().get()};this.set(c,i(c)).set(u,i(u)).set(h,i(h)).set(p,i(p)).set(m,i(m))}return this},this.parseUA=function(){return this.itemType!=f&&Hi.call(this.data,this.ua,this.rgxMap),this.itemType==c&&this.set(C,zi(this.get(x))),this},this.parseCH=function(){var i,e=this.uaCH,o=this.rgxMap;switch(this.itemType){case c:case p:var t,r=e[W]||e[$];if(r)for(var a in r){var s=r[a].brand||r[a],a=r[a].version;this.itemType!=c||/not.a.brand/i.test(s)||t&&(!/chrom/i.test(t)||s==ki)||(s=I(s,{Chrome:"Google Chrome",Edge:"Microsoft Edge","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"}),this.set(g,s).set(x,a).set(C,zi(a)),t=s),this.itemType==p&&s==ki&&this.set(x,a)}break;case u:var n=e[y];n&&("64"==e[Y]&&(n+="64"),Hi.call(this.data,n+";",o));break;case h:if(e[S]&&this.set(v,S),e[T]&&(this.set(T,e[T]),this.get(v)&&this.get(k)||(Hi.call(n={},"droid 9; "+e[T]+")",o),!this.get(v)&&n.type&&this.set(v,n.type),!this.get(k)&&n.vendor&&this.set(k,n.vendor))),e[_]){if("string"!=typeof e[_])for(var w=0;!i&&w<e[_].length;)i=I(e[_][w++],Ni);else i=I(e[_],Ni);this.set(v,i)}break;case m:var b,n=e[q];n&&(b=e[X],n==Ti&&(b=13<=parseInt(zi(b),10)?"11":"10"),this.set(g,n).set(x,b)),this.get(g)==Ti&&"Xbox"==e[T]&&this.set(g,"Xbox").set(x,void 0);break;case f:var d=this.data,n=function(i){return d[i].getItem().setCH(e).parseCH().get()};this.set(c,n(c)).set(u,n(u)).set(h,n(h)).set(p,n(p)).set(m,n(m))}return this},M.call(this,[["itemType",i],["ua",e],["uaCH",t],["rgxMap",o],["data",Ei(this,i)]]),this}function j(i,e,o){var t,r,a,s,n;return typeof i===l?(e=_i(i,!0)?(typeof e===l&&(o=e),i):void(o=i),i=void 0):typeof i!==V||_i(e,!0)||(o=e,e=void 0),o&&typeof o.append===R&&(t={},o.forEach(function(i,e){t[e]=i}),o=t),this instanceof j?(r=typeof i===V?i:o&&o[P]?o[P]:z&&z.userAgent?z.userAgent:w,a=new Bi(o,!0),s=e?((i,e)=>{var o,t={},r=e;if(!_i(e))for(var a in r={},e)for(var s in e[a])r[s]=e[a][s].concat(r[s]||[]);for(o in i)t[o]=r[o]&&r[o].length%2==0?r[o].concat(i[o]):i[o];return t})(Ii,e):Ii,M.call(this,[["getBrowser",(n=function(i){return i==f?function(){return new Pi(i,r,s,a).set("ua",r).set(c,this.getBrowser()).set(u,this.getCPU()).set(h,this.getDevice()).set(p,this.getEngine()).set(m,this.getOS()).get()}:function(){return new Pi(i,r,s[i],a).parseUA().get()}})(c)],["getCPU",n(u)],["getDevice",n(h)],["getEngine",n(p)],["getOS",n(m)],["getResult",n(f)],["getUA",function(){return r}],["setUA",function(i){return A(i)&&(r=i.length>B?Ai(i,B):i),this}]]).setUA(r),this):new j(i,e,o).getResult()}j.VERSION="2.0.3",j.BROWSER=E([g,x,C,v]),j.CPU=E([y]),j.DEVICE=E([T,k,v,L,S,i,r,e,F]),j.ENGINE=j.OS=E([g,x]);export{j as UAParser};
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"title": "UAParser.js",
|
3
3
|
"name": "ua-parser-js",
|
4
|
-
"version": "2.0.
|
4
|
+
"version": "2.0.3",
|
5
5
|
"author": "Faisal Salman <f@faisalman.com> (http://faisalman.com)",
|
6
6
|
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent & Client Hints data. Supports browser & node.js environment",
|
7
7
|
"keywords": [
|
@@ -25,14 +25,17 @@
|
|
25
25
|
"contributors": [
|
26
26
|
"Aamir Poonawalla <aamir@urx.com>",
|
27
27
|
"Admas <mollases@users.noreply.github.com>",
|
28
|
+
"Aiyush <aiyushdhar85@gmail.com>",
|
28
29
|
"algenon <m@antonz.ru>",
|
29
30
|
"Alvin Portillo <alvin@8thwall.com>",
|
30
31
|
"Amumu <yoyo837@hotmail.com>",
|
32
|
+
"Andreas Kogler <andreas.kogler@bitmovin.com>",
|
31
33
|
"Andrea Vaghi <andrea.vaghi@jobrapido.com>",
|
32
34
|
"Anton Zhiyanov <m@antonz.ru>",
|
33
35
|
"Arturo Mejia <amejia@blim.com>",
|
34
36
|
"Arun Rama Reddy <arunramareddy@gmail.com>",
|
35
37
|
"Austin Pray <austin@austinpray.com>",
|
38
|
+
"Beat YT <66485277+Beat-YT@users.noreply.github.com>",
|
36
39
|
"Bendeguz <symunona@gmail.com>",
|
37
40
|
"Benjamin Bertrand <bertrand.design@gmail.com>",
|
38
41
|
"Benjamin Urban <benjamin.urban@sueddeutsche.de>",
|
@@ -44,6 +47,8 @@
|
|
44
47
|
"chenyuan-new <53860479+chenyuan-new@users.noreply.github.com>",
|
45
48
|
"Christopher De Cairos <chris.decairos@gmail.com>",
|
46
49
|
"Cyrille David <cyrille@qonto.eu>",
|
50
|
+
"Dai Jie <daijie@php.net>",
|
51
|
+
"Danila Rodichkin <daniluk4000@outlook.com>",
|
47
52
|
"Dante <duanjl.china@gmail.com>",
|
48
53
|
"Dario Vladovic <d.vladimyr@gmail.com>",
|
49
54
|
"David Annez <david.annez@gmail.com>",
|
@@ -73,11 +78,15 @@
|
|
73
78
|
"Grigory Dmitrenko <grigory@snsk.ru>",
|
74
79
|
"gulpin <gulping.gulpin@gmail.com>",
|
75
80
|
"Hans Ott <hansott@hotmail.be>",
|
81
|
+
"Harald Reingruber <74898239+haraldreingruber-dedalus@users.noreply.github.com>",
|
76
82
|
"Hendrik Helwich <h.helwich@iplabs.de>",
|
77
83
|
"Hermann Ebert <ebbmo@HE.local>",
|
78
84
|
"hr6r <hedian@gmail.com>",
|
85
|
+
"Hyewon Kang <gpffps369@gmail.com>",
|
86
|
+
"Hyunbin <47051820+hyunbinseo@users.noreply.github.com>",
|
79
87
|
"Igor Topal <i.topal@smartweb.com.ua>",
|
80
88
|
"Ildar Kamalov <i.kamalov@adguard.com>",
|
89
|
+
"Ilya Daraseliya <idarase@gmail.com>",
|
81
90
|
"insanehong <insane.hong@navercorp.com>",
|
82
91
|
"jackpoll <jackpoll123456@gmail.com>",
|
83
92
|
"Jacky Choo <jackychoo@adly-macbook.local>",
|
@@ -98,6 +107,7 @@
|
|
98
107
|
"Liam Quinn <lquinn@blackberry.com>",
|
99
108
|
"Lithin <lithin@webklipper.com>",
|
100
109
|
"liujunlve <liujunlve@henhaoji.com>",
|
110
|
+
"lj0812 <xoyljlj@163.com>",
|
101
111
|
"ll-syber <670159357@qq.com>",
|
102
112
|
"Loris Guignard <loris.guignard@gmail.com>",
|
103
113
|
"Lukas Drgon <lukas.drgon@gmail.com>",
|
@@ -111,6 +121,7 @@
|
|
111
121
|
"Max Maurer <maxemanuel.maurer@gmail.com>",
|
112
122
|
"Max Nordlund <max.nordlund@gmail.com>",
|
113
123
|
"Michael Hess <mhess@connectify.me>",
|
124
|
+
"Mike <mikehuebner@me.com>",
|
114
125
|
"MimyyK <michele.marais@hakisa.com>",
|
115
126
|
"Mok <mok@moekm.com>",
|
116
127
|
"nabetama <mao.nabeta@gmail.com>",
|
@@ -124,6 +135,7 @@
|
|
124
135
|
"o.drapeza <o.drapeza@tinkoff.ru>",
|
125
136
|
"Oscar Becerra <oscarbecerra@google.com>",
|
126
137
|
"otakuSiD <otakusid@gmail.com>",
|
138
|
+
"Pablo Osés <opablo@gmail.com>",
|
127
139
|
"Paris Morgan <paris@8thwall.com>",
|
128
140
|
"patrick-nurt <github@pereira.dk>",
|
129
141
|
"Pavel Studeny <studeny@avast.com>",
|
@@ -209,7 +221,7 @@
|
|
209
221
|
"test:jshint": "jshint src/main",
|
210
222
|
"test:lockfile-lint": "npx lockfile-lint -p package-lock.json",
|
211
223
|
"test:mocha": "mocha test/unit",
|
212
|
-
"test:playwright": "playwright test test/e2e --browser all"
|
224
|
+
"test:playwright": "npx playwright install && playwright test test/e2e --browser all"
|
213
225
|
},
|
214
226
|
"dependencies": {
|
215
227
|
"detect-europe-js": "^0.1.2",
|
@@ -221,7 +233,6 @@
|
|
221
233
|
"devDependencies": {
|
222
234
|
"@babel/parser": "7.15.8",
|
223
235
|
"@babel/traverse": "7.23.2",
|
224
|
-
"@jazzer.js/core": "^1.4.0",
|
225
236
|
"@playwright/test": "^1.49.0",
|
226
237
|
"jshint": "~2.13.6",
|
227
238
|
"mocha": "~8.2.0",
|
@@ -1,4 +1,4 @@
|
|
1
|
-
// Type definitions for Enums submodule of UAParser.js v2.0.
|
1
|
+
// Type definitions for Enums submodule of UAParser.js v2.0.3
|
2
2
|
// Project: https://github.com/faisalman/ua-parser-js
|
3
3
|
// Definitions by: Faisal Salman <https://github.com/faisalman>
|
4
4
|
|
@@ -16,6 +16,7 @@ export const Browser: Readonly<{
|
|
16
16
|
BAIDU: "Baidu Browser";
|
17
17
|
BASILISK: "Basilisk";
|
18
18
|
BLAZER: "Blazer";
|
19
|
+
BLU: "BLU";
|
19
20
|
BOLT: "Bolt";
|
20
21
|
BOWSER: "Bowser";
|
21
22
|
BRAVE: "Brave";
|
@@ -32,9 +33,11 @@ export const Browser: Readonly<{
|
|
32
33
|
DAUM: "Daum";
|
33
34
|
DILLO: "Dillo";
|
34
35
|
DOLPHIN: "Dolphin";
|
36
|
+
DOOBLE: 'Dooble',
|
35
37
|
DORIS: "Doris";
|
36
38
|
DRAGON: "Dragon";
|
37
39
|
DUCKDUCKGO: "DuckDuckGo";
|
40
|
+
ECOSIA: "Ecosia";
|
38
41
|
EDGE: "Edge";
|
39
42
|
EPIPHANY: "Epiphany";
|
40
43
|
FACEBOOK: "Facebook";
|
@@ -73,6 +76,7 @@ export const Browser: Readonly<{
|
|
73
76
|
KINDLE: "Kindle";
|
74
77
|
LENOVO: "Smart Lenovo Browser";
|
75
78
|
LADYBIRD: "Ladybird";
|
79
|
+
LG: "LG Browser";
|
76
80
|
LIBREWOLF: "LibreWolf";
|
77
81
|
LIEBAO: "LBBROWSER";
|
78
82
|
LINE: "Line";
|
@@ -97,10 +101,12 @@ export const Browser: Readonly<{
|
|
97
101
|
OMNIWEB: "OmniWeb";
|
98
102
|
OPERA: "Opera";
|
99
103
|
OPERA_COAST: "Opera Coast";
|
104
|
+
OPERA_GX: "Opera GX",
|
100
105
|
OPERA_MINI: "Opera Mini";
|
101
106
|
OPERA_MOBI: "Opera Mobi";
|
102
107
|
OPERA_TABLET: "Opera Tablet";
|
103
108
|
OPERA_TOUCH: "Opera Touch";
|
109
|
+
OTTER: "Otter";
|
104
110
|
OVI: "OviBrowser";
|
105
111
|
PALEMOON: "PaleMoon";
|
106
112
|
PHANTOMJS: "PhantomJS";
|
@@ -112,6 +118,7 @@ export const Browser: Readonly<{
|
|
112
118
|
QQ_LITE: "QQBrowserLite";
|
113
119
|
QUARK: "Quark";
|
114
120
|
QUPZILLA: "QupZilla";
|
121
|
+
QUTEBROWSER: "qutebrowser";
|
115
122
|
REKONQ: "rekonq";
|
116
123
|
ROCKMELT: "Rockmelt";
|
117
124
|
SAFARI: "Safari";
|
@@ -128,6 +135,7 @@ export const Browser: Readonly<{
|
|
128
135
|
SNAPCHAT: "Snapchat";
|
129
136
|
SOGOU_EXPLORER: "Sogou Explorer";
|
130
137
|
SOGOU_MOBILE: "Sogou Mobile";
|
138
|
+
SURF: "Surf";
|
131
139
|
SWIFTFOX: "Swiftfox";
|
132
140
|
TESLA: "Tesla";
|
133
141
|
TIKTOK: "TikTok";
|
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Enums for UAParser.js v2.0.
|
2
|
+
/* Enums for UAParser.js v2.0.3
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -21,6 +21,7 @@ const Browser = Object.freeze({
|
|
21
21
|
BAIDU: 'Baidu Browser',
|
22
22
|
BASILISK: 'Basilisk',
|
23
23
|
BLAZER: 'Blazer',
|
24
|
+
BLU: 'BLU',
|
24
25
|
BOLT: 'Bolt',
|
25
26
|
BOWSER: 'Bowser',
|
26
27
|
BRAVE: 'Brave',
|
@@ -37,9 +38,11 @@ const Browser = Object.freeze({
|
|
37
38
|
DAUM: 'Daum',
|
38
39
|
DILLO: 'Dillo',
|
39
40
|
DOLPHIN: 'Dolphin',
|
41
|
+
DOOBLE: 'Dooble',
|
40
42
|
DORIS: 'Doris',
|
41
43
|
DRAGON: 'Dragon',
|
42
44
|
DUCKDUCKGO: 'DuckDuckGo',
|
45
|
+
ECOSIA: 'Ecosia',
|
43
46
|
EDGE: 'Edge',
|
44
47
|
EPIPHANY: 'Epiphany',
|
45
48
|
FACEBOOK: 'Facebook',
|
@@ -78,6 +81,7 @@ const Browser = Object.freeze({
|
|
78
81
|
KINDLE: 'Kindle',
|
79
82
|
LENOVO: 'Smart Lenovo Browser',
|
80
83
|
LADYBIRD: 'Ladybird',
|
84
|
+
LG: 'LG Browser',
|
81
85
|
LIBREWOLF: 'LibreWolf',
|
82
86
|
LIEBAO: 'LBBROWSER',
|
83
87
|
LINE: 'Line',
|
@@ -102,10 +106,12 @@ const Browser = Object.freeze({
|
|
102
106
|
OMNIWEB: 'OmniWeb',
|
103
107
|
OPERA: 'Opera',
|
104
108
|
OPERA_COAST: 'Opera Coast',
|
109
|
+
OPERA_GX: 'Opera GX',
|
105
110
|
OPERA_MINI: 'Opera Mini',
|
106
111
|
OPERA_MOBI: 'Opera Mobi',
|
107
112
|
OPERA_TABLET: 'Opera Tablet',
|
108
113
|
OPERA_TOUCH: 'Opera Touch',
|
114
|
+
OTTER: 'Otter',
|
109
115
|
OVI: 'OviBrowser',
|
110
116
|
PALEMOON: 'PaleMoon',
|
111
117
|
PHANTOMJS: 'PhantomJS',
|
@@ -117,6 +123,7 @@ const Browser = Object.freeze({
|
|
117
123
|
QQ_LITE: 'QQBrowserLite',
|
118
124
|
QUARK: 'Quark',
|
119
125
|
QUPZILLA: 'QupZilla',
|
126
|
+
QUTEBROWSER: 'qutebrowser',
|
120
127
|
REKONQ: 'rekonq',
|
121
128
|
ROCKMELT: 'Rockmelt',
|
122
129
|
SAFARI: 'Safari',
|
@@ -133,6 +140,7 @@ const Browser = Object.freeze({
|
|
133
140
|
SNAPCHAT: 'Snapchat',
|
134
141
|
SOGOU_EXPLORER: 'Sogou Explorer',
|
135
142
|
SOGOU_MOBILE: 'Sogou Mobile',
|
143
|
+
SURF: 'Surf',
|
136
144
|
SWIFTFOX: 'Swiftfox',
|
137
145
|
TESLA: 'Tesla',
|
138
146
|
TIKTOK: 'TikTok',
|
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/enums/ua-parser-enums.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Enums for UAParser.js v2.0.
|
6
|
+
/* Enums for UAParser.js v2.0.3
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -25,6 +25,7 @@ const Browser = Object.freeze({
|
|
25
25
|
BAIDU: 'Baidu Browser',
|
26
26
|
BASILISK: 'Basilisk',
|
27
27
|
BLAZER: 'Blazer',
|
28
|
+
BLU: 'BLU',
|
28
29
|
BOLT: 'Bolt',
|
29
30
|
BOWSER: 'Bowser',
|
30
31
|
BRAVE: 'Brave',
|
@@ -41,9 +42,11 @@ const Browser = Object.freeze({
|
|
41
42
|
DAUM: 'Daum',
|
42
43
|
DILLO: 'Dillo',
|
43
44
|
DOLPHIN: 'Dolphin',
|
45
|
+
DOOBLE: 'Dooble',
|
44
46
|
DORIS: 'Doris',
|
45
47
|
DRAGON: 'Dragon',
|
46
48
|
DUCKDUCKGO: 'DuckDuckGo',
|
49
|
+
ECOSIA: 'Ecosia',
|
47
50
|
EDGE: 'Edge',
|
48
51
|
EPIPHANY: 'Epiphany',
|
49
52
|
FACEBOOK: 'Facebook',
|
@@ -82,6 +85,7 @@ const Browser = Object.freeze({
|
|
82
85
|
KINDLE: 'Kindle',
|
83
86
|
LENOVO: 'Smart Lenovo Browser',
|
84
87
|
LADYBIRD: 'Ladybird',
|
88
|
+
LG: 'LG Browser',
|
85
89
|
LIBREWOLF: 'LibreWolf',
|
86
90
|
LIEBAO: 'LBBROWSER',
|
87
91
|
LINE: 'Line',
|
@@ -106,10 +110,12 @@ const Browser = Object.freeze({
|
|
106
110
|
OMNIWEB: 'OmniWeb',
|
107
111
|
OPERA: 'Opera',
|
108
112
|
OPERA_COAST: 'Opera Coast',
|
113
|
+
OPERA_GX: 'Opera GX',
|
109
114
|
OPERA_MINI: 'Opera Mini',
|
110
115
|
OPERA_MOBI: 'Opera Mobi',
|
111
116
|
OPERA_TABLET: 'Opera Tablet',
|
112
117
|
OPERA_TOUCH: 'Opera Touch',
|
118
|
+
OTTER: 'Otter',
|
113
119
|
OVI: 'OviBrowser',
|
114
120
|
PALEMOON: 'PaleMoon',
|
115
121
|
PHANTOMJS: 'PhantomJS',
|
@@ -121,6 +127,7 @@ const Browser = Object.freeze({
|
|
121
127
|
QQ_LITE: 'QQBrowserLite',
|
122
128
|
QUARK: 'Quark',
|
123
129
|
QUPZILLA: 'QupZilla',
|
130
|
+
QUTEBROWSER: 'qutebrowser',
|
124
131
|
REKONQ: 'rekonq',
|
125
132
|
ROCKMELT: 'Rockmelt',
|
126
133
|
SAFARI: 'Safari',
|
@@ -137,6 +144,7 @@ const Browser = Object.freeze({
|
|
137
144
|
SNAPCHAT: 'Snapchat',
|
138
145
|
SOGOU_EXPLORER: 'Sogou Explorer',
|
139
146
|
SOGOU_MOBILE: 'Sogou Mobile',
|
147
|
+
SURF: 'Surf',
|
140
148
|
SWIFTFOX: 'Swiftfox',
|
141
149
|
TESLA: 'Tesla',
|
142
150
|
TIKTOK: 'TikTok',
|
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Extensions for UAParser.js v2.0.
|
2
|
+
/* Extensions for UAParser.js v2.0.3
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -42,25 +42,25 @@ const Crawlers = Object.freeze({
|
|
42
42
|
[
|
43
43
|
// AhrefsBot - https://ahrefs.com/robot
|
44
44
|
// Amazonbot - https://developer.amazon.com/amazonbot
|
45
|
-
// Bingbot -
|
45
|
+
// Bingbot / AdIdxBot - https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
|
46
46
|
// CCBot - https://commoncrawl.org/faq
|
47
47
|
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
48
48
|
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
49
49
|
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
50
50
|
// GPTBot - https://platform.openai.com/docs/gptbot
|
51
|
+
// LinkedInBot - http://www.linkedin.com
|
51
52
|
// MJ12bot - https://mj12bot.com/
|
52
53
|
// MojeekBot - https://www.mojeek.com/bot.html
|
53
54
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
54
55
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
55
|
-
// SemrushBot - http://www.semrush.com/bot.html
|
56
56
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
57
|
-
/((?:ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
57
|
+
/((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|linkedin|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
58
58
|
|
59
59
|
// Applebot - http://apple.com/go/applebot
|
60
|
-
/(applebot(?:-extended)?)
|
60
|
+
/(applebot(?:-extended)?)\/?([\w\.]*)/i,
|
61
61
|
|
62
62
|
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
63
|
-
/(baiduspider
|
63
|
+
/(baiduspider[-imagevdonwsfcpr]{0,7})\/?([\w\.]*)/i,
|
64
64
|
|
65
65
|
// ClaudeBot (Anthropic)
|
66
66
|
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
@@ -78,6 +78,9 @@ const Crawlers = Object.freeze({
|
|
78
78
|
// Internet Archive (archive.org)
|
79
79
|
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
80
80
|
|
81
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
82
|
+
/((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
|
83
|
+
|
81
84
|
// Sogou Spider
|
82
85
|
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
83
86
|
|
@@ -90,8 +93,8 @@ const Crawlers = Object.freeze({
|
|
90
93
|
// Yeti (Naver)
|
91
94
|
/(yeti)\/([\w\.]+)/i,
|
92
95
|
|
93
|
-
// aiHitBot / Diffbot / Magpie-Crawler / Omgilibot / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
94
|
-
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
96
|
+
// aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
97
|
+
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |line|yisou)spider)\/?([\w\.]*)/i
|
95
98
|
],
|
96
99
|
|
97
100
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
@@ -108,7 +111,7 @@ const Crawlers = Object.freeze({
|
|
108
111
|
// Qihoo 360Spider
|
109
112
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
110
113
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
111
|
-
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|
|
114
|
+
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|yahoo! slurp)/i
|
112
115
|
],
|
113
116
|
[NAME, [TYPE, CRAWLER]]
|
114
117
|
]
|
@@ -217,27 +220,35 @@ const Fetchers = Object.freeze({
|
|
217
220
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
218
221
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
219
222
|
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
220
|
-
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
223
|
+
// Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
221
224
|
// Google Site Verifier / Meta / Yahoo! Japan
|
222
225
|
// Yandex Bots - https://yandex.com/bots
|
223
|
-
/(ahrefssiteaudit|
|
226
|
+
/(ahrefssiteaudit|(?:bing|microsoft)preview|chatgpt-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
224
227
|
|
225
228
|
// Bluesky
|
226
229
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
227
230
|
|
231
|
+
// Skype
|
232
|
+
/(skypeuripreview) preview\/([\w\.]+)/i,
|
233
|
+
|
228
234
|
// Slackbot - https://api.slack.com/robots
|
229
235
|
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
230
236
|
|
231
237
|
// WhatsApp
|
232
|
-
/(whatsapp)\/([\w\.]+)
|
238
|
+
/(whatsapp)\/([\w\.]+)/i
|
233
239
|
],
|
234
240
|
[NAME, VERSION, [TYPE, FETCHER]],
|
235
241
|
|
236
242
|
[
|
237
243
|
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
238
|
-
/(cohere-ai|
|
244
|
+
/((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i
|
239
245
|
],
|
240
246
|
[NAME, [TYPE, FETCHER]],
|
247
|
+
],
|
248
|
+
|
249
|
+
os : [
|
250
|
+
[/whatsapp\/[\d\.]+ (a|i)/i],
|
251
|
+
[[NAME, os => os == 'A' ? 'Android' : 'iOS' ]]
|
241
252
|
]
|
242
253
|
});
|
243
254
|
|
@@ -248,10 +259,12 @@ const Fetchers = Object.freeze({
|
|
248
259
|
const InApps = Object.freeze({
|
249
260
|
browser : [
|
250
261
|
// Slack
|
251
|
-
[/chatlyio\/([\d\.]+)/i],
|
262
|
+
[/(?:slack(?=.+electron|.+ios)|chatlyio)\/([\d\.]+)/i],
|
263
|
+
[VERSION, [NAME, 'Slack'], [TYPE, INAPP]],
|
252
264
|
|
253
265
|
// Yahoo! Japan
|
254
|
-
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i],
|
266
|
+
[/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
|
267
|
+
[VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
|
255
268
|
]
|
256
269
|
});
|
257
270
|
|
@@ -327,15 +340,20 @@ const Libraries = Object.freeze({
|
|
327
340
|
|
328
341
|
const Vehicles = Object.freeze({
|
329
342
|
device : [
|
330
|
-
[
|
331
|
-
|
332
|
-
|
343
|
+
[/aftlbt962e2/i], // BMW
|
344
|
+
[[VENDOR, 'BMW']],
|
345
|
+
|
346
|
+
[/dilink.+(byd) auto/i], // BYD
|
347
|
+
[VENDOR],
|
333
348
|
|
334
|
-
|
335
|
-
], [
|
349
|
+
[/aftlft962x3/i], // Jeep
|
350
|
+
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
351
|
+
|
352
|
+
[/(rivian) (r1t)/i], // Rivian
|
353
|
+
[VENDOR, MODEL],
|
336
354
|
|
337
|
-
|
338
|
-
|
355
|
+
[/vcc.+netfront/i], // Volvo
|
356
|
+
[[VENDOR, 'Volvo']]
|
339
357
|
]
|
340
358
|
});
|
341
359
|
|
@@ -349,6 +367,9 @@ const Bots = Object.freeze({
|
|
349
367
|
...Crawlers.browser,
|
350
368
|
...Fetchers.browser,
|
351
369
|
...Libraries.browser
|
370
|
+
],
|
371
|
+
os : [
|
372
|
+
...Fetchers.os
|
352
373
|
]
|
353
374
|
});
|
354
375
|
|