ua-parser-js/src/ua-parser.min.js
2014-10-06 17:30:52 +02:00

7 lines
11 KiB
JavaScript

// UAParser.js v0.7.0
// Lightweight JavaScript-based User-Agent string parser
// https://github.com/faisalman/ua-parser-js
//
// Copyright © 2012-2013 Faisalman <fyzlman@gmail.com>
// Dual licensed under GPLv2 & MIT
(function(e,t){"use strict";function S(e,t){if(!e||!e[t]||e[t].length%2!==0)return;E[t]=E[t].concat(e[t])}var n="",r="?",i="function",s="undefined",o="object",u="major",a="model",f="name",l="type",c="vendor",h="version",p="architecture",d="console",v="mobile",m="tablet",g="smarttv",y={has:function(e,t){if(typeof e=="string")return t.toLowerCase().indexOf(e.toLowerCase())!==-1},lowerize:function(e){return e.toLowerCase()}},b={rgx:function(){for(var e,n=0,r,u,a,f,l,c,h=arguments;n<h.length;n+=2){var p=h[n],d=h[n+1];if(typeof e===s){e={};for(a in d)f=d[a],typeof f===o?e[f[0]]=t:e[f]=t}for(r=u=0;r<p.length;r++){l=p[r].exec(this.getUA());if(!!l){for(a=0;a<d.length;a++)c=l[++u],f=d[a],typeof f===o&&f.length>0?f.length==2?typeof f[1]==i?e[f[0]]=f[1].call(this,c):e[f[0]]=f[1]:f.length==3?typeof f[1]===i&&(!f[1].exec||!f[1].test)?e[f[0]]=c?f[1].call(this,c,f[2]):t:e[f[0]]=c?c.replace(f[1],f[2]):t:f.length==4&&(e[f[0]]=c?f[3].call(this,c.replace(f[1],f[2])):t):e[f]=c?c:t;break}}if(!!l)break}return e},str:function(e,n){for(var i in n)if(typeof n[i]===o&&n[i].length>0){for(var s=0;s<n[i].length;s++)if(y.has(n[i][s],e))return i===r?t:i}else if(y.has(n[i],e))return i===r?t:i;return e}},w={browser:{oldsafari:{major:{1:["/8","/1","/3"],2:"/4","?":"/"},version:{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}}},device:{amazon:{model:{"Fire Phone":["SD","KF"]}},sprint:{model:{"Evo Shift 4G":"7373KT"},vendor:{HTC:"APA",Sprint:"Sprint"}}},os:{windows:{version:{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",RT:"ARM"}}}},E={browser:[[/APP-([\w\s-\d]+)\/((\d+)?[\w\.]+)/i],[f,h,u],[/(opera\smini)\/((\d+)?[\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i,/(opera).+version\/((\d+)?[\w\.]+)/i,/(opera)[\/\s]+((\d+)?[\w\.]+)/i],[f,h,u],[/\s(opr)\/((\d+)?[\w\.]+)/i],[[f,"Opera"],h,u],[/(kindle)\/((\d+)?[\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i,/(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i,/(rekonq)((?:\/)[\w\.]+)*/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i],[f,h,u],[/(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i],[[f,"IE"],h,u],[/(yabrowser)\/((\d+)?[\w\.]+)/i],[[f,"Yandex"],h,u],[/(comodo_dragon)\/((\d+)?[\w\.]+)/i],[[f,/_/g," "],h,u],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i],[f,h,u],[/(dolfin)\/((\d+)?[\w\.]+)/i],[[f,"Dolphin"],h,u],[/((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i],[[f,"Chrome"],h,u],[/version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i],[h,u,[f,"Mobile Safari"]],[/version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i],[h,u,f],[/webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i],[f,[u,b.str,w.browser.oldsafari.major],[h,b.str,w.browser.oldsafari.version]],[/(konqueror)\/((\d+)?[\w\.]+)/i,/(webkit|khtml)\/((\d+)?[\w\.]+)/i],[f,h,u],[/(navigator|netscape)\/((\d+)?[\w\.-]+)/i],[[f,"Netscape"],h,u],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i,/(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i,/(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i,/(links)\s\(((\d+)?[\w\.]+)/i,/(gobrowser)\/?((\d+)?[\w\.]+)*/i,/(ice\s?browser)\/v?((\d+)?[\w\._]+)/i,/(mosaic)[\/\s]((\d+)?[\w\.]+)/i],[f,h,u],[/(apple(?:coremedia|))\/((\d+)[\w\._]+)/i,/(coremedia) v((\d+)[\w\._]+)/i],[f,h,u],[/(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i],[f,h],[/(ares|ossproxy)\s((\d+)[\w\.-]+)/i],[f,h,u],[/(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i,/(clementine|music player daemon)\s((\d+)[\w\.-]+)/i,/(lg player|nexplayer)\s((\d+)[\d\.]+)/i,/player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i],[f,h,u],[/(nexplayer)\s((\d+)[\w\.-]+)/i],[f,h,u],[/(flrp)\/((\d+)[\w\.-]+)/i],[[f,"Flip Player"],h,u],[/(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i],[f],[/(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i],[f,h,u],[/(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i,/(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i,/(lavf)((\d+)[\d\.]+)/i],[f,h,u],[/(htc_one_s)\/((\d+)[\d\.]+)/i],[[f,/_/g," "],h,u],[/(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i],[f,h],[/(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i],[f,h,u],[/(mplayer)/i,/(yourmuze)/i,/(media player classic|nero showtime)/i],[f],[/(nero (?:home|scout))\/((\d+)[\w\.-]+)/i],[f,h,u],[/(nokia\d+)\/((\d+)[\w\.-]+)/i],[f,h,u],[/\s(songbird)\/((\d+)[\w\.-]+)/i],[f,h,u],[/(winamp)3 version ((\d+)[\w\.-]+)/i,/(winamp)\s((\d+)[\w\.-]+)/i,/(winamp)mpeg\/((\d+)[\w\.-]+)/i],[f,h,u],[/(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i],[f],[/(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i],[f,h,u],[/(smp)((\d+)[\d\.]+)/i],[f,h,u],[/(vlc) media player - version ((\d+)[\w\.]+)/i,/(vlc)\/((\d+)[\w\.-]+)/i,/(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i,/(foobar2000)\/((\d+)[\d\.]+)/i,/(itunes)\/((\d+)[\d\.]+)/i],[f,h,u],[/(wmplayer)\/((\d+)[\w\.-]+)/i,/(windows-media-player)\/((\d+)[\w\.-]+)/i],[[f,/-/g," "],h,u],[/windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i],[h,u,[f,"Windows"]],[/(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i],[f,h,u],[/(rad.io)\s((\d+)[\d\.]+)/i,/(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i],[[f,"rad.io"],h,u]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],[[p,"amd64"]],[/(ia32(?=;))/i],[[p,y.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[[p,"ia32"]],[/windows\s(ce|mobile);\sppc;/i],[[p,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[[p,/ower/,"",y.lowerize]],[/(sun4\w)[;\)]/i],[[p,"sparc"]],[/(ia64(?=;)|68k(?=\))|arm(?=v\d+;)|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[[p,y.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],[a,c,[l,m]],[/applecoremedia\/[\w\.]+ \((ipad)/],[a,[c,"Apple"],[l,m]],[/(apple\s{0,1}tv)/i],[[a,"Apple TV"],[c,"Apple"]],[/(hp).+(touchpad)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],[c,a,[l,m]],[/(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i],[a,[c,"Amazon"],[l,m]],[/(sd|kf)[0349hijorstuw]+\sbuild\/[\w\.]+.*silk\//i],[[a,b.str,w.device.amazon.model],[c,"Amazon"],[l,v]],[/\((ip[honed|\s\w*]+);.+(apple)/i],[a,c,[l,v]],[/\((ip[honed|\s\w*]+);/i],[a,[c,"Apple"],[l,v]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola|polytron)[\s_-]?([\w-]+)*/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],[c,a,[l,v]],[/\((bb10);\s(\w+)/i],[[c,"BlackBerry"],a,[l,v]],[/android.+((transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7))/i],[[c,"Asus"],a,[l,m]],[/(sony)\s(tablet\s[ps])/i],[c,a,[l,m]],[/(nintendo)\s([wids3u]+)/i],[c,a,[l,d]],[/((playstation)\s[3portablevi]+)/i],[[c,"Sony"],a,[l,d]],[/(sprint\s(\w+))/i],[[c,b.str,w.device.sprint.vendor],[a,b.str,w.device.sprint.model],[l,v]],[/(Lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],[[c,"Lenovo"],a,[l,m]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w+)*/i,/(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i],[c,[a,/_/g," "],[l,v]],[/\s((milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?))[\w\s]+build\//i,/(mot)[\s-]?(\w+)*/i],[[c,"Motorola"],a,[l,v]],[/android.+\s((mz60\d|xoom[\s2]{0,2}))\sbuild\//i],[[c,"Motorola"],a,[l,m]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i],[[c,"Samsung"],a,[l,m]],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i,/sec-((sgh\w+))/i],[[c,"Samsung"],a,[l,v]],[/(sie)-(\w+)*/i],[[c,"Siemens"],a,[l,v]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]+)*/i],[[c,"Nokia"],a,[l,v]],[/android\s3\.[\s\w-;]{10}((a\d{3}))/i],[[c,"Acer"],a,[l,m]],[/android\s3\.[\s\w-;]{10}(lg?)-([06cv9]{3,4})/i],[[c,"LG"],a,[l,m]],[/(lg) netcast\.tv/i],[c,[l,g]],[/((nexus\s[45]))/i,/(lg)[e;\s-\/]+(\w+)*/i],[[c,"LG"],a,[l,v]],[/android.+((ideatab[a-z0-9\-\s]+))/i],[[c,"Lenovo"],a,[l,m]],[/linux;.+((jolla));/i],[c,a,[l,v]],[/(mobile|tablet);.+rv\:.+gecko\//i],[[l,y.lowerize],c,a]],engine:[[/APP-([\w\s-\d]+)\/((\d+)?[\w\.]+)/i],[[f,"Mobile-App"],h],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],[f,h],[/rv\:([\w\.]+).*(gecko)/i],[h,f]],os:[[/microsoft\s(windows)\s(vista|xp)/i],[f,h],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],[f,[h,b.str,w.os.windows.version]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[[f,"Windows"],[h,b.str,w.os.windows.version]],[/\((bb)(10);/i],[[f,"BlackBerry"],h],[/(blackberry)\w*\/?([\w\.]+)*/i,/(tizen)\/([\w\.]+)/i,/(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i,/linux;.+(sailfish);/i],[f,h],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i],[[f,"Symbian"],h],[/\((series40);/i],[f],[/mozilla.+\(mobile;.+gecko.+firefox/i],[[f,"Firefox OS"],h],[/(nintendo|playstation)\s([wids3portablevu]+)/i,/(mint)[\/\s\(]?(\w+)*/i,/(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i,/(hurd|linux)\s?([\w\.]+)*/i,/(gnu)\s?([\w\.]+)*/i],[f,h],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[[f,"Chromium OS"],h],[/(sunos)\s?([\w\.]+\d)*/i],[[f,"Solaris"],h],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i],[f,h],[/(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i],[[f,"iOS"],[h,/_/g,"."]],[/(mac\sos\sx)\s?([\w\s\.]+\w)*/i],[f,[h,/_/g,"."]],[/(haiku)\s(\w+)/i,/(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i,/(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i,/(unix)\s?([\w\.]+)*/i],[f,h]]},x=function(t,r){var i=t||(e&&e.navigator&&e.navigator.userAgent?e.navigator.userAgent:n);if(!(this instanceof x))return(new x(t,r)).getResult();S(r,"browser"),S(r,"cpu"),S(r,"device"),S(r,"engine"),S(r,"os"),this.getBrowser=function(){return b.rgx.apply(this,E.browser)},this.getCPU=function(){return b.rgx.apply(this,E.cpu)},this.getDevice=function(){return b.rgx.apply(this,E.device)},this.getEngine=function(){return b.rgx.apply(this,E.engine)},this.getOS=function(){return b.rgx.apply(this,E.os)},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return i},this.setUA=function(e){return i=e,this},this.setUA(i)};x.NAME=f,x.VERSION=h,x.VENDOR=c,x.TYPE=l,x.ARCHITECTURE=p,x.MAJOR=u;if(typeof exports!==s)typeof module!==s&&module.exports&&(exports=module.exports=x),exports.UAParser=x;else{e.UAParser=x,typeof define===i&&define.amd&&define(function(){return x});if(typeof e.jQuery!==s){var T=e.jQuery,N=new x;T.ua=N.getResult(),T.ua.get=function(){return N.getUA()},T.ua.set=function(e){N.setUA(e);var t=N.getResult();for(var n in t)T.ua[n]=t[n]}}}})(this);