5
5
MIT License */
6
6
//////////////////////////////////////////////
7
7
8
- const UAParser = require ( "./ua-parser" )
8
+ const UAParser = require ( 'ua-parser-js' ) ;
9
+ const MODEL = 'model' ;
10
+ const NAME = 'name' ;
11
+ const TYPE = 'type' ;
12
+ const VENDOR = 'vendor' ;
13
+ const VERSION = 'version' ;
14
+ const MOBILE = 'mobile' ;
15
+ const TABLET = 'tablet' ;
9
16
10
17
const Bots = Object . freeze ( {
11
18
browser : [
12
- [ / ( (?: g o o g l e | b i n g | m s n | f a c e b o o k ) b o t (?: \- [ i m a g e v d o ] { 5 } ) ? | b i n g p r e v i e w ) \/ ( [ \w \. ] + ) / i] , [ UAParser . BROWSER . NAME , UAParser . BROWSER . VERSION , [ 'type' , 'bot' ] ]
19
+ // Googlebot / BingBot / MSNBot / FacebookBot
20
+ [ / ( (?: g o o g l e | b i n g | m s n | f a c e b o o k ) b o t (?: \- [ i m a g e v d o ] { 5 } ) ? | b i n g p r e v i e w ) \/ ( [ \w \. ] + ) / i] , [ NAME , VERSION , [ TYPE , 'bot' ] ]
21
+ ]
22
+ } ) ;
23
+
24
+ const ExtraDevices = Object . freeze ( {
25
+ device : [
26
+ [
27
+ / ( n o o k ) [ \w ] + b u i l d \/ ( \w + ) / i, // Nook
28
+ / ( d e l l ) ( s t r e a [ k p r \d ] * [ \d k o ] ) / i, // Dell Streak
29
+ / ( l e [ - ] + p a n ) [ - ] + ( \w { 1 , 9 } ) b u i / i, // Le Pan Tablets
30
+ / ( t r i n i t y ) [ - ] * ( t \d { 3 } ) b u i / i, // Trinity Tablets
31
+ / ( g i g a s e t ) [ - ] + ( q \w { 1 , 9 } ) b u i / i, // Gigaset Tablets
32
+ / ( v o d a f o n e ) ( [ \w ] + ) (?: \) | b u i ) / i // Vodafone
33
+ ] , [ VENDOR , MODEL , [ TYPE , TABLET ] ] , [
34
+
35
+ / ( u 3 0 4 a a ) / i // AT&T
36
+ ] , [ MODEL , [ VENDOR , 'AT&T' ] , [ TYPE , MOBILE ] ] , [
37
+
38
+ / \b s i e - ( \w * ) / i // Siemens
39
+ ] , [ MODEL , [ VENDOR , 'Siemens' ] , [ TYPE , MOBILE ] ] , [
40
+
41
+ / \b ( r c t \w + ) b / i // RCA Tablets
42
+ ] , [ MODEL , [ VENDOR , 'RCA' ] , [ TYPE , TABLET ] ] , [
43
+
44
+ / \b ( v e n u e [ \d ] { 2 , 7 } ) b / i // Dell Venue Tablets
45
+ ] , [ MODEL , [ VENDOR , 'Dell' ] , [ TYPE , TABLET ] ] , [
46
+
47
+ / \b ( q (?: m v | t a ) \w + ) b / i // Verizon Tablet
48
+ ] , [ MODEL , [ VENDOR , 'Verizon' ] , [ TYPE , TABLET ] ] , [
49
+
50
+ / \b (?: b a r n e s [ & ] + n o b l e | b n [ r t ] ) ( [ \w \+ ] * ) b / i // Barnes & Noble Tablet
51
+ ] , [ MODEL , [ VENDOR , 'Barnes & Noble' ] , [ TYPE , TABLET ] ] , [
52
+
53
+ / \b ( t m \d { 3 } \w + ) b / i
54
+ ] , [ MODEL , [ VENDOR , 'NuVision' ] , [ TYPE , TABLET ] ] , [
55
+
56
+ / \b ( k 8 8 ) b / i // ZTE K Series Tablet
57
+ ] , [ MODEL , [ VENDOR , 'ZTE' ] , [ TYPE , TABLET ] ] , [
58
+
59
+ / \b ( n x \d { 3 } j ) b / i // ZTE Nubia
60
+ ] , [ MODEL , [ VENDOR , 'ZTE' ] , [ TYPE , MOBILE ] ] , [
61
+
62
+ / \b ( g e n \d { 3 } ) b .+ 4 9 h / i // Swiss GEN Mobile
63
+ ] , [ MODEL , [ VENDOR , 'Swiss' ] , [ TYPE , MOBILE ] ] , [
64
+
65
+ / \b ( z u r \d { 3 } ) b / i // Swiss ZUR Tablet
66
+ ] , [ MODEL , [ VENDOR , 'Swiss' ] , [ TYPE , TABLET ] ] , [
67
+
68
+ / \b ( ( z e k i ) ? t b .* \b ) b / i // Zeki Tablets
69
+ ] , [ MODEL , [ VENDOR , 'Zeki' ] , [ TYPE , TABLET ] ] , [
70
+
71
+ / \b ( [ y r ] \d { 2 } ) b / i,
72
+ / \b (?: d r a g o n [ - ] + t o u c h | d t ) ( \w { 5 } ) b / i // Dragon Touch Tablet
73
+ ] , [ MODEL , [ VENDOR , 'Dragon Touch' ] , [ TYPE , TABLET ] ] , [
74
+
75
+ / \b ( n s - ? \w { 0 , 9 } ) b / i // Insignia Tablets
76
+ ] , [ MODEL , [ VENDOR , 'Insignia' ] , [ TYPE , TABLET ] ] , [
77
+
78
+ / \b ( ( n x a | n e x t ) - ? \w { 0 , 9 } ) b / i // NextBook Tablets
79
+ ] , [ MODEL , [ VENDOR , 'NextBook' ] , [ TYPE , TABLET ] ] , [
80
+
81
+ / \b ( x t r e m e \_ ) ? ( v ( 1 [ 0 4 5 ] | 2 [ 0 1 5 ] | [ 3 4 6 9 ] 0 | 7 [ 0 5 ] ) ) b / i // Voice Xtreme Phones
82
+ ] , [ [ VENDOR , 'Voice' ] , MODEL , [ TYPE , MOBILE ] ] , [
83
+
84
+ / \b ( l v t e l \- ) ? ( v 1 [ 1 2 ] ) b / i // LvTel Phones
85
+ ] , [ [ VENDOR , 'LvTel' ] , MODEL , [ TYPE , MOBILE ] ] , [
86
+
87
+ / \b ( p h - 1 ) / i // Essential PH-1
88
+ ] , [ MODEL , [ VENDOR , 'Essential' ] , [ TYPE , MOBILE ] ] , [
89
+
90
+ / \b ( v ( 1 0 0 m d | 7 0 0 n a | 7 0 1 1 | 9 1 7 g ) .* \b ) b / i // Envizen Tablets
91
+ ] , [ MODEL , [ VENDOR , 'Envizen' ] , [ TYPE , TABLET ] ] , [
92
+
93
+ / \b ( t r i o [ - \w \. ] + ) b / i // MachSpeed Tablets
94
+ ] , [ MODEL , [ VENDOR , 'MachSpeed' ] , [ TYPE , TABLET ] ] , [
95
+
96
+ / \b t u _ ( 1 4 9 1 ) b / i // Rotor Tablets
97
+ ] , [ MODEL , [ VENDOR , 'Rotor' ] , [ TYPE , TABLET ]
98
+ ]
13
99
]
14
100
} ) ;
15
101
16
102
const Emails = Object . freeze ( {
17
103
browser : [
18
- [ / ( m i c r o s o f t o u t l o o k | t h u n d e r b i r d ) [ \s \/ ] ( [ \w \. ] + ) / i] , [ UAParser . BROWSER . NAME , UAParser . BROWSER . VERSION , [ 'type' , 'email' ] ]
104
+ // Microsoft Outlook / Thunderbird
105
+ [ / ( m i c r o s o f t o u t l o o k | t h u n d e r b i r d ) [ \s \/ ] ( [ \w \. ] + ) / i] , [ NAME , VERSION , [ TYPE , 'email' ] ]
19
106
]
20
107
} ) ;
21
108
22
109
const Tools = Object . freeze ( {
23
110
browser : [
24
- [ / ( w g e t | c u r l | l y n x ) \/ ( [ \w \. ] + ) / i] , [ UAParser . BROWSER . NAME , UAParser . BROWSER . VERSION , [ 'type' , 'tool' ] ]
111
+ // wget / curl / lynx
112
+ [ / ( w g e t | c u r l | l y n x ) \/ ( [ \w \. ] + ) / i] , [ NAME , VERSION , [ TYPE , 'tool' ] ]
25
113
]
26
114
} ) ;
27
115
28
116
module . exports = {
29
117
Bots,
118
+ ExtraDevices,
30
119
Emails,
31
120
Tools
32
121
}
0 commit comments