this repo has no description
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 };