ua-parser-js 2.0.0-beta.3 → 2.0.0-rc.2
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 +9 -4
- package/src/enums/ua-parser-enums.js +22 -6
- package/src/enums/ua-parser-enums.mjs +22 -6
- package/src/extensions/ua-parser-extensions.d.ts +2 -1
- 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 +14 -4
- package/src/helpers/ua-parser-helpers.js +38 -6
- package/src/helpers/ua-parser-helpers.mjs +39 -7
- package/src/main/ua-parser.d.ts +3 -3
- package/src/main/ua-parser.js +83 -33
- package/src/main/ua-parser.mjs +83 -33
package/src/main/ua-parser.mjs
CHANGED
@@ -3,12 +3,12 @@
|
|
3
3
|
// Source: /src/main/ua-parser.js
|
4
4
|
|
5
5
|
/////////////////////////////////////////////////////////////////////////////////
|
6
|
-
/* UAParser.js v2.0.0-
|
6
|
+
/* UAParser.js v2.0.0-rc.2
|
7
7
|
Copyright © 2012-2024 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.
|
11
|
-
Demo : https://
|
11
|
+
Demo : https://uaparser.dev
|
12
12
|
Source : https://github.com/faisalman/ua-parser-js */
|
13
13
|
/////////////////////////////////////////////////////////////////////////////////
|
14
14
|
|
@@ -21,7 +21,7 @@
|
|
21
21
|
// Constants
|
22
22
|
/////////////
|
23
23
|
|
24
|
-
var LIBVERSION = '2.0.0-
|
24
|
+
var LIBVERSION = '2.0.0-rc.2',
|
25
25
|
EMPTY = '',
|
26
26
|
UNKNOWN = '?',
|
27
27
|
FUNC_TYPE = 'function',
|
@@ -42,6 +42,7 @@
|
|
42
42
|
WEARABLE = 'wearable',
|
43
43
|
XR = 'xr',
|
44
44
|
EMBEDDED = 'embedded',
|
45
|
+
INAPP = 'inapp',
|
45
46
|
USER_AGENT = 'user-agent',
|
46
47
|
UA_MAX_LENGTH = 500,
|
47
48
|
BRANDS = 'brands',
|
@@ -84,6 +85,7 @@
|
|
84
85
|
PREFIX_MOBILE = 'Mobile ',
|
85
86
|
SUFFIX_BROWSER = ' Browser',
|
86
87
|
CHROME = 'Chrome',
|
88
|
+
CHROMECAST = 'Chromecast',
|
87
89
|
EDGE = 'Edge',
|
88
90
|
FIREFOX = 'Firefox',
|
89
91
|
OPERA = 'Opera',
|
@@ -321,19 +323,23 @@
|
|
321
323
|
// Mixed
|
322
324
|
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
|
323
325
|
], [VERSION, [NAME, 'Baidu']], [
|
326
|
+
/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i // Maxthon
|
327
|
+
], [VERSION, [NAME, 'Maxthon']], [
|
324
328
|
/(kindle)\/([\w\.]+)/i, // Kindle
|
325
329
|
/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
|
326
330
|
// Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
|
327
331
|
// Trident based
|
328
|
-
/(avant|iemobile|slim
|
332
|
+
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
|
329
333
|
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
|
330
334
|
|
331
|
-
// Webkit/KHTML based
|
332
|
-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|
|
333
|
-
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar
|
334
|
-
/(heytap|ovi)browser\/([\d\.]+)/i,
|
335
|
+
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
|
336
|
+
/(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,
|
337
|
+
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
|
338
|
+
/(heytap|ovi|115)browser\/([\d\.]+)/i, // HeyTap/Ovi/115
|
335
339
|
/(weibo)__([\d\.]+)/i // Weibo
|
336
340
|
], [NAME, VERSION], [
|
341
|
+
/quark(?:pc)?\/([-\w\.]+)/i // Quark
|
342
|
+
], [VERSION, [NAME, 'Quark']], [
|
337
343
|
/\bddg\/([\w\.]+)/i // DuckDuckGo
|
338
344
|
], [VERSION, [NAME, 'DuckDuckGo']], [
|
339
345
|
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
|
@@ -366,31 +372,31 @@
|
|
366
372
|
], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [
|
367
373
|
/fxios\/([\w\.-]+)/i // Firefox for iOS
|
368
374
|
], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [
|
369
|
-
/\
|
370
|
-
], [[NAME, '360'
|
375
|
+
/\bqihoobrowser\/?([\w\.]*)/i // 360
|
376
|
+
], [VERSION, [NAME, '360']], [
|
371
377
|
/\b(qq)\/([\w\.]+)/i // QQ
|
372
378
|
], [[NAME, /(.+)/, '$1Browser'], VERSION], [
|
373
379
|
/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
|
374
380
|
], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
|
375
381
|
/samsungbrowser\/([\w\.]+)/i // Samsung Internet
|
376
382
|
], [VERSION, [NAME, SAMSUNG + ' Internet']], [
|
377
|
-
/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
|
378
|
-
], [[NAME, /_/g, ' '], VERSION], [
|
379
383
|
/metasr[\/ ]?([\d\.]+)/i // Sogou Explorer
|
380
384
|
], [VERSION, [NAME, SOGOU + ' Explorer']], [
|
381
385
|
/(sogou)mo\w+\/([\d\.]+)/i // Sogou Mobile
|
382
386
|
], [[NAME, SOGOU + ' Mobile'], VERSION], [
|
383
387
|
/(electron)\/([\w\.]+) safari/i, // Electron-based App
|
384
388
|
/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
|
385
|
-
/m?(qqbrowser|
|
389
|
+
/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i // QQ/2345
|
386
390
|
], [NAME, VERSION], [
|
387
|
-
/(lbbrowser|rekonq)/i
|
388
|
-
/\[(linkedin)app\]/i // LinkedIn App for iOS & Android
|
391
|
+
/(lbbrowser|rekonq)/i // LieBao Browser/Rekonq
|
389
392
|
], [NAME], [
|
393
|
+
/ome\/([\w\.]+) \w* ?(iron) saf/i, // Iron
|
394
|
+
/ome\/([\w\.]+).+qihu (360)[es]e/i // 360
|
395
|
+
], [VERSION, NAME], [
|
390
396
|
|
391
397
|
// WebView
|
392
398
|
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
|
393
|
-
], [[NAME, FACEBOOK], VERSION], [
|
399
|
+
], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [
|
394
400
|
/(Klarna)\/([\w\.]+)/i, // Klarna Shopping Browser for iOS & Android
|
395
401
|
/(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
|
396
402
|
/(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
|
@@ -398,12 +404,17 @@
|
|
398
404
|
/\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
|
399
405
|
/(alipay)client\/([\w\.]+)/i, // Alipay
|
400
406
|
/(twitter)(?:and| f.+e\/([\w\.]+))/i, // Twitter
|
401
|
-
/(
|
402
|
-
], [NAME, VERSION], [
|
407
|
+
/(instagram|snapchat)[\/ ]([-\w\.]+)/i // Instagram/Snapchat
|
408
|
+
], [NAME, VERSION, [TYPE, INAPP]], [
|
403
409
|
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
|
404
|
-
], [VERSION, [NAME, 'GSA']], [
|
410
|
+
], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [
|
405
411
|
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
|
406
|
-
], [VERSION, [NAME, 'TikTok']], [
|
412
|
+
], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [
|
413
|
+
/\[(linkedin)app\]/i // LinkedIn App for iOS & Android
|
414
|
+
], [NAME, [TYPE, INAPP]], [
|
415
|
+
|
416
|
+
/(chromium)[\/ ]([-\w\.]+)/i // Chromium
|
417
|
+
], [NAME, VERSION], [
|
407
418
|
|
408
419
|
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
|
409
420
|
], [VERSION, [NAME, CHROME+' Headless']], [
|
@@ -437,7 +448,7 @@
|
|
437
448
|
], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [
|
438
449
|
/(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
|
439
450
|
], [[NAME, 'Netscape'], VERSION], [
|
440
|
-
/(wolvic)\/([\w\.]+)/i
|
451
|
+
/(wolvic|librewolf)\/([\w\.]+)/i // Wolvic/LibreWolf
|
441
452
|
], [NAME, VERSION], [
|
442
453
|
/mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
|
443
454
|
], [VERSION, [NAME, FIREFOX+' Reality']], [
|
@@ -499,8 +510,8 @@
|
|
499
510
|
// Samsung
|
500
511
|
/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
|
501
512
|
], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
|
502
|
-
/\b((?:s[cgp]h|gt|sm)
|
503
|
-
/samsung[- ]([-\w]+)/i,
|
513
|
+
/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
|
514
|
+
/samsung[- ]((?!sm-[lr])[-\w]+)/i,
|
504
515
|
/sec-(sgh\w+)/i
|
505
516
|
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
|
506
517
|
|
@@ -531,7 +542,7 @@
|
|
531
542
|
/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
|
532
543
|
/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
|
533
544
|
/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i, // Xiaomi Redmi 'numeric' models
|
534
|
-
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
|
545
|
+
/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i // Xiaomi Mi
|
535
546
|
], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
|
536
547
|
/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, // Redmi Pad
|
537
548
|
/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
|
@@ -599,7 +610,7 @@
|
|
599
610
|
|
600
611
|
// Amazon
|
601
612
|
/(alexa)webm/i,
|
602
|
-
/(kf[a-z]{2}wi|aeo
|
613
|
+
/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i, // Kindle Fire without Silk / Echo Show
|
603
614
|
/(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
|
604
615
|
], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
|
605
616
|
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
|
@@ -628,6 +639,17 @@
|
|
628
639
|
/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
|
629
640
|
], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
|
630
641
|
|
642
|
+
// TCL
|
643
|
+
/tcl (xess p17aa)/i,
|
644
|
+
/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i
|
645
|
+
], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [
|
646
|
+
/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i
|
647
|
+
], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [
|
648
|
+
|
649
|
+
// itel
|
650
|
+
/(itel) ((\w+))/i
|
651
|
+
], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [
|
652
|
+
|
631
653
|
// Acer
|
632
654
|
/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
|
633
655
|
], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
|
@@ -641,6 +663,10 @@
|
|
641
663
|
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
|
642
664
|
], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
|
643
665
|
|
666
|
+
// Nothing
|
667
|
+
/droid.+; (a(?:015|06[35]|142p?))/i
|
668
|
+
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
|
669
|
+
|
644
670
|
// MIXED
|
645
671
|
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
|
646
672
|
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
|
@@ -685,8 +711,14 @@
|
|
685
711
|
], [[VENDOR, LG], [TYPE, SMARTTV]], [
|
686
712
|
/(apple) ?tv/i // Apple TV
|
687
713
|
], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
|
688
|
-
/crkey/i
|
689
|
-
], [[MODEL,
|
714
|
+
/crkey.*devicetype\/chromecast/i // Google Chromecast Third Generation
|
715
|
+
], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
716
|
+
/crkey.*devicetype\/([^/]*)/i // Google Chromecast with specific device type
|
717
|
+
], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
718
|
+
/fuchsia.*crkey/i // Google Chromecast Nest Hub
|
719
|
+
], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
720
|
+
/crkey/i // Google Chromecast, Linux-based or unknown
|
721
|
+
], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
|
690
722
|
/droid.+aft(\w+)( bui|\))/i // Fire TV
|
691
723
|
], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
|
692
724
|
/\(dtv[\);].+(aquos)/i,
|
@@ -722,6 +754,8 @@
|
|
722
754
|
// WEARABLES
|
723
755
|
///////////////////
|
724
756
|
|
757
|
+
/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i // Samsung Galaxy Watch
|
758
|
+
], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [
|
725
759
|
/((pebble))app/i // Pebble
|
726
760
|
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
|
727
761
|
/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
|
@@ -735,7 +769,9 @@
|
|
735
769
|
|
736
770
|
/droid.+; (glass) \d/i // Google Glass
|
737
771
|
], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [
|
738
|
-
/(
|
772
|
+
/(pico) (4|neo3(?: link|pro)?)/i // Pico
|
773
|
+
], [VENDOR, MODEL, [TYPE, XR]], [
|
774
|
+
/; (quest( \d| pro)?)/i // Oculus Quest
|
739
775
|
], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [
|
740
776
|
|
741
777
|
///////////////////
|
@@ -768,6 +804,9 @@
|
|
768
804
|
/windows.+ edge\/([\w\.]+)/i // EdgeHTML
|
769
805
|
], [VERSION, [NAME, EDGE+'HTML']], [
|
770
806
|
|
807
|
+
/(arkweb)\/([\w\.]+)/i // ArkWeb
|
808
|
+
], [NAME, VERSION], [
|
809
|
+
|
771
810
|
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
|
772
811
|
], [VERSION, [NAME, 'Blink']], [
|
773
812
|
|
@@ -804,10 +843,22 @@
|
|
804
843
|
/(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
|
805
844
|
], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [
|
806
845
|
|
846
|
+
// Google Chromecast
|
847
|
+
/android ([\d\.]+).*crkey/i // Google Chromecast, Android-based
|
848
|
+
], [VERSION, [NAME, CHROMECAST + ' Android']], [
|
849
|
+
/fuchsia.*crkey\/([\d\.]+)/i // Google Chromecast, Fuchsia-based
|
850
|
+
], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [
|
851
|
+
/crkey\/([\d\.]+).*devicetype\/smartspeaker/i // Google Chromecast, Linux-based Smart Speaker
|
852
|
+
], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [
|
853
|
+
/linux.*crkey\/([\d\.]+)/i // Google Chromecast, Legacy Linux-based
|
854
|
+
], [VERSION, [NAME, CHROMECAST + ' Linux']], [
|
855
|
+
/crkey\/([\d\.]+)/i // Google Chromecast, unknown
|
856
|
+
], [VERSION, [NAME, CHROMECAST]], [
|
857
|
+
|
807
858
|
// Mobile OSes
|
808
859
|
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
|
809
|
-
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
|
810
|
-
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
|
860
|
+
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony
|
861
|
+
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,
|
811
862
|
/(blackberry)\w*\/([\w\.]*)/i, // Blackberry
|
812
863
|
/(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
|
813
864
|
/\((series40);/i // Series 40
|
@@ -824,9 +875,7 @@
|
|
824
875
|
/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
|
825
876
|
], [VERSION, [NAME, 'watchOS']], [
|
826
877
|
|
827
|
-
// Google
|
828
|
-
/crkey\/([\d\.]+)/i // Google Chromecast
|
829
|
-
], [VERSION, [NAME, CHROME+'cast']], [
|
878
|
+
// Google ChromeOS
|
830
879
|
/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
|
831
880
|
], [[NAME, "Chrome OS"], VERSION],[
|
832
881
|
|
@@ -838,6 +887,7 @@
|
|
838
887
|
// Console
|
839
888
|
/(nintendo|playstation) (\w+)/i, // Nintendo/Playstation
|
840
889
|
/(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
|
890
|
+
/(pico) .+os([\w\.]+)/i, // Pico
|
841
891
|
|
842
892
|
// Other
|
843
893
|
/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
|