low-browser
Version:
Internet Explorer and Microsoft Edge browsers definition
82 lines (80 loc) • 2.33 kB
JavaScript
/*!
* 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