diff --git a/src/main/ua-parser.js b/src/main/ua-parser.js index b399874..f55d0e9 100755 --- a/src/main/ua-parser.js +++ b/src/main/ua-parser.js @@ -976,10 +976,10 @@ // Other /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm - /(mint)[\/\(\) ]?(\w*)/i, // Mint - /(mageia|vectorlinux|fuchsia|arcaos)[; ]([\d\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS - /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, - // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire + /linux.+(mint)[\/\(\) ]?([\w\.]*)/i, // Mint + /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\d\.]*)/i, // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch + /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu[\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i, + // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris /\b(aix)[; ]([1-9\.]{0,4})/i, // AIX /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\w*| ?)([\w\.]*)/i, // Hurd/Linux/MorphOS diff --git a/test/data/ua/os/arch.json b/test/data/ua/os/arch.json index 0aad667..a186af0 100644 --- a/test/data/ua/os/arch.json +++ b/test/data/ua/os/arch.json @@ -1,4 +1,22 @@ [ + { + "desc" : "Arch", + "ua" : "Mozilla/5.0 (X11; Arch Linux i686; rv:2.0) Gecko/20100101 Firefox/126.1", + "expect" : + { + "name" : "Arch", + "version" : "undefined" + } + }, + { + "desc" : "Arch", + "ua" : "Mozilla/5.0 ArchLinux (X11; Linux x86_64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.41 Safari/535.1", + "expect" : + { + "name" : "Arch", + "version" : "undefined" + } + }, { "desc" : "Arch", "ua" : "Uzbl (Webkit 1.1.10) (Arch Linux)", diff --git a/test/data/ua/os/debian.json b/test/data/ua/os/debian.json index 4ae949a..a6a777b 100644 --- a/test/data/ua/os/debian.json +++ b/test/data/ua/os/debian.json @@ -52,5 +52,14 @@ "name" : "Debian", "version" : "undefined" } + }, + { + "desc" : "Debian", + "ua" : "Mozilla/5.0 (X11; U; Linux sparc64; es-PY; rv:5.0) Gecko/20100101 IceCat/5.0 (like Firefox/5.0; Debian-6.0.1)", + "expect" : + { + "name" : "Debian", + "version" : "6.0.1" + } } ] \ No newline at end of file diff --git a/test/data/ua/os/kubuntu.json b/test/data/ua/os/kubuntu.json index 2634256..d242142 100644 --- a/test/data/ua/os/kubuntu.json +++ b/test/data/ua/os/kubuntu.json @@ -7,5 +7,14 @@ "name" : "Kubuntu", "version" : "undefined" } + }, + { + "desc" : "Kubuntu", + "ua" : "Mozilla/5.0 (Kubuntu; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0", + "expect" : + { + "name" : "Kubuntu", + "version" : "undefined" + } } ] \ No newline at end of file diff --git a/test/data/ua/os/mint.json b/test/data/ua/os/mint.json index e87641e..8493d1a 100644 --- a/test/data/ua/os/mint.json +++ b/test/data/ua/os/mint.json @@ -25,5 +25,104 @@ "name" : "Mint", "version" : "6" } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4", + "expect" : + { + "name" : "Mint", + "version" : "6" + } + }, + { + "desc" : "Mint", + "ua" : "Opera/9.80 (X11; Linux i686; Edition Linux Mint) Presto/2.12.388 Version/12.15", + "expect" : + { + "name" : "Mint", + "version" : "undefined" + } + }, + { + "desc" : "Mint", + "ua" : "Opera/9.51 (X11; Linux i686; U; Linux Mint; en)", + "expect" : + { + "name" : "Mint", + "version" : "undefined" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; Linux Mint/19.3 x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Brave Chrome/83.0.4103.97 Safari/537.36", + "expect" : + { + "name" : "Mint", + "version" : "19.3" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; Linux Mint/20 x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Kiwi Chrome/100.0.0.0 Safari/537.36", + "expect" : + { + "name" : "Mint", + "version" : "20" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; Linux Mint/20.2; x86_64) Gecko/20100101 Firefox/92.0.1", + "expect" : + { + "name" : "Mint", + "version" : "20.2" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.0.10) Gecko/2009042513 Linux Mint/5 (Elyssa) Firefox/3.0.10", + "expect" : + { + "name" : "Mint", + "version" : "5" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009060308 Linux Mint/7 (Gloria) Firefox/54.0", + "expect" : + { + "name" : "Mint", + "version" : "7" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.3) Gecko/20091020 Linux Mint/8 (Helena) Firefox/3.5.3", + "expect" : + { + "name" : "Mint", + "version" : "8" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:2.0) Gecko/20100101 Linux Mint 16/Petra Firefox/25.0.1.", + "expect" : + { + "name" : "Mint", + "version" : "16" + } + }, + { + "desc" : "Mint", + "ua" : "Mozilla/5.0 (Linux x86_64; Mint 21.3) AppleWebKit/537.36 (KHTML, like Gecko) Brave/128.0.0.0 Safari/537.36", + "expect" : + { + "name" : "Mint", + "version" : "21.3" + } } ] \ No newline at end of file diff --git a/test/data/ua/os/suse.json b/test/data/ua/os/suse.json index 9da3f35..57f5f69 100644 --- a/test/data/ua/os/suse.json +++ b/test/data/ua/os/suse.json @@ -7,5 +7,14 @@ "name" : "SUSE", "version" : "3.6.17-0.2.1" } + }, + { + "desc" : "SUSE", + "ua" : "Mozilla/5.0 (X11; SUSE; Linux amd64; rv:86.0) Gecko/20100101 Firefox/86.0", + "expect" : + { + "name" : "SUSE", + "version" : "undefined" + } } ] \ No newline at end of file diff --git a/test/data/ua/os/ubuntu.json b/test/data/ua/os/ubuntu.json index d3958f9..5438e89 100644 --- a/test/data/ua/os/ubuntu.json +++ b/test/data/ua/os/ubuntu.json @@ -16,5 +16,32 @@ "name" : "Ubuntu", "version" : "undefined" } + }, + { + "desc" : "Ubuntu", + "ua" : "Mozilla/5.0 (Wayland; Linux x86_64; Huawei) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Ubuntu/23.04 Edg/110.0.1587.41", + "expect" : + { + "name" : "Ubuntu", + "version" : "23.04" + } + }, + { + "desc" : "Ubuntu", + "ua" : "Mozilla/5.0 (X11; Ubuntu 20.04; Linux arm; rv:99.0) Gecko/20100101 Firefox/99.0", + "expect" : + { + "name" : "Ubuntu", + "version" : "20.04" + } + }, + { + "desc" : "Ubuntu", + "ua" : "Opera/9.80 (X11; Linux i686; Ubuntu/14.10) Presto/2.12.388 Version/12.16", + "expect" : + { + "name" : "Ubuntu", + "version" : "14.10" + } } ] \ No newline at end of file diff --git a/test/data/ua/os/zenwalk.json b/test/data/ua/os/zenwalk.json index 230b5dd..170db50 100644 --- a/test/data/ua/os/zenwalk.json +++ b/test/data/ua/os/zenwalk.json @@ -7,5 +7,14 @@ "name" : "Zenwalk", "version" : "7.3" } + }, + { + "desc" : "Zenwalk", + "ua" : "Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.2.13) Gecko/20101221 IceCat/3.6.13 (like Firefox/3.6.13) (Zenwalk GNU Linux)", + "expect" : + { + "name" : "Zenwalk", + "version" : "undefined" + } } ] \ No newline at end of file