Total Complexity | 6 |
Complexity/F | 3 |
Lines of Code | 37 |
Function Count | 2 |
Duplicated Lines | 0 |
Ratio | 0 % |
Coverage | 91.67% |
Changes | 0 |
1 | import bowser from 'bowser'; |
||
2 | import { hasValue } from '../utils'; |
||
3 | |||
4 | 1 | const DEFAULT = 'Others'; |
|
5 | 1 | const BROWSERS_WHITELIST = [ |
|
6 | 'Android Browser', |
||
7 | 'Chrome', |
||
8 | 'Chromium', |
||
9 | 'Firefox', |
||
10 | 'Internet Explorer', |
||
11 | 'Microsoft Edge', |
||
12 | 'Opera', |
||
13 | 'Safari', |
||
14 | 'Samsung Internet for Android', |
||
15 | 'Vivaldi', |
||
16 | 'WeChat', |
||
17 | ]; |
||
18 | |||
19 | 1 | export const parseUserAgent = (userAgent) => { |
|
20 | 10 | if (!hasValue(userAgent)) { |
|
21 | return { browser: DEFAULT, os: DEFAULT }; |
||
22 | } |
||
23 | |||
24 | 10 | const { browser: { name: browser }, os: { name: os } } = bowser.parse(userAgent); |
|
25 | |||
26 | 10 | return { os: os || DEFAULT, browser: browser && BROWSERS_WHITELIST.includes(browser) ? browser : DEFAULT }; |
|
27 | }; |
||
28 | |||
29 | 1 | export const extractDomain = (url) => { |
|
30 | 10 | if (!hasValue(url)) { |
|
31 | 4 | return 'Direct'; |
|
32 | } |
||
33 | |||
34 | 6 | const domain = url.includes('://') ? url.split('/')[2] : url.split('/')[0]; |
|
35 | |||
36 | 6 | return domain.split(':')[0]; |
|
37 | }; |
||
38 |