mirror of
https://github.com/faisalman/ua-parser-js.git
synced 2025-09-27 07:58:45 +03:00
Improve Windows detection & recognize Windows CE & RT as separate OS variants
This commit is contained in:
parent
f9836f1981
commit
a9378427ed
2
src/enums/ua-parser-enums.d.ts
vendored
2
src/enums/ua-parser-enums.d.ts
vendored
@ -373,9 +373,11 @@ export const OS: Readonly<{
|
||||
WATCHOS: "watchOS";
|
||||
WEBOS: "WebOS";
|
||||
WINDOWS: "Windows";
|
||||
WINDOWS_CE: "Windows CE";
|
||||
WINDOWS_IOT: "Windows IoT";
|
||||
WINDOWS_MOBILE: "Windows Mobile";
|
||||
WINDOWS_PHONE: "Windows Phone";
|
||||
WINDOWS_RT: "Windows RT";
|
||||
XBOX: "Xbox";
|
||||
XUBUNTU: "Xubuntu";
|
||||
ZENWALK: "Zenwalk";
|
||||
|
@ -388,9 +388,11 @@ const OS = Object.freeze({
|
||||
WATCHOS: 'watchOS',
|
||||
WEBOS: 'WebOS',
|
||||
WINDOWS: 'Windows',
|
||||
WINDOWS_CE: 'Windows CE',
|
||||
WINDOWS_IOT: 'Windows IoT',
|
||||
WINDOWS_MOBILE: 'Windows Mobile',
|
||||
WINDOWS_PHONE: 'Windows Phone',
|
||||
WINDOWS_RT: 'Windows RT',
|
||||
XBOX: 'Xbox',
|
||||
XUBUNTU: 'Xubuntu',
|
||||
ZENWALK: 'Zenwalk'
|
||||
|
@ -300,16 +300,16 @@
|
||||
|
||||
var windowsVersionMap = {
|
||||
'ME' : '4.90',
|
||||
'NT 3.11' : 'NT3.51',
|
||||
'NT 4.0' : 'NT4.0',
|
||||
'2000' : 'NT 5.0',
|
||||
'XP' : ['NT 5.1', 'NT 5.2'],
|
||||
'Vista' : 'NT 6.0',
|
||||
'7' : 'NT 6.1',
|
||||
'8' : 'NT 6.2',
|
||||
'8.1' : 'NT 6.3',
|
||||
'10' : ['NT 6.4', 'NT 10.0'],
|
||||
'RT' : 'ARM'
|
||||
'NT 3.51': '3.51',
|
||||
'NT 4.0': '4.0',
|
||||
'2000' : ['5.0', '5.01'],
|
||||
'XP' : ['5.1', '5.2'],
|
||||
'Vista' : '6.0',
|
||||
'7' : '6.1',
|
||||
'8' : '6.2',
|
||||
'8.1' : '6.3',
|
||||
'10' : ['6.4', '10.0'],
|
||||
'NT' : ''
|
||||
},
|
||||
|
||||
formFactorsMap = {
|
||||
@ -946,14 +946,17 @@
|
||||
os : [[
|
||||
|
||||
// Windows
|
||||
/microsoft (windows) (7|vista|xp)/i // Windows
|
||||
/(windows nt) (6\.[23]); arm/i // Windows RT
|
||||
], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [
|
||||
/(windows (?:phone|mobile|iot))(?: os)?[\/ ]?([\d\.]*( se)?)/i, // Windows IoT/Mobile/Phone
|
||||
// Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11
|
||||
/(windows)[\/ ](1[01]|2000|3\.1|7|8(\.1)?|9[58]|me|vista|xp)/i
|
||||
], [NAME, VERSION], [
|
||||
/windows nt ?([\d\.\)]*)(?!.+xbox)/i,
|
||||
/\bwin(?=3| ?9|n)(?:nt| 9x )?([\d\.;]*)/i
|
||||
], [[VERSION, /(;|\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [
|
||||
/(windows ce)\/?([\d\.]*)/i // Windows CE
|
||||
], [NAME, VERSION], [
|
||||
/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i // Windows Phone
|
||||
], [NAME, [VERSION, strMapper, windowsVersionMap]], [
|
||||
/windows nt 6\.2; (arm)/i, // Windows RT
|
||||
/windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i,
|
||||
/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i
|
||||
], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [
|
||||
|
||||
// iOS/macOS
|
||||
/[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
|
||||
|
20
test/data/ua/os/windows-ce.json
Normal file
20
test/data/ua/os/windows-ce.json
Normal file
@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"desc" : "Windows CE",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows CE",
|
||||
"version" : "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows CE",
|
||||
"ua" : "Mozilla/4.0 (PDA; Windows CE/1.0.1) NetFront/3.0",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows CE",
|
||||
"version" : "1.0.1"
|
||||
}
|
||||
}
|
||||
]
|
@ -16,5 +16,23 @@
|
||||
"name" : "Windows Mobile",
|
||||
"version" : "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Mobile",
|
||||
"ua" : "Opera/9.7 (Windows Mobile; PPC; Opera Mobi/35166; U; en) Presto/2.2.1",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Mobile",
|
||||
"version" : "undefined"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Mobile 6.1",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11) 320x240; VZW; Motorola-Q9c; Windows Mobile 6.1 Standard",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Mobile",
|
||||
"version" : "6.1"
|
||||
}
|
||||
}
|
||||
]
|
@ -9,14 +9,32 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Phone OS",
|
||||
"desc" : "Windows Phone 6.5",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; HTC_Touch2_T3333; Windows Phone 6.5)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Phone",
|
||||
"version" : "6.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Phone 7.0",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 7.0; Windows Phone OS 7.0; Trident/3.1; IEMobile/7.0; DELL; Venue Pro)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Phone OS",
|
||||
"name" : "Windows Phone",
|
||||
"version" : "7.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Phone 7.5",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 9.0; Windows Phone OS 7.5; Trident/5.0; IEMobile/9.0; NOKIA; Lumia 800)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Phone",
|
||||
"version" : "7.5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Phone 8",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; HTC; Windows Phone 8X by HTC)",
|
||||
@ -25,5 +43,14 @@
|
||||
"name" : "Windows Phone",
|
||||
"version" : "8.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Phone 8.1",
|
||||
"ua" : "Mozilla/5.0 (Mobile; Windows Phone 8.1; Android 4.0; ARM; Trident/7.0; Touch; rv:11.0; IEMobile/11.0; NOKIA; Lumia 635) like iPhone OS 7_0_3 Mac OS X AppleWebKit/537 (KHTML, like Gecko) Mobile Safari/537",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows Phone",
|
||||
"version" : "8.1"
|
||||
}
|
||||
}
|
||||
]
|
20
test/data/ua/os/windows-rt.json
Normal file
20
test/data/ua/os/windows-rt.json
Normal file
@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"desc" : "Windows RT 8",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows RT",
|
||||
"version" : "8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows RT 8.1",
|
||||
"ua" : "Mozilla/5.0 (Windows NT 6.3; ARM; Trident/7.0; Touch; rv:11.0) like Gecko",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows RT",
|
||||
"version" : "8.1"
|
||||
}
|
||||
}
|
||||
]
|
@ -1,4 +1,103 @@
|
||||
[
|
||||
{
|
||||
"desc" : "Windows 3.1",
|
||||
"ua" : "NCSA_Mosaic/2.0 (Windows 3.1)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "3.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 3.1",
|
||||
"ua" : "Mozilla/1.22 (compatible; MSIE 2.0; Windows 3.1)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "3.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT",
|
||||
"ua" : "Mozilla/4.51 [de] (WinNT; I)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT 3.51",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT 3.51",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 5.05; Windows NT 3.51)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT 3.51"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT 4.0",
|
||||
"ua" : "Opera/8.41.(Windows NT 4.0; ts-ZA) Presto/2.9.178 Version/11.00",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT 4.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT 4.0",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; WinNT4.0; de-DE; rv:1.7.5) Gecko/20041108 Firefox/52.7.4",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT 4.0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Netscape on Windows 95",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Win95; de-DE; rv:0.9.2) Gecko/20010726 Netscape6/6.1",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "95"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 95",
|
||||
"ua" : "Mozilla/3.0 (Win95)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "95"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 95",
|
||||
"ua" : "Mozilla/3.0 (compatible; Opera/3.0; Windows 95/NT4) 3.2",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "95"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 95",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) Opera 6.02 [en]",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "95"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 95",
|
||||
"ua" : "Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)",
|
||||
@ -17,6 +116,24 @@
|
||||
"version" : "98"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Firebird on Windows 98",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.5) Gecko/20031007 Firebird/0.7",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "98"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "K-Meleon on Windows 98",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.5) Gecko/20031016 K-Meleon/0.8.2",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "98"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows ME",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Win 9x 4.90) Gecko/20020502 CS 2000 7.0/7.0",
|
||||
@ -26,6 +143,51 @@
|
||||
"version" : "ME"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Opera on Windows ME",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 5.0; Windows ME) Opera 5.12 [de]",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "ME"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Netscape on Windows ME",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.8.1.8pre) Gecko/20071015 Firefox/2.0.0.7 Navigator/9.0",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "ME"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Netscape on Windows 2000",
|
||||
"ua" : "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.5) Gecko/20050519 Netscape/8.0.1",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "2000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Opera on Windows 2000",
|
||||
"ua" : "Opera/6.05 (Windows 2000; U)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "2000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Opera on Windows 2000",
|
||||
"ua" : "Opera/9.69 (Windows NT 5.01; en-US) Presto/2.8.160 Version/10.00",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "2000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 2000",
|
||||
"ua" : "Mozilla/3.0 (compatible; MSIE 3.0; Windows NT 5.0)",
|
||||
@ -44,6 +206,15 @@
|
||||
"version" : "XP"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows XP",
|
||||
"ua" : "Mozilla/5.0 (Windows XP; U) Opera 6.05 [de]",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "XP"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows Vista",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; fr-FR)",
|
||||
@ -62,6 +233,15 @@
|
||||
"version" : "7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 7",
|
||||
"ua" : "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Evernote Windows/306387 (pt-PT, DDL); Windows/6.1.0 (Win32); Safari/537.36",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 7",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0)",
|
||||
@ -80,6 +260,15 @@
|
||||
"version" : "8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 8.1",
|
||||
"ua" : "Mozilla/5.0 (Windows NT 6.3; WOW64; rv:66.0.5) Gecko/20100101 Firefox/66.0.5",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "8.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows 10",
|
||||
"ua" : "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0",
|
||||
@ -108,48 +297,75 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows RT",
|
||||
"ua" : "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; ARM; Trident/6.0)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "RT"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows CE",
|
||||
"ua" : "Mozilla/4.0 (compatible; MSIE 6.0; Windows CE; IEMobile 7.11)",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "CE"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT on x86 or aarch64 CPU using Firefox",
|
||||
"ua" : "Mozilla/5.0 (Windows NT x.y; rv:10.0) Gecko/20100101 Firefox/10.0",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT x"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "Windows NT on x64 CPU using Firefox",
|
||||
"ua" : "Mozilla/5.0 (Windows NT x.y; Win64; x64; rv:10.0) Gecko/20100101 Firefox/10.0",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "NT x"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes Windows Vista",
|
||||
"desc" : "iTunes on Windows Vista",
|
||||
"ua" : "iTunes/10.7 (Windows; Microsoft Windows Vista Home Premium Edition Service Pack 1 (Build 6001)) AppleWebKit/536.26.9",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "Vista"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 7",
|
||||
"ua" : "iTunes/10.6.3 (Windows; Microsoft Windows 7 x64 Business Edition Service Pack 1 (Build 7601)) AppleWebKit/534.57.2",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 8",
|
||||
"ua" : "iTunes/12.1.1 (Windows; Microsoft Windows 8 x64 Business Edition (Build 9200)) AppleWebKit/7600.1017.9000.2",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 8.1",
|
||||
"ua" : "iTunes/12.4 (Windows; Microsoft Windows 8.1 x64 Business Edition (Build 9200); x64) AppleWebKit/7601.6016.1000.1",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "8.1"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 10",
|
||||
"ua" : "iTunes/12.9.1 (Windows; Microsoft Windows 10 x64 Professional Edition (Build 18362); x64) AppleWebKit/7606.2104.0.21",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 10",
|
||||
"ua" : "iTunes/12.6.3 (Windows; Microsoft Windows 10.0 x64 (Build 17763); x64) AppleWebKit/7604.1038.1006.6",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 10 S",
|
||||
"ua" : "iTunes/12.12 (Windows; Microsoft Windows 10 S x64; x64) AppleWebKit/7613.2007",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "10"
|
||||
}
|
||||
},
|
||||
{
|
||||
"desc" : "iTunes on Windows 11",
|
||||
"ua" : "iTunes/12.13 (Windows; Microsoft Windows 11 x64; x64) AppleWebKit/7613.2007",
|
||||
"expect" :
|
||||
{
|
||||
"name" : "Windows",
|
||||
"version" : "11"
|
||||
}
|
||||
}
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user