Skip to content

Commit d810feb

Browse files
committed
Bump version 1.0.35 (mirror of v0.7.35)
2 parents a486f28 + 32d326b commit d810feb

12 files changed

+148
-32
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.34",
3+
"version": "1.0.35",
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.35 / 1.0.35
8+
- Fix result from user-supplied user-agent being altered
9+
- Add new browser: Heytap, TikTok
10+
- Add new engine: LibWeb
11+
- Add new OS: SerenityOS
12+
- Improve browser detection: Yandex
13+
- Improve device detection: iPhone, Amazon Echo
14+
- Improve OS detection: iOS
15+
716
## Version 0.7.34 / 1.0.34
817
- Fix Sharp Mobile detected as Huawei Tablet
918
- Fix IE8 bug

dist/ua-parser.min.js

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

dist/ua-parser.pack.js

+2-2
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.34',
3+
version: '1.0.35',
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

+1-1
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.34",
4+
"version": "1.0.35",
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": [

readme.md

+10-13
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,6 @@ JavaScript library to detect Browser, Engine, OS, CPU, and Device type/model fro
3333
<td><br/><p>UAParser.js has been upgraded to detect comprehensive device data based on the User-Agent and User-Agent Client Hints.</p><p>This package supports all device types including Apple and Android devices and can be used either in a browser (client-side) or Node.js environment (server-side).</p><p>Visit <a href="https://www.npmjs.com/package/@51degrees/ua-parser-js">↗ 51Degrees <u>UAParser</u></a> to get started.</p>
3434
</td>
3535
</tr>
36-
<tr>
37-
<td>
38-
<p>On 6 March, we’ll be hosting a demonstration of the 51Degrees UAParser. Register your place for the webinar <a href="https://event.webinarjam.com/register/36/6k2gqu5p">↗ here</a>.</p></td>
39-
</tr>
4036
</tbody>
4137
</table>
4238

@@ -106,16 +102,16 @@ The methods are self explanatory, here's a small overview on all the available m
106102
BIDUBrowser, Baidu, Basilisk, Blazer, Bolt, Brave, Bowser, Camino, Chimera,
107103
Chrome Headless, Chrome WebView, Chrome, Chromium, Cobalt, Comodo Dragon, Dillo,
108104
Dolphin, Doris, DuckDuckGo, Edge, Electron, Epiphany, Facebook, Falkon, Fennec,
109-
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Huawei Browser,
110-
ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel, Instagram,
111-
Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon, Kindle, Klar, Konqueror,
112-
LBBROWSER, Line, LinkedIn, Links, Lunascape, Lynx, MIUI Browser, Maemo Browser,
105+
Firebird, Firefox [Focus/Reality], Flock, Flow, GSA, GoBrowser, Heytap,
106+
Huawei Browser, ICE Browser, IE, IEMobile, IceApe, IceCat, IceDragon, Iceweasel,
107+
Instagram, Iridium, Iron, Jasmine, Kakao[Story/Talk], K-Meleon, Kindle, Klar,
108+
Konqueror, LBBROWSER, Line, LinkedIn, Links, Lunascape, Lynx, MIUI Browser,
113109
Maemo, Maxthon, MetaSr Midori, Minimo, Mobile Safari, Mosaic, Mozilla, NetFront,
114110
NetSurf, Netfront, Netscape, NokiaBrowser, Obigo, Oculus Browser, OmniWeb,
115111
Opera Coast, Opera [Mini/Mobi/Tablet], PaleMoon, PhantomJS, Phoenix, Polaris,
116112
Puffin, QQ, QQBrowser, QQBrowserLite, Quark, QupZilla, RockMelt, Safari,
117113
Sailfish Browser, Samsung Browser, SeaMonkey, Silk, Skyfire, Sleipnir, Slim,
118-
SlimBrowser, Swiftfox, Tesla, Tizen Browser, UCBrowser, UP.Browser, Viera,
114+
SlimBrowser, Swiftfox, Tesla, TikTok, Tizen Browser, UCBrowser, UP.Browser, Viera,
119115
Vivaldi, Waterfox, WeChat, Weibo, Yandex, baidu, iCab, w3m, Whale Browser...
120116

121117
# 'browser.version' determined dynamically
@@ -150,8 +146,8 @@ Siemens, Sony[Ericsson], Sprint, Tesla, Vivo, Vodafone, Xbox, Xiaomi, Zebra, ZTE
150146

151147
```sh
152148
# Possible 'engine.name'
153-
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, Links, Lynx, NetFront,
154-
NetSurf, Presto, Tasman, Trident, w3m, WebKit
149+
Amaya, Blink, EdgeHTML, Flow, Gecko, Goanna, iCab, KHTML, LibWeb, Links, Lynx,
150+
NetFront, NetSurf, Presto, Tasman, Trident, w3m, WebKit
155151

156152
# 'engine.version' determined dynamically
157153
```
@@ -167,8 +163,9 @@ Fuchsia, Gentoo, GhostBSD, GNU, Haiku, HarmonyOS, HP-UX, Hurd, iOS, Joli, KaiOS,
167163
Linpus, Linspire,Linux, Mac OS, Maemo, Mageia, Mandriva, Manjaro, MeeGo, Minix,
168164
Mint, Morph OS, NetBSD, NetRange, NetTV, Nintendo, OpenBSD, OpenVMS, OS/2, Palm,
169165
PC-BSD, PCLinuxOS, Plan9, PlayStation, QNX, Raspbian, RedHat, RIM Tablet OS,
170-
RISC OS, Sabayon, Sailfish, Series40, Slackware, Solaris, SUSE, Symbian, Tizen,
171-
Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS, Windows [Phone/Mobile], Zenwalk, ...
166+
RISC OS, Sabayon, Sailfish, SerenityOS, Series40, Slackware, Solaris, SUSE, Symbian,
167+
Tizen, Ubuntu, Unix, VectorLinux, Viera, watchOS, WebOS, Windows [Phone/Mobile],
168+
Zenwalk, ...
172169

173170
# 'os.version' determined dynamically
174171
```

src/ua-parser.js

+20-12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/////////////////////////////////////////////////////////////////////////////////
2-
/* UAParser.js v1.0.34
2+
/* UAParser.js v1.0.35
33
Copyright © 2012-2021 Faisal Salman <[email protected]>
44
MIT License *//*
55
Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
@@ -17,7 +17,7 @@
1717
/////////////
1818

1919

20-
var LIBVERSION = '1.0.34',
20+
var LIBVERSION = '1.0.35',
2121
EMPTY = '',
2222
UNKNOWN = '?',
2323
FUNC_TYPE = 'function',
@@ -236,8 +236,9 @@
236236
/(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
237237

238238
// Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
239-
/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
239+
/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
240240
// Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
241+
/(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi
241242
/(weibo)__([\d\.]+)/i // Weibo
242243
], [NAME, VERSION], [
243244
/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
@@ -251,7 +252,7 @@
251252
], [VERSION, [NAME, 'Konqueror']], [
252253
/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
253254
], [VERSION, [NAME, 'IE']], [
254-
/yabrowser\/([\w\.]+)/i // Yandex
255+
/ya(?:search)?browser\/([\w\.]+)/i // Yandex
255256
], [VERSION, [NAME, 'Yandex']], [
256257
/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
257258
], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
@@ -295,6 +296,8 @@
295296
], [NAME, VERSION], [
296297
/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
297298
], [VERSION, [NAME, 'GSA']], [
299+
/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
300+
], [VERSION, [NAME, 'TikTok']], [
298301

299302
/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
300303
], [VERSION, [NAME, CHROME+' Headless']], [
@@ -390,7 +393,7 @@
390393
], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
391394

392395
// Apple
393-
/\((ip(?:hone|od)[\w ]*);/i // iPod/iPhone
396+
/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
394397
], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
395398
/\((ipad);[-\w\),; ]+apple/i, // iPad
396399
/applecoremedia\/[\w\.]+ \((ipad)/i,
@@ -480,7 +483,7 @@
480483

481484
// Amazon
482485
/(alexa)webm/i,
483-
/(kf[a-z]{2}wi)( bui|\))/i, // Kindle Fire without Silk
486+
/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
484487
/(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
485488
], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
486489
/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
@@ -665,6 +668,8 @@
665668

666669
/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
667670
], [VENDOR, [TYPE, EMBEDDED]], [
671+
/(aeobc)\b/i // Echo Dot
672+
], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
668673

669674
////////////////////
670675
// MIXED (GENERIC)
@@ -694,7 +699,8 @@
694699
/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
695700
/ekioh(flow)\/([\w\.]+)/i, // Flow
696701
/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
697-
/(icab)[\/ ]([23]\.[\d\.]+)/i // iCab
702+
/(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
703+
/\b(libweb)/i
698704
], [NAME, VERSION], [
699705

700706
/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
@@ -715,6 +721,7 @@
715721

716722
// iOS/macOS
717723
/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
724+
/ios;fbsv\/([\d\.]+)/i,
718725
/cfnetwork\/.+darwin/i
719726
], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
720727
/(mac os x) ?([\w\. ]*)/i,
@@ -771,7 +778,7 @@
771778
], [[NAME, 'Solaris'], VERSION], [
772779
/((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
773780
/(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
774-
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX
781+
/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
775782
/(unix) ?([\w\.]*)/i // UNIX
776783
], [NAME, VERSION]
777784
]
@@ -796,6 +803,7 @@
796803
var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
797804
var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined;
798805
var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
806+
var _isSelfNav = _navigator && _navigator.userAgent == _ua;
799807

800808
this.getBrowser = function () {
801809
var _browser = {};
@@ -804,7 +812,7 @@
804812
rgxMapper.call(_browser, _ua, _rgxmap.browser);
805813
_browser[MAJOR] = majorize(_browser[VERSION]);
806814
// Brave-specific detection
807-
if (_navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
815+
if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
808816
_browser[NAME] = 'Brave';
809817
}
810818
return _browser;
@@ -821,11 +829,11 @@
821829
_device[MODEL] = undefined;
822830
_device[TYPE] = undefined;
823831
rgxMapper.call(_device, _ua, _rgxmap.device);
824-
if (!_device[TYPE] && _uach && _uach.mobile) {
832+
if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
825833
_device[TYPE] = MOBILE;
826834
}
827835
// iPadOS-specific detection: identified as Mac, but has some iOS-only properties
828-
if (_device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
836+
if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
829837
_device[MODEL] = 'iPad';
830838
_device[TYPE] = TABLET;
831839
}
@@ -843,7 +851,7 @@
843851
_os[NAME] = undefined;
844852
_os[VERSION] = undefined;
845853
rgxMapper.call(_os, _ua, _rgxmap.os);
846-
if (!_os[NAME] && _uach && _uach.platform != 'Unknown') {
854+
if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {
847855
_os[NAME] = _uach.platform
848856
.replace(/chrome os/i, CHROMIUM_OS)
849857
.replace(/macos/i, MAC_OS); // backward compatibility

test/browser-test.json

+37
Original file line numberDiff line numberDiff line change
@@ -1298,6 +1298,16 @@
12981298
"major" : "1"
12991299
}
13001300
},
1301+
{
1302+
"desc" : "Yandex",
1303+
"ua" : "Mozilla/5.0 (Linux; arm_64; Android 11; M2101K7AG) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.125 YaApp_Android/22.70 YaSearchBrowser/22.70 BroPP/1.0 SA/3 Mobile Safari/537.36",
1304+
"expect" :
1305+
{
1306+
"name" : "Yandex",
1307+
"version" : "22.70",
1308+
"major" : "22"
1309+
}
1310+
},
13011311
{
13021312
"desc" : "Puffin",
13031313
"ua" : "Mozilla/5.0 (Linux; Android 6.0.1; Lenovo P2a42 Build/MMB29M; en-us) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Puffin/6.0.8.15804AP",
@@ -1682,5 +1692,32 @@
16821692
"version": "10.25.0",
16831693
"major" : "10"
16841694
}
1695+
},
1696+
{
1697+
"desc" : "TikTok",
1698+
"ua" : "Mozilla/5.0 (Linux; Android 11; 21061119AG Build/RP1A.200720.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/92.0.4515.131 Mobile Safari/537.36 trill_2022109040 JsSdk/1.0 NetType/MOBILE Channel/googleplay AppName/musical_ly app_version/21.9.4 ByteLocale/ru-RU ByteFullLocale/ru-RU Region/KG BytedanceWebview/d8a21c6",
1699+
"expect" : {
1700+
"name" : "TikTok",
1701+
"version": "21.9.4",
1702+
"major" : "21"
1703+
}
1704+
},
1705+
{
1706+
"desc" : "TikTok",
1707+
"ua" : "Mozilla/5.0 (iPhone; CPU iPhone OS 14_8 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 musical_ly_21.1.0 JsSdk/2.0 NetType/4G Channel/App Store ByteLocale/ru Region/RU ByteFullLocale/ru-RU isDarkMode/1 WKWebView/1 BytedanceWebview/d8a21c6",
1708+
"expect" : {
1709+
"name" : "TikTok",
1710+
"version": "21.1.0",
1711+
"major" : "21"
1712+
}
1713+
},
1714+
{
1715+
"desc" : "TikTok",
1716+
"ua" : "Mozilla/5.0 (Linux; Android 10; STK-LX1 Build/HONORSTK-LX1; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/110.0.5481.153 Mobile Safari/537.36 musical_ly_2022803040 JsSdk/1.0 NetType/WIFI Channel/huaweiadsglobal_int AppName/musical_ly app_version/28.3.4 ByteLocale/en ByteFullLocale/en Region/IQ Spark/1.2.7-alpha.8 AppVersion/28.3.4 PIA/1.5.11 BytedanceWebview/d8a21c6",
1717+
"expect" : {
1718+
"name" : "TikTok",
1719+
"version": "28.3.4",
1720+
"major" : "28"
1721+
}
16851722
}
16861723
]

test/device-test.json

+38
Original file line numberDiff line numberDiff line change
@@ -1638,6 +1638,33 @@
16381638
"type": "tablet"
16391639
}
16401640
},
1641+
{
1642+
"desc": "Echo Show 5",
1643+
"ua": "Mozilla/5.0 (Linux; Android 5.1; AEORK Build/LVY48F; xx-xx) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/70.0.3538.110 Mobile Safari/537.36",
1644+
"expect": {
1645+
"vendor": "Amazon",
1646+
"model": "AEORK",
1647+
"type": "tablet"
1648+
}
1649+
},
1650+
{
1651+
"desc": "Echo Show 8",
1652+
"ua": "Mozilla/5.0 (Linux; Android 7.1; AEOCH) AppleWebKit/537.36 (KHTML, like Gecko) Silk/77.2.21 like Chrome/77.0.3865.92 Mobile Safari/537.36",
1653+
"expect": {
1654+
"vendor": "Amazon",
1655+
"model": "AEOCH",
1656+
"type": "tablet"
1657+
}
1658+
},
1659+
{
1660+
"desc": "Echo Dot",
1661+
"ua": "Dalvik/2.1.0 (Linux; U; Android 5.1.1; AEOBC Build/LVY48F)",
1662+
"expect": {
1663+
"vendor": "Amazon",
1664+
"model": "AEOBC",
1665+
"type": "embedded"
1666+
}
1667+
},
16411668
{
16421669
"desc": "Samsung Galaxy A21s",
16431670
"ua": "Mozilla/5.0 (Linux; Android 10; SAMSUNG SM-A217F) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/11.0 Chrome/75.0.3770.143 Mobile Safari/537.36",
@@ -3109,6 +3136,17 @@
31093136
"desc": "FaceBook Mobile App",
31103137
"ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
31113138
"expect": {
3139+
"vendor": "Apple",
3140+
"model": "iPhone12,1",
3141+
"type": "mobile"
3142+
}
3143+
},
3144+
{
3145+
"desc": "Issue #519",
3146+
"ua": "ios/iPhone/14.2/SOME_CUSTOM_APP_VERSION",
3147+
"expect": {
3148+
"vendor": "Apple",
3149+
"model": "iPhone",
31123150
"type": "mobile"
31133151
}
31143152
},

test/engine-test.json

+9
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@
5353
"version" : "4.5.4"
5454
}
5555
},
56+
{
57+
"desc" : "LibWeb",
58+
"ua" : "Mozilla/4.0 (SerenityOS; x86) LibWeb+LibJS (Not KHTML, nor Gecko) LibWeb",
59+
"expect" :
60+
{
61+
"name" : "LibWeb",
62+
"version" : "undefined"
63+
}
64+
},
5665
{
5766
"desc" : "NetFront",
5867
"ua" : "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",

test/os-test.json

+18
Original file line numberDiff line numberDiff line change
@@ -764,6 +764,15 @@
764764
"version" : "undefined"
765765
}
766766
},
767+
{
768+
"desc": "iOS with FaceBook Mobile App",
769+
"ua": "[FBAN/FBIOS;FBAV/283.0.0.44.117;FBBV/238386386;FBDV/iPhone12,1;FBMD/iPhone;FBSN/iOS;FBSV/13.6.1;FBSS/2;FBID/phone;FBLC/en_US;FBOP/5;FBRV/240127608]",
770+
"expect":
771+
{
772+
"name" : "iOS",
773+
"version" : "13.6.1"
774+
}
775+
},
767776
{
768777
"desc" : "watchOS",
769778
"ua" : "server-bag [Watch OS,8.4,19S546,Watch3,4]",
@@ -1195,5 +1204,14 @@
11951204
"name" : "Linspire",
11961205
"version" : "1.5.0.4"
11971206
}
1207+
},
1208+
{
1209+
"desc" : "SerenityOS",
1210+
"ua" : "Mozilla/4.0 (SerenityOS; x86) LibWeb+LibJS (Not KHTML, nor Gecko) LibWeb",
1211+
"expect" :
1212+
{
1213+
"name" : "SerenityOS",
1214+
"version" : "undefined"
1215+
}
11981216
}
11991217
]

0 commit comments

Comments
 (0)