8 if (/Android/i.test(ua)) {
9 // android must be tested before linux
11 } else if (/iOS|iPhone|Macintosh|Darwin|OS\s*X|macOS|mac/i.test(ua)) {
13 } else if (/Microsoft\s*Linux/i.test(ua)) {
14 // It's the year of the Linux Desktop!
16 // (checking linux twice because I'm not sure about cygwin / msysgit)
17 // See also http://www.mslinux.org/
19 } else if (/^ms$|Microsoft|Windows|win32|win|PowerShell/i.test(ua)) {
20 // 'win' must be tested after 'darwin'
22 } else if (/Linux|curl|wget/i.test(ua)) {
29 function getArch(ua) {
34 if (/arm64|arm8|armv8/i.test(ua)) {
36 } else if (/arm7|armv7/i.test(ua)) {
38 } else if (/arm6|armv6/i.test(ua)) {
40 } else if (/ppc64/i.test(ua)) {
42 } else if (/mips64/i.test(ua)) {
44 } else if (/mips/i.test(ua)) {
46 } else if (/(amd64|x64|_64)\b/i.test(ua)) {
47 // must come after ppc64/mips64
49 } else if (/(3|6|x|_)86\b/i.test(ua)) {
50 // must come after x86_64
53 // TODO handle explicit invalid different
58 module.exports.os = getOs;
59 module.exports.arch = getArch;