ua-parser-js 2.0.0-alpha.2 → 2.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,248 @@
1
+ ///////////////////////////////////////////////
2
+ /* Extensions for UAParser.js v2.0.0-beta.1
3
+ https://github.com/faisalman/ua-parser-js
4
+ Author: Faisal Salman <f@faisalman.com>
5
+ AGPLv3 License */
6
+ //////////////////////////////////////////////
7
+
8
+ /*jshint esversion: 6 */
9
+
10
+ const MODEL = 'model';
11
+ const NAME = 'name';
12
+ const TYPE = 'type';
13
+ const VENDOR = 'vendor';
14
+ const VERSION = 'version';
15
+ const MOBILE = 'mobile';
16
+ const TABLET = 'tablet';
17
+
18
+ const Apps = Object.freeze({
19
+ browser : [
20
+ [/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'app']]
21
+ ]
22
+ });
23
+
24
+ const Bots = Object.freeze({
25
+ browser : [
26
+ // Googlebot / BingBot / MSNBot / FacebookBot
27
+ [/((?:google|bing|msn|facebook)bot(?:[\-imagevdo]{0,6})|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
28
+
29
+ // GPTBot - https://platform.openai.com/docs/gptbot
30
+ [/(gptbot)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
31
+
32
+ // Slackbot - https://api.slack.com/robots
33
+ [/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']]
34
+ ]
35
+ });
36
+
37
+ const CLIs = Object.freeze({
38
+ browser : [
39
+ // wget / curl / lynx
40
+ [/(wget|curl|lynx)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'cli']]
41
+ ]
42
+ });
43
+
44
+ const ExtraDevices = Object.freeze({
45
+ device : [[
46
+ /(nook)[\w ]+build\/(\w+)/i, // Nook
47
+ /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
48
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
49
+ /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
50
+ /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
51
+ /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
52
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
53
+
54
+ /(u304aa)/i // AT&T
55
+ ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
56
+
57
+ /\bsie-(\w*)/i // Siemens
58
+ ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
59
+
60
+ /\b(rct\w+) b/i // RCA Tablets
61
+ ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
62
+
63
+ /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
64
+ ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
65
+
66
+ /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
67
+ ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
68
+
69
+ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
70
+ ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
71
+
72
+ /\b(tm\d{3}\w+) b/i
73
+ ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
74
+
75
+ /\b(k88) b/i // ZTE K Series Tablet
76
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
77
+
78
+ /\b(nx\d{3}j) b/i // ZTE Nubia
79
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
80
+
81
+ /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
82
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
83
+
84
+ /\b(zur\d{3}) b/i // Swiss ZUR Tablet
85
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
86
+
87
+ /\b((zeki)?tb.*\b) b/i // Zeki Tablets
88
+ ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
89
+
90
+ /\b([yr]\d{2}) b/i,
91
+ /\b(?:dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
92
+ ], [MODEL, [VENDOR, 'Dragon Touch'], [TYPE, TABLET]], [
93
+
94
+ /\b(ns-?\w{0,9}) b/i // Insignia Tablets
95
+ ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
96
+
97
+ /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
98
+ ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
99
+
100
+ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
101
+ ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
102
+
103
+ /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
104
+ ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
105
+
106
+ /\b(ph-1) /i // Essential PH-1
107
+ ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
108
+
109
+ /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
110
+ ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
111
+
112
+ /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
113
+ ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
114
+
115
+ /\btu_(1491) b/i // Rotor Tablets
116
+ ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]]
117
+ ]
118
+ });
119
+
120
+ const Emails = Object.freeze({
121
+ browser : [
122
+ // Microsoft Outlook / Thunderbird
123
+ [/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [NAME, VERSION, [TYPE, 'email']]
124
+ ]
125
+ });
126
+
127
+ const MediaPlayers = Object.freeze({
128
+ browser : [[
129
+
130
+ /(apple(?:coremedia|))\/([\w\._]+)/i, // Generic Apple CoreMedia
131
+ /(coremedia) v([\w\._]+)/i
132
+ ], [NAME, VERSION], [
133
+
134
+ /(aqualung|lyssna|bsplayer)\/([\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
135
+ ], [NAME, VERSION], [
136
+
137
+ /(ares|ossproxy)\s([\w\.-]+)/i // Ares/OSSProxy
138
+ ], [NAME, VERSION], [
139
+
140
+ /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/([\w\.-]+)/i,
141
+ // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
142
+ // NSPlayer/PSP-InternetRadioPlayer/Videos
143
+ /(clementine|music player daemon)\s([\w\.-]+)/i, // Clementine/MPD
144
+ /(lg player|nexplayer)\s([\d\.]+)/i,
145
+ /player\/(nexplayer|lg player)\s([\w\.-]+)/i // NexPlayer/LG Player
146
+ ], [NAME, VERSION], [
147
+ /(nexplayer)\s([\w\.-]+)/i // Nexplayer
148
+ ], [NAME, VERSION], [
149
+
150
+ /(flrp)\/([\w\.-]+)/i // Flip Player
151
+ ], [[NAME, 'Flip Player'], VERSION], [
152
+
153
+ /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
154
+ // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
155
+ ], [NAME], [
156
+
157
+ /(gstreamer) souphttpsrc.+libsoup\/([\w\.-]+)/i
158
+ // Gstreamer
159
+ ], [NAME, VERSION], [
160
+
161
+ /(htc streaming player)\s[\w_]+\s\/\s([\d\.]+)/i, // HTC Streaming Player
162
+ /(java|python-urllib|python-requests|wget|libcurl)\/([\w\.-_]+)/i,
163
+ // Java/urllib/requests/wget/cURL
164
+ /(lavf)([\d\.]+)/i // Lavf (FFMPEG)
165
+ ], [NAME, VERSION], [
166
+
167
+ /(htc_one_s)\/([\d\.]+)/i, // HTC One S
168
+ ], [[NAME, /_/g, ' '], VERSION], [
169
+
170
+ /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+))/i,
171
+ // MPlayer SVN
172
+ ], [NAME, VERSION], [
173
+
174
+ /(mplayer)(?:\s|\/)([\w\.-]+)/i, // MPlayer
175
+ /(mplayer) unknown-([\w\.\-]+)/i // MPlayer UNKNOWN
176
+ ], [NAME, VERSION], [
177
+
178
+ /(mplayer)/i, // MPlayer (no other info)
179
+ /(yourmuze)/i, // YourMuze
180
+ /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
181
+ ], [NAME], [
182
+
183
+ /(nero (?:home|scout))\/([\w\.-]+)/i // Nero Home/Nero Scout
184
+ ], [NAME, VERSION], [
185
+
186
+ /(nokia\d+)\/([\w\.-]+)/i // Nokia
187
+ ], [NAME, VERSION], [
188
+
189
+ /\s(songbird)\/([\w\.-]+)/i // Songbird/Philips-Songbird
190
+ ], [NAME, VERSION], [
191
+
192
+ /(winamp)3 version ([\w\.-]+)/i, // Winamp
193
+ /(winamp)\s([\w\.-]+)/i,
194
+ /(winamp)mpeg\/([\w\.-]+)/i
195
+ ], [NAME, VERSION], [
196
+
197
+ /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
198
+ // inlight radio
199
+ ], [NAME], [
200
+
201
+ /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/([\w\.-]+)/i
202
+ // QuickTime/RealMedia/RadioApp/RadioClientApplication/
203
+ // SoundTap/Totem/Stagefright/Streamium
204
+ ], [NAME, VERSION], [
205
+
206
+ /(smp)([\d\.]+)/i // SMP
207
+ ], [NAME, VERSION], [
208
+
209
+ /(vlc) media player - version ([\w\.]+)/i, // VLC Videolan
210
+ /(vlc)\/([\w\.-]+)/i,
211
+ /(xbmc|gvfs|xine|xmms|irapp)\/([\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
212
+ /(foobar2000)\/([\d\.]+)/i, // Foobar2000
213
+ /(itunes)\/([\d\.]+)/i // iTunes
214
+ ], [NAME, VERSION], [
215
+
216
+ /(wmplayer)\/([\w\.-]+)/i, // Windows Media Player
217
+ /(windows-media-player)\/([\w\.-]+)/i
218
+ ], [[NAME, /-/g, ' '], VERSION], [
219
+
220
+ /windows\/([\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i,
221
+ // Windows Media Server
222
+ ], [VERSION, [NAME, 'Windows']], [
223
+
224
+ /(com\.riseupradioalarm)\/([\d\.]*)/i // RiseUP Radio Alarm
225
+ ], [NAME, VERSION], [
226
+
227
+ /(rad.io)\s([\d\.]+)/i, // Rad.io
228
+ /(radio.(?:de|at|fr))\s([\d\.]+)/i
229
+ ], [[NAME, 'rad.io'], VERSION]
230
+ ]
231
+ });
232
+
233
+ const Modules = Object.freeze({
234
+ browser : [
235
+ // Axios/jsdom/Scrapy
236
+ [/\b(axios|jsdom|scrapy)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'module']]
237
+ ]
238
+ });
239
+
240
+ module.exports = {
241
+ Apps,
242
+ Bots,
243
+ CLIs,
244
+ ExtraDevices,
245
+ Emails,
246
+ MediaPlayers,
247
+ Modules
248
+ };
@@ -0,0 +1,252 @@
1
+ // Generated ESM version of ua-parser-js/extensions
2
+ // DO NOT EDIT THIS FILE!
3
+ // Source: /src/extensions/ua-parser-extensions.js
4
+
5
+ ///////////////////////////////////////////////
6
+ /* Extensions for UAParser.js v2.0.0-beta.1
7
+ https://github.com/faisalman/ua-parser-js
8
+ Author: Faisal Salman <f@faisalman.com>
9
+ AGPLv3 License */
10
+ //////////////////////////////////////////////
11
+
12
+ /*jshint esversion: 6 */
13
+
14
+ const MODEL = 'model';
15
+ const NAME = 'name';
16
+ const TYPE = 'type';
17
+ const VENDOR = 'vendor';
18
+ const VERSION = 'version';
19
+ const MOBILE = 'mobile';
20
+ const TABLET = 'tablet';
21
+
22
+ const Apps = Object.freeze({
23
+ browser : [
24
+ [/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, 'app']]
25
+ ]
26
+ });
27
+
28
+ const Bots = Object.freeze({
29
+ browser : [
30
+ // Googlebot / BingBot / MSNBot / FacebookBot
31
+ [/((?:google|bing|msn|facebook)bot(?:[\-imagevdo]{0,6})|bingpreview)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
32
+
33
+ // GPTBot - https://platform.openai.com/docs/gptbot
34
+ [/(gptbot)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']],
35
+
36
+ // Slackbot - https://api.slack.com/robots
37
+ [/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i], [NAME, VERSION, [TYPE, 'bot']]
38
+ ]
39
+ });
40
+
41
+ const CLIs = Object.freeze({
42
+ browser : [
43
+ // wget / curl / lynx
44
+ [/(wget|curl|lynx)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'cli']]
45
+ ]
46
+ });
47
+
48
+ const ExtraDevices = Object.freeze({
49
+ device : [[
50
+ /(nook)[\w ]+build\/(\w+)/i, // Nook
51
+ /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
52
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
53
+ /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
54
+ /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
55
+ /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
56
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
57
+
58
+ /(u304aa)/i // AT&T
59
+ ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
60
+
61
+ /\bsie-(\w*)/i // Siemens
62
+ ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
63
+
64
+ /\b(rct\w+) b/i // RCA Tablets
65
+ ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
66
+
67
+ /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
68
+ ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
69
+
70
+ /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
71
+ ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
72
+
73
+ /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
74
+ ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
75
+
76
+ /\b(tm\d{3}\w+) b/i
77
+ ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
78
+
79
+ /\b(k88) b/i // ZTE K Series Tablet
80
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
81
+
82
+ /\b(nx\d{3}j) b/i // ZTE Nubia
83
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
84
+
85
+ /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
86
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
87
+
88
+ /\b(zur\d{3}) b/i // Swiss ZUR Tablet
89
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
90
+
91
+ /\b((zeki)?tb.*\b) b/i // Zeki Tablets
92
+ ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
93
+
94
+ /\b([yr]\d{2}) b/i,
95
+ /\b(?:dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
96
+ ], [MODEL, [VENDOR, 'Dragon Touch'], [TYPE, TABLET]], [
97
+
98
+ /\b(ns-?\w{0,9}) b/i // Insignia Tablets
99
+ ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
100
+
101
+ /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
102
+ ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
103
+
104
+ /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
105
+ ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
106
+
107
+ /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
108
+ ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
109
+
110
+ /\b(ph-1) /i // Essential PH-1
111
+ ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
112
+
113
+ /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
114
+ ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
115
+
116
+ /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
117
+ ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
118
+
119
+ /\btu_(1491) b/i // Rotor Tablets
120
+ ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]]
121
+ ]
122
+ });
123
+
124
+ const Emails = Object.freeze({
125
+ browser : [
126
+ // Microsoft Outlook / Thunderbird
127
+ [/(microsoft outlook|thunderbird)[\s\/]([\w\.]+)/i], [NAME, VERSION, [TYPE, 'email']]
128
+ ]
129
+ });
130
+
131
+ const MediaPlayers = Object.freeze({
132
+ browser : [[
133
+
134
+ /(apple(?:coremedia|))\/([\w\._]+)/i, // Generic Apple CoreMedia
135
+ /(coremedia) v([\w\._]+)/i
136
+ ], [NAME, VERSION], [
137
+
138
+ /(aqualung|lyssna|bsplayer)\/([\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
139
+ ], [NAME, VERSION], [
140
+
141
+ /(ares|ossproxy)\s([\w\.-]+)/i // Ares/OSSProxy
142
+ ], [NAME, VERSION], [
143
+
144
+ /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/([\w\.-]+)/i,
145
+ // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
146
+ // NSPlayer/PSP-InternetRadioPlayer/Videos
147
+ /(clementine|music player daemon)\s([\w\.-]+)/i, // Clementine/MPD
148
+ /(lg player|nexplayer)\s([\d\.]+)/i,
149
+ /player\/(nexplayer|lg player)\s([\w\.-]+)/i // NexPlayer/LG Player
150
+ ], [NAME, VERSION], [
151
+ /(nexplayer)\s([\w\.-]+)/i // Nexplayer
152
+ ], [NAME, VERSION], [
153
+
154
+ /(flrp)\/([\w\.-]+)/i // Flip Player
155
+ ], [[NAME, 'Flip Player'], VERSION], [
156
+
157
+ /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
158
+ // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
159
+ ], [NAME], [
160
+
161
+ /(gstreamer) souphttpsrc.+libsoup\/([\w\.-]+)/i
162
+ // Gstreamer
163
+ ], [NAME, VERSION], [
164
+
165
+ /(htc streaming player)\s[\w_]+\s\/\s([\d\.]+)/i, // HTC Streaming Player
166
+ /(java|python-urllib|python-requests|wget|libcurl)\/([\w\.-_]+)/i,
167
+ // Java/urllib/requests/wget/cURL
168
+ /(lavf)([\d\.]+)/i // Lavf (FFMPEG)
169
+ ], [NAME, VERSION], [
170
+
171
+ /(htc_one_s)\/([\d\.]+)/i, // HTC One S
172
+ ], [[NAME, /_/g, ' '], VERSION], [
173
+
174
+ /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+))/i,
175
+ // MPlayer SVN
176
+ ], [NAME, VERSION], [
177
+
178
+ /(mplayer)(?:\s|\/)([\w\.-]+)/i, // MPlayer
179
+ /(mplayer) unknown-([\w\.\-]+)/i // MPlayer UNKNOWN
180
+ ], [NAME, VERSION], [
181
+
182
+ /(mplayer)/i, // MPlayer (no other info)
183
+ /(yourmuze)/i, // YourMuze
184
+ /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
185
+ ], [NAME], [
186
+
187
+ /(nero (?:home|scout))\/([\w\.-]+)/i // Nero Home/Nero Scout
188
+ ], [NAME, VERSION], [
189
+
190
+ /(nokia\d+)\/([\w\.-]+)/i // Nokia
191
+ ], [NAME, VERSION], [
192
+
193
+ /\s(songbird)\/([\w\.-]+)/i // Songbird/Philips-Songbird
194
+ ], [NAME, VERSION], [
195
+
196
+ /(winamp)3 version ([\w\.-]+)/i, // Winamp
197
+ /(winamp)\s([\w\.-]+)/i,
198
+ /(winamp)mpeg\/([\w\.-]+)/i
199
+ ], [NAME, VERSION], [
200
+
201
+ /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
202
+ // inlight radio
203
+ ], [NAME], [
204
+
205
+ /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/([\w\.-]+)/i
206
+ // QuickTime/RealMedia/RadioApp/RadioClientApplication/
207
+ // SoundTap/Totem/Stagefright/Streamium
208
+ ], [NAME, VERSION], [
209
+
210
+ /(smp)([\d\.]+)/i // SMP
211
+ ], [NAME, VERSION], [
212
+
213
+ /(vlc) media player - version ([\w\.]+)/i, // VLC Videolan
214
+ /(vlc)\/([\w\.-]+)/i,
215
+ /(xbmc|gvfs|xine|xmms|irapp)\/([\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
216
+ /(foobar2000)\/([\d\.]+)/i, // Foobar2000
217
+ /(itunes)\/([\d\.]+)/i // iTunes
218
+ ], [NAME, VERSION], [
219
+
220
+ /(wmplayer)\/([\w\.-]+)/i, // Windows Media Player
221
+ /(windows-media-player)\/([\w\.-]+)/i
222
+ ], [[NAME, /-/g, ' '], VERSION], [
223
+
224
+ /windows\/([\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i,
225
+ // Windows Media Server
226
+ ], [VERSION, [NAME, 'Windows']], [
227
+
228
+ /(com\.riseupradioalarm)\/([\d\.]*)/i // RiseUP Radio Alarm
229
+ ], [NAME, VERSION], [
230
+
231
+ /(rad.io)\s([\d\.]+)/i, // Rad.io
232
+ /(radio.(?:de|at|fr))\s([\d\.]+)/i
233
+ ], [[NAME, 'rad.io'], VERSION]
234
+ ]
235
+ });
236
+
237
+ const Modules = Object.freeze({
238
+ browser : [
239
+ // Axios/jsdom/Scrapy
240
+ [/\b(axios|jsdom|scrapy)\/([\w\.]+)/i], [NAME, VERSION, [TYPE, 'module']]
241
+ ]
242
+ });
243
+
244
+ export {
245
+ Apps,
246
+ Bots,
247
+ CLIs,
248
+ ExtraDevices,
249
+ Emails,
250
+ MediaPlayers,
251
+ Modules
252
+ };
@@ -0,0 +1,104 @@
1
+ // Type definitions for UAParser.js v2.0.0-beta.1
2
+ // Project: https://github.com/faisalman/ua-parser-js
3
+ // Definitions by: Faisal Salman <https://github.com/faisalman>
4
+
5
+ declare namespace UAParser {
6
+
7
+ interface IData<T> {
8
+ is(val: string): boolean;
9
+ toString(): string;
10
+ withClientHints(): PromiseLike<T> | T;
11
+ withFeatureCheck(): T;
12
+ }
13
+
14
+ interface IBrowser extends IData<IBrowser> {
15
+ name?: string;
16
+ version?: string;
17
+ major?: string;
18
+ }
19
+
20
+ interface ICPU extends IData<ICPU> {
21
+ architecture?: 'ia32' | 'ia64' | 'amd64' | 'arm' | 'arm64' | 'armhf' | 'avr' | 'irix' | 'irix64' | 'mips' | 'mips64' | '68k' | 'ppc' | 'sparc' | 'sparc64';
22
+ }
23
+
24
+ interface IDevice extends IData<IDevice> {
25
+ type?: 'mobile' | 'tablet' | 'console' | 'smarttv' | 'wearable';
26
+ vendor?: string;
27
+ model?: string;
28
+ }
29
+
30
+ interface IEngine extends IData<IEngine> {
31
+ name?: 'Amaya' | 'Blink' | 'EdgeHTML' | 'Flow' | 'Gecko' | 'Goanna' | 'iCab' | 'KHTML' | 'LibWeb' | 'Links' | 'Lynx' | 'NetFront' | 'NetSurf' | 'Presto' | 'Tasman' | 'Trident' | 'w3m' | 'WebKit';
32
+ version?: string;
33
+ }
34
+
35
+ interface IOS extends IData<IOS> {
36
+ name?: string;
37
+ version?: string;
38
+ }
39
+
40
+ interface IResult extends IData<IResult> {
41
+ ua: string;
42
+ browser: IBrowser;
43
+ cpu: ICPU;
44
+ device: IDevice;
45
+ engine: IEngine;
46
+ os: IOS;
47
+ }
48
+
49
+ type RegexMap = ((RegExp | string | (string | RegExp | Function)[])[])[];
50
+
51
+ export function UAParser(uastring?: string, extensions?: Record<string, RegexMap>, headers?: Record<string, string>): IResult;
52
+ export function UAParser(uastring?: string, headers?: Record<string, string>): IResult;
53
+ export function UAParser(extensions?: Record<string, RegexMap>, headers?: Record<string, string>): IResult;
54
+ export function UAParser(headers?: Record<string, string>): IResult;
55
+
56
+ export class UAParser {
57
+
58
+ static readonly BROWSER: {
59
+ NAME: 'name';
60
+ VERSION: 'version';
61
+ MAJOR: 'major';
62
+ };
63
+ static readonly CPU: {
64
+ ARCHITECTURE: 'architecture';
65
+ };
66
+ static readonly DEVICE: {
67
+ TYPE: 'type';
68
+ VENDOR: 'vendor';
69
+ MODEL: 'model';
70
+ CONSOLE: 'console';
71
+ MOBILE: 'mobile';
72
+ SMARTTV: 'smarttv';
73
+ TABLET: 'tablet';
74
+ WEARABLE: 'wearable';
75
+ EMBEDDED: 'embedded';
76
+ };
77
+ static readonly ENGINE: {
78
+ NAME: 'name';
79
+ VERSION: 'version';
80
+ };
81
+ static readonly OS: {
82
+ NAME: 'name';
83
+ VERSION: 'version';
84
+ };
85
+ static readonly VERSION: string;
86
+
87
+ constructor(uastring?: string, extensions?: Record<string, RegexMap>, headers?: Record<string, string>);
88
+ constructor(uastring?: string, headers?: Record<string, string>);
89
+ constructor(extensions?: Record<string, RegexMap>, headers?: Record<string, string>);
90
+ constructor(headers?: Record<string, string>);
91
+
92
+ getUA(): string;
93
+ getBrowser(): IBrowser;
94
+ getCPU(): ICPU;
95
+ getDevice(): IDevice;
96
+ getEngine(): IEngine;
97
+ getOS(): IOS;
98
+ getResult(): IResult;
99
+ setUA(uastring: string): UAParser;
100
+ }
101
+ }
102
+
103
+ export as namespace UAParser;
104
+ export = UAParser;