export function _getBrowserName()

in packages/auth/src/core/util/browser.ts [49:89]


export function _getBrowserName(userAgent: string): BrowserName | string {
  const ua = userAgent.toLowerCase();
  if (ua.includes('opera/') || ua.includes('opr/') || ua.includes('opios/')) {
    return BrowserName.OPERA;
  } else if (_isIEMobile(ua)) {
    // Windows phone IEMobile browser.
    return BrowserName.IEMOBILE;
  } else if (ua.includes('msie') || ua.includes('trident/')) {
    return BrowserName.IE;
  } else if (ua.includes('edge/')) {
    return BrowserName.EDGE;
  } else if (_isFirefox(ua)) {
    return BrowserName.FIREFOX;
  } else if (ua.includes('silk/')) {
    return BrowserName.SILK;
  } else if (_isBlackBerry(ua)) {
    // Blackberry browser.
    return BrowserName.BLACKBERRY;
  } else if (_isWebOS(ua)) {
    // WebOS default browser.
    return BrowserName.WEBOS;
  } else if (_isSafari(ua)) {
    return BrowserName.SAFARI;
  } else if (
    (ua.includes('chrome/') || _isChromeIOS(ua)) &&
    !ua.includes('edge/')
  ) {
    return BrowserName.CHROME;
  } else if (_isAndroid(ua)) {
    // Android stock browser.
    return BrowserName.ANDROID;
  } else {
    // Most modern browsers have name/version at end of user agent string.
    const re = /([a-zA-Z\d\.]+)\/[a-zA-Z\d\.]*$/;
    const matches = userAgent.match(re);
    if (matches?.length === 2) {
      return matches[1];
    }
  }
  return BrowserName.OTHER;
}