UNPKG

low-browser

Version:

Internet Explorer and Microsoft Edge browsers definition

82 lines (80 loc) 2.33 kB
/*! * Low Browser. Internet Explorer and Microsoft Edge browsers definition. * https://github.com/Arttse/low-browser * Copyright (c) 2015-2018 Nikita Bystrov (Arttse) * Licensed under the MIT license * Version: 0.3.0 */ /** * Internet Explorer and Microsoft Edge browsers definition. * Parses given user agent string * * @param userAgent - browser user agent * * @returns object with info about browser */ const lowBrowser = (userAgent) => { const data = { userAgent }; let m; /** Check Mac Power PC */ if (/Mac_PowerPC/i.test(userAgent)) { data.os = 'Mac_PowerPC'; } /** Check Mac OS X */ if (/Mac OS X/i.test(userAgent)) { data.os = 'Mac OS X'; } /** Check Windows OS */ m = userAgent.match(/(Windows.*?)[;)]/i); if (m) { data.os = m[1].trim() .replace(/NT(\d)/i, 'NT $1') .replace(/(NT\s\d{1,2})$/i, '$1.0'); } /** Check Trident version core */ m = userAgent.match(/Trident[\/\s](\d+\.[\d\w]+)[;)]/i); if (m) { data.core = 'Trident'; data.coreVersion = m[1].trim(); } /** Check IE 11 */ if (/rv:11\.0/i.test(userAgent) && data.core === 'Trident') { data.name = 'IE'; data.version = '11.0'; } /** Check IE < 11 */ const ieRegex = 'MSIE\\s(.*?)[;)]'; m = userAgent.match(new RegExp(ieRegex, 'ig')); m = m ? m[m.length - 1].match(new RegExp(ieRegex, 'i')) : null; if (m) { data.name = 'IE'; data.version = m[1].trim(); } /** Check IEMobile */ m = userAgent.match(/IEMobile[\/\s](\d+\.[\d\w]+)[;)]/i); if (m) { data.name = 'IEMobile'; data.version = m[1].trim(); } /** Check EDGE browser */ m = userAgent.match(/Edge[\/\s](.*?)\.(\d+)/i); if (m) { data.name = 'Edge'; data.version = m[1].trim(); const osBuild = +m[2]; if (osBuild) { data.osBuild = osBuild; } data.core = 'EdgeHTML'; data.coreVersion = `${data.version}.${osBuild || 0}`; } /** Check Xbox */ if (/Xbox/i.test(userAgent)) { data.gamePlatform = /Xbox\sOne/i.test(userAgent) ? 'Xbox One' : 'Xbox 360'; } return data; }; export default lowBrowser; //# sourceMappingURL=low-browser.esm.js.map