Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: static/dist/js/vendor/bowser.min.js.map

Issue 29624561: Issue 6104 - Minified code in help center repository (Closed) Base URL: https://hg.adblockplus.org/help.eyeo.com
Patch Set: Move all requires to top of gulpfile.js Created Dec. 4, 2017, 2:10 p.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 {"version":3,"sources":["bowser.js"],"names":["root","name","definition","module ","exports","define","amd","this","detect","ua","getFirstMatch","regex","match", "length","result","iosdevice","toLowerCase","likeAndroid","test","android","nexu sMobile","nexusTablet","chromeos","silk","sailfish","tizen","webos","windowsphon e","windows","mac","linux","edgeVersion","versionIdentifier","tablet","mobile"," xbox","opera","t","version","samsungBrowser","coast","yandexbrowser","ucbrowser" ,"maxthon","epiphany","puffin","sleipnir","kMeleon","msedge","msie","chromeBook" ,"chrome","vivaldi","seamonkey","firefox","firefoxos","phantom","slimer","blackb erry","touchpad","bada","qupzilla","chromium","safari","googlebot","blink","webk it","gecko","ios","osVersion","s","replace","osversion","osMajorVersion","split" ,"a","c","x","getVersionPrecision","map","arr","iterator","i","Array","prototype ","call","push","compareVersions","versions","precision","Math","max","chunks"," delta","join","chunk","reverse","isUnsupportedBrowser","minVersions","strictMode ","_bowser","bowser","browser","hasOwnProperty","Error","String","check","naviga tor","userAgent","browserList","browserItem","_detect"],"mappings":";;;;;CAMC,SA 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","file":"bowser.min.js" ,"sourcesContent":["/*!\n * Bowser - a browser detector\n * https://github.com/d ed/bowser\n * MIT License | (c) Dustin Diaz 2015\n */\n\n!function (root, name, definition) {\n if (typeof module != 'undefined' && module.exports) module.expo rts = definition()\n else if (typeof define == 'function' && define.amd) define (name, definition)\n else root[name] = definition()\n}(this, 'bowser', function () {\n /**\n * See useragents.js for examples of navigator.userAgent\n * /\n\n var t = true\n\n function detect(ua) {\n\n function getFirstMatch(reg ex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[1]) || '';\n }\n\n function getSecondMatch(regex) {\n var match = ua.match(regex);\n return (match && match.length > 1 && match[2]) || '';\n }\n\n var iosdevice = getFirstMatch(/(ipod|iphone|ipad)/i).toLowe rCase()\n , likeAndroid = /like android/i.test(ua)\n , android = !like Android && /android/i.test(ua)\n , nexusMobile = /nexus\\s*[0-6]\\s*/i.test (ua)\n , nexusTablet = !nexusMobile && /nexus\\s*[0-9]+/i.test(ua)\n , chromeos = /CrOS/.test(ua)\n , silk = /silk/i.test(ua)\n , sailfish = /sailfish/i.test(ua)\n , tizen = /tizen/i.test(ua)\n , webos = /(web| hpw)os/i.test(ua)\n , windowsphone = /windows phone/i.test(ua)\n , sam sungBrowser = /SamsungBrowser/i.test(ua)\n , windows = !windowsphone && /wi ndows/i.test(ua)\n , mac = !iosdevice && !silk && /macintosh/i.test(ua)\n , linux = !android && !sailfish && !tizen && !webos && /linux/i.test(ua)\n , edgeVersion = getFirstMatch(/edge\\/(\\d+(\\.\\d+)?)/i)\n , versionId entifier = getFirstMatch(/version\\/(\\d+(\\.\\d+)?)/i)\n , tablet = /table t/i.test(ua) && !/tablet pc/i.test(ua)\n , mobile = !tablet && /[^-]mobi/i. test(ua)\n , xbox = /xbox/i.test(ua)\n , result\n\n if (/opera/i.te st(ua)) {\n // an old Opera\n result = {\n name: 'Opera'\n , opera: t\n , version: versionIdentifier || getFirstMatch(/(?:opera|opr| opios)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n } else if (/opr\\/|opios/i.test( ua)) {\n // a new Opera\n result = {\n name: 'Opera'\n , opera: t\n , version: getFirstMatch(/(?:opr|opios)[\\s\\/](\\d+(\\.\\d+) ?)/i) || versionIdentifier\n }\n }\n else if (/SamsungBrowser/i.test( ua)) {\n result = {\n name: 'Samsung Internet for Android'\n , samsungBrowser: t\n , version: versionIdentifier || getFirstMatch(/(?:S amsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/coast/i .test(ua)) {\n result = {\n name: 'Opera Coast'\n , coast: t\ n , version: versionIdentifier || getFirstMatch(/(?:coast)[\\s\\/](\\d+(\ \.\\d+)?)/i)\n }\n }\n else if (/yabrowser/i.test(ua)) {\n resul t = {\n name: 'Yandex Browser'\n , yandexbrowser: t\n , version : versionIdentifier || getFirstMatch(/(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/ucbrowser/i.test(ua)) {\n result = {\n name: 'UC Browser'\n , ucbrowser: t\n , version: getFirstMatch( /(?:ucbrowser)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/mxios /i.test(ua)) {\n result = {\n name: 'Maxthon'\n , maxthon: t\ n , version: getFirstMatch(/(?:mxios)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/epiphany/i.test(ua)) {\n result = {\n name: 'Epiphany'\n , epiphany: t\n , version: getFirstMatch(/(?:epiphan y)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/puffin/i.test(ua) ) {\n result = {\n name: 'Puffin'\n , puffin: t\n , ve rsion: getFirstMatch(/(?:puffin)[\\s\\/](\\d+(?:\\.\\d+)?)/i)\n }\n }\n else if (/sleipnir/i.test(ua)) {\n result = {\n name: 'Sleipnir'\ n , sleipnir: t\n , version: getFirstMatch(/(?:sleipnir)[\\s\\/](\ \d+(?:\\.\\d+)+)/i)\n }\n }\n else if (/k-meleon/i.test(ua)) {\n result = {\n name: 'K-Meleon'\n , kMeleon: t\n , version: getFirstMatch(/(?:k-meleon)[\\s\\/](\\d+(?:\\.\\d+)+)/i)\n }\n }\n el se if (windowsphone) {\n result = {\n name: 'Windows Phone'\n , windowsphone: t\n }\n if (edgeVersion) {\n result.msedge = t\n result.version = edgeVersion\n }\n else {\n result.msie = t\n result.version = getFirstMatch(/iemobile\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/msie|trident/i.test(ua)) {\n result = {\n name: 'Internet Explorer'\n , msie: t\n , version: getFirstMatch(/(? :msie |rv:)(\\d+(\\.\\d+)?)/i)\n }\n } else if (chromeos) {\n resul t = {\n name: 'Chrome'\n , chromeos: t\n , chromeBook: t\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\ \d+)?)/i)\n }\n } else if (/chrome.+? edge/i.test(ua)) {\n result = {\n name: 'Microsoft Edge'\n , msedge: t\n , version: edgeVers ion\n }\n }\n else if (/vivaldi/i.test(ua)) {\n result = {\n name: 'Vivaldi'\n , vivaldi: t\n , version: getFirstMatch(/viv aldi\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n }\n }\n else if (sa ilfish) {\n result = {\n name: 'Sailfish'\n , sailfish: t\n , version: getFirstMatch(/sailfish\\s?browser\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/seamonkey\\//i.test(ua)) {\n result = {\n name: 'SeaMonkey'\n , seamonkey: t\n , version: getFirstMatch(/seamonkey\\/ (\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/firefox|iceweasel|fxios/i.tes t(ua)) {\n result = {\n name: 'Firefox'\n , firefox: t\n , version: getFirstMatch(/(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i)\n }\n if (/\\((mobile|tablet);[^\\)]*rv:[\\d\\.]+\\)/i.test(ua)) {\n result.firefoxos = t\n }\n }\n else if (silk) {\n result = {\n name: 'Amazon Silk'\n , silk: t\n , version : getFirstMatch (/silk\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/phantom/i.test(ua)) {\n result = {\n name: 'PhantomJS'\n , phantom: t\n , vers ion: getFirstMatch(/phantomjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/slimerjs/i.test(ua)) {\n result = {\n name: 'SlimerJS'\n , slimer: t\n , version: getFirstMatch(/slimerjs\\/(\\d+(\\.\\d+)?)/i)\n }\n }\n else if (/blackberry|\\bbb\\d+/i.test(ua) || /rim\\stablet/i.t est(ua)) {\n result = {\n name: 'BlackBerry'\n , blackberry: t\ n , version: versionIdentifier || getFirstMatch(/blackberry[\\d]+\\/(\\d+(\ \.\\d+)?)/i)\n }\n }\n else if (webos) {\n result = {\n n ame: 'WebOS'\n , webos: t\n , version: versionIdentifier || getFirstMa tch(/w(?:eb)?osbrowser\\/(\\d+(\\.\\d+)?)/i)\n };\n /touchpad\\//i.tes t(ua) && (result.touchpad = t)\n }\n else if (/bada/i.test(ua)) {\n r esult = {\n name: 'Bada'\n , bada: t\n , version: getFirstMatch (/dolfin\\/(\\d+(\\.\\d+)?)/i)\n };\n }\n else if (tizen) {\n re sult = {\n name: 'Tizen'\n , tizen: t\n , version: getFirstMatc h(/(?:tizen\\s?)?browser\\/(\\d+(\\.\\d+)?)/i) || versionIdentifier\n };\n }\n else if (/qupzilla/i.test(ua)) {\n result = {\n name: 'Qup Zilla'\n , qupzilla: t\n , version: getFirstMatch(/(?:qupzilla)[\\ s\\/](\\d+(?:\\.\\d+)+)/i) || versionIdentifier\n }\n }\n else if (/c hromium/i.test(ua)) {\n result = {\n name: 'Chromium'\n , chr omium: t\n , version: getFirstMatch(/(?:chromium)[\\s\\/](\\d+(?:\\.\\d+) ?)/i) || versionIdentifier\n }\n }\n else if (/chrome|crios|crmo/i.te st(ua)) {\n result = {\n name: 'Chrome'\n , chrome: t\n , version: getFirstMatch(/(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i)\n } \n }\n else if (android) {\n result = {\n name: 'Android'\n , version: versionIdentifier\n }\n }\n else if (/safari|appleweb kit/i.test(ua)) {\n result = {\n name: 'Safari'\n , safari: t\n }\n if (versionIdentifier) {\n result.version = versionIdentif ier\n }\n }\n else if (iosdevice) {\n result = {\n name : iosdevice == 'iphone' ? 'iPhone' : iosdevice == 'ipad' ? 'iPad' : 'iPod'\n }\n // WTF: version is not part of user agent in web apps\n if (versi onIdentifier) {\n result.version = versionIdentifier\n }\n }\n else if(/googlebot/i.test(ua)) {\n result = {\n name: 'Googlebot'\n , googlebot: t\n , version: getFirstMatch(/googlebot\\/(\\d+(\\.\\d+) )/i) || versionIdentifier\n }\n }\n else {\n result = {\n name: getFirstMatch(/^(.*)\\/(.*) /),\n version: getSecondMatch(/^(.*)\\ /(.*) /)\n };\n }\n\n // set webkit or gecko flag for browsers based on these engines\n if (!result.msedge && /(apple)?webkit/i.test(ua)) {\n i f (/(apple)?webkit\\/537\\.36/i.test(ua)) {\n result.name = result.name | | \"Blink\"\n result.blink = t\n } else {\n result.name = res ult.name || \"Webkit\"\n result.webkit = t\n }\n if (!result.ve rsion && versionIdentifier) {\n result.version = versionIdentifier\n }\n } else if (!result.opera && /gecko\\//i.test(ua)) {\n result.name = result.name || \"Gecko\"\n result.gecko = t\n result.version = result .version || getFirstMatch(/gecko\\/(\\d+(\\.\\d+)?)/i)\n }\n\n // set OS f lags for platforms that have multiple browsers\n if (!result.windowsphone && !result.msedge && (android || result.silk)) {\n result.android = t\n } e lse if (!result.windowsphone && !result.msedge && iosdevice) {\n result[ios device] = t\n result.ios = t\n } else if (mac) {\n result.mac = t\n } else if (xbox) {\n result.xbox = t\n } else if (windows) {\n result.windows = t\n } else if (linux) {\n result.linux = t\n }\n\n function getWindowsVersion (s) {\n switch (s) {\n case 'NT': retur n 'NT'\n case 'XP': return 'XP'\n case 'NT 5.0': return '2000'\n case 'NT 5.1': return 'XP'\n case 'NT 5.2': return '2003'\n case 'NT 6.0': return 'Vista'\n case 'NT 6.1': return '7'\n case ' NT 6.2': return '8'\n case 'NT 6.3': return '8.1'\n case 'NT 10.0' : return '10'\n default: return undefined\n }\n }\n\n // OS ve rsion extraction\n var osVersion = '';\n if (result.windows) {\n osVe rsion = getWindowsVersion(getFirstMatch(/Windows ((NT|XP)( \\d\\d?.\\d)?)/i))\n } else if (result.windowsphone) {\n osVersion = getFirstMatch(/windows p hone (?:os)?\\s?(\\d+(\\.\\d+)*)/i);\n } else if (result.mac) {\n osVers ion = getFirstMatch(/Mac OS X (\\d+([_\\.\\s]\\d+)*)/i);\n osVersion = osVe rsion.replace(/[_\\s]/g, '.');\n } else if (iosdevice) {\n osVersion = g etFirstMatch(/os (\\d+([_\\s]\\d+)*) like mac os x/i);\n osVersion = osVers ion.replace(/[_\\s]/g, '.');\n } else if (android) {\n osVersion = getFi rstMatch(/android[ \\/-](\\d+(\\.\\d+)*)/i);\n } else if (result.webos) {\n osVersion = getFirstMatch(/(?:web|hpw)os\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.blackberry) {\n osVersion = getFirstMatch(/rim\\stablet\\sos\\s( \\d+(\\.\\d+)*)/i);\n } else if (result.bada) {\n osVersion = getFirstMa tch(/bada\\/(\\d+(\\.\\d+)*)/i);\n } else if (result.tizen) {\n osVersio n = getFirstMatch(/tizen[\\/\\s](\\d+(\\.\\d+)*)/i);\n }\n if (osVersion) {\n result.osversion = osVersion;\n }\n\n // device type extraction\n var osMajorVersion = !result.windows && osVersion.split('.')[0];\n if (\n tablet\n || nexusTablet\n || iosdevice == 'ipad'\n || (a ndroid && (osMajorVersion == 3 || (osMajorVersion >= 4 && !mobile)))\n || r esult.silk\n ) {\n result.tablet = t\n } else if (\n mobile\n || iosdevice == 'iphone'\n || iosdevice == 'ipod'\n || android\n || nexusMobile\n || result.blackberry\n || result.webos\n | | result.bada\n ) {\n result.mobile = t\n }\n\n // Graded Browser Support\n // http://developer.yahoo.com/yui/articles/gbs\n if (result.msed ge ||\n (result.msie && result.version >= 10) ||\n (result.yandexb rowser && result.version >= 15) ||\n\t\t (result.vivaldi && result.version >= 1.0) ||\n (result.chrome && result.version >= 20) ||\n (result.sa msungBrowser && result.version >= 4) ||\n (result.firefox && result.versi on >= 20.0) ||\n (result.safari && result.version >= 6) ||\n (resu lt.opera && result.version >= 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] >= 6) ||\n (result.blackberry && resu lt.version >= 10.1)\n || (result.chromium && result.version >= 20)\n ) {\n result.a = t;\n }\n else if ((result.msie && result.version < 10) ||\n (result.chrome && result.version < 20) ||\n (result.fir efox && result.version < 20.0) ||\n (result.safari && result.version < 6) ||\n (result.opera && result.version < 10.0) ||\n (result.ios && result.osversion && result.osversion.split(\".\")[0] < 6)\n || (result.ch romium && result.version < 20)\n ) {\n result.c = t\n } else resu lt.x = t\n\n return result\n }\n\n var bowser = detect(typeof navigator !== 'undefined' ? navigator.userAgent || '' : '')\n\n bowser.test = function (brow serList) {\n for (var i = 0; i < browserList.length; ++i) {\n var browse rItem = browserList[i];\n if (typeof browserItem=== 'string') {\n if (browserItem in bowser) {\n return true;\n }\n }\n }\n return false;\n }\n\n /**\n * Get version precisions count\n *\n * @e xample\n * getVersionPrecision(\"1.10.3\") // 3\n *\n * @param {string} version\n * @return {number}\n */\n function getVersionPrecision(version) {\n return version.split(\".\").length;\n }\n\n /**\n * Array::map polyfi ll\n *\n * @param {Array} arr\n * @param {Function} iterator\n * @retu rn {Array}\n */\n function map(arr, iterator) {\n var result = [], i;\n if (Array.prototype.map) {\n return Array.prototype.map.call(arr, iterator );\n }\n for (i = 0; i < arr.length; i++) {\n result.push(iterator(ar r[i]));\n }\n return result;\n }\n\n /**\n * Calculate browser version weight\n *\n * @example\n * compareVersions(['1.10.2.1', '1.8.2.1.90'] ) // 1\n * compareVersions(['1.010.2.1', '1.09.2.1.90']); // 1\n * c ompareVersions(['1.10.2.1', '1.10.2.1']); // 0\n * compareVersions(['1. 10.2.1', '1.0800.2']); // -1\n *\n * @param {Array<String>} versions v ersions to compare\n * @return {Number} comparison result\n */\n function c ompareVersions(versions) {\n // 1) get common precision for both versions, fo r example for \"10.0\" and \"9\" it should be 2\n var precision = Math.max(ge tVersionPrecision(versions[0]), getVersionPrecision(versions[1]));\n var chun ks = map(versions, function (version) {\n var delta = precision - getVersio nPrecision(version);\n\n // 2) \"9\" -> \"9.0\" (for precision = 2)\n version = version + new Array(delta + 1).join(\".0\");\n\n // 3) \"9.0\" -> [\"000000000\"\", \"000000009\"]\n return map(version.split(\".\"), functi on (chunk) {\n return new Array(20 - chunk.length).join(\"0\") + chunk;\n }).reverse();\n });\n\n // iterate in reverse order by reversed chun ks array\n while (--precision >= 0) {\n // 4) compare: \"000000009\" > \ "000000010\" = false (but \"9\" > \"10\" = true)\n if (chunks[0][precision] > chunks[1][precision]) {\n return 1;\n }\n else if (chunks[0] [precision] === chunks[1][precision]) {\n if (precision === 0) {\n // all version chunks are same\n return 0;\n }\n }\n else {\n return -1;\n }\n }\n }\n\n /**\n * Check if browse r is unsupported\n *\n * @example\n * bowser.isUnsupportedBrowser({\n * msie: \"10\",\n * firefox: \"23\",\n * chrome: \"29\",\n * safari: \"5.1\",\n * opera: \"16\",\n * phantom: \"534\"\n * });\n *\n * @param {Object} minVersions map of minimal version to browser\ n * @param {Boolean} [strictMode = false] flag to return false if browser was n't found in map\n * @param {String} [ua] user agent string\n * @return {B oolean}\n */\n function isUnsupportedBrowser(minVersions, strictMode, ua) {\n var _bowser = bowser;\n\n // make strictMode param optional with ua param usage\n if (typeof strictMode === 'string') {\n ua = strictMode;\n strictMode = void(0);\n }\n\n if (strictMode === void(0)) {\n strict Mode = false;\n }\n if (ua) {\n _bowser = detect(ua);\n }\n\n v ar version = \"\" + _bowser.version;\n for (var browser in minVersions) {\n if (minVersions.hasOwnProperty(browser)) {\n if (_bowser[browser]) {\ n if (typeof minVersions[browser] !== 'string') {\n throw ne w Error('Browser version in the minVersion map should be a string: ' + browser + ': ' + String(minVersions));\n }\n\n // browser version and m in supported version.\n return compareVersions([version, minVersions[br owser]]) < 0;\n }\n }\n }\n\n return strictMode; // not found\ n }\n\n /**\n * Check if browser is supported\n *\n * @param {Object} m inVersions map of minimal version to browser\n * @param {Boolean} [strictMode = false] flag to return false if browser wasn't found in map\n * @param {Str ing} [ua] user agent string\n * @return {Boolean}\n */\n function check(mi nVersions, strictMode, ua) {\n return !isUnsupportedBrowser(minVersions, stri ctMode, ua);\n }\n\n bowser.isUnsupportedBrowser = isUnsupportedBrowser;\n bo wser.compareVersions = compareVersions;\n bowser.check = check;\n\n /*\n * S et our detect method to the main bowser object so we can\n * reuse it to test other user agents.\n * This is needed to implement future tests.\n */\n bow ser._detect = detect;\n\n return bowser\n});"]}
OLDNEW

Powered by Google App Engine
This is Rietveld