@atlaskit/editor-plugin-feedback-dialog
Version:
Feedback dialog plugin for @atlaskit/editor-core
205 lines (204 loc) • 5.98 kB
JavaScript
/**
* Inspired from:
* https://stackoverflow.com/questions/9514179/how-to-find-the-operating-system-version-using-javascript
*/
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WIN16_REGEX = /Win16/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_95_REGEX = /(Windows 95|Win95|Windows_95)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_ME_REGEX = /(Win 9x 4.90|Windows ME)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_98_REGEX = /(Windows 98|Win98)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_CE_REGEX = /Windows CE/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_2000_REGEX = /(Windows NT 5.0|Windows 2000)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_XP_REGEX = /(Windows NT 5.1|Windows XP)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_SERVER_2003_REGEX = /Windows NT 5.2/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_VISTA_REGEX = /Windows NT 6.0/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_7_REGEX = /(Windows 7|Windows NT 6.1)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_8_1_REGEX = /(Windows 8.1|Windows NT 6.3)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_8_REGEX = /(Windows 8|Windows NT 6.2)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_NT_4_REGEX = /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var ANDROID_REGEX = /Android/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var OPEN_BSD_REGEX = /OpenBSD/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var SUN_OS_REGEX = /SunOS/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var LINUX_REGEX = /(Linux|X11)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var IOS_REGEX = /(iPhone|iPad|iPod)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var MAC_OS_X_REGEX = /Mac OS X/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var MAC_OS_REGEX = /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var QNX_REGEX = /QNX/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var UNIX_REGEX = /UNIX/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var BEOS_REGEX = /BeOS/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var OS2_REGEX = /OS\/2/;
// Ignored via go/ees005
/* eslint-disable require-unicode-regexp */
var SEARCH_BOT_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/;
/* eslint-enable require-unicode-regexp */
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_TEST_REGEX = /Windows/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var WINDOWS_VERSION_REGEX = /Windows (.*)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var MAC_OS_X_VERSION_REGEX = /Mac OS X (10[\.\_\d]+)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var ANDROID_VERSION_REGEX = /Android ([\.\_\d]+)/;
// Ignored via go/ees005
// eslint-disable-next-line require-unicode-regexp
var IOS_VERSION_REGEX = /OS (\d+)_(\d+)_?(\d+)?/;
var getDeviceInfo = function getDeviceInfo(nAgt, nVersion) {
var os = '';
var osVersion = '';
var clientStrings = [{
s: 'Windows 3.11',
r: WIN16_REGEX
}, {
s: 'Windows 95',
r: WINDOWS_95_REGEX
}, {
s: 'Windows ME',
r: WINDOWS_ME_REGEX
}, {
s: 'Windows 98',
r: WINDOWS_98_REGEX
}, {
s: 'Windows CE',
r: WINDOWS_CE_REGEX
}, {
s: 'Windows 2000',
r: WINDOWS_2000_REGEX
}, {
s: 'Windows XP',
r: WINDOWS_XP_REGEX
}, {
s: 'Windows Server 2003',
r: WINDOWS_SERVER_2003_REGEX
}, {
s: 'Windows Vista',
r: WINDOWS_VISTA_REGEX
}, {
s: 'Windows 7',
r: WINDOWS_7_REGEX
}, {
s: 'Windows 8.1',
r: WINDOWS_8_1_REGEX
}, {
s: 'Windows 8',
r: WINDOWS_8_REGEX
}, {
s: 'Windows NT 4.0',
r: WINDOWS_NT_4_REGEX
}, {
s: 'Android',
r: ANDROID_REGEX
}, {
s: 'Open BSD',
r: OPEN_BSD_REGEX
}, {
s: 'Sun OS',
r: SUN_OS_REGEX
}, {
s: 'Linux',
r: LINUX_REGEX
}, {
s: 'iOS',
r: IOS_REGEX
}, {
s: 'Mac OS X',
r: MAC_OS_X_REGEX
}, {
s: 'Mac OS',
r: MAC_OS_REGEX
}, {
s: 'QNX',
r: QNX_REGEX
}, {
s: 'UNIX',
r: UNIX_REGEX
}, {
s: 'BeOS',
r: BEOS_REGEX
}, {
s: 'OS/2',
r: OS2_REGEX
}, {
s: 'Search Bot',
r: SEARCH_BOT_REGEX
}];
// eslint-disable-next-line guard-for-in
for (var client in clientStrings) {
var clientObj = clientStrings[client];
if (clientObj.r.test(nAgt)) {
os = clientObj.s;
break;
}
}
var match;
if (WINDOWS_TEST_REGEX.test(os)) {
match = WINDOWS_VERSION_REGEX.exec(os);
osVersion = match && match[1];
os = 'Windows';
}
switch (os) {
case 'Mac OS X':
match = MAC_OS_X_VERSION_REGEX.exec(nAgt);
osVersion = match && match[1];
break;
case 'Android':
match = ANDROID_VERSION_REGEX.exec(nAgt);
osVersion = match && match[1];
break;
case 'iOS':
match = IOS_VERSION_REGEX.exec(nVersion);
osVersion = match && match[1] + '.' + match[2] + '.' + (match[3] || 0);
}
return "".concat(os, " ").concat(osVersion);
};
export default getDeviceInfo;