aboutsummaryrefslogtreecommitdiffstats
path: root/src/helpers/userAgent-helpers.ts
blob: fd9b8c835b8163b1ddc56ec0d792137044aa1b03 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { cpus } from 'node:os';
import macosVersion from 'macos-version';
import { chrome } from 'useragent-generator';
import {
  chromeVersion,
  is64Bit,
  isMac,
  isWindows,
  osArch,
  osRelease,
} from '../environment';

function macOS() {
  const version = macosVersion() ?? '';
  let cpuName = cpus()[0].model.split(' ')[0];
  if (cpuName.includes('(')) {
    // eslint-disable-next-line prefer-destructuring
    cpuName = cpuName.split('(')[0];
  }
  return `Macintosh; ${cpuName} Mac OS X ${version.replaceAll('.', '_')}`;
}

function windows() {
  const version = osRelease;
  const [majorVersion, minorVersion] = version.split('.');
  const archString = is64Bit ? 'Win64' : 'Win32';
  return `Windows NT ${majorVersion}.${minorVersion}; ${archString}; ${osArch}`;
}

function linux() {
  const archString = is64Bit ? 'x86_64' : osArch;
  return `X11; Linux ${archString}`;
}

export default function userAgent() {
  let platformString = '';

  if (isMac) {
    platformString = macOS();
  } else if (isWindows) {
    platformString = windows();
  } else {
    platformString = linux();
  }

  return chrome({ os: platformString, version: chromeVersion });
}