ua-parser-js 2.0.1 → 2.0.3
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/dist/ua-parser.min.js +3 -3
- package/dist/ua-parser.min.mjs +3 -3
- package/dist/ua-parser.pack.js +3 -3
- package/dist/ua-parser.pack.mjs +3 -3
- package/package.json +17 -7
- package/src/enums/ua-parser-enums.d.ts +9 -1
- package/src/enums/ua-parser-enums.js +9 -1
- package/src/enums/ua-parser-enums.mjs +9 -1
- package/src/extensions/ua-parser-extensions.d.ts +1 -1
- package/src/extensions/ua-parser-extensions.js +43 -22
- package/src/extensions/ua-parser-extensions.mjs +43 -22
- package/src/helpers/ua-parser-helpers.d.ts +1 -1
- package/src/helpers/ua-parser-helpers.js +4 -1
- package/src/helpers/ua-parser-helpers.mjs +4 -1
- package/src/main/ua-parser.d.ts +1 -1
- package/src/main/ua-parser.js +33 -15
- package/src/main/ua-parser.mjs +33 -15
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/extensions/ua-parser-extensions.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Extensions for UAParser.js v2.0.
|
6
|
+
/* Extensions for UAParser.js v2.0.3
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -46,25 +46,25 @@ const Crawlers = Object.freeze({
|
|
46
46
|
[
|
47
47
|
// AhrefsBot - https://ahrefs.com/robot
|
48
48
|
// Amazonbot - https://developer.amazon.com/amazonbot
|
49
|
-
// Bingbot -
|
49
|
+
// Bingbot / AdIdxBot - https://www.bing.com/webmasters/help/which-crawlers-does-bing-use-8c184ec0
|
50
50
|
// CCBot - https://commoncrawl.org/faq
|
51
51
|
// Dotbot - https://moz.com/help/moz-procedures/crawlers/dotbot
|
52
52
|
// DuckDuckBot - http://duckduckgo.com/duckduckbot.html
|
53
53
|
// FacebookBot - https://developers.facebook.com/docs/sharing/bot/
|
54
54
|
// GPTBot - https://platform.openai.com/docs/gptbot
|
55
|
+
// LinkedInBot - http://www.linkedin.com
|
55
56
|
// MJ12bot - https://mj12bot.com/
|
56
57
|
// MojeekBot - https://www.mojeek.com/bot.html
|
57
58
|
// OpenAI's SearchGPT - https://platform.openai.com/docs/bots
|
58
59
|
// PerplexityBot - https://perplexity.ai/perplexitybot
|
59
|
-
// SemrushBot - http://www.semrush.com/bot.html
|
60
60
|
// SeznamBot - http://napoveda.seznam.cz/seznambot-intro
|
61
|
-
/((?:ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
61
|
+
/((?:adidx|ahrefs|amazon|bing|cc|dot|duckduck|exa|facebook|gpt|linkedin|mj12|mojeek|oai-search|perplexity|semrush|seznam)bot)\/([\w\.-]+)/i,
|
62
62
|
|
63
63
|
// Applebot - http://apple.com/go/applebot
|
64
|
-
/(applebot(?:-extended)?)
|
64
|
+
/(applebot(?:-extended)?)\/?([\w\.]*)/i,
|
65
65
|
|
66
66
|
// Baiduspider https://help.baidu.com/question?prod_id=99&class=0&id=3001
|
67
|
-
/(baiduspider
|
67
|
+
/(baiduspider[-imagevdonwsfcpr]{0,7})\/?([\w\.]*)/i,
|
68
68
|
|
69
69
|
// ClaudeBot (Anthropic)
|
70
70
|
/(claude(?:bot|-web)|anthropic-ai)\/?([\w\.]*)/i,
|
@@ -82,6 +82,9 @@ const Crawlers = Object.freeze({
|
|
82
82
|
// Internet Archive (archive.org)
|
83
83
|
/(ia_archiver|archive\.org_bot)\/?([\w\.]*)/i,
|
84
84
|
|
85
|
+
// SemrushBot - http://www.semrush.com/bot.html
|
86
|
+
/((?:semrush|splitsignal)bot[-abcfimostw]*)\/?([\w\.-]*)/i,
|
87
|
+
|
85
88
|
// Sogou Spider
|
86
89
|
/(sogou (?:pic|head|web|orion|news) spider)\/([\w\.]+)/i,
|
87
90
|
|
@@ -94,8 +97,8 @@ const Crawlers = Object.freeze({
|
|
94
97
|
// Yeti (Naver)
|
95
98
|
/(yeti)\/([\w\.]+)/i,
|
96
99
|
|
97
|
-
// aiHitBot / Diffbot / Magpie-Crawler / Omgilibot / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
98
|
-
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |yisou)spider)\/?([\w\.]*)/i
|
100
|
+
// aiHitBot / Diffbot / Linespider / Magpie-Crawler / Omgilibot / OpenAI Image Downloader / Webzio-Extended / Screaming Frog SEO Spider / Timpibot / VelenPublicWebCrawler / YisouSpider / YouBot
|
101
|
+
/((?:aihit|diff|timpi|you)bot|omgili(?:bot)?|openai image downloader|(?:magpie-|velenpublicweb)crawler|webzio-extended|(?:screaming frog seo |line|yisou)spider)\/?([\w\.]*)/i
|
99
102
|
],
|
100
103
|
|
101
104
|
[NAME, VERSION, [TYPE, CRAWLER]],
|
@@ -112,7 +115,7 @@ const Crawlers = Object.freeze({
|
|
112
115
|
// Qihoo 360Spider
|
113
116
|
// TurnitinBot - https://www.turnitin.com/robot/crawlerinfo.html
|
114
117
|
// Yahoo! Slurp - http://help.yahoo.com/help/us/ysearch/slurp
|
115
|
-
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|
|
118
|
+
/\b(360spider-?(?:image|video)?|bytespider|(?:ai2|aspiegel|dataforseo|imagesift|petal|turnitin)bot|teoma|yahoo! slurp)/i
|
116
119
|
],
|
117
120
|
[NAME, [TYPE, CRAWLER]]
|
118
121
|
]
|
@@ -221,27 +224,35 @@ const Fetchers = Object.freeze({
|
|
221
224
|
// AhrefsSiteAudit - https://ahrefs.com/robot/site-audit
|
222
225
|
// ChatGPT-User - https://platform.openai.com/docs/plugins/bot
|
223
226
|
// DuckAssistBot - https://duckduckgo.com/duckassistbot/
|
224
|
-
// BingPreview / Mastodon / Pinterestbot / Redditbot / Rogerbot / Telegrambot / Twitterbot / UptimeRobot
|
227
|
+
// Better Uptime / BingPreview / Mastodon / MicrosoftPreview / Pinterestbot / Redditbot / Rogerbot / SiteAuditBot / Telegrambot / Twitterbot / UptimeRobot
|
225
228
|
// Google Site Verifier / Meta / Yahoo! Japan
|
226
229
|
// Yandex Bots - https://yandex.com/bots
|
227
|
-
/(ahrefssiteaudit|
|
230
|
+
/(ahrefssiteaudit|(?:bing|microsoft)preview|chatgpt-user|mastodon|(?:discord|duckassist|linkedin|pinterest|reddit|roger|siteaudit|twitter|uptimero)bot|google-site-verification|meta-externalfetcher|y!?j-dlc|yandex(?:calendar|direct(?:dyn)?|searchshop)|yadirectfetcher)\/([\w\.]+)/i,
|
228
231
|
|
229
232
|
// Bluesky
|
230
233
|
/(bluesky) cardyb\/([\w\.]+)/i,
|
231
234
|
|
235
|
+
// Skype
|
236
|
+
/(skypeuripreview) preview\/([\w\.]+)/i,
|
237
|
+
|
232
238
|
// Slackbot - https://api.slack.com/robots
|
233
239
|
/(slack(?:bot)?(?:-imgproxy|-linkexpanding)?) ([\w\.]+)/i,
|
234
240
|
|
235
241
|
// WhatsApp
|
236
|
-
/(whatsapp)\/([\w\.]+)
|
242
|
+
/(whatsapp)\/([\w\.]+)/i
|
237
243
|
],
|
238
244
|
[NAME, VERSION, [TYPE, FETCHER]],
|
239
245
|
|
240
246
|
[
|
241
247
|
// Google Bots / Cohere / Snapchat / Vercelbot / Yandex Bots
|
242
|
-
/(cohere-ai|
|
248
|
+
/((?:better uptime |telegram|vercel)bot|cohere-ai|feedfetcher-google|google(?:imageproxy|-read-aloud|-pagerenderer|producer)|snap url preview|yandex(?:sitelinks|userproxy))/i
|
243
249
|
],
|
244
250
|
[NAME, [TYPE, FETCHER]],
|
251
|
+
],
|
252
|
+
|
253
|
+
os : [
|
254
|
+
[/whatsapp\/[\d\.]+ (a|i)/i],
|
255
|
+
[[NAME, os => os == 'A' ? 'Android' : 'iOS' ]]
|
245
256
|
]
|
246
257
|
});
|
247
258
|
|
@@ -252,10 +263,12 @@ const Fetchers = Object.freeze({
|
|
252
263
|
const InApps = Object.freeze({
|
253
264
|
browser : [
|
254
265
|
// Slack
|
255
|
-
[/chatlyio\/([\d\.]+)/i],
|
266
|
+
[/(?:slack(?=.+electron|.+ios)|chatlyio)\/([\d\.]+)/i],
|
267
|
+
[VERSION, [NAME, 'Slack'], [TYPE, INAPP]],
|
256
268
|
|
257
269
|
// Yahoo! Japan
|
258
|
-
[/jp\.co\.yahoo\.android\.yjtop\/([\d\.]+)/i],
|
270
|
+
[/jp\.co\.yahoo\.(?:android\.yjtop|ipn\.appli)\/([\d\.]+)/i],
|
271
|
+
[VERSION, [NAME, 'Yahoo! Japan'], [TYPE, INAPP]]
|
259
272
|
]
|
260
273
|
});
|
261
274
|
|
@@ -331,15 +344,20 @@ const Libraries = Object.freeze({
|
|
331
344
|
|
332
345
|
const Vehicles = Object.freeze({
|
333
346
|
device : [
|
334
|
-
[
|
335
|
-
|
336
|
-
|
347
|
+
[/aftlbt962e2/i], // BMW
|
348
|
+
[[VENDOR, 'BMW']],
|
349
|
+
|
350
|
+
[/dilink.+(byd) auto/i], // BYD
|
351
|
+
[VENDOR],
|
337
352
|
|
338
|
-
|
339
|
-
], [
|
353
|
+
[/aftlft962x3/i], // Jeep
|
354
|
+
[[VENDOR, 'Jeep'], [MODEL, 'Wagooner']],
|
355
|
+
|
356
|
+
[/(rivian) (r1t)/i], // Rivian
|
357
|
+
[VENDOR, MODEL],
|
340
358
|
|
341
|
-
|
342
|
-
|
359
|
+
[/vcc.+netfront/i], // Volvo
|
360
|
+
[[VENDOR, 'Volvo']]
|
343
361
|
]
|
344
362
|
});
|
345
363
|
|
@@ -353,6 +371,9 @@ const Bots = Object.freeze({
|
|
353
371
|
...Crawlers.browser,
|
354
372
|
...Fetchers.browser,
|
355
373
|
...Libraries.browser
|
374
|
+
],
|
375
|
+
os : [
|
376
|
+
...Fetchers.os
|
356
377
|
]
|
357
378
|
});
|
358
379
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
///////////////////////////////////////////////
|
2
|
-
/* Helpers for UAParser.js v2.0.
|
2
|
+
/* Helpers for UAParser.js v2.0.3
|
3
3
|
https://github.com/faisalman/ua-parser-js
|
4
4
|
Author: Faisal Salman <f@faisalman.com>
|
5
5
|
AGPLv3 License */
|
@@ -93,6 +93,9 @@ const isAIBot = (resultOrUA) => [
|
|
93
93
|
// Perplexity
|
94
94
|
'perplexitybot',
|
95
95
|
|
96
|
+
// Semrush
|
97
|
+
'semrushbot-ocob',
|
98
|
+
|
96
99
|
// Timpi
|
97
100
|
'timpibot',
|
98
101
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
// Source: /src/helpers/ua-parser-helpers.js
|
4
4
|
|
5
5
|
///////////////////////////////////////////////
|
6
|
-
/* Helpers for UAParser.js v2.0.
|
6
|
+
/* Helpers for UAParser.js v2.0.3
|
7
7
|
https://github.com/faisalman/ua-parser-js
|
8
8
|
Author: Faisal Salman <f@faisalman.com>
|
9
9
|
AGPLv3 License */
|
@@ -97,6 +97,9 @@ const isAIBot = (resultOrUA) => [
|
|
97
97
|
// Perplexity
|
98
98
|
'perplexitybot',
|
99
99
|
|
100
|
+
// Semrush
|
101
|
+
'semrushbot-ocob',
|
102
|
+
|
100
103
|
// Timpi
|
101
104
|
'timpibot',
|
102
105
|
|
package/src/main/ua-parser.d.ts
CHANGED
package/src/main/ua-parser.js
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/////////////////////////////////////////////////////////////////////////////////
|
2
|
-
/* UAParser.js v2.0.
|
3
|
-
Copyright © 2012-
|
2
|
+
/* UAParser.js v2.0.3
|
3
|
+
Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
|
4
4
|
AGPLv3 License *//*
|
5
5
|
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
6
6
|
Supports browser & node.js environment.
|
@@ -19,7 +19,7 @@
|
|
19
19
|
// Constants
|
20
20
|
/////////////
|
21
21
|
|
22
|
-
var LIBVERSION = '2.0.
|
22
|
+
var LIBVERSION = '2.0.3',
|
23
23
|
UA_MAX_LENGTH = 500,
|
24
24
|
USER_AGENT = 'user-agent',
|
25
25
|
EMPTY = '',
|
@@ -353,11 +353,11 @@
|
|
353
353
|
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
|
354
354
|
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
355
355
|
|
356
|
-
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
357
|
-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
|
356
|
+
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble
|
357
|
+
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,
|
358
358
|
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
|
359
|
-
/(heytap|ovi|115)browser\/([\d\.]+)/i,
|
360
|
-
/(weibo)__([\d\.]+)/i
|
359
|
+
/(heytap|ovi|115|surf)browser\/([\d\.]+)/i, // HeyTap/Ovi/115/Surf
|
360
|
+
/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i // Ecosia/Weibo
|
361
361
|
], [NAME, VERSION], [
|
362
362
|
/quark(?:pc)?\/([-\w\.]+)/i // Quark
|
363
363
|
], [VERSION, [NAME, 'Quark']], [
|
@@ -585,8 +585,11 @@
|
|
585
585
|
/\b(opd2(\d{3}a?))(?: bui|\))/i
|
586
586
|
], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [
|
587
587
|
|
588
|
+
// BLU Vivo Series
|
589
|
+
/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
|
590
|
+
], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [
|
588
591
|
// Vivo
|
589
|
-
|
592
|
+
/; vivo (\w+)(?: bui|\))/i,
|
590
593
|
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
591
594
|
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
592
595
|
|
@@ -606,7 +609,7 @@
|
|
606
609
|
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
607
610
|
], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
|
608
611
|
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
609
|
-
/\blg[-e;\/ ]+((
|
612
|
+
/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
|
610
613
|
/\blg-?([\d\w]+) bui/i
|
611
614
|
], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
|
612
615
|
|
@@ -713,6 +716,14 @@
|
|
713
716
|
/droid.+; (a(?:015|06[35]|142p?))/i
|
714
717
|
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
|
715
718
|
|
719
|
+
// Archos
|
720
|
+
/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
|
721
|
+
/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
|
722
|
+
], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [
|
723
|
+
/archos ([\w ]+)( b|\))/i,
|
724
|
+
/; (ac[3-6]\d\w{2,8})( b|\))/i
|
725
|
+
], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [
|
726
|
+
|
716
727
|
// MIXED
|
717
728
|
/(imo) (tab \w+)/i, // IMO
|
718
729
|
/(infinix) (x1101b?)/i // Infinix XPad
|
@@ -720,7 +731,7 @@
|
|
720
731
|
|
721
732
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
|
722
733
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
|
723
|
-
/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,
|
734
|
+
/; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/TCL
|
724
735
|
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
725
736
|
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
|
726
737
|
/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i, // Lenovo
|
@@ -728,7 +739,6 @@
|
|
728
739
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
729
740
|
|
730
741
|
/(kobo)\s(ereader|touch)/i, // Kobo
|
731
|
-
/(archos) (gamepad2?)/i, // Archos
|
732
742
|
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
733
743
|
/(kindle)\/([\w\.]+)/i // Kindle
|
734
744
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
@@ -756,7 +766,9 @@
|
|
756
766
|
], [VENDOR, [TYPE, SMARTTV]], [
|
757
767
|
/hbbtv.+maple;(\d+)/i
|
758
768
|
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
759
|
-
/(
|
769
|
+
/tcast.+(lg)e?. ([-\w]+)/i // LG SmartTV
|
770
|
+
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
|
771
|
+
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
760
772
|
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
761
773
|
/(apple) ?tv/i // Apple TV
|
762
774
|
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
@@ -768,6 +780,8 @@
|
|
768
780
|
], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
769
781
|
/crkey/i // Google Chromecast, Linux-based or unknown
|
770
782
|
], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
783
|
+
/(portaltv)/i // Facebook Portal TV
|
784
|
+
], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [
|
771
785
|
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
772
786
|
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
773
787
|
/(shield \w+ tv)/i // Nvidia Shield TV
|
@@ -836,7 +850,7 @@
|
|
836
850
|
], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [
|
837
851
|
/(pico) (4|neo3(?: link|pro)?)/i // Pico
|
838
852
|
], [VENDOR, MODEL, [TYPE, XR]], [
|
839
|
-
|
853
|
+
/(quest( \d| pro)?s?).+vr/i // Meta Quest
|
840
854
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [
|
841
855
|
|
842
856
|
///////////////////
|
@@ -931,7 +945,7 @@
|
|
931
945
|
/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
|
932
946
|
], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
|
933
947
|
// Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
|
934
|
-
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[
|
948
|
+
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i
|
935
949
|
], [NAME, VERSION], [
|
936
950
|
/\(bb(10);/i // BlackBerry 10
|
937
951
|
], [VERSION, [NAME, BLACKBERRY]], [
|
@@ -1213,7 +1227,11 @@
|
|
1213
1227
|
'Chrome' : 'Google Chrome',
|
1214
1228
|
'Edge' : 'Microsoft Edge',
|
1215
1229
|
'Chrome WebView' : 'Android WebView',
|
1216
|
-
'Chrome Headless' : 'HeadlessChrome'
|
1230
|
+
'Chrome Headless' : 'HeadlessChrome',
|
1231
|
+
'Huawei Browser' : 'HuaweiBrowser',
|
1232
|
+
'MIUI Browser' : 'Miui Browser',
|
1233
|
+
'Opera Mobi' : 'OperaMobile',
|
1234
|
+
'Yandex' : 'YaBrowser'
|
1217
1235
|
});
|
1218
1236
|
this.set(NAME, brandName)
|
1219
1237
|
.set(VERSION, brandVersion)
|
package/src/main/ua-parser.mjs
CHANGED
@@ -3,8 +3,8 @@
|
|
3
3
|
// Source: /src/main/ua-parser.js
|
4
4
|
|
5
5
|
/////////////////////////////////////////////////////////////////////////////////
|
6
|
-
/* UAParser.js v2.0.
|
7
|
-
Copyright © 2012-
|
6
|
+
/* UAParser.js v2.0.3
|
7
|
+
Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
|
8
8
|
AGPLv3 License *//*
|
9
9
|
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
|
10
10
|
Supports browser & node.js environment.
|
@@ -21,7 +21,7 @@
|
|
21
21
|
// Constants
|
22
22
|
/////////////
|
23
23
|
|
24
|
-
var LIBVERSION = '2.0.
|
24
|
+
var LIBVERSION = '2.0.3',
|
25
25
|
UA_MAX_LENGTH = 500,
|
26
26
|
USER_AGENT = 'user-agent',
|
27
27
|
EMPTY = '',
|
@@ -355,11 +355,11 @@
|
|
355
355
|
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
|
356
356
|
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
357
357
|
|
358
|
-
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
359
|
-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
|
358
|
+
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble
|
359
|
+
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:lg |qute)browser)\/([-\w\.]+)/i,
|
360
360
|
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
|
361
|
-
/(heytap|ovi|115)browser\/([\d\.]+)/i,
|
362
|
-
/(weibo)__([\d\.]+)/i
|
361
|
+
/(heytap|ovi|115|surf)browser\/([\d\.]+)/i, // HeyTap/Ovi/115/Surf
|
362
|
+
/(ecosia|weibo)(?:__| \w+@)([\d\.]+)/i // Ecosia/Weibo
|
363
363
|
], [NAME, VERSION], [
|
364
364
|
/quark(?:pc)?\/([-\w\.]+)/i // Quark
|
365
365
|
], [VERSION, [NAME, 'Quark']], [
|
@@ -587,8 +587,11 @@
|
|
587
587
|
/\b(opd2(\d{3}a?))(?: bui|\))/i
|
588
588
|
], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [
|
589
589
|
|
590
|
+
// BLU Vivo Series
|
591
|
+
/(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\w\+ ]*)(?: bui|\))/i
|
592
|
+
], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [
|
590
593
|
// Vivo
|
591
|
-
|
594
|
+
/; vivo (\w+)(?: bui|\))/i,
|
592
595
|
/\b(v[12]\d{3}\w?[at])(?: bui|;)/i
|
593
596
|
], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
|
594
597
|
|
@@ -608,7 +611,7 @@
|
|
608
611
|
/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
|
609
612
|
], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
|
610
613
|
/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
|
611
|
-
/\blg[-e;\/ ]+((
|
614
|
+
/\blg[-e;\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\w+)/i,
|
612
615
|
/\blg-?([\d\w]+) bui/i
|
613
616
|
], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
|
614
617
|
|
@@ -715,6 +718,14 @@
|
|
715
718
|
/droid.+; (a(?:015|06[35]|142p?))/i
|
716
719
|
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
|
717
720
|
|
721
|
+
// Archos
|
722
|
+
/; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i,
|
723
|
+
/archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i
|
724
|
+
], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [
|
725
|
+
/archos ([\w ]+)( b|\))/i,
|
726
|
+
/; (ac[3-6]\d\w{2,8})( b|\))/i
|
727
|
+
], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [
|
728
|
+
|
718
729
|
// MIXED
|
719
730
|
/(imo) (tab \w+)/i, // IMO
|
720
731
|
/(infinix) (x1101b?)/i // Infinix XPad
|
@@ -722,7 +733,7 @@
|
|
722
733
|
|
723
734
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
|
724
735
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
|
725
|
-
/; (hmd|imo) ([\w ]+?)(?: bui|\))/i,
|
736
|
+
/; (blu|hmd|imo|tcl)[_ ]([\w\+ ]+?)(?: bui|\)|; r)/i, // BLU/HMD/IMO/TCL
|
726
737
|
/(hp) ([\w ]+\w)/i, // HP iPAQ
|
727
738
|
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
|
728
739
|
/(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i, // Lenovo
|
@@ -730,7 +741,6 @@
|
|
730
741
|
], [VENDOR, MODEL, [TYPE, MOBILE]], [
|
731
742
|
|
732
743
|
/(kobo)\s(ereader|touch)/i, // Kobo
|
733
|
-
/(archos) (gamepad2?)/i, // Archos
|
734
744
|
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
|
735
745
|
/(kindle)\/([\w\.]+)/i // Kindle
|
736
746
|
], [VENDOR, MODEL, [TYPE, TABLET]], [
|
@@ -758,7 +768,9 @@
|
|
758
768
|
], [VENDOR, [TYPE, SMARTTV]], [
|
759
769
|
/hbbtv.+maple;(\d+)/i
|
760
770
|
], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
|
761
|
-
/(
|
771
|
+
/tcast.+(lg)e?. ([-\w]+)/i // LG SmartTV
|
772
|
+
], [VENDOR, MODEL, [TYPE, SMARTTV]], [
|
773
|
+
/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i
|
762
774
|
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
763
775
|
/(apple) ?tv/i // Apple TV
|
764
776
|
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
@@ -770,6 +782,8 @@
|
|
770
782
|
], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
771
783
|
/crkey/i // Google Chromecast, Linux-based or unknown
|
772
784
|
], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
785
|
+
/(portaltv)/i // Facebook Portal TV
|
786
|
+
], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [
|
773
787
|
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
774
788
|
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
775
789
|
/(shield \w+ tv)/i // Nvidia Shield TV
|
@@ -838,7 +852,7 @@
|
|
838
852
|
], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [
|
839
853
|
/(pico) (4|neo3(?: link|pro)?)/i // Pico
|
840
854
|
], [VENDOR, MODEL, [TYPE, XR]], [
|
841
|
-
|
855
|
+
/(quest( \d| pro)?s?).+vr/i // Meta Quest
|
842
856
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [
|
843
857
|
|
844
858
|
///////////////////
|
@@ -933,7 +947,7 @@
|
|
933
947
|
/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
|
934
948
|
], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
|
935
949
|
// Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
|
936
|
-
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[
|
950
|
+
/(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/\.; ]?([\d\.]*)/i
|
937
951
|
], [NAME, VERSION], [
|
938
952
|
/\(bb(10);/i // BlackBerry 10
|
939
953
|
], [VERSION, [NAME, BLACKBERRY]], [
|
@@ -1215,7 +1229,11 @@
|
|
1215
1229
|
'Chrome' : 'Google Chrome',
|
1216
1230
|
'Edge' : 'Microsoft Edge',
|
1217
1231
|
'Chrome WebView' : 'Android WebView',
|
1218
|
-
'Chrome Headless' : 'HeadlessChrome'
|
1232
|
+
'Chrome Headless' : 'HeadlessChrome',
|
1233
|
+
'Huawei Browser' : 'HuaweiBrowser',
|
1234
|
+
'MIUI Browser' : 'Miui Browser',
|
1235
|
+
'Opera Mobi' : 'OperaMobile',
|
1236
|
+
'Yandex' : 'YaBrowser'
|
1219
1237
|
});
|
1220
1238
|
this.set(NAME, brandName)
|
1221
1239
|
.set(VERSION, brandVersion)
|