diginext-utils
Version:
README.md
220 lines (219 loc) • 8.65 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkOS = exports.isMobile = exports.isTablet = exports.isAndroid = exports.isIos = void 0;
const isIos = () => {
const deviceInfo = (0, exports.checkOS)();
if (deviceInfo)
return deviceInfo.os.toLowerCase() == "ios";
console.log("Can't check OS");
return false;
};
exports.isIos = isIos;
const isAndroid = () => {
const deviceInfo = (0, exports.checkOS)();
if (deviceInfo)
return deviceInfo.os.toLowerCase() == "android";
console.log("Can't check OS");
return false;
};
exports.isAndroid = isAndroid;
const isTablet = () => {
if (typeof navigator == "undefined")
return false;
if (typeof window == "undefined")
return false;
return (0, exports.isMobile)() && window.innerWidth > 599 && window.innerHeight > 599;
};
exports.isTablet = isTablet;
const isMobile = () => {
if (typeof window == "undefined")
return null;
if (typeof navigator === "undefined")
return false;
const userAgent = navigator.userAgent || navigator.vendor || window.opera;
// Check if the device is running iPadOS
const isIPadOS = /Macintosh/.test(userAgent) && "ontouchend" in document;
return (isIPadOS ||
/android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|windows phone/i.test(userAgent.toLowerCase()));
};
exports.isMobile = isMobile;
/**
*
* @returns {{
* screen,
* browser,
* browserVersion,
* browserMajorVersion,
* mobile,
* os,
* osVersion,
* cookies,
* flashVersion,
* }}
*/
let deviceInfo;
const checkOS = () => {
var _a;
if (typeof window == "undefined")
return {};
if (typeof deviceInfo == "undefined") {
var unknown = "-";
// screen
var screenSize = "";
if (screen.width) {
var width = screen.width ? screen.width : "";
var height = screen.height ? screen.height : "";
screenSize += "" + width + " x " + height;
}
// browser
var nVer = navigator.appVersion;
var nAgt = navigator.userAgent;
var browser = navigator.appName;
var version = "" + parseFloat(navigator.appVersion);
var majorVersion = parseInt(navigator.appVersion, 10);
var nameOffset, verOffset, ix;
// Opera
if ((verOffset = nAgt.indexOf("Opera")) != -1) {
browser = "Opera";
version = nAgt.substring(verOffset + 6);
if ((verOffset = nAgt.indexOf("Version")) != -1) {
version = nAgt.substring(verOffset + 8);
}
}
// Opera Next
if ((verOffset = nAgt.indexOf("OPR")) != -1) {
browser = "Opera";
version = nAgt.substring(verOffset + 4);
}
// Edge
else if ((verOffset = nAgt.indexOf("Edge")) != -1) {
browser = "Microsoft Edge";
version = nAgt.substring(verOffset + 5);
}
// MSIE
else if ((verOffset = nAgt.indexOf("MSIE")) != -1) {
browser = "Microsoft Internet Explorer";
version = nAgt.substring(verOffset + 5);
}
// Chrome
else if ((verOffset = nAgt.indexOf("Chrome")) != -1) {
browser = "Chrome";
version = nAgt.substring(verOffset + 7);
}
// Safari
else if ((verOffset = nAgt.indexOf("Safari")) != -1) {
browser = "Safari";
version = nAgt.substring(verOffset + 7);
if ((verOffset = nAgt.indexOf("Version")) != -1) {
version = nAgt.substring(verOffset + 8);
}
}
// Firefox
else if ((verOffset = nAgt.indexOf("Firefox")) != -1) {
browser = "Firefox";
version = nAgt.substring(verOffset + 8);
}
// MSIE 11+
else if (nAgt.indexOf("Trident/") != -1) {
browser = "Microsoft Internet Explorer";
version = nAgt.substring(nAgt.indexOf("rv:") + 3);
}
// Other browsers
else if ((nameOffset = nAgt.lastIndexOf(" ") + 1) < (verOffset = nAgt.lastIndexOf("/"))) {
browser = nAgt.substring(nameOffset, verOffset);
version = nAgt.substring(verOffset + 1);
if (browser.toLowerCase() == browser.toUpperCase()) {
browser = navigator.appName;
}
}
// trim the version string
if ((ix = version.indexOf(";")) != -1)
version = version.substring(0, ix);
if ((ix = version.indexOf(" ")) != -1)
version = version.substring(0, ix);
if ((ix = version.indexOf(")")) != -1)
version = version.substring(0, ix);
majorVersion = parseInt("" + version, 10);
if (isNaN(majorVersion)) {
version = "" + parseFloat(navigator.appVersion);
majorVersion = parseInt(navigator.appVersion, 10);
}
// mobile version
var mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);
// cookie
var cookieEnabled = navigator.cookieEnabled ? true : false;
if (typeof navigator.cookieEnabled == "undefined" && !cookieEnabled) {
document.cookie = "testcookie";
cookieEnabled = document.cookie.indexOf("testcookie") != -1 ? true : false;
}
// system
var os = unknown;
var clientStrings = [
{ s: "Windows 10", r: /(Windows 10.0|Windows NT 10.0)/ },
{ s: "Windows 8.1", r: /(Windows 8.1|Windows NT 6.3)/ },
{ s: "Windows 8", r: /(Windows 8|Windows NT 6.2)/ },
{ s: "Windows 7", r: /(Windows 7|Windows NT 6.1)/ },
{ s: "Windows Vista", r: /Windows NT 6.0/ },
{ s: "Windows Server 2003", r: /Windows NT 5.2/ },
{ s: "Windows XP", r: /(Windows NT 5.1|Windows XP)/ },
{ s: "Windows 2000", r: /(Windows NT 5.0|Windows 2000)/ },
{ s: "Windows ME", r: /(Win 9x 4.90|Windows ME)/ },
{ s: "Windows 98", r: /(Windows 98|Win98)/ },
{ s: "Windows 95", r: /(Windows 95|Win95|Windows_95)/ },
{ s: "Windows NT 4.0", r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },
{ s: "Windows CE", r: /Windows CE/ },
{ s: "Windows 3.11", r: /Win16/ },
{ s: "Android", r: /Android/ },
{ s: "Open BSD", r: /OpenBSD/ },
{ s: "Sun OS", r: /SunOS/ },
{ s: "Linux", r: /(Linux|X11)/ },
{ s: "iOS", r: /(iPhone|iPad|iPod)/ },
{ s: "Mac OS X", r: /Mac OS X/ },
{ s: "Mac OS", r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },
{ s: "QNX", r: /QNX/ },
{ s: "UNIX", r: /UNIX/ },
{ s: "BeOS", r: /BeOS/ },
{ s: "OS/2", r: /OS\/2/ },
{ s: "Search Bot", r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/ },
];
for (var id in clientStrings) {
var cs = clientStrings[id];
if (cs.r.test(nAgt)) {
os = cs.s;
break;
}
}
var osVersion = unknown;
if (/Windows/.test(os)) {
const _osv = /Windows (.*)/.exec(os) || [];
osVersion = _osv[1] || "unknown";
os = "Windows";
}
switch (os) {
case "Mac OS X":
const _osvx = /Mac OS X (10[\.\_\d]+)/.exec(nAgt);
osVersion = (_osvx === null || _osvx === void 0 ? void 0 : _osvx[1]) || "unknown";
break;
case "Android":
osVersion = ((_a = /Android ([\.\_\d]+)/.exec(nAgt)) === null || _a === void 0 ? void 0 : _a[1]) || "unknown";
break;
case "iOS":
const _osVersion = /OS (\d+)_(\d+)_?(\d+)?/.exec(nVer) || [0, 0, 0];
osVersion = (_osVersion[1] || 0) + "." + (_osVersion[2] || 0) + "." + (_osVersion[3] || 0);
break;
}
const _deviceInfo = {
screen: screenSize,
browser: browser,
browserVersion: version,
browserMajorVersion: majorVersion,
mobile: mobile,
os: os,
osVersion: osVersion,
cookies: cookieEnabled,
};
deviceInfo = _deviceInfo;
}
return deviceInfo;
};
exports.checkOS = checkOS;