From 4b29813492397a6f0cc32faa0ab1b42c6ce36673 Mon Sep 17 00:00:00 2001 From: Michael Laktionov Date: Mon, 15 Jun 2020 11:48:42 +0300 Subject: [PATCH] Add Edge Chromium. Update ios Types, add edge legacy type, add os types --- README.md | 11 +- dist/index.js | 355 +++++++++++++++++++++++++++++++---------------- index.d.ts | 9 ++ src/constants.js | 7 +- src/index.js | 156 +++++++++------------ src/utils.js | 107 ++++++++++++++ 6 files changed, 429 insertions(+), 216 deletions(-) create mode 100644 src/utils.js diff --git a/README.md b/README.md index 61dd692..90925b7 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ For react example, you can look into separated package [react-device-detect](htt | isSafari | bool | returns true if browser is `Safari` | | isOpera | bool | returns true if browser is `Opera` | | isIE | bool | returns true if browser is `Internet Explorer` | -| isEdge | bool | returns true if browser is `Edge` | +| isEdge | bool | returns true if browser is `Edge` or `Edge Chromium` | | isYandex | bool | returns true if browser is `Yandex` | | isChromium | bool | returns true if browser is `Chromium` | | isMobileSafari | bool | returns true if browser is `Mobile Safari` | @@ -78,6 +78,15 @@ For react example, you can look into separated package [react-device-detect](htt | engineVersion | string | returns engine version | | getUA | string | returns user agent | | deviceType | string | returns device type (e.g `mobile` or `tablet`) | +| isIOS13 | boolean | returns true/false if device is running on iOS13 | +| isIPhone13 | boolean | returns true/false if device is iPhone and running on iOS13 | +| isIPad13 | boolean | returns true/false if device is iPad and running on iOS13 | +| isIPod13 | boolean | returns true/false if device is iPod and running on iOS13 | +| isElectron | boolean | returns true/false if running on `Electron` | +| isEdgeChromium | boolean | returns true/false if browser is `Edge Chromium` | +| isLegacyEdge | boolean | returns true if browser is `Edge` | +| isWindows | boolean | returns true/false if os is `Windows` | +| isMacOs | boolean | returns true/false if os is `Mac OS` | | deviceDetect | function | return data object which includes all data about device (e.g version, engine, os etc.) | ## License diff --git a/dist/index.js b/dist/index.js index 245b9d6..b8ffd5c 100644 --- a/dist/index.js +++ b/dist/index.js @@ -61,7 +61,7 @@ module.exports = /******/ __webpack_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 0); +/******/ return __webpack_require__(__webpack_require__.s = 1); /******/ }) /************************************************************************/ /******/ ([ @@ -71,15 +71,71 @@ module.exports = "use strict"; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; +var DEVICE_TYPES = { + MOBILE: "mobile", + TABLET: "tablet", + SMART_TV: "smarttv", + CONSOLE: "console", + WEARABLE: "wearable", + BROWSER: undefined +}; + +var BROWSER_TYPES = { + CHROME: "Chrome", + FIREFOX: "Firefox", + OPERA: "Opera", + YANDEX: "Yandex", + SAFARI: "Safari", + INTERNET_EXPLORER: "Internet Explorer", + EDGE: "Edge", + CHROMIUM: "Chromium", + IE: "IE", + MOBILE_SAFARI: "Mobile Safari", + EDGE_CHROMIUM: "Edge Chromium" +}; + +var OS_TYPES = { + IOS: "iOS", + ANDROID: "Android", + WINDOWS_PHONE: "Windows Phone", + WINDOWS: "Windows", + MAC_OS: "Mac OS" +}; + +var defaultData = { + isMobile: false, + isTablet: false, + isBrowser: false, + isSmartTV: false, + isConsole: false, + isWearable: false +}; -var UAParser = __webpack_require__(1); +module.exports = { BROWSER_TYPES: BROWSER_TYPES, DEVICE_TYPES: DEVICE_TYPES, OS_TYPES: OS_TYPES, defaultData: defaultData }; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var UAParser = __webpack_require__(2); -var _require = __webpack_require__(3), +var _require = __webpack_require__(0), BROWSER_TYPES = _require.BROWSER_TYPES, OS_TYPES = _require.OS_TYPES, - DEVICE_TYPES = _require.DEVICE_TYPES, - defaultData = _require.defaultData; + DEVICE_TYPES = _require.DEVICE_TYPES; + +var _require2 = __webpack_require__(4), + checkType = _require2.checkType, + broPayload = _require2.broPayload, + mobilePayload = _require2.mobilePayload, + wearPayload = _require2.wearPayload, + consolePayload = _require2.consolePayload, + stvPayload = _require2.stvPayload, + getNavigatorInstance = _require2.getNavigatorInstance, + isIOS13Check = _require2.isIOS13Check; var UA = new UAParser(); @@ -107,84 +163,10 @@ var MOBILE = DEVICE_TYPES.MOBILE, CONSOLE = DEVICE_TYPES.CONSOLE; var ANDROID = OS_TYPES.ANDROID, WINDOWS_PHONE = OS_TYPES.WINDOWS_PHONE, - IOS = OS_TYPES.IOS; - + IOS = OS_TYPES.IOS, + WINDOWS = OS_TYPES.WINDOWS, + MAC_OS = OS_TYPES.MAC_OS; -var checkType = function checkType(type) { - switch (type) { - case MOBILE: - return { isMobile: true }; - case TABLET: - return { isTablet: true }; - case SMART_TV: - return { isSmartTV: true }; - case CONSOLE: - return { isConsole: true }; - case WEARABLE: - return { isWearable: true }; - case BROWSER: - return { isBrowser: true }; - default: - return defaultData; - } -}; - -var broPayload = function broPayload(isBrowser, browser, engine, os, ua) { - return { - isBrowser: isBrowser, - browserMajorVersion: browser.major, - browserFullVersion: browser.version, - browserName: browser.name, - engineName: engine.name || false, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -var mobilePayload = function mobilePayload(type, device, os, ua) { - return _extends({}, type, { - vendor: device.vendor, - model: device.model, - os: os.name, - osVersion: os.version, - ua: ua - }); -}; - -var stvPayload = function stvPayload(isSmartTV, engine, os, ua) { - return { - isSmartTV: isSmartTV, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -var consolePayload = function consolePayload(isConsole, engine, os, ua) { - return { - isConsole: isConsole, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -var wearPayload = function wearPayload(isWearable, engine, os, ua) { - return { - isWearable: isWearable, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; var isMobileType = function isMobileType() { return device.type === MOBILE; @@ -203,6 +185,14 @@ var isMobileAndTabletType = function isMobileAndTabletType() { } }; +var isEdgeChromiumType = function isEdgeChromiumType() { + if (os.name === OS_TYPES.WINDOWS && os.version === '10') { + return typeof ua === 'string' && ua.indexOf('Edg/') !== -1; + } + + return false; +}; + var isSmartTVType = function isSmartTVType() { return device.type === SMART_TV; }; @@ -218,6 +208,12 @@ var isConsoleType = function isConsoleType() { var isAndroidType = function isAndroidType() { return os.name === ANDROID; }; +var isWindowsType = function isWindowsType() { + return os.name === WINDOWS; +}; +var isMacOsType = function isMacOsType() { + return os.name === MAC_OS; +}; var isWinPhoneType = function isWinPhoneType() { return os.name === WINDOWS_PHONE; }; @@ -253,6 +249,28 @@ var isIEType = function isIEType() { return browser.name === INTERNET_EXPLORER || browser.name === IE; }; +var isElectronType = function isElectronType() { + var nav = getNavigatorInstance(); + var ua = nav && nav.userAgent.toLowerCase(); + + return typeof ua === 'string' ? /electron/.test(ua) : false; +}; + +var getIOS13 = function getIOS13() { + var nav = getNavigatorInstance(); + return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream; +}; + +var getIPad13 = function getIPad13() { + return isIOS13Check('iPad'); +}; +var getIphone13 = function getIphone13() { + return isIOS13Check('iPhone'); +}; +var getIPod13 = function getIPod13() { + return isIOS13Check('iPod'); +}; + var getBrowserFullVersion = function getBrowserFullVersion() { return browser.major; }; @@ -290,15 +308,15 @@ var getDeviceType = function getDeviceType() { var isSmartTV = isSmartTVType(); var isConsole = isConsoleType(); var isWearable = isWearableType(); -var isMobileSafari = isMobileSafariType(); +var isMobileSafari = isMobileSafariType() || getIPad13(); var isChromium = isChromiumType(); -var isMobile = isMobileAndTabletType(); +var isMobile = isMobileAndTabletType() || getIPad13(); var isMobileOnly = isMobileType(); -var isTablet = isTabletType(); +var isTablet = isTabletType() || getIPad13(); var isBrowser = isBrowserType(); var isAndroid = isAndroidType(); var isWinPhone = isWinPhoneType(); -var isIOS = isIOSType(); +var isIOS = isIOSType() || getIPad13(); var isChrome = isChromeType(); var isFirefox = isFirefoxType(); var isSafari = isSafariType(); @@ -314,9 +332,18 @@ var mobileModel = getMobileModel(); var engineName = getEngineName(); var engineVersion = getEngineVersion(); var getUA = getUseragent(); -var isEdge = isEdgeType(); +var isEdge = isEdgeType() || isEdgeChromiumType(); var isYandex = isYandexType(); var deviceType = getDeviceType(); +var isIOS13 = getIOS13(); +var isIPad13 = getIPad13(); +var isIPhone13 = getIphone13(); +var isIPod13 = getIPod13(); +var isElectron = isElectronType(); +var isEdgeChromium = isEdgeChromiumType(); +var isLegacyEdge = isEdgeType(); +var isWindows = isWindowsType(); +var isMacOs = isMacOsType(); var type = checkType(device.type); @@ -384,11 +411,20 @@ module.exports = { getUA: getUA, isEdge: isEdge, isYandex: isYandex, - deviceType: deviceType + deviceType: deviceType, + isIOS13: isIOS13, + isIPad13: isIPad13, + isIPhone13: isIPhone13, + isIPod13: isIPod13, + isElectron: isElectron, + isEdgeChromium: isEdgeChromium, + isLegacyEdge: isLegacyEdge, + isWindows: isWindows, + isMacOs: isMacOs }; /***/ }), -/* 1 */ +/* 2 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;/*! @@ -399,11 +435,11 @@ var __WEBPACK_AMD_DEFINE_RESULT__;/*! * Copyright © 2012-2016 Faisal Salman * Dual licensed under GPLv2 or MIT */ -(function(window,undefined){"use strict";var LIBVERSION="0.7.18",EMPTY="",UNKNOWN="?",FUNC_TYPE="function",UNDEF_TYPE="undefined",OBJ_TYPE="object",STR_TYPE="string",MAJOR="major",MODEL="model",NAME="name",TYPE="type",VENDOR="vendor",VERSION="version",ARCHITECTURE="architecture",CONSOLE="console",MOBILE="mobile",TABLET="tablet",SMARTTV="smarttv",WEARABLE="wearable",EMBEDDED="embedded";var util={extend:function(regexes,extensions){var margedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){margedRegexes[i]=extensions[i].concat(regexes[i])}else{margedRegexes[i]=regexes[i]}}return margedRegexes},has:function(str1,str2){if(typeof str1==="string"){return str2.toLowerCase().indexOf(str1.toLowerCase())!==-1}else{return false}},lowerize:function(str){return str.toLowerCase()},major:function(version){return typeof version===STR_TYPE?version.replace(/[^\d\.]/g,"").split(".")[0]:undefined},trim:function(str){return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}};var mapper={rgx:function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j0){if(q.length==2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length==3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length==4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},str:function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j 1 && !window.MSStream); +}; + +module.exports = { + checkType: checkType, + broPayload: broPayload, + mobilePayload: mobilePayload, + stvPayload: stvPayload, + consolePayload: consolePayload, + wearPayload: wearPayload, + getNavigatorInstance: getNavigatorInstance, + isIOS13Check: isIOS13Check +}; /***/ }) /******/ ]); \ No newline at end of file diff --git a/index.d.ts b/index.d.ts index 2f63ac6..2522c3c 100644 --- a/index.d.ts +++ b/index.d.ts @@ -18,6 +18,15 @@ declare module "mobile-device-detect" { export const isIE: boolean; export const isEdge: boolean; export const isYandex: boolean; + export const isIOS13: boolean; + export const isIPad13: boolean; + export const isIPhone13: boolean; + export const isIPod13: boolean; + export const isElectron: boolean; + export const isEdgeChromium: boolean; + export const isLegacyEdge: boolean; + export const isWindows: boolean; + export const isMacOs: boolean; export const osVersion: string; export const osName: string; export const fullBrowserVersion: string; diff --git a/src/constants.js b/src/constants.js index 8e08e25..b03b657 100644 --- a/src/constants.js +++ b/src/constants.js @@ -17,13 +17,16 @@ const BROWSER_TYPES = { EDGE: "Edge", CHROMIUM: "Chromium", IE: "IE", - MOBILE_SAFARI: "Mobile Safari" + MOBILE_SAFARI: "Mobile Safari", + EDGE_CHROMIUM: "Edge Chromium" }; const OS_TYPES = { IOS: "iOS", ANDROID: "Android", - WINDOWS_PHONE: "Windows Phone" + WINDOWS_PHONE: "Windows Phone", + WINDOWS: "Windows", + MAC_OS: "Mac OS" }; const defaultData = { diff --git a/src/index.js b/src/index.js index 75ef31d..d5f130e 100644 --- a/src/index.js +++ b/src/index.js @@ -1,10 +1,15 @@ const UAParser = require("../node_modules/ua-parser-js/dist/ua-parser.min"); +const { BROWSER_TYPES, OS_TYPES, DEVICE_TYPES } = require("./constants"); const { - BROWSER_TYPES, - OS_TYPES, - DEVICE_TYPES, - defaultData -} = require("./constants"); + checkType, + broPayload, + mobilePayload, + wearPayload, + consolePayload, + stvPayload, + getNavigatorInstance, + isIOS13Check +} = require("./utils") const UA = new UAParser(); @@ -27,84 +32,7 @@ const { MOBILE_SAFARI } = BROWSER_TYPES; const { MOBILE, TABLET, SMART_TV, BROWSER, WEARABLE, CONSOLE } = DEVICE_TYPES; -const { ANDROID, WINDOWS_PHONE, IOS } = OS_TYPES; - -const checkType = type => { - switch (type) { - case MOBILE: - return { isMobile: true }; - case TABLET: - return { isTablet: true }; - case SMART_TV: - return { isSmartTV: true }; - case CONSOLE: - return { isConsole: true }; - case WEARABLE: - return { isWearable: true }; - case BROWSER: - return { isBrowser: true }; - default: - return defaultData; - } -}; - -const broPayload = (isBrowser, browser, engine, os, ua) => { - return { - isBrowser, - browserMajorVersion: browser.major, - browserFullVersion: browser.version, - browserName: browser.name, - engineName: engine.name || false, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -const mobilePayload = (type, device, os, ua) => { - return { - ...type, - vendor: device.vendor, - model: device.model, - os: os.name, - osVersion: os.version, - ua: ua - }; -}; - -const stvPayload = (isSmartTV, engine, os, ua) => { - return { - isSmartTV, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -const consolePayload = (isConsole, engine, os, ua) => { - return { - isConsole, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; - -const wearPayload = (isWearable, engine, os, ua) => { - return { - isWearable, - engineName: engine.name, - engineVersion: engine.version, - osName: os.name, - osVersion: os.version, - userAgent: ua - }; -}; +const { ANDROID, WINDOWS_PHONE, IOS, WINDOWS, MAC_OS } = OS_TYPES; const isMobileType = () => device.type === MOBILE; const isTabletType = () => device.type === TABLET; @@ -119,11 +47,21 @@ const isMobileAndTabletType = () => { } }; +const isEdgeChromiumType = () => { + if (os.name === OS_TYPES.WINDOWS && os.version === '10') { + return typeof ua === 'string' && ua.indexOf('Edg/') !== -1; + } + + return false; +}; + const isSmartTVType = () => device.type === SMART_TV; const isBrowserType = () => device.type === BROWSER; const isWearableType = () => device.type === WEARABLE; const isConsoleType = () => device.type === CONSOLE; const isAndroidType = () => os.name === ANDROID; +const isWindowsType = () => os.name === WINDOWS; +const isMacOsType = () => os.name === MAC_OS; const isWinPhoneType = () => os.name === WINDOWS_PHONE; const isIOSType = () => os.name === IOS; const isChromeType = () => browser.name === CHROME; @@ -139,6 +77,26 @@ const isOperaType = () => browser.name === OPERA; const isIEType = () => browser.name === INTERNET_EXPLORER || browser.name === IE; +const isElectronType = () => { + const nav = getNavigatorInstance(); + const ua = nav && nav.userAgent.toLowerCase(); + + return typeof ua === 'string' ? /electron/.test(ua) : false; +}; + +const getIOS13 = () => { + const nav = getNavigatorInstance(); + return ( + nav && + (/iPad|iPhone|iPod/.test(nav.platform) || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1)) && + !window.MSStream + ); +}; + +const getIPad13 = () => isIOS13Check('iPad'); +const getIphone13 = () => isIOS13Check('iPhone'); +const getIPod13 = () => isIOS13Check('iPod'); + const getBrowserFullVersion = () => browser.major; const getBrowserVersion = () => browser.version; const getOsVersion = () => (os.version ? os.version : "none"); @@ -154,15 +112,15 @@ const getDeviceType = () => device.type; const isSmartTV = isSmartTVType(); const isConsole = isConsoleType(); const isWearable = isWearableType(); -const isMobileSafari = isMobileSafariType(); +const isMobileSafari = isMobileSafariType() || getIPad13(); const isChromium = isChromiumType(); -const isMobile = isMobileAndTabletType(); +const isMobile = isMobileAndTabletType() || getIPad13(); const isMobileOnly = isMobileType(); -const isTablet = isTabletType(); +const isTablet = isTabletType() || getIPad13(); const isBrowser = isBrowserType(); const isAndroid = isAndroidType(); const isWinPhone = isWinPhoneType(); -const isIOS = isIOSType(); +const isIOS = isIOSType() || getIPad13(); const isChrome = isChromeType(); const isFirefox = isFirefoxType(); const isSafari = isSafariType(); @@ -178,9 +136,18 @@ const mobileModel = getMobileModel(); const engineName = getEngineName(); const engineVersion = getEngineVersion(); const getUA = getUseragent(); -const isEdge = isEdgeType(); +const isEdge = isEdgeType() || isEdgeChromiumType(); const isYandex = isYandexType(); -const deviceType = getDeviceType() +const deviceType = getDeviceType(); +const isIOS13 = getIOS13(); +const isIPad13 = getIPad13(); +const isIPhone13 = getIphone13(); +const isIPod13 = getIPod13(); +const isElectron = isElectronType(); +const isEdgeChromium = isEdgeChromiumType(); +const isLegacyEdge = isEdgeType(); +const isWindows = isWindowsType(); +const isMacOs = isMacOsType(); const type = checkType(device.type); @@ -249,5 +216,14 @@ module.exports = { getUA, isEdge, isYandex, - deviceType + deviceType, + isIOS13, + isIPad13, + isIPhone13, + isIPod13, + isElectron, + isEdgeChromium, + isLegacyEdge, + isWindows, + isMacOs }; diff --git a/src/utils.js b/src/utils.js new file mode 100644 index 0000000..d504281 --- /dev/null +++ b/src/utils.js @@ -0,0 +1,107 @@ +const { DEVICE_TYPES, defaultData } = require("./constants"); + +const checkType = type => { + switch (type) { + case DEVICE_TYPES.MOBILE: + return { isMobile: true }; + case DEVICE_TYPES.TABLET: + return { isTablet: true }; + case DEVICE_TYPES.SMART_TV: + return { isSmartTV: true }; + case DEVICE_TYPES.CONSOLE: + return { isConsole: true }; + case DEVICE_TYPES.WEARABLE: + return { isWearable: true }; + case DEVICE_TYPES.BROWSER: + return { isBrowser: true }; + default: + return defaultData; + } +}; + +const broPayload = (isBrowser, browser, engine, os, ua) => { + return { + isBrowser, + browserMajorVersion: browser.major, + browserFullVersion: browser.version, + browserName: browser.name, + engineName: engine.name || false, + engineVersion: engine.version, + osName: os.name, + osVersion: os.version, + userAgent: ua + }; +}; + +const mobilePayload = (type, device, os, ua) => { + return { + ...type, + vendor: device.vendor, + model: device.model, + os: os.name, + osVersion: os.version, + ua: ua + }; +}; + +const stvPayload = (isSmartTV, engine, os, ua) => { + return { + isSmartTV, + engineName: engine.name, + engineVersion: engine.version, + osName: os.name, + osVersion: os.version, + userAgent: ua + }; +}; + +const consolePayload = (isConsole, engine, os, ua) => { + return { + isConsole, + engineName: engine.name, + engineVersion: engine.version, + osName: os.name, + osVersion: os.version, + userAgent: ua + }; +}; + +const wearPayload = (isWearable, engine, os, ua) => { + return { + isWearable, + engineName: engine.name, + engineVersion: engine.version, + osName: os.name, + osVersion: os.version, + userAgent: ua + }; +}; + + +export const getNavigatorInstance = () => { + if (typeof window !== 'undefined') { + if (window.navigator || navigator) { + return window.navigator || navigator; + } + } + + return false; +}; + +export const isIOS13Check = type => { + const nav = getNavigatorInstance(); + return ( + nav && nav.platform && (nav.platform.indexOf(type) !== -1 || (nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream)) + ); +}; + +module.exports = { + checkType, + broPayload, + mobilePayload, + stvPayload, + consolePayload, + wearPayload, + getNavigatorInstance, + isIOS13Check, +}