UNPKG

@egjs/agent

Version:

Extracts browser and operating system information from the user agent string or user agent object(userAgentData).

11 lines (10 loc) 5.18 kB
/* Copyright (c) 2015 NAVER Corp. name: @egjs/agent license: MIT author: NAVER Corp. repository: git+https://github.com/naver/egjs-agent.git version: 2.4.4 */ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):((e="undefined"!=typeof globalThis?globalThis:e||self).eg=e.eg||{},e.eg.agent=n())}(this,function(){"use strict";function c(e,n){for(var i=e.length,r=0;r<i;++r)if(n(e[r],r))return!0;return!1}function l(e,n){for(var i=e.length,r=0;r<i;++r)if(n(e[r],r))return e[r];return null}function b(e){var n=e;if(void 0===n){if("undefined"==typeof navigator||!navigator)return"";n=navigator.userAgent||""}return n.toLowerCase()}function t(e,n){try{return new RegExp(e,"g").exec(n)}catch(e){return null}}function n(){if("undefined"==typeof navigator||!navigator||!navigator.userAgentData)return!1;var e=navigator.userAgentData,n=e.brands||e.uaList;return!(!n||!n.length)}function p(e){return e.replace(/_/g,".")}function f(e,i){var r=null,o="-1";return c(e,function(e){var n=t("("+e.test+")((?:\\/|\\s|:)([0-9|\\.|_]+))?",i);return!(!n||e.brand)&&(r=e,o=n[3]||"-1",e.versionAlias?o=e.versionAlias:e.versionTest&&(o=function(e,n){var i=t("("+e+")((?:\\/|\\s|:)([0-9|\\.|_]+))",n);return i?i[3]:""}(e.versionTest.toLowerCase(),i)||o),o=p(o),!0)}),{preset:r,version:o}}function g(e,i){var r={brand:"",version:"-1"};return c(e,function(e){var n=h(i,e);return!!n&&(r.brand=e.id,r.version=e.versionAlias||n.version,"-1"!==r.version)}),r}function h(e,i){return l(e,function(e){var n=e.brand;return t(""+i.test,n.toLowerCase())})}var V=[{test:"phantomjs",id:"phantomjs"},{test:"whale",id:"whale"},{test:"edgios|edge|edg",id:"edge"},{test:"msie|trident|windows phone",id:"ie",versionTest:"iemobile|msie|rv"},{test:"miuibrowser",id:"miui browser"},{test:"samsungbrowser",id:"samsung internet"},{test:"samsung",id:"samsung internet",versionTest:"version"},{test:"chrome|crios",id:"chrome"},{test:"firefox|fxios",id:"firefox"},{test:"android",id:"android browser",versionTest:"version"},{test:"safari|iphone|ipad|ipod",id:"safari",versionTest:"version"}],k=[{test:"(?=.*applewebkit/(53[0-7]|5[0-2]|[0-4]))(?=.*\\schrome)",id:"chrome",versionTest:"chrome"},{test:"chromium",id:"chrome"},{test:"whale",id:"chrome",versionAlias:"-1",brand:!0}],A=[{test:"applewebkit",id:"webkit",versionTest:"applewebkit|safari"}],x=[{test:"(?=(iphone|ipad))(?!(.*version))",id:"webview"},{test:"(?=(android|iphone|ipad))(?=.*(naver|daum|; wv))",id:"webview"},{test:"webview",id:"webview"}],j=[{test:"windows phone",id:"windows phone"},{test:"windows 2000",id:"window",versionAlias:"5.0"},{test:"windows nt",id:"window"},{test:"win32|windows",id:"window"},{test:"iphone|ipad|ipod",id:"ios",versionTest:"iphone os|cpu os"},{test:"macos|macintel|mac os x",id:"mac"},{test:"android|linux armv81",id:"android"},{test:"tizen",id:"tizen"},{test:"webos|web0s",id:"webos"}];function T(e){return!!f(x,e).preset}function i(e){var n=b(e),i=!!/mobi/g.exec(n),r={name:"unknown",version:"-1",majorVersion:-1,webview:T(n),chromium:!1,chromiumVersion:"-1",webkit:!1,webkitVersion:"-1"},o={name:"unknown",version:"-1",majorVersion:-1},t=f(V,n),s=t.preset,a=t.version,u=f(j,n),v=u.preset,d=u.version,m=f(k,n);if(r.chromium=!!m.preset,r.chromiumVersion=m.version,!r.chromium){var w=f(A,n);r.webkit=!!w.preset,r.webkitVersion=w.version}return v&&(o.name=v.id,o.version=d,o.majorVersion=parseInt(d,10)),s&&(r.name=s.id,r.version=a,r.webview&&"ios"===o.name&&"safari"!==r.name&&(r.webview=!1)),r.majorVersion=parseInt(r.version,10),{browser:r,os:o,isMobile:i,isHints:!1}}function r(e){var n=navigator.userAgentData,i=(n.uaList||n.brands).slice(),r=e&&e.fullVersionList,o=n.mobile||!1,t=i[0],s=(e&&e.platform||n.platform||navigator.platform).toLowerCase(),a={name:t.brand,version:t.version,majorVersion:-1,webkit:!1,webkitVersion:"-1",chromium:!1,chromiumVersion:"-1",webview:!!g(x,i).brand||T(b())},u={name:"unknown",version:"-1",majorVersion:-1};a.webkit=!a.chromium&&c(A,function(e){return h(i,e)});var v=g(k,i);if(a.chromium=!!v.brand,a.chromiumVersion=v.version||"-1",!a.chromium){var d=g(A,i);a.webkit=!!d.brand,a.webkitVersion=d.version||"-1"}var m=l(j,function(e){return new RegExp(""+e.test,"g").exec(s)});if(u.name=m?m.id:"",e&&(u.version=e.platformVersion||"-1"),r&&r.length){var w=g(V,r);a.name=w.brand||a.name,a.version=w.version||a.version}else{var f=g(V,i);a.name=f.brand||a.name,a.version=f.brand&&e?e.uaFullVersion:f.version}return a.webkit&&(u.name=o?"ios":"mac"),"ios"===u.name&&a.webview&&(a.version="-1"),u.version=p(u.version),a.version=p(a.version),u.majorVersion=parseInt(u.version,10),a.majorVersion=parseInt(a.version,10),{browser:a,os:u,isMobile:o,isHints:!0}}function e(e){return void 0===e&&n()?r():i(e)}var o={__proto__:null,getAccurateAgent:function(i){return n()?navigator.userAgentData.getHighEntropyValues(["architecture","model","platform","platformVersion","uaFullVersion","fullVersionList"]).then(function(e){var n=r(e);return i&&i(n),n}):(i&&i(e()),"undefined"!=typeof Promise&&Promise?Promise.resolve(e()):null)},getLegacyAgent:i,default:e};for(var s in o)e[s]=o[s];return e}); //# sourceMappingURL=agent.min.js.map