@jam3/detect
Advanced tools
Comparing version 1.0.2 to 2.0.0
'use strict'; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
var bowser = require('bowser'); | ||
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; | ||
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } | ||
function unwrapExports (x) { | ||
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x; | ||
} | ||
var bowser__default = /*#__PURE__*/_interopDefaultLegacy(bowser); | ||
function createCommonjsModule(fn, module) { | ||
return module = { exports: {} }, fn(module, module.exports), module.exports; | ||
} | ||
var es5 = createCommonjsModule(function (module, exports) { | ||
!function(e,t){module.exports=t();}(commonjsGlobal,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=86)}({17:function(e,t,r){var n,i,s;i=[],void 0===(s="function"==typeof(n=function(){function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);}return r=e,i=[{key:"getFirstMatch",value:function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""}},{key:"getSecondMatch",value:function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""}},{key:"matchAndReturnConst",value:function(e,t,r){if(e.test(t))return r}},{key:"getWindowsVersionName",value:function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}}},{key:"getAndroidVersionName",value:function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":void 0}},{key:"getVersionPrecision",value:function(e){return e.split(".").length}},{key:"compareVersions",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),o=Math.max(i,s),a=0,u=e.map([t,r],function(t){var r=o-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});for(n&&(a=o-Math.min(i,s)),o-=1;o>=a;){if(u[0][o]>u[1][o])return 1;if(u[0][o]===u[1][o]){if(o===a)return 0;o-=1;}else if(u[0][o]<u[1][o])return -1}}},{key:"map",value:function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n}}],(n=null)&&t(r.prototype,n),i&&t(r,i),e;var r,n,i;}();e.exports=r;})?n.apply(t,i):n)||(e.exports=s);},86:function(e,t,r){var n,i,s;i=[t,r(87)],void 0===(s="function"==typeof(n=function(r,n){function i(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var s;Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,n=(s=n)&&s.__esModule?s:{default:s};var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);}return t=e,s=[{key:"getParser",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("string"!=typeof e)throw new Error("UserAgent should be a string");return new n.default(e,t)}},{key:"parse",value:function(e){return new n.default(e).getResult()}}],(r=null)&&i(t.prototype,r),s&&i(t,s),e;var t,r,s;}();r.default=o,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},87:function(e,t,r){var n,i,s;i=[t,r(88),r(89),r(90),r(91),r(17)],void 0===(s="function"==typeof(n=function(r,n,i,s,o,a){function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return (c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,n=u(n),i=u(i),s=u(s),o=u(o);var f=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),null==t||""===t)throw new Error("UserAgent parameter can't be empty");this._ua=t,this.parsedResult={},!0!==r&&this.parse();}return t=e,(r=[{key:"getUA",value:function(){return this._ua}},{key:"test",value:function(e){return e.test(this._ua)}},{key:"parseBrowser",value:function(){var e=this;this.parsedResult.browser={};var t=n.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser}},{key:"getBrowser",value:function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}},{key:"getBrowserName",value:function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""}},{key:"getBrowserVersion",value:function(){return this.getBrowser().version}},{key:"getOS",value:function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}},{key:"parseOS",value:function(){var e=this;this.parsedResult.os={};var t=i.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os}},{key:"getOSName",value:function(e){var t=this.getOS(),r=t.name;return e?String(r).toLowerCase()||"":r||""}},{key:"getOSVersion",value:function(){return this.getOS().version}},{key:"getPlatform",value:function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}},{key:"getPlatformType",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.getPlatform(),r=t.type;return e?String(r).toLowerCase()||"":r||""}},{key:"parsePlatform",value:function(){var e=this;this.parsedResult.platform={};var t=s.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform}},{key:"getEngine",value:function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}},{key:"getEngineName",value:function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""}},{key:"parseEngine",value:function(){var e=this;this.parsedResult.engine={};var t=o.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine}},{key:"parse",value:function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}},{key:"getResult",value:function(){return Object.assign({},this.parsedResult)}},{key:"satisfies",value:function(e){var t=this,r={},n=0,i={},s=0,o=Object.keys(e);if(o.forEach(function(t){var o=e[t];"string"==typeof o?(i[t]=o,s+=1):"object"===c(o)&&(r[t]=o,n+=1);}),n>0){var a=Object.keys(r),u=a.find(function(e){return t.isOS(e)});if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var f=a.find(function(e){return t.isPlatform(e)});if(f){var l=this.satisfies(r[f]);if(void 0!==l)return l}}if(s>0){var v=Object.keys(i),p=v.find(function(e){return t.isBrowser(e)});if(void 0!==p)return this.compareVersion(i[p])}}},{key:"isBrowser",value:function(e){return this.getBrowserName(!0)===String(e).toLowerCase()}},{key:"compareVersion",value:function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf((0, a.compareVersions)(i,r,n))>-1}},{key:"isOS",value:function(e){return this.getOSName(!0)===String(e).toLowerCase()}},{key:"isPlatform",value:function(e){return this.getPlatformType(!0)===String(e).toLowerCase()}},{key:"isEngine",value:function(e){return this.getEngineName(!0)===String(e).toLowerCase()}},{key:"is",value:function(e){return this.isBrowser(e)||this.isOS(e)||this.isPlatform(e)}},{key:"some",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return t.some(function(t){return e.is(t)})}}])&&d(t.prototype,r),e;var t,r;}();r.default=f,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},88:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=(0, n.getFirstMatch)(/googlebot\/(\d+(\.\d+))/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:opera)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=(0, n.getFirstMatch)(/(?:opr|opios)[\s\/](\S+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:SamsungBrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=(0, n.getFirstMatch)(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=(0, n.getFirstMatch)(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=(0, n.getFirstMatch)(/(?:swing)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:coast)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:yabrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:ucbrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:Maxthon|mxios)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:epiphany)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:puffin)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:sleipnir)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:k-meleon)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=(0, n.getFirstMatch)(/(?:micromessenger)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=(0, n.getFirstMatch)(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=(0, n.getSecondMatch)(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=(0, n.getFirstMatch)(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=(0, n.getFirstMatch)(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=(0, n.getFirstMatch)(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=(0, n.getFirstMatch)(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=(0, n.getFirstMatch)(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=(0, n.getFirstMatch)(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=(0, n.getFirstMatch)(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=(0, n.getFirstMatch)(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=(0, n.getFirstMatch)(/(?:qupzilla)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=(0, n.getFirstMatch)(/(?:firefox|iceweasel|fxios)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=(0, n.getFirstMatch)(/(?:chromium)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=(0, n.getFirstMatch)(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){return {name:(0, n.getFirstMatch)(/^(.*)\/(.*) /,e),version:(0, n.getSecondMatch)(/^(.*)\/(.*) /,e)}}}];r.default=s,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},89:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=[{test:[/windows phone/i],describe:function(e){var t=(0, n.getFirstMatch)(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:"Windows Phone",version:t}}},{test:[/windows/i],describe:function(e){var t=(0, n.getFirstMatch)(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=(0, n.getWindowsVersionName)(t);return {name:"Windows",version:t,versionName:r}}},{test:[/macintosh/i],describe:function(e){var t=(0, n.getFirstMatch)(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,".");return {name:"macOS",version:t}}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=(0, n.getFirstMatch)(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:"iOS",version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=(0, n.getFirstMatch)(/android[\s\/-](\d+(\.\d+)*)/i,e),r=(0, n.getAndroidVersionName)(t),i={name:"Android",version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=(0, n.getFirstMatch)(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:"WebOS"};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=(0, n.getFirstMatch)(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||(0, n.getFirstMatch)(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||(0, n.getFirstMatch)(/\bbb(\d+)/i,e);return {name:"BlackBerry",version:t}}},{test:[/bada/i],describe:function(e){var t=(0, n.getFirstMatch)(/bada\/(\d+(\.\d+)*)/i,e);return {name:"Bada",version:t}}},{test:[/tizen/i],describe:function(e){var t=(0, n.getFirstMatch)(/tizen[\/\s](\d+(\.\d+)*)/i,e);return {name:"Tizen",version:t}}},{test:[/linux/i],describe:function(){return {name:"Linux"}}},{test:[/CrOS/],describe:function(){return {name:"Chrome OS"}}}];r.default=i,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},90:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i={tablet:"tablet",mobile:"mobile",desktop:"desktop"},s=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=(0, n.getFirstMatch)(/(can-l01)/i,e)&&"Nova",r={type:i.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:i.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:i.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:i.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:i.tablet,vendor:"Amazon"}}},{test:[/tablet/i],describe:function(){return {type:i.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=(0, n.getFirstMatch)(/(ipod|iphone)/i,e);return {type:i.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:i.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:i.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:i.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:i.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:i.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:i.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:i.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:i.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:i.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:i.desktop}}}];r.default=s,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},91:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){var t=(0, n.getFirstMatch)(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:"EdgeHTML",version:t}}},{test:[/trident/i],describe:function(e){var t={name:"Trident"},r=(0, n.getFirstMatch)(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:"Presto"},r=(0, n.getFirstMatch)(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:"Gecko"},r=(0, n.getFirstMatch)(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:"Blink"}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:"WebKit"},r=(0, n.getFirstMatch)(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];r.default=i,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);}})}); | ||
}); | ||
var bowser = unwrapExports(es5); | ||
var es5_1 = es5.bowser; | ||
let _window = window; | ||
let _ua = window.navigator.userAgent.toLowerCase(); | ||
const _browser = bowser.getParser(window.navigator.userAgent); | ||
var detector = { | ||
base: _browser, | ||
window: _window, | ||
ua: _ua | ||
}; | ||
const SUPPORTED_BOTS = ['facebookexternalhit', 'linkedinbot', 'google (+https://developers.google.com/+/web/snippet/)', 'facebot', 'https://developers.google.com/+/web/snippet/', 'twitterbot', 'tumblr', 'googlebot']; | ||
/** | ||
* Is the browser a bot | ||
* | ||
* @param {Array<string>} supportedBots Custom array of bots, ['googlebot', 'linkedinbot'] | ||
* @returns {Boolean} True | False | ||
*/ | ||
function isBot(supportedBots) { | ||
if (!supportedBots) supportedBots = SUPPORTED_BOTS; | ||
return Boolean(supportedBots.filter(bot => detector.ua.indexOf(bot.toLowerCase()) !== -1).length); | ||
} | ||
var bots = { | ||
isBot | ||
}; | ||
/** | ||
* Contains methods and utils to test everything related to the user's browser | ||
* | ||
* @class Browser | ||
*/ | ||
class Browser { | ||
constructor() { | ||
this._parsedBrowserName = detector.base.getBrowserName(); | ||
this.isChrome = this._parsedBrowserName === 'Chrome'; | ||
this.isFirefox = this._parsedBrowserName === 'Firefox'; | ||
this.isSafari = this._parsedBrowserName === 'Safari'; | ||
this.isEdge = this._parsedBrowserName === 'Microsoft Edge'; | ||
this.isIE = this._parsedBrowserName === 'Internet Explorer'; | ||
this.isOpera = this._parsedBrowserName === 'Opera'; | ||
} | ||
/** | ||
* Returns the browser's name | ||
* | ||
* @returns {String} 'chrome', 'ie', 'firefox', 'safari', 'edge', 'opera', etc | ||
* @memberof Browser | ||
*/ | ||
getName() { | ||
if (this.isEdge) return 'edge'; | ||
if (this.isIE) return 'ie'; | ||
return this._parsedBrowserName.toLowerCase(); | ||
} | ||
/** | ||
* Returns the browser's version | ||
* | ||
* @returns {Number} 11.0.1 | ||
* @memberof Browser | ||
*/ | ||
getVersion() { | ||
return detector.base.getBrowserVersion(); | ||
} | ||
/** | ||
* Returns the browser's major version | ||
* | ||
* @returns {Number} 43 | ||
* @memberof Browser | ||
*/ | ||
getMajorVersion() { | ||
return parseInt(this.getBrowserVersion(), 10); | ||
} | ||
/** | ||
* Returns the browser's vendor | ||
* | ||
* @returns {String} Google Inc | ||
* @memberof Browser | ||
*/ | ||
getVendor() { | ||
return detector.window.navigator.vendor ? detector.window.navigator.vendor.toLowerCase() : ''; | ||
} | ||
} | ||
var browser = new Browser(); | ||
/** | ||
* Contains methods and utils to test user's Operative System | ||
* | ||
* @class OS | ||
*/ | ||
class OS { | ||
constructor() { | ||
this._parsedOSName = detector.base.getOSName(); | ||
this.isiOS = this._parsedOSName === 'iOS'; | ||
this.isAndroid = this._parsedOSName === 'Android'; | ||
this.isWindowsPhone = this._parsedOSName === 'Windows Phone'; | ||
this.isBlackberry = this._parsedOSName === 'BlackBerry'; | ||
this.isMac = this._parsedOSName === 'macOS'; | ||
this.isWindows = this._parsedOSName === 'Windows'; | ||
this.isLinux = this._parsedOSName === 'Linux'; | ||
this.isChromeOS = this._parsedOSName === 'Chrome OS'; | ||
} | ||
/** | ||
* Returns the Operative System name | ||
* | ||
* @returns {String} 'ios', 'android', 'windowsphone', 'blackberry', 'macos', 'chromeos', 'windows', etc | ||
* @memberof OS | ||
*/ | ||
getName() { | ||
return this._parsedOSName.split(' ').join('').toLowerCase(); | ||
} | ||
/** | ||
* Returns the Operative System version | ||
* | ||
* @returns {Number} 13.2.1 | ||
* @memberof OS | ||
*/ | ||
getVersion() { | ||
return detector.base.getOSVersion(); | ||
} | ||
/** | ||
* Returns the Operative System major version | ||
* | ||
* @returns {Number} 13 | ||
* @memberof OS | ||
*/ | ||
getMajorVersion() { | ||
return parseInt(detector.base.getOSVersion(), 10); | ||
} | ||
} | ||
var os = new OS(); | ||
const PORTRAIT = 'portrait'; | ||
const LANDSCAPE = 'landscape'; | ||
/** | ||
* Contains methods and utils to test everything related to the user's device | ||
* | ||
* @class Device | ||
*/ | ||
class Device { | ||
constructor() { | ||
const platform = detector.base.getPlatform(); | ||
if (!platform['type']) platform['type'] = ''; | ||
if (!platform['model']) platform['model'] = ''; | ||
this.isPhone = platform.type == 'mobile'; | ||
this.isTablet = platform.type == 'tablet'; | ||
this.isMobile = this.isPhone || this.isTablet; | ||
this.isDesktop = !this.isMobile; | ||
this.isiPhone = platform.model === 'iPhone'; | ||
this.isiPad = platform.model === 'iPad'; | ||
this.isiPod = platform.model === 'iPod'; | ||
} | ||
/** | ||
* Returns the device's type | ||
* | ||
* @returns {String} 'phone', 'desktop' or 'tablet' | ||
* @memberof Device | ||
*/ | ||
getType() { | ||
if (this.isPhone) return 'phone'; | ||
if (this.isTablet) return 'tablet'; | ||
if (this.isDesktop) return 'desktop'; | ||
return ''; | ||
} | ||
/** | ||
* Returns device's pixel ratio | ||
* | ||
* @returns {Number} 2 | ||
* @memberof Device | ||
*/ | ||
getPixelRatio() { | ||
return detector.window.devicePixelRatio; | ||
} | ||
/** | ||
* Returns device's current orientation | ||
* | ||
* @returns {String} 'portrait' or 'landscape' | ||
* @memberof Device | ||
*/ | ||
getOrientation() { | ||
if (typeof window.screen === 'object') { | ||
const orientationType = window.screen.msOrientation || (window.screen.orientation || window.screen.mozOrientation || {}).type; | ||
if (typeof orientationType === 'string') { | ||
return orientationType.split('-', 1)[0]; | ||
} | ||
var detector = typeof window !== 'undefined' | ||
? { | ||
ua: window.navigator.userAgent.toLowerCase(), | ||
base: bowser__default['default'].getParser(window.navigator.userAgent), | ||
window: window, | ||
isSpoofedIpad: (/iPad/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) && | ||
!window.MSStream, | ||
} | ||
if (typeof window.matchMedia === 'function') { | ||
return window.matchMedia('(orientation: portrait)').matches === true ? PORTRAIT : LANDSCAPE; | ||
: { | ||
ua: '', | ||
base: { | ||
getOSName: function () { return 'node'; }, | ||
getOSVersion: function () { return '1'; }, | ||
getBrowserName: function () { return 'node'; }, | ||
getBrowserVersion: function () { return '1'; }, | ||
getPlatform: function () { return ({ type: 'node', vendor: 'node' }); }, | ||
}, | ||
window: { | ||
devicePixelRatio: 1, | ||
innerWidth: 1440, | ||
innerHeight: 900, | ||
navigator: { | ||
vendor: 'node', | ||
mediaDevices: null, | ||
}, | ||
screen: null, | ||
matchMedia: null, | ||
}, | ||
isSpoofedIpad: false, | ||
}; | ||
var OS = (function () { | ||
function OS() { | ||
this.supportedBots = [ | ||
'facebookexternalhit', | ||
'skypeuripreview', | ||
'baiduspider', | ||
'linkedinbot', | ||
'ia_archiver', | ||
'duckduckbot', | ||
'twitterbot', | ||
'googlebot', | ||
'yandexbot', | ||
'bingbot', | ||
'facebot', | ||
'tumblr', | ||
'slurp', | ||
'google (+https://developers.google.com/+/web/snippet/)', | ||
'https://developers.google.com/+/web/snippet/', | ||
]; | ||
this.name = detector.isSpoofedIpad ? 'ios' : detector.base.getOSName().toLowerCase(); | ||
this.ios = this.name === 'ios'; | ||
this.android = this.name === 'android'; | ||
this.windowsPhone = this.name === 'windows phone'; | ||
this.blackBerry = this.name === 'blackberry'; | ||
this.mac = this.name === 'macos'; | ||
this.windows = this.name === 'windows'; | ||
this.linux = this.name === 'linux'; | ||
this.chromeos = this.name === 'chrome os'; | ||
this.node = this.name === 'node'; | ||
} | ||
const w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); | ||
const h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); | ||
return w < h ? PORTRAIT : LANDSCAPE; | ||
} | ||
/** | ||
* Is portrait the current device's orientation | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof Device | ||
*/ | ||
isPortrait() { | ||
return this.getOrientation() === PORTRAIT; | ||
} | ||
/** | ||
* Is landscape the current device's orientation | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof Device | ||
*/ | ||
isLandscape() { | ||
return this.getOrientation() === LANDSCAPE; | ||
} | ||
} | ||
var device = new Device(); | ||
/** | ||
* Contains methods and utils to test browsers embedded in mobile applications | ||
* | ||
* @class InAppBrowser | ||
*/ | ||
class InAppBrowser { | ||
constructor() { | ||
this.isFacebook = /fban|fbav/.test(detector.ua); | ||
this.isTwitter = /twitter/.test(detector.ua); | ||
this.isInstagram = /instagram/.test(detector.ua); | ||
this.isPinterest = /pinterest/.test(detector.ua); | ||
} | ||
/** | ||
* Is the browser embedded in an application | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof InAppBrowser | ||
*/ | ||
isInAppBrowser() { | ||
let isInAppBrowser = this.isFacebook || this.isTwitter || this.isInstagram || this.isPinterest; | ||
if (!isInAppBrowser) { | ||
isInAppBrowser = os.isiOS && os.getMajorVersion() >= 11 && browser.isSafari && typeof detector.window.navigator.mediaDevices === 'undefined'; | ||
Object.defineProperty(OS.prototype, "bot", { | ||
get: function () { | ||
return Boolean(this.supportedBots.filter(function (bot) { return detector.ua.indexOf(bot.toLowerCase()) !== -1; }).length); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(OS.prototype, "version", { | ||
get: function () { | ||
return detector.base.getOSVersion() || '0'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(OS.prototype, "majorVersion", { | ||
get: function () { | ||
return parseInt(this.version.replace(/[^0-9.]/g, ''), 10); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return OS; | ||
}()); | ||
var Browser = (function () { | ||
function Browser() { | ||
this.name = detector.ua.includes('edg/') | ||
? 'microsoft edge' | ||
: detector.base.getBrowserName().toLowerCase(); | ||
this.vendor = detector.window.navigator.vendor ? detector.window.navigator.vendor.toLowerCase() : ''; | ||
this.chrome = this.name === 'chrome'; | ||
this.firefox = this.name === 'firefox'; | ||
this.safari = this.name === 'safari'; | ||
this.edge = this.name === 'microsoft edge'; | ||
this.ie = this.name === 'internet explorer'; | ||
this.opera = this.name === 'opera'; | ||
this.node = this.name === 'node'; | ||
this.instagram = /instagram/i.test(detector.ua); | ||
this.pinterest = /pinterest/i.test(detector.ua); | ||
this.facebook = /fban|fbav/i.test(detector.ua); | ||
this.linkedIn = /linkedin/i.test(detector.ua); | ||
this.snapchat = /snapchat/i.test(detector.ua); | ||
this.whatsApp = /whatsapp/i.test(detector.ua); | ||
this.twitter = /twitter/i.test(detector.ua); | ||
this.weChat = /wechat|micromessenger/i.test(detector.ua); | ||
this.tikTok = /musical_ly/i.test(detector.ua); | ||
this.inApp = | ||
this.instagram || | ||
this.pinterest || | ||
this.facebook || | ||
this.linkedIn || | ||
this.snapchat || | ||
this.whatsApp || | ||
this.twitter || | ||
this.weChat || | ||
this.tikTok; | ||
} | ||
Object.defineProperty(Browser.prototype, "version", { | ||
get: function () { | ||
return detector.base.getBrowserVersion() || '0'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Browser.prototype, "majorVersion", { | ||
get: function () { | ||
return parseInt(this.version.replace(/[^0-9.]/g, ''), 10); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return Browser; | ||
}()); | ||
var Device = (function () { | ||
function Device() { | ||
this.platform = detector.isSpoofedIpad | ||
? { type: 'tablet', vendor: 'Apple', model: 'iPad' } | ||
: detector.base.getPlatform(); | ||
this.type = (this.platform.type || '').toLowerCase(); | ||
this.model = (this.platform.model || '').toLowerCase(); | ||
this.phone = this.type === 'mobile'; | ||
this.tablet = this.type === 'tablet'; | ||
this.mobile = this.phone || this.tablet; | ||
this.desktop = !this.mobile; | ||
this.iphone = this.model === 'iphone'; | ||
this.ipad = this.model === 'ipad'; | ||
this.ipod = this.model === 'ipod'; | ||
this.pixelRatio = detector.window.devicePixelRatio; | ||
this.node = this.type === 'node'; | ||
this.browser = !this.node; | ||
} | ||
Object.defineProperty(Device.prototype, "orientation", { | ||
get: function () { | ||
if (window.orientation !== undefined) { | ||
return Math.abs(+window.orientation) === 90 ? 'landscape' : 'portrait'; | ||
} | ||
if (typeof detector.window.matchMedia === 'function') { | ||
return detector.window.matchMedia('(orientation: portrait)').matches === true ? 'portrait' : 'landscape'; | ||
} | ||
if (typeof detector.window.screen === 'object') { | ||
var orientationType = (detector.window.screen.orientation || {}).type; | ||
if (typeof orientationType === 'string') { | ||
return orientationType.split('-', 1)[0]; | ||
} | ||
} | ||
var w = Math.max(document.documentElement.clientWidth, detector.window.innerWidth || 0); | ||
var h = Math.max(document.documentElement.clientHeight, detector.window.innerHeight || 0); | ||
return w < h ? 'portrait' : 'landscape'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Device.prototype, "portrait", { | ||
get: function () { | ||
return this.orientation === 'portrait'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Device.prototype, "landscape", { | ||
get: function () { | ||
return this.orientation === 'landscape'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return Device; | ||
}()); | ||
var Detect = (function () { | ||
function Detect() { | ||
this.os = new OS(); | ||
this.browser = new Browser(); | ||
this.device = new Device(); | ||
this.detector = detector; | ||
} | ||
return Detect; | ||
}()); | ||
var index = new Detect(); | ||
return isInAppBrowser; | ||
} | ||
/** | ||
* Returns in-app browser's version | ||
* | ||
* @returns {Number} 45 | ||
* @memberof InAppBrowser | ||
*/ | ||
getVersion() { | ||
if (os.isiOS) return os.getMajorVersion(); | ||
if (os.isAndroid) return browser.getMajorVersion(); | ||
return 9999; | ||
} | ||
} | ||
var inAppBrowser = new InAppBrowser(); | ||
var index = { | ||
bots, | ||
browser, | ||
os, | ||
device, | ||
inAppBrowser, | ||
detector | ||
}; | ||
exports.default = index; | ||
exports.bots = bots; | ||
exports.browser = browser; | ||
exports.os = os; | ||
exports.device = device; | ||
exports.inAppBrowser = inAppBrowser; | ||
exports.detector = detector; | ||
module.exports = index; | ||
//# sourceMappingURL=index.js.map |
@@ -1,326 +0,202 @@ | ||
var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; | ||
import bowser from 'bowser'; | ||
function unwrapExports (x) { | ||
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x; | ||
} | ||
function createCommonjsModule(fn, module) { | ||
return module = { exports: {} }, fn(module, module.exports), module.exports; | ||
} | ||
var es5 = createCommonjsModule(function (module, exports) { | ||
!function(e,t){module.exports=t();}(commonjsGlobal,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n});},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0});},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=86)}({17:function(e,t,r){var n,i,s;i=[],void 0===(s="function"==typeof(n=function(){function t(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var r=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);}return r=e,i=[{key:"getFirstMatch",value:function(e,t){var r=t.match(e);return r&&r.length>0&&r[1]||""}},{key:"getSecondMatch",value:function(e,t){var r=t.match(e);return r&&r.length>1&&r[2]||""}},{key:"matchAndReturnConst",value:function(e,t,r){if(e.test(t))return r}},{key:"getWindowsVersionName",value:function(e){switch(e){case"NT":return "NT";case"XP":return "XP";case"NT 5.0":return "2000";case"NT 5.1":return "XP";case"NT 5.2":return "2003";case"NT 6.0":return "Vista";case"NT 6.1":return "7";case"NT 6.2":return "8";case"NT 6.3":return "8.1";case"NT 10.0":return "10";default:return}}},{key:"getAndroidVersionName",value:function(e){var t=e.split(".").splice(0,2).map(function(e){return parseInt(e,10)||0});if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":void 0}},{key:"getVersionPrecision",value:function(e){return e.split(".").length}},{key:"compareVersions",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=e.getVersionPrecision(t),s=e.getVersionPrecision(r),o=Math.max(i,s),a=0,u=e.map([t,r],function(t){var r=o-e.getVersionPrecision(t),n=t+new Array(r+1).join(".0");return e.map(n.split("."),function(e){return new Array(20-e.length).join("0")+e}).reverse()});for(n&&(a=o-Math.min(i,s)),o-=1;o>=a;){if(u[0][o]>u[1][o])return 1;if(u[0][o]===u[1][o]){if(o===a)return 0;o-=1;}else if(u[0][o]<u[1][o])return -1}}},{key:"map",value:function(e,t){var r,n=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(r=0;r<e.length;r+=1)n.push(t(e[r]));return n}}],(n=null)&&t(r.prototype,n),i&&t(r,i),e;var r,n,i;}();e.exports=r;})?n.apply(t,i):n)||(e.exports=s);},86:function(e,t,r){var n,i,s;i=[t,r(87)],void 0===(s="function"==typeof(n=function(r,n){function i(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}var s;Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,n=(s=n)&&s.__esModule?s:{default:s};var o=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);}return t=e,s=[{key:"getParser",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if("string"!=typeof e)throw new Error("UserAgent should be a string");return new n.default(e,t)}},{key:"parse",value:function(e){return new n.default(e).getResult()}}],(r=null)&&i(t.prototype,r),s&&i(t,s),e;var t,r,s;}();r.default=o,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},87:function(e,t,r){var n,i,s;i=[t,r(88),r(89),r(90),r(91),r(17)],void 0===(s="function"==typeof(n=function(r,n,i,s,o,a){function u(e){return e&&e.__esModule?e:{default:e}}function c(e){return (c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function d(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n);}}Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0,n=u(n),i=u(i),s=u(s),o=u(o);var f=function(){function e(t){var r=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),null==t||""===t)throw new Error("UserAgent parameter can't be empty");this._ua=t,this.parsedResult={},!0!==r&&this.parse();}return t=e,(r=[{key:"getUA",value:function(){return this._ua}},{key:"test",value:function(e){return e.test(this._ua)}},{key:"parseBrowser",value:function(){var e=this;this.parsedResult.browser={};var t=n.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser}},{key:"getBrowser",value:function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()}},{key:"getBrowserName",value:function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""}},{key:"getBrowserVersion",value:function(){return this.getBrowser().version}},{key:"getOS",value:function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()}},{key:"parseOS",value:function(){var e=this;this.parsedResult.os={};var t=i.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os}},{key:"getOSName",value:function(e){var t=this.getOS(),r=t.name;return e?String(r).toLowerCase()||"":r||""}},{key:"getOSVersion",value:function(){return this.getOS().version}},{key:"getPlatform",value:function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()}},{key:"getPlatformType",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.getPlatform(),r=t.type;return e?String(r).toLowerCase()||"":r||""}},{key:"parsePlatform",value:function(){var e=this;this.parsedResult.platform={};var t=s.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform}},{key:"getEngine",value:function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()}},{key:"getEngineName",value:function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""}},{key:"parseEngine",value:function(){var e=this;this.parsedResult.engine={};var t=o.default.find(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some(function(t){return e.test(t)});throw new Error("Browser's test function is not valid")});return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine}},{key:"parse",value:function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this}},{key:"getResult",value:function(){return Object.assign({},this.parsedResult)}},{key:"satisfies",value:function(e){var t=this,r={},n=0,i={},s=0,o=Object.keys(e);if(o.forEach(function(t){var o=e[t];"string"==typeof o?(i[t]=o,s+=1):"object"===c(o)&&(r[t]=o,n+=1);}),n>0){var a=Object.keys(r),u=a.find(function(e){return t.isOS(e)});if(u){var d=this.satisfies(r[u]);if(void 0!==d)return d}var f=a.find(function(e){return t.isPlatform(e)});if(f){var l=this.satisfies(r[f]);if(void 0!==l)return l}}if(s>0){var v=Object.keys(i),p=v.find(function(e){return t.isBrowser(e)});if(void 0!==p)return this.compareVersion(i[p])}}},{key:"isBrowser",value:function(e){return this.getBrowserName(!0)===String(e).toLowerCase()}},{key:"compareVersion",value:function(e){var t=[0],r=e,n=!1,i=this.getBrowserVersion();if("string"==typeof i)return ">"===e[0]||"<"===e[0]?(r=e.substr(1),"="===e[1]?(n=!0,r=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?r=e.substr(1):"~"===e[0]&&(n=!0,r=e.substr(1)),t.indexOf((0, a.compareVersions)(i,r,n))>-1}},{key:"isOS",value:function(e){return this.getOSName(!0)===String(e).toLowerCase()}},{key:"isPlatform",value:function(e){return this.getPlatformType(!0)===String(e).toLowerCase()}},{key:"isEngine",value:function(e){return this.getEngineName(!0)===String(e).toLowerCase()}},{key:"is",value:function(e){return this.isBrowser(e)||this.isOS(e)||this.isPlatform(e)}},{key:"some",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return t.some(function(t){return e.is(t)})}}])&&d(t.prototype,r),e;var t,r;}();r.default=f,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},88:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},r=(0, n.getFirstMatch)(/googlebot\/(\d+(\.\d+))/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:opera)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},r=(0, n.getFirstMatch)(/(?:opr|opios)[\s\/](\S+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:SamsungBrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:whale)[\s\/](\d+(?:\.\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},r=(0, n.getFirstMatch)(/(?:MZBrowser)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},r=(0, n.getFirstMatch)(/(?:focus)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},r=(0, n.getFirstMatch)(/(?:swing)[\s\/](\d+(?:\.\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:coast)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:yabrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:ucbrowser)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:Maxthon|mxios)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:epiphany)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:puffin)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:sleipnir)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/(?:k-meleon)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},r=(0, n.getFirstMatch)(/(?:micromessenger)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},r=(0, n.getFirstMatch)(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},r=(0, n.getSecondMatch)(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},r=(0, n.getFirstMatch)(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},r=(0, n.getFirstMatch)(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},r=(0, n.getFirstMatch)(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return r&&(t.version=r),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},r=(0, n.getFirstMatch)(/silk\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},r=(0, n.getFirstMatch)(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},r=(0, n.getFirstMatch)(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},r=(0, n.getFirstMatch)(i,e)||(0, n.getFirstMatch)(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},r=(0, n.getFirstMatch)(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},r=(0, n.getFirstMatch)(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},r=(0, n.getFirstMatch)(/(?:qupzilla)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},r=(0, n.getFirstMatch)(/(?:firefox|iceweasel|fxios)[\s\/](\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},r=(0, n.getFirstMatch)(/(?:chromium)[\s\/](\d+(\.?_?\d+)+)/i,e)||(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},r=(0, n.getFirstMatch)(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t={name:"Android Browser"},r=(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},r=(0, n.getFirstMatch)(i,e);return r&&(t.version=r),t}},{test:[/.*/i],describe:function(e){return {name:(0, n.getFirstMatch)(/^(.*)\/(.*) /,e),version:(0, n.getSecondMatch)(/^(.*)\/(.*) /,e)}}}];r.default=s,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},89:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=[{test:[/windows phone/i],describe:function(e){var t=(0, n.getFirstMatch)(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return {name:"Windows Phone",version:t}}},{test:[/windows/i],describe:function(e){var t=(0, n.getFirstMatch)(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),r=(0, n.getWindowsVersionName)(t);return {name:"Windows",version:t,versionName:r}}},{test:[/macintosh/i],describe:function(e){var t=(0, n.getFirstMatch)(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,".");return {name:"macOS",version:t}}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=(0, n.getFirstMatch)(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return {name:"iOS",version:t}}},{test:function(e){var t=!e.test(/like android/i),r=e.test(/android/i);return t&&r},describe:function(e){var t=(0, n.getFirstMatch)(/android[\s\/-](\d+(\.\d+)*)/i,e),r=(0, n.getAndroidVersionName)(t),i={name:"Android",version:t};return r&&(i.versionName=r),i}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=(0, n.getFirstMatch)(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),r={name:"WebOS"};return t&&t.length&&(r.version=t),r}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=(0, n.getFirstMatch)(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||(0, n.getFirstMatch)(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||(0, n.getFirstMatch)(/\bbb(\d+)/i,e);return {name:"BlackBerry",version:t}}},{test:[/bada/i],describe:function(e){var t=(0, n.getFirstMatch)(/bada\/(\d+(\.\d+)*)/i,e);return {name:"Bada",version:t}}},{test:[/tizen/i],describe:function(e){var t=(0, n.getFirstMatch)(/tizen[\/\s](\d+(\.\d+)*)/i,e);return {name:"Tizen",version:t}}},{test:[/linux/i],describe:function(){return {name:"Linux"}}},{test:[/CrOS/],describe:function(){return {name:"Chrome OS"}}}];r.default=i,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},90:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i={tablet:"tablet",mobile:"mobile",desktop:"desktop"},s=[{test:[/googlebot/i],describe:function(){return {type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=(0, n.getFirstMatch)(/(can-l01)/i,e)&&"Nova",r={type:i.mobile,vendor:"Huawei"};return t&&(r.model=t),r}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return {type:i.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return {type:i.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return {type:i.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return {type:i.tablet,vendor:"Amazon"}}},{test:[/tablet/i],describe:function(){return {type:i.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),r=e.test(/like (ipod|iphone)/i);return t&&!r},describe:function(e){var t=(0, n.getFirstMatch)(/(ipod|iphone)/i,e);return {type:i.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return {type:i.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return {type:i.mobile}}},{test:function(e){return "blackberry"===e.getBrowserName(!0)},describe:function(){return {type:i.mobile,vendor:"BlackBerry"}}},{test:function(e){return "bada"===e.getBrowserName(!0)},describe:function(){return {type:i.mobile}}},{test:function(e){return "windows phone"===e.getBrowserName()},describe:function(){return {type:i.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return "android"===e.getOSName(!0)&&t>=3},describe:function(){return {type:i.tablet}}},{test:function(e){return "android"===e.getOSName(!0)},describe:function(){return {type:i.mobile}}},{test:function(e){return "macos"===e.getOSName(!0)},describe:function(){return {type:i.desktop,vendor:"Apple"}}},{test:function(e){return "windows"===e.getOSName(!0)},describe:function(){return {type:i.desktop}}},{test:function(e){return "linux"===e.getOSName(!0)},describe:function(){return {type:i.desktop}}}];r.default=s,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);},91:function(e,t,r){var n,i,s;i=[t,r(17)],void 0===(s="function"==typeof(n=function(r,n){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var i=[{test:function(e){return "microsoft edge"===e.getBrowserName(!0)},describe:function(e){var t=(0, n.getFirstMatch)(/edge\/(\d+(\.?_?\d+)+)/i,e);return {name:"EdgeHTML",version:t}}},{test:[/trident/i],describe:function(e){var t={name:"Trident"},r=(0, n.getFirstMatch)(/trident\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:"Presto"},r=(0, n.getFirstMatch)(/presto\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:function(e){var t=e.test(/gecko/i),r=e.test(/like gecko/i);return t&&!r},describe:function(e){var t={name:"Gecko"},r=(0, n.getFirstMatch)(/gecko\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return {name:"Blink"}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:"WebKit"},r=(0, n.getFirstMatch)(/webkit\/(\d+(\.?_?\d+)+)/i,e);return r&&(t.version=r),t}}];r.default=i,e.exports=t.default;})?n.apply(t,i):n)||(e.exports=s);}})}); | ||
}); | ||
var bowser = unwrapExports(es5); | ||
var es5_1 = es5.bowser; | ||
let _window = window; | ||
let _ua = window.navigator.userAgent.toLowerCase(); | ||
const _browser = bowser.getParser(window.navigator.userAgent); | ||
var detector = { | ||
base: _browser, | ||
window: _window, | ||
ua: _ua | ||
}; | ||
const SUPPORTED_BOTS = ['facebookexternalhit', 'linkedinbot', 'google (+https://developers.google.com/+/web/snippet/)', 'facebot', 'https://developers.google.com/+/web/snippet/', 'twitterbot', 'tumblr', 'googlebot']; | ||
/** | ||
* Is the browser a bot | ||
* | ||
* @param {Array<string>} supportedBots Custom array of bots, ['googlebot', 'linkedinbot'] | ||
* @returns {Boolean} True | False | ||
*/ | ||
function isBot(supportedBots) { | ||
if (!supportedBots) supportedBots = SUPPORTED_BOTS; | ||
return Boolean(supportedBots.filter(bot => detector.ua.indexOf(bot.toLowerCase()) !== -1).length); | ||
} | ||
var bots = { | ||
isBot | ||
}; | ||
/** | ||
* Contains methods and utils to test everything related to the user's browser | ||
* | ||
* @class Browser | ||
*/ | ||
class Browser { | ||
constructor() { | ||
this._parsedBrowserName = detector.base.getBrowserName(); | ||
this.isChrome = this._parsedBrowserName === 'Chrome'; | ||
this.isFirefox = this._parsedBrowserName === 'Firefox'; | ||
this.isSafari = this._parsedBrowserName === 'Safari'; | ||
this.isEdge = this._parsedBrowserName === 'Microsoft Edge'; | ||
this.isIE = this._parsedBrowserName === 'Internet Explorer'; | ||
this.isOpera = this._parsedBrowserName === 'Opera'; | ||
} | ||
/** | ||
* Returns the browser's name | ||
* | ||
* @returns {String} 'chrome', 'ie', 'firefox', 'safari', 'edge', 'opera', etc | ||
* @memberof Browser | ||
*/ | ||
getName() { | ||
if (this.isEdge) return 'edge'; | ||
if (this.isIE) return 'ie'; | ||
return this._parsedBrowserName.toLowerCase(); | ||
} | ||
/** | ||
* Returns the browser's version | ||
* | ||
* @returns {Number} 11.0.1 | ||
* @memberof Browser | ||
*/ | ||
getVersion() { | ||
return detector.base.getBrowserVersion(); | ||
} | ||
/** | ||
* Returns the browser's major version | ||
* | ||
* @returns {Number} 43 | ||
* @memberof Browser | ||
*/ | ||
getMajorVersion() { | ||
return parseInt(this.getBrowserVersion(), 10); | ||
} | ||
/** | ||
* Returns the browser's vendor | ||
* | ||
* @returns {String} Google Inc | ||
* @memberof Browser | ||
*/ | ||
getVendor() { | ||
return detector.window.navigator.vendor ? detector.window.navigator.vendor.toLowerCase() : ''; | ||
} | ||
} | ||
var browser = new Browser(); | ||
/** | ||
* Contains methods and utils to test user's Operative System | ||
* | ||
* @class OS | ||
*/ | ||
class OS { | ||
constructor() { | ||
this._parsedOSName = detector.base.getOSName(); | ||
this.isiOS = this._parsedOSName === 'iOS'; | ||
this.isAndroid = this._parsedOSName === 'Android'; | ||
this.isWindowsPhone = this._parsedOSName === 'Windows Phone'; | ||
this.isBlackberry = this._parsedOSName === 'BlackBerry'; | ||
this.isMac = this._parsedOSName === 'macOS'; | ||
this.isWindows = this._parsedOSName === 'Windows'; | ||
this.isLinux = this._parsedOSName === 'Linux'; | ||
this.isChromeOS = this._parsedOSName === 'Chrome OS'; | ||
} | ||
/** | ||
* Returns the Operative System name | ||
* | ||
* @returns {String} 'ios', 'android', 'windowsphone', 'blackberry', 'macos', 'chromeos', 'windows', etc | ||
* @memberof OS | ||
*/ | ||
getName() { | ||
return this._parsedOSName.split(' ').join('').toLowerCase(); | ||
} | ||
/** | ||
* Returns the Operative System version | ||
* | ||
* @returns {Number} 13.2.1 | ||
* @memberof OS | ||
*/ | ||
getVersion() { | ||
return detector.base.getOSVersion(); | ||
} | ||
/** | ||
* Returns the Operative System major version | ||
* | ||
* @returns {Number} 13 | ||
* @memberof OS | ||
*/ | ||
getMajorVersion() { | ||
return parseInt(detector.base.getOSVersion(), 10); | ||
} | ||
} | ||
var os = new OS(); | ||
const PORTRAIT = 'portrait'; | ||
const LANDSCAPE = 'landscape'; | ||
/** | ||
* Contains methods and utils to test everything related to the user's device | ||
* | ||
* @class Device | ||
*/ | ||
class Device { | ||
constructor() { | ||
const platform = detector.base.getPlatform(); | ||
if (!platform['type']) platform['type'] = ''; | ||
if (!platform['model']) platform['model'] = ''; | ||
this.isPhone = platform.type == 'mobile'; | ||
this.isTablet = platform.type == 'tablet'; | ||
this.isMobile = this.isPhone || this.isTablet; | ||
this.isDesktop = !this.isMobile; | ||
this.isiPhone = platform.model === 'iPhone'; | ||
this.isiPad = platform.model === 'iPad'; | ||
this.isiPod = platform.model === 'iPod'; | ||
} | ||
/** | ||
* Returns the device's type | ||
* | ||
* @returns {String} 'phone', 'desktop' or 'tablet' | ||
* @memberof Device | ||
*/ | ||
getType() { | ||
if (this.isPhone) return 'phone'; | ||
if (this.isTablet) return 'tablet'; | ||
if (this.isDesktop) return 'desktop'; | ||
return ''; | ||
} | ||
/** | ||
* Returns device's pixel ratio | ||
* | ||
* @returns {Number} 2 | ||
* @memberof Device | ||
*/ | ||
getPixelRatio() { | ||
return detector.window.devicePixelRatio; | ||
} | ||
/** | ||
* Returns device's current orientation | ||
* | ||
* @returns {String} 'portrait' or 'landscape' | ||
* @memberof Device | ||
*/ | ||
getOrientation() { | ||
if (typeof window.screen === 'object') { | ||
const orientationType = window.screen.msOrientation || (window.screen.orientation || window.screen.mozOrientation || {}).type; | ||
if (typeof orientationType === 'string') { | ||
return orientationType.split('-', 1)[0]; | ||
} | ||
var detector = typeof window !== 'undefined' | ||
? { | ||
ua: window.navigator.userAgent.toLowerCase(), | ||
base: bowser.getParser(window.navigator.userAgent), | ||
window: window, | ||
isSpoofedIpad: (/iPad/.test(navigator.platform) || (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) && | ||
!window.MSStream, | ||
} | ||
if (typeof window.matchMedia === 'function') { | ||
return window.matchMedia('(orientation: portrait)').matches === true ? PORTRAIT : LANDSCAPE; | ||
: { | ||
ua: '', | ||
base: { | ||
getOSName: function () { return 'node'; }, | ||
getOSVersion: function () { return '1'; }, | ||
getBrowserName: function () { return 'node'; }, | ||
getBrowserVersion: function () { return '1'; }, | ||
getPlatform: function () { return ({ type: 'node', vendor: 'node' }); }, | ||
}, | ||
window: { | ||
devicePixelRatio: 1, | ||
innerWidth: 1440, | ||
innerHeight: 900, | ||
navigator: { | ||
vendor: 'node', | ||
mediaDevices: null, | ||
}, | ||
screen: null, | ||
matchMedia: null, | ||
}, | ||
isSpoofedIpad: false, | ||
}; | ||
var OS = (function () { | ||
function OS() { | ||
this.supportedBots = [ | ||
'facebookexternalhit', | ||
'skypeuripreview', | ||
'baiduspider', | ||
'linkedinbot', | ||
'ia_archiver', | ||
'duckduckbot', | ||
'twitterbot', | ||
'googlebot', | ||
'yandexbot', | ||
'bingbot', | ||
'facebot', | ||
'tumblr', | ||
'slurp', | ||
'google (+https://developers.google.com/+/web/snippet/)', | ||
'https://developers.google.com/+/web/snippet/', | ||
]; | ||
this.name = detector.isSpoofedIpad ? 'ios' : detector.base.getOSName().toLowerCase(); | ||
this.ios = this.name === 'ios'; | ||
this.android = this.name === 'android'; | ||
this.windowsPhone = this.name === 'windows phone'; | ||
this.blackBerry = this.name === 'blackberry'; | ||
this.mac = this.name === 'macos'; | ||
this.windows = this.name === 'windows'; | ||
this.linux = this.name === 'linux'; | ||
this.chromeos = this.name === 'chrome os'; | ||
this.node = this.name === 'node'; | ||
} | ||
const w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); | ||
const h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); | ||
return w < h ? PORTRAIT : LANDSCAPE; | ||
} | ||
/** | ||
* Is portrait the current device's orientation | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof Device | ||
*/ | ||
isPortrait() { | ||
return this.getOrientation() === PORTRAIT; | ||
} | ||
/** | ||
* Is landscape the current device's orientation | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof Device | ||
*/ | ||
isLandscape() { | ||
return this.getOrientation() === LANDSCAPE; | ||
} | ||
} | ||
var device = new Device(); | ||
/** | ||
* Contains methods and utils to test browsers embedded in mobile applications | ||
* | ||
* @class InAppBrowser | ||
*/ | ||
class InAppBrowser { | ||
constructor() { | ||
this.isFacebook = /fban|fbav/.test(detector.ua); | ||
this.isTwitter = /twitter/.test(detector.ua); | ||
this.isInstagram = /instagram/.test(detector.ua); | ||
this.isPinterest = /pinterest/.test(detector.ua); | ||
} | ||
/** | ||
* Is the browser embedded in an application | ||
* | ||
* @returns {Boolean} True | False | ||
* @memberof InAppBrowser | ||
*/ | ||
isInAppBrowser() { | ||
let isInAppBrowser = this.isFacebook || this.isTwitter || this.isInstagram || this.isPinterest; | ||
if (!isInAppBrowser) { | ||
isInAppBrowser = os.isiOS && os.getMajorVersion() >= 11 && browser.isSafari && typeof detector.window.navigator.mediaDevices === 'undefined'; | ||
Object.defineProperty(OS.prototype, "bot", { | ||
get: function () { | ||
return Boolean(this.supportedBots.filter(function (bot) { return detector.ua.indexOf(bot.toLowerCase()) !== -1; }).length); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(OS.prototype, "version", { | ||
get: function () { | ||
return detector.base.getOSVersion() || '0'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(OS.prototype, "majorVersion", { | ||
get: function () { | ||
return parseInt(this.version.replace(/[^0-9.]/g, ''), 10); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return OS; | ||
}()); | ||
var Browser = (function () { | ||
function Browser() { | ||
this.name = detector.ua.includes('edg/') | ||
? 'microsoft edge' | ||
: detector.base.getBrowserName().toLowerCase(); | ||
this.vendor = detector.window.navigator.vendor ? detector.window.navigator.vendor.toLowerCase() : ''; | ||
this.chrome = this.name === 'chrome'; | ||
this.firefox = this.name === 'firefox'; | ||
this.safari = this.name === 'safari'; | ||
this.edge = this.name === 'microsoft edge'; | ||
this.ie = this.name === 'internet explorer'; | ||
this.opera = this.name === 'opera'; | ||
this.node = this.name === 'node'; | ||
this.instagram = /instagram/i.test(detector.ua); | ||
this.pinterest = /pinterest/i.test(detector.ua); | ||
this.facebook = /fban|fbav/i.test(detector.ua); | ||
this.linkedIn = /linkedin/i.test(detector.ua); | ||
this.snapchat = /snapchat/i.test(detector.ua); | ||
this.whatsApp = /whatsapp/i.test(detector.ua); | ||
this.twitter = /twitter/i.test(detector.ua); | ||
this.weChat = /wechat|micromessenger/i.test(detector.ua); | ||
this.tikTok = /musical_ly/i.test(detector.ua); | ||
this.inApp = | ||
this.instagram || | ||
this.pinterest || | ||
this.facebook || | ||
this.linkedIn || | ||
this.snapchat || | ||
this.whatsApp || | ||
this.twitter || | ||
this.weChat || | ||
this.tikTok; | ||
} | ||
Object.defineProperty(Browser.prototype, "version", { | ||
get: function () { | ||
return detector.base.getBrowserVersion() || '0'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Browser.prototype, "majorVersion", { | ||
get: function () { | ||
return parseInt(this.version.replace(/[^0-9.]/g, ''), 10); | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return Browser; | ||
}()); | ||
var Device = (function () { | ||
function Device() { | ||
this.platform = detector.isSpoofedIpad | ||
? { type: 'tablet', vendor: 'Apple', model: 'iPad' } | ||
: detector.base.getPlatform(); | ||
this.type = (this.platform.type || '').toLowerCase(); | ||
this.model = (this.platform.model || '').toLowerCase(); | ||
this.phone = this.type === 'mobile'; | ||
this.tablet = this.type === 'tablet'; | ||
this.mobile = this.phone || this.tablet; | ||
this.desktop = !this.mobile; | ||
this.iphone = this.model === 'iphone'; | ||
this.ipad = this.model === 'ipad'; | ||
this.ipod = this.model === 'ipod'; | ||
this.pixelRatio = detector.window.devicePixelRatio; | ||
this.node = this.type === 'node'; | ||
this.browser = !this.node; | ||
} | ||
Object.defineProperty(Device.prototype, "orientation", { | ||
get: function () { | ||
if (window.orientation !== undefined) { | ||
return Math.abs(+window.orientation) === 90 ? 'landscape' : 'portrait'; | ||
} | ||
if (typeof detector.window.matchMedia === 'function') { | ||
return detector.window.matchMedia('(orientation: portrait)').matches === true ? 'portrait' : 'landscape'; | ||
} | ||
if (typeof detector.window.screen === 'object') { | ||
var orientationType = (detector.window.screen.orientation || {}).type; | ||
if (typeof orientationType === 'string') { | ||
return orientationType.split('-', 1)[0]; | ||
} | ||
} | ||
var w = Math.max(document.documentElement.clientWidth, detector.window.innerWidth || 0); | ||
var h = Math.max(document.documentElement.clientHeight, detector.window.innerHeight || 0); | ||
return w < h ? 'portrait' : 'landscape'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Device.prototype, "portrait", { | ||
get: function () { | ||
return this.orientation === 'portrait'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
Object.defineProperty(Device.prototype, "landscape", { | ||
get: function () { | ||
return this.orientation === 'landscape'; | ||
}, | ||
enumerable: false, | ||
configurable: true | ||
}); | ||
return Device; | ||
}()); | ||
var Detect = (function () { | ||
function Detect() { | ||
this.os = new OS(); | ||
this.browser = new Browser(); | ||
this.device = new Device(); | ||
this.detector = detector; | ||
} | ||
return Detect; | ||
}()); | ||
var index = new Detect(); | ||
return isInAppBrowser; | ||
} | ||
/** | ||
* Returns in-app browser's version | ||
* | ||
* @returns {Number} 45 | ||
* @memberof InAppBrowser | ||
*/ | ||
getVersion() { | ||
if (os.isiOS) return os.getMajorVersion(); | ||
if (os.isAndroid) return browser.getMajorVersion(); | ||
return 9999; | ||
} | ||
} | ||
var inAppBrowser = new InAppBrowser(); | ||
var index = { | ||
bots, | ||
browser, | ||
os, | ||
device, | ||
inAppBrowser, | ||
detector | ||
}; | ||
export default index; | ||
export { bots, browser, os, device, inAppBrowser, detector }; | ||
export { index as default }; | ||
//# sourceMappingURL=index.module.js.map |
{ | ||
"name": "@jam3/detect", | ||
"version": "1.0.2", | ||
"version": "2.0.0", | ||
"description": "User agent feature detection like Device Orientation, in App Browser Detection, etc", | ||
"main": "dist/index.js", | ||
"module": "dist/index.module.js", | ||
"types": "dist/index.d.ts", | ||
"keywords": [ | ||
"detect", | ||
"os", | ||
"browser", | ||
"in-app-browser", | ||
"bots" | ||
"device", | ||
"browser" | ||
], | ||
"scripts": { | ||
"test": "jest --watch", | ||
"build": "rollup -c rollup.config.js" | ||
"test": "npm run build && jest --watch --env=jsdom", | ||
"build": "rollup -c rollup.config.ts" | ||
}, | ||
@@ -28,14 +28,17 @@ "repository": { | ||
"dependencies": { | ||
"bowser": "2.1.0" | ||
"bowser": "^2.11.0" | ||
}, | ||
"devDependencies": { | ||
"@babel/core": "^7.2.2", | ||
"@babel/plugin-proposal-class-properties": "^7.3.0", | ||
"@babel/preset-env": "^7.3.1", | ||
"babel-jest": "^24.0.0", | ||
"jest": "^24.0.0", | ||
"rollup": "^1.1.2", | ||
"rollup-plugin-babel": "^4.3.2", | ||
"rollup-plugin-commonjs": "^9.2.0", | ||
"rollup-plugin-node-resolve": "^4.0.0" | ||
"@babel/core": "^7.15.0", | ||
"@babel/plugin-proposal-class-properties": "^7.14.5", | ||
"@babel/preset-env": "^7.15.0", | ||
"@rollup/plugin-typescript": "^8.2.5", | ||
"babel-jest": "^27.0.6", | ||
"jest": "^27.0.6", | ||
"rollup": "^2.56.2", | ||
"rollup-plugin-babel": "^4.4.0", | ||
"rollup-plugin-commonjs": "^10.1.0", | ||
"rollup-plugin-node-resolve": "^5.2.0", | ||
"tslib": "^2.3.1", | ||
"typescript": "^4.3.5" | ||
}, | ||
@@ -45,3 +48,3 @@ "jest": { | ||
"collectCoverageFrom": [ | ||
"src/**/*.js", | ||
"dist/**/*.js", | ||
"!**/node_modules/**" | ||
@@ -48,0 +51,0 @@ ] |
@@ -18,3 +18,3 @@ # detect | ||
import detect from '@jam3/detect'; | ||
import {bots, browser} from '@jam3/detect'; | ||
import { os, browser, device } from '@jam3/detect'; | ||
``` | ||
@@ -27,5 +27,5 @@ | ||
``` | ||
import {os} from '@jam3/detect'; | ||
import { os } from '@jam3/detect'; | ||
console.log(os.getOSMajorVersion()); | ||
console.log(os.majorVersion); | ||
``` | ||
@@ -36,10 +36,6 @@ | ||
``` | ||
import {device} from '@jam3/detect'; | ||
import { device } from '@jam3/detect'; | ||
console.log(device.isPortrait()); | ||
console.log(device.isLandscape()); | ||
console.log(device.portrait); | ||
console.log(device.landscape); | ||
``` | ||
## TODO | ||
1. Unify API, there are some boolean and methods called `is[noun]`, we should have a clear convention between methods and variables. |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
68773
12
21
1110
39
2
+ Addedbowser@2.11.0(transitive)
- Removedbowser@2.1.0(transitive)
Updatedbowser@^2.11.0