nyg-jam3
Version:
Jam3 project scaffold generator based on nyg
60 lines (49 loc) • 1.61 kB
JavaScript
import { browser, os, bots } from '@jam3/detect';
import deviceMatrix from './device-matrix.json';
/**
* Returns if the current browser is supported by the web app
* The algorithm is inclusive, so we enumerate everything we don't support, after that everything is supported
*
* @returns {Boolean} supported
*/
function isSupported() {
const userBrowser = browser.getName().toLowerCase();
const userBrowserVersion = parseFloat(browser.getVersion());
const userOS = os ? os.getName().toLowerCase() : 'unknown';
const userOSVersion = os.getVersion() === 'Unknown' ? Number.MAX_SAFE_INTEGER : parseFloat(os.getVersion());
if (bots.isBot()) {
return true;
}
const supportedOsVersion = deviceMatrix[userOS];
const supportedBrowserVersion = deviceMatrix[userBrowser];
const supportedVersion = supportedBrowserVersion || supportedOsVersion;
if (supportedVersion) {
if (supportedOsVersion !== undefined) {
if (userOSVersion < supportedOsVersion) {
return false;
}
}
if (supportedBrowserVersion !== undefined) {
/* Special contrains here */
if (userBrowserVersion < supportedBrowserVersion) {
return false;
}
}
}
return true;
}
/**
* Print current browser information
*
* @returns {String} Browser|Browser Version|OS|OS Version|UA
*/
function getBrowserInformation() {
return `
browser: ${browser.getName()},
browser version: ${browser.getVersion()},
os: ${os.getName()},
os version: ${os.getVersion()},
ua: ${navigator.userAgent}
`;
}
export { isSupported, getBrowserInformation };