ua-parser-js 2.0.3 → 2.0.4

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.
@@ -1,4 +1,4 @@
1
- /* UAParser.js v2.0.3
1
+ /* UAParser.js v2.0.4
2
2
  Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
3
3
  AGPLv3 License */
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};
4
+ function I(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="?",L="function",n="undefined",l="object",R="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",S="model",G="console",_="mobile",r="tablet",i="smarttv",e="wearable",W="xr",N="embedded",F="inapp",D="brands",q="formFactors",$="fullVersionList",z="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+"-"+_,ei=t+"-"+S,oi=t+"-"+z,ti=oi+"-version",ri=[D,$,_,S,z,X,y,q,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="Edge",yi="Firefox",b="Opera",Ci="Facebook",d="Mobile ",Si=" Browser",_i="Windows",T=typeof window!==n&&window.navigator?window.navigator:void 0,O=T&&T.userAgentData?T.userAgentData:void 0,qi=function(i,e){if(typeof i===l&&0<i.length){for(var o in i)if(M(e)==M(i[o]))return!0;return!1}return!!H(i)&&M(e)==M(i)},zi=function(i,e){for(var o in i)return/^(browser|cpu|device|engine|os)$/.test(o)||!!e&&zi(i[o])},H=function(i){return typeof i===R},Ti=function(i){if(i){for(var e,o=[],t=j(/\\?\"/g,i).split(","),r=0;r<t.length;r++)-1<t[r].indexOf(";")?(e=Mi(t[r]).split(";v="),o[r]={brand:e[0],version:e[1]}):o[r]=Mi(t[r]);return o}},M=function(i){return H(i)?i.toLowerCase():i},Oi=function(i){return H(i)?j(/[^\d\.]/g,i).split(".")[0]:void 0},A=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 H(e)?e.replace(i,w):e},Hi=function(i){return j(/\\?\"/g,i)},Mi=function(i,e){if(H(i))return i=j(/^\s\s*/,i),typeof e===n?i:i.substring(0,B)},Ai=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]==L?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3<=r.length&&(typeof r[1]!==L||r[1].exec&&r[1].test?3==r.length?this[r[0]]=s?s.replace(r[1],r[2]):void 0:4==r.length?this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0:4<r.length&&(this[r[0]]=s?r[3].apply(this,[s.replace(r[1],r[2])].concat(r.slice(4))):void 0):3<r.length?this[r[0]]=s?r[1].apply(this,r.slice(2)):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0):this[r]=s||void 0;n+=2}},E=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(qi(e[o][t],i))return o===U?void 0:o}else if(qi(e[o],i))return o===U?void 0:o;return e.hasOwnProperty("*")?e["*"]:i},ji={ME:"4.90","NT 3.51":"3.51","NT 4.0":"4.0",2e3:["5.0","5.01"],XP:["5.1","5.2"],Vista:"6.0",7:"6.1",8:"6.2",8.1:"6.3",10:["6.4","10.0"],NT:""},Ei={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Vi={Chrome:"Google Chrome",Edge:"Microsoft Edge","Edge WebView2":"Microsoft Edge WebView2","Chrome WebView":"Android WebView","Chrome Headless":"HeadlessChrome","Huawei Browser":"HuaweiBrowser","MIUI Browser":"Miui Browser","Opera Mobi":"OperaMobile",Yandex:"YaBrowser"},Ii={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[x,[g,d+"Chrome"]],[/webview.+edge\/([\w\.]+)/i],[x,[g,xi+" WebView"]],[/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+Si]],[/(avast|avg)\/([\w\.]+)/i],[[g,/(.+)/,"$1 Secure"+Si],x],[/\bfocus\/([\w\.]+)/i],[x,[g,yi+" 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"+Si]],[/fxios\/([\w\.-]+)/i],[x,[g,d+yi]],[/\bqihoobrowser\/?([\w\.]*)/i],[x,[g,"360"]],[/\b(qq)\/([\w\.]+)/i],[[g,/(.+)/,"$1Browser"],x],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[g,/(.+)/,"$1"+Si],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,Ci],x,[v,F]],[/(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|klarna)[\/ ]([-\w\.]+)/i],[g,x,[v,F]],[/\bgsa\/([\w\.]+) .*safari\//i],[x,[g,"GSA"],[v,F]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[x,[g,"TikTok"],[v,F]],[/\[(linkedin)app\]/i],[g,[v,F]],[/(chromium)[\/ ]([-\w\.]+)/i],[g,x],[/headlesschrome(?:\/([\w\.]+)| )/i],[x,[g,"Chrome Headless"]],[/wv\).+chrome\/([\w\.]+).+edgw\//i],[x,[g,xi+" WebView2"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[g,"Chrome WebView"],x],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[x,[g,"Android"+Si]],[/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+yi],x],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[g,"Netscape"],x],[/(wolvic|librewolf)\/([\w\.]+)/i],[g,x],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[x,[g,yi+" 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,M]],[/ 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,M]]],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],[S,[k,mi],[v,r]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr]|browser)[-\w]+)/i,/sec-(sgh\w+)/i],[S,[k,mi],[v,_]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[S,[k,o],[v,_]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[S,[k,o],[v,r]],[/(macintosh);/i],[S,[k,o]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[S,[k,"Sharp"],[v,_]],[/\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i],[S,[k,di],[v,r]],[/honor([-\w ]+)[;\)]/i],[S,[k,di],[v,_]],[/\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],[S,[k,wi],[v,r]],[/(?:huawei)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[S,[k,wi],[v,_]],[/oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i,/\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i],[[S,/_/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],[[S,/_/g," "],[k,gi],[v,_]],[/droid.+; (cph2[3-6]\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\d|p[g-k]\w[1m]10)\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[S,[k,hi],[v,_]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[S,[k,pi],[v,_]],[/\b(opd2(\d{3}a?))(?: bui|\))/i],[S,[k,E,{OnePlus:["203","304","403","404","413","415"],"*":pi}],[v,r]],[/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i],[S,[k,"BLU"],[v,_]],[/; vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[S,[k,"Vivo"],[v,_]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[S,[k,"Realme"],[v,_]],[/(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],[S,[k,bi],[v,r]],[/lenovo[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i],[S,[k,bi],[v,_]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ]([\w\s]+)(\)| bui)/i,/((?:moto(?! 360)[-\w\(\) ]+|xt\d{3,4}[cgkosw\+]?[-\d]*|nexus 6)(?= bui|\)))/i],[S,[k,ci],[v,_]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[S,[k,ci],[v,r]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[S,[k,"LG"],[v,r]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\w+)/i,/\blg-?([\d\w]+) bui/i],[S,[k,"LG"],[v,_]],[/(nokia) (t[12][01])/i],[k,S,[v,r]],[/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i,/nokia[-_ ]?(([-\w\. ]*))/i],[[S,/_/g," "],[v,_],[k,"Nokia"]],[/(pixel (c|tablet))\b/i],[S,[k,a],[v,r]],[/droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\d ]*a?( pro)?( xl)?( fold)?( \(5g\))?)( bui|\))/i],[S,[k,a],[v,_]],[/(google) (pixelbook( go)?)/i],[k,S],[/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-\w\w\d\d)(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[S,[k,fi],[v,_]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[S,"Xperia Tablet"],[k,fi],[v,r]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[S,[k,ai],[v,r]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[S,/(.+)/g,"Fire Phone $1"],[k,ai],[v,_]],[/(playbook);[-\w\),; ]+(rim)/i],[S,k,[v,r]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[S,[k,ni],[v,_]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[S,[k,si],[v,r]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[S,[k,si],[v,_]],[/(nexus 9)/i],[S,[k,"HTC"],[v,r]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[k,[S,/_/g," "],[v,_]],[/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],[S,[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],[S,[k,"TCL"],[v,_]],[/(itel) ((\w+))/i],[[k,M],S,[v,E,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[S,[k,"Acer"],[v,r]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[S,[k,"Meizu"],[v,_]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[S,[k,"Ulefone"],[v,_]],[/; (energy ?\w+)(?: bui|\))/i,/; energizer ([\w ]+)(?: bui|\))/i],[S,[k,"Energizer"],[v,_]],[/; cat (b35);/i,/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i],[S,[k,"Cat"],[v,_]],[/((?:new )?andromax[\w- ]+)(?: bui|\))/i],[S,[k,"Smartfren"],[v,_]],[/droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i],[S,[k,"Nothing"],[v,_]],[/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i],[S,[k,"Archos"],[v,r]],[/archos ([\w ]+)( b|\))/i,/; (ac[3-6]\d\w{2,8})( b|\))/i],[S,[k,"Archos"],[v,_]],[/; (n159v)/i],[S,[k,"HMD"],[v,_]],[/(imo) (tab \w+)/i,/(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i],[k,S,[v,r]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\w]*)/i,/; (blu|hmd|imo|infinix|lava|oneplus|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i,/(hp) ([\w ]+\w)/i,/(microsoft); (lumia[\w ]+)/i,/(oppo) ?([\w ]+) bui/i],[k,S,[v,_]],[/(kobo)\s(ereader|touch)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[k,S,[v,r]],[/(surface duo)/i],[S,[k,li],[v,r]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[S,[k,"Fairphone"],[v,_]],[/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i],[S,[k,ui],[v,r]],[/(sprint) (\w+)/i],[k,S,[v,_]],[/(kin\.[onetw]{3})/i],[[S,/\./g," "],[k,li],[v,_]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[S,[k,vi],[v,r]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[S,[k,vi],[v,_]],[/smart-tv.+(samsung)/i],[k,[v,i]],[/hbbtv.+maple;(\d+)/i],[[S,/^/,"SmartTV"],[k,mi],[v,i]],[/(vizio)(?: |.+model\/)(\w+-\w+)/i,/tcast.+(lg)e?. ([-\w]+)/i],[k,S,[v,i]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[k,"LG"],[v,i]],[/(apple) ?tv/i],[k,[S,o+" TV"],[v,i]],[/crkey.*devicetype\/chromecast/i],[[S,s+" Third Generation"],[k,a],[v,i]],[/crkey.*devicetype\/([^/]*)/i],[[S,/^/,"Chromecast "],[k,a],[v,i]],[/fuchsia.*crkey/i],[[S,s+" Nest Hub"],[k,a],[v,i]],[/crkey/i],[[S,s],[k,a],[v,i]],[/(portaltv)/i],[S,[k,Ci],[v,i]],[/droid.+aft(\w+)( bui|\))/i],[S,[k,ai],[v,i]],[/(shield \w+ tv)/i],[S,[k,ui],[v,i]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[S,[k,"Sharp"],[v,i]],[/(bravia[\w ]+)( bui|\))/i],[S,[k,fi],[v,i]],[/(mi(tv|box)-?\w+) bui/i],[S,[k,gi],[v,i]],[/Hbbtv.*(technisat) (.*);/i],[k,S,[v,i]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[k,/.+\/(\w+)/,"$1",E,{LG:"lge"}],[S,Mi],[v,i]],[/droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i],[S,[v,i]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:|large screen[\w ]+safari)\b/i],[[v,i]],[/(playstation \w+)/i],[S,[k,fi],[v,G]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[S,[k,li],[v,G]],[/(ouya)/i,/(nintendo) (\w+)/i,/(retroid) (pocket ([^\)]+))/i],[k,S,[v,G]],[/droid.+; (shield)( bui|\))/i],[S,[k,ui],[v,G]],[/\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i],[S,[k,mi],[v,e]],[/((pebble))app/i,/(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i],[k,S,[v,e]],[/(ow(?:19|20)?we?[1-3]{1,3})/i],[S,[k,pi],[v,e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[S,[k,o],[v,e]],[/(opwwe\d{3})/i],[S,[k,hi],[v,e]],[/(moto 360)/i],[S,[k,ci],[v,e]],[/(smartwatch 3)/i],[S,[k,fi],[v,e]],[/(g watch r)/i],[S,[k,"LG"],[v,e]],[/droid.+; (wt63?0{2,3})\)/i],[S,[k,vi],[v,e]],[/droid.+; (glass) \d/i],[S,[k,a],[v,W]],[/(pico) (4|neo3(?: link|pro)?)/i],[k,S,[v,W]],[/(quest( \d| pro)?s?).+vr/i],[S,[k,Ci],[v,W]],[/mobile vr; rv.+firefox/i],[[v,W]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[k,[v,N]],[/(aeobc)\b/i],[S,[k,ai],[v,N]],[/(homepod).+mac os/i],[S,[k,o],[v,N]],[/windows iot/i],[[v,N]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+?(mobile|vr|\d) safari/i],[S,[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,_]],[/droid .+?; ([\w\. -]+)( bui|\))/i],[S,[k,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[x,[g,xi+"HTML"]],[/(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:[[/(windows nt) (6\.[23]); arm/i],[[g,/N/,"R"],[x,E,ji]],[/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i,/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|server 20\d\d( r2)?|vista|xp)/i],[g,x],[/windows nt ?([\d\.\)]*)(?!.+xbox)/i,/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i],[[x,/(;|\))/g,"",E,ji],[g,_i]],[/(windows ce)\/?([\d\.]*)/i],[g,x],[/[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|morphos))/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)/i],[x,g],[/(ubuntu) ([\w\.]+) like android/i],[[g,/(.+)/,"$1 Touch"],x],[/(harmonyos)[\/ ]?([\d\.]*)/i,/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\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,yi+" OS"]],[/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i,/webos(?:[ \/]?|\.tv-20(?=2[2-9]))(\d[\d\.]*)/i],[x,[g,"webOS"]],[/web0s;.+?(?:chr[o0]me|safari)\/(\d+)/i],[[x,E,{25:"120",24:"108",23:"94",22:"87",6:"79",5:"68",4:"53",3:"38",2:"538",1:"537","*":"TV"}],[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,/linux.+(mint)[\/\(\) ]?([\w\.]*)/i,/(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/\b(aix)[; ]([1-9\.]{0,4})/i,/(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) ?(r\d)?/i],[g,x],[/(sunos) ?([\d\.]*)/i],[[g,"Solaris"],x],[/\b(beos|os\/2|amigaos|openvms|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[g,x]]},Bi=(b={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},A.call(b.init,[[c,[g,x,C,v]],[u,[y]],[h,[v,S,k]],[p,[g,x]],[m,[g,x]]]),A.call(b.isIgnore,[[c,[x,C]],[p,[x]],[m,[x]]]),A.call(b.isIgnoreRgx,[[c,/ ?browser$/i],[m,/ ?os$/i]]),A.call(b.toString,[[c,[g,x]],[u,[y]],[h,[k,S]],[p,[g,x]],[m,[g,x]]]),b),Pi=function(e,i){var o=Bi.init[i],t=Bi.isIgnore[i]||0,r=Bi.isIgnoreRgx[i]||0,a=Bi.toString[i]||0;function s(){A.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 Ui(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)&&!qi(t,e)&&M(r?j(r,this[e]):this[e])==M(r?j(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 Ui(i,e){if(i=i||{},A.call(this,ri),e)A.call(this,[[D,Ti(i[t])],[$,Ti(i[K])],[_,/\?1/.test(i[ii])],[S,Hi(i[ei])],[z,Hi(i[oi])],[X,Hi(i[ti])],[y,Hi(i[Q])],[q,Ti(i[J])],[Y,Hi(i[Z])]]);else for(var o in i)this.hasOwnProperty(o)&&typeof i[o]!==n&&(this[o]=i[o])}function Li(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(T&&T.userAgent==this.ua)switch(this.itemType){case c:T.brave&&typeof T.brave.isBrave==L&&this.set(g,"Brave");break;case h:!this.get(v)&&O&&O[_]&&this.set(v,_),"Macintosh"==this.get(S)&&T&&typeof T.standalone!==n&&T.maxTouchPoints&&2<T.maxTouchPoints&&this.set(S,"iPad").set(v,r);break;case m:!this.get(g)&&O&&O[z]&&this.set(g,O[z]);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&&Ai.call(this.data,this.ua,this.rgxMap),this.itemType==c&&this.set(C,Oi(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[$]||e[D];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/.test(t)&&s!=ki||t==xi&&/WebView2/.test(s))&&(s=E(s,Vi),(t=this.get(g))&&!/Chrom/.test(t)&&/Chrom/.test(s)||this.set(g,s).set(x,a).set(C,Oi(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"),Ai.call(this.data,n+";",o));break;case h:if(e[_]&&this.set(v,_),e[S]&&(this.set(S,e[S]),this.get(v)&&this.get(k)||(Ai.call(n={},"droid 9; "+e[S]+")",o),!this.get(v)&&n.type&&this.set(v,n.type),!this.get(k)&&n.vendor&&this.set(k,n.vendor))),e[q]){if("string"!=typeof e[q])for(var w=0;!i&&w<e[q].length;)i=E(e[q][w++],Ei);else i=E(e[q],Ei);this.set(v,i)}break;case m:var b,n=e[z];n&&(b=e[X],n==_i&&(b=13<=parseInt(Oi(b),10)?"11":"10"),this.set(g,n).set(x,b)),this.get(g)==_i&&"Xbox"==e[S]&&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},A.call(this,[["itemType",i],["ua",e],["uaCH",t],["rgxMap",o],["data",Pi(this,i)]]),this}function V(i,e,o){var t,r,a,s,n;return typeof i===l?(e=zi(i,!0)?(typeof e===l&&(o=e),i):void(o=i),i=void 0):typeof i!==R||zi(e,!0)||(o=e,e=void 0),o&&typeof o.append===L&&(t={},o.forEach(function(i,e){t[e]=i}),o=t),this instanceof V?(r=typeof i===R?i:o&&o[P]?o[P]:T&&T.userAgent?T.userAgent:w,a=new Ui(o,!0),s=e?((i,e)=>{var o,t={},r=e;if(!zi(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,A.call(this,[["getBrowser",(n=function(i){return i==f?function(){return new Li(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 Li(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 H(i)&&(r=i.length>B?Mi(i,B):i),this}]]).setUA(r),this):new V(i,e,o).getResult()}V.VERSION="2.0.4",V.BROWSER=I([g,x,C,v]),V.CPU=I([y]),V.DEVICE=I([S,k,v,G,_,i,r,e,N]),V.ENGINE=V.OS=I([g,x]);export{V 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.3",
4
+ "version": "2.0.4",
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": [
@@ -1,4 +1,4 @@
1
- // Type definitions for Enums submodule of UAParser.js v2.0.3
1
+ // Type definitions for Enums submodule of UAParser.js v2.0.4
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4
 
@@ -16,7 +16,6 @@ export const Browser: Readonly<{
16
16
  BAIDU: "Baidu Browser";
17
17
  BASILISK: "Basilisk";
18
18
  BLAZER: "Blazer";
19
- BLU: "BLU";
20
19
  BOLT: "Bolt";
21
20
  BOWSER: "Bowser";
22
21
  BRAVE: "Brave";
@@ -39,6 +38,8 @@ export const Browser: Readonly<{
39
38
  DUCKDUCKGO: "DuckDuckGo";
40
39
  ECOSIA: "Ecosia";
41
40
  EDGE: "Edge";
41
+ EDGE_WEBVIEW: "Edge WebView";
42
+ EDGE_WEBVIEW2: "Edge WebView2";
42
43
  EPIPHANY: "Epiphany";
43
44
  FACEBOOK: "Facebook";
44
45
  FALKON: "Falkon";
@@ -203,6 +204,7 @@ export const Vendor: Readonly<{
203
204
  ATT: "AT&T";
204
205
  BENQ: "BenQ";
205
206
  BLACKBERRY: "BlackBerry";
207
+ BLU: "BLU";
206
208
  CAT: "Cat";
207
209
  DELL: "Dell";
208
210
  ENERGIZER: "Energizer";
@@ -221,6 +223,7 @@ export const Vendor: Readonly<{
221
223
  ITEL: "itel";
222
224
  JOLLA: "Jolla";
223
225
  KOBO: "Kobo";
226
+ LAVA: "Lava";
224
227
  LENOVO: "Lenovo";
225
228
  LG: "LG";
226
229
  MEIZU: "Meizu";
@@ -241,6 +244,7 @@ export const Vendor: Readonly<{
241
244
  PICO: "Pico";
242
245
  POLYTRON: "Polytron";
243
246
  REALME: "Realme";
247
+ RETROID: "Retroid";
244
248
  RIM: "RIM";
245
249
  ROKU: "Roku";
246
250
  SAMSUNG: "Samsung";
@@ -255,6 +259,7 @@ export const Vendor: Readonly<{
255
259
  TESLA: "Tesla";
256
260
  ULEFONE: "Ulefone";
257
261
  VIVO: "Vivo";
262
+ VIZIO: "Vizio";
258
263
  VODAFONE: "Vodafone";
259
264
  XBOX: "Xbox";
260
265
  XIAOMI: "Xiaomi";
@@ -288,6 +293,7 @@ export const OS: Readonly<{
288
293
  AMIGA_OS: "Amiga OS";
289
294
  ANDROID: "Android";
290
295
  ANDROID_X86: "Android-x86";
296
+ ARCAOS: "ArcaOS";
291
297
  ARCH: "Arch";
292
298
  BADA: "Bada";
293
299
  BEOS: "BeOS";
@@ -318,6 +324,7 @@ export const OS: Readonly<{
318
324
  IOS: "iOS";
319
325
  JOLI: "Joli";
320
326
  KAIOS: "KaiOS";
327
+ KNOPPIX: "Knoppix";
321
328
  KUBUNTU: "Kubuntu";
322
329
  LINPUS: "Linpus";
323
330
  LINSPIRE: "Linspire";
@@ -366,9 +373,12 @@ export const OS: Readonly<{
366
373
  WATCHOS: "watchOS";
367
374
  WEBOS: "WebOS";
368
375
  WINDOWS: "Windows";
376
+ WINDOWS_CE: "Windows CE";
369
377
  WINDOWS_IOT: "Windows IoT";
370
378
  WINDOWS_MOBILE: "Windows Mobile";
371
379
  WINDOWS_PHONE: "Windows Phone";
380
+ WINDOWS_RT: "Windows RT";
372
381
  XBOX: "Xbox";
382
+ XUBUNTU: "Xubuntu";
373
383
  ZENWALK: "Zenwalk";
374
384
  }>;
@@ -1,5 +1,5 @@
1
1
  ///////////////////////////////////////////////
2
- /* Enums for UAParser.js v2.0.3
2
+ /* Enums for UAParser.js v2.0.4
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -21,7 +21,6 @@ const Browser = Object.freeze({
21
21
  BAIDU: 'Baidu Browser',
22
22
  BASILISK: 'Basilisk',
23
23
  BLAZER: 'Blazer',
24
- BLU: 'BLU',
25
24
  BOLT: 'Bolt',
26
25
  BOWSER: 'Bowser',
27
26
  BRAVE: 'Brave',
@@ -44,6 +43,8 @@ const Browser = Object.freeze({
44
43
  DUCKDUCKGO: 'DuckDuckGo',
45
44
  ECOSIA: 'Ecosia',
46
45
  EDGE: 'Edge',
46
+ EDGE_WEBVIEW: 'Edge WebView',
47
+ EDGE_WEBVIEW2: 'Edge WebView2',
47
48
  EPIPHANY: 'Epiphany',
48
49
  FACEBOOK: 'Facebook',
49
50
  FALKON: 'Falkon',
@@ -214,6 +215,7 @@ const Vendor = Object.freeze({
214
215
  ATT: 'AT&T',
215
216
  BENQ: 'BenQ',
216
217
  BLACKBERRY: 'BlackBerry',
218
+ BLU: 'BLU',
217
219
  CAT: 'Cat',
218
220
  DELL: 'Dell',
219
221
  ENERGIZER: 'Energizer',
@@ -232,6 +234,7 @@ const Vendor = Object.freeze({
232
234
  ITEL: 'itel',
233
235
  JOLLA: 'Jolla',
234
236
  KOBO: 'Kobo',
237
+ LAVA: 'Lava',
235
238
  LENOVO: 'Lenovo',
236
239
  LG: 'LG',
237
240
  MEIZU: 'Meizu',
@@ -252,6 +255,7 @@ const Vendor = Object.freeze({
252
255
  PICO: 'Pico',
253
256
  POLYTRON: 'Polytron',
254
257
  REALME: 'Realme',
258
+ RETROID: 'Retroid',
255
259
  RIM: 'RIM',
256
260
  ROKU: 'Roku',
257
261
  SAMSUNG: 'Samsung',
@@ -266,6 +270,7 @@ const Vendor = Object.freeze({
266
270
  TESLA: 'Tesla',
267
271
  ULEFONE: 'Ulefone',
268
272
  VIVO: 'Vivo',
273
+ VIZIO: 'Vizio',
269
274
  VODAFONE: 'Vodafone',
270
275
  XBOX: 'Xbox',
271
276
  XIAOMI: 'Xiaomi',
@@ -303,6 +308,7 @@ const OS = Object.freeze({
303
308
  AMIGA_OS: 'Amiga OS',
304
309
  ANDROID: 'Android',
305
310
  ANDROID_X86: 'Android-x86',
311
+ ARCAOS: 'ArcaOS',
306
312
  ARCH: 'Arch',
307
313
  BADA: 'Bada',
308
314
  BEOS: 'BeOS',
@@ -333,6 +339,7 @@ const OS = Object.freeze({
333
339
  IOS: 'iOS',
334
340
  JOLI: 'Joli',
335
341
  KAIOS: 'KaiOS',
342
+ KNOPPIX: 'Knoppix',
336
343
  KUBUNTU: 'Kubuntu',
337
344
  LINPUS: 'Linpus',
338
345
  LINSPIRE: 'Linspire',
@@ -381,10 +388,13 @@ const OS = Object.freeze({
381
388
  WATCHOS: 'watchOS',
382
389
  WEBOS: 'WebOS',
383
390
  WINDOWS: 'Windows',
391
+ WINDOWS_CE: 'Windows CE',
384
392
  WINDOWS_IOT: 'Windows IoT',
385
393
  WINDOWS_MOBILE: 'Windows Mobile',
386
394
  WINDOWS_PHONE: 'Windows Phone',
395
+ WINDOWS_RT: 'Windows RT',
387
396
  XBOX: 'Xbox',
397
+ XUBUNTU: 'Xubuntu',
388
398
  ZENWALK: 'Zenwalk'
389
399
 
390
400
  // TODO : test!
@@ -3,7 +3,7 @@
3
3
  // Source: /src/enums/ua-parser-enums.js
4
4
 
5
5
  ///////////////////////////////////////////////
6
- /* Enums for UAParser.js v2.0.3
6
+ /* Enums for UAParser.js v2.0.4
7
7
  https://github.com/faisalman/ua-parser-js
8
8
  Author: Faisal Salman <f@faisalman.com>
9
9
  AGPLv3 License */
@@ -25,7 +25,6 @@ const Browser = Object.freeze({
25
25
  BAIDU: 'Baidu Browser',
26
26
  BASILISK: 'Basilisk',
27
27
  BLAZER: 'Blazer',
28
- BLU: 'BLU',
29
28
  BOLT: 'Bolt',
30
29
  BOWSER: 'Bowser',
31
30
  BRAVE: 'Brave',
@@ -48,6 +47,8 @@ const Browser = Object.freeze({
48
47
  DUCKDUCKGO: 'DuckDuckGo',
49
48
  ECOSIA: 'Ecosia',
50
49
  EDGE: 'Edge',
50
+ EDGE_WEBVIEW: 'Edge WebView',
51
+ EDGE_WEBVIEW2: 'Edge WebView2',
51
52
  EPIPHANY: 'Epiphany',
52
53
  FACEBOOK: 'Facebook',
53
54
  FALKON: 'Falkon',
@@ -218,6 +219,7 @@ const Vendor = Object.freeze({
218
219
  ATT: 'AT&T',
219
220
  BENQ: 'BenQ',
220
221
  BLACKBERRY: 'BlackBerry',
222
+ BLU: 'BLU',
221
223
  CAT: 'Cat',
222
224
  DELL: 'Dell',
223
225
  ENERGIZER: 'Energizer',
@@ -236,6 +238,7 @@ const Vendor = Object.freeze({
236
238
  ITEL: 'itel',
237
239
  JOLLA: 'Jolla',
238
240
  KOBO: 'Kobo',
241
+ LAVA: 'Lava',
239
242
  LENOVO: 'Lenovo',
240
243
  LG: 'LG',
241
244
  MEIZU: 'Meizu',
@@ -256,6 +259,7 @@ const Vendor = Object.freeze({
256
259
  PICO: 'Pico',
257
260
  POLYTRON: 'Polytron',
258
261
  REALME: 'Realme',
262
+ RETROID: 'Retroid',
259
263
  RIM: 'RIM',
260
264
  ROKU: 'Roku',
261
265
  SAMSUNG: 'Samsung',
@@ -270,6 +274,7 @@ const Vendor = Object.freeze({
270
274
  TESLA: 'Tesla',
271
275
  ULEFONE: 'Ulefone',
272
276
  VIVO: 'Vivo',
277
+ VIZIO: 'Vizio',
273
278
  VODAFONE: 'Vodafone',
274
279
  XBOX: 'Xbox',
275
280
  XIAOMI: 'Xiaomi',
@@ -307,6 +312,7 @@ const OS = Object.freeze({
307
312
  AMIGA_OS: 'Amiga OS',
308
313
  ANDROID: 'Android',
309
314
  ANDROID_X86: 'Android-x86',
315
+ ARCAOS: 'ArcaOS',
310
316
  ARCH: 'Arch',
311
317
  BADA: 'Bada',
312
318
  BEOS: 'BeOS',
@@ -337,6 +343,7 @@ const OS = Object.freeze({
337
343
  IOS: 'iOS',
338
344
  JOLI: 'Joli',
339
345
  KAIOS: 'KaiOS',
346
+ KNOPPIX: 'Knoppix',
340
347
  KUBUNTU: 'Kubuntu',
341
348
  LINPUS: 'Linpus',
342
349
  LINSPIRE: 'Linspire',
@@ -385,10 +392,13 @@ const OS = Object.freeze({
385
392
  WATCHOS: 'watchOS',
386
393
  WEBOS: 'WebOS',
387
394
  WINDOWS: 'Windows',
395
+ WINDOWS_CE: 'Windows CE',
388
396
  WINDOWS_IOT: 'Windows IoT',
389
397
  WINDOWS_MOBILE: 'Windows Mobile',
390
398
  WINDOWS_PHONE: 'Windows Phone',
399
+ WINDOWS_RT: 'Windows RT',
391
400
  XBOX: 'Xbox',
401
+ XUBUNTU: 'Xubuntu',
392
402
  ZENWALK: 'Zenwalk'
393
403
 
394
404
  // TODO : test!
@@ -1,4 +1,4 @@
1
- // Type definitions for Helpers submodule of UAParser.js v2.0.3
1
+ // Type definitions for Helpers submodule of UAParser.js v2.0.4
2
2
  // Project: https://github.com/faisalman/ua-parser-js
3
3
  // Definitions by: Faisal Salman <https://github.com/faisalman>
4
4
 
@@ -1,5 +1,5 @@
1
1
  ///////////////////////////////////////////////
2
- /* Extensions for UAParser.js v2.0.3
2
+ /* Extensions for UAParser.js v2.0.4
3
3
  https://github.com/faisalman/ua-parser-js
4
4
  Author: Faisal Salman <f@faisalman.com>
5
5
  AGPLv3 License */
@@ -48,13 +48,15 @@ const Crawlers = Object.freeze({
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
+ // iAskBot - https://iask.ai
51
52
  // LinkedInBot - http://www.linkedin.com
52
53
  // MJ12bot - https://mj12bot.com/
53
54
  // MojeekBot - https://www.mojeek.com/bot.html
55
+ // Onespot - https://www.onespot.com/identifying-traffic.html
54
56
  // OpenAI's SearchGPT - https://platform.openai.com/docs/bots
55
57
  // PerplexityBot - https://perplexity.ai/perplexitybot
56
58
  // SeznamBot - http://napoveda.seznam.cz/seznambot-intro
57
- /((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|linkedin|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
59
+ /((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|iask|linkedin|mj12|mojeek|oai-search|onespot-scraper|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
58
60
 
59
61
  // Applebot - http://apple.com/go/applebot
60
62
  /(applebot(?:-extended)?)\/?([\w\.]*)/i,
@@ -68,6 +70,9 @@ const Crawlers = Object.freeze({
68
70
  // Coc Coc Bot - https://help.coccoc.com/en/search-engine
69
71
  /(coccocbot-(?:image|web))\/([\w\.]+)/i,
70
72
 
73
+ // Daum
74
+ /(daum(?:oa)?(?:-image)?)[ \/]([\w\.]+)/i,
75
+
71
76
  // Facebook / Meta
72
77
  // https://developers.facebook.com/docs/sharing/webmasters/web-crawlers
73
78
  /(facebook(?:externalhit|catalog)|meta-externalagent)\/([\w\.]+)/i,
@@ -78,6 +83,9 @@ const Crawlers = Object.freeze({
78
83
  // Internet Archive (archive.org)
79
84
  /(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
80
85
 
86
+ // Qwantbot - https://help.qwant.com/bot
87
+ /(qwantbot)[-\w]*\/?([\w\.]*)/i,
88
+
81
89
  // SemrushBot - http://www.semrush.com/bot.html
82
90
  /((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
83
91
 
@@ -93,8 +101,8 @@ const Crawlers = Object.freeze({
93
101
  // Yeti (Naver)
94
102
  /(yeti)\/([\w\.]+)/i,
95
103
 
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
104
+ // aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Startpage / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
105
+ /((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|startpageprivateimageproxy|webzio-extended|(?:chatglm-|line|screaming frog seo |yisou)spider)\/?([\w\.]*)/i
98
106
  ],
99
107
 
100
108
  [NAME, VERSION, [TYPE, CRAWLER]],
@@ -204,9 +212,18 @@ const ExtraDevices = Object.freeze({
204
212
  const Emails = Object.freeze({
205
213
  browser : [
206
214
  [
207
- // Evolution / Kontact/KMail / [Microsoft/Mac] Outlook / Thunderbird
208
- /(airmail|bluemail|emclient|evolution|foxmail|kmail2?|kontact|(?:microsoft |mac)?outlook(?:-express)?|navermailapp|(?!chrom.+)sparrow|thunderbird|yahoo)(?:m.+ail; |[\/ ])([\w\.]+)/i
209
- ], [NAME, VERSION, [TYPE, EMAIL]]
215
+ // Evolution / Kontact/KMail[2] / [Microsoft/Mac] Outlook / Thunderbird
216
+ // Airmail / BlueMail / DaumMail / eMClient / Foxmail / NaverMailApp / Polymail
217
+ // ProtonMail / SparkDesktop / Sparrow / Yahoo! Mail / Zimbra / ZohoMail-Desktop
218
+ /((?:air|blue|daum|fox|poly|proton)mail|emclient|evolution|kmail2?|kontact|(?:microsoft |mac)?outlook(?:-express)?|navermailapp|(?!chrom.+)sparrow|sparkdesktop|thunderbird|yahoo|zohomail-desktop)(?:m.+ail; |[\/ ])([\w\.]+)/i,
219
+
220
+ // Apple's Mail
221
+ /(mail)\/([\w\.]+) cf/i
222
+ ], [NAME, VERSION, [TYPE, EMAIL]], [
223
+
224
+ // Zimbra
225
+ /zdesktop\/([\w\.]+)/i
226
+ ], [VERSION, [NAME, 'Zimbra'], [TYPE, EMAIL]]
210
227
  ]
211
228
  });
212
229
 
@@ -222,8 +239,11 @@ const Fetchers = Object.freeze({
222
239
  // DuckAssistBot - https://duckduckgo.com/duckassistbot/
223
240
  // Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
224
241
  // Google Site Verifier / Meta / Yahoo! Japan
242
+ // Iframely - https://iframely.com/docs/about
243
+ // Perplexity-User - https://docs.perplexity.ai/guides/bots
244
+ // MistralAI-User - https://docs.mistral.ai/robots/
225
245
  // Yandex Bots - https://yandex.com/bots
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,
246
+ /(ahrefssiteaudit|(?:bing|microsoft)preview|(?:chatgpt|mistralai|perplexity)-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|iframely|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
227
247
 
228
248
  // Bluesky
229
249
  /(bluesky) cardyb\/([\w\.]+)/i,
@@ -257,13 +277,31 @@ const Fetchers = Object.freeze({
257
277
  ///////////////////
258
278
 
259
279
  const InApps = Object.freeze({
260
- browser : [
280
+ browser : [[
281
+ // Discord/Figma/Flipboard/Mattermost/Notion/Postman/Rambox/Rocket.Chat/Slack/Teams
282
+ /\b(discord|figma|mattermost|notion|postman|rambox|rocket.chat|slack|teams)\/([\w\.]+).+(electron\/|; ios)/i,
283
+ /(flipboard)\/([\w\.]+)/i
284
+ ], [NAME, VERSION, [TYPE, INAPP]], [
285
+
286
+ // Evernote/Teams on mobile
287
+ /(evernote) win/i,
288
+ /(teams)mobile-(ios|and)/i
289
+ ], [NAME, [TYPE, INAPP]], [
290
+
261
291
  // Slack
262
- [/(?:slack(?=.+electron|.+ios)|chatlyio)\/([\d\.]+)/i],
263
- [VERSION, [NAME, 'Slack'], [TYPE, INAPP]],
292
+ /chatlyio\/([\d\.]+)/i],
293
+ [VERSION, [NAME, 'Slack'], [TYPE, INAPP]], [
294
+
295
+ // TikTok Lite
296
+ /ultralite app_version\/([\w\.]+)/i],
297
+ [VERSION, [NAME, 'TikTok Lite'], [TYPE, INAPP]], [
298
+
299
+ // VS Code
300
+ /\) code\/([\d\.]+).+electron\//i],
301
+ [VERSION, [NAME, 'VS Code'], [TYPE, INAPP]], [
264
302
 
265
303
  // Yahoo! Japan
266
- [/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
304
+ /jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
267
305
  [VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
268
306
  ]
269
307
  });
@@ -328,8 +366,10 @@ const Libraries = Object.freeze({
328
366
  browser : [
329
367
  // Apache-HttpClient/Axios/go-http-client/got/GuzzleHttp/Java[-HttpClient]/jsdom/libwww-perl/lua-resty-http/Needle/node-fetch/OkHttp/PHP-SOAP/PostmanRuntime/python-urllib/python-requests/Scrapy/superagent
330
368
  [
331
- /^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:urllib|requests)|scrapy)\/([\w\.]+)/i,
332
- /(jsdom|(?<=\()java)\/([\w\.]+)/i
369
+ /^(apache-httpclient|axios|(?:go|java)-http-client|got|guzzlehttp|java|libwww-perl|lua-resty-http|needle|node-(?:fetch|superagent)|okhttp|php-soap|postmanruntime|python-(?:httpx|urllib[23]?|requests)|scrapy)\/([\w\.]+)/i,
370
+ /(adobeair|aiohttp|jsdom)\/([\w\.]+)/i,
371
+ /(nutch)-([\w\.-]+)(\(|$)/i,
372
+ /\((java)\/([\w\.]+)/i
333
373
  ], [NAME, VERSION, [TYPE, LIBRARY]]
334
374
  ]
335
375
  });