Skip to content

Commit f5a421c

Browse files
committed
Bump v1.0.40 (mirror of v0.7.40)
2 parents 8b1db6b + 5c811b8 commit f5a421c

12 files changed

+577
-73
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ua-parser-js",
3-
"version": "1.0.39",
3+
"version": "1.0.40",
44
"authors": [
55
"Faisal Salman <[email protected]>"
66
],

changelog.md

+9
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@
44

55
Version 1.0.x is basically the equivalent of version 0.7.x. See [#536](https://github.com/faisalman/ua-parser-js/issues/536) for the reason behind this confusion.
66

7+
## Version 0.7.40 / 1.0.40
8+
- Add new browser: 115, LibreWolf, Slimboat, Slimjet
9+
- Add new device: Advan, Cat, Energizer, IMO, Micromax, Smartfren
10+
- Add new engine: ArkWeb, Servo
11+
- Add new os: OpenHarmony
12+
- Improve browser detection: 2345, 360, Dragon, Iron, Maxthon
13+
- Recognize Honor as a separate device vendor from Huawei
14+
- Fix Python Request mistakenly identified as Meta Quest
15+
716
## Version 0.7.39 / 1.0.39
817
- Add new feature: executable command using `npx ua-parser-js "[INSERT-UA-HERE]"`
918
- Add new browser: Helio, Pico Browser, Wolvic

dist/ua-parser.min.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ua-parser.pack.js

+3-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Package.describe({
22
name: 'faisalman:ua-parser-js',
3-
version: '1.0.39',
3+
version: '1.0.40',
44
summary: 'Lightweight JavaScript-based user-agent string parser',
55
git: 'https://github.com/faisalman/ua-parser-js.git',
66
documentation: 'readme.md'

package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"title": "UAParser.js",
33
"name": "ua-parser-js",
4-
"version": "1.0.39",
4+
"version": "1.0.40",
55
"author": "Faisal Salman <[email protected]> (http://faisalman.com)",
66
"description": "Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data. Supports browser & node.js environment",
77
"keywords": [
@@ -206,8 +206,8 @@
206206
"url": "https://paypal.me/faisalman"
207207
},
208208
{
209-
"type": "github",
210-
"url": "https://github.com/sponsors/faisalman"
209+
"type": "github",
210+
"url": "https://github.com/sponsors/faisalman"
211211
}
212212
]
213213
}

readme.md

+20-19
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model fro
1818
* Demo : https://uaparser.dev
1919
* Source : https://github.com/faisalman/ua-parser-js
2020
* Documentation :
21-
* v1 : https://github.com/faisalman/ua-parser-js/tree/1.0.39#documentation
21+
* v1 : https://github.com/faisalman/ua-parser-js/tree/1.0.x#documentation
2222
* v2 : https://docs.uaparser.dev
2323

2424
***
@@ -100,20 +100,20 @@ The methods are self explanatory, here's a small overview on all the available m
100100

101101
```sh
102102
# Possible 'browser.name':
103-
2345Explorer, 360 Browser, Alipay, Amaya, Android Browser, Arora, Avant, Avast,
104-
AVG, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
103+
115 Browser, 2345Explorer, 360 Browser, Alipay, Amaya, Android Browser, Arora,
104+
Avant, Avast, AVG, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
105105
Chrome Headless, Chrome WebView, Chrome, Chromium, Cobalt, Comodo Dragon, Dillo,
106106
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
107107
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Helio, Heytap,
108108
Huawei Browser, iCab, ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon,
109109
Iceweasel, Instagram, Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon,
110-
Kindle, Klar, Klarna, Konqueror, LBBROWSER, Line, LinkedIn, Links, Lunascape,
111-
Lynx, MIUI Browser, Maemo, Maxthon, Midori, Minimo, Mobile Safari, Mosaic,
112-
Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Obigo,
110+
Kindle, Klar, Klarna, Konqueror, LBBROWSER, LibreWolf, Line, LinkedIn, Links,
111+
Lunascape, Lynx, MIUI Browser, Maemo, Maxthon, Midori, Minimo, Mobile Safari,
112+
Mosaic, Mozilla, NetFront, NetSurf, Netfront, Netscape, NokiaBrowser, Obigo,
113113
Oculus Browser, OmniWeb, Opera Coast, Opera [GX/Mini/Mobi/Tablet], PaleMoon,
114114
PhantomJS, Phoenix, Pico Browser, Polaris, Puffin, QQ, QQBrowser, QQBrowserLite,
115115
Quark, QupZilla, RockMelt, Safari, Sailfish Browser, Samsung Internet, SeaMonkey,
116-
Silk, Skyfire, Sleipnir, Slim, SlimBrowser, Smart Lenovo Browser, Snapchat,
116+
Silk, Skyfire, Sleipnir, Slim[Browser/Boat/Jet], Smart Lenovo Browser, Snapchat,
117117
Sogou [Explorer/Mobile], Swiftfox, Tesla, TikTok, Tizen Browser, Twitter,
118118
UCBrowser, UP.Browser, Vivaldi, Vivo Browser, w3m, Waterfox, WeChat, Weibo,
119119
Whale Browser, Wolvic, Yandex, ...
@@ -136,12 +136,13 @@ console, mobile, tablet, smarttv, wearable, embedded
136136
##########
137137

138138
# Possible 'device.vendor':
139-
Acer, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Dell,
140-
Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC, Huawei, Infinix,
141-
itel, Jolla, Kobo, Lenovo, LG, Meizu, Microsoft, Motorola, Nexian, Nintendo,
142-
Nokia, Nothing, Nvidia, OnePlus, OPPO, Ouya, Palm, Panasonic, Pebble, Polytron,
143-
Realme, RIM, Roku, Samsung, Sharp, Siemens, Sony[Ericsson], Sprint, TCL, Tecno,
144-
Tesla, Ulefone, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
139+
Acer, Advan, Alcatel, Amazon, Apple, Archos, ASUS, AT&T, BenQ, BlackBerry, Cat,
140+
Dell, Energizer, Essential, Facebook, Fairphone, GeeksPhone, Google, HP, HTC,
141+
Huawei, IMO, Infinix, itel, Jolla, Kobo, Lenovo, LG, Meizu, Micromax, Microsoft,
142+
Motorola, Nexian, Nintendo, Nokia, Nothing, Nvidia, OnePlus, OPPO, Ouya, Palm,
143+
Panasonic, Pebble, Polytron, Realme, RIM, Roku, Samsung, Sharp, Siemens,
144+
Smartfren, Sony[Ericsson], Sprint, TCL, Tecno, Tesla, Ulefone, Vivo, Vodafone,
145+
Xbox, Xiaomi, Zebra, ZTE, ...
145146

146147
# 'device.model' determined dynamically
147148
```
@@ -151,8 +152,8 @@ Tesla, Ulefone, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE, ...
151152

152153
```sh
153154
# Possible 'engine.name'
154-
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, LibWeb, Links, Lynx,
155-
NetFront, NetSurf, Presto, Tasman, Trident, w3m, WebKit
155+
Amaya, ArkWeb, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, LibWeb, Links,
156+
Lynx, NetFront, NetSurf, Presto, Servo, Tasman, Trident, w3m, WebKit
156157

157158
# 'engine.version' determined dynamically
158159
```
@@ -166,10 +167,10 @@ AIX, Amiga OS, Android[-x86], Arch, Bada, BeOS, BlackBerry, CentOS, Chromium OS,
166167
Contiki, Fedora, Firefox OS, FreeBSD, Debian, Deepin, DragonFly, elementary OS,
167168
Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
168169
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
169-
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenVMS, OS/2, Palm,
170-
PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS,
171-
RISC OS, Sabayon, Sailfish, SerenityOS, Series40, Slackware, Solaris, SUSE,
172-
Symbian, Tizen, Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS,
170+
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenHarmony, OpenVMS,
171+
OS/2, Palm, PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat,
172+
RIM Tablet OS, RISC OS, Sabayon, Sailfish, SerenityOS, Series40, Slackware,
173+
Solaris, SUSE, Symbian, Tizen, Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS,
173174
Windows [Phone/Mobile], Zenwalk, ...
174175

175176
# 'os.version' determined dynamically

src/ua-parser.js

+59-24
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/////////////////////////////////////////////////////////////////////////////////
2-
/* UAParser.js v1.0.39
3-
Copyright © 2012-2021 Faisal Salman <[email protected]>
2+
/* UAParser.js v1.0.40
3+
Copyright © 2012-2024 Faisal Salman <[email protected]>
44
MIT License *//*
55
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
66
Supports browser & node.js environment.
@@ -17,7 +17,7 @@
1717
/////////////
1818

1919

20-
var LIBVERSION = '1.0.39',
20+
var LIBVERSION = '1.0.40',
2121
EMPTY = '',
2222
UNKNOWN = '?',
2323
FUNC_TYPE = 'function',
@@ -232,17 +232,19 @@
232232
// Mixed
233233
/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
234234
], [VERSION, [NAME, 'Baidu']], [
235+
/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i // Maxthon
236+
], [VERSION, [NAME, 'Maxthon']], [
235237
/(kindle)\/([\w\.]+)/i, // Kindle
236238
/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
237239
// Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
238240
// Trident based
239-
/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
241+
/(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i, // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
240242
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
241243

242-
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
243-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i,
244-
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio
245-
/(heytap|ovi)browser\/([\d\.]+)/i, // HeyTap/Ovi
244+
// Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
245+
/(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,
246+
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
247+
/(heytap|ovi|115)browser\/([\d\.]+)/i, // HeyTap/Ovi/115
246248
/(weibo)__([\d\.]+)/i // Weibo
247249
], [NAME, VERSION], [
248250
/quark(?:pc)?\/([-\w\.]+)/i // Quark
@@ -276,30 +278,31 @@
276278
/coast\/([\w\.]+)/i // Opera Coast
277279
], [VERSION, [NAME, OPERA+' Coast']], [
278280
/miuibrowser\/([\w\.]+)/i // MIUI Browser
279-
], [VERSION, [NAME, 'MIUI '+BROWSER]], [
280-
/fxios\/([-\w\.]+)/i // Firefox for iOS
281+
], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [
282+
/fxios\/([\w\.-]+)/i // Firefox for iOS
281283
], [VERSION, [NAME, FIREFOX]], [
282-
/\bqihu|(qi?ho?o?|360)browser/i // 360
283-
], [[NAME, '360' + SUFFIX_BROWSER]], [
284+
/\bqihoobrowser\/?([\w\.]*)/i // 360
285+
], [VERSION, [NAME, '360']], [
284286
/\b(qq)\/([\w\.]+)/i // QQ
285287
], [[NAME, /(.+)/, '$1Browser'], VERSION], [
286288
/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i
287289
], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
288290
/samsungbrowser\/([\w\.]+)/i // Samsung Internet
289291
], [VERSION, [NAME, SAMSUNG + ' Internet']], [
290-
/(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
291-
], [[NAME, /_/g, ' '], VERSION], [
292292
/metasr[\/ ]?([\d\.]+)/i // Sogou Explorer
293293
], [VERSION, [NAME, 'Sogou Explorer']], [
294294
/(sogou)mo\w+\/([\d\.]+)/i // Sogou Mobile
295295
], [[NAME, 'Sogou Mobile'], VERSION], [
296296
/(electron)\/([\w\.]+) safari/i, // Electron-based App
297297
/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
298-
/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/2345 Browser
298+
/m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i // QQ/2345
299299
], [NAME, VERSION], [
300300
/(lbbrowser|rekonq)/i, // LieBao Browser/Rekonq
301301
/\[(linkedin)app\]/i // LinkedIn App for iOS & Android
302302
], [NAME], [
303+
/ome\/([\w\.]+) \w* ?(iron) saf/i, // Iron
304+
/ome\/([\w\.]+).+qihu (360)[es]e/i // 360
305+
], [VERSION, NAME], [
303306

304307
// WebView
305308
/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
@@ -343,7 +346,7 @@
343346
// Gecko based
344347
/(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
345348
], [[NAME, 'Netscape'], VERSION], [
346-
/(wolvic)\/([\w\.]+)/i // Wolvic
349+
/(wolvic|librewolf)\/([\w\.]+)/i // Wolvic/LibreWolf
347350
], [NAME, VERSION], [
348351
/mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
349352
], [VERSION, [NAME, FIREFOX+' Reality']], [
@@ -426,10 +429,14 @@
426429
/\b(sh-?[altvz]?\d\d[a-ekm]?)/i
427430
], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
428431

432+
// Honor
433+
/(?:honor)([-\w ]+)[;\)]/i
434+
], [MODEL, [VENDOR, 'Honor'], [TYPE, MOBILE]], [
435+
429436
// Huawei
430437
/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
431438
], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
432-
/(?:huawei|honor)([-\w ]+)[;\)]/i,
439+
/(?:huawei)([-\w ]+)[;\)]/i,
433440
/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
434441
], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
435442

@@ -494,7 +501,7 @@
494501
], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
495502

496503
// Sony
497-
/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
504+
/droid.+; (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
498505
], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
499506
/sony tablet [ps]/i,
500507
/\b(?:sony)?sgp\w+(?: bui|\))/i
@@ -557,13 +564,28 @@
557564
/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
558565
], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
559566

567+
// Energizer
568+
/; (energy ?\w+)(?: bui|\))/i,
569+
/; energizer ([\w ]+)(?: bui|\))/i
570+
], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
571+
572+
// Cat
573+
/; cat (b35);/i,
574+
/; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i
575+
], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
576+
577+
// Smartfren
578+
/((?:new )?andromax[\w- ]+)(?: bui|\))/i
579+
], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
580+
560581
// Nothing
561582
/droid.+; (a(?:015|06[35]|142p?))/i
562583
], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
563584

564585
// MIXED
565-
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
566-
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
586+
/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
587+
// BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
588+
/; (imo) ((?!tab)[\w ]+?)(?: bui|\))/i, // IMO
567589
/(hp) ([\w ]+\w)/i, // HP iPAQ
568590
/(asus)-?(\w+)/i, // Asus
569591
/(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
@@ -572,6 +594,7 @@
572594
/(oppo) ?([\w ]+) bui/i // OPPO
573595
], [VENDOR, MODEL, [TYPE, MOBILE]], [
574596

597+
/(imo) (tab \w+)/i, // IMO
575598
/(kobo)\s(ereader|touch)/i, // Kobo
576599
/(archos) (gamepad2?)/i, // Archos
577600
/(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
@@ -701,7 +724,16 @@
701724
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
702725
/droid.+; (wt63?0{2,3})\)/i
703726
], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
704-
/(quest( \d| pro)?)/i // Oculus Quest
727+
728+
///////////////////
729+
// XR
730+
///////////////////
731+
732+
/droid.+; (glass) \d/i // Google Glass
733+
], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
734+
/(pico) (4|neo3(?: link|pro)?)/i // Pico
735+
], [VENDOR, MODEL, [TYPE, WEARABLE]], [
736+
/; (quest( \d| pro)?)/i // Oculus Quest
705737
], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
706738

707739
///////////////////
@@ -734,11 +766,14 @@
734766
/windows.+ edge\/([\w\.]+)/i // EdgeHTML
735767
], [VERSION, [NAME, EDGE+'HTML']], [
736768

769+
/(arkweb)\/([\w\.]+)/i // ArkWeb
770+
], [NAME, VERSION], [
771+
737772
/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
738773
], [VERSION, [NAME, 'Blink']], [
739774

740775
/(presto)\/([\w\.]+)/i, // Presto
741-
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
776+
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
742777
/ekioh(flow)\/([\w\.]+)/i, // Flow
743778
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
744779
/(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
@@ -772,8 +807,8 @@
772807

773808
// Mobile OSes
774809
/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
775-
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
776-
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
810+
], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS/OpenHarmony
811+
/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,
777812
/(blackberry)\w*\/([\w\.]*)/i, // Blackberry
778813
/(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
779814
/\((series40);/i // Series 40

0 commit comments

Comments
 (0)