UNPKG

svelte-system-info

Version:

determines name and version of underlying browser and operating system

3 lines (2 loc) 4.46 kB
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.System,r=e.System=a();r.noConflict=function(){return e.System=n,r}}())}(this,(function(){"use strict";var e,a={Value:window.navigator.userAgent,contains:function(e){return this.Value.indexOf(e)>=0},lacks:function(e){return this.Value.indexOf(e)<0},match:function(e){return this.Value.match(e)},matches:function(e){return null!=this.Value.match(e)}},n="(n/a)";switch((a.contains("Trident")||a.contains("MSIE"))&&(n=a.contains("Mobile")?"IE Mobile":"Internet Explorer"),a.contains("Firefox")&&a.lacks("Seamonkey")&&(n=a.contains("Android")?"Firefox for Android":"Firefox"),a.contains("Safari")&&a.lacks("Chrome")&&a.lacks("Chromium")&&a.lacks("Android")&&(n=a.contains("CriOS")?"Chrome for iOS":a.contains("FxiOS")?"Firefox for iOS":"Safari"),a.contains("Chrome")&&(n=a.matches(/\bChrome\/[.0-9]* Mobile\b/)?a.matches(/\bVersion\/\d+\.\d+\b/)||a.matches(/\bwv\b/)?"WebView on Android":"Chrome for Android":"Chrome"),a.contains("Android")&&a.lacks("Chrome")&&a.lacks("Chromium")&&a.lacks("Trident")&&a.lacks("Firefox")&&(n="Android Browser"),a.contains("Edge")&&(n="Edge"),a.contains("UCBrowser")&&(n="UC Browser for Android"),a.contains("SamsungBrowser")&&(n="Samsung Internet"),(a.contains("OPR")||a.contains("Opera"))&&(n=a.contains("Opera Mini")?"Opera Mini":a.contains("Opera Mobi")||a.contains("Opera Tablet")||a.contains("Mobile")?"Opera Mobile":"Opera"),(a.contains("BB10")||a.contains("PlayBook")||a.contains("BlackBerry"))&&(n="Blackberry"),n){case"Chrome":case"Chrome for Android":case"WebView for Android":e=a.match(/Chrome\/((\d+\.)+\d+)/);break;case"Firefox":case"Firefox for Android":e=a.match(/Firefox\/((\d+\.)+\d+)/);break;case"Firefox for iOS":e=a.match(/FxiOS\/((\d+\.)+\d+)/);break;case"Edge":case"Internet Explorer":case"IE Mobile":e=a.match(/Edge\/((\d+\.)+\d+)/)||a.match(/rv:((\d+\.)+\d+)/)||a.match(/MSIE\ ((\d+\.)+\d+)/);break;case"Safari":case"Android Browser":e=a.match(/Version\/((\d+\.)+\d+)/);case"UC Browser for Android":e=a.match(/UCBrowser\/((\d+\.)+\d+)/);case"Samsung Internet":e=a.match(/SamsungBrowser\/((\d+\.)+\d+)/);case"Opera Mini":e=a.match(/Opera Mini\/((\d+\.)+\d+)/);case"Opera":e=a.match(/OPR\/((\d+\.)+\d+)/)||a.match(/Version\/((\d+\.)+\d+)/)||a.match(/Opera\/((\d+\.)+\d+)/);case"BlackBerry":e=a.match(/Version\/((\d+\.)+\d+)/);default:e=a.match(/\/((\d+\.)+\d+)$/)}var r=e&&e[1]||"(n/a)",i="(n/a)";if(a.contains("Windows")&&(i=a.contains("Windows Phone")?"Windows Phone":"Windows"),a.contains("OS X")&&a.lacks("Android")&&(i="macOS"),a.contains("Linux")&&a.lacks("Android")&&(i="Linux"),a.contains("like Mac OS X")&&a.contains("iPhone")&&(i="iOS"),a.contains("like Mac OS X")&&a.contains("iPad")){var o=a.match(/OS ((\d+[._])+\d+) like Mac OS\ X/);i=parseInt(o[1]||"",10)>=13?"iPadOS":"iOS"}(a.contains("Android")||a.contains("Adr"))&&a.lacks("Windows Phone")&&(i="Android"),a.contains("CrOS")&&(i="ChromeOS"),a.contains("BB10")&&(i="BlackBerry"),a.contains("RIM Tablet OS")&&(i="BlackBerry Tablet OS"),a.contains("BlackBerry")&&(i="BlackBerryOS");var c="(n/a)";switch(i){case"Windows":case"Windows Phone":if(a.contains("Win16"))c="3.1.1";else if(a.contains("Windows CE"))c="CE";else if(a.contains("Windows 95"))c="95";else if(a.contains("Windows 98"))c=a.contains("Windows 98; Win 9x 4.90")?"Millennium Edition":"98";else if((e=a.match(/Win(?:dows)?(?: Phone)?[\ _]?(?:(?:NT|9x) )?((?:(\d+\.)*\d+)|XP|ME|CE)\b/))&&e[1])switch(e[1]){case"10.0":case"6.4":c="10.0";break;case"6.3":c="8.1";break;case"6.2":c="8";break;case"6.1":c="7";break;case"6.0":c="Vista";break;case"5.2":c="Server 2003";break;case"5.1":c="XP";break;case"5.01":c="2000 SP1";break;case"5.0":c="2000";break;case"4.0":c="4.0"}case"macOS":e=a.match(/OS X ((\d+[._])+\d+)\b/);break;case"iOS":case"iPadOS":e=a.match(/OS ((\d+[._])+\d+) like Mac OS\ X/);break;case"Android":e=a.match(/(?:Android|Adr) (\d+([._]\d+)*)/);break;case"ChromeOS":e=a.match(/(?:CrOS) [^ ]+ ((\d+[._])+\d+)/);break;case"BlackBerry":case"BlackBerryOS":e=a.match(/Version\/((\d+\.)+\d+)/);break;case"BlackBerry Tablet OS":e=a.match(/RIM Tablet OS ((\d+\.)+\d+)/)}return e&&e[1]&&(c=e[1].replace(/_/g,".")),{get BrowserName(){return n},get BrowserVersion(){return r},get OSName(){return i},get OSVersion(){return c}}})); //# sourceMappingURL=svelte-system-info.umd.js.map