Add detection of macOS version names

pull/338/head
Jörg Leis 5 years ago
parent 72b59a9208
commit b298e8d866

@ -46,10 +46,16 @@ export default [
test: [/macintosh/i],
describe(ua) {
const version = Utils.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i, ua).replace(/[_\s]/g, '.');
return {
const versionName = Utils.getMacOSVersionName(version);
const os = {
name: OS_MAP.MacOS,
version,
};
if (versionName) {
os.versionName = versionName;
}
return os;
},
},

@ -53,6 +53,44 @@ export default class Utils {
}
}
/**
* Get macOS version name
* 10.5 - Leopard
* 10.6 - Snow Leopard
* 10.7 - Lion
* 10.8 - Mountain Lion
* 10.9 - Mavericks
* 10.10 - Yosemite
* 10.11 - El Capitan
* 10.12 - Sierra
* 10.13 - High Sierra
* 10.14 - Mojave
* 10.15 - Catalina
*
* @example
* getMacOSVersionName("10.14") // 'Mojave'
*
* @param {string} version
* @return {string} versionName
*/
static getMacOSVersionName(version) {
const v = version.split('.').splice(0, 2).map(s => parseInt(s, 10) || 0);
v.push(0);
if (v[0] !== 10) return undefined;
if (v[1] === 5) return 'Leopard';
if (v[1] === 6) return 'Snow Leopard';
if (v[1] === 7) return 'Lion';
if (v[1] === 8) return 'Mountain Lion';
if (v[1] === 9) return 'Mavericks';
if (v[1] === 10) return 'Yosemite';
if (v[1] === 11) return 'El Capitan';
if (v[1] === 12) return 'Sierra';
if (v[1] === 13) return 'High Sierra';
if (v[1] === 14) return 'Mojave';
if (v[1] === 15) return 'Catalina';
return undefined;
}
/**
* Get Android version name
* 1.5 - Cupcake

@ -216,6 +216,7 @@
os:
name: "macOS"
version: "10.6.7"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -378,6 +379,7 @@
os:
name: "macOS"
version: "10.6.3"
versionName: "Snow Leopard"
platform:
type: "tablet"
vendor: "Amazon"
@ -539,6 +541,7 @@
os:
name: "macOS"
version: "10.6.7"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -665,6 +668,7 @@
os:
name: "macOS"
version: "10.10.3"
versionName: "Yosemite"
platform:
type: "desktop"
vendor: "Apple"
@ -711,6 +715,7 @@
os:
name: "macOS"
version: "10.6.8"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -726,6 +731,7 @@
os:
name: "macOS"
version: "10.6.7"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -784,6 +790,7 @@
os:
name: "macOS"
version: "10.6.1"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -799,6 +806,7 @@
os:
name: "macOS"
version: "10.5.7"
versionName: "Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -877,6 +885,7 @@
os:
name: "macOS"
version: "10.5.2"
versionName: "Leopard"
platform:
type: "mobile"
vendor: "Apple"
@ -1540,6 +1549,7 @@
os:
name: "macOS"
version: "10.8"
versionName: "Mountain Lion"
platform:
type: "desktop"
vendor: "Apple"
@ -1652,6 +1662,7 @@
os:
name: "macOS"
version: "10.6"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -1717,6 +1728,22 @@
engine:
name: "WebKit"
version: "601.1.46"
-
ua: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0"
spec:
browser:
name: "Firefox"
version: "68.0"
os:
name: "macOS"
version: "10.14"
versionName: "Mojave"
platform:
type: "desktop"
vendor: "Apple"
engine:
name: "Gecko"
version: "20100101"
SeaMonkey:
-
ua: "Mozilla/5.0 (Windows NT 5.2; rv:10.0.1) Gecko/20100101 Firefox/10.0.1 SeaMonkey/2.7.1"
@ -1742,6 +1769,7 @@
os:
name: "macOS"
version: "10.5"
versionName: "Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -2252,6 +2280,7 @@
os:
name: "macOS"
version: "10.11.1"
versionName: "El Capitan"
platform:
type: "desktop"
vendor: "Apple"
@ -2290,6 +2319,7 @@
os:
name: "macOS"
version: "10.6.8"
versionName: "Snow Leopard"
platform:
type: "desktop"
vendor: "Apple"
@ -2614,6 +2644,7 @@
os:
name: "macOS"
version: "10.12.6"
versionName: "Sierra"
platform:
type: "desktop"
vendor: "Apple"

Loading…
Cancel
Save