UNPKG

diginext-utils

Version:
220 lines (219 loc) 8.65 kB
"use strict"; 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;