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 (/^ms$|Microsoft|Windows|win32|win|PowerShell/i.test(ua)) {
14 // It's the year of the Linux Desktop!
15 // (TODO: what about cygwin / msysgit?)
16 // See also http://www.mslinux.org/
17 // 'linux' must be tested before 'Microsoft' because WSL
18 // 'win' must be tested after 'darwin'
20 } else if (/Linux|curl|wget/i.test(ua)) {
27 function getArch(ua) {
32 if (/arm64|arm8|armv8/i.test(ua)) {
34 } else if (/arm7|armv7/i.test(ua)) {
36 } else if (/arm6|armv6/i.test(ua)) {
38 } else if (/ppc64/i.test(ua)) {
40 } else if (/mips64/i.test(ua)) {
42 } else if (/mips/i.test(ua)) {
44 } else if (/(amd64|x64|_64)\b/i.test(ua)) {
45 // must come after ppc64/mips64
47 } else if (/(3|6|x|_)86\b/i.test(ua)) {
48 // must come after x86_64
51 // TODO handle explicit invalid different
56 module.exports.os = getOs;
57 module.exports.arch = getArch;