this repo has no description
at main 105 lines 4.0 kB view raw
1function _define_property(obj, key, value) { 2 if (key in obj) { 3 Object.defineProperty(obj, key, { 4 value: value, 5 enumerable: true, 6 configurable: true, 7 writable: true 8 }); 9 } else { 10 obj[key] = value; 11 } 12 return obj; 13} 14function _object_spread(target) { 15 for(var i = 1; i < arguments.length; i++){ 16 var source = arguments[i] != null ? arguments[i] : {}; 17 var ownKeys = Object.keys(source); 18 if (typeof Object.getOwnPropertySymbols === "function") { 19 ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) { 20 return Object.getOwnPropertyDescriptor(source, sym).enumerable; 21 })); 22 } 23 ownKeys.forEach(function(key) { 24 _define_property(target, key, source[key]); 25 }); 26 } 27 return target; 28} 29function ownKeys(object, enumerableOnly) { 30 var keys = Object.keys(object); 31 if (Object.getOwnPropertySymbols) { 32 var symbols = Object.getOwnPropertySymbols(object); 33 if (enumerableOnly) { 34 symbols = symbols.filter(function(sym) { 35 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 36 }); 37 } 38 keys.push.apply(keys, symbols); 39 } 40 return keys; 41} 42function _object_spread_props(target, source) { 43 source = source != null ? source : {}; 44 if (Object.getOwnPropertyDescriptors) { 45 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 46 } else { 47 ownKeys(Object(source)).forEach(function(key) { 48 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 49 }); 50 } 51 return target; 52} 53function flagsExtension(descriptor) { 54 let osName = descriptor.os.name; 55 const isAndroid = descriptor.os.name === 'android'; 56 let isMacOS = descriptor.os.name === 'macos'; 57 let isIOS = descriptor.os.name === 'ios'; 58 var _descriptor_navigator_maxTouchPoints; 59 /** 60 * Newer iPads will identify as macOS in the UserAgent string but can still be differentiated by 61 * inspecting `maxTouchPoints`. The macOS and iOS values need to be reset when detected. 62 */ const isIPadOS = osName === 'ipados' || isIOS && /ipad/i.test(descriptor.ua) || isMacOS && ((_descriptor_navigator_maxTouchPoints = descriptor.navigator.maxTouchPoints) !== null && _descriptor_navigator_maxTouchPoints !== void 0 ? _descriptor_navigator_maxTouchPoints : 0) >= 2; 63 if (isIPadOS) { 64 osName = 'ipados'; 65 isIOS = false; 66 isMacOS = false; 67 } 68 const browser = _object_spread_props(_object_spread({}, descriptor.browser), { 69 isUnknown: descriptor.browser.name === 'unknown', 70 isSafari: descriptor.browser.name === 'safari', 71 isChrome: descriptor.browser.name === 'chrome', 72 isFirefox: descriptor.browser.name === 'firefox', 73 isEdge: descriptor.browser.name === 'edge', 74 isWebView: descriptor.browser.name === 'webview', 75 isOther: descriptor.browser.name === 'other', 76 isMobile: descriptor.browser.mobile || isIOS || isIPadOS || isAndroid || false 77 }); 78 const engine = _object_spread_props(_object_spread({}, descriptor.engine), { 79 isUnknown: descriptor.engine.name === 'unknown', 80 isWebKit: descriptor.engine.name === 'webkit', 81 isBlink: descriptor.engine.name === 'blink', 82 isGecko: descriptor.engine.name === 'gecko' 83 }); 84 const os = _object_spread_props(_object_spread({}, descriptor.os), { 85 name: osName, 86 isUnknown: descriptor.os.name === 'unknown', 87 isLinux: descriptor.os.name === 'linux', 88 isWindows: descriptor.os.name === 'windows', 89 isMacOS, 90 isAndroid, 91 isIOS, 92 isIPadOS 93 }); 94 return _object_spread_props(_object_spread({}, descriptor), { 95 extensions: [ 96 ...descriptor.extensions, 97 'flags' 98 ], 99 browser, 100 os, 101 engine 102 }); 103} 104 105export { flagsExtension };