9
9
10
10
const { UAParser } = require ( '../main/ua-parser' ) ;
11
11
const { CPU , OS , Engine } = require ( '../enums/ua-parser-enums' ) ;
12
+ const { Bots } = require ( '../extensions/ua-parser-extensions' ) ;
12
13
const { isFromEU } = require ( 'detect-europe-js' ) ;
13
14
const { isFrozenUA } = require ( 'ua-is-frozen' ) ;
14
15
const { isStandalonePWA } = require ( 'is-standalone-pwa' ) ;
15
16
17
+ const toResult = ( value , head , ext ) => typeof value === 'string' ? UAParser ( value , head , ext ) : value ;
18
+
16
19
const getDeviceVendor = ( model ) => UAParser ( `Mozilla/5.0 (Linux; Android 10; ${ model } ) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36` ) . device . vendor ;
17
20
18
- const isAppleSilicon = ( res ) => {
21
+ const isAppleSilicon = ( resultOrUA ) => {
22
+ const res = toResult ( resultOrUA ) ;
19
23
if ( res . os . is ( OS . MACOS ) ) {
20
24
if ( res . cpu . is ( CPU . ARM ) ) {
21
25
return true ;
22
26
}
23
- if ( typeof window !== 'undefined' ) {
27
+ if ( typeof resultOrUA !== 'string' && typeof window !== 'undefined' ) {
24
28
try {
25
29
const canvas = document . createElement ( 'canvas' ) ;
26
30
const webgl = canvas . getContext ( 'webgl2' ) || canvas . getContext ( 'webgl' ) || canvas . getContext ( 'experimental-webgl' ) ;
@@ -37,9 +41,14 @@ const isAppleSilicon = (res) => {
37
41
return false ;
38
42
}
39
43
40
- const isBot = ( res ) => [ 'cli' , 'crawler' , 'fetcher' , 'library' ] . includes ( res . browser . type ) ;
44
+ const isBot = ( resultOrUA ) => [
45
+ 'cli' ,
46
+ 'crawler' ,
47
+ 'fetcher' ,
48
+ 'library'
49
+ ] . includes ( toResult ( resultOrUA , Bots ) . browser . type ) ;
41
50
42
- const isChromeFamily = ( res ) => res . engine . is ( Engine . BLINK ) ;
51
+ const isChromeFamily = ( resultOrUA ) => toResult ( resultOrUA ) . engine . is ( Engine . BLINK ) ;
43
52
44
53
const isElectron = ( ) => ! ! ( process ?. versions ?. hasOwnProperty ( 'electron' ) || // node.js
45
54
/ e l e c t r o n \/ / i. test ( navigator ?. userAgent ) ) ; // browser
0 commit comments