ua-parser-js 2.0.0-beta.3 → 2.0.0-rc.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.
- package/README.md +22 -17
- package/dist/icons/color/LICENSE.md +3 -0
- package/dist/icons/color/browser/android-browser.svg +1 -0
- package/dist/icons/color/browser/avant.png +0 -0
- package/dist/icons/color/browser/basilisk.png +0 -0
- package/dist/icons/color/browser/basilisk.svg +1 -0
- package/dist/icons/color/browser/brave.png +0 -0
- package/dist/icons/color/browser/brave.svg +1 -0
- package/dist/icons/color/browser/chrome.png +0 -0
- package/dist/icons/color/browser/chrome.svg +1 -0
- package/dist/icons/color/browser/chromium.png +0 -0
- package/dist/icons/color/browser/chromium.svg +1 -0
- package/dist/icons/color/browser/coc-coc.png +0 -0
- package/dist/icons/color/browser/default.png +0 -0
- package/dist/icons/color/browser/default.svg +1 -0
- package/dist/icons/color/browser/dolphin.png +0 -0
- package/dist/icons/color/browser/edge.png +0 -0
- package/dist/icons/color/browser/edge.svg +1 -0
- package/dist/icons/color/browser/electron.png +0 -0
- package/dist/icons/color/browser/electron.svg +1 -0
- package/dist/icons/color/browser/falkon.png +0 -0
- package/dist/icons/color/browser/falkon.svg +1 -0
- package/dist/icons/color/browser/firefox-reality.png +0 -0
- package/dist/icons/color/browser/firefox-reality.svg +1 -0
- package/dist/icons/color/browser/firefox.png +0 -0
- package/dist/icons/color/browser/firefox.svg +1 -0
- package/dist/icons/color/browser/gsa.svg +9 -0
- package/dist/icons/color/browser/icecat.png +0 -0
- package/dist/icons/color/browser/ie.svg +6 -0
- package/dist/icons/color/browser/konqueror.png +0 -0
- package/dist/icons/color/browser/konqueror.svg +1 -0
- package/dist/icons/color/browser/maxthon.png +0 -0
- package/dist/icons/color/browser/midori.png +0 -0
- package/dist/icons/color/browser/midori.svg +1 -0
- package/dist/icons/color/browser/netsurf.png +0 -0
- package/dist/icons/color/browser/netsurf.svg +1 -0
- package/dist/icons/color/browser/opera-gx.png +0 -0
- package/dist/icons/color/browser/opera-gx.svg +1 -0
- package/dist/icons/color/browser/opera-mini.png +0 -0
- package/dist/icons/color/browser/opera-touch.png +0 -0
- package/dist/icons/color/browser/opera.png +0 -0
- package/dist/icons/color/browser/opera.svg +1 -0
- package/dist/icons/color/browser/palemoon.png +0 -0
- package/dist/icons/color/browser/puffin.png +0 -0
- package/dist/icons/color/browser/safari.png +0 -0
- package/dist/icons/color/browser/safari.svg +1 -0
- package/dist/icons/color/browser/samsung-internet.png +0 -0
- package/dist/icons/color/browser/samsung-internet.svg +1 -0
- package/dist/icons/color/browser/seamonkey.png +0 -0
- package/dist/icons/color/browser/silk.png +0 -0
- package/dist/icons/color/browser/sogou-mobile.png +0 -0
- package/dist/icons/color/browser/ucbrowser.png +0 -0
- package/dist/icons/color/browser/ucbrowser.svg +1 -0
- package/dist/icons/color/browser/vivaldi.png +0 -0
- package/dist/icons/color/browser/vivaldi.svg +1 -0
- package/dist/icons/color/browser/webkit.png +0 -0
- package/dist/icons/color/browser/webkit.svg +1 -0
- package/dist/icons/color/browser/yandex.png +0 -0
- package/dist/icons/color/os/centos.svg +1 -0
- package/dist/icons/mono/LICENSE.md +3 -0
- package/dist/icons/mono/browser/alipay.svg +1 -0
- package/dist/icons/mono/browser/android-browser.svg +1 -0
- package/dist/icons/mono/browser/avast-secure-browser.svg +1 -0
- package/dist/icons/mono/browser/baidu-browser.svg +1 -0
- package/dist/icons/mono/browser/brave.svg +1 -0
- package/dist/icons/mono/browser/chrome-headless.svg +1 -0
- package/dist/icons/mono/browser/chrome-webview.svg +1 -0
- package/dist/icons/mono/browser/chrome.svg +1 -0
- package/dist/icons/mono/browser/chromium.svg +1 -0
- package/dist/icons/mono/browser/duckduckgo.svg +1 -0
- package/dist/icons/mono/browser/edge.svg +1 -0
- package/dist/icons/mono/browser/electron.svg +1 -0
- package/dist/icons/mono/browser/facebook.svg +1 -0
- package/dist/icons/mono/browser/firefox-focus.svg +1 -0
- package/dist/icons/mono/browser/firefox-reality.svg +1 -0
- package/dist/icons/mono/browser/firefox.svg +1 -0
- package/dist/icons/mono/browser/gsa.svg +1 -0
- package/dist/icons/mono/browser/huawei-browser.svg +1 -0
- package/dist/icons/mono/browser/icecat.svg +1 -0
- package/dist/icons/mono/browser/ie.svg +1 -0
- package/dist/icons/mono/browser/instagram.svg +1 -0
- package/dist/icons/mono/browser/jasmine.svg +1 -0
- package/dist/icons/mono/browser/kakaotalk.svg +1 -0
- package/dist/icons/mono/browser/klarna.svg +1 -0
- package/dist/icons/mono/browser/line.svg +1 -0
- package/dist/icons/mono/browser/linkedin.svg +1 -0
- package/dist/icons/mono/browser/miui-browser.svg +1 -0
- package/dist/icons/mono/browser/mobile-chrome.svg +1 -0
- package/dist/icons/mono/browser/mobile-firefox.svg +1 -0
- package/dist/icons/mono/browser/mobile-safari.svg +1 -0
- package/dist/icons/mono/browser/mozilla.svg +1 -0
- package/dist/icons/mono/browser/naver.svg +1 -0
- package/dist/icons/mono/browser/nokia-browser.svg +1 -0
- package/dist/icons/mono/browser/oculus-browser.svg +1 -0
- package/dist/icons/mono/browser/opera-coast.svg +1 -0
- package/dist/icons/mono/browser/opera-gx.svg +1 -0
- package/dist/icons/mono/browser/opera-mini.svg +1 -0
- package/dist/icons/mono/browser/opera-mobi.svg +1 -0
- package/dist/icons/mono/browser/opera-tablet.svg +1 -0
- package/dist/icons/mono/browser/opera-touch.svg +1 -0
- package/dist/icons/mono/browser/opera.svg +1 -0
- package/dist/icons/mono/browser/qqbrowser.svg +1 -0
- package/dist/icons/mono/browser/qqbrowserlite.svg +1 -0
- package/dist/icons/mono/browser/safari.svg +1 -0
- package/dist/icons/mono/browser/sailfish-browser.svg +1 -0
- package/dist/icons/mono/browser/samsung-internet.svg +1 -0
- package/dist/icons/mono/browser/smart-lenovo-browser.svg +1 -0
- package/dist/icons/mono/browser/snapchat.svg +1 -0
- package/dist/icons/mono/browser/sogou-explorer.svg +1 -0
- package/dist/icons/mono/browser/sogou-mobile.svg +1 -0
- package/dist/icons/mono/browser/tesla.svg +1 -0
- package/dist/icons/mono/browser/tiktok.svg +1 -0
- package/dist/icons/mono/browser/twitter.svg +1 -0
- package/dist/icons/mono/browser/vivaldi.svg +1 -0
- package/dist/icons/mono/browser/vivo-browser.svg +1 -0
- package/dist/icons/mono/browser/wechat.svg +1 -0
- package/dist/icons/mono/browser/weibo.svg +1 -0
- package/dist/icons/mono/browser/yandex.svg +1 -0
- package/dist/icons/mono/device/acer.svg +1 -0
- package/dist/icons/mono/device/amazon.svg +1 -0
- package/dist/icons/mono/device/apple.svg +1 -0
- package/dist/icons/mono/device/asus.svg +1 -0
- package/dist/icons/mono/device/att.svg +1 -0
- package/dist/icons/mono/device/blackberry.svg +1 -0
- package/dist/icons/mono/device/dell.svg +1 -0
- package/dist/icons/mono/device/facebook.svg +1 -0
- package/dist/icons/mono/device/fairphone.svg +1 -0
- package/dist/icons/mono/device/google.svg +1 -0
- package/dist/icons/mono/device/hp.svg +1 -0
- package/dist/icons/mono/device/huawei.svg +1 -0
- package/dist/icons/mono/device/lenovo.svg +1 -0
- package/dist/icons/mono/device/lg.svg +1 -0
- package/dist/icons/mono/device/meizu.svg +1 -0
- package/dist/icons/mono/device/microsoft.svg +1 -0
- package/dist/icons/mono/device/motorola.svg +1 -0
- package/dist/icons/mono/device/nintendo.svg +1 -0
- package/dist/icons/mono/device/nokia.svg +1 -0
- package/dist/icons/mono/device/nvidia.svg +1 -0
- package/dist/icons/mono/device/oneplus.svg +1 -0
- package/dist/icons/mono/device/oppo.svg +1 -0
- package/dist/icons/mono/device/panasonic.svg +1 -0
- package/dist/icons/mono/device/roku.svg +1 -0
- package/dist/icons/mono/device/samsung.svg +1 -0
- package/dist/icons/mono/device/siemens.svg +1 -0
- package/dist/icons/mono/device/sony.svg +1 -0
- package/dist/icons/mono/device/tesla.svg +1 -0
- package/dist/icons/mono/device/vivo.svg +1 -0
- package/dist/icons/mono/device/vodafone.svg +1 -0
- package/dist/icons/mono/device/xiaomi.svg +1 -0
- package/dist/icons/mono/device/zebra.svg +1 -0
- package/dist/icons/mono/os/android.svg +1 -0
- package/dist/icons/mono/os/arch.svg +1 -0
- package/dist/icons/mono/os/blackberry.svg +1 -0
- package/dist/icons/mono/os/centos.svg +1 -0
- package/dist/icons/mono/os/chrome-os.svg +1 -0
- package/dist/icons/mono/os/chromecast.svg +1 -0
- package/dist/icons/mono/os/debian.svg +1 -0
- package/dist/icons/mono/os/deepin.svg +1 -0
- package/dist/icons/mono/os/elementary-os.svg +1 -0
- package/dist/icons/mono/os/fedora.svg +1 -0
- package/dist/icons/mono/os/firefox.svg +1 -0
- package/dist/icons/mono/os/freebsd.svg +1 -0
- package/dist/icons/mono/os/gentoo.svg +1 -0
- package/dist/icons/mono/os/gnu.svg +1 -0
- package/dist/icons/mono/os/harmonyos.svg +1 -0
- package/dist/icons/mono/os/ios.svg +1 -0
- package/dist/icons/mono/os/kaios.svg +1 -0
- package/dist/icons/mono/os/linux.svg +1 -0
- package/dist/icons/mono/os/macos.svg +1 -0
- package/dist/icons/mono/os/manjaro.svg +1 -0
- package/dist/icons/mono/os/mint.svg +1 -0
- package/dist/icons/mono/os/netbsd.svg +1 -0
- package/dist/icons/mono/os/nintendo.svg +1 -0
- package/dist/icons/mono/os/openbsd.svg +1 -0
- package/dist/icons/mono/os/playstation.svg +1 -0
- package/dist/icons/mono/os/raspbian.svg +1 -0
- package/dist/icons/mono/os/redhat.svg +1 -0
- package/dist/icons/mono/os/sailfish.svg +1 -0
- package/dist/icons/mono/os/slackware.svg +1 -0
- package/dist/icons/mono/os/suse.svg +1 -0
- package/dist/icons/mono/os/ubuntu.svg +1 -0
- package/dist/icons/mono/os/windows.svg +1 -0
- package/dist/icons/mono/os/xbox.svg +1 -0
- package/dist/ua-parser.min.js +2 -2
- package/dist/ua-parser.pack.js +2 -2
- package/package.json +7 -4
- package/src/enums/ua-parser-enums.js +13 -5
- package/src/enums/ua-parser-enums.mjs +13 -5
- package/src/extensions/ua-parser-extensions.d.ts +1 -0
- package/src/extensions/ua-parser-extensions.js +100 -75
- package/src/extensions/ua-parser-extensions.mjs +100 -75
- package/src/helpers/ua-parser-helpers.d.ts +11 -3
- package/src/helpers/ua-parser-helpers.js +44 -5
- package/src/helpers/ua-parser-helpers.mjs +45 -6
- package/src/main/ua-parser.d.ts +2 -2
- package/src/main/ua-parser.js +59 -17
- package/src/main/ua-parser.mjs +59 -17
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Extensions for UAParser.js v2.0.0-
|
2
|
+
/* Extensions for UAParser.js v2.0.0-rc.1
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -19,6 +19,7 @@ const CLI = 'cli';
|
|
19
19
|
const EMAIL = 'email';
|
20
20
|
const FETCHER = 'fetcher';
|
21
21
|
const INAPP = 'inapp';
|
22
|
+
const MEDIAPLAYER = 'mediaplayer';
|
22
23
|
const MODULE = 'module';
|
23
24
|
|
24
25
|
//////////////////////
|
@@ -38,43 +39,48 @@ const CLIs = Object.freeze({
|
|
38
39
|
|
39
40
|
const Crawlers = Object.freeze({
|
40
41
|
browser : [
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
42
|
+
[
|
43
|
+
// AhrefsBot - https://ahrefs.com/robot
|
44
|
+
// Amazonbot - https://developer.amazon.com/amazonbot
|
45
|
+
// Applebot - http://apple.com/go/applebot
|
46
|
+
// Bingbot - http://www.bing.com/bingbot.htm
|
47
|
+
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
48
|
+
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
49
|
+
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
50
|
+
// GPTBot - https://platform.openai.com/docs/gptbot
|
51
|
+
// MJ12bot - https://mj12bot.com/
|
52
|
+
// OpenAI Search - https://platform.openai.com/docs/bots
|
53
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
54
|
+
/((?:ahrefs|amazon|apple|bing|dot|duckduck|facebook|gpt|mj12|oai-search|semrush)bot)\/([\w\.]+)/i,
|
49
55
|
|
50
|
-
|
51
|
-
|
52
|
-
[NAME, VERSION, [TYPE, CRAWLER]],
|
56
|
+
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
57
|
+
/(baiduspider)[-imagevdonsfcpr]{0,6}\/([\w\.]+)/i,
|
53
58
|
|
54
|
-
|
55
|
-
|
56
|
-
[/((?:bytespider|(?=yahoo! )slurp))/i],
|
57
|
-
[NAME, [TYPE, CRAWLER]],
|
59
|
+
// ClaudeBot
|
60
|
+
/(claude(?:bot|-web))\/([\w\.]+)/i,
|
58
61
|
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
+
// Coc Coc Bot - https://help.coccoc.com/en/search-engine
|
63
|
+
/(coccocbot-(?:image|web))\/([\w\.]+)/i,
|
64
|
+
|
65
|
+
// Googlebot - http://www.google.com/bot.html
|
66
|
+
/(google(?:bot|other)(?:-image|-video|-news|-extended)?|(?:storebot-)?google(?:-inspectiontool)?)\/?([\w\.]*)/i,
|
67
|
+
|
68
|
+
// Sogou Spider
|
69
|
+
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
70
|
+
|
71
|
+
// Yahoo! Japan - https://support.yahoo-net.jp/PccSearch/s/article/H000007955
|
72
|
+
/(y!?j-(?:asr|br[uw]|dscv|mmp|vsidx|wsc))\/([\w\.]+)/i,
|
73
|
+
|
74
|
+
// Yandex Bots - https://yandex.com/bots
|
75
|
+
/(yandex(?:(?:mobile)?(?:accessibility|additional|renderresources|screenshot|sprav)?bot|image(?:s|resizer)|video(?:parser)?|blogs|adnet|favicons|fordomain|market|media|metrika|news|ontodb(?:api)?|pagechecker|partner|rca|tracker|turbo|vertis|webmaster|antivirus))\/([\w\.]+)/i
|
76
|
+
],
|
62
77
|
|
63
|
-
// Googlebot - http://www.google.com/bot.html
|
64
|
-
[
|
65
|
-
/(google(?:bot|other)(?:-image|-video|-news|-extended)?|(?:storebot-)?google(?:-inspectiontool)?)\/?([\w\.]*)/i
|
66
|
-
],
|
67
|
-
[NAME, VERSION, [TYPE, CRAWLER]],
|
68
|
-
|
69
|
-
// Sogou Spider
|
70
|
-
[/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i],
|
71
78
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
72
79
|
|
73
|
-
//
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
[NAME, VERSION, [TYPE, CRAWLER]]
|
80
|
+
// Bytespider
|
81
|
+
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
82
|
+
[/((?:bytespider|(?=yahoo! )slurp))/i],
|
83
|
+
[NAME, [TYPE, CRAWLER]]
|
78
84
|
]
|
79
85
|
});
|
80
86
|
|
@@ -175,29 +181,30 @@ const Emails = Object.freeze({
|
|
175
181
|
|
176
182
|
const Fetchers = Object.freeze({
|
177
183
|
browser : [
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
[/(feedfetcher-google|google-read-aloud|(?=bot; )snapchat)/i],
|
184
|
-
[NAME, [TYPE, FETCHER]],
|
185
|
-
|
184
|
+
[
|
185
|
+
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
186
|
+
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
187
|
+
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
188
|
+
/(ahrefssiteaudit|bingpreview|chatgpt-user|mastodon|(?:discord|linkedin|pinterest|reddit|roger|telegram|twitter|uptimero)bot)\/([\w\.]+)/i,
|
186
189
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
+
// Slackbot - https://api.slack.com/robots
|
191
|
+
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
192
|
+
|
193
|
+
// WhatsApp
|
194
|
+
/(whatsapp)\/([\w\.]+)[\/ ][ianw]/i,
|
190
195
|
|
191
|
-
|
192
|
-
|
193
|
-
[NAME, VERSION, [TYPE, FETCHER]],
|
196
|
+
// Yahoo! Japan
|
197
|
+
/(y!?j-dlc)\/([\w\.]+)/i,
|
194
198
|
|
195
|
-
|
196
|
-
[
|
199
|
+
// Yandex Bots - https://yandex.com/bots
|
197
200
|
/(yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
198
201
|
/(yandex(?:sitelinks|userproxy))/i
|
199
202
|
],
|
200
|
-
[NAME, VERSION, [TYPE, FETCHER]]
|
203
|
+
[NAME, VERSION, [TYPE, FETCHER]],
|
204
|
+
|
205
|
+
// Google Bots / Snapchat
|
206
|
+
[/(feedfetcher-google|google-read-aloud|(?=bot; )snapchat)/i],
|
207
|
+
[NAME, [TYPE, FETCHER]],
|
201
208
|
]
|
202
209
|
});
|
203
210
|
|
@@ -207,7 +214,11 @@ const Fetchers = Object.freeze({
|
|
207
214
|
|
208
215
|
const InApps = Object.freeze({
|
209
216
|
browser : [
|
210
|
-
|
217
|
+
// Slack
|
218
|
+
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, INAPP]],
|
219
|
+
|
220
|
+
// Yahoo! Japan
|
221
|
+
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i], [VERSION, 'Yahoo! Japan', [TYPE, INAPP]]
|
211
222
|
]
|
212
223
|
});
|
213
224
|
|
@@ -220,13 +231,13 @@ const MediaPlayers = Object.freeze({
|
|
220
231
|
|
221
232
|
/(apple(?:coremedia|))\/([\w\._]+)/i, // Generic Apple CoreMedia
|
222
233
|
/(coremedia) v([\w\._]+)/i
|
223
|
-
], [NAME, VERSION], [
|
234
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
224
235
|
|
225
236
|
/(aqualung|lyssna|bsplayer)\/([\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
|
226
|
-
], [NAME, VERSION], [
|
237
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
227
238
|
|
228
239
|
/(ares|ossproxy)\s([\w\.-]+)/i // Ares/OSSProxy
|
229
|
-
], [NAME, VERSION], [
|
240
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
230
241
|
|
231
242
|
/(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/([\w\.-]+)/i,
|
232
243
|
// Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
|
@@ -234,90 +245,90 @@ const MediaPlayers = Object.freeze({
|
|
234
245
|
/(clementine|music player daemon)\s([\w\.-]+)/i, // Clementine/MPD
|
235
246
|
/(lg player|nexplayer)\s([\d\.]+)/i,
|
236
247
|
/player\/(nexplayer|lg player)\s([\w\.-]+)/i // NexPlayer/LG Player
|
237
|
-
], [NAME, VERSION], [
|
248
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
238
249
|
/(nexplayer)\s([\w\.-]+)/i // Nexplayer
|
239
|
-
], [NAME, VERSION], [
|
250
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
240
251
|
|
241
252
|
/(flrp)\/([\w\.-]+)/i // Flip Player
|
242
|
-
], [[NAME, 'Flip Player'], VERSION], [
|
253
|
+
], [[NAME, 'Flip Player'], VERSION, [TYPE, MEDIAPLAYER]], [
|
243
254
|
|
244
255
|
/(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
|
245
256
|
// FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
|
246
|
-
], [NAME], [
|
257
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
247
258
|
|
248
259
|
/(gstreamer) souphttpsrc.+libsoup\/([\w\.-]+)/i
|
249
260
|
// Gstreamer
|
250
|
-
], [NAME, VERSION], [
|
261
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
251
262
|
|
252
263
|
/(htc streaming player)\s[\w_]+\s\/\s([\d\.]+)/i, // HTC Streaming Player
|
253
264
|
/(java|python-urllib|python-requests|wget|libcurl)\/([\w\.-_]+)/i,
|
254
265
|
// Java/urllib/requests/wget/cURL
|
255
266
|
/(lavf)([\d\.]+)/i // Lavf (FFMPEG)
|
256
|
-
], [NAME, VERSION], [
|
267
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
257
268
|
|
258
269
|
/(htc_one_s)\/([\d\.]+)/i, // HTC One S
|
259
|
-
], [[NAME, /_/g, ' '], VERSION], [
|
270
|
+
], [[NAME, /_/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
260
271
|
|
261
272
|
/(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+))/i,
|
262
273
|
// MPlayer SVN
|
263
|
-
], [NAME, VERSION], [
|
274
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
264
275
|
|
265
276
|
/(mplayer)(?:\s|\/)([\w\.-]+)/i, // MPlayer
|
266
277
|
/(mplayer) unknown-([\w\.\-]+)/i // MPlayer UNKNOWN
|
267
|
-
], [NAME, VERSION], [
|
278
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
268
279
|
|
269
280
|
/(mplayer)/i, // MPlayer (no other info)
|
270
281
|
/(yourmuze)/i, // YourMuze
|
271
282
|
/(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
|
272
|
-
], [NAME], [
|
283
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
273
284
|
|
274
285
|
/(nero (?:home|scout))\/([\w\.-]+)/i // Nero Home/Nero Scout
|
275
|
-
], [NAME, VERSION], [
|
286
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
276
287
|
|
277
288
|
/(nokia\d+)\/([\w\.-]+)/i // Nokia
|
278
|
-
], [NAME, VERSION], [
|
289
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
279
290
|
|
280
291
|
/\s(songbird)\/([\w\.-]+)/i // Songbird/Philips-Songbird
|
281
|
-
], [NAME, VERSION], [
|
292
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
282
293
|
|
283
294
|
/(winamp)3 version ([\w\.-]+)/i, // Winamp
|
284
295
|
/(winamp)\s([\w\.-]+)/i,
|
285
296
|
/(winamp)mpeg\/([\w\.-]+)/i
|
286
|
-
], [NAME, VERSION], [
|
297
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
287
298
|
|
288
299
|
/(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
|
289
300
|
// inlight radio
|
290
|
-
], [NAME], [
|
301
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
291
302
|
|
292
303
|
/(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/([\w\.-]+)/i
|
293
304
|
// QuickTime/RealMedia/RadioApp/RadioClientApplication/
|
294
305
|
// SoundTap/Totem/Stagefright/Streamium
|
295
|
-
], [NAME, VERSION], [
|
306
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
296
307
|
|
297
308
|
/(smp)([\d\.]+)/i // SMP
|
298
|
-
], [NAME, VERSION], [
|
309
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
299
310
|
|
300
311
|
/(vlc) media player - version ([\w\.]+)/i, // VLC Videolan
|
301
312
|
/(vlc)\/([\w\.-]+)/i,
|
302
313
|
/(xbmc|gvfs|xine|xmms|irapp)\/([\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
|
303
314
|
/(foobar2000)\/([\d\.]+)/i, // Foobar2000
|
304
315
|
/(itunes)\/([\d\.]+)/i // iTunes
|
305
|
-
], [NAME, VERSION], [
|
316
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
306
317
|
|
307
318
|
/(wmplayer)\/([\w\.-]+)/i, // Windows Media Player
|
308
319
|
/(windows-media-player)\/([\w\.-]+)/i
|
309
|
-
], [[NAME, /-/g, ' '], VERSION], [
|
320
|
+
], [[NAME, /-/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
310
321
|
|
311
322
|
/windows\/([\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i,
|
312
323
|
// Windows Media Server
|
313
|
-
], [VERSION, [NAME, 'Windows']], [
|
324
|
+
], [VERSION, [NAME, 'Windows'], [TYPE, MEDIAPLAYER]], [
|
314
325
|
|
315
326
|
/(com\.riseupradioalarm)\/([\d\.]*)/i // RiseUP Radio Alarm
|
316
|
-
], [NAME, VERSION], [
|
327
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
317
328
|
|
318
329
|
/(rad.io)\s([\d\.]+)/i, // Rad.io
|
319
330
|
/(radio.(?:de|at|fr))\s([\d\.]+)/i
|
320
|
-
], [[NAME, 'rad.io'], VERSION]
|
331
|
+
], [[NAME, 'rad.io'], VERSION, [TYPE, MEDIAPLAYER]]
|
321
332
|
]
|
322
333
|
});
|
323
334
|
|
@@ -332,7 +343,21 @@ const Modules = Object.freeze({
|
|
332
343
|
]
|
333
344
|
});
|
334
345
|
|
346
|
+
//////////
|
347
|
+
// BOTS
|
348
|
+
/////////
|
349
|
+
|
350
|
+
const Bots = Object.freeze({
|
351
|
+
browser : [
|
352
|
+
...CLIs.browser,
|
353
|
+
...Crawlers.browser,
|
354
|
+
...Fetchers.browser,
|
355
|
+
...Modules.browser
|
356
|
+
]
|
357
|
+
});
|
358
|
+
|
335
359
|
module.exports = {
|
360
|
+
Bots,
|
336
361
|
CLIs,
|
337
362
|
Crawlers,
|
338
363
|
ExtraDevices,
|
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/extensions/ua-parser-extensions.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Extensions for UAParser.js v2.0.0-
|
6
|
+
/* Extensions for UAParser.js v2.0.0-rc.1
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -23,6 +23,7 @@ const CLI = 'cli';
|
|
23
23
|
const EMAIL = 'email';
|
24
24
|
const FETCHER = 'fetcher';
|
25
25
|
const INAPP = 'inapp';
|
26
|
+
const MEDIAPLAYER = 'mediaplayer';
|
26
27
|
const MODULE = 'module';
|
27
28
|
|
28
29
|
//////////////////////
|
@@ -42,43 +43,48 @@ const CLIs = Object.freeze({
|
|
42
43
|
|
43
44
|
const Crawlers = Object.freeze({
|
44
45
|
browser : [
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
46
|
+
[
|
47
|
+
// AhrefsBot - https://ahrefs.com/robot
|
48
|
+
// Amazonbot - https://developer.amazon.com/amazonbot
|
49
|
+
// Applebot - http://apple.com/go/applebot
|
50
|
+
// Bingbot - http://www.bing.com/bingbot.htm
|
51
|
+
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
52
|
+
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
53
|
+
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
54
|
+
// GPTBot - https://platform.openai.com/docs/gptbot
|
55
|
+
// MJ12bot - https://mj12bot.com/
|
56
|
+
// OpenAI Search - https://platform.openai.com/docs/bots
|
57
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
58
|
+
/((?:ahrefs|amazon|apple|bing|dot|duckduck|facebook|gpt|mj12|oai-search|semrush)bot)\/([\w\.]+)/i,
|
53
59
|
|
54
|
-
|
55
|
-
|
56
|
-
[NAME, VERSION, [TYPE, CRAWLER]],
|
60
|
+
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
61
|
+
/(baiduspider)[-imagevdonsfcpr]{0,6}\/([\w\.]+)/i,
|
57
62
|
|
58
|
-
|
59
|
-
|
60
|
-
[/((?:bytespider|(?=yahoo! )slurp))/i],
|
61
|
-
[NAME, [TYPE, CRAWLER]],
|
63
|
+
// ClaudeBot
|
64
|
+
/(claude(?:bot|-web))\/([\w\.]+)/i,
|
62
65
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
+
// Coc Coc Bot - https://help.coccoc.com/en/search-engine
|
67
|
+
/(coccocbot-(?:image|web))\/([\w\.]+)/i,
|
68
|
+
|
69
|
+
// Googlebot - http://www.google.com/bot.html
|
70
|
+
/(google(?:bot|other)(?:-image|-video|-news|-extended)?|(?:storebot-)?google(?:-inspectiontool)?)\/?([\w\.]*)/i,
|
71
|
+
|
72
|
+
// Sogou Spider
|
73
|
+
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
74
|
+
|
75
|
+
// Yahoo! Japan - https://support.yahoo-net.jp/PccSearch/s/article/H000007955
|
76
|
+
/(y!?j-(?:asr|br[uw]|dscv|mmp|vsidx|wsc))\/([\w\.]+)/i,
|
77
|
+
|
78
|
+
// Yandex Bots - https://yandex.com/bots
|
79
|
+
/(yandex(?:(?:mobile)?(?:accessibility|additional|renderresources|screenshot|sprav)?bot|image(?:s|resizer)|video(?:parser)?|blogs|adnet|favicons|fordomain|market|media|metrika|news|ontodb(?:api)?|pagechecker|partner|rca|tracker|turbo|vertis|webmaster|antivirus))\/([\w\.]+)/i
|
80
|
+
],
|
66
81
|
|
67
|
-
// Googlebot - http://www.google.com/bot.html
|
68
|
-
[
|
69
|
-
/(google(?:bot|other)(?:-image|-video|-news|-extended)?|(?:storebot-)?google(?:-inspectiontool)?)\/?([\w\.]*)/i
|
70
|
-
],
|
71
|
-
[NAME, VERSION, [TYPE, CRAWLER]],
|
72
|
-
|
73
|
-
// Sogou Spider
|
74
|
-
[/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i],
|
75
82
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
76
83
|
|
77
|
-
//
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
[NAME, VERSION, [TYPE, CRAWLER]]
|
84
|
+
// Bytespider
|
85
|
+
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
86
|
+
[/((?:bytespider|(?=yahoo! )slurp))/i],
|
87
|
+
[NAME, [TYPE, CRAWLER]]
|
82
88
|
]
|
83
89
|
});
|
84
90
|
|
@@ -179,29 +185,30 @@ const Emails = Object.freeze({
|
|
179
185
|
|
180
186
|
const Fetchers = Object.freeze({
|
181
187
|
browser : [
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
[/(feedfetcher-google|google-read-aloud|(?=bot; )snapchat)/i],
|
188
|
-
[NAME, [TYPE, FETCHER]],
|
189
|
-
|
188
|
+
[
|
189
|
+
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
190
|
+
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
191
|
+
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
192
|
+
/(ahrefssiteaudit|bingpreview|chatgpt-user|mastodon|(?:discord|linkedin|pinterest|reddit|roger|telegram|twitter|uptimero)bot)\/([\w\.]+)/i,
|
190
193
|
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
+
// Slackbot - https://api.slack.com/robots
|
195
|
+
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
196
|
+
|
197
|
+
// WhatsApp
|
198
|
+
/(whatsapp)\/([\w\.]+)[\/ ][ianw]/i,
|
194
199
|
|
195
|
-
|
196
|
-
|
197
|
-
[NAME, VERSION, [TYPE, FETCHER]],
|
200
|
+
// Yahoo! Japan
|
201
|
+
/(y!?j-dlc)\/([\w\.]+)/i,
|
198
202
|
|
199
|
-
|
200
|
-
[
|
203
|
+
// Yandex Bots - https://yandex.com/bots
|
201
204
|
/(yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
202
205
|
/(yandex(?:sitelinks|userproxy))/i
|
203
206
|
],
|
204
|
-
[NAME, VERSION, [TYPE, FETCHER]]
|
207
|
+
[NAME, VERSION, [TYPE, FETCHER]],
|
208
|
+
|
209
|
+
// Google Bots / Snapchat
|
210
|
+
[/(feedfetcher-google|google-read-aloud|(?=bot; )snapchat)/i],
|
211
|
+
[NAME, [TYPE, FETCHER]],
|
205
212
|
]
|
206
213
|
});
|
207
214
|
|
@@ -211,7 +218,11 @@ const Fetchers = Object.freeze({
|
|
211
218
|
|
212
219
|
const InApps = Object.freeze({
|
213
220
|
browser : [
|
214
|
-
|
221
|
+
// Slack
|
222
|
+
[/chatlyio\/([\d\.]+)/i], [VERSION, 'Slack', [TYPE, INAPP]],
|
223
|
+
|
224
|
+
// Yahoo! Japan
|
225
|
+
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i], [VERSION, 'Yahoo! Japan', [TYPE, INAPP]]
|
215
226
|
]
|
216
227
|
});
|
217
228
|
|
@@ -224,13 +235,13 @@ const MediaPlayers = Object.freeze({
|
|
224
235
|
|
225
236
|
/(apple(?:coremedia|))\/([\w\._]+)/i, // Generic Apple CoreMedia
|
226
237
|
/(coremedia) v([\w\._]+)/i
|
227
|
-
], [NAME, VERSION], [
|
238
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
228
239
|
|
229
240
|
/(aqualung|lyssna|bsplayer)\/([\w\.-]+)/i // Aqualung/Lyssna/BSPlayer
|
230
|
-
], [NAME, VERSION], [
|
241
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
231
242
|
|
232
243
|
/(ares|ossproxy)\s([\w\.-]+)/i // Ares/OSSProxy
|
233
|
-
], [NAME, VERSION], [
|
244
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
234
245
|
|
235
246
|
/(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/([\w\.-]+)/i,
|
236
247
|
// Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC
|
@@ -238,90 +249,90 @@ const MediaPlayers = Object.freeze({
|
|
238
249
|
/(clementine|music player daemon)\s([\w\.-]+)/i, // Clementine/MPD
|
239
250
|
/(lg player|nexplayer)\s([\d\.]+)/i,
|
240
251
|
/player\/(nexplayer|lg player)\s([\w\.-]+)/i // NexPlayer/LG Player
|
241
|
-
], [NAME, VERSION], [
|
252
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
242
253
|
/(nexplayer)\s([\w\.-]+)/i // Nexplayer
|
243
|
-
], [NAME, VERSION], [
|
254
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
244
255
|
|
245
256
|
/(flrp)\/([\w\.-]+)/i // Flip Player
|
246
|
-
], [[NAME, 'Flip Player'], VERSION], [
|
257
|
+
], [[NAME, 'Flip Player'], VERSION, [TYPE, MEDIAPLAYER]], [
|
247
258
|
|
248
259
|
/(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i
|
249
260
|
// FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit
|
250
|
-
], [NAME], [
|
261
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
251
262
|
|
252
263
|
/(gstreamer) souphttpsrc.+libsoup\/([\w\.-]+)/i
|
253
264
|
// Gstreamer
|
254
|
-
], [NAME, VERSION], [
|
265
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
255
266
|
|
256
267
|
/(htc streaming player)\s[\w_]+\s\/\s([\d\.]+)/i, // HTC Streaming Player
|
257
268
|
/(java|python-urllib|python-requests|wget|libcurl)\/([\w\.-_]+)/i,
|
258
269
|
// Java/urllib/requests/wget/cURL
|
259
270
|
/(lavf)([\d\.]+)/i // Lavf (FFMPEG)
|
260
|
-
], [NAME, VERSION], [
|
271
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
261
272
|
|
262
273
|
/(htc_one_s)\/([\d\.]+)/i, // HTC One S
|
263
|
-
], [[NAME, /_/g, ' '], VERSION], [
|
274
|
+
], [[NAME, /_/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
264
275
|
|
265
276
|
/(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+))/i,
|
266
277
|
// MPlayer SVN
|
267
|
-
], [NAME, VERSION], [
|
278
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
268
279
|
|
269
280
|
/(mplayer)(?:\s|\/)([\w\.-]+)/i, // MPlayer
|
270
281
|
/(mplayer) unknown-([\w\.\-]+)/i // MPlayer UNKNOWN
|
271
|
-
], [NAME, VERSION], [
|
282
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
272
283
|
|
273
284
|
/(mplayer)/i, // MPlayer (no other info)
|
274
285
|
/(yourmuze)/i, // YourMuze
|
275
286
|
/(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime
|
276
|
-
], [NAME], [
|
287
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
277
288
|
|
278
289
|
/(nero (?:home|scout))\/([\w\.-]+)/i // Nero Home/Nero Scout
|
279
|
-
], [NAME, VERSION], [
|
290
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
280
291
|
|
281
292
|
/(nokia\d+)\/([\w\.-]+)/i // Nokia
|
282
|
-
], [NAME, VERSION], [
|
293
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
283
294
|
|
284
295
|
/\s(songbird)\/([\w\.-]+)/i // Songbird/Philips-Songbird
|
285
|
-
], [NAME, VERSION], [
|
296
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
286
297
|
|
287
298
|
/(winamp)3 version ([\w\.-]+)/i, // Winamp
|
288
299
|
/(winamp)\s([\w\.-]+)/i,
|
289
300
|
/(winamp)mpeg\/([\w\.-]+)/i
|
290
|
-
], [NAME, VERSION], [
|
301
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
291
302
|
|
292
303
|
/(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info)
|
293
304
|
// inlight radio
|
294
|
-
], [NAME], [
|
305
|
+
], [NAME, [TYPE, MEDIAPLAYER]], [
|
295
306
|
|
296
307
|
/(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/([\w\.-]+)/i
|
297
308
|
// QuickTime/RealMedia/RadioApp/RadioClientApplication/
|
298
309
|
// SoundTap/Totem/Stagefright/Streamium
|
299
|
-
], [NAME, VERSION], [
|
310
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
300
311
|
|
301
312
|
/(smp)([\d\.]+)/i // SMP
|
302
|
-
], [NAME, VERSION], [
|
313
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
303
314
|
|
304
315
|
/(vlc) media player - version ([\w\.]+)/i, // VLC Videolan
|
305
316
|
/(vlc)\/([\w\.-]+)/i,
|
306
317
|
/(xbmc|gvfs|xine|xmms|irapp)\/([\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp
|
307
318
|
/(foobar2000)\/([\d\.]+)/i, // Foobar2000
|
308
319
|
/(itunes)\/([\d\.]+)/i // iTunes
|
309
|
-
], [NAME, VERSION], [
|
320
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
310
321
|
|
311
322
|
/(wmplayer)\/([\w\.-]+)/i, // Windows Media Player
|
312
323
|
/(windows-media-player)\/([\w\.-]+)/i
|
313
|
-
], [[NAME, /-/g, ' '], VERSION], [
|
324
|
+
], [[NAME, /-/g, ' '], VERSION, [TYPE, MEDIAPLAYER]], [
|
314
325
|
|
315
326
|
/windows\/([\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i,
|
316
327
|
// Windows Media Server
|
317
|
-
], [VERSION, [NAME, 'Windows']], [
|
328
|
+
], [VERSION, [NAME, 'Windows'], [TYPE, MEDIAPLAYER]], [
|
318
329
|
|
319
330
|
/(com\.riseupradioalarm)\/([\d\.]*)/i // RiseUP Radio Alarm
|
320
|
-
], [NAME, VERSION], [
|
331
|
+
], [NAME, VERSION, [TYPE, MEDIAPLAYER]], [
|
321
332
|
|
322
333
|
/(rad.io)\s([\d\.]+)/i, // Rad.io
|
323
334
|
/(radio.(?:de|at|fr))\s([\d\.]+)/i
|
324
|
-
], [[NAME, 'rad.io'], VERSION]
|
335
|
+
], [[NAME, 'rad.io'], VERSION, [TYPE, MEDIAPLAYER]]
|
325
336
|
]
|
326
337
|
});
|
327
338
|
|
@@ -336,7 +347,21 @@ const Modules = Object.freeze({
|
|
336
347
|
]
|
337
348
|
});
|
338
349
|
|
350
|
+
//////////
|
351
|
+
// BOTS
|
352
|
+
/////////
|
353
|
+
|
354
|
+
const Bots = Object.freeze({
|
355
|
+
browser : [
|
356
|
+
...CLIs.browser,
|
357
|
+
...Crawlers.browser,
|
358
|
+
...Fetchers.browser,
|
359
|
+
...Modules.browser
|
360
|
+
]
|
361
|
+
});
|
362
|
+
|
339
363
|
export {
|
364
|
+
Bots,
|
340
365
|
CLIs,
|
341
366
|
Crawlers,
|
342
367
|
ExtraDevices,
|
@@ -4,12 +4,20 @@
|
|
4
4
|
|
5
5
|
import { IResult } from "../main/ua-parser";
|
6
6
|
|
7
|
+
declare function getDeviceVendor(model: string): string | undefined;
|
7
8
|
declare function isAppleSilicon(res: IResult): boolean;
|
8
|
-
declare function
|
9
|
+
declare function isChromeFamily(res: IResult): boolean;
|
10
|
+
declare function isElectron(): boolean;
|
11
|
+
declare function isFromEU(): boolean;
|
9
12
|
declare function isFrozenUA(ua: string): boolean;
|
13
|
+
declare function isStandalonePWA(): boolean;
|
10
14
|
|
11
15
|
export {
|
16
|
+
getDeviceVendor,
|
12
17
|
isAppleSilicon,
|
13
|
-
|
14
|
-
|
18
|
+
isChromeFamily,
|
19
|
+
isElectron,
|
20
|
+
isFromEU,
|
21
|
+
isFrozenUA,
|
22
|
+
isStandalonePWA
|
15
23
|
}
|